// this function is used to convert the annual revenue into a valid integer before submitting
function intOnly(i)
{
	if(i.value.length > 0)
	{
		i.value = i.value.replace(/[^\d\.]+/g, '');
	}
	if (isNaN(i.value) == false)
	{
		if (Number(i.value) > 2000)
		{
			i.value = 2000;
		}
		var annRev = Number(i.value) * 1000;
		if (annRev > 0)
		{
			document.allapp.Annual_Revenue.value=annRev;
		}
		else
		{
			document.allapp.Annual_Revenue.value = '';
			i.value = '';
		}
	}
}

// this function is used to grab the VIP code from the link query string

var qsParm = new Array();
function qs()
{
 var query = window.location.search.substring(1);
 var parms = query.split('&');
 for (var i=0; i<parms.length; i++)
 {
  var pos = parms[i].indexOf('=');
  if (pos > 0)
  {
   var key = parms[i].substring(0,pos);
   var val = parms[i].substring(pos+1);
   qsParm[key] = val;
  }
 }
}

// this section initializes the VIP code for the array
function vip_init(form)
{
 qsParm['vip'] = null;
 qs();
 if (qsParm['vip'] != '' && qsParm['vip'] != null)
 {
  form.VIP_number.value = qsParm['vip'];
 }
 else
 {
  if (qsParm['VIP'] != '' && qsParm['VIP'] != null)
  {
   form.VIP_number.value = qsParm['VIP'];
  }
 }
}

function products_init(form)
{
 qsParm['products'] = null;
 qs();
 if (qsParm['products'] != '' && qsParm['products'] != null)
 {
  if (form.products != null)
  {
   form.products.value = qsParm['products'];
  }
 }
}
//***** Validation begins here! *****

function validateform(form)
{
for (i = 0; i < form.length; i++)
{
	var tempobj = form.elements[i];
	if (tempobj.type.toLowerCase() == "submit") tempobj.disabled = true;
}
vip_init(form);
products_init(form);
//*** This function will return a boolean.  If required fields are all set, then it will return true.
var oktosave = new Boolean(true);

var allrequired = form.elements;
for (k=0;k<allrequired.length;k++)
{
	var field = allrequired[k];
	var fieldname = allrequired[k].name;
	if (oktosave == true && (fieldname == "State_" || fieldname == "State" || fieldname == "state"))
	{
		for (m=0;m<allrequired.length;m++)
		{
			if (allrequired[m].name == "Country")
			{
				if (allrequired[m].value == "USA" || allrequired[m].value == "Canada" || allrequired[m].value == "Mexico")
				{
					oktosave = checkfield(allrequired[k]);
				}
				
			}
		}
	}
	else
	{
		if (oktosave == true && fieldname == "Email")
		{
		 oktosave = emailCheck(allrequired[k]);
		}
		if (oktosave == true) oktosave = checkfield(allrequired[k]);
	}
}

//*** NOTE: If you want any of these fields on your form to be required, simple include the attribute title="Required" to the input tag.  i.e.
//*** <input name="whatever" title="Required" type="text"></input>


for (i = 0; i < form.length; i++)
{
	var tempobj = form.elements[i];
	if (tempobj.type.toLowerCase() == "submit") tempobj.disabled = false;
}
return oktosave;

}


