// ajax functions
var xmlHttp
var htmlId
var x
var y

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

function GetXmlHttpObject(handler){
    var objXmlHttp=null
    if (navigator.userAgent.indexOf("Opera")>=0){
        alert("This example doesn't work in Opera")
        return
    }
    if (navigator.userAgent.indexOf("MSIE")>=0){
        var strName="Msxml2.XMLHTTP"
        if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
            strName="Microsoft.XMLHTTP"
        }
        try{
            objXmlHttp=new ActiveXObject(strName)
            objXmlHttp.onreadystatechange=handler
            return objXmlHttp
        }
        catch(e){
            alert("Error. Scripting for ActiveX might be disabled")
            return
        }
    }
    if (navigator.userAgent.indexOf("Mozilla")>=0){
        objXmlHttp=new XMLHttpRequest()
        objXmlHttp.onload=handler
        objXmlHttp.onerror=handler
        return objXmlHttp
    }
}

// DHTML

function stateChanged() {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
			if($(htmlId).innerHTML)
        $(htmlId).innerHTML=xmlHttp.responseText
		}
}

//////////////////////////////////////////////////////
function ajax_show(url, id){
        htmlId=id;
        xmlHttp=GetXmlHttpObject( stateChanged );
        xmlHttp.open("GET", url , true);
        xmlHttp.send(null);
}

function ajax_show_event(url, id, e){
        htmlId=id;
        document.getElementById(htmlId).style.left=e.clientX;
        document.getElementById(htmlId).style.top=e.clientY;
        xmlHttp=GetXmlHttpObject( stateChanged );
        xmlHttp.open("GET", url , true);
        xmlHttp.send(null);
}

/* class ajax for submit get/post of forms */
function collect(a,f){
    var n=[];for(var i=0;i < a.length;i++){
        var v=f(a[i]);if(v!=null)n.push(v)
    }
    return n
    };

ajax={};

ajax.x=function(){
    try{
        return new ActiveXObject('Msxml2.XMLHTTP')
    }
    catch(e){
        try{
            return new ActiveXObject('Microsoft.XMLHTTP')
        }
        catch(e){
            return new XMLHttpRequest()
        }
    }
};

ajax.serialize=function(f){
    var g=function(n){
        return f.getElementsByTagName(n)
    };
    var nv=function(e){
        if(e.name)
            return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);
        else return ''
    };
    var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});
    var s=collect(g('select'),nv);
    var t=collect(g('textarea'),nv);
    return i.concat(s).concat(t).join('&');
};

ajax.send=function(u,f,m,a){
    var x=ajax.x();
    x.open(m,u,true);
    x.onreadystatechange=function(){
        if(x.readyState==4)
            f(x.responseText)
    };
    if(m=='POST')
        x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    x.send(a)
};

ajax.get=function(url,func){
	ajax.send(url,func,'GET')
};

ajax.gets=function(url){
	var x=ajax.x();
	x.open('GET',url,false);
	x.send(null);
	return x.responseText
};

ajax.post=function(url,func,args){
	ajax.send(url,func,'POST',args)
};

ajax.update=function(url,elm){
	var e=$(elm);
	var f=function(r){
		e.innerHTML=r
	};
		ajax.get(url,f)
};

ajax.submit=function(url,elm,frm){
	var e=$(elm); 
	var f=function(r){
		e.innerHTML=e.innerHTML+r;
	}
	ajax.post(url,f,ajax.serialize(frm))
}; 