/*GENERAL FUNCTIONS*/
var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

function isInteger(s) {
	var i;
   for (i = 0; i < s.length; i++)  {
		// Check that current character is number.
   	var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return(true);
}

function stripCharsInBag(s, bag) {
	 var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
	 s=stripCharsInBag(strPhone,validWorldPhoneChars);
	 return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function isValidEmail(emailStr) {
	 var checkTLD=1;
	 var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|tv|la)$/;
	 var emailPat=/^(.+)@(.+)$/;
	 var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	 var validChars="\[^\\s" + specialChars + "\]";
	 var quotedUser="(\"[^\"]*\")";
	 var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	 var atom=validChars + '+';
	 var word="(" + atom + "|" + quotedUser + ")";
	 var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	 var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	 var matchArray=emailStr.match(emailPat);

	 if (matchArray==null) {
	 	return false;
	 }

	 var user=matchArray[1];
	 var domain=matchArray[2];

	 for (i=0; i<user.length; i++) {
		  if (user.charCodeAt(i)>127) {
				return false;
		  }
	 }

	 for (i=0; i<domain.length; i++) {
		  if (domain.charCodeAt(i)>127) {
				return false;
		  }
	 }

	 if (user.match(userPat)==null) {
		  return false;
	 }

	 var IPArray=domain.match(ipDomainPat);
	 if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					 return false;
				}
		  }
		  return true;
	 }

	 var atomPat=new RegExp("^" + atom + "$");
	 var domArr=domain.split(".");
	 var len=domArr.length;
	 for (i=0;i<len;i++) {
		  if (domArr[i].search(atomPat)==-1) {
				return false;
		  }
	 }

	 /*if (checkTLD && domArr[domArr.length-1].length!=2 &&
	 domArr[domArr.length-1].search(knownDomsPat)==-1) {
	 alert("The address must end in a well-known domain or two letter " + "country.");
	 return false;
	 }*/

	 if (len<2) {
		  return false;
	 }

	 return true;
}

/*
=========================================================================================================================
FORM CHECK FUNCTIONS
=========================================================================================================================
*/
function setMessage(message_text, class_name) {
	 var objMessage = document.getElementById("message");

	 objMessage.className = class_name;
	 objMessage.innerHTML = message_text;
}

function emailCheck(email_address) {
	 if (!email_address.value || !isValidEmail(email_address.value)) {
		  document.getElementById("cont").value = "0"
	 }
	 else {
		  var objIFrm	= document.getElementById("dproc");
		  var objDoc 	= objIFrm.contentWindow.document;
		  var objForm = objDoc.getElementById("frmData");

		  objDoc.getElementById("email_address").value = email_address.value;
		  objDoc.getElementById("action").value = "echeck";
		  objForm.submit();
	 }
}

function emailSubmit() {
	 var objIFrm	= document.getElementById("dproc");
	 var objDoc 	= objIFrm.contentWindow.document;
	 var objForm = objDoc.getElementById("frmData");

	 objDoc.getElementById("email_address").value = document.getElementById("email_address").value;
	 objDoc.getElementById("cstr").value = document.getElementById("cstr").value;
	 objDoc.getElementById("opid").value = document.getElementById("opid").value;
	 objDoc.getElementById("ioid").value = document.getElementById("ioid").value;
	 objDoc.getElementById("action").value = "esubmit";
	 objForm.submit();
}

function zipCodeCheck(zip_code) {
	 var objIFrm	= document.getElementById("dproc");
	 var objDoc 	= objIFrm.contentWindow.document;
	 var objForm = objDoc.getElementById("frmData");

	 if (zip_code.value) {
		  setMessage("Please wait, retrieving City & State...", "message_proc");

		  objDoc.getElementById("zip_code").value = zip_code.value;
		  objDoc.getElementById("action").value = "zcheck";
		  objForm.submit();
	 }
}

