//-------------------------------
function ValidMoney(objMoney) {
// expects only 0, 1 or 2 decimal places. Allows negative numbers
var GoodChar = '0123456789-.,$';
var i;
var iStr = objMoney.value;
var cc;
var j;
var gc;
var bValidChar
var len;
var charPos;

//alert("obj: " +  NumObj.value);
//alert("iStr: " + iStr);
 
	len = iStr.length
	charPos = iStr.indexOf(".")
	if (!((charPos == -1) || (len - charPos < 4))) {
		return false;
	}
	if (iStr.indexOf("-") > 1) {
		return false;
	}
	
	for (i=0; i < iStr.length; i++) {
		cc = iStr.substring(i, i+1);
		bValidChar = false;
		for (j=0; j < GoodChar.length; j++) {
			gc = GoodChar.substring(j, j + 1)
			if (cc == gc) {
				bValidChar = true;
				break;
				}
		}
		if (bValidChar == false) {
//			alert("invalid char: " + cc);
			return false;
		}
	}
		
	return true;


}

  //--------------------------
function Math_Mul(x, y) {
 var a;
 var b; 
 var ary;
 var i;


//	alert("x = " + x);
//	alert("y = " + y);
//	alert("x: " + x.substring(0,1));
 //	alert("y: " + y.substring(0,1));
// 	alert("x length = " + a.length);
 	if (x.substring(0,1) == "$") {
 		x = x.substring(1, x.length);
 		}
 
  	if (y.substring(0,1) == "$") {
 		y = y.substring(1, y.length);
 		}

// remove any comma from x and y

	ary = x.split(",");
	if (ary.length > 1) {
		x = "";
		for (i=0; i = ary.length - 1; i++) {
			x = x + ary[i];
		}
	}
	
	ary = y.split(",");
	if (ary.length > 1) {
		y = "";
		for (i=0; i < ary.length; i++) {
			y = y + ary[i];
		}
	}
// have to allow for more then 2 decimal places	
	a = ((x * y) * 100);
	a = Math.round(a);
	a = (a / 100);
	b = FormatMoney(a);
	b = FormatCommas(b);

  return(b);
  }
  
  
  
  
  
  //--------------------------
  function FormatMoney(sField) {
  var iStr = sField + "s";
  var charPos;
  var len = iStr.length;
  
//  alert("iStr = " + iStr.substring());
	if (iStr.length == 0) {
		return("$0.00");
	}

  	charPos = iStr.indexOf(".")

//	if (charPos == -1) {
//		
//		if (!ValidInteger(sField)) {
//			return(iStr);
//		} else {
//			if (!ValidMoney(sField)) {
//				return(iStr);
//			}}
//		}
	
	if (iStr.substring(0,1) != "$") {
		iStr = "$" + iStr;
		}

	iStr = iStr.substring(0, iStr.length - 1);

	if (charPos == -1) {
		iStr = iStr + ".00";
		return(iStr);
	}
	
//	alert("decimal " + (len - charPos));
	if (len - charPos == 3) {
		iStr = iStr + "0";
		return(iStr);
	}

	if (len - charPos == 2) {
		iStr = iStr + "00";
		return(iStr);
	}

  	charPos = iStr.indexOf(".")

	return(iStr);
}
//----------------------------------

//----------------------------------
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	cents = Math.floor((num*100+0.5)%100);
	num = Math.floor((num*100+0.5)/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 ('$' + num + '.' + cents);
}
//----------------------------------

//----------------------------------
function FormatCommas(OldNum) {
var NewNum = "";
var x;
var ch;
var cnt = 0;
//alert("Format comma: " + OldNum);

	for (x = OldNum.length; x > 0; x--) {
		
		ch = OldNum.substring(x, x-1);
//		alert("cnt, Ch, NewNum = " + cnt + ", " + ch + ", " + NewNum);
		if ((ch == ".") ||(ch == ",")) {
			NewNum = ch + NewNum;
			cnt = 0;
			continue;
		}
	
		if (ch == "$") { 
			NewNum = ch + NewNum;
			break;
		}	
		if (cnt == 3) {
			NewNum = "," + NewNum;
			NewNum = ch + NewNum;
			cnt = 1;
		} else {
			NewNum = ch + NewNum;
			cnt++
		}
	}
	return(NewNum);
}
//---------------------------------------

