ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

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

function getSelectedCheckboxValue(id,checked) {
  var tblEl = getElement(id);
  var inputs = tblEl.getElementsByTagName("INPUT");
  var l = inputs.length;
  for (var i = 0; i < l; i++) {
	inputs[i].checked = checked; //(checked?false,true);
  }
}


//Simple Cross-Browser getElement Function
function getElement(psID) {
	if(document.all) {
		return document.all[psID];
	} else {
		return document.getElementById(psID);
	}
}


function getSelectedOption(field)
{
  var index = field.selectedIndex;

  if (index < 0)
  {
	return "";
  }
  else
  {
	  var selectOpt = field.options[index].value;
	  return selectOpt;
  }
}


function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		result = false;
    }
	
	return result;
}

function validJQRequired( obj, fieldLabel)
{
	var result = true;

	if (obj.val() == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
        obj.focus();
        result = false;
	}

	return result;
}

function validJQDateRange( fromMth, fromYear, toMth, toYear )
{
    var jFromYear = fromYear.val();
    var jFromMth = parseInt(fromMth.val() - 1);
    var jToYear = toYear.val();
    var jToMth = parseInt(toMth.val() - 1);
    var fromDate = new Date(jFromYear, jFromMth, 1)
    var toDate = new Date(jToYear, jToMth, 1)
    if (toDate < fromDate)
    {
        alert("From date cannot be greater than to date");
        return false;
    }
    return true;
}

