 /**
	* @version $Id: default.js 285 2007-08-31 17:20:28Z prebur2axk $
  */
    //check DOB
		function checkDoB(frm, req){
					
			var m = frm.elements['DateofBirth[m]'];
			var d = frm.elements['DateofBirth[d]'];
			var y = frm.elements['DateofBirth[Y]'];
			if(req){
				if(m.options[m.selectedIndex].value != "" && d.options[d.selectedIndex].value != "" && y.options[y.selectedIndex].value != ""){
					return true;
				}
				else{
					alert('Please select valid Date of Birth');
					return false;
				}
			}
			else{
				if(m.options[m.selectedIndex].value != "" || d.options[d.selectedIndex].value != "" || y.options[y.selectedIndex].value != ""){
					if(m.options[m.selectedIndex].value != "" && d.options[d.selectedIndex].value != "" && y.options[y.selectedIndex].value != ""){
						return true;
					}
					else{
						alert('Please select valid Date of Birth');
						return false;
					}
				}
			}
			return true;
		}
		
		//check if at least 1 list is selected using checkbox fields
		function checkCheckboxLists(frm){
			var i; 
			var list_select = false;
			var optin_select = false;
			
			for(i=0;i<frm.elements.length;i++){
				if(frm.elements[i].type=='checkbox' && frm.elements[i].name.indexOf('OptIn')!=-1){
					if(frm.elements[i].checked==true){
						optin_select = true;
						break;
					}
				}
			}
			
			if(optin_select){
				for(i=0;i<frm.elements.length;i++){
					if(frm.elements[i].type=='checkbox' && frm.elements[i].name.indexOf('ListID_')!=-1){
						if(frm.elements[i].checked==true){
							//return true;
							list_select = true;
							break;
						}
					}
				}
				if(!list_select){
					alert('Please select newsletter(s)');
					return false;
				}
			}
			
			return true;
		}
		
		//checks lists using hidden fields
		
		function checkHiddenLists(frm){
      var i;
      try{
        for(i=0;i<frm.elements.length;i++){
				if(frm.elements[i].type=='hidden' && frm.elements[i].name.indexOf('ListID_')!=-1){
					if(frm.elements[i].value!=""){
						return true;
					}
				}
			 }
			 return false;
      }
      catch(e){
        alert(e);
        return;
      }
    }
		
		//determinates if we have list as checkboxes/hidden
		//@return String type if used field
		
		function checkListFieldType(frm){
      for(i=0;i<frm.elements.length;i++){
				if(frm.elements[i].type=='hidden' && frm.elements[i].name.indexOf('ListID_')!=-1){
          return('hidden');
				}
				if(frm.elements[i].type=='checkbox' && frm.elements[i].name.indexOf('ListID_')!=-1){
          return('checkbox');
				}
			}
			return('');
    }
		
		//main newslettes check
		function checkLists(frm){
      var t = checkListFieldType(frm);
      var res = false;
      
      if(t=='checkbox'){
        res = checkCheckboxLists(frm);
      }
      if(t=='hidden'){
        res = checkHiddenLists(frm);
      }
      return res;
    }
    
		//check whole form
		function checkForm(frm){
		  var code = frm.ZipCode.value;
			var r = (checkDoB(frm, true) && validateUSCANZipCode(code));
			return r;
		}

 /**
  * validates US Zip Code
  * @return boolean  
  */ 
 
 function validateUSPostalCode(code){
  if(!code){
    return false;
  }
  var pattern = /^\d{5}(-\d{4})?$/;
  var result = false;
  var check = (code.match(pattern)==null)?false:true;
  if(check && code!='00000'){
    result = true;
  }
  return result;
 }
 
 /**
  * validates Canadian Postal Code
  * @return boolean  
  */ 
 
 function validateCanadianPostalCode(code){
  if(!code){
    return false;
  }
  var pattern = /^[ABCEGHJKLMNPRSTVXY]\d[A-Z]([ ])?\d[A-Z]\d$/i;
  return code.match(pattern)==null?false:true;
 }
 
 /**
  * validate zip code against US & Canada format
  * @return boolean  
  */
function validateUSCANZipCode(code){
  if(validateUSPostalCode(code) || validateCanadianPostalCode(code)){
    return true;
  }
  else{
    alert('Please enter valid zip code');
    return false;
  }
}
