/* Cross-Browser JavaScript for ballon type help
 * and cookie manipulation utility functions.
 *
 * @Author: Wei Zhang 3/12/2005 7:00PM
 */
document.writeln('<script language="JavaScript">');
document.writeln('d=document;');
document.writeln('isNS4=d.layers ? true : false;');
document.writeln('isIE=d.all ? true : false;');
document.writeln('isDOM=d.getElementById ? true : false;');
document.writeln('d.cookie="ns4=" + isNS4;');
document.writeln('d.cookie="ie=" + isIE;');
document.writeln('d.cookie="dom=" + isDOM;');
document.writeln('undefined=isIE ? null : undefined;');
document.writeln('<\/script>');

helpwin=null;

function popHelp(url) {
  if (helpwin!=null && helpwin.close) helpwin.close();
  helpwin=window.open(url, "help", "top=0,left=0,height=300,width=600,scrollbars=yes,resizable=yes");
  if (helpwin.focus) helpwin.focus();
}

function getCookie(sName) {
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++) {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) return unescape(aCrumb[1]);
  }
  return null;
}

function cookieDate(hours) {
  var time=new Date();
  time.setTime(time.getTime() + (hours * 3600 * 1000));
  var re=/(\w{3}, \d\d) (\w{3}) \d\d(\d\d) (\d\d:\d\d:\d\d).*/;
  return (hours || hours >= 0 ? ("; expires=" + time.toGMTString().replace(re, "$1-$2-$3 $4 GMT")) : "");
}

function setCookie(sName, value, domain, hours) {
  d.cookie=sName + "=" + escape(value) + (domain ? ("; domain=" + domain) : "") + cookieDate(hours);
}

function delCookie(sName) {
  if (getCookie(sName)) d.cookie=sName + "=; expires=Thursday, 01-Jan-70 00:00:01 GMT";
}

function getPos() {
  return window.pageYOffset!=null?(pageXOffset + "x" + pageYOffset):(d.body.scrollLeft + "x" + d.body.scrollTop);
}

function setMark(mark, domain) {
  setCookie(mark, getPos(), domain, -1);
}

function encode(msg) {
  return encodeURIComponent ? encodeURIComponent(msg) : escape(msg);
}
function decode(msg) {
  return decodeURIComponent ? decodeURIComponent(msg) : unescape(msg);
}

