// $Id: importxml.js,v 1.1 2006/08/04 13:00:14 shakeela Exp $
var rq = new Array();
var paramsArr = new Array();

function importxml(url,f, paramsObj) {
    return handleRequest(url,f, paramsObj);
}
function importxmlForForm(formElem,f, paramsObj) {
	if(!paramsObj) {
		paramsObj = '';
	}
    	return handleRequest(formElem.action,f, paramsObj, formElem);
}
function handleRequest( u, f, paramsObj, formElem) {
        loadon();
	u += ( ( u.indexOf('?') + 1 ) ? '&' : '?' ) + ( new Date() ).getTime();
	if( window.XMLHttpRequest ) {
		var xmlObject = getXmlObj();
		rt = rq.length;
		rq[rt] = xmlObject;
		var paramsLen = paramsArr.length;
		paramsArr[paramsLen] = paramsObj;
		rq[rt].onreadystatechange = new Function( 'if( rq['+rt+'].readyState == 4 && rq['+rt+'].status < 300 ) { '+f+'(rq['+rt+'].responseXML, paramsArr['+ paramsLen +']); loadoff();}' );
		if(formElem) {
			handleForm(rq[rt], u, formElem);
		} else {
			rq[rt].open("GET", u, true);
			rq[rt].send(null);
		}
		return true;
        }
	if( !navigator.__ice_version && window.ActiveXObject ) {
		try {	
			var xmlObject = getXmlObj(formElem);
			rt = rq.length
			rq[rt] = xmlObject;
			var paramsLen = paramsArr.length;
			paramsArr[paramsLen] = paramsObj;
			rq[rt].onreadystatechange = new Function( 'if( rq['+rt+'].readyState == 4) {var toSend = rq['+rt+']; if(rq['+rt+'].responseXML) {toSend = rq['+rt+'].responseXML} '+f+'(toSend, paramsArr['+ paramsLen +']); loadoff();}' );
			if(formElem) {
				handleForm(rq[rt], u, formElem);
			} else {
			   rq[rt].load(u);
			}    
			return true;
		} catch(e) {alert(e)}
        }
	return false;
}


function handleForm(req, u, formElem) {
	var nvp = getFormQS(formElem);
	req.open('POST', u, true);
	req.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8");
	req.setRequestHeader("Content-length", nvp.length);
	req.send(nvp);
}


function getFormQS(frm) {
	var qs="";
	for(var c = 0 ; c < frm.elements.length ; c++) {
		var el = frm.elements.item(c);  // [];
		switch(el.type) {
			case "textarea":
			case "hidden":
			case "text":
				//alert(el.type);
				qs+=el.name+"="+encodeURIComponent(el.value)+"&";
				break;
			case "select-one":
				sv = el.options[el.selectedIndex].value;
				qs+=el.name+"="+encodeURIComponent(sv)+"&";
				break;
			case "select-multiple":
				ss = ""
				for(var so = 0 ; so < el.options.length ; so++) {
					if(el.options[so].selected == true) {
						ss+=(ss=="")?"":"&"
							sv = el.options[so].value;
						ss+=el.name+"="+encodeURIComponent(sv);
					}
				}
				ss+=(ss=="")?"":"&"
				qs+=ss;
				break;
			case "radio":
			case "checkbox":
				if(el.checked == true) {
					qs+=el.name+"="+encodeURIComponent(el.value)+"&";
				}
				break;
			default:
				qs+=el.name+"="+encodeURIComponent(el.value)+"&";
		}
	}
	//alert(qs);
	qs = qs.substr(0,(qs.length - 1));
	return qs;
}

function loadoff() {
	var loading = document.getElementById('loading');
	if(loading) {
		loading.style.display = 'none';
	}
}
function loadon() {
	var loading = document.getElementById('loading');
	if(loading) {
		loading.style.display = 'block';
	}
}

function getXmlObj(formElem) {
	var xmlObject = null;
   	if(document.all) {
		var xmlObject = null;
		if(!formElem) {
			try { 
				xmlObject = new ActiveXObject('Microsoft.XMLDOM');
			} catch(e) {}
		}
		if(xmlObject == null) {
			try { 
				xmlObject = new ActiveXObject('Msxml2.XMLHTTP');
			} catch(e) {}
		}
		if(xmlObject == null) {
			try { 
				xmlObject = new ActiveXObject('Microsoft.XMLHTTP'); 
			} catch(e) {
				throw new Exception('Browser not supported');
			}
		}
	} else {
		xmlObject = new XMLHttpRequest();
	}
	return xmlObject;
}

function getHtmlForForm(formElem,f, paramsObj) {
	if(!paramsObj) {
		paramsObj = '';
	}
    	return getHtml(formElem.action,f, paramsObj, formElem);
}


function getHtml(url, fn, paramsObj, formElem) {
	var xmlObject = null;
	if( window.XMLHttpRequest ) {
		xmlObject = getXmlObj(true);
	} else if( !navigator.__ice_version && window.ActiveXObject ) {
		xmlObject = getXmlObj(true);
	} else {
		return false;
	}
  	
	rt = rq.length
	rq[rt] = xmlObject;
	var paramsLen = paramsArr.length;
	paramsArr[paramsLen] = paramsObj;
  	if (xmlObject) {
	    rq[rt].onreadystatechange = new Function( ' if (rq[' + rt +'].readyState==4) { ' + fn + '(rq[' + rt +'].responseText, paramsArr[' + paramsLen + ']) }');
		if(formElem) {
			handleForm(rq[rt], url, formElem);
		} else {
		    rq[rt].open('GET', url, true);
		    rq[rt].setRequestHeader("Content-type","text/html");
		    rq[rt].setRequestHeader("Content-length", 0);
		    rq[rt].send(null);
		}
      	}
      	return true;

}

