//nadc.js类库
//Create by zxf Update by zxf,
//华中科技大学网络应用研发中心（NADC）
(function() {
    if (!window.nadc) { window['nadc'] = {} }

    function $(id) {
        if (typeof id == 'string') {
            return document.getElementById(id);
        } else if (typeof id == 'object') {
            return id;
        } else {
            return false;
        }
    }
    window['nadc']['$'] = $;

    function $v(node, attr) {
        if (!(node = $(node))) { return false; }
        return node.getAttribute(attr);
    }
    window['nadc']['$v'] = $v;

    function $ba(parent, nodeName, attrName, attrValue) {
        if (!(parent = $(parent))) { return false; }
        var ele = new Array();
        var all = parent.getElementsByTagName(nodeName);
        for (var i = 0; i < all.length; i++) {
            if (!$v(all[i], attrName)) continue;
            if ($v(all[i], attrName) == attrValue) ele.push(all[i]);
        }
        return ele;
    }
    window['nadc']['$ba'] = $ba;

    function Trim(str) {
        return str.replace(/(^\s*)|(\s*$)/g, "");
    }
    window['nadc']['Trim'] = Trim;

    function CheckNull(id) {
        if (Trim($(id).value) == null || Trim($(id).value) == "") {
            return false;
        } else {
            return true;
        }
    }
    window['nadc']['CheckNull'] = CheckNull;

    function CheckEquel(id1, id2) {
        if (Trim($(id1).value) == Trim($(id2).value)) {
            return true;
        } else {
            return false;
        }
    }
    window['nadc']['CheckEquel'] = CheckEquel;

    function CheckUrl(id) {
        var myreg = new RegExp("((^http)|(^https)|(^ftp)):\/\/(\\w)+\.(\\w)+");
        if (myreg.test($(id).value)) {
            return true;
        } else {
            return false;
        }
    }
    window['nadc']['CheckUrl'] = CheckUrl;

    function CheckEmail(id) {
        var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
        if (myreg.test($(id).value)) {
            return true;
        } else {
            return false;
        }
    }
    window['nadc']['CheckEmail'] = CheckEmail;

    function ReLink(url) {
        window.location.href = url;
    }
    window['nadc']['ReLink'] = ReLink;

    function AddEvent(node, type, listener) {
        if (node.addEventListener) {
            node.addEventListener(type, listener, false);
            return true;
        } else if (node.attachEvent) {
            node.attachEvent('on' + type, listener);
            return true;
        }
        return false;
    }
    window['nadc']['AddEvent'] = AddEvent;

    function DelEvent(node, type, listener) {
        if (node.removeEventListener) {
            node.removeEventListener(type, listener, false);
            return true;
        } else if (node.detachEvent) {
            node.detachEvent('on' + type, listener);
            return true;
        }
        return false;
    }
    window['nadc']['DelEvent'] = DelEvent;

    function DelBubble(e) {
        if (e.stopPropagation) return e.stopPropagation();
        else return e.cancelBubble = true;
    }
    window['nadc']['DelBubble'] = DelBubble;

    function DelPre(e) {
        if (e.preventDefault) return e.preventDefault();
        else return e.returnValue = false;
    }
    window['nadc']['DelPre'] = DelPre;

    function GetPostion(obj) {
        if (!(obj = $(obj))) { return false; }
        var pos = {};
        pos.x = 0;
        pos.y = 0;
        do {
            pos.x += obj.offsetLeft || 0;
            pos.y += obj.offsetTop || 0;
            obj = obj.offsetParent;
        } while (obj);
        return pos;
    }
    window['nadc']['GetPostion'] = GetPostion;

    function Ajax() {
        this.ajax = false;
        this.Init = function() {
            var ajax = false;
            if (window.XMLHttpRequest) {
                ajax = new XMLHttpRequest();
            } else if (window.ActiveXObject) {
                try {
                    ajax = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    ajax = new ActiveXObject("Microsoft.XMLHTTP")
                }
            }
            return ajax;
        }
        this.SendQuery = function(url, queryStr, method, callBack) {
            if (!this.ajax) { this.ajax = this.Init(); }
            var src = this.ajax;
            if (!method || method.toLowerCase() != "post") {
                method = "get";
                url = encodeURI(encodeURI(url + "?" + queryStr) + "&" + new Date().getTime());
                queryStr = null;
            } else {
                url += "?" + new Date().getTime();
            }
            this.ajax.open(method, url, true);
            if (method != "get") {
                this.ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            }
            this.ajax.onreadystatechange = function() {
                if (src.readyState == 4) {
                    if (src.status == 200) {
                        callBack(src.responseText);
                    } else if ('12029,12030,12031,12152,12159'.indexOf(src.status) > -1) {
                        src.open(method, url, true);
                        if (method != "get") this.ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                        src.onreadystatechange = src.onreadystatechange;
                        src.send(encodeURI(encodeURI(queryStr)));
                    } else {
                        callBack(false);
                    }
                }
            }
            this.ajax.send(queryStr);
        }
        this.SendXml = function(url, xmlStr, callBack) {
            if (!this.ajax) { this.ajax = this.Init(); }
            var src = this.ajax;
            url += "?" + new Date().getTime();
            this.ajax.open("post", url, true);
            this.ajax.setRequestHeader("Content-Type", "text/xml");
            this.ajax.onreadystatechange = function() {
                if (src.readyState == 4) {
                    if (src.status == 200) {
                        callBack(src.responseText);
                    } else if ('12029,12030,12031,12152,12159'.indexOf(src.status) > -1) {
                        src.open("post", url, true);
                        src.setRequestHeader("Content-Type", "text/xml");
                        src.onreadystatechange = src.onreadystatechange;
                        src.send(xmlStr);
                    } else {
                        callBack(false);
                    }
                }
            }
            this.ajax.send(xmlStr);
        }
    }
    window['nadc']['Ajax'] = Ajax;
})()
