var _Loadings = 0;
var $_REQUEST = {
    Values: new Array(),
    List: new Array(),
    Hash: new String(),
    toStr: function(){
		var add = new String();
		for(var j=0;j<this.List.length;j++){
	        var i = this.List[j];
			add += ":"+encodeURIComponent(i)+"="+encodeURIComponent($_REQUEST.Values[i]);
		}
		return add;
    },
    toStrReplace: function(name,value){
		var add = new String();
		var c = false;
	    for(var j=0;j<this.List.length;j++){
	    	var i = this.List[j];
			if(name == i){
			    add += ":"+encodeURIComponent(i)+"="+encodeURIComponent(value);
			    c = true;
			}
			else{
			    add += ":"+encodeURIComponent(i)+"="+encodeURIComponent($_REQUEST.Values[i]);
			}
		}
		if(!c){
		    add += ":"+encodeURIComponent(name)+"="+encodeURIComponent(value);
		}
		return add;
    },

    toUrl: function(){
		var add = new String();
	    for(var j=0;j<this.List.length;j++){
	    	var i = this.List[j];
			add += "&"+encodeURIComponent(i)+"="+encodeURIComponent($_REQUEST.Values[i]);
		}
		return add;
    },

    ParseHash: function(){
		if(location.hash.indexOf(':') !== -1){
		    this.Hash = location.hash.substr(0,location.hash.indexOf(':'));
		}else{
		    this.Hash = location.hash;
		}
		delete this.Values;
		delete this.List;
		this.Values = new Array();
		this.List = new Array();
		if(location.hash.indexOf(':') !== -1){
		    var par = location.hash.substr(location.hash.indexOf(':'));
		    var parts = location.hash.split(":");
		    if(parts.length <= 1)
				return;
		    for(var i=1;i<parts.length;i++){
		    	var prop = parts[i].split("=");
		    	if(prop[0] && prop[1]){
		    		this.Values[prop[0]] = prop[1];
		    		this.List.push(prop[0]);
		    	}
		    }
		    return;
		}
		
		return;
    },
    Add: function(name,value){
    	if(this.List.inArray(name) === false)
    		this.List.push(name);
    	this.Values[name] = value;
    },
    Get: function(name){
    	if(this.List.inArray('sort') === false){
    		return undefined;
    	}else{
    		return this.Values[name];
    	}
    }

}
function load_xml(url,callback,obj,loader){
    var xmlhttp;
    xmlhttp=0;
    if(loader && (typeof loader == "function")){
		loader();
		_Loadings++;
    }
    if (window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
    if(xmlhttp!=null){
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4){
                if (xmlhttp.status==200){
                    if(browser == 'IE'){
                        var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
                        xml_doc.loadXML(xmlhttp.responseText);
                    }else{
                        var parser=new DOMParser();
                        var xml_doc=parser.parseFromString(xmlhttp.responseText,"text/xml");
                    }
                    var js = xml_doc.getElementsByTagName("javascript").item(0);
                    if(js && js.nodeName == "javascript"){
                    	eval(js.childNodes[0].data);
                    	return;
                    }
                    if(callback){
                        callback(xml_doc,obj);
			
		    }
		    if(loader && !(--_Loadings)){
				//loader.style.display = "none";
				HideLoader();
		    }
                }else{
                    //alert("Problem retrieving XML data"+xmlhttp.status);
                }
            }
        };
//      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    
	var add = $_REQUEST.toUrl();
	if(add.length){
	    if(url.indexOf('?') !== -1){
		url += add;
	    }else{
		url += "?"+add.substr(1);
	    }
	}
	url = url.replace(/\.rand=[^&]+/,'');
	if(url.indexOf('?') !== -1){
	    url += "&.rand="+_rand;
	}else{
	    url += "?.rand="+_rand;
	}
        xmlhttp.open("GET",url,true);
        xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(null);
    }else{
        alert("Your browser does not support XMLHTTP.");
    }
}

function load_html(url,callback,obj,loader){
    var xmlhttp;
    xmlhttp=0;
    
    if(loader){
		loader();
		_Loadings++;
    }

    if (window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
    if(xmlhttp!=null){
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4){
                if (xmlhttp.status==200){
                    if(callback){
                        callback(xmlhttp.responseText,obj);
			
			    	}
				    if(loader && !(--_Loadings)){
					
						HideLoader();
				    }
                }else{
                    //alert("Problem retrieving XML data"+xmlhttp.status);
                }
            }
        };
//      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlhttp.open("GET",url,true);
        xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");

        xmlhttp.send(null);
    }else{
        alert("Your browser does not support XMLHTTP.");
    }
}

function load_xml_post(url,postdata,callback,obj,loader){
    var xmlhttp;
    xmlhttp=0;
    
    if(loader){
		loader();
		_Loadings++;
    }
    
    if (window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
    if(xmlhttp!=null){
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4){
                if (xmlhttp.status==200){
                    if(browser == 'IE'){
                        var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
                        xml_doc.loadXML(xmlhttp.responseText);
                    }else{
                        var parser=new DOMParser();
                        var xml_doc=parser.parseFromString(xmlhttp.responseText,"text/xml");
                    }
                    var js = xml_doc.getElementsByTagName("javascript").item(0);
                    if(js && js.nodeName == "javascript"){
                    	eval(js.childNodes[0].data);
                    	return;
                    }
                    if(callback){
                        callback(xml_doc,obj);
			//callback(xmlhttp.responseText);
		    }
                }else{
                   // alert("Problem retrieving XML data"+xmlhttp.status);
                }
            }
        };
//      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlhttp.open("POST",url,true);
        xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");

        xmlhttp.send(postdata);
    }else{
        alert("Your browser does not support XMLHTTP.a");
    }
}
