function ValidateForm(afrmCheckout, aFields, aFieldNames, aiTop) {
  
  var sMsg = ""
    
  for (var I = 0; I < aiTop; I++) {
    if (IsEmpty(afrmCheckout, aFieldNames[I])) {
      sMsg += aFields[I] + "\n";
    }  
  }
    
  if (sMsg.length > 0) {
    sMsg = "--------------------------------------------------------------------\n" + sMsg
    sMsg = "Please fill out the following required fields:\n" + sMsg
    alert(sMsg);
    return false;
  } else {
    return true;
  }    
  
}
  
function IsEmpty(afrmCheckout, asField) {
  
  if (afrmCheckout.elements[asField].value == "") {
    return true;
  } else {
    return false;
  }    
}

function ValidateCC(asCardType, asCardNum) {

  var sChar = "";
  var sCardNumber = "";
  for (var I = 0; I < asCardNum.length; I += 1) {
    sChar = asCardNum.substr(I,1);
    if (!isNaN(sChar)) {
      sCardNumber += sChar;
    }
  }    	
  
  if (sCardNumber.length < 13 || sCardNumber.length > 16) {
  	return false;
  } 	
  
  switch (asCardType) {
  	case "A" :
  	  if (sCardNumber.substr(0,2) != "37") {
  	  	return false;
  	  } 	
      break;
    
    case "D" :
      if (sCardNumber.substr(0,1) != "6") {
      	return false;
      }
      break;
      
    case "M" :
      if (sCardNumber.substr(0,1) != "5") {
      	return false;
      }
      break;
      
    case "V" :
      if (sCardNumber.substr(0,1) != "4") {
      	return false;
      } 	   	
      break;
   }   
   
   sCardNumber = ReverseStr(sCardNumber);
   
   var iTotal = 0;
   var iSubTotal = 0;
   var iMultiplier = 0;
   
   for ( var I = 0; I < sCardNumber.length; I += 1 ) {
   	
   	 iSubTotal = parseInt(sCardNumber.substr(I, 1));
   	
     if (I % 2) {
     	iSubTotal = iSubTotal * 2;
     	if (iSubTotal > 9) {
     	  iSubTotal -= 9;
     	}
     } 
     
     iTotal += iSubTotal;
   }  
     	 	
     	 	
   return (iTotal % 10) ? false : true;
   
}  
  
function ValidateCCDate(aiMonth, aiYear) {

  var tNow = new Date();
  
  if (aiYear > tNow.getFullYear()) {
  	return true;
  }
  
  if (aiMonth >= tNow.getMonth()+1) {
  	return true;
  }
  
  return false; 	
	
}	
  
  
function ReverseStr(asString) {

  var sRevStr = "";
  var I = asString.length;
                    	
  while (I--)
    sRevStr += asString.charAt(I);
      
  return sRevStr;
}

function ValidateEmail(asEmail) {

  var Pattern = /^([\w.-]{2,})@([\w-]{2,})\.(\w{2,4})$/;
  
  var CheckArray = asEmail.match(Pattern);
  
  if (CheckArray == null) {
  	return false;
  } else {
  	return true;
  }	 	
}
                  
                  
function ValidatePhone(asPhone) {
	
  var Pattern = /^\(?\d{3}\)?(\s|-)*\d{3}(\s|-)*\d{4}/;
  
  var CheckArray = asPhone.match(Pattern);
  
  if (CheckArray == null) {
  	return false;
  } else {
  	return true;
  }	 		
}	                  
                  
function ValidateZip(asZip) {
	
  var Pattern = /^\d{5}(-\d{4})?$/;
  
  var CheckArray = asZip.match(Pattern);
  
  if (CheckArray == null) {
  	return false;
  } else {
  	return true;
  }	 	
	
}

                  
function ValidateDate(atDate) {

  var Pattern = /^(\d{1,2})(\/)(\d{1,2})\2(\d{2}|\d{4})$/;
  
  if (atDate.length < 1) {
  	return true;
  }	
  
  if (atDate.toUpperCase() == "NULL") {
  	return true;
  }	
  
  var DateArray = atDate.match(Pattern);
  if (DateArray == null) { 
    return false;
  }

  iMonth = DateArray[1]; 
  iDay = DateArray[3];
  iYear = DateArray[4];


  if (iYear.toString().length == 2) {
    if (iYear > 60) {
      iYear = "19" + iYear;
    } else {
      iYear = "20" + iYear;
    }
  }


  if (iMonth < 1 || iMonth > 12) {
    return false;
  }
  if (iDay < 1 || iDay > 31) {
    return false;
  }
  if ((iMonth==4 || iMonth==6 || iMonth==9 || iMonth==11) && iDay>30) {
    return false
  }
  if (iMonth == 2) {
    var bLeapYear = (iYear % 4 == 0 && (iYear % 100 != 0 || iYear % 400 == 0));
    if (iDay>29 || (iDay==29 && !bLeapYear)) {
    return false;
  }
}
return true; 
}



function ValidateDbl(adValue){

 var Pattern = /^(\$)?(\d{1,3}\,?)+(\.\d{1,2})?$/
 
 if (adValue.length < 1) {
  	return true;
  }
 
 var DblArray = adValue.match(Pattern)
 
 if (DblArray==null) {
  return false;
 }
  return true;
}



function ValidateInt(aiValue){
 var Pattern = /^(\d{1,3}\,?)+$/
 
  if (aiValue.length < 1) {
  	return true;
  }
 
 var IntArray = aiValue.match(Pattern)
 
 if (IntArray==null) {
  return false;
 }
 return true;
}


function ValidateYear(aiValue){
 var Pattern = /^(\d{1,3}\,?)+$/
 
 
 var IntArray = aiValue.match(Pattern)
 
 if (IntArray==null) {
  return false;
 }
 
 if ((aiValue < 1998) || (aiValue > 2020)) {
   return false;
 }  
 
 return true;
}