var formErrorMsg;

function validateNumericMandatory(testValue, fieldName)
{
	if (!NumericTestProc(testValue)) {
		formErrorMsg += "- " + fieldName + " must be a number\n";
		return true;
	}

	return false;

}

function NumericTestProc(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function validateMonthYearDate(workMonth, workYear, fieldName){

	var now = new Date();
	var hour = now.getHours();
	var minute = now.getMinutes();
	var second = now.getSeconds();
	var monthnumber = now.getMonth();
	monthnumber ++;
	var monthday = now.getDate();
	var year = now.getYear();
	if(year < 2000) { 
			year = year + 1900; 
	}        
			
	if (workMonth < monthnumber && year >= workYear) {
		return ("- Date must be corrected\n");
	} else {
		return ("");
	}
}

/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
function validateFreeformDate(dtStr, fieldName){
	
	// Declaring valid date character, minimum year and maximum year
	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;

	function isInteger(s){
		var i;
		for (i = 0; i < s.length; i++){   
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}
		// All characters are numbers.
		return true;
	}
	
	function stripCharsInBag(s, bag){
		var i;
		var returnString = "";
		// Search through string's characters one by one.
		// If character is not in bag, append to returnString.
		for (i = 0; i < s.length; i++){   
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}
	
	function daysInFebruary (year){
		// February has 29 days in any year evenly divisible by four,
		// EXCEPT for centurial years which are not also divisible by 400.
		return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	function DaysArray(n) {
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}
	
	
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		//return false
		formErrorMsg += "- " + fieldName + " must be entered as mm/dd/yyyy\n";
		return true;
	}
	if (strMonth.length<1 || month<1 || month>12){
		formErrorMsg += "- " + fieldName + " must have a valid month\n";
		return true;
		//alert("Please enter a valid month")
		//return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		formErrorMsg += "- " + fieldName + " must have a valid day\n";
		return true;
		//alert("Please enter a valid day")
		//return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		formErrorMsg += "- " + fieldName + " must have a valid 4 digit year between "+minYear+" and "+maxYear + "\n";
		return true;
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		//return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		formErrorMsg += "- " + fieldName + " must be a valid date\n";
		return true;
		//alert("Please enter a valid date")
		//return false
	}
return false;
}

function ValidateForm(){
	var dt=document.frmSample.txtDate
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
 }

/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function validateCCDate(ccexpmonth, ccexpyear, fieldName) {

	var todayDate = new Date();
	var testTodayDate = ('' + todayDate.getFullYear()) + ('' + Right('0' + (todayDate.getMonth() + 1), 2));
	var testInputDate = Right('0000' + ccexpyear, 4) + Right('0' + ccexpmonth, 2);
	
	
	//alert("today = " + testTodayDate + " input = " + testInputDate);
	if(testTodayDate > testInputDate) {
		formErrorMsg += "- " + fieldName + " is not valid.\n";
	}

}
function validateCCType(testString, cardType, fieldName)
{
	//alert(testString.charAt(0) + ' ' + cardType + fieldName)
	if (testString.charAt(0) == '3' && cardType != 'AMEX') {
		formErrorMsg = "- " + fieldName + " is not correct for card type\n";
	}
	if (testString.charAt(0) == '4' && cardType != 'VISA') {
		formErrorMsg = "- " + fieldName + " is not correct for card type\n";
	}
	if (testString.charAt(0) == '5' && cardType != 'MC') {
		formErrorMsg = "- " + fieldName + " is not correct for card type\n";
	}
	if (testString.charAt(0) == '6' && cardType != 'DISC') {
		formErrorMsg = "- " + fieldName + " is not correct for card type\n";
	}

}

function validateCCNumber(testString, fieldName) {

	if (testString == "") {
		formErrorMsg += "- " + fieldName + " must be filled in\n";
	}
	
}
function validateOther(otherString, testString, fieldName)
{
	
	ucOtherString = otherString.toUpperCase();
	if ((ucOtherString == "OTHER" || ucOtherString == "") && testString == "") {
		formErrorMsg += "- " + fieldName + " must be filled in\n";
		return true;
	}

	return false;

}
function validateCheckedDetail(checkValue, detailField, fieldName)
{
	if (checkValue && detailField == "") {
		formErrorMsg += "- " + fieldName + " must be filled in\n";
		return true;
	}

	return false;

}

function validateFieldNotEmpty(testString, fieldName)
{
	if (testString == "") {
		formErrorMsg += "- " + fieldName + " must be filled in\n";
		return true;
	}

	return false;

}

function validateFileFieldNotEmpty(testString, fieldName)
{
	if (testString == "") {
		formErrorMsg += "- " + fieldName + " must be selected\n";
		return true;
	}

	return false;

}

function validateFileExtension(testString, fieldName, extension) {

	var thisext = testString.substr(testString.lastIndexOf('.'));
	for(var i = 0; i < extension.length; i++) {
		if(thisext == extension[i]) {
			return true;
		}
	}
	formErrorMsg += "- " + fieldName + " must be a filetype "
	for(var i = 0; i < extension.length; i++) {
		formErrorMsg += extension[i] + " "
	}
	formErrorMsg += "\n";
	return false;
}

function validateNumeric(testValue, fieldName)
{
	if (testValue != "") {
		if (!NumericTestProc(testValue)) {
			formErrorMsg += "- " + fieldName + " must be a number\n";
			return true;
		}
	}
	return false;

}

function validateCheckboxChecked(testValue, fieldName)
{
	if (testValue != true) {
		formErrorMsg += "- " + fieldName + " must be checked\n";
		return true;
	}

	return false;

}

function validateCompareFields(testString1, testString2, fieldName)
{
	if (testString1 != testString2) {
		return ("- Both " + fieldName + " fields must match\n");
	} else {
	        return ("");
	}
}

function validateEmailField(testEmail1, testEmail2, fieldName) {

	if (testEmail1 == "") {
		formErrorMsg += '- ' + fieldName + ' must be a valid email address ("yourname@domain.com") \n';
		return true;
	}
		
	if (testEmail1.indexOf(".") > 0 && testEmail1.indexOf("@") > 0) {
	} else {
		formErrorMsg += '- ' + fieldName + ' must be a valid email address ("yourname@domain.com") \n';
		return true;
	}

	if (testEmail1 != testEmail2) {
		formErrorMsg += '- Both Email fields must match \n';
		return true;
	}
	
	return false;
		
}

function validatePasswordField(testPassword1, testPassword2, fieldName) {

	if (testPassword1 == "") {
		formErrorMsg += "- " + fieldName + " must be filled in\n";
		return true;
	}
		
	/*if (testPassword1.indexOf(".") > 2 && testPassword1.indexOf("@") > 0) {
	} else {
		formErrorMsg += "- " + fieldName + " must conain at least 1 number\n";
		return true;
	}*/

	if (testPassword1 != testPassword2) {
		formErrorMsg += '- Both Password fields must match \n';
		return true;
	}
	
	return false;
		
}

function validatePromoCode(promoCode, fieldName)
{
	
	
	if (promoCode != "") {
		var url = "application_processors.php?action=promocode&promocode=" + promoCode + "&qid=" + Math.random()
		new Ajax.Request(url, {method:'get', 
		onSuccess: function(transport) {result = transport.responseText; document.write ('result');}, 
		onFailure: function(){ alert('...')} }); 
	}
}




