// Input validation for every field in application

function isInteger (s){
	var i;
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (!((c >= "0") && (c <= "9"))) return false;
    }
    return true;
}

function isNumber (s){
	var i;
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
		if(c != "."){
        	if (!((c >= "0") && (c <= "9"))) return false;
		}
    }
    return true;
}

function stripChars (s, chars){
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (chars.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isEmail(s){
    var i = 1;
    var sLength = s.length;
    while ((i < sLength) && (s.charAt(i) != "@")){
		i++;
	}
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    while ((i < sLength) && (s.charAt(i) != ".")){
		i++;
    }
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function validateFields(){

	for(i=0;i<document.forms[0].elements.length;i++){
		if((document.forms[0].elements[i].id.indexOf("required") != -1) && (document.forms[0].elements[i].value == '')){
			alert("Please complete all required fields.");
			document.forms[0].elements[i].focus();
			return false;
		}
	}
	
	for(i=0;i<document.forms[0].elements.length;i++){
		if(document.forms[0].elements[i].id.indexOf("number") != -1){
			if(document.forms[0].elements[i].value != ''){
				if(!isNumber(document.forms[0].elements[i].value)){
					alert("Please enter a valid numeric value.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
		
		if(document.forms[0].elements[i].id.indexOf("comment") != -1){
			if(document.forms[0].elements[i].value != ''){
				var max=250;
				if (document.forms[0].elements[i].value.length > max) {
					alert("Comments cannot be more than 250 characters.  Please shorten your entry and submit again.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
		
		if(document.forms[0].elements[i].id.indexOf("text") != -1){
			if(document.forms[0].elements[i].value != ''){
				var max=65000;
				if (document.forms[0].elements[i].value.length > max) {
					alert("Text cannot be more than 65000 characters.  Please shorten your entry and submit again.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
			
		if(document.forms[0].elements[i].id.indexOf("password") != -1){
			if(document.forms[0].elements[i].value != ''){
				var min=5;
				if (document.forms[0].elements[i].value.length < min) {
					alert("Passwords must be at least 5 characters long.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
						
		if(document.forms[0].elements[i].id.indexOf("userid") != -1){
			if(document.forms[0].elements[i].value != ''){
				var min=8;
				if (document.forms[0].elements[i].value.length < min) {
					alert("User IDs must be at least 8 characters long.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
			
		if(document.forms[0].elements[i].id.indexOf("percentage") != -1){
			if(document.forms[0].elements[i].value != ''){
				var percentageValue = stripChars(document.forms[0].elements[i].value, "% ");
				if(isNumber(percentageValue)){
					document.forms[0].elements[i].value = percentageValue;					
				}
				else {
					alert("Please enter a valid percentage value.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
		
		if(document.forms[0].elements[i].id.indexOf("email") != -1){
			if(document.forms[0].elements[i].value != ""){
				if(!isEmail(document.forms[0].elements[i].value)){
					alert("Please enter a valid Email Address.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
		
		if(document.forms[0].elements[i].id.indexOf("phone") != -1){
			if(document.forms[0].elements[i].value != ""){
				var normalizedPhone = stripChars(document.forms[0].elements[i].value, "()- ");
				if(!isInteger(normalizedPhone)){
					alert("Please enter a valid Phone Number.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}

		if(document.forms[0].elements[i].id.indexOf("zip") != -1){
			if(document.forms[0].elements[i].value != ""){
				var normalizedZip = stripChars(document.forms[0].elements[i].value, "()- ");
				if(!isNumber(normalizedZip)){
					alert("Please enter a valid Postal Code.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}		

		if(document.forms[0].elements[i].id.indexOf("dollar") != -1){
			var NewFieldValue = "";
			if(document.forms[0].elements[i].value != ''){
				var amountValue = stripChars(document.forms[0].elements[i].value, "$, ");
				if(isNumber(amountValue)){
					document.forms[0].elements[i].value = amountValue;
				}
				else{
					alert("Please enter a valid dollar value.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
		
		if(document.forms[0].elements[i].id.indexOf("Date") != -1){
			if(document.forms[0].elements[i].value != ""){
				FieldName = document.forms[0].elements[i].name;
				FieldValue = document.forms[0].elements[i].value;
				DateArray = FieldValue.split("/");
				if(DateArray.length != 3){
					alert("Please enter a valid date in MM/DD/YYYY format.");
					document.forms[0].elements[i].focus();
					return false;
				}
				MonthPart = DateArray[0];
				DayPart = DateArray[1];
				YearPart = DateArray[2];
				if(isNaN(Number(MonthPart)) || isNaN(Number(DayPart)) || isNaN(Number(YearPart))){
					alert("Please enter a valid numeric date.");
					document.forms[0].elements[i].focus();
					return false;
				}
				if(MonthPart < 0 || Number(MonthPart) > 12){
					alert("Dates must have a month between 1 and 12.");
					document.forms[0].elements[i].focus();
					return false;
				}
				if(DayPart < 0 || DayPart > 31){
					alert("Dates must have a day between 1 and 31.");
					document.forms[0].elements[i].focus();
					return false;
				}
				if(YearPart.length != 4){
					alert("Dates must have a four digit numeric year.");
					document.forms[0].elements[i].focus();
					return false;
				}
			}
		}
	}
	return true;
}

function checkDelete(){
	if(confirm("Are you sure you want to Delete this record?"))
		return true;
	else
		return false;
}

function setFocus() {
	if (document.forms.length > 0) {
		var field = document.forms[0];
		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
				document.forms[0].elements[i].focus();
				break;
			}
		}
	}
}
	
function formatCurrency(num) {
	if(num == "") return;
	if(isNaN(num)) return;
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
