function previousAdjacentSibling(node){
	for(var i=0; i < node.parentNode.childNodes.length; ++i){

		if(node.parentNode.childNodes.item(i)==node){
			var item=i;
			break;
		}
	}
	
	--item;
	
	for(var i=item; i >= 0; --i){
		if(node.parentNode.childNodes.item(i).nodeType==1){
			return node.parentNode.childNodes.item(i);
			break;
		}
	}

}

function nextAdjacentSibling(node){
	for(var i=0; i < node.parentNode.childNodes.length; ++i){
		if(node.parentNode.childNodes.item(i)==node){
			var item=i;
			break;
		}
	}
	
	++item;
	
	for(i=item; i < node.parentNode.childNodes.length; ++i){
		if(node.parentNode.childNodes.item(i).nodeType == 1){
			return node.parentNode.childNodes.item(i);
			break;
		}
	}
}

function intialChild(node){
	if(node.firstChild.nodeName!='#text'){
		return node.firstChild
	}else{
		for(var i=0;i < node.childNodes.length;++i){
			if(node.childNodes.item(i).nodeType==1){
				return node.childNodes.item(i);
				break;
			}
		}
	}
}

function swapNodes ( thisNode , thatNode ) {
	if(thisNode && thatNode){
		var dummyNode;
		if (document.createElement && (dummyNode = document.createElement(thisNode.nodeName)) ){
			thisNode.parentNode.replaceChild(dummyNode, thisNode);
			thatNode.parentNode.replaceChild(thisNode, thatNode);
			dummyNode.parentNode.replaceChild( thatNode , dummyNode);
		}
	}
}

function deleteNode( theNode ){
	theNode.parentNode.removeChild( theNode );
}

function getElementsByClassName( targetObject, tagNameScope, classNameString ){
	var arrElements = (tagNameScope == "*" && targetObject.all)? targetObject.all : targetObject.getElementsByTagName(tagNameScope);
	var arrReturnElements = new Array();
	if( typeof classNameString == 'string' ){
		classNameString = classNameString.replace(/\-/g, "\\-");
	}
	var oRegExp = new RegExp("(^|\\s)" + classNameString + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];      
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}   
	}
	return (arrReturnElements)
}

function getElementsByTagNames( targetObject, tagNameScope, nameString ){
	var arrElements = (tagNameScope == "*" && targetObject.all)? targetObject.all : targetObject.getElementsByTagName(tagNameScope);
	var arrReturnElements = new Array();
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];      
		if( oElement.name && oElement.name == nameString ){
			arrReturnElements.push(oElement);
		}   
	}
	return (arrReturnElements)

}