function checkfield(fo,name)
{
	if (fo != null && fo.title == "Required" && fo.type != "hidden")
	{
		if (fo.value == null || fo.value == "" || fo.value == "Select One" || fo.type == "radio")
		{
			if (name == null)
			{
				if (fo.getAttribute("user_prompt_name") == null)
				{
					if (fo.id == null || fo.id == '')
					{
						name = fo.name;
					}
					else
					{
						name = fo.id;
					}
				}
				else
				{
					name = fo.getAttribute("user_prompt_name");
				}
			}
			if (fo.type == "radio")
			{
				return radioselected(fo,name);
			}
			alert(name + " is a required field.  Please fill it out and try again");
			if (fo.type != "hidden")
			{
			 fo.focus();
		  }
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return true;
	}
	return true;
}

 function checkpwd(theform)
 {
 	var continuesave = true;
 	var pwd = new String(theform.Password.value);
 	if ((theform.Password.value != theform.Confirm_Password.value) && continuesave == true)
 	{
 		alert("Your Password and Confirm Password do not match.  Please fill it out and try again");
 		theform.Password.value = "";
 		theform.Confirm_Password.value = "";
 		theform.Password.focus();
 		continuesave = false;
 	}
 	if ((pwd.length < 5) && continuesave == true)
 	{
 		alert("Your password must be at least 5 characters long, please try again.");
 		theform.Password.value = "";
 		theform.Confirm_Password.value = "";
 		theform.Password.focus();
 		continuesave = false;
 	}
 	if ((theform.Password.value == theform.f_password_hint.value) && continuesave == true)
 	{
 		alert("Your Password Hint cannot match your Password.  Please fill it out and try again");
 		theform.f_password_hint.value = "";
 		theform.f_password_hint.focus();
 		continuesave = false;
 	}
 	var pwdNum = new RegExp("\\d");
 	var pwdAlp = new RegExp("[a-z]","i");
 	if (true == false && pwdNum.test(pwd) == false || pwdAlp.test(pwd) == false)
 	{
 		alert("Your password must contain at least one number and one letter, please try again.");
 		theform.Password.value = "";
 		theform.Confirm_Password.value = "";
 		theform.Password.focus();
 		continuesave = false;
 	}
 	var pwdSpace = new RegExp("\\s");
 	if (pwdSpace.test(pwd)== true)
 	{
 		alert("Your password cannot contain a space or tab, please try again.");
 		theform.Password.value = "";
 		theform.Confirm_Password.value = "";
 		theform.Password.focus();
 		continuesave = false;
 	}
 	return continuesave;
 }


function radioselected(fo,fieldname)
{
 //*** This function finds all the question answer radio fields with a specified ID and loops through looking for one that is checked.
 //*** If it doesn't find one, it returns false;
 var selected = false;
 var elems = document.getElementsByTagName('input');
 for(y=0;y<elems.length;y++)
 {
  var elem = elems[y];
  var elemname = elem.name;
  if (elem.name == fo.name)
  {
   if (elem.checked == true)
   {
    selected = true;
   }
  }
 }
  if (selected == false)
  {
   alert("Please select an answer for: " + fieldname + ".");
	}
	 return selected;
}

function checkphone(field,fieldname)
{
//*** This function checks single required text fields depending on their type, and returns a simple alert error, then sets to focus to whichever field is not filled out.
if (field != null && field.title == "Required")
{
 if (field.value == "" || field.value == null)
 {
  alert(fieldname + " is a required field.  The format is xxx-xxx-xxx.  Please fill it out and try again");
  field.focus();
  return false;
 }
 return true;
 }
 return true;
}

function echeck(str) {
  var invalidstr = "Invalid E-mail address, please try again.";
  var at="@";
  var dot=".";
  var lat=str.indexOf(at);
  var lstr=str.length;
  var ldot=str.indexOf(dot);
  if (str.indexOf(at)==-1){
     alert(invalidstr);
     return false;
  }

  if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
     alert(invalidstr);
     return false;
  }

  if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
      alert(invalidstr);
      return false;
  }

   if (str.indexOf(at,(lat+1))!=-1){
      alert(invalidstr);
      return false;
   }

   if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
      alert(invalidstr);
      return false;
   }

   if (str.indexOf(dot,(lat+2))==-1){
      alert(invalidstr);
      return false;
   }

   if (str.indexOf(" ")!=-1){
      alert(invalidstr);
      return false;
   }

    return true;
 }

function emailCheck(emailID){

if (emailID.title == "Required")
{
 if ((emailID.value==null)||(emailID.value=="")){
  alert("Please Enter your Email Address");
  emailID.focus();
  return false;
 }
 if (echeck(emailID.value)==false){
  emailID.focus();
  return false;
 }
 return true;
 }
 return true;
 }
 
/*################################################################
 Name: addressCheck
 Desc: Checks to make sure a user isn't trying to ship to a PO BOX
 Date: 080722
 Author: JRB
 #################################################################*/
 function addressCheck(addressField)
 {
 var addressFielda = addressField.toUpperCase();
 //Values we won't allow: PO BOX, P.O. BOX, PO.BOX, P.O BOX, PO. BOX, P.O.BOX
 if(addressFielda.indexOf("PO BOX") != -1){return false;}
 else if(addressFielda.indexOf("P.O. BOX") != -1){return false;}
 else if(addressFielda.indexOf("PO.BOX") != -1){return false;}
 else if(addressFielda.indexOf("P.O BOX") != -1){return false;}
 else if(addressFielda.indexOf("PO. BOX") != -1){return false;}
 else if(addressFielda.indexOf("P.O.BOX") != -1){return false;}	
 else {return true;}
 } 
 
 function launchwindow(url, name, h, w, x, y, t, l, sb, r) { 
 // (url, name, height, width, screenX, screenY, top, left, scrollbars,resizable)
   var windowparams = "height=" + h + ',width=' + w;
   if (x != '') { windowparams = windowparams + ',screenX=' + x;}
   if (y != '') {windowparams = windowparams + ',screenY=' + y;}
   if (t != '') {windowparams = windowparams + ',top=' + t;}
   if (l != '') {windowparams = windowparams + ',left=' + l;}
   if (sb != '') {windowparams = windowparams + ',scrollbars=' + sb;}
   if (r != '') {windowparams = windowparams + ',resizable=' + r;}
 	window.open(url,name,windowparams);
}				
