DOMhelp = {
	
	//查找当前节点的最后一个兄弟节点；
	lastSibling:function(node){
			var tempObj = node.parentNode.lastChild;
			while(tempObj.nodeType != 1 && tempObj.previousSibling != null){
				tempObj = tempObj.previousSibling;
			}
			return (tempObj.nodeType == 1)?tempObj:false;
	},
		
	//查找当前节点的第一兄弟节点；
	firstSibling:function(){
			var tempObj = node.parentNode.firstChild;
			while(tempObj.nodeType != 1 && tempObj.nextSibling != null){
				tempObj = tempObj.nextSibling;
			}
			return (tempObj.nodeType == 1)?tempObj:false;
	},
		
	//读取当前元素第一个文本节点的内容
	getText:function(node){
			if(!node.hasChildNodes()){return false};
			var tempObj = node.firstChild;
			var reg = /^\s+$/;
			while(tempObj.nodeType != 3 && tempObj.nextSibling != null || reg.test(tempObj.nodeValue)){
				tempObj = tempObj.nextSibling;
			}
			return tempObj.nodeType == 3 ? tempObj.nodeValue : false;
	},
	
	//设置(或者说替换)当前元素第一个文本节点的内容
	setText:function(node,txt){
			var tempObj = node.firstChild;
			var reg = /^\s+$/;
			while(tempObj.nodeType != 3 && tempObj.nextSibling != null || reg.test(tempObj.nodeValue)){
				tempObj = tempObj.nextSibling;
			}
			if(tempObj.nodeType == 3){
				tempObj.nodeValue = txt;
			}else{
				return false;
			}
	},
		
	//寻找下一个或上一个兄弟元素节点，注意：是元素节点而不是文本节点或换行符(-1表示上一个，1表示下一个)
	closestSibling:function(node,direction){
		var tempObj;
		if(direction == -1 && node.previousSibling != null){
			tempObj = node.previousSibling;
			while(tempObj.nodeType != 1 && tempObj.previousSibling != null){
				tempObj = tempObj.previousSibling;
			}
		}else if(direction == 1 && node.nextSibling != null){
			tempObj = node.nextSibling;
			while(tempObj.nodeType != 1 && tempObj.nextSibling != null){
				tempObj = tempObj.nextSibling;
			}
		}
		return tempObj.nodeType == 1 ? tempObj : false;
	},
	
	//创建一个新的A节点（链接）包含给定文本和链接目标
	createLink:function(to,txt){
		var tempObj = document.createElement("a");	
		tempObj.appendChild(document.createTextNode(txt));
		tempObj.setAttribute("href",to);
		return tempObj;
	},
	
	//创建一个新的元素，其中包含给定的文本
	createtextElm:function(elm,txt){
		var tempObj = document.createElement(elm);
		tempObj.appendChild(document.createTextNode(txt));
		return tempObj;
	},
	
	//（创建控制台）创建一个DIV元素，给它一个ID来调整样式
	initDebug:function(){
		if(DOMhelp.debug){DOMhelp.stopDebug();};
		DOMhelp.debug = document.createElement("div");
		DOMhelp.debug.setAttribute("id",DOMhelp.debugWindowId);
		document.body.insertBefore(DOMhelp.debug,document.body.firstChild);
	},
	
	//将bug字符串后面加上换行符添加到控制台的HTML中
	setDebug:function(bug){
		if(!DOMhelp.debug){
			DOMhelp.initDebug();
		}
		DOMhelp.debug.innerHTML += bug + "\n";
	},
	
	//将控制台从文档中移除；
	stopDebug:function(){
		if(DOMhelp.debug){
			DOMhelp.debug.parentNode.removeChild(DOMhelp.debug);
			DOMhelp.debug = null;
		}
	},
	
	//阻止页面元素事件冒泡
	stopBubble:function(event){
		//IE类
		if(window.event && window.event.cancelBubble){
			window.event.cancelBubble = true;
		}
		//Firefox类，支持W3C
		if(event && event.stopPropagation){
			evnet.stopPropagation();
		}
	},
	
	//阻止页面元素的默认动作
	stopDefault:function(event){
		if(window.event && window.event.returnValue){
			window.event.returnValue = false;
		}
		if(event && event.preventDefault){
			event.preventDefault();
		}
	},
	
	//阻止页面元素事件冒泡并阻止页面元素的默认动作
	cancelClick:function(event){
		//IE类浏览器，不支持W3C标准；
		if(window.event){
			//阻止页面元素事件冒泡；
			window.event.cancelBubble = true;
			//阻止页面元素的默认动作
			window.event.returnValue = false;
		}
		//Firefox类浏览器，支持W3C标准；
		if(event && event.stopPropagation && event.preventDefault){
			//阻止页面元素事件冒泡；
			event.stopPropagation();
			//阻止页面元素的默认动作
			event.preventDefault();
		}
	},
	
	//获取触发事件的目标节点；（适应W3C标准与IE的不同）
	getTarget:function(event){
		var target;
		if(window.event){//IE类浏览器
			target = window.event.srcElement;
		}else if(event){//Firefox类浏览器
			target = event.target;
		}else{
			target = null;
		}
		if(!target){
			return false;
		}
		return target;
	},
	
	//动态的为网页内的元素添加一个事件；
	addEvent:function(elm,evType,fn,useCapture){
		//Firefox类浏览器
		if(elm.addEventListener){
			elm.addEventListener(evType,fn,useCapture);
		}
		//IE类浏览器
		else if(elm.attachEvent){
			elm.attachEvent("on" + evType,fn);
		}
		//Mac平台的的IE；
		else{
			elm["on" + evType] = fn;
		}
	},
	
	//动态的删除网页内元素的一个事件
	removeEvent:function(elm,evType,fn,useCapture){
		//Firefox类浏览器
		if(elm.removeEventListener){
			elm.removeEventListener(evType,fn,useCapture);
		}
		//IE类浏览器；
		else if(elm.detachEvent){
			elm.detachEvent("on" + evType,fn);
		}
	},
	
	//替换、移除、新增、检查一个元素中的Class属性中的值（因为Class属性可能含有多个值）	
	cssjs:function(a,o,c1,c2){
		switch(a){
			//检查这个类是否已经存在
			case "check":
				var found = false;
				var temparray = o.className.split(" ");
				for(var i=0;i<temparray.length;i++){
					if(temparray[i] == c1){
						found = true;
					}
				}
				return found;
				break;
			//把一个类替换为另一个
			case "swap":
				if(!DOMhelp.cssjs("check",o,c1)){
					o.className = o.className.replace(c2,c1);//replace()方法表示替换，后面一个参数替换掉前面那个参数；
				}else{
					o.className = o.className.replace(c1,c2);
				}
			break;
			//添加一个类
			case "add":
				if(!DOMhelp.cssjs("check",o,c1)){
					o.className += o.className? " " + c1 : c1;
				}
			break;
			//移除一个类
			case "remove":
				if(DOMhelp.cssjs("check",o,c1)){
					var rep = o.className.match(" " + c1) ? " " + c1 : c1;
					o.className = o.className.replace(rep,"");
				}
			break;
		}
	}
};
