AC_ADD = 1;
AC_EDIT = 2;
AC_DELETE = 3;
AC_SAVE = 4;
AC_CANCEL = 5;
AC_SAMEPAGE = 6;
AC_YES = 7;
AC_NO = 8;
AC_GO = 9;
AC_CHANGE = 10;
AC_SAVE_AND_CONTINUE = 11
AC_SAVE_AND_RETURN = 12


function setBGround(id, img){
	if(document.layers){FindObj(id).background.src = img;}
	else if(document.all){FindObj(id).background = img;}
}

function FindObj(n, d) {
  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=FindObj(n,d.layers[i].document);  
  //if(parseInt(navigator.appVersion) >= 5){x=document.getElementsByTagID(n); }
  //if(parseInt(navigator.appVersion) >= 5){x=document.getElementById(n); }
  return x;  
}

function replacepage(page){
	window.location.replace(page); 
}

function replaceToppage(page){
	var oW = window;
	while(oW!=oW.parent)oW=oW.parent;
	oW.location.replace(page); 
}

function replaceFramePage(frameName, page){
	var oW = window;
	while(oW != oW.parent)oW=oW.parent;
	getWinObj(oW, frameName).location.replace(page);
}

function getWinObj(oTopW, name){
	var ow;
	if(oTopW.frames){
		ow = oTopW.frames[name];
		for(var i=0; !ow && i<oTopW.frames.length; i++){ow = getWinObj(oTopW.frames[i], name);}
	}
	return ow;
}

function setFocus(txtName){
	FindObj(txtName).focus();
}

function lTrim(toBeLTrimmed) {
	var unWantedChars = new String(" \n\r\t");
	var str = new String(toBeLTrimmed);
	if (unWantedChars.indexOf(str.charAt(0)) != -1) {
		var i=0, nLen = str.length;
		while (i < nLen && unWantedChars.indexOf(str.charAt(i)) != -1)
			i++;
		str = str.substring(i, nLen);
	}
	return str;
}

function rTrim(toBeRTrimmed) {
	var unWantedChars = new String(" \n\r\t");
	var str = new String(toBeRTrimmed);
	var nLen = str.length;	
	if (unWantedChars.indexOf(str.charAt(nLen)) != -1) {
		var i=nLen-1;
		while (i>0 && unWantedChars.indexOf(str.charAt(i)) !=-1)
			i--; str = str.substring(0,++i);
	}
	return str;
}

function trim(toBeRTrimmed) {
	return lTrim(rTrim(toBeRTrimmed));
}

function JIsDate(strDate){
	var arr = strDate.split("/");
	var sep = "/";
	if (arr.length != 3) {
		arr = strDate.split("-");
		sep = "-";
	}
	if (arr.length == 1) {
		if (strDate.length == 6 || strDate.length == 8) {
			return JIsDate(strDate.substring(0,2)+"/"+strDate.substring(2,4)+"/"+strDate.substring(4));
		} else if (strDate.length == 5 || strDate.length == 7) {
			return JIsDate(strDate.substring(0,1)+"/"+strDate.substring(1,3)+"/"+strDate.substring(3));
		} else {return ""; }
	} else if (arr.length == 3) {
		var theDate = new Date(strDate);
		if (isNaN(theDate)) return "";
		if (arr[2].length == 2) {// Convert years '00', '01' to '2000', '2001'				
			var tmpDate = new Date(strDate);
			tmpDate.setFullYear(tmpDate.getFullYear()+100);
			if (tmpDate <= (new Date())) {
				theDate = tmpDate;
			}
		}
		var iMon = parseInt(arr[0], 10);
		var iDay = parseInt(arr[1], 10);
		var iYear = parseInt(arr[2], 10);
		var strDay = theDate.getDate();
		var strMon = parseInt(theDate.getMonth()) + 1;
		var strYear = theDate.getFullYear();
		if (iMon != strMon || iDay != strDay || ((iYear != strYear) && (iYear != strYear - 1900) && (iYear != strYear - 2000)))	{ 
			return ""; 
		} else { 
			return theDate; 
		}
	}
}

function ConvertDateToString(oDate) {
	return (oDate==null) ? "" : (oDate.getMonth()+1) + "/" + oDate.getDate() + "/" + oDate.getFullYear();
}

function RoundDouble(num, digits) {
	if (isNaN(digits)) digits = 0;
	var base = Math.pow(10,digits);
	return Math.round(num * base) / base;
}

