﻿function GeYouLoad() {
    this.load = function(url, fun) {
        url = url.replace("?", "?" + (new Date()).valueOf() + "=&");
        var onreadystatechange = function() {
            if (xhr.readyState == 0) {
                if (time1) {
                    clearInterval(time1);
                    time1 = null;
                }
            }
            else if (!requestDone && xhr && (xhr.readyState == 4)) {
                requestDone = true;
                if (time1) {
                    clearInterval(time1);
                    time1 = null;
                }
                try {
                    data = xhr.responseText; //xhr.responseXML
                    if (typeof (funEvent) == "function")
                        funEvent(data);
                }
                catch (e) {
                }
                xhr.abort();
                // Stop memory leaks
                xhr = null;
            }
        };
        var funEvent = null;
        var xhr = null;
        var time1 = null;
        var requestDone = null;
        var status = null;
        var data = null;

        funEvent = fun;
        requestDone = false;
        xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
        xhr.open("Get", url, true);
        xhr.setRequestHeader("Accept", "*.*");
        time1 = setInterval(onreadystatechange, 13);
        xhr.send();
    };

    this.loadObject = function(url, obj, f) {
        var parentObj = typeof (obj) == "string" ? document.getElementById(obj) : obj;
        var ff = function(data) {
            var ret = false;
            if (data != "") {
                parentObj.innerHTML = data;
                ret = true;
            }
            if (typeof (f) != "undefined")
                f(ret, parentObj);
        };
        this.load(url, ff);
    };

    this.insertObject = function(url, obj, elementType, refChild, f) {
        var parentObj = typeof (obj) == "string" ? document.getElementById(obj) : obj;
        if (typeof (refChild) == "undefined" || refChild == null) {
            if (parentObj.childNodes.length > 0)
                refChild = parentObj.childNodes[0];
            else
                refChild = null;
        }
        var ff = function(data) {
            var ret;
            ret = false;
            if (data != "") {
                var objTmp;
                elementType = typeof (elementType) == "undefined" ? "div" : elementType;
                objTmp = document.createElement(elementType);
                objTmp.innerHTML = data;
                var len = objTmp.childNodes.length;
                for (i = len - 1; i >= 0; i--) {
                    parentObj.insertBefore(objTmp.childNodes[i], refChild);
                }
                ret = true;
            }
            if (typeof (f) != "undefined")
                f(ret, parentObj);
        };
        this.load(url, ff);
    };


    this.appendObject = function(url, obj, elementType, f) {
        var parentObj = typeof (obj) == "string" ? document.getElementById(obj) : obj;
        var ff = function(data) {
            var ret;
            ret = false;
            if (data != "") {

                var objTmp;
                elementType = typeof (elementType) == "undefined" ? "div" : elementType;
                objTmp = document.createElement(elementType);
                objTmp.innerHTML = data;
                var len = objTmp.childNodes.length;
                for (i = len - 1; i >= 0; i--) {
                    parentObj.appendChild(objTmp.childNodes[i]);
                }
                ret = true;
            }
            if (typeof (f) != "undefined")
                f(ret, parentObj);
        };
        this.load(url, ff);
    };

    this.exec = function(url) {
        var ff = function(data) {
            var head = document.getElementsByTagName("head")[0] || document.documentElement,
                script = document.createElement("script");
            script.type = "text/javascript";
            script.text = data;
            head.insertBefore(script, head.firstChild);
            head.removeChild(script);
        }
        this.load(url, ff);
    }
}
 
    