function ValidInteger(NumObj) {
var GoodChar = '0123456789,';
var i;
var iStr = NumObj.value;
var cc;
var j;
var gc;
var bValidChar;
var iStart = iStr.length;
var iIndex;

// alert("obj: " +  NumObj.value);
// alert("iStr: " + iStr);
 
	for (i=0; i < iStr.length; i++) {
		cc = iStr.substring(i, i+1);
		bValidChar = false;
		for (j=0; j < GoodChar.length; j++) {
			gc = GoodChar.substring(j, j + 1)
			if (cc == gc) {
				bValidChar = true;
				break;
				}
		}
		if (bValidChar == false) {
//			alert("invalid char: " + cc);
			return false;
		}
	}
	
// check that comma in proper place
//alert("comma check iStr: " + iStr);
var len = iStr.length;

	while (iIndex != -1) {
		iIndex = iStr.lastIndexOf(",", iStart)
//		alert("start: " + iStart + " index: " + iIndex + ", len " + len);
		if (len - 1 - iIndex != 3) {
//			alert("not 3: " + (len - 1 - iIndex));
			break;
		}
		
		len = len - 4
		iStart = iIndex - 1;
//		alert("new start: " + iStart);
	}
	
//	alert("last index: " + iIndex);
	if (iIndex == -1) {
//		alert("true");
		return true;
	} else {
//		alert('false');
		return false;
	}
	
}
//---------------------------------------
function ckZipLength(objZip, iMin, iReqLen) {
var sZip = objZip.value;
		
			if (!((sZip.length == iReqLen) || (sZip.length == iMin))) {
				alert("Zipcode must be " + iReqLen + " charaters long, please re-enter the zipcode!");
				objZip.value = "";
				objZip.focus();
				return false;
			} else {
				return true;
			}

}
//----------------------------------------

//--------------------------
function emailOK(emailAddr) {
	if (emailAddr == "") { return true};
	if (!(checkEmail(emailAddr))) {
	alert("Please check the e-mail address you entered, it is not in the right format (user@domain.ext where .ext = either .com, .net, .edu, .org, .gov, .mil, .ca, .info, .biz, .us, .ws, .cc, .bz, or .tv).");	
		return false;
		} else {
		return true;
		}
}
//----------------------------

function checkEmail(emailAddr) {
	// this function checks for a well-formed e-mail address
	// in the format:
	// user@domain.com
	
	var i;
	
	// check for @
	i = emailAddr.indexOf("@");
	if (i == -1) {
		return false;
	}
	
	// separate the user name and domain
	var username = emailAddr.substring(0, i);
	var domain = emailAddr.substring(i + 1, emailAddr.length)

	// look for spaces at the beginning of the username
	i = 0;
	while ((username.substring(i, i + 1) == " ") && (i < username.length)) {
		i++;
	}
	// remove any found
	if (i > 0) {
		username = username.substring(i, username.length);
	}

	// look for spaces at the end of the domain
	i = domain.length - 1;
	while ((domain.substring(i, i + 1) == " ") && (i >= 0)) {
		i--;
	}
	// remove any found
	if (i < (domain.length - 1)) {
		domain = domain.substring(0, i + 1);
	}

	// make sure neither the username nor domain is blank
	if ((username == "") || (domain == "")) {
		return false;
	}
	
	// check for bad characters in the username
	var ch;
	for (i = 0; i < username.length; i++) {
		ch = (username.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) {
				return false;
		}
	}
	
	// check for bad characters in the domain
	for (i = 0; i < domain.length; i++) {
		ch = (domain.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) {
				return false;
		}
	}

	var aSuffix = new Array("com","net","edu","org","gov","mil","ca","info","biz","us","ws","cc","bz","tv");
	var bFoundSuffix = false;
	i = 0;
	while (i < aSuffix.length) {
		if (("." + aSuffix[i]) == domain.substring(domain.length - aSuffix[i].length - 1, domain.length)) {
			return true;
		}
		i++;
	}
	// we would have exited if we'd found a good suffix, so return false
	return false;
}
//-------------------------
function CkUserName() {
//	alert("UserName");
var username = document.frmItemMain.txtUsername.value;
	if (username.length < 4 || username.length > 50) {
		alert("Username must be greater than 3 and less than 51 characters");
		document.frmItemMain.txtUsername.value = "";
		}
	bPasswordChg = true;
}
//------------------------
function CkPassWord() {
//	alert("password");
var password = document.frmItemMain.txtPassword.value;
	if (password.length < 4 || password.length > 16) {
		alert("Password must be greater than 3 and less than 16 characters");
		document.frmItemMain.txtPassword.value = "";
		}
	bPasswordChg = true;
}
//------------------------
function CkVerifyPassWord() {
//	alert("password");
var Verifypassword = document.frmItemMain.txtVerifyPassword.value;
var password = document.frmItemMain.txtPassword.value;

	if (Verifypassword.length < 4 || Verifypassword.length > 15) {
		alert("Verify Password must be greater than 3 and less than 16 characters");
		document.frmItemMain.txtVerifyPassword.value = "";
		}
	if (Verifypassword != password) {
		alert("Password and the verify password do not match, please re-enter them.");
		document.frmItemMain.txtVerifyPassword.value = "";
		document.frmItemMain.txtPassword.value = "";
	}	
}
//-------------------------------
function ValidatePhone(sPhone, sObject) {
//-
var L;

var	Phone = sPhone;
	Phone = replace(Phone, "(", "");
	Phone = replace(Phone, "_", "");
	Phone = replace(Phone, ")", "");
	Phone = replace(Phone, "-", "");
	Phone = replace(Phone, ".", "");
	Phone = replace(Phone, " ", "");
	L = Phone.length;
//	alert("L = " + L + " - " + Phone);
	if (L == 0 || L == 7 || L == 10) { 
		return true;
	}	else {
		alert(sObject + " number must be blank or 7 digits or 10 digits long, phone = " + Phone + " and Length is " + L);
		return false;
	}

  } 
