//=============================================================================
// Text Field Validation
// By Andy Kononenko (andy@dreamam.com)
// 06/30/04
//=============================================================================

function isFieldFormatOk(sFieldValue,sFieldMask, objField){
var sMask = sFieldMask.replace(/[ ]/g, "");
	if(sMask.length==0){
		//Do not Check needed
		return true;
	}
	//alert(sFieldValue+"  :  "+sFieldMask)
	switch(sMask.toLowerCase()){
		case "yyyy":
			//Full year only			
			return checkFullYear(sFieldValue);
		case "mm/dd/yy":
			return checkDateFormat_1(sFieldValue,objField);
		case "mm/dd/yyyy":
			return checkDateFormat_2(sFieldValue,objField);
		case "digit_only":
			return checkTxtField(sFieldValue,"numbers")
		case "25words1400chars":
			return checkWordCharCount(objField.value,25,1400)
		case "8chars":
			return check4Pass(objField)						
		case "5digits":
			return checkDigits(objField,sFieldValue,5)						
		case "9digits":
			return checkDigits(objField,sFieldValue,9)						
		case "min6chars":
			return checkMin6Pass(objField)						
		case "10digits":
			return checkDigits(objField,sFieldValue,10)						
		default:
			// Nothing to do (have not validation instructions)
			break;
	}
	return true;
}

function checkDigits(objField,sFieldValue,inumber){
	if(objField.value.length!=inumber){
		return false;
	}
	
	return checkTxtField(sFieldValue,"numbers");
}

function check4Pass(objField){
	if(objField.value.length!=8){
		return false;
	}
	return true;
}

function checkMin6Pass(objField){
	if(objField.value.length<6){
		return false;
	}
	return true;
}

function checkWordCharCount(sValue,iMinWords,iMaxChars){
var aWords = sValue.split(" ");
if(aWords.length<iMinWords){
	return false;
}
if(sValue.length>iMaxChars){
	return false
}	
return true
}

function checkFullYear(sValue){
	//check for numbers
	if(!checkTxtField(sValue,"numbers")){
		return false;
	}
	//Check for min / max values
	if(sValue<1900 ||sValue>2004){
		return false
	}	
	return true;
}

function checkDateFormat_1(sValue,objFormatedDate){
// must be in format mm/dd/yy
var aNums;

	if(sValue.indexOf("/")>0){
		aNums = sValue.split("/")
		//Check for Len of array (must be 3)
		if(aNums.length!=3){
			return false;
		}
		for(i=0;i<aNums.length;i++){
			// check all parts for number
			if(!checkTxtField(aNums[i],"numbers")){
				return false;
			}
		}
	}else{
		return false;
	}	
	if(aNums[0]>12){return false;}
	if(aNums[1]>31){return false;}
	//check for 0+number if month and date < 10
	if(aNums[0]<10 && String(aNums[0]).indexOf('0')!=0){
		aNums[0] = '0' + aNums[0];
	}
	if(aNums[1]<10 && String(aNums[1]).indexOf('0')!=0){
		aNums[1] = '0' + aNums[1];
	}
	if(String(aNums[2]).length==4){
		aNums[2] = String(aNums[2]).substr(2)
	}	
	objFormatedDate.value = aNums[0]+"/"+aNums[1]+"/"+aNums[2]
	return true;
}

function checkDateFormat_2(sValue,objFormatedDate){
// must be in format mm/dd/yy
var aNums;

	if(sValue.indexOf("/")>0){
		aNums = sValue.split("/")
		//Check for Len of array (must be 3)
		if(aNums.length!=3){
			return false;
		}
		for(i=0;i<aNums.length;i++){
			// check all parts for number
			if(!checkTxtField(aNums[i],"numbers")){
				return false;
			}
		}
	}else{
		return false;
	}	
	if(aNums[0]>12){return false;}
	if(aNums[1]>31){return false;}
	//check for 0+number if month and date < 10
	if(aNums[0]<10 && String(aNums[0]).indexOf('0')!=0){
		aNums[0] = '0' + aNums[0];
	}
	if(aNums[1]<10 && String(aNums[1]).indexOf('0')!=0){
		aNums[1] = '0' + aNums[1];
	}
	if(String(aNums[2]).length<4){return false;}
	objFormatedDate.value = aNums[0]+"/"+aNums[1]+"/"+aNums[2]
	return true;
}
//*****************************************************************************
// Value format validation
//*****************************************************************************
function checkTxtField(field_value,acceptonly){
var s= new String();
	characters = new RegExp ("[^A-Za-z ]","i");
	numbers = new RegExp ("[^0-9]","i");
	numchar = new RegExp ("[^0-9-^A-Za-z ]","i");
	s = field_value;
	result = s.search(eval(acceptonly));
	if (result != -1){
		if (acceptonly == "numchar")
		{
			return false;
		}
		else if  (acceptonly == "numbers")
		{
			return false
		}
		else
		{
			return false
		}
		return false;
	}
	return true;
}
