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
   return -1;
} 

function checkEmail(str)
{
  var isInvalid = false;
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (filter.test(str)) 
  {
    var ts = str.split("@")
    ts = ts[1].split(".")
    if (!isInvalid)
	   return true;
    else 
	   return false;
  }
  else
	 return false;
}

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]) 
         return buttonGroup[i].value;
      else 
         return buttonGroup.value;
   }
} 

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]) { 
      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;
} 

function hasAtLeastOneChecked(grp)
{
   if (grp[0])
   {
      for (var i=grp.length-1; i >= 0; i--)
	  {
	      if (grp[i].checked)
		     return true;
	  }
	  return false;
   }
   else 
      return grp.checked;
}

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) { 
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) 
            retArr[i] = buttonGroup[selectedItems[i]].value;
		 else 
            retArr[i] = buttonGroup.value;// return that value
      }
   }
   return retArr;
} 

function showBlock(dname)
{
    var atDiv = document.getElementById(dname);
    if (atDiv) 
      atDiv.style.display = "inline";
	return atDiv;
}

function hideBlock(dname)
{
   var atDiv = document.getElementById(dname);
   if (atDiv)  
      atDiv.style.display = "none";
   return atDiv;
}

function showID(id, t)
{
   var d = document.getElementById(id);
   if (d) 
      d.innerHTML = t;
}

function showDiv(dname, height)
{
    var atDiv = document.getElementById(dname);
    if (atDiv) {
      atDiv.style.visibility = "visible";
      atDiv.style.display = "inline";
	  atDiv.style.height = height;
	  atDiv.style.position = "relative";
    }
	return atDiv;
}

function hideDiv(dname)
{
   var atDiv = document.getElementById(dname);
   if (atDiv)  {
      atDiv.style.visibility = "hidden";
      atDiv.style.display = "none";
	  atDiv.style.height = 0;
	  atDiv.style.position = "absolute";
   }
   return atDiv;
}

function checkTextArea(ta, limit)
{
   var v = ta.value;
   var wc = strLengthDoubleByte(v);  // v.length;
   if (wc >= limit) {
      ta.value = v.substring(0, limit);
	  return true;
   }
   return true;
}

function checkIntInput(fld)
{
   if (!checkIntInputNoClear(fld,false)) {
      fld.value = "";
	  return false;
   }
   return true;
}
function checkIntInputNoClear(fld,plusMinus)
{
   var fv = fld.value;		
   for (var i=0, l=fv.length; i < l; i++) {
	  var c = fv.charCodeAt(i);
	  var zero = '0';
	  if (c < 48 || c > 57) {
		  if (plusMinus) {
			 if (c==32 || c==43 || c==45)
			   continue; 
		  }
	      return false;
	  }
   }
   return true;
}

function stripHTML(h)
{
	return  h.replace(/(<([^>]+)>)/ig,""); 
}

function strLengthDoubleByte(str) {
	len = 0;
	str = escape(str);
	for(i = 0; i < str.length; i++, len++){
		if(str.charAt(i) == "%"){
			if (str.charAt(++i) == "u"){
			  i += 3;
			  len++;
			}
			i++;
		}
	}
	return Math.ceil(len/2);
}

function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

