

function GetObject(oObject) {
   if (oObject.tagName) return oObject;
   return document.getElementById(oObject);
}


function ChangeQualifiedValueInUrl_Generator(section, newValue, originalUrl) {
   var url = "";
   var sectionToken = "/"+section+"/";

   //var urlBits = document.location.href.split(sectionToken);
   var urlBits = originalUrl.split(sectionToken);

   if(originalUrl == urlBits[0]){ //Section was not found
      url += urlBits[0] + "/" + section + "/" + newValue;
   }
   else if( urlBits[1].indexOf("/") == -1 ){  //Section was found and is last
      url += urlBits[0] + sectionToken + newValue;
   }
   else { //Section exist found and is not last
      url = urlBits[0] + sectionToken + newValue + urlBits[1].substring(urlBits[1].indexOf("/"));
   }

   return url;
}

//var sectionToCancel = new Array('clientsearch','clientid');
function ChangeQualifiedValueInUrl(section, newValue, arrSectionToCancel) {

   var url = "";
   originalUrl = document.location.href;
   var transformedUrl = originalUrl;

   if(arrSectionToCancel!=null){
      for (i in arrSectionToCancel){
         transformedUrl = ChangeQualifiedValueInUrl_Generator(arrSectionToCancel[i], "", transformedUrl);
      }
      transformedUrl = ChangeQualifiedValueInUrl_Generator(section, newValue, transformedUrl);
      document.location.replace(transformedUrl);
   }
   else{
      url = ChangeQualifiedValueInUrl_Generator(section, newValue, originalUrl);
      document.location.replace(url);
   }
}

function AddToUrlAndReload(urlBit) {
   var url = document.location.href + urlBit;
   document.location.replace(url);
}

function OpenWindow(sUrl, sWindowName, iWidth, iHeight, bResizable, bScrollbars) {             
   var sParameters = 'width=' + iWidth + ',height=' + iHeight;
   sParameters+= bResizable ? ',resizable=yes' : ',resizable=no';
   sParameters+= bScrollbars ? ',scrollbars=yes' : ',scrollbars=no';
   sParameters+= ',top=20,left=20,clientX=20,clientY=20';
   var oWindow = window.open(sUrl, sWindowName, sParameters);
   if(oWindow){var popUpsNotBlocked = true; oWindow.focus();}
   else{var popUpsNotBlocked = false;}
   return popUpsNotBlocked;
}

function OpenWindow2(sUrl, sWindowName, iWidth, iHeight, bResizable, bScrollbars) {             
   var sParameters = 'width=' + iWidth + ',height=' + iHeight;
   sParameters+= bResizable ? ',resizable=yes' : ',resizable=no';
   sParameters+= bScrollbars ? ',scrollbars=yes' : ',scrollbars=no';
   sParameters+= ',top=20,left=20,clientX=20,clientY=20';
   var oWindow = window.open(sUrl, sWindowName, sParameters);
}

