// JavaScript Document
function validateInputText(formID,minLength,maxLength,regex,errorID,errorMessage) {
	var myText = document.getElementById(formID).value;
	if (regex.length) {
		var myRegex = new RegExp(regex);
	}
	if (minLength && myText.length < minLength) {
		document.getElementById(errorID).innerHTML = errorMessage;
	} else if (maxLength && myText.length > maxLength) {
		document.getElementById(errorID).innerHTML = errorMessage;
	} else if (regex.length && myRegex.exec(myText) === null) {
		document.getElementById(errorID).innerHTML = errorMessage;
	} else {
		document.getElementById(errorID).innerHTML = "";
	}
}

function validateDropdownText(formID,validList,errorID,errorMessage) {
	var values = new Array();
	var myVal = document.getElementById(formID).value;
	var found = false;
	values = validList.split(',');
	for (i=0; i < values.length;i++) {
		if (values[i] === myVal) {
			found = true;
		}
	}
	if (!found) {
		document.getElementById(errorID).innerHTML = errorMessage;
	} else {
		document.getElementById(errorID).innerHTML = "";
	}
}

function validateCreditCard(formID,errorID,errorMessage) {
	//Validates Diners Club, 
	var myNumber = document.getElementById(formID).value;
	var len = 0;
	var altLen = 0;
	var isValid = false;
	var firstThree = parseInt(myNumber.substring(0,3));
	var firstTwo = parseInt(myNumber.substring(0,2));
	var myLen = myNumber.length;
	
	if (myNumber.length < 13) {
		isValid = false;
	} else if (firstThree >= 300 && firstThree <= 305) {
		isValid = true;
		len = 14;
	} else if ((firstTwo >= 34 && firstTwo <= 38) && firstTwo != 35) {
		isValid = true;
		if (firstTwo === 34 || firstTwo === 37) {
			len = 15;
		} else {
			len = 14;
		}
	} else if (myNumber.charAt(0) === '4' || myNumber.substring(0,4) === '6011') {
		isValid = true;
		len = 16;
		if (myNumber.charAt(0) === '4') {
			altLen = 13;
		}
	} else if (firstTwo > 51 || firstTwo < 55) {
		isValid = true;
		len = 16
	}
	if (isValid) {
		if (myNumber.length != len && (!altLen || myNumber.length != altLen)) {
			isValid = false;
		} else if (!isValidIdentifier(myNumber)) {
			isValid = false;
		}
	}
	
	if (isValid) {
		document.getElementById(errorID).innerHTML = "";
	} else {
		document.getElementById(errorID).innerHTML = errorMessage;
	}
}

//Luhn algorithm identifier verification
//MIT Licensed
function isValidIdentifier(number) {
    var identifier = number.replace(/\D/g,''),
		sum     = 0,
        alt     = false,
        i       = identifier.length-1,
        num;

    if (identifier.length < 13 || identifier.length > 19){
        return false;
    }

    while (i >= 0){
        num = parseInt(identifier.charAt(i), 10);
        if (isNaN(num)){
            return false;
        }
        if (alt) {
            num *= 2;
            if (num > 9){
                num = (num % 10) + 1;
            }
        } 
        alt = !alt;
        sum += num;
        i--;
    }
    return (sum % 10 == 0);
}
