var bNS = (window.Event) ? 1 : 0;
var lCount;
var oErrors;

function ValidString(sFldVal, sMes)
{
	// Perform test
	sFldVal = StripSpacesFromText(sFldVal)
	if(sFldVal.length == 0)
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
	return true;
}

function ValidPasswordConfirm(sFldVal1, sFldVal2, sMes)
{
	// Perform test
	if(sFldVal1 != sFldVal2)
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
	return true;

}

function StripSpaces(oText)
{
	oText.value = oText.value.replace(/ /g, "");
}

function StripSpacesFromText(sText)
{
	return sText.replace(/ /g, "");
}

function ValidEmail(sFldVal, sMes)
{
	// Perform test
	if((sFldVal.length == 0)||(sFldVal.indexOf("@") == -1) || (sFldVal.indexOf(".") == -1))
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
	return true;
}

function ValidLen(sFldVal, lAtLeast, lAtMost, sMes)
{
	// Perform test
	var lLen = sFldVal.length;
	if((lLen < lAtLeast)||(lLen > lAtMost))
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
	return true;
}

function ValidSelection(oSelect, sMes)
{
	if((oSelect.length == 0)||(oSelect.options[oSelect.selectedIndex].value == 0)||(oSelect.options[oSelect.selectedIndex].value == 'None'))
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
	return true;
}

function ValidPhone(oNumber, sMes)
{
	var sNum	= StripAlpha(oNumber.value);
	var len		= sNum.length;
	if(len == 10)
	{
		sNum = "(" + sNum.substring(0,3) + ") " + sNum.substring(3,6) + "-" + sNum.substring(6, len);
		oNumber.value = sNum;
	}
	else
	{
		if(sMes)
		{
			oErrors[lCount] = sMes;
			lCount++;
		}
		return false;
	}
}

function StripAlpha(txtField)
{
	var curValue
	var newValue
	var sChar
	var len
	var i
	
	newValue = ""
	curValue = txtField;
	len = curValue.length;
	// If length greater than 0 strip out letters
	if (len > 0)
		for(i=0;i<len;i++)
		{
			sChar = curValue.substring(i, i+1);
			if (sChar >= "0" && sChar <= "9")
				newValue += sChar;		
		}
	// Reassign non-comma amount
	return newValue;
}

function FormatPhoneNumber(oNumber, bNoAlert)
{
	var sNum	= StripAlpha(oNumber.value);
	var len		= sNum.length;
	if(len == 10)
	{
		sNum = "(" + sNum.substring(0,3) + ") " + sNum.substring(3,6) + "-" + sNum.substring(6, len);
		oNumber.value = sNum;
		return true;
	}
	else if(bNoAlert)
		return false;
	else
	{
		alert("Please enter a valid phone number including the area code");
		return false;
	}
}

function ShowErrors()
{
	var sAlert = "";
	for(var i=0; i<oErrors.length; i++)
	{
		if(i==0)
			sAlert = "Please correct the following errors below:\n\n";
		sAlert += (i+1) + "." + "\t" + oErrors[i] + "\n";
	}
	if(sAlert == "") 
		return false;
	else
	{
		alert(sAlert);
		return true;
	}
}

function SubmitItems(oForm)
{
	oForm.submit();
	oForm.disabled = 'true';
}

function ValidateQty(oQty, bDefault) 
{
	var sVal = oQty.value;
	if(sVal!="")
	{
		if(isNaN(sVal))
		{
			alert("Invalid quantity...please enter numbers only.");
			oQty.focus();
			oQty.select();
			return false;
		}
		else
		{
			// Always round up
			var oNum = new Number(oQty.value)
			if((oNum % 1) != 0)
				oNum += (1-(oNum%1))
			oQty.value = oNum;
			return true
		}
	}
	else
		if(bDefault)
			{
				oQty.value = 1;
				return true
			}
}	

function ValidateUnit(oUnit,nMax)
{
	var sVal = StripAlpha(oUnit.value);
	// Default to case(1) if not numeric number not entered
	if((isNaN(sVal))||(sVal==""))
		oUnit.value = "0";
	else if(( sVal < 0) || (sVal > nMax))
	{
		if(bNS)
		{
			oUnit.value = "0";
			if( nMax < 2 )
				alert("Invalid unit of measure...please enter 0 for cases or 1 for eaches.");
			else
				alert("Invalid unit of measure...please enter 0 for cases, 1 for eaches, or 2 for multiples.");
			oUnit.focus();
			oUnit.select();
		}
		else
		{
			if( nMax < 2 )
				alert("Invalid unit of measure...please enter 0 for cases or 1 for eaches.");
			else
				alert("Invalid unit of measure...please enter 0 for cases, 1 for eaches, or 2 for multiples.");
			oUnit.focus();
			oUnit.select();		
		}
	}
}

