function stripCharString (InString, CharString)  {
	OutString="";
	for (Count=0; Count < InString.length; Count++)  {
		TempChar=InString.substring (Count, Count+1);
		Strip = false;
		for (Countx = 0; Countx < CharString.length; Countx++) {
			StripThis = CharString.substring(Countx, Countx+1)
			if (TempChar == StripThis) {
				Strip = true;
				break;
			}
		}
		if (!Strip)
			OutString=OutString+TempChar;
	}
	return (OutString);
}
function copyQty(sku) {
  var thisSku = eval("window.document.forms[0].elements['pQty_"+sku+"']");
  var thatSku = eval("window.document.forms[0].elements['pQty_"+sku+"_display']");
  thisSku.value = thatSku.value;
}
function isNumberEqual(number1, number2){
   var n1=stripCharString(number1,", ");
   var n2=stripCharString(number2,", ");
   if (isNaN(n1)||isNaN(n2))

		return false;
	else
		return (n1-n2==0)?true:false;
}
function isNumberGreater(number1, number2){
   var n1=stripCharString(number1,", ");
   var n2=stripCharString(number2,", ");
   if (isNaN(n1)||isNaN(n2))

		return false;
	else
		return (n1-n2>0)?true:false;
}
function isNumberLower(number1, number2){
   var n1=stripCharString(number1,", ");
   var n2=stripCharString(number2,", ");
   if (isNaN(n1)||isNaN(n2))
		return false;
	else
		return (n1-n2<0)?true:false;
}
function isEmptyField(fieldValue){
   return (trim(fieldValue) == "")?true:false;
}
function checkEmpty(form,input) {
var str = input.value;
   if(!isValidInteger(str)){
      input.value=defValue;
      input.select();
      input.focus();
      return false;
   }
   return true;
 sp = document.getElementsByTagName("input");
   for(i = 0;i < sp.length; i++) {
     if(sp[i].id == n && sp[i].value == ""){
       //if(sp[i].value != "") {
         sp[i].select();
         sp[i].focus();
         alert("Cannot be Empty");
         return false;
         break;
       //}
     }
   }
}
function validatePasswords(form){
  // make sure identical password values were passed in
  if ( form.password.value == form.password_retype.value ) {
      // also make sure that the password values are VALID
      if (form.password.value == ""){
        document.validPassword = false;
        alert ('Valid Password values were NOT entered. Please re-type password values!');
      }
      else {
        document.validPassword = true;
      }
  }
  else {
    document.validPassword = false;
    alert ('Passwords were not identical. Please re-type identical passwords!');
  }
}

function validateEmail(form){
  // make sure identical password values were passed in
  if ( form.email.value == form.emailRetype.value ) {
      // also make sure that the password values are VALID
      if (form.email.value == ""){
        document.validEmail = false;
        alert ('Valid Email addresses were NOT entered. Please re-type email addresses!');
      }
  }
  else {
    document.validEmail = false;
    alert ('Email addresses were not identical. Please re-type identical email addresses!');
  }
}

function validateAccount(form){
  validatePassword(form);
  if (document.validPassword == false) {
    document.validAccount = false;
    return;
  }
  validateEmail(form);
  if (document.validEmail == false) {
    document.validAccount = false;
    return;
  }
  document.validAccount = true;
}

