oHead=0;
onPageLoaded=0;
var continueLoading=false;
var tooltipMoving=false;
var okd;

function cC(oE, sC){ //cC = checkClass
  var oE=fO(oE);
  if(!oE) return 0;
  sC = sC.replace(/\-/g, "\\-");
  var oRegEx = new RegExp("(^|\\s)" + sC + "(\\s|$)");
  return oRegEx.test(oE.className);
}

function rC(oE, sC){ //rC = removeClass
  var oE=fO(oE);
  if(!oE) return false;
  var rep=oE.className.match(' '+sC)?' '+sC:sC;
  oE.className=oE.className.replace(rep,'');
  oE.className.replace(/^\s./,'');
}

function aC(oE, sC){ //aC = addClass
  var oE=fO(oE);
  if(!oE) return false;
  if(!cC(oE, sC)){
    oE.className+=oE.className?' '+sC:sC;
  }
}

function tC(oE,sC){ //tC = toggleClass
  if(cC(oE,sC)){
    return rC(oE,sC);
  }else{
    return aC(oE,sC);
  }
}

function menuHover(i){
  var x=0;
  var max=6;
  var diff=0;
  s=(typeof i!='undefined');
  i=s?i:0;
  var dist=0;
   while(1){
     x++;
     o=fO('menu'+x);
     if(!o) break;
     diff=Math.abs(i-x);
     m=s?(diff*1):max;
     if(diff>0) m+=1;
     if(m>max) m=max;
     
     o.style.marginTop=m+'px';
     o.style.paddingBottom=(max-m)+'px';
   }
}

function popup(title,text){
  if(BAD_BROWSER){
    alert(title+'\n'+text);
    popupClose();
    return false;
  }
  if(scroll) scroll(0,0);
  fO('popupTitle').innerHTML=title;
  fO('popupMsg').innerHTML=text;
  sO('darken');
  sO('popup');
  okd=window.onkeydown;
  window.onkeydown=function(){popupClose(); return false;};
}

function popupClose(){
  if(GOOD_BROWSER){
    hO('popup');
    hO('darken');
    window.onkeydown=okd;
  }
  if(typeof(_popupClose)=='function') _popupClose();
  _popupClose=false;
}

function tooltip(t,r,oX,oY){
  if(BAD_BROWSER) return false;
  var o=fO('tooltip');
  oX=(typeof oX!='undefined')?oX:0;
  oY=(typeof oY!='undefined')?oY:oX;
  if(typeof t!='string') return hO(o);
  sO(o);
  o.innerHTML=t;
  r=fO(r);
  p=fP(r);
  o.style.left=(p.x+oX)+'px';
  o.style.top=(p.y+oY)+'px';
  r.onmouseout=tooltip;
}

function fO(oE){ //fO = fetchObject, returns object if string specified.
  var oE;
  if(typeof(oE)=='string'){
    if(document.getElementById){
      if(oE=document.getElementById(oE)) return oE;
    }else if(document.all){
      if(oE=document.all[oE]) return oE;
    }
  }else if(typeof(oE)=='object'){
    return oE;
  }
  return false;
}

function hO(oE){ //hO = hideObject
  var oE=fO(oE);
  if(!oE) return false;
  oE.style.display='none';
  oE.style.visibility='hidden';
}

function sO(oE,sDT){ //sO = showObject
  var oE=fO(oE);
  if(sDT==null) sDT='block';
  if(!oE) return false;
  oE.style.display=sDT;
  oE.style.visibility='visible';
}

function cOV(oE,sDT){ //cOV = checkObjectVisibility
  var oE=fO(oE);
  if(sDT==null) sDT='block';
  if(!oE) return 0;
  return (oE.style.display==sDT);
}

function tOV(oE,sDT){ //tO=toggleObjectVisibility
  var oE=fO(oE);
  if(!oE) return false;
  if(sDT==null) sDT='block';
  if(cOV(oE,sDT)){
    hO(oE);
  }else{
    sO(oE);
  }
}

function sOV(oE,bV,sDT){ //sOV = setObjectVisibility
  if(sDT==null) sDT='block';
  if(bV){
    sO(oE,sDT);
  }else{
    hO(oE);
  }
}


function execJS(sUrl){
  var oJS=document.createElement('script');
  oJS.type = 'text/javascript';
  sUrl+=parseInt(Math.random()*99999999)+'/';
  oJS.src=sUrl;
  document.getElementsByTagName('head')[0].appendChild(oJS);
}

