UtilDocument = new Object();
UtilWindow   = new Object();
UtilForm     = new Object();
UtilCombo    = new Object();
UtilListBox  = new Object();
UtilString   = new Object();
UtilImage    = new Object();
UtilRadio    = new Object();
UtilCheckBox = new Object();

//**************************************************************//
//******************** UtilDocument FUNCTIONS ********************//
//**************************************************************//
UtilDocument.refreshPage = function(){
   
   var url = document.location.href;
   document.location = url;
}

//**************************************************************//
//******************** UtilWindow FUNCTIONS ********************//
//**************************************************************//

UtilWindow.openWindow = function(path, w, h, scrollbars, resizable) {

  if (scrollbars == undefined){
    scrollbars = "yes";
  }

  if (resizable == undefined){
    resizable = "yes";
  }

  a = window.open(path,"","height=" + h + ",width=" + w + ",scrollbars=" + scrollbars +
       ",resizable=" + resizable + ",left=" + (screen.width-w)/2 + ",top=" + (screen.height-h)/2);
  a.title = "ase";
}

//**************************************************************//
//******************** UtilString FUNCTIONS ********************//
//**************************************************************//
UtilString.URLencode = function (sStr) {
    return escape(sStr).replace(/\+/g, '%2C').replace(/\"/g,'%22').replace(/\'/g, '%27');
}

//===================================================================//
UtilString.trimAll = function (sString, trimTabReturn) {
   if (trimTabReturn == undefined) {
      while (sString.substring(0,1) == ' ') {
         sString = sString.substring(1, sString.length);
      }
      
      while (sString.substring(sString.length-1, sString.length) == ' ') {
         sString = sString.substring(0,sString.length-1);
      }
   }
   else {
      while (sString.substring(0,1) == ' ' || sString.substring(0,1) == '\n' || 
             sString.substring(0,1) == '\r' || sString.substring(0,1) == '\t' ) {
         sString = sString.substring(1, sString.length);
      }
      
      while (sString.substring(sString.length-1, sString.length) == ' ' || sString.substring(sString.length-1, sString.length) == '\n' ||
             sString.substring(sString.length-1, sString.length) == '\r' || sString.substring(sString.length-1, sString.length) == '\t') {
         sString = sString.substring(0,sString.length-1);
      }
   }
   
   return sString;
}

//**************************************************************//
//******************** UtilImage FUNCTIONS ********************//
//**************************************************************//
UtilImage.MM_swapImgRestore = function () { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

//**********************************************************************************
UtilImage.MM_preloadImages = function () { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=UtilImage.MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

//**********************************************************************************
UtilImage.MM_findObj = function (n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=UtilImage.MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

//**********************************************************************************
UtilImage.MM_swapImage = function () { //v3.0
  var i,j=0,x,a=UtilImage.MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=UtilImage.MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//**************************************************************//
//******************** UtilCombo FUNCTIONS ********************//
//**************************************************************//

UtilCombo.setSelectedIndex = function (comboObj, selectedValue) {
   for (i = 0; i < comboObj.length; i++) {
      if (comboObj[i].value == selectedValue) {
         comboObj.selectedIndex = i;
         return;
      }
   }
}

//===================================================================//
UtilCombo.clearCombos = function (comboGroupArr, frmObj) {
   var comboName = "";
   for (i = 0; i < comboGroupArr.length; i++) {
      comboName = comboGroupArr[i];
      frmObj.elements[comboName].options.length = 0; //*** clear the combo
   }
}

//===================================================================//
UtilCombo.validateComboSelection = function (comboObj) {
   var text = comboObj[comboObj.selectedIndex].value;
   if (text == "---") {
      if (comboObj.selectedIndex == comboObj.length) {
         comboObj.selectedIndex = 1;
      }
      else {
         comboObj.selectedIndex = comboObj.selectedIndex + 1;
      }
   }

}

//**********************************************************************************
UtilCombo.setOptions = function (selectedValue, frmObj, dd1OptionObj, dd2OptionObj, dd2Selected)  {
   dd2OptionObj.options.length = 0;
   dd2SelectedNum = 0
   internalCount     = 1

   dd1Arr        = dd1dd2Arr[0];
   dd1ArrDisp    = dd1dd2Arr[1];
   dd2Arr     = dd1dd2Arr[2];
   dd2ArrDisp = dd1dd2Arr[3];
   dd2OptionObj.options[dd2OptionObj.options.length] = new Option( "Please Select" , "" ); // adds a blank one at the top
   for ( var x = 0 ; x < dd1Arr.length  ; x++ ) {

      if ( dd1Arr[x] == selectedValue && dd2Arr[x] != "") {
         dd2OptionObj.options[dd2OptionObj.options.length] = new Option( dd2ArrDisp[x], dd2Arr[x] );

         if ( dd2Arr[x] == dd2Selected) {
            dd2SelectedNum = internalCount;
         }
         internalCount++;
      }
   }
    
   if ( dd2SelectedNum > 0 ) {
      dd2OptionObj.options.selectedIndex = dd2SelectedNum;
   } else {
      dd2OptionObj.options.selectedIndex = 0;
   }
}

//**********************************************************************************
UtilCombo.setOptions2 = function (selectedValue, frmObj, dd1OptionObj, dd2OptionObj, dd2Selected, dd3OptionObj, dd3Selected)  {
   dd2OptionObj.options.length = 0;
   dd3OptionObj.options.length = 0;

   dd2SelectedNum    = 0
   dd3SelectedNum    = 0
   internalCount     = 1
   internalCount1    = 1
   dd3ArrayProcessed = new Array(0);

   dd1Arr      = dd1dd2dd3Arr[0];
   dd1ArrDisp  = dd1dd2dd3Arr[1];
   dd2Arr      = dd1dd2dd3Arr[2];
   dd2ArrDisp  = dd1dd2dd3Arr[3];
   dd3Arr      = dd1dd2dd3Arr[4];
   dd3ArrDisp  = dd1dd2dd3Arr[5];
   
   dd2OptionObj.options[dd2OptionObj.options.length] = new Option( "Please Select" , "" );
   dd3OptionObj.options[dd3OptionObj.options.length] = new Option( "Please Select" , "" ); 
   
   //==================================================================//

   var dd2ValTemp = "";      

   for ( var x = 0 ; x < dd1Arr.length  ; x++ ) {
      if ( dd1Arr[x] == selectedValue && dd2Arr[x] != "") {

      	if(dd2ValTemp != dd2Arr[x])
         {
            dd2OptionObj.options[dd2OptionObj.options.length] = new Option( dd2ArrDisp[x], dd2Arr[x] );
            
            if ( dd2Arr[x] == dd2Selected) {
               dd2SelectedNum = internalCount;
            }
            internalCount++;
         }
      }
      dd2ValTemp = dd2Arr[x];
   }
    
   if ( dd2SelectedNum > 0 ) {
      dd2OptionObj.options.selectedIndex = dd2SelectedNum;
   } else {
      dd2OptionObj.options.selectedIndex = 0;
   }

   //==================================================================//

   for ( var x = 0 ; x < dd1Arr.length  ; x++ ) {
   
      if ( dd1Arr[x] == selectedValue && 
           dd3ArrayProcessed.inArray(dd3Arr[x]) == false &&
           dd3Arr[x] != ""
         ) 
      {
            dd3OptionObj.options[dd3OptionObj.options.length] = new Option( dd3ArrDisp[x], dd3Arr[x] );
            
            if ( dd3Arr[x] == dd3Selected) {
               dd3SelectedNum = internalCount1;
            }
            dd3ArrayProcessed[x] = dd3Arr[x];
            internalCount1++;
      }
   }
    
   if ( dd3SelectedNum > 0 ) {
      dd3OptionObj.options.selectedIndex = dd3SelectedNum;
   } else {
      dd3OptionObj.options.selectedIndex = 0;
   }
   
   //==================================================================//
}

//**************************************************************//
//******************** UtilListBox FUNCTIONS ********************//
//**************************************************************//

UtilListBox.addToListBox = function(sourceObj, destObj) {
   sourceListLength      = sourceObj.options.length;
   destinationListLength = destObj.options.length;
   var counter = 0;
   while (counter < sourceObj.length){
      if(sourceObj.options[counter].selected == true) {
         destObj.options[destObj.length] = new Option(sourceObj.options[counter].text, sourceObj.options[counter].value);
         sourceObj.options[counter] = null;
      }
      else {
         counter ++;
      }
   }
   sourceObj.selectedIndex = 0;

}

//**********************************************************************************
UtilListBox.selectAllInListBox = function (sourceObj) {
   sourceListLength      = sourceObj.options.length;
   for (var i=0; i < sourceObj.length; i++){
      sourceObj.options[i].selected = true;
   }
}

//**********************************************************************************
UtilListBox.moveUp = function (formName, fieldName) {
  

  listObj = document.forms[formName][fieldName];
  if (listObj.length == 0)  return;
  selectedPos = listObj.options.selectedIndex;
  if (selectedPos == 0 || selectedPos == -1)  return;

  currentObjValue = listObj.options[selectedPos].value;
  currentObjText  = listObj.options[selectedPos].text;

  prevObjValue    = listObj.options[selectedPos - 1].value;
  prevObjText     = listObj.options[selectedPos - 1].text;
  
  listObj.options[selectedPos].value     = prevObjValue;
  listObj.options[selectedPos].text      = prevObjText;

  listObj.options[selectedPos - 1].value = currentObjValue;
  listObj.options[selectedPos - 1].text  = currentObjText;
  
  listObj.options.selectedIndex = selectedPos - 1;
}

//**********************************************************************************
UtilListBox.moveDown = function (formName, fieldName) {

  listObj = document.forms[formName][fieldName];

  listLength  = listObj.options.length;
  if (listLength == 0)  return;
  selectedPos = listObj.options.selectedIndex;
  if (selectedPos == listLength - 1 || selectedPos == -1)  return;

  currentObjValue = listObj.options[selectedPos].value;
  currentObjText  = listObj.options[selectedPos].text;

  nextObjValue    = listObj.options[selectedPos + 1].value;
  nextObjText     = listObj.options[selectedPos + 1].text;
  
  listObj.options[selectedPos].value     = nextObjValue;
  listObj.options[selectedPos].text      = nextObjText;

  listObj.options[selectedPos + 1].value = currentObjValue;
  listObj.options[selectedPos + 1].text  = currentObjText;
  
  listObj.options.selectedIndex = selectedPos + 1;
}

//**********************************************************************************
UtilRadio.getCheckedValue = function (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 "";
}

//**********************************************************************************
Array.prototype.inArray = function (value)
// Returns true if the passed value is found in the
// array.  Returns false if it is not.
{
    var i;
    for (i=0; i < this.length; i++) {
        // Matches identical (===), not just similar (==).
        if (this[i] === value) {
            return true;
        }
    }
    return false;
};

//**********************************************************************************
String.prototype.trim = function() {
   a = this.replace(/^\s+/, '');
   return a.replace(/\s+$/, '');
};