﻿function Ajax(pnl,callback,args)
{
    var xmlHttp = null;
    var basePanel = pnl;
    var afterLoad = callback;
    var internalAfterLoadArgs = null;
    var afterLoadArgs = args;
    this.load = function(src) {
        if (!xmlHttp)
            xmlHttp = getXmlHttpObject();
        if (!xmlHttp)
            alert(".مرورگر اینترنت شما از آژاکس پشتیبانی نمیکند\n\r.امکان بارگزاری صفحه بصورت دینامیک وجود ندارد");
        else {
            this.abort();
            setBasePanelOnWaiting();
            //xmlHttp.open('GET', src + (src.indexOf("?") > -1 ? "&" : "?") + "pageLoad=partial&id=" + Math.random(), true);
            if (!afterLoad)
                afterLoad = internalAfterLoad;
            if (!afterLoadArgs)
                afterLoadArgs = internalAfterLoadArgs;
            if (src == '') {
                if (afterLoad != null)
                    afterLoad("", afterLoadArgs);
            }
            else {
                src = src + (src.indexOf("?") > -1 ? "&" : "?") + "pageLoad=partial";
                xmlHttp.open('GET', src, true);
                xmlHttp.onreadystatechange = readyStateChange;
                xmlHttp.send(null);
            }
        }
    }
    this.abort = function()
    {
        if(xmlHttp)
            xmlHttp.abort();
        //basePanel.innerHTML = 'sssssssssss';
    }
    var readyStateChange = function() {
        if (typeof xmlHttp == 'undefined' || !xmlHttp) return;
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {
            var result = xmlHttp.responseText;
            if (xmlHttp.status != 200 && xmlHttp.status != 304) {
                var status = xmlHttp.status;
                if (status == 500) {
                    var indx1 = result.indexOf('<title>') + 7;
                    var indx2 = result.indexOf('</title>');
                    alert("خطا در بارگذاری صفحه:\r\n" + result.substring(indx1, indx2));
                }
                else if (status != 0)
                    alert('Http Error : ' + xmlHttp.status + "\r\n" + result);
                result = ""
            }
            var dvloading = document.getElementById('loading');
            if (dvloading) 
                document.body.removeChild(dvloading);
            if (afterLoad != null)
                afterLoad(result, afterLoadArgs);
        }
    }

    var setBasePanelOnWaiting = function() {
        var dv = document.createElement("div");
        dv.id = "loading";
        dv.innerHTML = "<div class=loading><table><tr><td><img src='" + rootFolder + "Images/Loading.gif' /></td><td>در حال دریافت اطلاعات ...</td></tr></table></div>";
        document.body.appendChild(dv);
    }
    var internalAfterLoad = function(html,args)
    {
        if(basePanel)
        {
            while(basePanel.childNodes.length > 0)
                basePanel.removeChild(basePanel.childNodes[0]);
            var div = document.createElement("div");
            div.innerHTML = html;
            basePanel.appendChild(div);
        }
    }
    getXmlHttpObject = function () 
    {
        try
        {
            return new XMLHttpRequest();
        }
        catch(e1)
        {
            try
            {
                return new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e2)
            {
                try
                {
                    return new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(e3)
                {
                    return false;
                }
            }    
        }
    }
}
