/*requires core.js*/
/*requires load.js*/
/*requires ajax.js*/
/**
 * @module nova.dom
 */
nova.dom = {};


/**
 * 检测元素是否拥有给定的 className
 * @param {string} 元素
 * @param {string} class 名称
 */
nova.dom.hasClass = function(elt, cls) {
    var eltCls = elt.className.split(" "),
	i,
	len;

    for (i = 0, len = eltCls.length; i < len; i++) {
	if (eltCls[i] === cls) {
	    return true;
	}
    }
};


/**
 * 添加一个 classname
 * @param string
 * @param string
 */
nova.dom.addClass = function(elt, cls) {
    if (!nova.dom.hasClass(elt, cls)) {
	elt.className === "" ? elt.className = cls : elt.className += " " +cls;
    }
};


/**
 * 删除一个 classname
 * @param string} 元素
 * @param string} class 名称
 */
nova.dom.removeClass = function(elt, cls) {
    elt.className = elt.className.replace(cls, "");
};


/**
 * 获取元素的样式
 * @param string
 * @param string
 */
nova.dom.getStyle = function(elt, styleProp, stylePropIE) {
    if (elt.currentStyle) {
	// IE
	return elt.currentStyle[stylePropIE];
    } else if (window.getComputedStyle) {
	// gecko
	return document.defaultView.getComputedStyle(elt,null).getPropertyValue(styleProp);
    }
};


/**
 * 获取元素的宽度
 * @param {string} 元素
 */
nova.dom.getWidth = function(elt) {
    var left,
	right;

    left = parseInt(nova.dom.getStyle(elt, "margin-left", "marginLeft"), 10);
    right = parseInt(nova.dom.getStyle(elt, "margin-right", "marginRight"), 10);

    return elt.offsetWidth + left + right;
};


/**
 * Batch set element's css
 * nova.dom.setStyle({
 * 	elm: "",
 * 	css: {
 * 		"width": "10px",
 * 		"height": "20px"
 * 	}
 * })
 */
nova.dom.setCSS = function(elm, styles) {
    var setStyle = function(prop, val) {
	for (var i = 0, len = elm.length; i < len; i++) {
	    elm[i].style[prop] = val;
	}
    };

    for (var prop in styles) {
	if (!styles.hasOwnProperty(prop)) continue;
	setStyle(prop, styles[prop]);
    }
};

@@ -233,134 +233,370 @@
     
-var eltCls = elt.className.split(%22 %22),%0A%09i,%0A%09len;%0A%0A    for (i = 0, len = eltCls.length; i %3C len; i++) %7B%0A%09if (eltCls%5Bi%5D === 
+if (typeof elt !== 'object') %7B%0A%09if (console.error) %7B%0A%09    console.error('no first argument.', 'type must use nodeList.');%0A%09%7D%0A%09return false;%0A    %7D else if (typeof cls !== 'string') %7B%0A%09if (console.error) %7B%0A%09    console.error('no second argument.', 'type must use string.');%0A%09%7D%0A%09return false;%0A    %7D else %7B%0A%09//%E6%A3%80%E6%9F%A5elements%E6%98%AF%E5%90%A6%E5%B7%B2%E7%BB%8F%E5%8C%85%E5%90%ABclassname%0A%09if (elt.className.match(
 cls)
+)
  %7B%0A%09
@@ -614,22 +614,55 @@
 true;%0A%09%7D
-%0A    %7D
+ else %7B%0A%09    return false;%0A%09%7D%0A    %7D    
 %0A%7D;%0A%0A%0A/*
@@ -998,24 +998,93 @@
 elt, cls) %7B%0A
+    if (elt.className.length %3E cls.length) %7B%0A%09cls = %22 %22 + cls;%0A    %7D%0A
     elt.clas

重写hasClass函数。 修改removeClass函数，现在可以自动删除class之间不需要的空格。