function FormatDouble(num, digits) {
	var strAmt = parseFloat(num).toString();
	var dot = strAmt.indexOf(".");
	if (dot < 0) dot = strAmt.length;
	if (isNaN(digits)) digits = 0;
	if (dot==0) {
		strAmt = "0" + strAmt;
		dot = 1;
	}
	if (dot+digits+1 < strAmt.length) {
		strAmt = strAmt.substring(0,dot+digits+1);
	} else {
		if (digits > 0) {	
			if (dot==strAmt.length) strAmt += ".";
			for (var i=strAmt.length; i<=dot+digits;i++) strAmt += "0";
		} else {
			strAmt = strAmt.substring(0,dot);
		}
	}
	var arr = new Array();
	var pos=dot%3, count=0;
	if (pos) {
		arr[count] = strAmt.substring(0,pos);
		count++;
	}
	for (; pos<dot; pos+=3,count++) {
		arr[count] = strAmt.substring(pos,pos+3); 
	}
	return arr.join(",")+strAmt.substring(dot);
}

function isInList(list, value) {
    for (var ptr = 0; ptr < list.length; ptr++){
        if (value == list[ptr][0]) {
            return ptr;
        }
    }
    return -1;
}


function NullZero(lValue) {
	if (isNaN(lValue)) {
		return 0;
	} else {
		return lValue;
	}
}

function selectItemFromList(oList, value){
  var index = getElmIndexInList(oList, value);
  SelectListItem(oList, index);
}

function SelectListItem(oList, index){
  var opt;
  if (index >= 0){
    opt = oList.options[index];
    if(! opt.selected){
      opt.selected = true;
    }
  }
}

function getElmIndexInList(oList, value){
  var i, leng = oList.length;
  for( i=0; i<leng; i++){
    if (new String(value).toUpperCase() == new String(oList.options[i].value).toUpperCase()) {
       return i;
    }
  }
  return -1;
}

function addToListWArray(oList,value_text_pair_array){
  var leng = value_text_pair_array.length;
  var i, j = oList.length;
  if(leng != null && leng > 0){
    oList.length = j + leng;
    for(i=0; i<leng; i++, j++){
      setListItemVal(oList,j, value_text_pair_array[i][0]);
      setListItemText(oList,j,value_text_pair_array[i][1]);
    }
  }
}

function setListItemVal(oList, index, value){
  if(oList != null && !(isNaN(index))&& parseInt(index)>=0 && parseInt(index)<=(oList.length-1)){
    oList.options[index].value = value;
  }
}

function setListItemText(oList, index, value){
  if(oList != null && !(isNaN(index))&& parseInt(index)>=0 && parseInt(index)<=(oList.length-1)){
    oList.options[index].text = value;
  }
}

function PopulateList(oList, arr){
  oList.length = 0;
  addToListWArray(oList, arr);
}

//lbound is the value for the listbox's starting index.
//If the list's first item is not valid data, use 1 as lbound, otherwise, use 0
function AssertSelection(fldName, txtFldDesc, lbound) {
	var oFld, index, i;
	
	oFld = FindObj(fldName);
	
    switch (oFld.type){
		case "select-one":
		case "select-multiple":
		case "select":
			if(oFld.selectedIndex < lbound ){
				alert("Please select a value for the " + txtFldDesc );
				oFld.focus();
				return false;
			}
			break;
		case "radio":
			for (i = 0; i < oFld.length; i++) {
				if (oFld[i].checked)
					return true;
			}
			alert("Please make a selection for the " + txtFldDesc);
			oFld[0].focus();
			return false;
		case "checkbox":
			if(!oFld.checked) {
				alert("Please check the " + txtFldDesc);
				oFld.focus();
				return false;
			}
			break;
	}
	return true;
}

function AssertNonEmpty(fldName, txtFldDesc) {
	var oFld, strValue;
	
	oFld = FindObj(fldName);
	strValue = trim(oFld.value);
	if (strValue.length <= 0) {
		alert(txtFldDesc + " must be entered.")
		if ( oFld.type != 'hidden' ){
			oFld.focus();
		}
		return false;
	}
	return true;	
}

function SynchTextBoxes(MasterTextBoxName, CopyTextBoxName, blnOnlyWhenEmpty)
{
	var value1, value2;
	value1 = MasterTextBoxName.value;
	value2 = CopyTextBoxName.value;
	
	if (value2 != "" && blnOnlyWhenEmpty == true) return;
	
	CopyTextBoxName.value = value1;
}

function SynchCombos(MasterCombo, CopyCombo, iValidIndexBase, blnOnlyWhenEmpty)
{
	var index1, index2;
	
	index1 = MasterCombo.selectedIndex;
	index2 = CopyCombo.selectedIndex;
	
	if (index2 >= iValidIndexBase && blnOnlyWhenEmpty == true) return;
	
	CopyCombo.selectedIndex = index1;
}