// AJAX
function ajaxsubmit(obj, parameters, id) {
  var req = false;
  if (window.XMLHttpRequest) { // Mozilla/Firefox, Safari, Opera 8.0
    req = new XMLHttpRequest();
    // if (req.overrideMimeType) req.overrideMimeType('text/xml');
  } else if (window.ActiveXObject) { // IE
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (req) {
    show("Loading...");
    var e = document.getElementById("errmsg");
    if (!isEmpty(e)) e.innerHTML = "";
    req.abort();
    var isFreeText=(parameters.search(/gsMethod%3DFREETEXT/)>0)?true:false;  // 04mar08-bes gsMethod=FREETEXT after encoding
    //var url = (obj.form.action ? obj.form.action : location.href) + "?" + parameters + "&" + Math.round(10000*Math.random());
    var url = (obj.form.action ? obj.form.action : location.href) ;
    if (isFreeText) {
       parameters +="&" + Math.round(10000*Math.random());
       req.open("POST", url, true);
    }else  {
       //alert("Parameters:" + parameters + "EncodedParameters:" + encodeURIComponent(parameters));
       //url += "?"+ encodeURIComponent(parameters) + "&" + Math.round(10000*Math.random());
       url += "?"+ parameters + "&" + Math.round(10000*Math.random());
       //alert("url:" + url);
       req.open("GET", url, true);
    }
    // var url = (obj.form.action ? obj.form.action : location.href) ;
    if (getCookie("JSESSIONID")==null && httpsessionid) req.setRequestHeader("Cookie", "JSESSIONID=" + httpsessionid);
    //alert("Resquest to " + url + ":\n" + parameters);
    req.onreadystatechange = function() { processRes(req, id); };
    if (isFreeText) {
    
       //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       //req.send(encodeURIComponent(parameters));
       req.send(parameters);
    }else {
       req.send(null);
    }
  } else {
    alert("Your browser doesn't support AJAX, a feature used in this form. Please consider to upgrade your browser to the latest version.");
  }
}
function processRes(AJAX, id) {
  if (AJAX.readyState == 4) {
    if (AJAX.status == 200) {
      //alert(AJAX.getAllResponseHeaders() + "\n" + trim(AJAX.responseText));
      if (!isEmpty(doUpdate) && AJAX.responseText.search(/<html>/)==-1) {
        show(); doUpdate(AJAX, id);
      } else {
        document.forms[0].submit();
      }
    } else {
      alert("There was a problem fetching the data, try refresh your browser:\n" + AJAX.status + " - " + AJAX.statusText);
    }
    delete AJAX;
  }
}

function postData(form) {
  var body = '';
  for (var i = 0; i < form.elements.length; i++) {
    var elem = form.elements[i];
    if (elem.disabled || elem.name == '') continue;
switch (elem.type) {
      case 'text':
      case 'hidden':
      case 'password':
      case 'textarea':
      case 'select-one':
      if(elem.value != ''){
        body += '&' + elem.name + '=' + encode(elem.value);
      }
        break;
      case 'checkbox':
      case 'radio':
        if (elem.checked) body += '&' + elem.name + '=' + encode(elem.value);
    }
  }
  //alert(body);
  return body.substr(1);
}

function goMark(mark) {
  var pos=getCookie("JSESSIONID"); if (pos) httpsessionid=pos;
  pos=getCookie(mark);
  if (pos) {
    delCookie(mark); var idx=pos.indexOf("x");
    if (idx > 0) setTimeout("scrollTo(" + pos.substring(0,idx) + ", " + pos.substring(idx+1) + ")", 10);
  }
  pos = getCookie("focus");
  if (pos) {
    var e = eval("document.forms[0].elements" + pos);
    if (e && !e.disabled && e.focus) e.focus();
    delCookie("focus");
  }
}

function fullname(name) {
  var els = document.forms[0].elements[name];
  if (els==null || els==undefined || els.length==null) return "['" + name + "']";
  for (var c=0; c<els.length; c++) {
    if ((els[c].type=="radio" || els[c].type=="checkbox") && els[c].checked)
      return "['" + name + "'][" + c + "]";
  }
  return "['" + name + "']";
}

actionbase=null; httpsessionid=null;

function go(obj, where) {
  el=obj.form.elements["form.action"];
  if (el) {el.value=where;} else {el=obj.form.elements["action"]; if (el) el.value=where;}
  if (actionbase) {
    el=obj.form.elements["form.ns4"]; if (el) el.value=isNS4;
    if (obj.form.action.search(/^http:\/\//)==-1) {
      obj.form.action=actionbase + obj.form.action.replace(/file:\/\/?(localhost)?/, "");
    }
  }
  if (!obj.form.onsubmit || obj.form.onsubmit()) {
    if (!isNS4 && obj.type=="button") {
      obj.disabled=true; obj.value=" Wait... ";
    }
    if (getCookie("JSESSIONID")==null && httpsessionid!=null
    && obj.form.action.search(/\.service;jsessionid=/)==-1) {
      obj.form.action=obj.form.action.replace(/\.service/, ".service;jsessionid="+httpsessionid);
    }
    obj.form.submit();
  }
}

function trim(str) {
  return str.replace(/^\s+/, "").replace(/\s+$/, "");
}

function isEmpty(str) {
  return (!str || trim(str).length==0);
}

function isEmpty(obj) {
  return (typeof(obj) == "undefined" || obj == null || !obj || (typeof(obj) == "string" && trim(obj).length==0)
   || (typeof(obj) == "number" && obj == 0) || (typeof(obj) == "boolean" && !obj));
}

tip_stat='hidden'; tip_id=null; tip_lag=300; tipO=null;
tip_header='<table cellpadding="1" cellspacing="0" border="0"><tr><td style="background:#000000">'
         + '<table cellpadding="2" cellspacing="0" border="0"><tr><td style="background:#FEFEDF">'
         + '<div style="font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:110%">';
tip_footer='</div></td></tr></table></td></tr></table>';

function Obj(id) {
  if (isNS4) {
    this.obj=d.layers[id]; this.style=d.layers[id];
  } else if (isIE) {
    this.obj=d.all[id]; this.style=this.obj ? this.obj.style : this.obj;
  } else if (isDOM) {
    this.obj=d.getElementById(id); this.style=this.obj ? this.obj.style : this.obj;
  }
}

function showElements(show, elList) {
//  return false;
  for(var i=0; i<elList.length; i++) {
    var el=new Obj(elList[i]); if (el.style) el.style.display=show ? "" : "none";
  }
  return false;
}

function toggleElements(show, elList) {
//  return false;
  for(var i=0; i<elList.length; i++) {
    var el=new Obj(elList[i]); if (el.style) el.style.visibility=show ? "inherit" : "hidden";
  }
  return false;
}

function hide_tip() {
//  return false;
  tip_stat="hidden"; clearTimeout(tip_id);
  if (!tipO) tipO=new Obj("t-i-p"); tipO.style.visibility=tip_stat;
  return false;
}

function clientPos(dir, e) {
  var pos = 0;
  if (e.type=="focus") {
    var obj = (e.target) ? e.target : e.srcElement;
    for (; obj.offsetParent; obj = obj.offsetParent)
    pos += dir=="X" ? obj.offsetLeft : obj.offsetTop;
  } else if (dir=="X") {
    pos = e.clientX + (window.innerWidth ? pageXOffset : d.body.scrollLeft);
  } else if (dir=="Y") {
    pos = e.clientY + (window.innerWidth ? pageYOffset : d.body.scrollTop);
  }
  return pos;
}

function show_tip(key, e) {
  return false;
  if (!tipO) tipO=new Obj("t-i-p");
  if(isDOM||isIE) {
    var pageW=window.innerWidth
    var pageLeft = pageW ? pageXOffset : d.body.scrollLeft, pageTop = pageW ? pageYOffset : d.body.scrollTop;
    tipO.style.width=(pageW ? (pageW-15) : d.body.clientWidth)+pageLeft-clientPos("X", e)-2;
    tipO.obj.innerHTML=tip_header + getHelp(key) + tip_footer;
    tipO.style.top=Math.max(pageTop, clientPos("Y", e)-tipO.obj.offsetHeight-2);
    tipO.style.left=clientPos("X", e)-4;
  } else if (isNS4) {
    var od = tipO.obj.document; od.open(); od.writeln(tip_header + getHelp(key) + tip_footer); od.close();
    if (od.width > pageXOffset+innerWidth-e.pageX-15) {
      var tmp='<table cellpadding="1" cellspacing="0" border="0" width="' + (pageXOffset+innerWidth-e.pageX-15)
      + '"><tr><td style="background:#000000"><table cellpadding="2" cellspacing="0" border="0" width="100%">'
      + '<tr><td style="background:#FEFEDF"><div style="font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:110%">';
      od.open(); od.writeln(tmp + getHelp(key) + tip_footer); od.close();
    }
    tipO.style.top=Math.max(pageYOffset, e.pageY-od.height-2);
    tipO.style.left=e.pageX-2;
  }
  if (tip_stat == "hidden") {
    tip_stat="inherit"; tip_id=setTimeout('tipO.style.visibility=tip_stat', tip_lag);
  }
  return false;
}

tip_txt=new Object;

function getHelp(key) {
  return key.search(/ |\.$/)==-1 ? (tip_txt[key] ? tip_txt[key] :
         ("<font color=red><b>" + key + "</b>: Help is NOT available</font>")) : key;
}

function show(msg) {
  if (msg) {
    tipO = new Obj("t-i-p");
    var pageW=window.innerWidth
    var pageLeft = pageW ? pageXOffset : d.body.scrollLeft;
    var pageTop  = pageW ? pageYOffset : d.body.scrollTop;
    tipO.obj.innerHTML='<div style="border:1px solid black;font:italic normal bold 14px Tahoma;color:black;background-color:#FEFEDF;text-align:center">' + msg + '</div>';
    tipO.style.width=tipO.obj.offsetWidth+10;
    tipO.style.top=pageTop;
    tipO.style.left=pageLeft + (pageW ? (pageW-15) : d.body.clientWidth)-tipO.obj.offsetWidth;
    if (tipO.style.visibility != "inherit") tipO.style.visibility="inherit";
  } else if (tipO.style.visibility != "hidden") {
    tipO.style.visibility="hidden";
    tipO.style.width="auto";
  }
}

d.writeln('<div id="t-i-p" style="position:absolute;top:0;left:0;visibility:hidden;z-index:100"><\/div>');
