var daysofmonth   = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysInSelectedMonth;

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function ChangeCase(val){
  val=val.toUpperCase()
  return val;
}

function changeDays(){
	var mth, year;
	mth = document.form1.month[document.form1.month.selectedIndex].value;
	year = document.form1.year[document.form1.year.selectedIndex].value;
	
	if (LeapYear(year)){
      daysInSelectedMonth = daysofmonthLY[mth-1];
	} else {
      daysInSelectedMonth = daysofmonth[mth-1];	
	}  

	if (document.form1.day.selectedIndex>0 || document.form1.month.selectedIndex>0 || document.form1.year.selectedIndex>0){
  	  if (document.form1.day.selectedIndex>0 && document.form1.month.selectedIndex>0 && document.form1.year.selectedIndex>0){
	     if (document.form1.day[document.form1.day.selectedIndex].value > daysInSelectedMonth){
		    alert("There are only "+ daysInSelectedMonth + " days in your selected month");
                document.form1.day.selectedIndex = daysInSelectedMonth;                		 
		 }	 	    
	  } else {
	    alert("Please select a day, month or year for your date of birth\n");
	  }
	}

}

  //catalogues not required
  function validateForm(){
	 var emailOfferSelected = false;
	 var catalogueSelected = false;  
       var errorMsg="";  


	 

     if (document.form1.prefix.selectedIndex==0){
       errorMsg=errorMsg+"\tPlease select a Prefix.\n";
     }

     if (document.form1.fname.value==""){
       errorMsg=errorMsg+"\tFirst Name is required.\n";
     } else {
	    if (checkAlphaNumeric(document.form1.fname.value)==false){
	       errorMsg=errorMsg+"\tFirst Name cannot contain number(s)\n";		  
		}
	 }

     if (document.form1.lname.value==""){
       errorMsg=errorMsg+"\tLast Name is required.\n";
     } else {
	    if (checkAlphaNumeric(document.form1.lname.value)==false){
	       errorMsg=errorMsg+"\tLast Name cannot contain number(s)\n";		  
		}	 
     }


     if (document.form1.title.value==""){
       errorMsg=errorMsg+"\tTitle is required.\n";
     }

     if (document.form1.company.value==""){
       errorMsg=errorMsg+"\tCompany name is required.\n";
     }


     if (document.form1.streetAddress.value==""){
       errorMsg=errorMsg+"\tMailing address is required.\n";
     }
     if (document.form1.city.value==""){
       errorMsg=errorMsg+"\tCity is required.\n";
     }
     if (document.form1.province.value==""){
       errorMsg=errorMsg+"\tState/Province is required.\n";
     }
     if (document.form1.province.value==""){
       errorMsg=errorMsg+"\tState/Province is required.\n";
     }
     if (document.form1.postalCode.value==""){
       errorMsg=errorMsg+"\tZip/Postal Code is required.\n";
     }
     if (document.form1.country.value==""){
       errorMsg=errorMsg+"\tCountry is required.\n";
     }
     if (document.form1.telephone.value==""){
       errorMsg=errorMsg+"\tTelephone is required.\n";
     }
/*
     if (document.form1.fax.value==""){
       errorMsg=errorMsg+"\tFax is required.\n";
     }
*/

     if (document.form1.email.value!=""){
		    var valid = true;
			AtPos = document.form1.email.value.indexOf("@")
			StopPos = document.form1.email.value.lastIndexOf(".")
			if (AtPos == -1 || StopPos == -1) {
				valid = false;
			}
			if (StopPos < AtPos) {
				valid = false;
			}
			if (StopPos - AtPos == 1) {
				valid = false;		
			} 	
			if (StopPos == (document.form1.email.value.length-1)){
			    valid = false;
			}
			if (!valid){
			  errorMsg=errorMsg+"\tNot a valid email address\n"; 
			}
		 } else {
            errorMsg=errorMsg+"\tEmail is required.\n";
      }
 

     if (document.form1.email.value!=document.form1.emailConfirm.value){
       errorMsg=errorMsg+"\tEmail Address and Confirm Email Address do not match.\n";
     }
	
     if ((!document.form1.eventApr17[0].checked) && (!document.form1.eventApr18[0].checked)){
       errorMsg=errorMsg+"\n\tPlease select an event.\n";
     }
	 
     if (errorMsg != ""){
       alert("We encountered errors in your form. Please fix before resubmitting:\n" + errorMsg);  
   	   return false;
     }else {
	   return true;
	 }
  }
  

  function replace(string,text,by) {
  // Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
  }

  function checkAlphaNumeric(val) {
    	var numbers_valid="0123456789";
        var numCount=0;
        for (var i=0; i<val.length; i++) {
            if (numbers_valid.indexOf(val.charAt(i)) < 0) {
              numCount++;
            }
        }
        if(numCount==val.length){
			 return true;
        } else {
		     return false;
		}
  }
  
  function validateCADPostal( val ) {
	var objRegExp  = /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/;
  	return objRegExp.test(val);
  }
  
  function validateOptOutForm(){
     var errorMsg="";    
     if (document.form1.firstName.value==""){
       errorMsg=errorMsg+"\tFirst Name is required.\n";
     } else {
	    if (checkAlphaNumeric(document.form1.firstName.value)==false){
	       errorMsg=errorMsg+"\tFirst Name cannot contain number(s)\n";		  
		}
	 }
     if (document.form1.lastName.value==""){
       errorMsg=errorMsg+"\tLast Name is required.\n";
     } else {
	    if (checkAlphaNumeric(document.form1.lastName.value)==false){
	       errorMsg=errorMsg+"\tLast Name cannot contain number(s)\n";		  
		}	 
	 }  
	 
	     if (document.form1.emailAddress.value==""){
    	   errorMsg=errorMsg+"\n\tEmail Address is required.\n";
	     } else {
		    var valid = true;
			AtPos = document.form1.emailAddress.value.indexOf("@")
			StopPos = document.form1.emailAddress.value.lastIndexOf(".")
			if (AtPos == -1 || StopPos == -1) {
				valid = false;
			}
			if (StopPos < AtPos) {
				valid = false;
			}
			if (StopPos - AtPos == 1) {
				valid = false;		
			} 	
			if (StopPos == (document.form1.emailAddress.value.length-1)){
			    valid = false;
			}
			if (!valid){
			  errorMsg=errorMsg+"\tNot a valid email address\n"; 
			}
		 }	 
		 
		var addressErr="";
		if ((document.form1.streetName.value==null)||(document.form1.streetName.value=="")){
			  addressErr=addressErr+"\tStreet Number and Name\n"; 		
		}
		if ((document.form1.municipality.value==null)||(document.form1.municipality.value=="")){
			  addressErr=addressErr+"\tCity\n"; 		
		} else {
	  	  	if (checkAlphaNumeric(document.form1.municipality.value)==false){
	      		 addressErr=addressErr+"\tCity cannot contain number(s).\n";		  
			}	 
	 	}				
		if ((document.form1.province.selectedIndex==0)){
			  addressErr=addressErr+"\tProvince\n"; 		
		}		
		if ((document.form1.postalCode.value==null)||(document.form1.postalCode.value=="")){
			  addressErr=addressErr+"\tPostal Code\n"; 		
		} else {
		    document.form1.postalCode.value = replace(document.form1.postalCode.value," ","");
	  	  	if (validateCADPostal(document.form1.postalCode.value)==false){
	      		 addressErr=addressErr+"\tInvalid postal code\n";		  
			}	 
	 	}
		
		if (addressErr!= ""){
		   errorMsg=errorMsg+"\n\tThe following address fields are either missing or incorrect:\n" + addressErr;		
		}		
		
        if (errorMsg != ""){
          alert("We encountered errors in your form. Please fix before resubmitting:\n" + errorMsg);  
   	      return false;
        }else {
	      return true;
	    }		
			 
  
  }