function validateIntegerDefValue(form, input, defValue){
   var str = input.value;
   if(!isValidInteger(str)){
      input.value=defValue;
      input.select();
      input.focus();
      return false;
   }
   return true;
}
//function validatePhoneDefValue(form, input, defValue){
//   var str = input.value;
//   if(!isValidPhone(str)){
//      input.value=defValue;
//      input.select();
//      input.focus();
//      return false;
//   }
//   return true;
//}
function validateIntegerDefValueAllowEmpty(form, input, defValue){
   return validateNumberDefValueAllowEmpty2(form, input, defValue, "0");
}
function validateIntegerDefValueAllowEmpty2(form, input, defValue, valueForEmpty){
   if (trim(input.value)==""){
      input.value=valueForEmpty;
      return true;
   }else{
      return validateIntegerDefValue(form, input, defValue);
   }
}
function validateIntegerDefValueAllowEmptyNotNeg(form, input, defValue, valueForEmpty){
	var ret=validateIntegerDefValueAllowEmpty2(form, input, defValue, valueForEmpty);
	if (input.value<0){
      		input.value=defValue;
      		input.select();
      		input.focus();
		return false;
	}
	return ret;

}
function validateNumber(form, input){
   return validateNumberDefValue(form, input, "0.00");
}
//function validatePhone(form, input){
//   return validatePhoneDefValue(form, input, "0");
//}
function validateNumberDefValueAllowEmpty(form, input, defValue){
   return validateNumberDefValueAllowEmpty2(form, input, defValue, "0.00");
}
function validateNumberDefValueAllowEmpty2(form, input, defValue, valueForEmpty){
   if (trim(input.value)==""){
      input.value=valueForEmpty;
      return true;
   }else{
      return validateNumberDefValue(form, input, defValue);
   }
}
function validateNumberDefValue(form, input, defValue){
   var str = input.value;
   if(!isValidDouble(str)){
      input.value=defValue;
      input.select();
      input.focus();
      return false;
   }
   return true;
}
function validateNumberDefValueAllowEmptyNotNeg(form, input, defValue, valueForEmpty){
	var ret=validateNumberDefValueAllowEmpty2(form, input, defValue, valueForEmpty);
	if (input.value<0){
      		input.value=defValue;
      		input.select();
      		input.focus();
		return false;
	}
	return ret;

}
function validatePosNumber(form, input){
   validateNumber(form, input);
   realInput = input.value - 0;
   if (realInput<0){
      input.value="0.00";
      return false;
   }
   return true;
}
function displayAlert(input,str){
   alert(str);
   input.select();
   input.focus();
}
function validatePercentage(form, input){
   return validatePercentageDefValue(form, input, "0.00");
}
function validatePercentageDefValue(form, input, defValue){
   return validatePercentageInRage(form, input, "0.00", "0", "100");
}
function format(num) { //rounds a percentage or currency 2 to decimal places to the right
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
  num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num + '.' + cents);
}
function validatePercentageInRage(form, input, defValue, min, max){
   var str = input.value;
   if(!isValidDouble(str) || isNumberGreater(str,max) || isNumberLower(str,min)){
      input.value=defValue;
      input.select();
      input.focus();
      return false;
   }
   input.value=format(str);
   return true;
}
function isValidDouble(str){
   if ((str.indexOf(",,") != -1)||(str.indexOf(".,") != -1)||(str.indexOf(",.") != -1))
      return false;
   str=trim(str);
   if (str==",")
      return false;
   if (str.length==0)
      return false;
   str=stripCharString(str,",");
   return !isNaN(str);
}
//function isValidPhone(str){
//   if ((str.indexOf("+") != -1)||(str.indexOf("-") != -1)||(str.indexOf("(") != -1||(str.indexOf(")") != -1))
//      return false;
//   str=trim(str);
//   if ((ch < "0" || "9" < ch))
//      return false;
//   if (str.length==0)
//      return false;
//   str=stripCharString(str,",");
//   return !isNaN(str);
//}
function isValidInteger(str){
   if (str.indexOf(".") != -1)
      return false;
	return isValidDouble(str);
}
function validatePure(form, input){
   return validatePureDefValue(form, input, "");
}
function validatePureDefValue(form, input, defValue){
   var str = input.value;
   if(!isValidPure(str)){
      input.select();
      input.focus();
      alert("Quantity must be a valid number.");
      return false;
   }
   return true;
}
function isValidPure(str){
   for (var i = 0; i < str.length; i++) {
      var ch = str.substring(i, i + 1)
      if ((ch < "0" || "9" < ch))
         return false;
   }
   return true;
}
function validateAlpha(form, input){
   return validateAlphaDefValue(form, input, "");
}
function validateAlphaDefValue(form, input, defValue){
   var str = input.value;
   if(!isValidAlpha(str)){
      input.value="";
      input.select();
      input.focus();
      return false;
   }
   return true;
}
function isValidAlpha(str){
   for (var i = 0; i < str.length; i++) {
      var ch = str.substring(i, i + 1)
      if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' ')
         return false;
   }
   return true;
}
function validateAlphaApostrophe(form, input){
   return validateAlphaApostropheDefValue(form, input, "");
}
function validateAlphaApostropheDefValue(form, input, defValue){
   var str = input.value;
   if(!isValidAlphaApostrophe(str)){
      //input.value="";
      input.select();
      input.focus();
      alert("Please use valid alphabetical characters.")
      return false;
   }
   return true;
}
function isValidAlphaApostrophe(str){
   for (var i = 0; i < str.length; i++) {
      var ch = str.substring(i, i + 1)
      if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' ' && ch != "'" && ch != "-")
         return false;
   }
   return true;
}
function getNumberOrDefDouble(str, defValue){
   return isValidDouble(str)?str:defValue;
}
function addVal(str,valToAdd,roundTo, formName){
   var myForm=eval("window.document.forms['"+formName+"']");
   var oldVal=myForm.elements[str].value;
   var bumpedValue=round(parseFloat(oldVal)+valToAdd,roundTo);
   var minValue=myForm.elements[str].minValue;
   var maxValue=myForm.elements[str].maxValue;
   myForm.elements[str].value=getValidForRangeValue(oldVal,bumpedValue,maxValue,minValue);
}
function getValidForRangeValue(oldVal,vl,maxValue,minValue){
   if (isNumberEqual(oldVal,maxValue) && isNumberGreater(vl,oldVal)){
	   alert("Money factor has been set to maximum allowed by lender program: "+maxValue);
	   return maxValue;
   }else if (isNumberEqual(oldVal,minValue) && isNumberLower(vl,oldVal)){
	   alert("Money factor has been set to minimum allowed by lender program: "+minValue);
	   return minValue;
   }
   if(isNumberGreater(vl,maxValue)){
   return maxValue;
   }else{
   if(isNumberLower(vl,minValue)){
   return minValue;
   }else{
   return vl;
   }
  }
 }
