var node = function(){ return this; }

node.prototype.previousAdjacentSibling = function (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;
		}
	}

}

node.prototype.nextAdjacentSibling = function(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;
		}
	}
}

node.prototype.initialChild = function (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;
			}
		}
	}
}

node.prototype.swapNodes = function( row1 , row2 ){
	if(row1 && row2){
		var dummyRow;
		if (document.createElement && (dummyRow = document.createElement(row1.nodeName)) ){
			row1.parentNode.replaceChild(dummyRow, row1);
			row2.parentNode.replaceChild(row1, row2);
			dummyRow.parentNode.replaceChild(row2, dummyRow);
		}
	}
}
/* */
	node.prototype.deleteNode = function( theNode ){
		theNode.parentNode.removeChild( theNode );
	}
/* */
	node.prototype.getElementsByClassName = function( targetObject , className ){
		var returnElementsArray = new Array();
		for( var x=0; x < targetObject.childNodes.length; ++x ){
			if( targetObject.childNodes.item(x).className && targetObject.childNodes.item(x).className.search( className ) >= 0 ){
				returnElementsArray = returnElementsArray.concat( targetObject.childNodes.item(x) );
			}
			returnElementsArray = returnElementsArray.concat( this.getElementsByClassName( targetObject.childNodes.item(x) , className ) );
		}
		return returnElementsArray;
	}
/* */
	node.prototype.getElementsByName = function( targetObject , nameString ){
		var returnElementsArray = new Array();
		for( var x=0; x < targetObject.childNodes.length; ++x ){
			if( targetObject.childNodes.item(x).name && targetObject.childNodes.item(x).name == nameString ){
				returnElementsArray = returnElementsArray.concat( targetObject.childNodes.item(x) );
			}
			returnElementsArray = returnElementsArray.concat( this.getElementsByName( targetObject.childNodes.item(x) , nameString ) );
		}
		return returnElementsArray;
	}
/* */
	node.prototype.setElementAttribute = function( element , name , attribute ){
		var local	= new Object();

		element.setAttribute( name , attribute );

		/* NON IE Browsers */
			if( typeof(element.getAttribute( name )) != typeof(attribute) ){
				element[name] = attribute;
			}
		/* end */
	}

if( OlOs == null ){
	document.write("<script type=\"text/javascript\" src=\"OlOs.js\"></script>");
}
OlOs.attachTo( new node() , "node" );
