// **BEGIN DATA VALIDATION FUNCTIONS**
// general purpose function to see if an input value has been entered at all
function isEmpty(inputStr) {
	if (inputStr == "" || inputStr == null) {
			return true
	} else {
		return false
	}
}

// general purpose function to see if a suspected numeric input 
// is a positive integer or decimal
function isNumber(inputStr) {
	if (inputStr == "" || inputStr == null) {
			return true
	} else {
		for (var i = 0; i < inputStr.length; i++) {
			var oneChar = inputStr.substring(i, i + 1)
			if ((i==0 && oneChar != "-") && (oneChar < "0" || oneChar > "9")) { return false }
			//if ((i==0) && (oneChar!="-" && (oneChar < "0" || oneChar > "9"))) { return false } // add support for - as first character
			else if (i != 0 && (oneChar < "0" || oneChar > "9")) {
				return false
			}
		}
	return true
	}
}

function isDecimal(inputStr) {
	if (inputStr == "" || inputStr == null) {
			return true
	} else {
		for (var i = 0; i < inputStr.length; i++) {
			var oneChar = inputStr.substring(i, i + 1)
			if ((i==0 && oneChar != "-") && (oneChar < "0" || oneChar > "9")) { if (oneChar != ".") return false }
			//if ((i==0) && (oneChar!="-" && (oneChar < "0" || oneChar > "9"))) { if (oneChar != ".") return false } // add support for - as first character
			else if (oneChar < "0" || oneChar > "9") {
				if (oneChar != ".") {
					return false
				}
			}
		}
	return true
	}
}

function isDate( a_date ) {
	if (inputStr == "" || inputStr == null) {
			return true
	} else {
		SepDate = new Array();
		SepDate = a_date.split( '/' )
		
		MonArray = new Array();
		MonArray[1] = 31;
		MonArray[2] = isLeap( SepDate[2] ) ? 29 : 28;
		MonArray[3] = 31;
		MonArray[4] = 30;
		MonArray[5] = 31;
		MonArray[6] = 30;
		MonArray[7] = 31;
		MonArray[8] = 31;
		MonArray[9] = 30;
		MonArray[10]= 31;
		MonArray[11]= 30;
		MonArray[12]= 31;
		
	
		//check for valid date format
		if( SepDate.length != 3 ) {
			return false;
		}
		//check that all parts are numbers
		else if( isNaN( SepDate[0] ) || isNaN( SepDate[1] ) || isNaN( SepDate[2] ) ) {
			return false;
		}
		//check that the month is valid
		else if( SepDate[0] < 1 || SepDate[0] > 12 ) {
			return false;
		}
		//check that day is valid for that month
		else if( SepDate[1] < 1 || SepDate[1] > MonArray[ SepDate[0] ] ) {
			return false;
		}
		else {
			return true;
		}
	}
}
	
function isLeap( a_year ) {
	if( a_year % 4 == 0 ) {
		if( a_year % 100 == 0 ) {
			if( a_year % 400 == 0 ) {
				return true;
			} else {
				return false;
			}
		} else {
			return true;
		}
	} else {
		return false;
	}
}

// Master value validator routine
function isValid(inputStr, specstr, specerror) {
	if(specstr == "required") {
		if (isEmpty(inputStr)) {
			alert(specerror);
			return false
		}
	} else if (specstr == "numeric") {
		if (!isNumber(inputStr)) {
			alert(specerror);
			return false
		}
	} else if (specstr == "decimal") {
		if (!isDecimal(inputStr)) {
			alert(specerror);
			return false
		}
	} else {
		if (!isDate(inputStr)) {
			alert(specerror);
			return false
		}
	}
	return true
}
// **END DATA VALIDATION FUNCTIONS**

//The Main Function, this is what will be called in the linking HTML file.

function Validate() {
	var valid = true;
	var form = document.forms[0];
	checkenctype(form); //NS6 no-file fix , luis@thebiz.net
	for (i = 0; i < form.elements.length; i++) {
		for (j = 0; j < fields.length; j++) {
			if (form.elements[i].name == fields[j].name) {
				for (k = 0; k < fields[j].validation.length; k++) {
					if(!isValid(form.elements[i].value,fields[j].validation[k],fields[j].error)) {
						valid = false;
						var invalidfield = i;
						break;
					}
				}
			}
		}
	}
	if (valid == false) {
			form.elements[invalidfield].focus();
			form.elements[invalidfield].select();
			return false;
	} else {
			return true;
	}
}

function checkenctype(form) {
	if  ((form.FileContents.value == "")||(form.FileContents.value == " ")) {
//		document.leform.enctype = "text/plain"; 
	}
	return;
}