function CheckDate(date_field, desc) {
        if (!date_field.value)  
                return true;
        var in_date = StripStringChar(date_field.value," ");
        in_date = in_date.toUpperCase();
        var date_is_bad = 0;  
        if (!StringAllow(in_date,"/0123456789T+-"))
                date_is_bad = 1; // invalid characters in date
        if (!date_is_bad) { 
                var has_rdi = 0;
                if (in_date.indexOf("T") >= 0){ 
                        has_rdi = 1;
                }
                if (!date_is_bad && has_rdi && (in_date.indexOf("T") != 0)) { 
                        date_is_bad = 2; // relative date index character is not in first position
                }
                if (!date_is_bad && has_rdi && (in_date.length == 1)) { 
                        var d = new Date();
						var return_month = parseInt(d.getMonth() + 1).toString();
						return_month = (return_month.length==1 ? "0" : "") + return_month; 
						var return_date =  parseInt(d.getDate()).toString();
						return_date = (return_date.length==1 ? "0" : "") + return_date; 
				        in_date = return_month + "/" + return_date + "/" + GetFullYear(d);		
                        has_rdi = 0; // date doesn't have rdi char anymore (will also cause failure of add'l rdi checks, which is a good thing)
                }
                if (!date_is_bad && has_rdi && (in_date.length > 1) && !(in_date.charAt(1) == "+" || in_date.charAt(1) == "-")) {
                        date_is_bad = 3; // length of rdi string is greater than 1 but second char is not "+" or "-"
                }
                if (!date_is_bad && has_rdi && isNaN(parseInt(in_date.substring(2,in_date.length),10))) {
                        date_is_bad = 4; // rdi value is not a number
                }
                if (!date_is_bad && has_rdi && (parseInt(in_date.substring(2,in_date.length),10) < 0)) {
                        date_is_bad = 5; // rdi value is not a positive integer
                }
                if (!date_is_bad && has_rdi) {
                        var d = new Date();
                        ms = d.getTime();
                        offset = parseInt(in_date.substring(2,in_date.length),10);
                        if(in_date.charAt(1) == "+") {
                                ms += (86400000 * offset);
                        } else {
                                ms -= (86400000 * offset);
                        }
                        d.setTime(ms);
						var return_month = parseInt(d.getMonth() + 1).toString();
						return_month = (return_month.length==1 ? "0" : "") + return_month; 
						var return_date =  parseInt(d.getDate()).toString();
						return_date = (return_date.length==1 ? "0" : "") + return_date; 
				        in_date = return_month + "/" + return_date + "/" + GetFullYear(d);	
                        has_rdi = 0;
                }
        } 
        if (!date_is_bad) {
                var date_pieces = new Array();
                date_pieces = in_date.split("/");
                if (date_pieces.length == 2) {
                        var d = new Date();
                        in_date = in_date + "/" + GetFullYear(d);
                        date_pieces = in_date.split("/");
                }
                if (date_pieces.length != 3 || parseInt(date_pieces[0],10) < 1 || parseInt(date_pieces[0],10) > 12 
                                || parseInt(date_pieces[1],10) < 1 || parseInt(date_pieces[1],10) > 31 
                                || (date_pieces[2].length != 2 && date_pieces[2].length != 4)) {
                        date_is_bad = 6;  // date is not in format of m[m]/d[d]/yy[yy]
                }
        }
        if (date_is_bad) {
                alert(desc + " must be in the format of mm/dd/yy, mm/dd/yyyy, t, t+n or t-n.");
                date_field.focus();
                return (false);
        }
        
        var ms = Date.parse(in_date);
        var d = new Date();
        d.setTime(ms);
		var return_date = d.toLocaleString();
		var return_month = parseInt(d.getMonth() + 1).toString();
		return_month = (return_month.length==1 ? "0" : "") + return_month; 
		var return_date =  parseInt(d.getDate()).toString();
		return_date = (return_date.length==1 ? "0" : "") + return_date; 
        return_date = return_month + "/" + return_date + "/" + GetFullYear(d);
        date_field.value = return_date;
        return true;
}       // normalize the year to yyyy

function GetFullYear(d) {
		var y = ""
		if (d.getFullYear() != null)
		{
			y = d.getFullYear();
			if (y < 1970) y+= 100;		
		} else
		{	
	        y = d.getYear();
	        if (y > 69  && y < 100) y += 1900;
	        if (y < 1000) y += 2000;
		}
        return y;
}

function StripStringChar (InString, CharString)  {
        var OutString="";
   for (var Count=0; Count < InString.length; Count++)  {
        var TempChar=InString.substring (Count, Count+1);
      var Strip = false;
      for (var Countx = 0; Countx < CharString.length; Countx++) {
        var StripThis = CharString.substring(Countx, Countx+1)
         if (TempChar == StripThis) {
                Strip = true;
            break;
         }
      }
      if (!Strip)
        OutString=OutString+TempChar;
   }
        return (OutString);
}

function StringAllow (InString, RefString)  {
        if(InString.length==0) return (false);
        for (var Count=0; Count < InString.length; Count++)  {
        var TempChar= InString.substring (Count, Count+1);
      if (RefString.indexOf (TempChar, 0)==-1)  
        return (false);
   }
   return (true);
}