function SelectComboItem(formname,strComboName,Value)
{
	var ComboName = String(strComboName)
	var lc = 0;
	var frmcnt;
	
	frmcnt = document.forms.length
	if (document.forms[formname].elements[ComboName])
	{
		var max = document.forms[formname].elements[ComboName].length;
		if (max > 0)
		{
			for (lc=0;lc<max;lc++)
			{
				if (document.forms[formname].elements[ComboName][lc].value == Value)
					{
						document.forms[formname].elements[ComboName][lc].selected = true;
						return;
					}	
			}
		}
	}
}

function SelectListItems(formname,strListName,arrValues)
{
	var ListName = String(strListName)
	var lc = 0;
	var lc1 = 0;
	var arrLength = arrValues.length;
	var frmcnt;
	
	frmcnt = document.forms.length
	if (document.forms[formname].elements[ListName])
	{
		var max = document.forms[formname].elements[ListName].length;
		if (max > 0)
		{
			for (lc=0;lc<max;lc++)
			{
				for (lc1=0;lc1<arrLength;lc1++)
				{
					if (document.forms[formname].elements[ListName][lc].value == arrValues[lc1])
						{
							document.forms[formname].elements[ListName][lc].selected = true;
						}	
				}
			}
		}
	}
}
function SelectRadioButton(formname,strRadioName,Value)
{
	var RadioName = String(strRadioName)
	var lc = 0;
	var frmcnt;
	
	frmcnt = document.forms.length
	if (document.forms[formname].elements[RadioName])
	{
		var max = document.forms[formname].elements[RadioName].length;
		if (max > 0)
		{
			for (lc=0;lc<max;lc++)
			{
				if (document.forms[formname].elements[RadioName][lc].value == Value)
					{
						document.forms[formname].elements[RadioName][lc].checked = true;
						return;
					}	
			}
		}
	}

}

function SelectCheckBoxes(formname,strCheckBoxName,arrValues)
{
	var ChkBoxName = String(strCheckBoxName)
	var lc = 0;
	var lc1 = 0;
	var arrLength = arrValues.length;
	var frmcnt;
	
	frmcnt = document.forms.length
	if (document.forms[formname].elements[ChkBoxName])
	{
		var max = document.forms[formname].elements[ChkBoxName].length;
		if (max > 0)
		{
			for (lc=0;lc<max;lc++)
			{
				for (lc1=0;lc1<arrLength;lc1++)
				{
					if (document.forms[formname].elements[ChkBoxName][lc].value == arrValues[lc1])
						{
							document.forms[formname].elements[ChkBoxName][lc].checked = true;
							return;
						}	
				}
			}
		}
	}
}

function GetOptValue(oFld) {
	var i;
	for(i = 0; i < oFld.length; i++) {
		if (oFld[i].checked)
			return oFld[i].value;
	}
	return -1;
}

function showObject(obj) {
	if (document.layers) obj.visibility = "show";
	else if (document.all) obj.visibility = "visible";
}

function hideObject(obj) {
	if (document.layers) obj.visibility = "hide";
	else if (document.all) obj.visibility = "hidden";
}

// 11/5/03 changed logic, it used to just look at last char, now it looks at all of them
//		   used to keep looking after it found an invalid char and therefore might
//		   reset HasAlpha flag which was being set opposite ie true if had an invalid char
function hasAlphaNumeric( testStr ) {
	var blnHasAlpha = true
	var okChars = new String("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 './\&-");
	var str = new String(testStr);
	var nLen = str.length;	
			
	var i;
			
	for ( i=0; i<nLen && blnHasAlpha; i++ )
	{
		blnHasAlpha = ( okChars.indexOf(str.charAt(i)) >=0 )
		if ( str.charAt(i) == '-' && i!= (nLen-1) && str.charAt(i+1) == '-' )
			blnHasAlpha = false;
	}
			
	return blnHasAlpha;
}

// Similar to AssertSelection but does not display alert
//	 so it can be re-used in more complex logic than just single field validation
// Returns true if a valid selection is made, false otherwise
function IsSelected(fldName, lbound) {
	var oFld, index, i;
		oFld = FindObj(fldName);

	if ( typeof oFld == 'undefined' )
		return false;
		
    switch (oFld.type){
		case "select-one":
		case "select-multiple":
		case "select":
			if(oFld.selectedIndex < lbound ){
				return false;
			}
			break;
		case "radio":
			for (i = 0; i < oFld.length; i++) {
				if (oFld[i].checked)
					return true;
			}
			return false;
		case "checkbox":
			if(!oFld.checked) {
				return false;
			}
			break;
	}
	return true;
}

// Similar to AssertNonEmpty but does not display alert
//	 so it can be re-used in more complex logic than just single field validation
// Returns true if a valid selection is made, false otherwise

function IsSomething(fldName ) {
	var oFld, strValue;
	
	oFld = FindObj(fldName);
	if ( typeof oFld == 'undefined' )
		return false;

	strValue = trim(oFld.value);
	if (strValue.length <= 0) {
		return false;
	}
	return true;	
}

