var reqs=new Array();


function clear(O) { if (O) if (O.childNodes) for (var i in O.childNodes) cf(O.childNodes[i]); }

function cf(O) {
  if (O) {
    if (O.childNodes) for (var i in O.childNodes) cf(O.childNodes[i]);
    if (O.parentNode && O.parentNode.removeChild)  O.parentNode.removeChild(O);
  }
}

function GE(id) { return document.getElementById(id); }


function hrefsx_init(O) {
	var cnt=0;
	if (!O)	O=document;
  var A=O.getElementsByTagName('A');
	for (var i in A) if (A[i].getAttribute) {
		if (!A[i].getAttribute("id"))	A[i].setAttribute("id","sxlink"+cnt); // need an id for setTimeout
		var href=A[i].getAttribute("href");
		A[i].setAttribute("oldhref",href);
		href=href.replace(/html/,'php');
		A[i].setAttribute("sxhref",href);
		if (A[i].getAttribute("rel")) {
			A[i].onclick=function() { 
				SXreq({id:this.getAttribute("rel"),url:this.getAttribute("sxhref")}); 
				this.setAttribute("href","javascript:;");
				setTimeout('GE("'+this.getAttribute("id")+'").setAttribute("href",GE("'+this.id+'").getAttribute("oldhref"))',100);
			}
		}
		cnt++;
	}

}

function SXload(id, url, prop, delay, first, cb, post) {

  if (reqs[id][1].readyState == 4) {
    var response=reqs[id][1].responseText;
    if (response!='1') 	{
      var O=GE(id);

      if (prop=='innerHTML') {
  	    clear(O);
        response='<div style="margin:0px; padding:0px;">'+response+'</div>'; /* height is always calculated correctly */
      }
      O[prop] = response; 
      execJS(GE(id));
			hrefsx_init(GE(id));
//      show_ctls(GE(id));
    }
    if (cb!=undefined) cb(id);
    if (delay != undefined) { setTimeout('SXreq(\''+id+'\',\''+url+'\',\''+prop+'\',\''+delay+'\',false, undefined, \''+post+'\');', delay); }
  }
}

function SXreq(O) {
//function SXreq(id, url, prop, delay, first, cb, post) {

  var id=O.id,  url=O.url, prop=O.prop, delay=O.delay, first=O.first, cb=O.cb, post=O.post;

  if (first==undefined) first = true;
  url+=(url.indexOf('?')==-1?'?':'&')+'sxreq_nocache='+Math.floor(Math.random()*999999);
  var url_mod=url; if (first) url_mod+=(url_mod.indexOf('?')!=-1?'&':'?')+'first_load=1';
  if (prop==undefined || prop=='null') prop='innerHTML';
  if (window.XMLHttpRequest) {
    reqs[id] = Array( url, new XMLHttpRequest() );
  } else if (window.ActiveXObject) {
    reqs[id] = Array( url, new ActiveXObject('Microsoft.XMLHTTP') );
  }
  if (reqs[id][1] != undefined) {
    reqs[id][1].onreadystatechange = function() { SXload(id, url, prop, delay, first, cb); };
		reqs[id][1].open((post?'POST':'GET'), url_mod, true);
		if (post) {
			reqs[id][1].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
/*
//			reqs[id][1].setRequestHeader("Content-type", "text/plain; charset=UTF-8");
//      reqs[id][1].overrideMimeType('text/xml; charset=utf-8');  
//			reqs[id][1].setRequestHeader("Charset", "UTF-8");
*/
			reqs[id][1].setRequestHeader("Content-length", post.length);
			reqs[id][1].setRequestHeader("Connection", "close");
		}
    reqs[id][1].send(post?post:'');
  }
}

function execJS(node) {

  var st = node.getElementsByTagName('SCRIPT');
  var strExec;
  for (var i=0; i<st.length; i++) {
    if (bSaf) strExec = st[i].innerHTML; else if (bOpera) strExec = st[i].text; else if (bMoz) strExec = st[i].textContent; else strExec = st[i].text;
    try { eval(strExec.split("<!--").join("").split("-->").join("")); } catch(e) { alert(e); }
  }
}