function validateNumberFormat(str, minIntDigits, maxIntDigits, minDecDigits, maxDecDigits){
   str=stripCharString(str,",");
	var intPart="";
	var decPart="";
	var indx=str.indexOf(".");
   if (minDecDigits==0&&indx==-1){	//noes not have to have decimals
      intPart=str;
   }else{
      //alert(indx);
      if (indx>0)
         intPart=str.substring(0,indx);
      decPart=str.substring((indx+1),str.length);
   }

	var intLength=intPart.length;
	var decLength=decPart.length;
	//alert(intPart+" "+decPart);
	if(intLength<minIntDigits||intLength>maxIntDigits)	return false;
	if(decLength<minDecDigits||decLength>maxDecDigits)	return false;
	return true;
}
function validateMfFormat(str){
   return validateNumberFormat(str, "0","1","2","5");
}
function validateAprFormat(str){
   return validateNumberFormat(str, "0","2","0","2");
}
function round(x, d){
   result = (Math.round(x*Math.pow(10, d))/Math.pow(10,d)).toString();
   return result;
}
function getTxtElemValue(elemName){
   return window.document.forms[0].elements[elemName].value;
}
function MM_showHideLayers() {
   var i,p,v,obj,args=MM_showHideLayers.arguments;
   for (i=0; i<(args.length-2); i+=3)
      if ((obj=MM_findObj(args[i]))!=null) {
         v=args[i+2];
         if (obj.style) {
            obj=obj.style;
            v=(v=='show')?'visible':(v=='hide')?'hidden':v;
         }
         obj.visibility=v;
      }
}
//HIDES ALL MENU ITEMS IN FAVOR OF SHOWING ONE
function showHide(n) {
sp = document.getElementsByTagName("span");
  for(i = 0;i < sp.length; i++){
    if(sp[i].id == n){
	  document.getElementsByTagName("span")[i].style.display = "block";
	} else {
      document.getElementsByTagName("span")[i].style.display = "none";
    }
  }
}
function trimChar(stringToTrim, charToTrim){
   var moreToTrim = true;
   while (moreToTrim) {
      if (stringToTrim.charAt(0) == charToTrim)
         stringToTrim = stringToTrim.substring(1, stringToTrim.length);
      else if (stringToTrim.charAt(stringToTrim.length-1) == charToTrim)
         stringToTrim = stringToTrim.substring(0, stringToTrim.length-1);
      else
         moreToTrim = false;
   }
	return stringToTrim;
}
function trim(stringToTrim){
	return trimChar(stringToTrim,' ');
}
//submits form and populates hidden field
function submitThisForm(formName, buttonName){
   var str="window.document.forms['"+formName+"']";
   var myForm=eval(str);
   myForm.button_clicked.value = buttonName;
   myForm.submit();
}
//submits form and populates hidden field for deletes only
function submitThisFormDelete(formName, buttonName, removeProductId){
  do_delete = confirm("Are you sure that you wish to perform this DELETE?");
  if (do_delete == true) {
    var str="window.document.forms['"+formName+"']";
    var myForm=eval(str);
    myForm.button_clicked.value = buttonName;
    myForm.submit();
  }
}
//validation for inputs
function validateForm() {
  var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) {
    test=args[i+2];
    val=MM_findObj(args[i]);
    if (val) {
      nm=val.name;
      val.select();
      val.focus();
    if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) {
        p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) {
          p=test.indexOf(':');
          min=test.substring(8,p);
          max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//Copy Billing Address info to Shipping
function copyAddress(form) {
	if(form.singleAddress.checked) {
	  form.sStreet.value = form.bStreet.value;
	  form.sCity.value = form.bCity.value;
	  form.sStreet2.value = form.bStreet2.value;
	  form.sState.value = form.bState.value;
	  form.sZip.value = form.bZip.value;
	  form.sCountry.selectedIndex = form.bCountry.selectedIndex;
    }else{
	  form.sStreet.value = "";
	  form.sCity.value = "";
	  form.sStreet2.value = "";
	  form.sState.value = "";
	  form.sZip.value = "";
	  form.sCountry.selectedIndex = form.bCountry.selectedIndex;
    }
}
//restores the rollover on mouseout
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_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;
}
//rollover code
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];}
}

