/* script by Karas  2010-02-06 AM */

function $id(id){ return document.getElementById(id); }
function $n(name){ return document.getElementsByName(name); }
function $t(p, tagName){ return p.getElementsByTagName(tagName); }


var ZGX = ZGX||{}


ZGX.addEvent = function(e, t, f){
	if(e.attachEvent){
		e.attachEvent('on'+t,f);
	}else if(e.addEventListener){
		e.addEventListener(t,f,false);
	}else{
		e['on'+t] = f;
	}
}


ZGX.addBookmark = function(){
	var url = arguments[0]||location.href;
	var txt = arguments[1]||document.title;
	if(window.sidebar){
		window.sidebar.addPanel(txt, url, ""); 
	}else if(document.all){
		window.external.AddFavorite(url, txt);
	}
}


ZGX.getWinSize = function(){
	var h,w;
	var bw = this.getBrowser();
	var dt = this.hasDoctype();
	if(bw=="firefox"){
		h = window.innerHeight;
		w = document.documentElement.clientWidth+21;
	}else if(bw=="ie6"){
		h = document.documentElement.offsetHeight;
		w = document.documentElement.offsetWidth;
	}else if(bw=="ie7"){
		h = document.documentElement.offsetHeight;
		w = document.documentElement.offsetWidth;
		if(dt){w=w+21;}
	}else if(bw=="ie8"){
		h = document.documentElement.offsetHeight;
		w = document.documentElement.offsetWidth;
	}else{
		h = document.documentElement.offsetHeight;
		w = document.documentElement.offsetWidth;
	}
	return {h:h,w:w};
}


ZGX.hasDoctype = function(){
	var ret = false;
	try{
		if(document.compatMode=="BackCompat")
		   ret = false;
		else if(document.compatMode=="CSS1Compat")
		   ret = true;
		else
		   ret = true;
	}catch(e){ ret = false }
	return ret;
}


ZGX.getBrowser = function(){ 
	var b = "ie6";
	var ua = navigator.userAgent; 
	if(ua.indexOf("compatible")>-1){
		if(ua.indexOf("MSIE 6.0") > -1)
		   b = "ie6"
		else if(ua.indexOf("MSIE 7.0") > -1)
		   b = "ie7";
		else if(ua.indexOf("MSIE 8.0") > -1)
		   b = "ie8";
	}
	else if(ua.indexOf("Gecko") > -1)
		b = "firefox";
  return b;
}


ZGX.SimpleAjax = {

    pool : [],

    createXHR : function(){
        if(window.XMLHttpRequest){
            return new XMLHttpRequest();
        }else{
            var xml = ['MSXML2.XMLHTTP.6.0'
                      ,'MSXML2.XMLHTTP.5.0'
                      ,'MSXML2.XMLHTTP.4.0'
                      ,'MSXML2.XMLHTTP.3.0'
                      ,'MSXML2.XMLHTTP'
                      ,'MSXML.XMLHTTP'
                      ,'Microsoft.XMLHTTP'];
            for(var i=0;i<xml.length;n++){
                try{return new ActiveXObject(xml[i]);}catch(e){}
            }
        }
    },

    getXHR : function(){
       for(var i=0;i< this.pool.length;i++){
            if(this.pool[i].readyState==0||this.pool[i].readyState==4) {
                return this.pool[i];
            }
        }
        this.pool[this.pool.length] = this.createXHR();
        return this.pool[this.pool.length - 1];
    },
	
	rebuildURL : function(url, qstr){
		var nurl = "";
		if(url.indexOf("?") < 0){
			nurl = url + "?" + qstr;
		}else if(url.indexOf("?")==url.length-1||url.indexOf("&")==url.length-1){
			nurl = url + qstr;
		}else{
			nurl = url + "&" + qstr;
		}
		return nurl;
	},

    send : function(req){
        var xhr = this.getXHR();
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                if(xhr.status == 200){
					if(req.success){req.success(xhr);}
                }else{
                    if(req.failure){req.failure(xhr);}
                }
            }
        }
        if(req.method == "post"){
            xhr.open("POST", req.url, true);
            xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
            xhr.send(req.data);
        }else{
            xhr.open("GET", this.rebuildURL(req.url, req.data), true);
            xhr.setRequestHeader("If-Modified-Since", "0");
            xhr.send(null);
        }
    }
};
