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();
UtilAjax     = new Object();
UtilModal    = 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, posX, posY) {

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

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

  if (posX == undefined){
    posX = (screen.width-w)/2;
  }

  if (posY == undefined){
    posY = (screen.height-h)/2;
  }

  a = window.open(path,"","height=" + h + ",width=" + w + ",scrollbars=" + scrollbars +
       ",resizable=" + resizable + ",left=" + posX + ",top=" + posY);
}


UtilWindow.doBookmark = function() { 

if(document.all)
   window.external.AddFavorite(location.href,document.title);
else if(window.sidebar)
   window.sidebar.addPanel(document.title,location.href,'');
   
}

UtilWindow.setBookmark = function(lnk) { 
	if(window.opera && window.print) { // Opera Hotlist
		lnk.href = top.location.href;
		lnk.title = top.document.title;
	}
}
//**************************************************************//
//******************** 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+$/, '');
};

//=====================================================//
UtilAjax.getFormValues2 = function(frmObj){
   var getstr = "";
   for (i=0; i<frmObj.childNodes.length; i++) {
      
      if (frmObj.childNodes[i].tagName == "INPUT") {
         if (frmObj.childNodes[i].type == "text") {
            getstr += frmObj.childNodes[i].name + "=" + frmObj.childNodes[i].value + "&";
         }
         if (frmObj.childNodes[i].type == "checkbox") {
            if (frmObj.childNodes[i].checked) {
               getstr += frmObj.childNodes[i].name + "=" + frmObj.childNodes[i].value + "&";
            } else {
               getstr += frmObj.childNodes[i].name + "=&";
            }
         }
         if (frmObj.childNodes[i].type == "radio") {
            if (frmObj.childNodes[i].checked) {
               getstr += frmObj.childNodes[i].name + "=" + frmObj.childNodes[i].value + "&";
            }
         }
      }   
      if (frmObj.childNodes[i].tagName == "SELECT") {
         var sel = frmObj.childNodes[i];
         getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
      }
      
   } //*** for 1
   
   return getstr;

}

//=====================================================//
UtilAjax.getFormValues = function(frmObj){

   var values = "";

   for (var i = 0; i < frmObj.elements.length; i++) {
      var fieldObj = frmObj.elements[i];
      //alert (fieldObj.name + " : " + fieldObj.type + " : " + fieldObj.value);
      if (fieldObj.type == "text" || fieldObj.type == "textarea" || 
          fieldObj.type == "hidden" || fieldObj.type == "select-one" || 
          fieldObj.type == "checkbox" || fieldObj.type == "radio" || fieldObj.type == "password") {

         values += fieldObj.name + "=";
         if (fieldObj.type == "text" || fieldObj.type == "textarea" || 
             fieldObj.type == "hidden" || fieldObj.type == "password") {
 
            str = encodeURIComponent(fieldObj.value);
            str = str.replace(/\+/g, '%2b');
 
            values += str;
         }
         else if (fieldObj.type == "select-one") {
            values += escape(fieldObj.options[fieldObj.selectedIndex].value);
         }              
         else if (fieldObj.type == "file") {
            fileName = fieldObj.value;
    	      if (fileName.indexOf('/') > -1) { 
    	        fileName = fileName.substring(fileName.lastIndexOf('/')+1, fileName.length);
            }	else {
    	        fileName = fileName.substring(fileName.lastIndexOf('\\')+1, fileName.length);
            }    
            values += fileName;
         }
         else if (fieldObj.type == "checkbox") {
            values += (fieldObj.checked ? fieldObj.value : "");
         }
         else if (fieldObj.type == "radio") {
            var resObj = UtilAjax.getRadioDetail(fieldObj);
            i = i + resObj.radioLength - 1;
            values += resObj.checkedValue;
         }
         
         values += "&";
      }
   } //*** for 1

   // var valuesText = "";
   // 
   // for (var i = 0; i < fieldsArr.length; i++) {
   //    var fieldName  = fieldsArr[i];
   //    var fieldValue = valuesArr[i];
   // 
   //    var fieldNamePrev  = "";
   //    var fieldValuePrev = "";
   // 
   //    if (i > 0) {
   //       fieldNamePrev  = fieldsArr[i-1];
   //       fieldValuePrev = valuesArr[i-1];
   //    }
   // 
   //    if (fieldTypeArr[i] == "radio") {
   // 
   //    }
   //    else {
   //       valuesText += fieldName + "=" + fieldValue + "&";
   //    }
   //       
   // }


      
   
   return values;
}

//=====================================================//
UtilAjax.getRadioDetail = function(radioObj){
   var radioObj2 = radioObj.form.elements[radioObj.name];
   var checkedValue = "";
   for (var i = 0; i < radioObj2.length; i++) {
      if (radioObj2[i].checked) {
         checkedValue = radioObj2[i].value;
      }
   }
   return {"checkedValue" :  checkedValue, "radioLength": radioObj2.length};

}

