function Required(obj){
	if (obj.value.length == 0){
		obj.focus()
		return false
	}
	return true
}
function Range(obj, min, max){
	if (obj.value.length > 0){
		if (isNaN(obj.value)) {
			alert("Invalid number!")
			return false	
		}
		else {
			if ((obj.value > max) || (obj.value < min)){
				alert("It must be between "+ min + " and " + max)
				return false
			}
		}
	}
	return true
}
function checkDecimals(obj){
	var reg = new RegExp()
	reg = /^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$/
	if (obj.value != ""){
		test = reg.test(obj.value)
		if (!test) {
			alert("\""+ obj.value + "\" is invalid number!  Please try again\nExample: 1,234,567.90")
			obj.select()
			//obj.focus()
			return false
		}
		else {
		//	var n = new Number(obj.value)
		//	obj.value = n.toFixed(0)
			return true
		}	
	}
	else {
		//		var n = new Number(obj.value)
		//	obj.value = n.toFixed(0)

		return true
	}	
}

function checkInteger(obj){
	
	if (obj.value != ""){
		test = toNumber(obj.value)
		if (isNaN(test)) {
			alert("\""+ obj.value + "\" is invalid number!  Please try again")
			obj.select()
			return false
		}
		else {
			return true
		}	
	}
	else {
		return true
	}	
}

function isDecimals(obj){
	obj.value = trim(obj.value)
	if (obj.value == "" ) return true
	
	var reg = new RegExp()
	reg = /^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$/
	if (obj.value != ""){
		test = reg.test(obj.value)
		if (!test) {
			obj.select()
			//obj.focus()
			return false
		}
		else {
			
			return true
		}	
	}
	else {
		return true
	}	
}

function editRow(id){

	document.getElementById(id).style.backgroundColor =  '#FFC06F'
	//document.getElementById(id).style.fontWeight = 'Bold'
}


function setRowColor(color, id){
	document.getElementById(id).style.backgroundColor =  color
}
function SelectedRow(color, id){
	setRowColor(color,id)
	document.getElementById(id).style.fontWeight = 'bold'
}
function MouseOverRow(color, id){
	if (color=='') color='#FFFF66';
	setRowColor(color,id)
//	document.getElementById(id).style.fontWeight = 'bold'
}
function ClearSelectionRow(tableID){
	var tbl = document.getElementById(tableID);
	n = tbl.rows.length;
	for (i=0;i<n;i++){
	
			tbl.rows[i].style.backgroundColor = 'white'
			//tbl.rows[i].style.fontWeight = 'normal'	
		
	}		
}

function toDatePickerDate(d){
	var myDate = new Date(d);
	dateString = myDate.getMonth()+1  +'/'+ myDate.getDate() + '/'+ myDate.getFullYear();
	return dateString;
}

function toNumber(str){
	var t = new String()
	t = str
	for (i = 1; i<t.length ; i++)
	t = t.replace(/,/,"")	
	return t
}
function toStandard(nStr, n)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	
	x2 = x.length > 1 ? '.' + x[1] : '.00';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	 
	return x1 + x2;
}


function jNZ(str){
	var t = toNumber(str)
	if (t=="") {
		t = 0
	}
	return t
}
function jsNZ(a){
	if ((a == "") || (a == null)) {
		return 0
	}
	else
		return toNumber(a)
}
function myPoint(iX, iY){
	this.x = iX;
	this.y = iY;
}

