// ### Disable radio buttons ###
// When passing radio object, use the format (document.forms['form_name'].elements['element_name']) for cross-platform compatibility.
function disableRadioButtons(radioObj) {

	if(!radioObj) return;
	
	var radioLength = radioObj.length;

	if(radioLength != undefined && radioLength > 0){
		for(var i = 0; i < radioLength; i++) {
			radioObj[i].disabled=true;
		}
	}
}

// ### Enable radio buttons ###
// When passing radio object, use the format (document.forms['form_name'].elements['element_name']) for cross-platform compatibility.
function enableRadioButtons(radioObj) {

	if(!radioObj) return;
	
	var radioLength = radioObj.length;

	if(radioLength != undefined && radioLength > 0){
		for(var i = 0; i < radioLength; i++) {
			radioObj[i].disabled=false;
		}
	}
}

// ### Get checked value of radio buttons ###
// When passing radio object, use the format (document.forms['form_name'].elements['element_name']) for cross-platform compatibility.
function getCheckedValue(radioObj) {

	if(!radioObj) return "";
	
	var radioLength = radioObj.length;

	if(radioLength == undefined)
		if(radioObj.checked){
	
			return radioObj.value;
		}else{
		return "";
	}
			
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
				return radioObj[i].value;
			}
		}
	return "";
}

