
function onSubmit()
{
  if (validateMandatory()) {
   ajaxFormSubmit('orderCatalogForm');
  } 
}
function validateMandatory()
{
    var errors = "";     
	  var valid = true;
	
	// name
	var name = Trim(document.forms["orderCatalogForm"].contactName.value);
	if ((0 == name.length) || (40 < name.length)){
     	errors += CAT_REQ_NAME_INVALID + "<br>";	     		
		valid = false;
	}	
	
	//company name
	var companyName = Trim(document.forms["orderCatalogForm"].companyName.value);
	if ((0 == companyName.length) || (40 < companyName.length)){
     	errors += CAT_REQ_COMP_NAME_INVALID + "<br>";	     		
		valid = false;
	}
	
	// address1
	var address1 = Trim(document.getElementsByName("address.addressLine1").item(0).value);
	if ((0 == address1.length) || (55 < address1.length)){
     	errors += CAT_REQ_ADDR_INVALID + "<br>";	     		
		valid = false;
	}

	// city
	var city = Trim(document.getElementsByName("address.city").item(0).value);
	if ((0 == city.length) || (30 < city.length)){
     	errors += CAT_REQ_CITY_INVALID + "<br>";	     		
		valid = false;
	}

	// state
	var state = Trim(document.getElementsByName("address.state").item(0).value);
	if ("BLANK" == state){
     	errors += CAT_REQ_STATE_INVALID + "<br>";	     		
		valid = false;
	}

	//phone number
	var phone = Trim(document.forms["orderCatalogForm"].phoneNo.value);	
	if ((0 != phone.length) && (!isPhoneValid(phone) || (30 < phone.length))){
     	errors += CAT_REQ_PHONE_NO_INVALID + "<br>";	     		
		valid = false;
	}		

	// email
	var email = Trim(document.forms["orderCatalogForm"].email.value);		
	if ((email != "") && !isEmailValid(email)){
     	errors += CAT_REQ_EMAIL_ID_INVALID + "<br>";	     		
		valid = false;
	}

    //check to see if any errors occurred
    if (valid){
     	hideErrorMessages();
	} else {
     	displayErrorMessages(errors);
	}	 

	return valid;
}

function isEmailValid(emField){
	var fieldValue = emField;
	// Begin Valid Email Address Tests
	//if field is not empty
	if(fieldValue != ""){ 	
		var atSymbol = 0
		//loop through field value string
		for(var a = 0; a < fieldValue.length; a++){ 
		//look for @ symbol and for each @ found, increment atSymbol variable by 1
			if(fieldValue.charAt(a) == "@"){ 
				atSymbol++
			}
		}		
		// if more than 1 @ symbol exists
		if(atSymbol > 1){ 
		// then cancel and don't submit form
			return false
		}		
		// if 1 @ symbol was found, and it is not the 1st character in string
		if(atSymbol == 1 && fieldValue.charAt(0) != "@"){ 
		//look for period at 2nd character after @ symbol 
			var period = fieldValue.indexOf(".",fieldValue.indexOf("@")+2) 
			// "." immediately following 1st "." ? 
			var twoPeriods = (fieldValue.charAt((period+1)) == ".") ? true : false 
			//if period was not found OR 2 periods together OR field contains less than 5 characters OR period is in last position
			if(period == -1 || twoPeriods || fieldValue.length < period + 2 || fieldValue.charAt(fieldValue.length-1)=="."){
				// then cancel and don't submit form
				return false
			}
		}
		// no @ symbol exists or it is in position 0 (the first character of the field)
		else { 
		// then cancel and don't submit form
			return false 
		}
	}//end if field is empty
	// if field is empty
    else { 
		// then cancel and don't submit form
		return false 
	}
	return true;
}

function Trim(str)
{  
	while(str.charAt(0) == (" ") ){  
		str = str.substring(1);
  	}
  	while(str.charAt(str.length - 1) == " " ){  
  		str = str.substring(0, str.length - 1);
	}
  	return str;
}
function isNumeric(value){  
   	var isNumber = true;
   	var ch = '';   	
   	var validBits = "0123456789";
   	for (i = 0; i < value.length ; i++) 
    { 
     	ch = value.charAt(i);
       	if (-1 == validBits.indexOf(ch)){
     		isNumber = false;
     		break;
     	}      	
    }    
    return isNumber;   
  }
  
  function isZipValid(value){  
   	var isZip = true;
   	var ch = '';   	
   	var validBits = "-0123456789";
   	var hipens = 0;   	
   	for (i = 0; i < value.length ; i++) 
    { 
     	ch = value.charAt(i);
       	if (-1 == validBits.indexOf(ch)){     		
     		return false;     		
     	} 
     	if (ch == '-')  {
     		hipens++ ;
     	}   	
    }
    if (hipens > 1){
    	return false;
    }    
    // 2nd check 5 OR 9 or 5-4(i.e. 10)
    if (!((value.length == 5) || (value.length == 9) || (value.length == 10))){    	
    	return false;
    }  
    
    // 3rd check if 5||9 = all digits 
    if ((value.length == 5) || (value.length == 9)){
    	if (-1 != value.indexOf('-')){
    		isZip = false;
    		return false;
    	}
    }
    
    //else , if 10 then 6th char MUST be '-'
    if ( value.length == 10) {
    	if (value.charAt(5) != '-'){
    		isZip = false;
    		return false;
    	}
    }
	   
    return isZip;   
  }
  
  function isPhoneValid(value){  
   	var isNumber = true;
   	var ch = '';   	   	
   	var validBitsExt = "0123456789/-";
   	for (i = 0; i < value.length ; i++) 
    { 
     	ch = value.charAt(i);
       	if (-1 == validBitsExt.indexOf(ch)){
     		isNumber = false;
     		break;
     	}      	
    }    
    return isNumber;   
  }