function hideShow(n,tag,im){
var sp = document.all.tags(tag)
  for(var i = 0; i < sp.length;i++){
    if(sp[i].id == n){
      sp[i].style.display = "block";
	    MM_swapImage(n,'',im,1)
    }else if(sp[i].id != n){
        sp[i].style.display = "none";
    }
  }
}

var li = document.all
var lu = document.forms[0]

function addNewRegion() {
if(li.oRegion.value != ""){
  oNewOption = new Option();
  oNewOption.text = li.oRegion.value;
  li.oSelect.add(oNewOption, 1);
  li.oRegion.value = "";
  }
}

function removeRegion(n)  {
  var boxLength = n.length;
  arrSelected = new Array();
  var count = 0;
  for (i = 0; i < boxLength; i++) {
  if (n.options[i].selected) {
  arrSelected[count] = n.options[i].value;
  }
  count++;
  }
  var x;
  for (i = 0; i < boxLength; i++) {
  for (x = 0; x < arrSelected.length; x++) {
  if (n.options[i].value == arrSelected[x]) {
  n.options[i] = null;
   }
}
  boxLength = n.length;
   }
}

function addStateGroup() {
if(li.oGroup.value != ""){
  oNewOption = new Option();
  oNewOption.text = li.oGroup.value;
  li.oGrpCollect.add(oNewOption, 1);
  li.oGroup.value = "";
  }
}

sortitems = 1;  // Automatically sort items within lists? (1 or 0)

function move(fbox,tbox) {
for(var i=0; i<fbox.options.length; i++) {
if(fbox.options[i].selected && fbox.options[i].value != "") {
var no = new Option();
no.value = fbox.options[i].value;
no.text = fbox.options[i].text;
tbox.options[tbox.options.length] = no;
fbox.options[i].value = "";
fbox.options[i].text = "";
   }
}
BumpUp(fbox);
if (sortitems) SortD(tbox);
}
function BumpUp(box)  {
for(var i=0; i<box.options.length; i++) {
if(box.options[i].value == "")  {
for(var j=i; j<box.options.length-1; j++)  {
box.options[j].value = box.options[j+1].value;
box.options[j].text = box.options[j+1].text;
}
var ln = i;
break;
   }
}
if(ln < box.options.length)  {
box.options.length -= 1;
BumpUp(box);
   }
}

function SortD(box)  {
var temp_opts = new Array();
var temp = new Object();
for(var i=0; i<box.options.length; i++)  {
temp_opts[i] = box.options[i];
}
for(var x=0; x<temp_opts.length-1; x++)  {
for(var y=(x+1); y<temp_opts.length; y++)  {
if(temp_opts[x].text > temp_opts[y].text)  {
temp = temp_opts[x].text;
temp_opts[x].text = temp_opts[y].text;
temp_opts[y].text = temp;
temp = temp_opts[x].value;
temp_opts[x].value = temp_opts[y].value;
temp_opts[y].value = temp;
      }
   }
}
for(var i=0; i<box.options.length; i++)  {
box.options[i].value = temp_opts[i].value;
box.options[i].text = temp_opts[i].text;
   }
}

//enables continue button when there are products
function enableIfProducts(box, o) {
  for(var i = 0; i < box.options.length; i ++) {
    if(box.options[i].value != "") {
       o.disabled = false;
    } else {
       o.disabled = true;
    }
  }
}

function addRanges(low,high) {
if(low.value != "" && high.value != ""){
  oNewOption = new Option();
  oNewOption.text = low.value;
  high.add(oNewOption, 1);
  low.value = "";
  }
}
function selectBoxes(box, box2) {
  for(var i = 0; i < box.options.length; i ++) {
    box.options[i].selected = true;
   }
  for(var j = 0; j < box2.options.length; j ++) {
    box2.options[j].selected = true;
   }
}
function selectFile(form) {
   var str="window.document.forms['"+form+"']";
   var myForm=eval(str);
   window.location= 'file:///' + myForm.image_input.value;
}
function disableField(n, o) {
   if(n.value != "" || n.checked == true) {
     o.disabled = false;
   } else {
     o.disabled = true;
   }
}
function disableMultipleField(o) {
sp = document.forms[0].elements;
  for(var i = 0; i < sp.length; i ++) {
    if(sp[i].type == "text") {
     if(sp[i].value != "") {
       o.disabled = false;
       //alert(o.disabled == false);
     } else {
       o.disabled = true;
     }
    }
  }
}
