function checkLen(textbox, limit)
{
   var len='';
   //carriage returns are ignored in count. Solution: replace for counting purposes
   var cr=/\r/g;
   len=textbox.value;
   len=len.replace(cr,'\n');
   return (len.length <= limit)
}
function checkEmail(str) 
{
   var at="@",dot=".",lat=str.indexOf(at),lstr=str.length,ldot=str.indexOf(dot);
   if ((str.indexOf(at)==-1) || (str.indexOf(at)==-1 || str.indexOf(at)==0 
		 || lat==lstr)||(ldot==-1 || ldot==0 || ldot==lstr)
		 || (str.indexOf(at,(lat+1))!=-1) || (str.substring(lat-1,lat)==dot 
		 || str.substring(lat+1,lat+2)==dot) || (str.indexOf(dot,(lat+2))==-1)
		 || (str.indexOf(" ")!=-1)) {
      return false
   }
   return true					
}
function setText(oCbo, txt){txt.value=oCbo.options[oCbo.selectedIndex].text;}
function isSelect(o){return (typeof o.options != 'undefined');}
function getFormValue(o){
  var sValue = '';
  if(typeof o.value!='undefined')sValue=o.value;
  if(sValue==''&&isSelect(o))if(o.selectedIndex>=0)sValue=o.options[o.selectedIndex].text;
  return sValue;
}
//Combo box manip
function fillComboBox(o, aValue) {
  var bFound;
  if (o.options.length==0) o.options[0]=new Option('', '');
  o.disabled=false;
  for (var i=0;i<aValue.length;i=i+2) {
	bFound=false;
	for(var j=0;j<o.options.length;j++)
	  if (o.options[j].value==aValue[i]) {bFound=true;j=o.options.length+1}
	if(!bFound)o.options[o.options.length]=new Option(aValue[i+1],aValue[i]);
  }
  if (o.options.length==1) {o.selectedIndex=0;if (o.onchange) o.onchange();}
}
function clearComboOrList(o) {
  for (var i=o.options.length-1;i>=0;i--) o.options[i]=null;
  o.selectedIndex=-1;if (o.onchange) o.onchange();
}
function sortCombo(o) {
  var sTemp,bUnsorted=true;
  while (bUnsorted) {
	bUnsorted=false;
	for (var i=0;i<o.options.length-2;i++)
	  if (o.options[i].text>o.options[i+1].text) {
	    sTemp=o.options[i].text;
		o.options[i].text=o.options[i+1].text;
		o.options[i+1].text=sTemp;
		sTemp=o.options[i].value;
		o.options[i].value=o.options[i+1].value;
		o.options[i+1].value=sTemp;
		bUnsorted=true;
	  }
  }
}
//formatting...
function ZeroPad(sVal, iLen) {
  var sTemp=sVal;
  while(sTemp.length<iLen)sTemp='0'+sTemp;
  return sTemp
}
function restoreTextField(sField, sValue) {
    document.getElementById(sField).value=sValue;
}
function restoreTextArea(sField, sValue) {
    document.getElementById(sField).value=sValue;
}
function setComboToValue(o,sVal) {
   var bFound=false;
   for(var i=0;i<o.options.length;i++) 
      if(o.options[i].value==sVal) {
	     o.selectedIndex=i;i=o.options.length+1;bFound=true;
	  }
}
function setComboToText(o,sText) {
   var bFound=false;
   for(var i=0;i<o.options.length;i++) 
      if(o.options[i].text==sText) {
	     o.selectedIndex=i;i=o.options.length+1;bFound=true;
	  }
}
function restoreComboToValue(sField, sValue) {
   var o = document.getElementById(sField);
   setComboToValue(o,sValue);
}
function restoreComboToText(sField, sValue) {
   var o = document.getElementById(sField);
   setComboToText(o,sValue);
}
