// create object
function formValidator() {
// set up array to hold error messages
this.errorList = new Array;
// set up object methods
this.isEmpty = isEmpty; 
this.isNumber = isNumber; 
this.isAlphabetic = isAlphabetic; 
this.isAlphaNumeric = isAlphaNumeric; 
this.isWithinRange = isWithinRange; 
this.isEmailAddress = isEmailAddress; 
this.isChecked = isChecked; 
this.raiseError = raiseError; 
this.numErrors = numErrors; 
this.displayErrors = displayErrors; 
}
// check to see if input is whitespace only or empty
function isEmpty(val) {
	if (val.match(/^s+$/) || val == "") {
		return true;
	} else {
		return false;
	} 
}
function isMatch(val, match) {
	if (val.match(/^s+$/) || val == match) {
		return true;
	} else {
		return false;
	} 
}
// check to see if input is number
function isNumber(val) {
	if (isNaN(val)) {
		return false;
	} else {
		return true;
	}
}
// check to see if input is alphabetic
function isAlphabetic(val) {
	if (val.match(/^[a-zA-Z]+$/)) {
		return true;
	} else {
		return false;
	} 
}
// check to see if input is alphanumeric
function isAlphaNumeric(val) {
	if (val.match(/^[a-zA-Z0-9]+$/)) {
		return true;
	} else {
	 return false;
	} 
}
// check to see if value is within range
function isWithinRange(val, min, max) {
	if (val >= min && val <= max) {
		return true;
	} else {
		return false;
	} 
}
// check to see if input is a valid email address
function isEmailAddress(val) {
	if (val.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/)) {
		return true;
	} else {
		return false;
	} 
}
// check to see if form value is checked
function isChecked(obj) {
	if (obj.checked) {
		return true;
	} else {
		return false;
	}
}
// display all errors
// iterate through error array and print each item
function displayErrors() {
	for (x=0; x<this.errorList.length; x++)	{
		alert("Error: " + this.errorList[x]);
	}
}
// add an error to error list
function raiseError(msg) {
	this.errorList[this.errorList.length] = msg;
}
// return number of errors in error array
function numErrors() {
	return this.errorList.length;
}
// end object


function checkCC(s) {
  var i, n, c, r, t;
  r = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      r = c + r;
  }
  if (r.length <= 1)
    return false;
  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }
  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }
  if (n != 0 && n % 10 == 0)
    return "OK";
  else
    return "Check";
}

function checkABA(s) {
  var i, n, t;
  t = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      t = t + c;
  }
  if (t.length != 9)
    return false;
  n = 0;
  for (i = 0; i < t.length; i += 3) {
    n += parseInt(t.charAt(i),     10) * 3
      +  parseInt(t.charAt(i + 1), 10) * 7
      +  parseInt(t.charAt(i + 2), 10);
  }
  if (n != 0 && n % 10 == 0)
    return true;
  else
    return false;
}
function checkPhone(str) {
	str = str.replace(/\s+/g,'');
	str = str.replace(/\-/g,'');
	str = str.replace(/\(/g,'');
	str = str.replace(/\)/g,'');
	return str;
}
// check form values
function checkForm(){
	fv = new formValidator();
	
	var errCount = 0;
	var bgColor = "#FF0E31";
	
	var messageone = "Please Complete";
	var messagetwo = "Please enter five digits.";
	var messagethree = "Please Complete.";
	var messagefour = "Please Complete."
	var messagefive = "Please Check.";
	var messagesix = "Please Check.";
	var messageseven = "Please complete your payment information.";

	var paya = 0;
	var payb = 0;
	var payc = 0;

	var border= "1px solid #CC0000";
	
	function clear(thisID) {
		document.getElementById(thisID+'Chk').innerHTML = "";
		document.getElementById(thisID).style.border = "";
	}	
	
	clear("Comp");
	clear("Fname");
	clear("Lname");
	clear("Addr1");
	clear("City");
	clear("State");
	clear("Zipcode");
	clear("BTN");
	clear("Phone1");
	clear("Email");
	clear("Payment_Type");
	clear("CreditName");
	clear("CreditCard");
	clear("CreditExpire");
	clear("Bank_Routing_Number");
	clear("Bank_Account_Number");
	clear("Account_Holders_Name");
	function displayMsg(thisID, message) {
		document.getElementById(thisID+'Chk').innerHTML = message;
		document.getElementById(thisID).style.border = border;
	}
	
	if (fv.isEmpty(document.forms[0].elements['Comp'].value)) {
		displayMsg("Comp", messageone);
		errCount = 1;
	}
	
	if (fv.isEmpty(document.forms[0].elements['Fname'].value)) {
		displayMsg("Fname", messageone);
		errCount = 1;
	}
	if (fv.isEmpty(document.forms[0].elements['Lname'].value)) {
		displayMsg("Lname", messageone);
		errCount = 1;
	}
	if (fv.isEmpty(document.forms[0].elements['Addr1'].value)) {
		displayMsg("Addr1", messageone);
		errCount = 1;
	}
	if (fv.isEmpty(document.forms[0].elements['City'].value)) {
		displayMsg("City", messageone);
		errCount = 1;
	}
	if (fv.isEmpty(document.forms[0].elements['State'].value)) {
		displayMsg("State", messageone)
		errCount = 1;
	 }
	if (document.forms[0].elements['Zipcode'].value.length != 5) {
		displayMsg("Zipcode", messagetwo);
		errCount = 1;
	}
	var phone = checkPhone(document.forms[0].elements['BTN'].value);
	if (!fv.isNumber(phone)) {
		displayMsg("BTN", messagethree);
		errCount = 1;
	}

	var phoneone = checkPhone(document.forms[0].elements['Phone1'].value);
	if (!fv.isNumber(phoneone)) {
		displayMsg("Phone1", messagethree);
		var thisID = "Phone1";
		errCount = 1;
	}
	if (fv.isEmpty(document.forms[0].elements['Email'].value)) {
		displayMsg("Email", messagefour);
		var thisID = "Email";
		errCount = 1;
	}
	if (!fv.isEmpty(document.forms[0].elements['Email'].value) && !fv.isEmailAddress(document.forms[0].elements['Email'].value)) {
		displayMsg("Email", messagefive);
		var thisID = "Email";
		errCount = 1;
	}
	if (document.forms[0].elements['Email'].value != document.forms[0].elements['EmailConfirm'].value) {
		displayMsg("Email", messagesix);
		document.getElementById('EmailConfirm@Confirm').style.border = border;
		errCount = 1;
	}
	if (!fv.isChecked(document.forms[0].elements['Accept_Terms'])) {
		displayMsg("Accept_Terms", messageone)
		errCount = 1;
	}
	
	if (errCount != 0) {
		return false;
	} else {
		return true;	
	}

}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
