/*
 * ajaxtable.js 1.1
 * Copyright (C) 2006 Solertium Corporation
 * Redistribution without license is expressly prohibited.
 */
 
var ajt_xhreq;
function ajt_getXMLHttpRequest(){
  var req;
  if(window.XMLHttpRequest){
    req = new XMLHttpRequest();
  } else {
    try{
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return req;
}
function ajt_item_over(){
  this.style.background='#3366cc';
  this.style.color='#ffffff';
}
function ajt_item_out(){
  this.style.background='#ffffff';
  this.style.color='#000000';
}
function ajt_format_menu(el){
  var divs = el.getElementsByTagName("a");
  for(var i=0;i<divs.length;i++){
    var node = divs[i];
    node.className = "ajt_popmenu_item";
    node.onmouseover = ajt_item_over;
    node.onmouseout = ajt_item_out;
    var tgt = node.getAttribute("o2c:tgt");
    if(!tgt) tgt = node.getAttribute("tgt");
  }
}
function ajt_getpmdiv(){
  var pmdiv = document.getElementById("ajt_popmenu");
  if(pmdiv) return pmdiv;
  pmdiv = document.createElement("div");
  pmdiv.style.position = "absolute";
  pmdiv.style.border = "1px solid #a0a0a0";
  pmdiv.style.padding = "2px";
  pmdiv.style.background = "#ffffff";
  pmdiv.setAttribute("id","ajt_popmenu");
  document.body.appendChild(pmdiv);
  return pmdiv;
}
 
var ajt_uris = new Array();
var ajt_count = 0;
var ajt_total = 0;
 
function ajt_req_display(){
  if(ajt_xhreq.readyState == 4){
    var pmdiv = ajt_getpmdiv();
    if(ajt_count>1) pmdiv.innerHTML = pmdiv.innerHTML+"<div class=\"ajt_divider\">&#160;</div>";
    if(ajt_xhreq.status!=200){
      pmdiv.innerHTML = pmdiv.innerHTML+"<a target='_blank' href='"+ajt_uris[ajt_count-1]+"'>"+ajt_xhreq.status+" error</a>";
    } else {
      pmdiv.innerHTML = pmdiv.innerHTML+ajt_xhreq.responseText;
    }
    ajt_format_menu(pmdiv);
    ajt_nextpopmenu();
  }
}
 
function ajt_dropmenu(e){
  if(!e){
    e = window.event;
    window.event.cancelBubble = true;
  } else {
    e.stopPropagation();
  }
  var uri = ajt_getAttNS(this,"o2c:handler");
  var uris = uri.split(' ');
  ajt_popmenus(uris, gX(this), gY(this)+24);
}
 
function ajt_popmenu(handler, args, x, y){
  var uris = new Array();
  uris[0] = handler+"?"+args;
  ajt_popmenus(uris, x, y);
}
 
function ajt_popmenus(uris, x, y){
  ajt_uris = uris;
  ajt_count = 0;
  ajt_total = uris.length;
  var pmdiv = ajt_getpmdiv();
  pmdiv.innerHTML = "";
  sX(pmdiv,x);
  sY(pmdiv,y);
  sE(pmdiv);
  ajt_nextpopmenu();
}
 
function ajt_nextpopmenu(){
  if(ajt_count==ajt_total) return;
  var uri = ajt_uris[ajt_count];
  ajt_count++;
  ajt_xhreq = ajt_getXMLHttpRequest();
  ajt_xhreq.open("GET",uri,true);
  ajt_xhreq.onreadystatechange = ajt_req_display;
  ajt_xhreq.send("");
}
 
function ajt_getPosX(e){
  var posx = 0;
  if (e.pageX) posx = e.pageX;
  else if (e.clientX) posx = e.clientX + document.body.scrollLeft;
  return posx;
}
 
function ajt_getPosY(e){
  var posy = 0;
  if (e.pageY) posy = e.pageY;
  else if (e.clientY) posy = e.clientY + document.body.scrollLeft;
  return posy;
}
 
function ajt_getAttNS(node,name){
  var ret = node.getAttribute(name);
  if(ret) return ret;
  return node.getAttribute(name.substring(name.indexOf(":")+1));
}
 
function ajt_td_onclick(e){
  if(!e){
    e = window.event;
    window.event.cancelBubble = true;
  } else {
    e.stopPropagation();
  }
  var args = ajt_getAttNS(this,"o2c:args");
  var uris = new Array();
  var urict = 0;
  if(args){
    // load local popup menu
    var idx=-1;
    var ls = this;
    while(ls){
        if((ls.nodeName=="TD")||(ls.nodeName=="td")) idx++;
        ls = ls.previousSibling;
    }
    var ths = this.parentNode.parentNode.parentNode.getElementsByTagName("th");
    var handler = ajt_getAttNS(ths[idx],"o2c:handler");
    if(handler){
        uris[urict] = handler+"?"+args;
        urict++;
    }
  }
  args = ajt_getAttNS(this.parentNode,"o2c:args");
  var handler = ajt_getAttNS(this.parentNode.parentNode.parentNode,"o2c:handler");
  if(handler&&args){
    uris[urict] = handler+"?"+args;
  }
  ajt_popmenus(uris, ajt_getPosX(e), ajt_getPosY(e));
}
 
function ajt_doc_onclick(e){
  hE(ajt_getpmdiv());
}
 
function ajtAttachAHandler(node){
  node.onclick = ajt_dropmenu;
  node.style.cursor = "pointer";
}
 
function ajtAttachAHandlers(el){
  var asa = el.getElementsByTagName("a");
  for(var i=0;i<asa.length;i++){
    var node = asa[i];
    var args = ajt_getAttNS(node,"o2c:handler");
    if(args) ajtAttachAHandler(node);
  }
}
 
function ajtAttachTDHandlers(el){
  var asa = el.getElementsByTagName("td");
  for(var i=0;i<asa.length;i++){
    var node = asa[i];
    node.onclick = ajt_td_onclick;
    node.style.cursor = "pointer";
  }
}
 
function ajtAttachHandlers(){
  ajtAttachAHandlers(gE("menudiv"));
  var tables = document.getElementsByTagName("table");
  for(var i=0;i<tables.length;i++){
    var node = tables[i];
    var args = ajt_getAttNS(node,"o2c:handler");
    if(args) ajtAttachTDHandlers(node);
  }
  document.onclick = ajt_doc_onclick;
}
