/******************** Author: Calculated Creativity, IntegraClick, [KRA] ********************/

/******************** VARIABLES ********************/
//editable required variables:
var useExitPop=true,projectName="BlueColonWaterDropLivNorm";
var exitMessage = "*****************************************************\n\nWait!\n\nBefore you leave, please take a look at this limited time offer. Remember, this is an EXCLUSIVE TRIAL OFFER.\n\nWhy miss the chance to purify your body while shedding excess pounds?\n\nClick Cancel to Get Your Trial of LivNorm Liver Cleanser and Booster.\n\n*****************************************************";
//do not edit:
var validForm=true,validErr;

/******************** COMMON FUNC ********************/
function openPopup(linkURL) {
	window.open(linkURL,'popup','width=600,height=600,toolbar=0,location=0,status=0,toolbar=0,scrollbars=1,resizable=1');
}

function popupLinks() {
	if(!document.getElementsByTagName) {return false;}var _popuplinks=document.getElementsByTagName("a");for(var i=0;i<_popuplinks.length;i++) {if(_popuplinks[i].getAttribute("class")=="popup") {_popuplinks[i].onclick=function() {openPopup(this.getAttribute("href"));return false;}}} 
}

//Returns the version of Internet Explorer or a -1 (indicating the use of another browser).
function getInternetExplorerVersion() {
	var rv = -1;if(navigator.appName=='Microsoft Internet Explorer') {var ua=navigator.userAgent;var re=new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");if(re.exec(ua)!=null)rv=parseFloat(RegExp.$1);}return rv;
}

function checkVersion() {
	var ver=getInternetExplorerVersion();
	if(ver>-1) {
		if(ver<8) {
			//do something... usually a js solu to solve an IE browser bug
		}
	}
}

function exitPop() {  
	$('a').bind('click',function() {useExitPop=false;});$('form').submit(function() {useExitPop=false;});window.onbeforeunload=function() {if(useExitPop==true) {return exitMessage;}}
}

/******************** FORM VALIDATION ********************/

//Form validation for a checkbox. Uses class/id.  
function validCheckbox(_obj,_label) {
	if(!$(_obj).attr('checked')) {
		validForm=false;
		validErr+=('\n'+"*"+_label);
	}
}

//Form validation for required text field. Uses class/id. Precision: field is empty or has content.
function validTxtInput(_obj,_label) {
	if(($(_obj).val()==null) || ($(_obj).val()=="")) {
		validForm=false;
		validErr+=('\n'+"*"+_label);
	}
}

//Form validation for required text field. Uses class/id. Precision: field is empty or has content.
function validTxtInputname(_obj,_label) {
	if(($(_obj).val()==null) || ($(_obj).val()=="" ) || ($(_obj).val()==" ")  || ($(_obj).val()=="  ")  || ($(_obj).val()=="  ")) {
		validForm=false;
		validErr+=('\n'+"*"+_label);
	}
}

//Form validation for Email field. Uses class/id. Precision: properly written email address.
function validTxtEmail(_obj) {
	if(($(_obj).val()==null) || ($(_obj).val()=="") || ($(_obj).val()=="e.g. abc@test.co")) {
		validForm=false;
		validErr+=('\n'+"*Email");
	}else {
		var _obj=$(_obj).val();
		var atpos=_obj.indexOf("@");
		var dotpos=_obj.lastIndexOf(".");
		if(atpos<1 || dotpos<atpos+2 || dotpos+2>=_obj.length) {
		  	validForm=false;
			validErr+=('\n'+"*Not a valid email address");}
	}
}

//Form validation for Phone field. Uses class/id. Precision: must be 10 digit number
function validTxtPhone(_obj) {
	if(($(_obj).val()==null) || ($(_obj).val()=="") || ($(_obj).val()=="Enter 10 digit #")) {
		validForm=false;
		validErr+=('\n'+"*Phone");
	}else {
		_obj=$(_obj).val();
		_obj=(_obj.replace(/[^\d.]/g, ""));
		if(_obj.length!=10) {
			validForm=false;
			validErr+=('\n'+"*Not a valid Phone Number");
		}
	}
}

//Form validation for Card Number field. Uses class/id. Precision: must be valid credit card number 12-19 digits in length
function validTxtCardNumber(_obj) {
	if(($(_obj).val()==null)||($(_obj).val()=="")) {
		validForm=false;
		validErr+=('\n'+"*Card Number");
	}else {
		_obj=$(_obj).val();
		_obj=(_obj.replace(/[^\d.]/g, ""));
		if((_obj.length!=12)&&(_obj.length!=13)&&(_obj.length!=14)&&(_obj.length!=15)&&(_obj.length!=16)&&(_obj.length!=17)&&(_obj.length!=18)&&(_obj.length!=19)) {
			validForm=false;
			validErr+=('\n'+"*Not a valid Card Number");
		}
	}
}

//Form validation for Card Security Code field. Uses class/id. Precision: must be valid credit card security code 3 or 4 digits in length
function validTxtSecurityCode(_obj) {
	if(($(_obj).val()==null)||($(_obj).val()=="")) {
		validForm=false;
		validErr+=('\n'+"*Security Code");
	}else {
		_obj=$(_obj).val();
		_obj=(_obj.replace(/[^\d.]/g, ""));
		if((_obj.length!=3)&&(_obj.length!=4)) {
			validForm=false;
			validErr+=('\n'+"*Not a valid Security Code");
		}
	}
}

//Form validation for Zip field, United States & Canada only.  Uses class/id. Precision: must be valid zip code structure 5 or 9 digits, or 6 characters in length.
function validTxtZipUSnCA(_obj) {
	if(($(_obj).val()==null)||($(_obj).val()=="")) {
		validForm=false;
		validErr+=('\n'+"*Zip Code");
	}else {
		_obj=$(_obj).val();
		_obj=(_obj.replace(/[^\w.]|[dfioqu]/g, ""));
		if((_obj.length!=5)&&(_obj.length!=6)&&(_obj.length!=9)) {
			validForm=false;
			validErr+=('\n'+"*Not a valid Zip Code");
		}else {
			if((_obj.length==5)||(_obj.length==9)) { 
				_obj=(_obj.replace(/[^\d.]/g, ""));
				if((_obj.length!=5)&&(_obj.length!=9)) {
					validForm=false;
					validErr+=('\n'+"*Not a valid US Zip Code");
				}
			}else { 
				if(_obj.search(/^\s*[a-ceghj-npr-tvxy]\d[a-ceghj-npr-tv-z](\s)?\d[a-ceghj-npr-tv-z]\d\s*$/i)==-1) {
					validForm=false;
					validErr+=('\n'+"*Not a valid Canadian Zip Code");
				}
				
			}
		}
	}
}

/*//Form validation for Zip field, United States only.  Uses class/id. Precision: must be valid zip code structure 5 or 9 digits in length.
function validTxtZipUS(_obj) {
	if(($(_obj).val()==null)||($(_obj).val()=="")) {
		validForm=false;
		validErr+=('\n'+"*Zip Code");
	}else {
		_obj=$(_obj).val();
		_obj=(_obj.replace(/[^\d.]/g, ""));
		if((_obj.length!=5)&&(_obj.length!=6)&&(_obj.length!=9)) {
			validForm=false;
			validErr+=('\n'+"*Not a valid US Zip Code");
		}
	}
}
*/

//Form validation for required select drop downs. Uses class/id. Precision: anything other than default selected.
function validSelInput(_obj,_label) {
	if($(_obj).val()=="-") {
		validForm=false;
		validErr+=('\n'+"*"+_label);
	}
}

//Validate all required form fields.
function validateForm() {
	validErr=("Please fill out form completely before submitting: "+'\n');
	//go thru and validate each element that needs it
	if($("#pgIndex").length) {
		//validTxtInput(".txtFirstName","First Name");
		//validTxtInput(".txtLastName","Last Name");
		validTxtInputname(".txtFirstName","First Name");
		validTxtInputname(".txtLastName","Last Name");
		validTxtInput(".txtAddress","Address");
		validTxtInput(".txtCity","City");
		validSelInput(".selState","State");
		validTxtZipUSnCA(".txtZip");
		validTxtEmail(".txtEmail");
		validTxtPhone(".txtPhone");
	}else if($("#pgOrder").length) {	
		validTxtInput(".txtNameOnCard","Name on Card");
		validTxtCardNumber(".txtCardNumber");
		validSelInput(".selExpMonth","Card Expiration Month");
		validSelInput(".selExpYear","Card Expiration Year");
		validTxtSecurityCode(".txtSecurityCode");
		validCheckbox(".ckAgree","You must agree to the terms and conditions");
	}
	return validForm;
}

function setupFormValidation(_form) {
	//initiate visual form validation
	H5F.listen(window,"load",function() {
		H5F.setup($(_form));
	},false);
	
	//custom form submit process
	$(document).ready(function() {		
		$(_form).bind('submit',function(e) {
			if(validateForm()==false) {
				e.preventDefault();	
				alert(validErr);
				//reset variables for the next pass thru when user submits form again
				validErr="";
				validForm=true;
			}
		});
	});
}

/******************** START POINT: initiate functions ********************/
$(function () {
	"use strict";
	
	if($("#pgIndex").length) {
		setupFormValidation(".formIndex");
		//carryFormData(".formIndex",".txtFirstName");
	}else if($("#pgOrder").length) {	
		setupFormValidation(".formOrder");
		//setFormDataIntoObj(".txtFirstName");
	}
	popupLinks();
	exitPop();
});
