﻿/* 通用类 */
var NonzarCommon = {
    getBrowserType: function () {
        var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        var s;
        (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
        (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
        (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
        (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
        (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
        //返回浏览器类型；
        if (Sys.ie) return 0;
        if (Sys.firefox) return 1;
        if (Sys.chrome) return 2;
        if (Sys.opera) return 3;
        if (Sys.safari) return 4;
        return Sys;
    },
    //获取对象指定css值；
    getObjectCssValue: function (obj, cssName) {
        if (obj.style[cssName]) {
            return obj.style[cssName];
        } else if (obj.currentStyle) {
            return obj.currentStyle[cssName];
        } else if (true) {
            //它使用传统的"text-Align"风格的规则书写方式，而不是"textAlign"
            //获取style对象并取得属性的值(如果存在的话)
            var objCssValue = document.defaultView.getComputedStyle(obj, "");
            return objCssValue && objCssValue.getPropertyValue((cssName.replace(/([A-Z])/g, "-$1")).toLowerCase());
        } else {
            return null;
        }
    },
    //判断一个对象是否为另一个对象父元素；
    isParentNode: function (child, parent) {
        return parent.contains ? parent != child && parent.contains(child) : !!(parent.compareDocumentPosition(child) & 16);
    },
    isParentNode2: function (child, parent) {
        if (child == parent) { return 0; }
        while (child != undefined && child != null && child.tagName.toUpperCase() != 'HTML') {
            if (child == parent) {
                return 1;
            }
            child = child.parentNode;
        }
        return -1;
    },
    //获取元素第一子节点；
    getFirstChildNode: function (obj) {
        if (obj == null) { return null; } //检查对象存在；
        var childNode = null; //创建子元素储存器；
        childNode = obj.firstChild; //获取子节点；
        if (childNode != null && this.getBrowserType() == 1 && childNode.nodeType == 3) { //如果是火狐浏览器&&子节点类型为空白文本；
            childNode = this.getNextSibling(childNode); //获取下一个兄弟节点；
        }
        return childNode; //返回；
    },
    //获取下一个兄弟节点；
    getNextSibling: function (obj) {
        if (obj == null) { return null; } //检查对象存在；
        var nextNode = null; //创建元素储存器；
        nextNode = obj.nextSibling;
        if (nextNode != null && this.getBrowserType() == 1 && nextNode.nodeType == 3) {//如果是火狐浏览器&&nextNode节点类型为空白文本；
            nextNode = this.getNextSibling(nextNode);
        }
        return nextNode;
    },
    //停止事件冒泡；
    stopPropagation: function (e) {
        var bt = NonzarCommon.getBrowserType();
        switch (bt) {
            case 0:
                e.cancelBubble = true;
                break;
            case 1:
                e.stopPropagation();
                break;
            case 2:
                e.stopPropagation();
                break;
            case 3:
                e.stopPropagation();
                break;
            case 4:
                e.stopPropagation();
                break;
            default:
                e.stopPropagation();
                break
        }
    },
    //向元素事件添加处理函数；
    addEventFunction: function (obj, evt, fn) {
        if (obj.addEventListener) {
            obj.addEventListener(evt, fn, false);
        } else if (obj.attachEvent) {
            obj.attachEvent('on' + evt, fn);
        }
    },
    //向元素事件删除处理函数；
    removeEventFunction: function (obj, evt, fn) {
        if (obj.removeEventListener) {
            obj.removeEventListener(evt, fn, false);
        } else if (obj.attachEvent) {
            obj.detachEvent('on' + evt, fn);
        }
    }
}
/* End 通用类 */