function esc(sUrl){
  var sUrl=escape(sUrl);
  return sUrl.replace(/\//g,'%2F');
}

function newWindow(sUrl){
  return window.open(sUrl,'','toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes');
}

function popupWin(sURL,iW,iH){
  var iX=Math.floor(screen.width/2-iW/2);
  var iY=Math.floor(screen.height/2-iH/2);
  return window.open(sURL,'popup','height='+iH+',width='+iW+',left='+iX+',top='+iY+',dependent=yes,alwaysRaised=yes,menubar=no,status=yes,resizeable=no,toolbar=no,titlebar=no');
}

function loadCSS(sSrc){
  var oLink = document.createElement('link');
  oLink.setAttribute('rel','stylesheet');
  oLink.setAttribute('type','text/css');
  oLink.setAttribute('href',sSrc);
  oHead.appendChild(oLink);
}


function initiateDocument(){
  oHead=document.getElementsByTagName('head')[0];
  if(!continueLoading) setTimeout("loading(false);",500);
  if(typeof(onPageLoaded)=='function') onPageLoaded();
  //if(document.getElementsByTagName&&document.getElementsByTagName('iframe')[0]) hO(document.getElementsByTagName('iframe')[0]);
}

function loading(sText){
  if(sText==false){
    sO('contents');
    hO('loading');
  }else{
    hO('contents');
    sO('loading');
    fO('loadingText').innerHTML=sText;
  }
}



function fP(oE) { //fP=findPosition
  var iX=0;
  var iY=0;
  oE=fO(oE);
  if(oE.offsetParent) {
    do {
      iX+=oE.offsetLeft;
      iY+=oE.offsetTop;
    } while(oE=oE.offsetParent);
  }
  return {"x":iX,"y":iY};
}


var toJsonString
(function () {
  toJsonString = function(o) {
    var UNDEFINED
    switch (typeof o) {
      case 'string': return '\'' + encodeJS(o) + '\''
      case 'number': return String(o)
      case 'object':
      if (o) {
        var a = []
        if (o.constructor == Array) {
          for (var i = 0; i < o.length; i++) {
            var json = toJsonString(o[i])
            if (json != UNDEFINED) a[a.length] = json
          }
          return '[' + a.join(',') + ']'
        } else if (o.constructor == Date) {
          return 'new Date(' + o.getTime() + ')'
        } else {
          for (var p in o) {
            var json = toJsonString(o[p])
            if (json != UNDEFINED) a[a.length] = (/^[A-Za-z_]\w*$/.test(p) ? (p + ':') : ('\'' + encodeJS(p) + '\':')) + json
          }
          return '{' + a.join(',') + '}'
        }
      }
      return 'null'
      case 'boolean'  : return String(o)
      case 'function' : return
      case 'undefined': return 'null'
    }
  }

  function encodeJS(s) {
    return (!/[\x00-\x19\'\\]/.test(s)) ? s : s.replace(/([\\'])/g, '\\$1').replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/[\x00-\x19]/g, '')
  }
})()


function jsonCall(sFunction,oData,sListener) {
  var oXMLHttp=new XMLHttpRequest();
  var sUrl=CFG_BASE_URL+'/'+sFunction+'.php';    oXMLHttp.onreadystatechange=function(){
    if(oXMLHttp.readyState==4){
      var oResponse=eval('('+oXMLHttp.responseText+')');
      sListener(oResponse);
    }
  };

  oXMLHttp.open("POST",sUrl,true);    oXMLHttp.setRequestHeader("Accept", "text/javascript,application/javascript,application/json,text/html");
  if(typeof oData=='object'){
    oXMLHttp.send(toJsonString(oData));
  }else{
    oXMLHttp.send(oData);
  }
  return oXMLHttp;

}


if( !window.XMLHttpRequest ) XMLHttpRequest = function(){
  try{ return new ActiveXObject("MSXML3.XMLHTTP") }catch(e){}
  try{ return new ActiveXObject("MSXML2.XMLHTTP.3.0") }catch(e){}
  try{ return new ActiveXObject("Msxml2.XMLHTTP") }catch(e){}
  try{ return new ActiveXObject("Microsoft.XMLHTTP") }catch(e){}
  throw new Error("Could not find an XMLHttpRequest alternative.")
};

window.onload=initiateDocument;