// ### Set checked value to radio button ###
// When passing radio object, use the format (document.forms['form_name'].elements['element_name']) for cross-platform compatibility.
function setCheckedValue(radioObj, newValue) {
	
	if(!radioObj) return;
	
	var radioLength = radioObj.length;
	
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

// returns the array number of the selected radio button or -1 if no button is selected
function getSelectedRadio(buttonGroup) {
   
   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;
} 

// Check a single check box.
function selectSingleCheckBox(buttonName){
	button = getElement(buttonName);
	button.checked = true;
}

//### Check selected check boxes ###
function setSelectedCheckbox(fmName, fName, valList) {

	if(fName == "") return;
  	if(valList == "") return;
  	if(!getElement(fName)) return;
  
  	valList = valList.split(",");
  	chkBoxes = document.forms[fmName].elements[fName];

	if(chkBoxes[0]){
 		if(valList[0] != "" & chkBoxes[0] != ""){
			for(j = 0; j < chkBoxes.length; j++){
 				chkVal = trim(chkBoxes[j].value);

				for (i = 0; i < valList.length; i++){
		 			val = trim(valList[i]);

 					if(val == chkVal){			
 					 	chkBoxes[j].checked = true;
 					 	break;
					}else{
						chkBoxes[j].checked = false;
					}
				}
			}	
		}	
	}else{
		chkVal = chkBoxes.value;
		for (i = 0; i < valList.length; i++){
			val = trim(valList[i]);
 			if(val == chkVal){			
 			 	chkBoxes.checked = true;
 			 	break;
			}else{
				chkBoxes.checked = false;
			}
		}
	}	
}  

// Check a single check box.
function deselectSingleCheckBox(buttonName){
	button = getElement(buttonName);
	button.checked = false;
}

// Go through all the check boxes and check them all at once.
function selectAllCheckBox(buttonGroup){
	if(buttonGroup[0]){
		for (var i=0; i<buttonGroup.length; i++) {
         		buttonGroup[i].checked = true;
	       	}
	}else{
		buttonGroup.checked = true;
	}
}

// Go through all the check boxes and uncheck them all at once.
function deselectAllCheckBox(buttonGroup){
	if(buttonGroup[0]){
		for (var i=0; i<buttonGroup.length; i++) {
         		buttonGroup[i].checked = false;
	       	}
	}else{
		buttonGroup.checked = false;
	}	
}



// 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)
function getSelectedCheckbox(buttonGroup) {

   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 { 
      if (buttonGroup.checked) { 
         retArr.length = lastElement;
         retArr[lastElement] = 0; 
      }
   }
   return retArr;
} 

// Add items to a SELECT object.
// sObj: Select object
// opList: Two dimensional array
function addOptionsToSelect(sObj, opList){

	if(opList[0]){
		var curItemCount = sObj.options.length;

		for (j=0; j < opList.length; j++){
			op = opList[j].split(",");			
			if(op[0]){		
				sObj.options[curItemCount + j] = new Option(op[1],op[0]);		
			}    
		}				    		
	}	
}


// Go through select list. return an array of all the ones
// that are selected (their values). if no items were selected,
// returned array will be empty (length will be zero)
function getSelectedSelect(selectObj) {

   var retArr = new Array();
   var lastElement = 0;
   
   if (selectObj[0]) { 
      for (var i=0; i<selectObj.length; i++) {
         if (selectObj[i].selected) {
            retArr.length = lastElement;
            retArr[lastElement] = selectObj[i].value;
            lastElement++;
         }
      }
   } else { 
      if (selectObj.selected) { 
         retArr.length = lastElement;
         retArr[lastElement] = 0; 
      }
   }
   return retArr;
} 

//### Highlight selected list items ###
// Pass parameter "fObj" as document.forms['form_name'].elements['element_name']
function setSelectedListItems(fObj, vList){
	list = fObj.options;
	for(i = 0; i < list.length; i++){		
		val = list[i].value;
		index = vList.indexOf(val)
		if(index > -1){	
			lastIndex = i
			list[i].selected = true;
		}	
	}
}

// Select all items selected in a list.
function selectAllSelect(fName){

	if(fName == "") return;
		
	if(getElement(fName)){
		el = getElement(fName);
		if(el[0]){					
			for (var i=0; i < el.length; i++) {
  	   	 		el[i].selected = true;    	   	 		
     		}
      	}
	}
}

// Deselect all items selected in a list.
function deselectAllSelect(fName){

	if(fName == "") return;
		
	if(getElement(fName)){
		el = getElement(fName);
		if(el[0]){					
			for (var i=0; i < el.length; i++) {
  	   	 		el[i].selected = false;    	   	 		
     		}
      	}
	}
}

// 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)
function getSelectedCheckboxValue(buttonGroup) {
   
   var retArr = new Array(); 
   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;
}

// Extract file name from a full path.
function getFileNameFromFullPath(fullPath){
	
	fn = "";
	
	if(fullPath == "") return "";
	pos = fullPath.lastIndexOf("\\");
	if(pos == -1) return "";
	fn = fullPath.substr(pos + 1);
	
	return fn;	
}

// Extract file directory from a full path.
function getFileDirectoryFromFullPath(fullPath){
	
	fd = "";
	
	if(fullPath == "") return "";
	pos = fullPath.lastIndexOf("\\");
	if(pos == -1) return "";
	fd = fullPath.substr(0, pos);
	
	return fd;	
}

// Show a given element
function showField(fieldName){
	if(elementExists(fieldName)) document.getElementById(fieldName).style.display="block";	
}

// Hide a given element
function hideField(fieldName){
	if(elementExists(fieldName)) document.getElementById(fieldName).style.display="none";	
}

// Show or hide element
function showHideField(fName){

	if(fName == "") return;
	if(!getElement(fName)) return;
	
	display = getElement(fName).style.display;
	
	if(display == "none") getElement(fName).style.display = "block";
	if(display == "block") getElement(fName).style.display = "none";
}


// Disable a given element
function disableElement(elName){

	if(elName == "") return;
	
	elObj = document.getElementById(elName);
	if(elObj == undefined) return;

	elObj.disabled = true;
}

// Enable a given element
function enableElement(elName){

	if(elName == "") return;
	
	elObj = document.getElementById(elName);
	if(elObj == undefined) return;

	elObj.disabled = false;
}

// Get selected value from a given element(field)
function getValueFromElement(elName){

	var val = "-1";
	
	if(document.getElementById(elName)){
		val = document.getElementById(elName).value;
	}

	return val;
}

// Set a value to a given element(field)
function setValueToElement(elName, v){

//	if(v == "") return;	
	if (!elementExists(elName)) return;

	el = getElement(elName);
	
	if(el.type == "select-one"){		

		for(i=0; i < el.length; i++){

			vv = el[i].value;

			if(v == vv){
				el[i].selected = true;
				break;		
			} 				
		}				
	}else{
		el.value = v;
	}
}

// Check if a given field is blank
function isBlank(fName){

	if(fName == "") return true;
	if(getElement(fName)){
		val = trim(getValueFromElement(fName));	
	}

	if(val.length == 0){
		return true;	
	}else{
		return false;
	}	
}

// Determines if a given element exists
function elementExists(elName){
	if (document.getElementById(elName)) return true;
	else return false;
}

function getElement(elName){

	element = "";	

	if(document.getElementById(elName)){
		element = document.getElementById(elName);
	}

	return element;
}


// Trim white spaces on the right side of a string
function rTrim(sString){
	while (sString.substring(sString.length-1, sString.length) == ' '){
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// Get days in a given month & year
function getDaysInMonth(y, m){
	
	days = 0
	if(y != "" && m != ""){
		days = 32 - new Date(y, m - 1, 32).getDate();
	}	
	return days
}

// Remove options from a select object
function removeOptions(ojbName, ind){
	
	if(ojbName != ""){
		
		if(ind == "") ind = 0;
		
		if(document.getElementById(ojbName)){
			var sObj = document.getElementById(ojbName);			
			for(i = ind; i < sObj.options.length; i++){
				sObj.remove(i);	
			}				
		}
	}	
}

// ### Open popup window
function openPopupWin(url, winName, wWidth, wHeight){
	if(url != ""){ 
		properties = "width=" + wWidth + ",height=" + wHeight + ",scrollbars=yes,resizable=0,status=0,titlebar=0,toolbar=0"
		window.open(url, winName, properties);
	}
}


// Trim white spaces on the left side of a string
function lTrim(sString){
	while (sString.substring(0,1) == ' '){
		sString = sString.substring(1, sString.length);
	}
	return sString;
}

// Trim white spaces on both sides of a string
function trim(sString){
	sString = lTrim(sString);
	sString = rTrim(sString);	
	return sString;
}

// Set focus on a given field 
function setFocus(fName){
	if(fName != ""){
		if(document.getElementById(fName)){
			document.getElementById(fName).focus();				
		}			
	}	
}