function signupCheck() {
	 var gdm = document.form.gender[0];
	 var gdf = document.form.gender[1];
	 var fn = document.getElementById("first_name");
	 var ln = document.getElementById("last_name");
	 var ea = document.getElementById("email_address");	 
	 var ad = document.getElementById("address");
	 var zp = document.getElementById("zip_code");
	 var ct = document.getElementById("city");
	 var st = document.getElementById("state");
	 var ar = document.getElementById("area1");
	 var pr = document.getElementById("prefix1");
	 var sf = document.getElementById("suffix1");
	 var phone = ar.value.toString() + pr.value.toString() + sf.value.toString();
	 var mn = document.getElementById("month");
	 var dy = document.getElementById("day");
	 var yr = document.getElementById("year");
	 
	 if (!gdm.checked && !gdf.checked) {
		  alert("Please select your Title (Mr. or Ms.)");
		  return(false);
	}
	else if (!fn.value) {
		  alert("Please enter your First Name!");
		  fn.focus();
		  return(false);
	 }
	 else if (!ln.value) {
		  alert("Please enter your Last Name!");
		  ln.focus();
		  return(false);
	 }
	 else if (!ad.value) {
		  alert("Please enter your Address!");
		  ad.focus();
		  return(false);
	 }
	 else if (!zp.value) {
		  alert("Please enter your Zip Code!");
		  zp.focus();
		  return(false);
	 }
	 else if (!ct.value) {
		  alert("Please enter your City!");
		  ct.focus();
		  return(false);
	 }
	 else if (!st.value) {
		  alert("Please enter your State!");
		  st.focus();
		  return(false);
	}
	else if (!phone || !checkInternationalPhone(phone)){
		  alert("Please enter your Phone Number!");
        if (!ar.value)       ar.focus();
        else if (!pr.value)  pr.focus();
        else if (!sf.value)  sf.focus();
        return(false);
    }
    else if (!mn.value || !dy.value || !yr.value) {
        alert('Please enter your Birthdate');
        if (!mn.value)			mn.focus();
        else if (!dy.value)	dy.focus();
        else if (!yr.value)	yr.focus();
        return(false);
    }
	 else if (!ea.value) {
		  alert("Please enter your Email Address!");
		  ea.focus();
		  return(false);
	 }
	else return true;
}

function dataSubmit() {
	var objIFrm	= document.getElementById("dproc");
	var objDoc 	= objIFrm.contentWindow.document;
	var objForm = objDoc.getElementById("frmData");

	var fn	= document.getElementById("first_name").value;
	var ln 	= document.getElementById("last_name").value;
	var ea 	= document.getElementById("email_address").value;
	var ad 	= document.getElementById("address").value;
	var zp 	= document.getElementById("zip_code").value;
	var ct 	= document.getElementById("city").value;
	var st 	= document.getElementById("state").value;
	var ar1 	= document.getElementById("area1").value;
	var pr1 	= document.getElementById("prefix1").value;
	var sf1 	= document.getElementById("suffix1").value;
	var ar2 	= document.getElementById("area2").value;
	var pr2 	= document.getElementById("prefix2").value;
	var sf2 	= document.getElementById("suffix2").value;
	var gd	= (document.form.gender[0].checked ? "m" : "f");
	var mn 	= document.getElementById("month").value;
	var dy 	= document.getElementById("day").value;
	var yr 	= document.getElementById("year").value;

	objDoc.getElementById("cstr").value				= document.getElementById("cstr").value;
	objDoc.getElementById("opid").value				= document.getElementById("opid").value;
	objDoc.getElementById("ioid").value				= document.getElementById("ioid").value;
	objDoc.getElementById("ts").value				= document.getElementById("ts").value;
	objDoc.getElementById("first_name").value		= fn;
	objDoc.getElementById("last_name").value 		= ln;
	objDoc.getElementById("email_address").value	= ea;
	objDoc.getElementById("address").value 		= ad;
	objDoc.getElementById("zip_code").value 		= zp;
	objDoc.getElementById("city").value 			= ct;
	objDoc.getElementById("state").value 			= st;
	objDoc.getElementById("area1").value 			= ar1;
	objDoc.getElementById("prefix1").value 		= pr1;
	objDoc.getElementById("suffix1").value 		= sf1;
	objDoc.getElementById("area2").value 			= ar2;
	objDoc.getElementById("prefix2").value 		= pr2;
	objDoc.getElementById("suffix2").value 		= sf2;
	objDoc.getElementById("gender").value 			= gd;
	objDoc.getElementById("month").value 			= mn;
	objDoc.getElementById("day").value 				= dy;
	objDoc.getElementById("year").value 			= yr;

	objDoc.getElementById("action").value 			= "dsubmit";
	objForm.submit();
}