function hasOptions(obj){if(obj!=null && obj.options!=null){return true;}return false;}
function selectUnselectMatchingOptions(obj,regex,which,only){if(window.RegExp){if(which == "select"){var selected1=true;var selected2=false;}else if(which == "unselect"){var selected1=false;var selected2=true;}else{return;}var re = new RegExp(regex);if(!hasOptions(obj)){return;}for(var i=0;i<obj.options.length;i++){if(re.test(obj.options[i].text)){obj.options[i].selected = selected1;}else{if(only == true){obj.options[i].selected = selected2;}}}}}
function selectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",false);}
function selectOnlyMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",true);}
function unSelectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"unselect",false);}
function sortSelect(obj){var o = new Array();if(!hasOptions(obj)){return;}for(var i=0;i<obj.options.length;i++){o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;}if(o.length==0){return;}o = o.sort(
function(a,b){if((a.text+"") <(b.text+"")){return -1;}if((a.text+"") >(b.text+"")){return 1;}return 0;});for(var i=0;i<o.length;i++){obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);}}
function selectAllOptions(obj){if(!hasOptions(obj)){return;}for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}
function moveSelectedOptions(from,to){if(arguments.length>3){var regex = arguments[3];if(regex != ""){unSelectMatchingOptions(from,regex);}}if(!hasOptions(from)){return;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(!hasOptions(to)){var index = 0;}else{var index=to.options.length;}to.options[index] = new Option( o.text, o.value, false, false);}}for(var i=(from.options.length-1);i>=0;i--){var o = from.options[i];if(o.selected){from.options[i] = null;}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(from);sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
function copySelectedOptions(from,to){var options = new Object();if(hasOptions(to)){for(var i=0;i<to.options.length;i++){options[to.options[i].value] = to.options[i].text;}}if(!hasOptions(from)){return;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(options[o.value] == null || options[o.value] == "undefined" || options[o.value]!=o.text){if(!hasOptions(to)){var index = 0;}else{var index=to.options.length;}to.options[index] = new Option( o.text, o.value, false, false);}}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}
function copyAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){copySelectedOptions(from,to);}else if(arguments.length==3){copySelectedOptions(from,to,arguments[2]);}}
function swapOptions(obj,i,j){var o = obj.options;var i_selected = o[i].selected;var j_selected = o[j].selected;var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);o[i] = temp2;o[j] = temp;o[i].selected = j_selected;o[j].selected = i_selected;}
function moveOptionUp(obj){if(!hasOptions(obj)){return;}for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){if(i != 0 && !obj.options[i-1].selected){swapOptions(obj,i,i-1);obj.options[i-1].selected = true;}}}}
function moveOptionDown(obj){if(!hasOptions(obj)){return;}for(i=obj.options.length-1;i>=0;i--){if(obj.options[i].selected){if(i !=(obj.options.length-1) && ! obj.options[i+1].selected){swapOptions(obj,i,i+1);obj.options[i+1].selected = true;}}}}
function removeSelectedOptions(from){if(!hasOptions(from)){return;}if(from.type=="select-one"){from.options[from.selectedIndex] = null;}else{for(var i=(from.options.length-1);i>=0;i--){var o=from.options[i];if(o.selected){from.options[i] = null;}}}from.selectedIndex = -1;}
function removeAllOptions(from){if(!hasOptions(from)){return;}for(var i=(from.options.length-1);i>=0;i--){from.options[i] = null;}from.selectedIndex = -1;}
function addOption(obj,text,value,selected){if(obj!=null && obj.options!=null){obj.options[obj.options.length] = new Option(text, value, false, selected);}}




function runExcelExport(ctrlUrlToGenerateHtmlForExport){
   GetObject('iframeContainingHtmlToExport').src = ctrlUrlToGenerateHtmlForExport;
}

function ArrayContains(arr,str){
   for (x in arr)
   {
      if(arr[x] == str){
         return true;
      }
   }
   return false;
}


//exemple to add on image
//<img ... onMouseOver="showToolTip('title','html content',this)" onMouseOut="hideToolTip()">
document.write('<div id="pop" style="VISIBILITY: hidden; WIDTH: 200px; POSITION: absolute; z-index:101;"></div>');
elt = document.getElementById;

