function show(object) {
    if (document.layers && document.layers[object] != null)
        document.layers[object].visibility = 'visible';
    else if (document.all)
        document.all[object].style.visibility = 'visible';
}
function hide(object) {
    if (document.layers && document.layers[object] != null)
        document.layers[object].visibility = 'hidden';
    else if (document.all)
        document.all[object].style.visibility = 'hidden';
}

function isObject(obj) {
	try{
		if (typeof(obj) == "undefined" || obj == null)  {
			return false;
		} else {
			return true;
		}
	}catch(error){
		return false;
	}
}

function isEmptyString(str) {
	if(str == null || trim(str) == ''){
		return true;
	}
	return false;
}

function isObjectFromString(obj) {
	try{
		if (typeof(eval(obj)) == "undefined" || eval(obj) == null)  {
			return false;
		} else {
			return true;
		}
	}catch(error){
		return false;
	}
}

function hideSelect()
{if (document.all){document.all.forms[0].style.visibility="hidden";}}

function unhideSelect()
{if (document.all){document.all.forms[0].style.visibility="visible";}}

var dlgWin;
function showDialogGeneric(link, wwidth, wheight, wstatus, wresizable, wscrollbars, wmenubar, wdirectories, wlocation, wscreenX, wscreenY, wtop, wleft, lurlargstopass) {	
	var scommon = 'status=' + wstatus + ',resizable=' + wresizable + ',scrollbars=' + wscrollbars + ',menubar=' + wmenubar + ',directories=' + wdirectories + ',location=' + wlocation;
	if(isObject(lurlargstopass)){
		for(i=0; i<lurlargstopass.length; i=i+2){
			if(isEmptyString(lurlargstopass[i+1])){
				link+=(lurlargstopass[i] + "=" + eval("document.forms[0]." + lurlargstopass[i] + ".value") + "&");
			}else{
				link+=(lurlargstopass[i+1] + "=" + eval("document.forms[0]." + lurlargstopass[i] + ".value") + "&");
			}
		}
	}
//	if(typeof(dlgWin) != "object"){
		try{
			dlgWin.close();
		} catch (e){
			// Do nothing because popupWin has not been opened
		}	
//	}	
	dlgWin = window.open(link, 'Dialog' + link.substring(0,5), scommon + ',top=' + wtop + ',left=' + wleft + ',width=' + wwidth + ',height=' + wheight);
	dlgWin.focus();
}
function closeDlgWin(){
	try{
			dlgWin.close();
	} catch (e){
		// Do nothing because popupWin has not been opened
	}	
}

	function updateDVFArray(obj, objtoset){
        var note = window.document.forms[0];
        var sep = '|';
		var arr = objtoset.value.split(sep);
		var tempstr;
		var found = false;
		
		if(obj.checked == true){			
			objtoset.value = objtoset.value + obj.value + sep;
		}else{
		    objtoset.value = ''; 
			for (index = 0; index < arr.length; index++) {
				if(arr[index] != '' && arr[index] != obj.value){
					/*arr.splice(i,index);
					index--;*/
					objtoset.value = objtoset.value + arr[index] + sep;
				}
			}		
		}
	}
	
	function updateDVFArrayVal(val, objtoset, mode){
        var note = window.document.forms[0];
        var sep = '|';
		var arr = objtoset.value.split(sep);
		var tempstr;
		var found = false;
		
		if(mode == 1){			
			objtoset.value = objtoset.value + val + sep;
		}else{
		    objtoset.value = ''; 
			for (index = 0; index < arr.length; index++) {
				if(arr[index] != '' && arr[index] != val){
					/*arr.splice(i,index);
					index--;*/
					objtoset.value = objtoset.value + arr[index] + sep;
				}
			}		
		}
	}	

	function updateSVF(obj, objtoset){
        var note = window.document.forms[0];
        var sep = '|';
		if(obj.checked == true){			
			objtoset.value = obj.value;
		}
	}
		
	function updateDVFArrayWId(obj, objtoset){
        var note = window.document.forms[0];
        var sep = '|';
		var arr = objtoset.value.split(sep);
		var tempstr;
		var found = false;
		
		if(obj.checked == true){			
			objtoset.value = objtoset.value + obj.id + sep;
		}else{
		    objtoset.value = ''; 
			for (index = 0; index < arr.length; index++) {
				if(arr[index] != '' && arr[index] != obj.id){
					/*arr.splice(i,index);
					index--;*/
					objtoset.value = objtoset.value + arr[index] + sep;
				}
			}		
		}
	}		
	
	function updateDVFArrayAll(obj) {
        var note = window.document.forms[0];
        var sep = '|';
        var newstr = '';
        for (index = 0; index < obj.length; index++) {
        	if(obj.options[index].value == '')continue;
			newstr = newstr + obj.options[index].value + sep;
        }
        return newstr;
	}
	
	function showBusy(){
		try
		{
			document.getElementById("overlaybase").style.display = "block";
			makeDropDownsReadOnly();
		} catch (e)
		{
			// ignore - usually "not defined"
		}
		
		document.all.pleasewaitScreen.style.pixelTop = (document.body.scrollTop + 200);
		document.all.pleasewaitScreen.style.visibility="visible";	
	}
	
	function onLoadPage(lastscrolltop){
		document.body.scrollTop=lastscrolltop;
	}
	
	function setLastScrollTop(){
		document.forms[0].lastscrolltop.value=document.body.scrollTop;
	}
	
	function getSelectedDD(buttonGroup) {
		for (var i = 0; i < buttonGroup.length; i++) {
			if (buttonGroup[i].selected) {
				return i;
			}
		}
		return -1;
	}

	function isNumeric(sText){
   		var ValidChars = "0123456789.";
   		var IsNumber=true;
   		var Char;
 
   		for (i = 0; i < sText.length && IsNumber == true; i++){ 
	    	Char = sText.charAt(i); 
      		if (ValidChars.indexOf(Char) == -1){
		    	IsNumber = false;
         	}
      	}
   		return IsNumber;   
    }
    
	function doNavigate(actionpass, redirecturlval, actionval){
		document.forms[0].actionval.value = actionval;
		document.forms[0].action = actionpass;
		document.forms[0].redirecturl.value = redirecturlval;
//		alert(actionpass +" - " + redirecturlval + " - "+actionval); 
		document.forms[0].submit();
	}   
	
	function switchDivMenuStyle(obj1, obj2, innerHTMLTextCollapse, innerHTMLTextExpand) {
		var el = document.getElementById(obj1);
		var e2 = document.getElementById(obj2);
		if ( el.style.display != "none" ) {
			el.style.display = 'none';
			e2.innerHTML = innerHTMLTextCollapse;
		}else{
			el.style.display = '';
			e2.innerHTML = innerHTMLTextExpand;
		}
	}
	
	function manageExpand(obj1, obj2, tracker) {
		var el = document.getElementById(obj1);
		var e2 = document.getElementById(obj2);
		if ( el.style.display == "none" ) {
			updateDVFArrayVal(obj1, tracker, -1);
		}else{
			updateDVFArrayVal(obj1, tracker, 1);
		}
	}		
	
	function disableEnableLinks(xHow){
	  objLinks = document.links;
	  for(i=0;i<objLinks.length;i++){
	    objLinks[i].disabled = xHow;
	    //link with onclick
	    if(objLinks[i].onclick && xHow){  
	        objLinks[i].onclick = new Function("return false;" + objLinks[i].onclick.toString().getFuncBody());
	    }
	    //link without onclick
	    else if(xHow){  
	      objLinks[i].onclick = function(){return false;}
	    }
	    //remove return false with link without onclick
	    else if(!xHow && objLinks[i].onclick && objLinks[i].onclick.toString().indexOf("function(){return false;}") != -1){            
	      objLinks[i].onclick = null;
	    }
	    //remove return false link with onclick
	    else if(!xHow && objLinks[i].onclick && objLinks[i].onclick.toString().indexOf("return false;") != -1){  
	      strClick = objLinks[i].onclick.toString().getFuncBody().replace("return false;","")
	      objLinks[i].onclick = new Function(strClick);
	    }
	  }  
	  
	  if(xHow){
		  for (var i = 0; i < document.forms[0].elements.length; i++){
			//document.forms[0].elements[i].onfocus = function(){blur();return false;};
			document.forms[0].elements[i].onfocus = function(){return false;};
		  }	  
	  }
	}
	
	String.prototype.getFuncBody = function(){ 
	  var str=this.toString(); 
	  str=str.replace(/[^{]+{/,"");
	  str=str.substring(0,str.length-1);   
	  str = str.replace(/\n/gi,"");
	  //if(!str.match(/\(.*\)/gi))str += ")";
	  return str; 
	}
	
function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function

// getSelectedDD - find out which item is selected, reutnrs a number; for drop-down
function getSelectedDD(buttonGroup) {
	for (var i = 0; i < buttonGroup.length; i++) {
		if (buttonGroup[i].selected) {
			return i;
		}
	}
	return -1;
}

// getIndexDD - Find out which number an entry is on a drop down list
function getIndexDD(buttonGroup, newVal) {
	if (isObject(buttonGroup)) {
		for (var i = 0; i < buttonGroup.length; i++) {
			if (buttonGroup.options[i].value == newVal) {
				return i;
			}
		}
	}
	return -1;
}

// getSelected - find out which item is selected, returns a number; For radio button
//		>> use getSelectedRadio instead.
function getSelected(buttonGroup) {
	getSelectedRadio(buttonGroup);
}

//clearChecked - clear all options that have been checked
function clearChecked(buttonGroup) {
	for (var i = 0; i < buttonGroup.length; i++) {
		buttonGroup[i].checked = false;
	}
}

//setChecked - mark radio button / checkbox with specified value
function setChecked(buttonGroup, newVal) {
	for (var i = 0; i < buttonGroup.length; i++) {
		if (buttonGroup[i].value == newVal) {
			buttonGroup[i].checked = true;
		}
	}
}

//setCheckedMulti - mark radio button / checkbox with specified values
function setCheckedMulti(buttonGroup, newVals, sep) {
	for (var i = 0; i < buttonGroup.length; i++) {
		if (isOnList(newVals, buttonGroup[i].value, sep)) {
			buttonGroup[i].checked = true;
		}
	}
}

//clearSelectedDD - clear all values from drop-down
function clearSelectedDD(buttonGroup) {
	for (var i = 0; i < buttonGroup.length; i++) {
		buttonGroup[i].selected = false;
	}
}

//setSelectedDD - set specified value on drop down
function setSelectedDD(buttonGroup, newVal) {
	var index = getIndexDD(buttonGroup, newVal);
	if (index > -1) {
		buttonGroup.options[index].selected = true;
	}
}

//setSelectedDD - set specified value on drop down
function populateDDFromJSON(buttonGroup, obj, selectedvalue) {
	buttonGroup.options.length = obj.length;
	for(var i=0; i<obj.length; i++){
		buttonGroup.options[i].text = obj[i]["" + (i+1)];	
		buttonGroup.options[i].value = (i+1);
		if(buttonGroup.options[i].value == selectedvalue){
			buttonGroup.options[i].selected = true;
		}
	}
}

//setSelectedDDMulti - set specified values on drop down
function setSelectedDDMulti(buttonGroup, newVals, sep) {
	tmparr = newVals.split(sep);
	for (var i = 0; i < tmparr.length; i++) {
		setSelectedDD(buttonGroup, tmparr[i]);
	}
}

//Concatenates multi-valued fields into single valued field (drop-downs)
function updateDVFArray(obj, objtoset) {
        var note = window.document.forms[0];
        var sep = '|';
        var newstr = '';
        for (index = 0; index < obj.length; index++) {
        		if(obj[index].checked != undefined && obj[index].checked){			
                   newstr = newstr + obj[index].value + sep;
                }else if(obj[index].selected != undefined && obj[index].selected){
                   newstr = newstr + obj.options[index].value + sep;
                }
        }
        objtoset.value = newstr;        
}

//Concatenates multi-valued fields into single valued field (drop-downs)
function updateDVFArrayAll(obj, objtoset) {
        var note = window.document.forms[0];
        var sep = '|';
        var newstr = '';
        for (index = 0; index < obj.length; index++) {
			newstr = newstr + obj.options[index].value + sep;
        }
        objtoset.value = newstr;        
}

//Concatenates multi-valued fields into single valued field (radio buttons)
function updateDVFArrayRadio(obj, objtoset) {
        var note = window.document.forms[0];
        var sep = '|';
        var newstr = '';
        for (index = 0; index < obj.length; index++) {
                if(obj[index].checked == true){
                        newstr = newstr + obj[index].value + sep;
                }
        }
        objtoset.value = newstr;        
}	

function regextest(pattern, containedstring, ignorecase){
	var regex;
	if(ignorecase){
		regex = new RegExp(pattern, 'i');
	}else{
		regex = new RegExp(pattern);	
	}
	return regex.test(containedstring);
}	

function trim(str){
   if(str == undefined)return '';	
   return str.replace(/^\s*|\s*$/g,"");
}

function setHRef(id, url) {
	var obj = document.getElementById(id);
	
	if (obj != null) {
		obj.href = url;
	}
}

function stringToNumber(val){
	if(isNumeric(val) == true){
		return parseInt(val);
	}else{
		return parseInt("0");
	}
	
}

function checkPrecision(value,min,max) { 
  var re = new RegExp("^-?\\d+\\.\\d{" + min + "," + max + "}?$");
  return re.test(value);
}