//--------------------------
function DisplayWarning(msg) {
	alert(msg)
}
//----------------------------
 //-------------------------------------
function replace(sStr, sBad, sNew) {
var index = -1;
var pos = 0;
var sNewStr = "";
var len = 0

// append dummy character
	sStr = "X" + sStr

//	alert("sbad = " + sBad);
	while (index < sStr.length) {
//		alert("index = " + index + ", length = " + sStr.length);
		pos = sStr.indexOf(sBad, index);
		if (pos > 0) {
//			alert("pos = " + pos);
			sNewStr = sNewStr + sStr.substring(index, pos);
//			alert("newstr = " + sNewStr);
		} else {
//			alert("not found, pos = " + pos + ", index = " + index + ", len = " + (sStr.length - index));
//			alert("substr " + sStr.substring(index, len));
			sNewStr = sNewStr + sStr.substring(index, sStr.length);
			break;
		 }
		 index = pos + 1;
		}
		
	if (sNewStr == "") {
		sNewStr = sStr
	 }
//	 alert("newstr = " + sNewStr);
// strip dummy character before returning
	 return sNewStr.substring(1, sNewStr.length);
		 
}
//------------------------
function GetTheDay(sDate) {
var aryDate =  sDate.split("/");
	


	if (aryDate[2] != 2) {
		aryDate[2] = "20" + aryDate[2];
	}
	
	sDate = aryDate.join("/");
	
	var retDate = new Date(sDate);

	return retDate.getDay();

}
//-----------------------
function DateCheck_MMDDYY(ckDate, minYear, maxYear) {


var sDate = ckDate.value;
var len;
var charPos;
var aryDate;
//alert("check date");
	
	if ((sDate.length < 6) || (sDate.length > 8 )) {
		alert(sDate.length + "Date: " + sDate + ", is the wrong length, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
		
	len = sDate.length;
	charPos = sDate.indexOf("/");
//	alert("/ pos = " + charPos);
	if ((charPos == -1) || (len - charPos < 2)) {
		alert(charPos + "Date: " + sDate + ", is the wrong format, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
	aryDate = sDate.split("/");
	if (!(aryDate.length == 3)) {
		alert("Date: " + sDate + ", is the wrong format, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
//	alert("ary x " + aryDate.length);
//	alert("ary x " + aryDate[2].length);

	if (!(aryDate[2].length == 2)) {
		alert("Date: " + sDate + ", year must be 2 digits, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
	if ((aryDate[2] < minYear) || (aryDate[2] > maxYear)) {
		alert("Date: " + sDate + ", has an invalid year, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
	//check month
	if ((aryDate[0] < 1) || (aryDate[0] > 12)) {
		alert("Date: " + sDate + ", has an invalid month, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
	//check day
	if ((aryDate[1] < 1) || (aryDate[1] > 31)) {
		alert("Date: " + sDate + ", has an invalid day, Please enter date in MM/DD/YY format.");
		ckDate.value = "";
		return false;
	}
	
	//check days for 30 day months
	var sDays = aryDate[1];
	var sMonth = aryDate[0];
	var sYear = aryDate[2];
	
	if ((sMonth == 4) || (sMonth == 6) || (sMonth == 9) || (sMonth == 11)) {
		if (sDays > 30) {
			alert("Date: " + sDate + ", is only a 30 day month, Please enter date in MM/DD/YY format.");
			ckDate.value = "";
			return false;
		}
	}
	
	//see if we are in a leap year
	sYear = "20" + sYear
	var answer = sYear / 4
	var answer2 = answer + "  "
	charPos = answer2.indexOf(".");
	
	//check february
	if (sMonth == 2) {
		if (charPos > 0) {
			if (sDays > 28) {
				alert("February is only a 28 day month, Please enter date in MM/DD/YY format.");
				ckDate.value = "";
				return false;
			}
		} else {
			if (sDays > 29) {
				alert("February is only a 29 day month, Please enter date in MM/DD/YY format.");
				ckDate.value = "";
				return false;
			}
		
		
		}
	}
	
	return true;
}
//-----------------------
function checkNumeric(fieldValue) {
	if (isNaN(fieldValue) || fieldValue == "") {
		return false;
	}
	return true;
}
//-----------------------
function checkDecimals(fieldValue) {
	decallowed = 2;  // how many decimals are allowed?
	if (fieldValue.indexOf('.') == -1) fieldValue += ".";
			
	dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);
	if (dectext.length > decallowed) {
		return false;
	}
	return true;
}
//-----------------------
function formatTwoDecimalPlaces(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	cents = Math.floor((num*100+0.5)%100);
	num = Math.floor((num*100+0.5)/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 (num + '.' + cents);
}
//-----------------------
function stripComma(fieldValue) {
	var num = fieldValue.toString().replace(/\,/g,'');
	return num;
}
//-->
