
var ajaxCache = new Object();

function openPopup(url){
 window.open(url,'blank',"height=550, width=798, scrollbars=1");
 return false;
}

document.addEvent = function(el, ev, fn){
 if (el.attachEvent){
  el.attachEvent('on'+ev,fn)
 } else {
  el.addEventListener(ev,fn,false)
 }
}

document.ajaxError = function(){
 alert("An ajax request failed");
}

document.closePopup = function(){
 document.cover.style.display = "none";
}

document.popup = function(url){
 if (!document.cover){
  document.cover = document.createElement("div");
  cover = document.cover;
  cover.id = "popcover";
  popup = document.createElement("div");
  popup.id='popup';
  cover.popup = popup;
  cover.appendChild(popup);
  document.body.appendChild(cover);
 }
 popup = document.cover.popup;
 popup.innerHTML = "<center><img src='images/spinlarge.png'></center>";
 document.cover.style.display = "block";
 aj = ajax(url,function(){
  document.cover.popup.innerHTML = this.responseText;
 },document.ajaxError,true);
 aj.send();
 return false;
}

function ajax(vars,onSuccess,onFail,caching){
 obj = false;
 if (caching){
  if (ajaxCache[vars]){
   obj = new Object();
   obj.onsuccess = onSuccess;
   obj.open = function(x,y){};
   obj.send = function(){
    if (this.onsuccess) this.onsuccess(this);
   };
   obj.vars = vars;
   obj.responseText = ajaxCache[vars];
  }
 }
 if (!obj){
  if (window.XMLHttpRequest){
   obj = new XMLHttpRequest();
  } else {
   obj = new ActiveXObject("Microsoft.XMLHTTP");
  }
  obj.onsuccess = onSuccess;
  obj.onfail = onFail;
  if (caching){
   obj.caching = true;
   obj.vars = vars;
  }
  obj.onreadystatechange = function(){
   if (this.readyState==4){
    if (this.status==200){
     if (this.caching) ajaxCache[this.vars] = this.responseText;
     if (this.onsuccess) this.onsuccess(this);
    } else {
     if (this.onfail) this.onfail(this);
    }
   }
  }
  obj.open("GET",vars,true);
 }
 return obj;
}

