/*this function retrieves the value of a radio button on a given form*/
function getRadioValue(formname, radioname) {
	var radiobuttons = document[formname][radioname];
  
  	if (radiobuttons.length == undefined) {
            if (radiobuttons.checked) {
  		return radiobuttons.value
            }
  	} else  {
		for (i=0;i<radiobuttons.length;i++){
		    if (radiobuttons[i].checked) {
			      return radiobuttons[i].value;
		    }
		}
	}
}

/*this function retrieves the value of a radio button on a given form*/
function getRadioValueByForm(formObj, radioname) {
	var radiobuttons = formObj.elements[radioname];
  
  	if (radiobuttons.length == undefined) {
            if (radiobuttons.checked) {
  		return radiobuttons.value
            }
  	} else  {
		for (i=0;i<radiobuttons.length;i++){
		    if (radiobuttons[i].checked) {
			      return radiobuttons[i].value;
		    }
		}
	}
}

/*this function sets the value of a radio button on a given form*/
function setRadioValue(formname, radioname, radiovalue) {
  var radiobuttons = document[formname][radioname];

  if (radiobuttons) {
  for (i=0;i<radiobuttons.length;i++){
    var tmp = radiobuttons[i].value;
    if (tmp == radiovalue) {
      radiobuttons[i].checked = true;
    }
  }
  }
}

/**
* Be sure the the user has checked at least (1) checkbox.
*/
function hasSelectedCheckBoxes( objChkChildren ) {
	var blnIsSelected = false;

  if ( objChkChildren != null ) {
    if  ( objChkChildren.length != null ) {
      for (var i=0; i < objChkChildren.length;i++) {
				if (objChkChildren[i].checked) {
					blnIsSelected = true;
					break;
				}
      }
    } else {
      if ( objChkChildren.checked != null ) {
				blnIsSelected = objChkChildren.checked;
      }
    }
  }

	return blnIsSelected;
}
/*this function retrieves the value of a select list on a given form*/
function getSelectListValue(formname, selectname) {
  var theMenu = document.forms[formname].elements[selectname];
  var selecteditem = theMenu.selectedIndex;
  return theMenu.options[selecteditem].value;
}

/*this function sets the value of a select list on a given form*/
function setSelectListValue(formname, selectname, selectvalue) {
  var theMenu = document.forms[formname][selectname];
  for (i=0;i<theMenu.options.length;i++){
    var tmp = theMenu.options[i].value;
    if (tmp == selectvalue) {
      theMenu.selectedIndex = i;
    }
  }
}

// Unchecks/checks dependent check boxes based on parent select all check box.
function handleCheckBoxes(objChkChildren, objIsAllSelected) {

	if (objIsAllSelected == undefined) {
		return;
	}
	
	if ( objChkChildren !== undefined ) {
    	if  ( objChkChildren.length !== undefined ) {
      		for (var i=0; i < objChkChildren.length;i=i+1) {
      			objChkChildren[i].checked = objIsAllSelected.checked;
      		}
    	} else {
			objChkChildren.checked = objIsAllSelected.checked;
    	}
  	}

}

/* Creates a form */
function createForm(formAction) {

	var newForm = document.createElement("form");
    var currentBody = document.getElementsByTagName("body")[0];
    currentBody.appendChild(newForm);
    newForm.action=formAction;
    newForm.method="POST";
    return newForm;
    
}

/* Creates a hidden field on the given form */
function createHiddenFormField(documentObj, formObj, fieldName, fieldValue) {

    var hiddenInput = documentObj.createElement("input");
    hiddenInput.setAttribute('type','hidden');
	hiddenInput.setAttribute('name', fieldName);
	hiddenInput.setAttribute('value', fieldValue);
	formObj.appendChild(hiddenInput);
    
    //alert("New Form Field. Name:[" + fieldName + "], Value:[" + fieldValue + "]");
}

function removeSmartQuotes(value) {
    var sbuf = "";
    var len = value.length;
    for( var i = 0; i < len; i++ ) {
      var ch = value.charAt(i);
      
      var cc = value.charCodeAt(i);

      if (cc == 8220)
         sbuf += '"';
      else if (cc == 8221)
         sbuf += '"';
      else if (cc == 8216)
         sbuf += '\'';
      else if (cc == 8217)
         sbuf += '\'';
      else if (cc == 8211)
         sbuf += '-';
      else sbuf += ch;
    }
    return sbuf;
}

function replaceSpecialCharacters(value) {
	
	value = removeSmartQuotes(value);

    var sbuf = "";
    var len = value.length;
    for( var i = 0; i < len; i++ ) {
      var ch = value.charAt(i);
      
      var cc = value.charCodeAt(i);

      if (cc == 174)
		 sbuf += '&#174;';
      else sbuf += ch;
    }
    return sbuf;
}

function zeroPad(num,count) {
    var numZeropad = num + '';
    while(numZeropad.length < count) {
        numZeropad = "0" + numZeropad;
    }
    return numZeropad;
}

function formatNumber(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

/*
 * Executes the given function when the "enter" key is pressed.
 * Should be called onKeyUp of input field.
 */
function onKeyUpEnter(event, functionPointer) {
    var characterCode; //literal character code will be stored in this variable

    if(event && event.which){ //if which property of event object is supported (NN4)
        characterCode = event.which; //character code is contained in NN4's which property
    } else {
        characterCode = event.keyCode; //character code is contained in IE's keyCode property
    }

    if(characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
    	functionPointer()
    	return false;
    } else {
        return true;
    }
}

