d=document;
var popupstage=0;
var shadow;
var overlay;

var ro;
var inProgress=false;
var arr = new Array();
var response='';
var loading=0;

function Req(url,caption,func,data)
{
 this.url=url;
 this.caption=caption;
 this.func=func;
 this.data=data;
}

function handleResponse()
{
 if(ro.readyState == 4) {
  var req = arr.shift();
  response = ro.responseText;
  LogMsg('Request done, evaluating: '+req.func);
  eval(req.func);
  inProgress=false;
  window.status='';
  if (arr.length>0) ProcessNew();
 }
}

function ProcessNew()
{
 if (arr.length == 0) return;
 inProgress=true;
 window.status='loading: '+arr[0].caption;
 var browser = navigator.appName;
 if(browser == "Microsoft Internet Explorer"){
   ro = new ActiveXObject("Microsoft.XMLHTTP");
 }else{
   ro = new XMLHttpRequest();
 }

 if (arr[0].data!='') {
  ro.open('POST', arr[0].url);
  ro.onreadystatechange = handleResponse;
  ro.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  ro.send(arr[0].data);
 } else {
  ro.open('GET', arr[0].url);
  ro.onreadystatechange = handleResponse;
  ro.send(null);
 }
}

function PutRequest(url,caption,func,data) {
 try {
  LogMsg('Request for '+url);
  req = new Req(url,caption,func,data);
  arr.push(req);
  if (!inProgress) ProcessNew();
 } catch(e) {
  alert(e);
 }
}

function LoadScript(url)
{
 var s=d.getElementById('SCRIPT'+url);
 if (s) {
  d.getElementsByTagName('head')[0].removeChild(s);
  LogMsg('Script removed');
 }
 var script = d.createElement('script');
 script.setAttribute('type', 'text/javascript');
 script.setAttribute('src', url);
 script.setAttribute('id','SCRIPT'+url);
 d.getElementsByTagName('head')[0].appendChild(script);
 LogMsg('Script appended');
}


function PopUpOpacity()
{
  shadow.style.opacity=popupstage/50;
  shadow.style.filter='alpha(opacity='+popupstage*2+')';
  overlay.style.opacity=popupstage/25;
  overlay.style.filter='alpha(opacity='+popupstage*4+')';
}

function IncPopUp()
{
 if (popupstage<25) {
  popupstage++;
  PopUpOpacity();
  setTimeout('IncPopUp()',40);
 }
}

function DecPopUp()
{
 if (popupstage>0) {
  popupstage--;
  if (popupstage>0) {
   PopUpOpacity();
   setTimeout('DecPopUp()',40);
  } else {
   shadow.style.display='none';
   overlay.style.display='none';
  }
 }
}

function ShowPopUp(url,caption,func)
{
 if (popupstage==0) {
  d.getElementById('modalbox').style.display='none';
  d.getElementById('popupbody').innerHTML='Loading...';
  PutRequest(url,caption,'SetPopUpData(\''+func+'\')','');
  shadow=d.getElementById('shadow');
  overlay=d.getElementById('overlay');
  shadow.style.display='block';
  overlay.style.display='block';
  popupstage=1;
  IncPopUp();
  setTimeout('IncPopUp()',40);
 }
}

function HidePopUp()
{
 if (popupstage==25) {
  DecPopUp();
  setTimeout('DecPopUp()',40);
 }
}

function SetPopUpData(func)
{
 LogMsg('PopUpData');
 var obj=d.getElementById('popupbody');
 obj.innerHTML=response;
 LogMsg('Func: '+func);
 eval(func);
}

function PlacePopUp()
{
 var left=d.body.scrollLeft;
 var top=d.body.scrollTop;
 shadow.style.left=left;
 shadow.style.top=top;
 overlay.style.left=left;
 overlay.style.top=top;
}

function evResize()
{
 if (popupstage) { PlacePopUp(); }
}

function evScroll()
{
 if (popupstage) { PlacePopUp(); }
}

function PopUpWnd(url,title,w,h)
{
 wleft=(screen.width-w)/2;
 wtop=(screen.height-h)/2;
 var w=window.open(url,title,'menubar=no,toolbar=no,resizeable=no,width='+w+',height='+h+',left='+wleft+',top='+wtop);
 w.focus();
}

var log='';
function LogMsg(msg)
{
 log=log+msg+"\n";
}

function StartLog()
{
 log='';
 setTimeout('alert(log)',2000);
}

function SetLang(l)
{
 d.cookie='LANG='+l+'; path=/; expires=Mon, 4-Jan-16 00:00:00 GMT';
}
