// Required Field Validation.
function validateReqField(value, element) {
	var theElement = document.getElementById(element);
	if (value == '') {
		theElement.src="img/required_image.gif";
	} else {
		theElement.src="img/spacer.gif";
	}

}


// Email Validation.
function examineEmail(email) {
	var emailErrors=false;
	var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++) {
	   if (email.indexOf(invalidChars.charAt(i),0) > -1) {
		  // alert('email address contains invalid characters');
		  emailErrors=true;
	   }
	}
	for (i=0; i<email.length; i++) {
	   if (email.charCodeAt(i)>127) {
		  // alert("email address contains non ascii characters.");
		  emailErrors=true;
	   }
	}
	var atPos = email.indexOf('@',0);
	if (atPos == -1) {
	   // alert('email address must contain an @');
		emailErrors=true;
	}
	if (atPos == 0) {
	   // alert('email address must not start with @');
	   emailErrors=true;
	}
	if (email.indexOf('@', atPos + 1) > - 1) {
	   // alert('email address must contain only one @');
	   emailErrors=true;
	}
	if (email.indexOf('.', atPos) == -1) {
	   // alert('email address must contain a period in the domain name');
	   emailErrors=true;
	}
	if (email.indexOf('@.',0) != -1) {
	   // alert('period must not immediately follow @ in email address');
	   emailErrors=true;
	}
	if (email.indexOf('.@',0) != -1){
	   // alert('period must not immediately precede @ in email address');
	   emailErrors=true;
	}
	if (email.indexOf('..',0) != -1) {
	   // alert('two periods must not be adjacent in email address');
	   emailErrors=true;
	}
	return emailErrors;
}
// Function called onBlur to validate email field.
function validateEmail(email, element) {
	var theEmail = document.getElementById(element);
	if (email == '') {
	   theEmail.src="img/required_image.gif";
	} else {
		if (examineEmail(email)) {
		  //  var mytext=document.createTextNode("< Please provide a valid Email Address.");
		   theEmail.src="img/required_image.gif";
		} else {
			theEmail.src="img/spacer.gif";	
		}
	}
}


// Zip Code Validation.
function validateZipField(value, element) {
	var theElement = document.getElementById(element);
	if (value.length == '' || value.length < 5) {
		theElement.src="img/required_image.gif";
	} else {
		theElement.src="img/spacer.gif";
	}
}

 
// Phone Field Validation.
function validatePhone(value1, value2, value3, element) {
	var theElement = document.getElementById(element);
	if (value1 == '' || value2 == '' || value3 == '') {
	    theElement.src="img/required_image.gif";
	} else {
		if (examinePhone(value1, value2, value3)) {
		    // var mytext=document.createTextNode("< Please enter a valid number")
			theElement.src="img/required_image.gif";
		} else {
			theElement.src="img/spacer.gif";
		}
	}
}
function examinePhone(value1, value2, value3) {
	var phoneError = false;
	if ( !(isNumeric(value1)) || (value1.length < 3) ) phoneError = true;
	if ( !(isNumeric(value2)) || (value2.length < 3) ) phoneError = true;
	if ( !(isNumeric(value3)) || (value3.length < 4) ) phoneError = true;
	if (!phoneError) {
		return false;
	} else {
		return true;	
	}
}


// returns true if the string only contains characters 0-9
function isNumeric(str){
  var re = /[\D]/g
  if (re.test(str)) return false;
  return true;
}


// Other Country Field Validation.
function validateOtherField(value, coutryValue, element) {
	var theElement = document.getElementById(element);
	if (value == '' && coutryValue == 'NA') {
		theElement.src="img/required_image.gif";
	} else {
		theElement.src="img/spacer.gif";
	}

}


// Date Field Validation.
function validateDate(value1, value2, value3, element) {
	var theElement = document.getElementById(element);
	if (value1 == '' || value2 == '' || value3 == '') {
	    theElement.src="img/required_image.gif";
	} else {
		theElement.src="img/spacer.gif";
	}
}