function validListBoxRequired(formField,fieldLabel)
{
	var result = true;
	var getstr = "";

	for(j=0;j<formField.options.length;j++)
       {
           if(formField.options[j].selected == true)
           {
                getstr += formField.name + "=" + escape(formField.options[j].value) + "&";
           }
       }

	if (getstr == "")
	{
		alert('Please select a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}

	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function allDoubleDigits(str)
{
	return inValidCharSet(str,"0123456789.");
}

function validCurrency(formField,fieldLabel)
{
    result = RegExp(/^-?\$?[0-9\,]+(\.\d{2})?$/).test(String(formField.value).replace(/^\s+|\s+$/g, ""));

    if(result==false){
	    alert('Please enter a valid currency for the "' + fieldLabel +'" field.');
		formField.focus();
	}

	return result;
}

function formatCurrency(str){
    str = str.replace("$","");
    str = str.replace(/,/g,"");
    return str
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;

	if (formField.value.length>0 && ((formField.value.length<3) || !isEmailAddr(formField.value)))
	{
		alert("Please enter a complete email address for the '" + fieldLabel + "' field: yourname@yourdomain.com");
	  result = false;
	}
	else if (required && !validRequired(formField,fieldLabel))
	{
		result = false;
	}

  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (formField.value.length>0 && !allDigits(formField.value))
	{
		alert('Please enter a number for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	else if (required && !validRequired(formField,fieldLabel))
	{
		result = false;
	}

  return result;
}

function validDouble(formField,fieldLabel,required)
{
	var result = true;

	if (formField.value.length>0 && !allDoubleDigits(formField.value))
	{
		alert('Please enter a number for the "' + fieldLabel +'" field.');
		result = false;
	}
	else if (required && !validRequired(formField,fieldLabel))
	{
		result = false;
	}

  return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validMinLength(formField,fieldLabel,len)
{
	if (formField.value.length<len)
	{
		alert('Please enter at least ' + len + ' character for the "' + fieldLabel +'" field.');
		formField.focus();		
		return false;
	}
	return true;
}

function validMaxLength(formField,fieldLabel,len)
{
	if (formField.value.length>len)
	{
		alert('Please enter at most ' + len + ' character for the "' + fieldLabel +'" field.');
		formField.focus();		
		return false;
	}
	return true;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components

 		var lens = trim(formField.value).length;

 		result = (lens == 10);
 		
 		if (result)
 		{
 			var day = parseInt(elems[0],10);
  	        var month = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format DD/MM/YYYY for the "' + fieldLabel +'" field.');
		}
	} 
	
	return result;
}

function validYear(formField,fieldLabel)
{
    var result = true;

	if (formField.value == "")
	{
		alert('Please enter a year for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}else if(formField.value != ""){
	     if(!validNum(formField,fieldLabel,true)){
	         formField.focus();
             result = false;
	     }
	     else{
	        if(formField.value.length != 4){
	            alert('Please enter a valid year for the "' + fieldLabel +'" field.');
                formField.focus();
                result = false;
	        }
	     }
	}
	return result;
}

function validRadioClicked(buttonGroup,buttonLabel) {
    // 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 true
            }
        }
    } else {
        if (buttonGroup.checked) { return true; } // if the one button is checked, return true
    }

    if (typeof buttonLabel != 'undefined') {
        alert('Please select an option in the "' + buttonLabel +'" field.');
    }
   return false;
}

function validfile(path,file) {
    var result = false;
    var theStr = new String(path.value.toUpperCase());
    var index = theStr.indexOf(file.toUpperCase());
    if (index > 0)
    {
	    result = true;
    }
    return result;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


function toogleVisible(id)
{
    var element = document.getElementById(id);
    var style = element.style;
    style.display='';
}

function toogleHidden(id)
{
    var element = document.getElementById(id);
    var style = element.style;
    style.display='none';
}

function toogleExpend(id)
{
    var element = document.getElementById(id);
    var style = element.style;
    style.display='';
}

function toogleCollapse(id)
{
    var element = document.getElementById(id);
    var style = element.style;
    style.display='none';
}


function submitenter(myfield,e)
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13)
    {
        myfield.form.submit();
        return false;
    }
   else
    {
        return true;
    }
}


function beginDrag(elementToDrag, event){
	var deltaX = event.clientX - parseInt(elementToDrag.style.left);
	var deltaY = event.clientY - parseInt(elementToDrag.style.top);
	if (document.addEventListener){
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", upHandler, true);
	}
	else if (document.attachEvent){
		document.attachEvent("onmousemove", moveHandler);
		document.attachEvent("onmouseup", upHandler);
	}
	else {
		var oldmovehandler = document.onmousemove;
		var olduphandler = document.onmouseup;
		document.onmousemove = moveHandler;
		document.onmouseup = upHandler;
	}
	if (event.stopPropagation) event.stopPropagation();
	else event.cancelBubble = true;
	if (event.preventDefault) event.preventDefault();
	else event.returnValue = false;
	function moveHandler(e){
		if (!e) e = window.event;
		elementToDrag.style.left = (e.clientX - deltaX) + "px";
		elementToDrag.style.top = (e.clientY - deltaY) + "px";
		if (e.stopPropagation) e.stopPropagation();
		else e.cancelBubble = true;
	}
	function upHandler(e){
		if (!e) e = window.event;
		if (document.removeEventListener){
			document.removeEventListener("mouseup", upHandler, true);
			document.removeEventListener("mousemove", moveHandler, true);
		}
		else if (document.detachEvent){
			document.detachEvent("onmouseup", upHandler);
			document.detachEvent("onmousemove", moveHandler);
		}
		else {
			document.onmouseup = olduphandler;
			document.onmousemove = oldmovehandler;
		}
		if (e.stopPropagation) e.stopPropagation();
		else e.cancelBubble = true;
	}
}


function LimitText(fieldObj,maxChars)
{
    var result = true;
    if (fieldObj.value.length >= maxChars)
        result = false;
    if (window.event)
        window.event.returnValue = result;

    return result;
}

//For select/unselect all options in checkbox
//targetChkBox - The name of checkboxs to be selected/unselected
//checkAll - The 'SelectAll' checkbox name
function toogleCheckAll(targetChkBox, checkAll)
{
    var obj = document.getElementsByName(targetChkBox);
    var src = document.getElementById(checkAll);

    if (isArray(obj))
    {
        for (var i=0; i<obj.length; i++)
        {
            if (src.checked)
            {
                obj[i].checked=true;
            } else {
                obj[i].checked=false;
            }
        }
    }
    else
    {
        if (src.checked)
            obj.checked=true;
        else
            obj.checked=false;
    }
}


function isAnyChecked(chkBox)
{
    var obj = document.getElementsByName(chkBox);

    if (isArray(obj))
    {
        for (var i=0; i<obj.length; i++)
        {
            if (obj[i].checked)
                return true;
        }
    }
    else
    {
        if (obj.checked)
            return true;
    }

    return false;
}

function countChecked(chkBox) {
    var count = 0;
    var obj = document.getElementsByName(chkBox);

    if (isArray(obj))
    {
        var count = 0;
        for (var i=0; i<obj.length; i++)
        {
            if (obj[i].checked)
                count++;
        }
        return count;
    }
    else
    {
        if (obj.checked)
            return 1;

        return 0;
    }
}


function getCheckboxQueryStr(chkBox)
{
    var obj = document.getElementsByName(chkBox);
    var url = "";
    if (isArray(obj))
    {
        for(var i=0; i<obj.length; i++){
            if (obj[i].checked) {
                url = url + "&" + chkBox + "=" + obj[i].value;
            }
        }
    }
    else
    {
        if (obj.checked) {
            url = url + "&" + chkBox + "=" + obj.value;
        }
    }

    return url;
}


function isArray(obj)
{
    return obj[0];
}
