/*******************************************************************
**--> Name: function
**--> Type: common function
**--> Intro: 通用的应用函数集，各函数相应的说明及版本见相应的注释。
**--> Author: lizus.com@gmail.com
**--> WebSite: http://www.lizus.com




+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++





********************************************************************
**--> Name：addLoadEvent
**--> Type：window.onload function
**--> Intro：用于载入window.onload事件，唯一参数，表示要加载的程序。
**--> Version：1.0
*******************************************************************/

function addLoadEvent(func){
	var oldOnLoad=window.onload;
	if (typeof window.onload!="function")
	{
		window.onload=func;
	}else {
		window.onload=function (){
			oldOnLoad();
			func();
		}
	}
}

/*******************************************************************
**--> Name：insBefore
**--> Type：HTML-DOM function
**--> Intro：用于在DOM节点树中同级插入新元素在已有元素的前面，包含两个参数，要插入的新元素及目标元素。
**--> Version：1.0
*******************************************************************/

function insBefore(newElement,targetElement){
	var parent=targetElement.parentNode;
	parent.insertBefore(newElement,targetElement);
}

/*******************************************************************
**--> Name：insAfter
**--> Type：HTML-DOM function
**--> Intro：用于在DOM节点树中同级插入新元素在已有元素的后面，包含两个参数，要插入的新元素及目标元素。
**--> Version：1.0
*******************************************************************/

function insAfter(newElement,targetElement){
	var parent=targetElement.parentNode;
	if (parent.lastChild==targetElement)
	{
		parent.appendChild(newElement);
	}else {
		parent.insertBefore(newElement,targetElement.nextSibling);
	}
}

/*******************************************************************
**--> Name：getNextElement
**--> Type：HTML-DOM function
**--> Intro：用于查找目标节点的下一个元素节点，唯一参数表示目标节点。
**--> Version：1.0
*******************************************************************/

function getNextElement(node){
	if (node==node.parentNode.lastChild)
	{
		return null;
	}
	var nextNode=node.nextSibling;
	if (nextNode.nodeType==1)
	{
		return nextNode;
	}
	if (nextNode.nextSibling)
	{
		return getNextElement(nextNode);
	}
}

/*******************************************************************
**--> Name：getPreviousElement
**--> Type：HTML-DOM function
**--> Intro：用于查找目标节点的上一个元素节点，唯一参数表示目标节点。
**--> Version：1.0
*******************************************************************/

function getPreviousElement(node){
	if (node==node.parentNode.firstChild)
	{
		return null;
	}
	var previousNode=node.previousSibling;
	if (previousNode.nodeType==1)
	{
		
		return previousNode;
	}
	if (previousNode.previousSibling)
	{
		return getPreviousElement(previousNode);
	}
}

/*******************************************************************
**--> Name：addClass
**--> Type：HTML-DOM function
**--> Intro：用于给目标元素增加class属性值，两个参数，第一个为目标元素名称，第二个为欲增加的class属性值。因为IE暂不
			支持getAttribute("class")及setAttribute("class",value)方法，所以使用html-dom的className方法，该方法为可读写方法，需慎重。IE下也可使用getAttribute("className")及setAttribute("className",value)方法.
**--> Version：1.0
*******************************************************************/

function addClass(element,value){
	if (!element.className)
	{
		element.className=value;
	}else {
		var newClassName=element.className;
		newClassName+=" ";
		newClassName+=value;
		element.className=newClassName;
	}
}

/*******************************************************************
**--> Name：removeClass
**--> Type：HTML-DOM function
**--> Intro：从目标元素中移除设定的className，两个参数，1为目标元素，2为要移除的className。
**--> Version：1.0
*******************************************************************/

function removeClass(element,value)
{
	if (!element.className)
	{
		return null;
	}else
	{
		var classNames=element.className.split(" ");
		var newClassNames=[];
		for (var i=0,j=0;i<classNames.length;i++)
		{
			if (classNames[i]==value)
			{
				continue;
			}
			newClassNames[j]=classNames[i];
			j++;
		}
		element.className=newClassNames.join(" ");
	}
}

/*******************************************************************
**--> Name：getElementsByClass
**--> Type：HTML-DOM function
**--> Intro：用于查找相同class的元素，三个参数，仅第一个参数为必填，指明要查找的class名称，第二个参数指明从哪一个节点开始查找，第三个参数指明要在哪一类元素中查找。
**--> Version：1.0
*******************************************************************/

function getElementsByClass(searchClass,node,tag) {
	var classElements=new Array();
	if (node==null) node=document;
	if (tag==null) tag='*';
	var els=node.getElementsByTagName(tag);
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i=0,j=0;i<els.length;i++)
	{
		if (pattern.test(els[i].className))
		{
			classElements[j]=els[i];
			j++;
		}
	}
	return classElements;
}