﻿Object.prototype.extend=function(o){for (var _p in o.prototype){this.prototype[_p]=o.prototype[_p];}}
Object.prototype.extendto = function(destination, source) {for (var property in source) {destination[property] = source[property];}return destination;}
function CallBackObject(){this.XmlHttp=new this.GetHttpObject();}
CallBackObject.prototype.GetHttpObject=function()
{
    var xmlhttp;
    try{
        xmlhttp =new XMLHttpRequest ();
    }catch(e)
    {
        xmlhttp =new ActiveXObject ("Microsoft.XMLHTTP");
    }
    return xmlhttp ;
}
CallBackObject.prototype .DoCallBack=function(URL)
{
    if (this.XmlHttp)
    {
        this.XmlHttp.open("post",URL);
        this.XmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencode");
        var othis=this;
        this.XmlHttp.onreadystatechange=function()
        {
            othis.ReadyStateChange();
        }
        this.XmlHttp.send(null);
    }
}
CallBackObject.prototype.AbortCallBack=function(){if (this.XmlHttp){this.XmlHttp.abort();}}
CallBackObject.prototype.OnLoading=function(){}
CallBackObject.prototype.OnLoaded=function(){}
CallBackObject.prototype.OnInteractive=function(){}
CallBackObject.prototype.OnComplete=function(responseText,responseXml){}
CallBackObject.prototype.OnAbort=function(){}
CallBackObject.prototype.OnError=function(status,statusText){}
CallBackObject.prototype.ReadyStateChange=function ()
{
    if(this.XmlHttp.readyState==1)
        this.OnLoading();
    else if (this.XmlHttp.readyState==2)
        this.OnLoaded();
    else if (this.XmlHttp.readyState==3)
        this.OnInteractive();
    else if (this.XmlHttp.readyState==4)
    {
        if (this.XmlHttp.status==0)
            this.OnAbort();
        else if (this.XmlHttp.status==200)
            this.OnComplete(this.XmlHttp.responseText,this.XmlHttp.responseXML);
        else
            this.OnError(this.XmlHttp.status,this.XmlHttp.statusText);
    }
}