function showToolTip(title,msg,objImage,width,showCloseButton){
  var x = event.x;
  var y = event.y; 
  skn = GetObject("pop").style; 
  skn.left = GetDomOffset(objImage, 'offsetLeft')+20;
 
  skn.top = GetDomOffset(objImage, 'offsetTop') +19;
  
  var closeButton = (showCloseButton)?"<div class=\"x-buttonsmall_square\" style=\"margin:0px 0px 10px 0px;padding:0px 0px 10px 0px;\" onclick=\"hideToolTip();\" ><br/>":"";
  var content ='<table width="'+width+'" border="0" cellspacing="0" cellpadding="2" class="tooltip" >';
  content += '<tr><th width=\"90%\" >'+title+'</th><th style=\"padding:0px 10px 10px 0px;\" >'+closeButton+'</th></tr>';
  content += '<tr><td colspan=\"2\" style=\"padding:5px 5px 5px 5px;\">'+msg+'</td></tr></table>';
  if (elt){
      GetObject("pop").innerHTML = content;
      skn.visibility = "visible";
      skn.width = 200;
      skn.height = 0;
  }
}
function get_mouse(e){
  skn = GetObject("pop").style;
  var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
  var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
  skn.left = x+10;
  skn.top = y+10;
}
function hideToolTip(){
  skn = GetObject("pop").style;
  if (elt){
    skn.visibility = "hidden";
      GetObject("pop").innerHTML = "";
      skn.width = 0;
      skn.height = 0;
  }
}
function GetDomOffset(inOBJ, inOFF){
  skn = GetObject("pop").style;
  var iVal = 0, oObj = inOBJ;
  while (oObj && oObj.tagName != 'BODY') {
    iVal += eval('oObj.' + inOFF);
    oObj = oObj.offsetParent;
  }
  return iVal;
}





//
function $getmyelement(v) { return(document.getElementById(v)); } 
function $getstyle(v) { return($getmyelement(v).style); } 
function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); } 
function isset(v) { return((typeof(v)=='undefined' || v.length==0)?false:true); } 
//function XYwin(v) { var z=agent('msie')?Array(document.body.clientHeight,document.body.clientWidth):Array(window.innerHeight,window.innerWidth); return(isset(v)?z[v]:z); }
function XYwin(v) { var z=Array(document.body.clientHeight,document.body.clientWidth); return(isset(v)?z[v]:z); }  
function sexyTOG() { document.onclick=function(){ $getstyle('sexyBG').display='none'; $getstyle('sexyBOX').display='none'; document.onclick=function(){}; }; } 
function sexyBOX(v,b) {
   var correction = 7; 
   setTimeout("sexyTOG()",100); 
   //$getstyle('sexyBG').height=XYwin(0)+'px'; 
   $getstyle('sexyBG').left = '0%';
   $getstyle('sexyBG').height='1200px'; 
   $getstyle('sexyBG').display='block'; 
   //$('sexyBOX').innerHTML=v+'<div class="sexyX">(click outside box to close)'+"<\/div>"; 
   $getmyelement('iframewindow').src = v;
   $getstyle('sexyBOX').left=Math.round(((XYwin(1)-b)/2)+correction)+'px'; 
   $getstyle('sexyBOX').width=b+'px';
   //$S('sexyBOX').width='100%';  
   $getstyle('sexyBOX').display='block'; 
}
function closeSexyBox(){$getstyle('sexyBG').display='none'; $getstyle('sexyBOX').display='none';}


//
function ov(i)
{
  document.getElementById(i).className="tr-colorsel";
}
function ot(i,c)
{
  document.getElementById(i).className=c;
}
function onRowClick(params,inBox,boxWidth)
{
  if(inBox==1){
     sexyBOX(params,boxWidth);
  }
  else{
     window.location = params;
  }
}

//

function hov(loc,cls){
   if(loc.className)
      loc.className=cls;
}



function keyWasPressed(evt,elem,key){  
   obj = elem;  
   var keyCode;  
   if ("which" in evt)  {
     // NN4 & FF &amp; Opera    
     keyCode=evt.which;  } 
   else if ("keyCode" in evt)  
   {
     // Safari & IE4+   
     keyCode=evt.keyCode;  
   } 
   else if ("keyCode" in window.event)  
   {
     // IE4+    
     keyCode=window.event.keyCode;  
   } else if ("which" in window.event)  {    
      keyCode=evt.which;  
   } 
   if (keyCode == key)  
   {    
      return true;
   }
   return false;
}
