/* This function validates if the 'required' form field has a value */
function validate_req(element,strErrorField,strErrorMsg)
{
	if(eval(element.value.length) == 0) 
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	return true;
}
function validate_requireSelected(element,strErrorField,strErrorMsg)
{
	var selectedIndex = element.selectedIndex;
	if (selectedIndex == 0) {
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	return true;
}
function validate_requireOptionSelected(element,strErrorField,strErrorMsg)
{
	if (element.length) {
		for (var i = 0; i < element.length; i++) {
			if (element[i].checked) {
				return true;
			}
		}
	} else {
		if (element.checked) {
			return true;
		}
	}
	add_error(strErrorField,strErrorMsg);
	return false;
}
/* This function validates if the default text is being submitted */
function validate_notdefault(element,strErrorField,strErrorMsg,defaulttext)
{
	if(element.value == defaulttext) 
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	return true;
}

/* This function validates the 'maxLength' feature of the value entered for a field */
function validate_maxlen(element,strErrorField,strErrorMsg,len)
{
	if(eval(element.value.length) > len) 
	{ 
		add_error(strErrorField,strErrorMsg);
		return false; 
	}
	return true;
}

/* This function validates the 'minLength' feature of the value entered for a field */
function validate_minlen(element,strErrorField,strErrorMsg,len)
{
	if(eval(element.value.length) < len) 
	{ 
		add_error(strErrorField,strErrorMsg);
		return false; 
	}
	return true;
}

/* This function validates if a form field has an alpha-numeric value */
function validate_alpha(element,strError)
{
	var charpos = element.value.search("[^A-Za-z0-9]"); 
	if(element.value.length > 0 &&  charpos >= 0) 
	{ 
		return false; 
	}
	return true;
}

/* This function validates if a form field has an numeric value, e.g. zip code, phone numbers */
function validate_numeric(element,strErrorField,strErrorMsg)
{
	var charpos = element.value.search("[^0-9]"); 	
	if(element.value.length > 0 &&  charpos >= 0) 
	{
		add_error(strErrorField,strErrorMsg);
		return false; 
	}
	return true;
}

/**This function validates to make sure that the form field does not have a value of zero.

/* This function validates if a form field has an numeric value, e.g. zip code, phone numbers */
function validate_checkforzerovalue(element,strErrorField,strErrorMsg)
{
	var checkForZero = element.value;	
	if(checkForZero < 1) 
	{
		add_error(strErrorField,strErrorMsg);
		return false; 
	}
	return true;
}



/* This function validates if the date entered is a future date, e.g. Credit Card Expiration Date */
function validate_date_greater(element,strErrorField,strErrorMsg,yearId,monthId,year2,month2)
{
	var yearElement =  document.getElementById(yearId);
	var monthElement =  document.getElementById(monthId);
	var yearNumber = eval(year2);
	var monthNumber = eval(month2);
	

	if (yearElement.value > yearNumber) return true;
		
	if (yearElement.value < yearNumber)
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	
	if (yearElement.value == year2 && monthElement.value < monthNumber)
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
}

/* This function validates if the Month, Date and Year fields have a value, else shows the error message */
function validate_req_date(element,strErrorField,strErrorMsg,yearId,monthId,dateId)
{
	var monthElement = document.getElementById(monthId).value;
	var dateElement  = document.getElementById(dateId).value;
	var yearElement  = document.getElementById(yearId).value;
	
	if (monthElement == '' || dateElement == '' || yearElement == '')
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	
	return true;	
}

/* This function validates if the Month and Year fields have a value (typically the CC exp date), else shows the error message */
function validate_req_exp_date(element,strErrorField,strErrorMsg,yearId,monthId)
{
	var monthElement = document.getElementById(monthId).value;
	var yearElement  = document.getElementById(yearId).value;
	
	if (monthElement == '' || yearElement == '')
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	
	return true;	
}



/* This function validates if the checkbox is checked or not. If not, it shows the appropriate error */
function validate_checkbox(element,strErrorField,strErrorMsg)
{
	if(eval(!element.checked)) 
	{ 
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	return true;


}

/* This function validates if two inputs are same or not, the actual element (emailaddress) and another input element (confirm email address) should be passed as an argument */
function validate_equal_values(element,strErrorField,strErrorMsg,equalElementId,equalElementDivId)
{
	var element1 = element.value;
	var element2 = $(equalElementId).value;
	if(element1 != null)
		element1 = element1.toLowerCase();
	if(element2 != null)
		element2 = element2.toLowerCase();
	
	if (element1 != element2) {
		add_error(strErrorField,strErrorMsg);
		add_error(equalElementDivId,'');
		return false;
	}
	return true;
}

/* This function validates the format of the email. If it is, it shows the appropriate error */
function validate_email(element,strErrorField,strErrorMsg)
{
	var validEmail = isValidEmail(element.value);

	if (validEmail == '11011' || validEmail == '11000') {
		add_error(strErrorField,strErrorMsg);
		return false;
	}

	return true;
}

/* This function validates if the email is not an admin email. If it is, it shows the appropriate error */
function validate_adminemail(element,strErrorField,strErrorMsg)
{
	var validEmail = isValidEmail(element.value);

	if (validEmail == '11010') {
		add_error(strErrorField,strErrorMsg);
		return false;
	}

	return true;
}

function validate_inventoryCheck(element,strErrorField,strErrorMsg)
{
	
	
	var qtyAvailId = "avlQty_" + strErrorField.charAt(9);
	var qtyAvailable = document.getElementById(qtyAvailId).value;
	var enteredQuantity = element.value;
	if(enteredQuantity > qtyAvailable) 
	{
		add_error(strErrorField,strErrorMsg);
		return false; 
	}
	return true;
}

/* This function validates if the zip code at least 5 digits, when United States is selected  */
function validate_zipUS(element,strErrorField,strErrorMsg,countryRegionId)
{
	var country = document.getElementById(countryRegionId).value;   
	if ( country == 'US')
	{
		var charpos = element.value.substring(0,5).search("[^0-9]");
		if(eval(element.value.length) <5 || charpos >= 0) 
		{ 
			add_error(strErrorField,strErrorMsg);			
			return false; 
		}
	}
	return true;
}

/* This function validates if the zip code valid, when Canada is selected  */
function validate_zipCA(element,strErrorField,strErrorMsg,countryRegionId)
{
	
	var country = document.getElementById(countryRegionId).value;   
	/*
	if (country == 'CA')
	{
		if ( eval(element.value.length) != 7) 
		{ 
			add_error(strErrorField,strErrorMsg);			
			return false; 
		}
		
		var charpos =(element.value.substring(1,2)+element.value.substring(4,5)+element.value.substring(6,7)).search("[^0-9]");
		var noncharpos = (element.value.substring(0,1)+element.value.substring(2,3)+element.value.substring(5,6)).search("[^A-Za-z]");
		if ( charpos>0 || noncharpos>0 ||element.value.substring(3,4)!=' ')
		{
			add_error(strErrorField,strErrorMsg);				
			return false; 		
		}
	}
	*/
	if (country == 'CA')
	{
		if ( !(eval(element.value.length) > 0)) 
		{
			add_error(strErrorField,"Zip Code cannot be empty.");			
			return false;
		}
	}
	return true;
}



/* This function validates the state dropdown */
function validate_reqFormValues(element,strErrorField,strErrorMsg,element1Id,element1DivId,element2Id,element2DivId)
{


/*form validation*/
     if(element.value.length==0 && Trim($(element1Id).value).length == 0 && $(element2Id).value == 'state')  
          {
          add_shipToStoreError(strErrorField,strErrorMsg);
          add_shipToStoreError(element1DivId,'');
          add_shipToStoreError(element2DivId,'');	
          return false;
          }
/*zipcode validation*/
      else  if(element.value.length>0  && eval(element.value.length) < 5)   
          {
          add_shipToStoreError(strErrorField,_ERR_CHECKOUT_ADDRESS_SHIPTOSTORE_ZIPCODE_REQ);
          return false;
          }  
/*state validation*/			 
	  else	if(Trim($(element1Id).value).length > 0 &&  $(element2Id).value == 'state')  
				{
				add_shipToStoreError(element2DivId,_ERR_SHIP_TO_STORE_CITY_VALID);
				return false;
				}
				             
/*city validation         
       	else if(($(element1Id).value.length) == 0  &&  ($(element2Id).value != 'state')	) 
		{	 
			add_shipToStoreErrors(element1Id,Error_StoreLocatorPanel_StateCity);
			add_shipToStoreErrors(element1DivId,'');
			 return false;
			 }
*/ 
	
				

	return true;
}

/* Validates ship to store selected */
function validate_shipToStoreSelected(element,strErrorField,strErrorMsg)
{
		add_error(strErrorField,strErrorMsg);
		return false;
}

/* Validates if the SSN typed by user is 0000 */
function validate_invalidSSN(element,strErrorField,strErrorMsg)
{
	if (element.value == 0)
	{
		add_error(strErrorField,strErrorMsg);
		return false;
	}
	return true;
}

/* Validate if the age is 18 based on the Date of Birth selected */
function validate_minimumAge(element,strErrorField,strErrorMsg,yearId,monthId,dateId)
{
	var monthElement = document.getElementById(monthId).value;
	var dateElement  = document.getElementById(dateId).value;
	var yearElement  = document.getElementById(yearId).value;
	var birthDate = new Date(yearElement + "/" + monthElement + "/" + dateElement);
	var minimumDate = new Date();
	minimumDate.setYear(minimumDate.getYear() - 18);
	if(minimumDate < birthDate)
	{
		add_error(strErrorField,strErrorMsg);
		return false;	
	}
	return true;
}