function myGetXY(aTag){
  var oTmp = aTag;
  var pt = new myPoint(0,0);
  do {
  	pt.x += oTmp.offsetLeft;
  	pt.y += oTmp.offsetTop;
  	oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");
  return pt;
}

function CheckInt(obj){
		
	if (obj.value !=""){	
		if (isNaN(obj.value)){
			alert("\""+ obj.value + "\" is invalid number!  Please try again\n")
			obj.select()
			return false
		}
		else {
			return true
		}	
	}
	else {
		return true
	}	

}
function ClearListBox(lst){
	for (var i = lst.options.length-1; i>=0; i --){
		lst.remove(i)
	}
}
function ClearListBoxById(lstId){
	var lst = document.getElementById(lstId)
	for (var i = lst.options.length-1; i>=0; i --){
		lst.remove(i)
	}
}
function searchListIndexByText(lstId, str){
	var lst = document.getElementById(lstId)
	var i
	var result = -1
	for (i = 0; i < lst.options.length; i++){
		if (str.toString() == lst.options[i].text.toString()){
			result = i
			break
		}
	}
	return result

}

function searchListIndexByValue(lstId, searchValue){
	var lst = document.getElementById(lstId)
	var i
	var result = -1
	for (i = 0; i < lst.options.length; i++){
		if (trim(searchValue.toString()) == trim(lst.options[i].value.toString())){
			result = i
			break
		}
	}
	return result
}

function selectListItemByText(lstId, searchValue){
	var t = searchListIndexByText(lstId, searchValue)	
	if (t > -1){
		document.getElementById(lstId).selectedIndex = t
	}
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
} 


function setCookie(sName, sValue, oExpires, sPath, sDomain, bSecure)
{
	var sCookie = sName + "=" + encodeURIComponent(sValue);

	if (oExpires) 
	{
		sCookie += "; expires=" + oExpires.toGMTString();
	}
	
	if (sPath) 
	{
		sCookie += "; path="+ sPath;
	}
	
	if (sDomain)
	{
		sCookie += "; domain="+ sDomain;
	}
	
	if (bSecure) 
	{
		sCookie += "; secure";
	}
	
	document.cookie = sCookie;
}
function getCookie(sName)
{
	
	var sRE = "(?:; )?"+ sName + "=([^;]*);?";
	var oRE = new RegExp(sRE);
	
	if (oRE.test(document.cookie)) 
	{
		return decodeURIComponent(RegExp["$1"]);
	}
	else 
	{
		return null;
	}
}
function iif(exp, true_value, false_value)
{
	if (exp) 
		return true_value
	else
		return false_value
}

function jsFormatNumber (num, decimal) {
	 //decimal  - the number of decimals after the digit from 0 to 3
//-- Returns the passed number as a string in the xxx,xxx.xx format.
	  

	 //anynum=eval(obj.value);

	  anynum = num
	   divider =10;
	   switch(decimal){
			case 0:
				divider =1;
				break;
			case 1:
				divider =10;
				break;
			case 2:
				divider =100;
				break;
			default:  	 //for 3 decimal places
				divider =1000;
		}

	   workNum=Math.abs((Math.round(anynum*divider)/divider));

	   workStr=""+workNum

	   if (workStr.indexOf(".")==-1){workStr+="."}

	   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
	   pStr=workStr.substr(workStr.indexOf("."))

	   while (pStr.length-1< decimal){pStr+="0"}

	   if(pStr =='.') pStr ='';

	   //--- Adds a comma in the thousands place.    
	   if (dNum>=1000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
	   }

	   //-- Adds a comma in the millions place.
	   if (dNum>=1000000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
	   }
	   retval = dStr + pStr
	   //-- Put numbers in parentheses if negative.
	   if (anynum<0) {retval="("+retval+")";}

	  
	//You could include a dollar sign in the return value.
	  //retval =  "$"+retval
	  
//	  obj.value = retval;
		return retval;

 }
 
 function jsSumRound(a, b, round)
 {
 		a = jsNZ(a)
 		b = jsNZ(b)

		var aValue = new Number(toNumber(a))
		var bValue = new Number(toNumber(b))
		
		aValue = aValue.toFixed(round)
		bValue =  bValue.toFixed(round)		
		var result = parseFloat(aValue) + parseFloat(bValue)
		return result

 }
function popup(url, w, h)
{

	left_pos = ((window.screen.width/2) - (w/2));
	top_pos = ((window.screen.height/2) - (h/2)) - 50;
	window.open(url,'','width='+  w +',height='+ h +',left='+ left_pos +',top='+ top_pos)
}

function jsToday()
{
	var d = new Date()
	var t = d.getMonth()+1 +"/"+ d.getDate() +"/"+ d.getFullYear()
	return t
}


function getFileExt(fileName)
{
	var str = new String()
	str = strRev(ById("file1").value)
	var n = str.indexOf(".",0)
	
	str = str.substr(0,n)
	str = strRev(str)
	
	return str
	
}

function strRev(str)
{
	var mystr = new String()
	var tmpStr = ""
	mystr= str
	
	for (i = mystr.length; i>=0; i--)
	{
		tmpStr += mystr.charAt(i)
	}
	return tmpStr
}