
 //--  Http XML request ----

 var IE=document.all;
 var BASE_URL="/";
 function newHttpXMLRequest() {
 	var xmlRequest=false;
 	
 	if (window.ActiveXObject) {
 		for( var i = 5; i; i-- )
            {
                try
                {
                    if( i == 2 )
                    {
                        xmlRequest = new ActiveXObject( "Microsoft.XMLHTTP" );    
                    }
                    else
                    {
                        xmlRequest = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                    }
                    break;
                }
                catch( excNotLoadable )
                {                        
                    xmlRequest = false;
                }
            }
 	} else {
 		if (window.XMLHttpRequest) { // Mozilla, Safari,...
            xmlRequest = new XMLHttpRequest();
            if (xmlRequest.overrideMimeType) {
               xmlRequest.overrideMimeType('text/xml');
            }
        } 
 	}
    if (!xmlRequest) {
       error('Unknown Browser ');
       return false;
    }
    return xmlRequest;   
 }
 
 function Connection(attributes) {
 	this.xmlReq=newHttpXMLRequest();
 	this.attributes=attributes;
 	
 	this.load=function(url) {
 		if (IE) {
 			this.url=BASE_URL+url;
 		} else {
	 		this.url=url;
 		}
  		var _req=this.xmlReq;
 		var _url=this.url;
 		var _this=this;
 		var _attributes=this.attributes;
 		
	 	this.xmlReq.onreadystatechange = function() {
	 		if (_req.readyState==4) {
		 		_this.parseText(_this,_url,_req.responseText,_attributes);
	 			_this.parseXML(_this,_url,_req.responseXML,_attributes);
	 		}
	 	};
	 	
 		this.xmlReq.open('GET', url, true);
 		if (IE) {
 			this.xmlReq.send();
 		} else {
 			this.xmlReq.send(null);
 		}
 	}
 	
 	this.parseXML=function (connection,url,xml,attributes) {
 		//log("xml "+url+" loaded successfully "+xml);
 	};
 	
 	this.parseText=function (connection,url,text,attributes) {
 		//log("xml "+url+" loaded successfully "+text);
 	};
 	
 	this.getXMLReq=function () {
 		return this.xmlReq;
 	};
 }

//-------------------------


function loadURL(url) {
	document.location.href=url;
}

function ajax(url,id) {
    var con=new Connection({'id':id});
    con.parseText=function (connection,url,text,attributes) {
    	var e=document.getElementById(attributes.id);
    	//alert("e:"+e+",text:"+text);
    	e.innerHTML=text;
    }
    con.load(url);
}

function ajaxCall(url) {
    var con=new Connection({'id':id});
    con.parseText=function (connection,url,text,attributes) {
    }
    con.load(url);
}

function ajaxName(url,name) {
	var con=new Connection({'name':name});
	con.parseText=function (connection,url,text,attributes) {
		var	e=getElementsByName(attributes.name)[0];
		//alert("e:"+e+",text:"+text);
    	e.innerHTML=text;
    }
    con.load(url);
}

function findParentComponentByName(source,name) {
	var par=source.parentNode;
	alert(par+":"+par.attributes.name);
	if (par==null || par.attributes.name==name) {
		return par;
	}
	return findParentComponent(par);
}

function getElementsByName(name) {
	if (IE) {
		return getElementsByNameRecur(document,name);
	} else {
		return document.getElementsByName(name);
	}
}

function getElementsByNameRecur(element,name) {
	var ret=new Array();
	if (element.attributes && element.attributes.name && element.attributes.name.nodeValue==name) {
		ret[ret.length]=element;
	}
	var kids=element.childNodes;
	for(var j=0;j<kids.length;j++) {
		var rr=getElementsByNameRecur(kids[j],name);
		for(var i=0;i<rr.length;i++) {
			ret[ret.length]=rr[i];
		}
	}
	return ret;
}