//
// Validate Contact Us Form.
//
function validateContactForm() {
	var isValid = true;

	// Check for required fields.
	with (document.theForm) {
		validateEmail(email_address.value, 'formError-email');
		validateReqField(first_name.value, 'formError-fname');
		validateReqField(last_name.value, 'formError-lname');
		validateReqField(address.value, 'formError-addr');
		validateReqField(city.value, 'formError-city');
		validateReqField(country.value, 'formError-country');
		validateReqField(state.value, 'formError-state');
		validateReqField(zip_code.value, 'formError-zip');
		validatePhone(phone_area.value, phone_exchange.value, phone_station.value, 'formError-phone');
	}
	
	// If any fields have errors, set message.
	var a = false;
	if ( document.getElementById('formError-email').src.lastIndexOf("spacer") == -1 ) { a = true; }
	var b = false;
	if ( document.getElementById('formError-fname').src.lastIndexOf("spacer") == -1 ) { b = true; }
	var c = false;
	if ( document.getElementById('formError-lname').src.lastIndexOf("spacer") == -1 ) { c = true; }
	var d = false;
	if ( document.getElementById('formError-addr').src.lastIndexOf("spacer") == -1 ) { d = true; }
	var e = false;
	if ( document.getElementById('formError-city').src.lastIndexOf("spacer") == -1 ) { e = true; }
	var f = false;
	if ( document.getElementById('formError-country').src.lastIndexOf("spacer") == -1 ) { f = true; }
	var g = false;
	if ( document.getElementById('formError-state').src.lastIndexOf("spacer") == -1 ) { g = true; }
	var h = false;
	if ( document.getElementById('formError-zip').src.lastIndexOf("spacer") == -1 ) { h = true; }
	var i = false;
	if ( document.getElementById('formError-phone').src.lastIndexOf("spacer") == -1 ) { i = true; }

	if (a || b || c || d || e || f || g || h || i) {
		isValid = false;
		document.getElementById('errorMessage').style.display = 'block';
	}
				
	window.scrollTo(0, 0);
	return isValid;

}


//
// Validate Product Registration Form.
//
function validateRegistrationForm() {
	
	var isValid = true;

	// Check for required fields.
	with (document.theForm) {
		validateEmail(email_address.value, 'formError-email');
		validateReqField(first_name.value, 'formError-fname');
		validateReqField(last_name.value, 'formError-lname');
		validateReqField(address.value, 'formError-addr');
		validateReqField(city.value, 'formError-city');
		validateReqField(country.value, 'formError-country');
		validateReqField(state.value, 'formError-state');
		validateZipField(zip_code.value, 'formError-zip');
		validatePhone(phone_area.value, phone_exchange.value, phone_station.value, 'formError-phone');
		validateReqField(category_id.value, 'formError-category');
		validateReqField(model_no.value, 'formError-model');
		validateReqField(serial_no.value, 'formError-serial');
		validateDate(purchase_month.value, purchase_day.value, purchase_year.value, 'formError-purchaseDate');
		validateReqField(retailer_name.value, 'formError-retailerName');
		validateReqField(retailer_city.value, 'formError-retailerCity');
}

	// If any fields have errors, set message.
	var a = false;
	if ( document.getElementById('formError-email').src.lastIndexOf("spacer") == -1 ) { a = true; }
	var b = false;
	if ( document.getElementById('formError-fname').src.lastIndexOf("spacer") == -1 ) { b = true; }
	var c = false;
	if ( document.getElementById('formError-lname').src.lastIndexOf("spacer") == -1 ) { c = true; }
	var d = false;
	if ( document.getElementById('formError-addr').src.lastIndexOf("spacer") == -1 ) { d = true; }
	var e = false;
	if ( document.getElementById('formError-city').src.lastIndexOf("spacer") == -1 ) { e = true; }
	var f = false;
	if ( document.getElementById('formError-country').src.lastIndexOf("spacer") == -1 ) { f = true; }
	var g = false;
	if ( document.getElementById('formError-state').src.lastIndexOf("spacer") == -1 ) { g = true; }
	var h = false;
	if ( document.getElementById('formError-zip').src.lastIndexOf("spacer") == -1 ) { h = true; }
	var i = false;
	if ( document.getElementById('formError-phone').src.lastIndexOf("spacer") == -1 ) { i = true; }
	var j = false;
	if ( document.getElementById('formError-category').src.lastIndexOf("spacer") == -1 ) { j = true; }
	var k = false;
	if ( document.getElementById('formError-model').src.lastIndexOf("spacer") == -1 ) { k = true; }
	var l = false;
	if ( document.getElementById('formError-serial').src.lastIndexOf("spacer") == -1 ) { l = true; }
	var m = false;
	if ( document.getElementById('formError-purchaseDate').src.lastIndexOf("spacer") == -1 ) { m = true; }
	var n = false;
	if ( document.getElementById('formError-retailerName').src.lastIndexOf("spacer") == -1 ) { n = true; }
	var o = false;
	if ( document.getElementById('formError-retailerCity').src.lastIndexOf("spacer") == -1 ) { o = true; }
	if ( a || b || c || d || e || f || g || h || i || j || k || l || m || n || o ) {
		isValid = false;
		document.getElementById('errorMessage').style.display = 'block';
	}

	window.scrollTo(0, 0);
	return isValid;
}