﻿/*
js操作css注意:关于位置的css必须必须要加上"px"这个像素单位

*/

function DomHelper() {
    this.obj = null;
}
//获取该对象所有子节点的类型，
DomHelper.prototype.childNodesType = function(obj) {
    var arrChildNodes = new Array();
    var childNodes = obj.childNodes;
    for (var i = 0; i < childNodes.length; i++) {
        arrChildNodes[i] = childNodes[i].nodeType;
    }
    return arrChildNodes;
}
//根据节点类型和节点的属性获取该节点的引用
DomHelper.prototype.getElementByAttr = function(oParentNode, sNodeLable, sAttr) {
    var oElements = oParentNode.getElementsByTagName(sNodeLable);
    var sAttrName = sAttr.split(":")[0];
    var sAttrValue = sAttr.split(":")[1];
    var oElement = null;
    for (var i = 0; i < oElements.length; i++) {
        if (oElements[i].getAttribute(sAttrName) == sAttrValue) {
            oElement = oElements[i];
            break;
        }
    }
    return oElement;
}

DomHelper.prototype.getElementsByAttr = function(oParentNode, sNodeLable, sAttr) {
    var oElements = oParentNode.getElementsByTagName(sNodeLable);
    var sAttrName = sAttr.split(":")[0];
    var sAttrValue = sAttr.split(":")[1];
    var arrElements = new Array();
    for (var i = 0; i < oElements.length; i++) {
        if (oElements[i].getAttribute(sAttrName) == sAttrValue) {
            arrElements.push(oElements[i]);
        }
    }
    return arrElements;
}

//添加事件
DomHelper.prototype.addEvent = function(obj, event, fnHandle) {
    if (bomHelper.ie != "") {
        obj.attachEvent("on" + event, fnHandle);
    } else if (bomHelper.firefox != "" || bomHelper.chrome != "") {
        obj.addEventListener(event, fnHandle, false);
    } else {
        obj["on" + event] = fnHandle;
    }
}
//删除事件
DomHelper.prototype.delEvent = function(obj, event, fnHandle) {
    if (bomHelper.ie != "") {
        obj.detachEvent("on" + event, fnHandle);
    } else if (bomHelper.firefox != "" || bomHelper.chrome != "") {
        obj.removeEventListener(event, fnHandle, false);
    } else {
        obj["on" + event] = null;
    }
}

//格式化事件
DomHelper.prototype.formatEvent = function(oEvent) {
    if (bomHelper.ie != "") {
        oEvent = window.event;
        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
        oEvent.phase = 2;
        oEvent.isChar = (oEvent.charCode > 0);
        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
        oEvent.pageY = oEvent.clientY + document.body.scrollTop;
        oEvent.preventDefault = function() {
            this.returnValue = false; //阻止窗口的默认事件，如oncontextmenu来阻止鼠标右键
        }
        if (oEvent.type == "mouseout")
            oEvent.relatedTarget = oEvent.toElement;
        else if (oEvent.type == "mouseover")
            oEvent.relatedTarget = oEvent.fromElement;
        oEvent.stopPropagation = function() {
            this.cancelBubble = true; //阻止冒泡事件
        }
        oEvent.target = oEvent.srcElement;
        oEvent.time = (new Date()).getTime();
    }
    return oEvent;
}
//去除firefox、chrome等浏览器的无用文本节点
DomHelper.prototype.formatChildNode = function(oNode) {
    if (bomHelper.ie != "") return; //若为IE则不执行下面的代码
    var arrChildNodes = oNode.childNodes;
    for (var i = arrChildNodes.length - 1; i >= 0; i--) {
        if (arrChildNodes[i].nodeType == 3) {
            oNode.removeChild(arrChildNodes[i]);
        }
    }
}
//获取某元素相对于body的坐标
DomHelper.prototype.getPosition = function(obj) {
    var _o = obj;

    var _left = "0px";
    var _top = "0px";
    var _width = "0px";
    var _height = "0px";

    _width = _o.offsetWidth;
    _height = _o.offsetHeight;
    _left = _o.offsetLeft;
    _top = _o.offsetTop;
    while (true) {
        _o = _o.offsetParent;
        if (_o == (document.body && null)) break;
        _left += _o.offsetLeft;
        _top += _o.offsetTop;
    }
    return { "left": _left, "top": _top, "width": _width, "height": _height };
}
var domHelper = new DomHelper();


