
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

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++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}






function validatePwd(pw1, pw2) {

var invalid = " "; // Invalid character is a space
var minLength = 6; // Minimum length

// check for a value in both fields.
if (pw1 == '' || pw2 == '') {
alert('Please enter your password twice.');
return false;
}
// check for minimum length
if (pw1.length < minLength) {
alert('Your password must be at least ' + minLength + ' characters long. Try again.');
return false;
}
// check for spaces
if (pw2.indexOf(invalid) > -1) {
alert("Sorry, spaces are not allowed.");
return false;
}
else {
if (pw1 != pw2) {
alert ("You did not enter the same new password twice. Please re-enter your password.");
return false;
}
else {
return true;
      }
   }
}

function checkForRequired(obj, name) {

	if(trim(obj.value) == "") {
		alert(name + " is a required field.");
		return false;
	}
	return true;


}

function trim(val) {
  var retour = ""
  for(i=0;i < val.length;i++)
    if(val.charAt(i) != " ") {
      retour += val.charAt(i)
    }
  return retour
}

function isValidEmail(str) {
   return (str.indexOf("@") > 0);
 
}
		function setValue(form, fieldname, fieldvalue) {
			eval("form." + fieldname + ".value = '" + fieldvalue + "'");
		}
		
		function FormatPhone(form, fieldname) {
			var strFieldValue;
			strFieldValue = eval("form." + fieldname + ".value");
			strFieldValue = FormatPhoneImp(strFieldValue);
			eval("form." + fieldname + ".value = '" + strFieldValue + "'");
		}	

		function FormatZip(form, fieldname) {
			var strFieldValue;
			strFieldValue = eval("form." + fieldname + ".value");
			strFieldValue = FormatNumberImp(strFieldValue,4);
			eval("form." + fieldname + ".value = '" + strFieldValue + "'");
		}

		function FormatPhoneImp(InitialValue) {
			var strInitial = InitialValue;
			var strFinal = new String();
			var j = 0 ;
			var rePhone = new RegExp("[(]\d\d\d[)][ ]\d\d\d[-]\d{4}$");
			
			if (strInitial.length > 2) {
				 strFinal = "(";
			};
			
			// here we check for the already formatted phone number and exit if true					
			if 	(rePhone.test(strInitial) == true) {
				return strInitial;
			}	

			// here we begin processing the field, placing the numbers into a new phone number string
			for (var i = 0; i < strInitial.length; ++i) {
				if ((strInitial.charAt(i) == '0') ||
					(strInitial.charAt(i) == '1') ||
					(strInitial.charAt(i) == '2') ||
					(strInitial.charAt(i) == '3') ||
					(strInitial.charAt(i) == '4') ||
					(strInitial.charAt(i) == '5') ||
					(strInitial.charAt(i) == '6') ||
					(strInitial.charAt(i) == '7') ||
					(strInitial.charAt(i) == '8') ||
					(strInitial.charAt(i) == '9')) {
					j = j + 1
					if (j == 4) {
						strFinal = strFinal + ") ";
					}

					if (j == 7) {
						strFinal = strFinal + "-";
					}
			
					if (j < 11) {
						strFinal = strFinal + strInitial.charAt(i);
					}
				}
			}
			return strFinal;
		}
		

		function FormatNumberImp(strInput,nLength) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ((strInput.charAt(i) == '0') ||
					(strInput.charAt(i) == '1') ||
					(strInput.charAt(i) == '2') ||
					(strInput.charAt(i) == '3') ||
					(strInput.charAt(i) == '4') ||
					(strInput.charAt(i) == '5') ||
					(strInput.charAt(i) == '6') ||
					(strInput.charAt(i) == '7') ||
					(strInput.charAt(i) == '8') ||
					(strInput.charAt(i) == '9'))
				{	
					strResult = strResult + strInput.charAt(i);
					if (i >= nLength) return strResult;
				}
			}
			return strResult;
		}	
		function FormatAlphaNumeric(form, fieldname) {
			var strFieldValue;
			strFieldValue = eval("form." + fieldname + ".value");
			strFieldValue = FormatAlphaNumericImp(strFieldValue);
			eval("form." + fieldname + ".value = '" + strFieldValue + "'");
		}	

		function FormatAlphaNumericImp(strInput,nLength) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ( 
				   ((strInput.charAt(i) >= '0') && (strInput.charAt(i) <= '9')) ||
				   ((strInput.charAt(i) >= 'A') && (strInput.charAt(i) <= 'Z')) ||
				   ((strInput.charAt(i) >= 'a') && (strInput.charAt(i) <= 'z'))
				)
				{	
					strResult = strResult + strInput.charAt(i);
					if (i >= nLength) return strResult;
				}
			}
			return strResult;
		}			
		function FormatAlphaNumericWithSpace(form, fieldname) {
			var strFieldValue;
			strFieldValue = eval("form." + fieldname + ".value");
			strFieldValue = FormatAlphaNumericWithSpaceImp(strFieldValue);
			eval("form." + fieldname + ".value = '" + strFieldValue + "'");
		}	

		function FormatAlphaNumericWithSpaceImp(strInput,nLength) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ( 
				   ((strInput.charAt(i) >= '0') && (strInput.charAt(i) <= '9')) ||
				   (strInput.charAt(i) == ' ') ||
				   (strInput.charAt(i) == '.') ||
				   (strInput.charAt(i) == ',') ||
				   ((strInput.charAt(i) >= 'A') && (strInput.charAt(i) <= 'Z')) ||
				   ((strInput.charAt(i) >= 'a') && (strInput.charAt(i) <= 'z'))
				)
				{	
					strResult = strResult + strInput.charAt(i);
					if (i >= nLength) return strResult;
				}
			}
			return strResult;
		}			

		function FormatNumeric(form, fieldname) {
			var strFieldValue;
			strFieldValue = eval("form." + fieldname + ".value");
			strFieldValue = FormatNumericImp(strFieldValue);
			eval("form." + fieldname + ".value = '" + strFieldValue + "'");
		}	

		function FormatNumericImp(strInput,nLength) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ( 
				   ((strInput.charAt(i) >= '0') && (strInput.charAt(i) <= '9'))
				)
				{	
					strResult = strResult + strInput.charAt(i);
					if (i >= nLength) return strResult;
				}
			}
			return strResult;
		}	

		function RemoveNumber(strInput, max) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ((strInput.charAt(i) == '0') ||
					(strInput.charAt(i) == '1') ||
					(strInput.charAt(i) == '2') ||
					(strInput.charAt(i) == '3') ||
					(strInput.charAt(i) == '4') ||
					(strInput.charAt(i) == '5') ||
					(strInput.charAt(i) == '6') ||
					(strInput.charAt(i) == '7') ||
					(strInput.charAt(i) == '8') ||
					(strInput.charAt(i) == '9'))
				{	
					strResult = strResult + strInput.charAt(i);
				}
			}
					
			if (strResult.length > 4) {
				strResult = strResult.charAt(0) + strResult.charAt(1) + strResult.charAt(2) + strResult.charAt(3)
			}					
			if (strResult > max) {
				alert("Sorry, you have requested more of an item than we have in stock.\nPlease check the inventory column and adjust your order.\nThank you.")
				strResult = 0
			}
			if (strResult.length == 0) {
				strResult = 0
			}
			
			return strResult;
		}	


		function RemoveNumber2(strInput, max,strOldValue) {
			var strResult;
			strResult = "";
			for (var i = 0; i < strInput.length; ++i) {
				if ((strInput.charAt(i) == '0') ||
					(strInput.charAt(i) == '1') ||
					(strInput.charAt(i) == '2') ||
					(strInput.charAt(i) == '3') ||
					(strInput.charAt(i) == '4') ||
					(strInput.charAt(i) == '5') ||
					(strInput.charAt(i) == '6') ||
					(strInput.charAt(i) == '7') ||
					(strInput.charAt(i) == '8') ||
					(strInput.charAt(i) == '9'))
				{	
					strResult = strResult + strInput.charAt(i);
				}
			}
					
			if (strResult.length > 4) {
				strResult = strResult.charAt(0) + strResult.charAt(1) + strResult.charAt(2) + strResult.charAt(3)
			}					
			if (strResult > max) {
				alert("Sorry, you have requested more of an item than we have in stock.\nQuantity left is stock is " + max.toString() + ".\nThank you.")
				strResult = strOldValue
			}
			if (strResult.length == 0) {
				strResult = 0
			}
			
			return strResult;
		}			
		function FormatQty(form,fieldname,max) {
			var strQty;
			strQty = eval("form." + fieldname + ".value");
			strQty = RemoveNumber(strQty,max);
			eval("form." + fieldname + ".value = " + strQty + "");
		}

		function FormatQty2(form,fieldname,max,strOldQty) {
			var strQty
			strQty = eval("form." + fieldname + ".value");
			strQty = RemoveNumber2(strQty,max,strOldQty);
			eval("form." + fieldname + ".value = " + strQty + "");
		}

		function MM_openBrWindow(theURL,winName,features) {
		  window.open(theURL,winName,features);
		}		
		function pviiW3Cbg(obj, pviiColor) {
			obj.style.backgroundColor=pviiColor
		}

		function removeFromCart(sku) {
			window.open("CartDetail.asp?cmd=rm&sku=" + sku,"_parent")
		}	
		function CopyShippingToBilling() {
			document.confirm.ship_first_name.value = document.confirm.first_name.value ;
			document.confirm.ship_last_name.value = document.confirm.last_name.value ;
			document.confirm.ship_address.value = document.confirm.address.value ;
			document.confirm.ship_address2.value = document.confirm.address2.value ;
			document.confirm.ship_city.value = document.confirm.city.value ;
			document.confirm.ship_state.value = document.confirm.state.value ;
			document.confirm.ship_zip.value = document.confirm.zip.value ;
			document.confirm.ship_country.value = document.confirm.country.value ;
			document.confirm.ship_phone.value = document.confirm.phone.value ;
			document.confirm.ship_fax.value = document.confirm.fax.value ;
			document.confirm.ship_email.value = document.confirm.email.value ;
			document.confirm.ship_email2.value = document.confirm.email2.value ;
		}		
		function ClearFields2() {
			document.confirm.first_name.value = "";
			document.confirm.last_name.value = "";
			document.confirm.address.value = "";
			document.confirm.address2.value = "";
			document.confirm.city.value = "";
			document.confirm.state.value = "";
			document.confirm.zip.value = "";
			document.confirm.country.value = "";
			document.confirm.phone.value = "";
			document.confirm.fax.value = "";
			document.confirm.email.value = "";
			document.confirm.email2.value = "";

			document.confirm.ship_first_name.value = "";
			document.confirm.ship_last_name.value = "";
			document.confirm.ship_address.value = "";
			document.confirm.ship_address2.value = "";
			document.confirm.ship_city.value = "";
			document.confirm.ship_state.value = "";
			document.confirm.ship_country.value = "";
			document.confirm.ship_zip.value = "";
			document.confirm.ship_phone.value = "";
			document.confirm.ship_fax.value = "";
			document.confirm.ship_email.value = "";
			document.confirm.ship_email2.value = "";

			document.confirm.card_number.value = "";
			document.confirm.card_exp_month.value = "";
			document.confirm.card_exp_year.value = "";
			return false;
		}
		function reload2(form) {
			window.open("CartDetail.asp?st=" + form.st.value,"_parent")
		}		

		function reload3(form) {
			window.open("inventory_default.asp?st=" + form.st.value,"_parent")
		}		

		function DeleteConfirmation()
		{
  			if (confirm("Are you sure you want to delete?"))
  				return true;
  			else				
  				return false;
  		}
  		
  		
  		function validateNumeric(obj, e) {

				var sep = 0;
				var key = '';
				var i = j = 0;
				var len = len2 = 0;
				var strCheck = '0123456789';
				var aux = aux2 = '';
				var whichCode = (window.Event) ? e.which : e.keyCode;
				if (whichCode == 13) return true;  // Enter
				key = String.fromCharCode(whichCode);  // Get key value from key code
				if (strCheck.indexOf(key) == -1) return false;  // Not a valid key

				return true;
				}
				
				
		function validateMoney(fld,  e) {

				var sep = 0;
				var key = '';
				var i = j = 0;
				var len = len2 = 0;
				var strCheck = '0123456789.';
				var aux = aux2 = '';
				var whichCode = (window.Event) ? e.which : e.keyCode;
				if (whichCode == 13) return true;  // Enter
				key = String.fromCharCode(whichCode);  // Get key value from key code
				if (strCheck.indexOf(key) == -1) return false;  // Not a valid key

				if(key.indexOf(".") == 0) {
					if(fld.value == "") {
						return false;
					}
				}

			return true;
		}	
		

function formatCurrency(num) {
			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);
			return (((sign)?'':'-') + num + '.' + cents);
}	
		
		
		
function checkReqField(obj, strFieldName, styleObj)
{

	if(!checkForRequired(obj, strFieldName)) {
		styleObj.style.color="#ff0000";
		obj.focus();
		return false;
	}else {
		styleObj.style.color="";
		return true;
	}

}		

function checkReqRadio(formObj, strFieldName, strDesc, styleObj) {
		
	var counter;
	var formElements = formObj.elements;
	
	for (i=0; i < formElements.length; i++) {
		var elemName = formElements[i].name;
		var elemValue = formElements[i].value;

		if(elemName == strFieldName) {  
				if(formElements[i].checked) {
					styleObj.style.color="";
					return true;
				}
		}
		
	}
		styleObj.style.color="#ff0000";
		alert(strDesc + " is required.");
	return false;

}

					  		