document.write=function(value){
	//bit of a crazy function to be optimized latter

	var loc=null;
	var tag=null;

	var f=0;
	var l=0;
	var url="";

	var type=value.substr(0,4);

	switch(type){
		case "<scr":
			loc=DOM.getElementByTagName("head");

			f=value.indexOf('src="')+5;
			l=value.indexOf('">');
			url=value.substring(f,l);

			tag=DOM.createElement("script");
			tag.setAttribute("type", "text/javascript");
			tag.setAttribute("src", url);

			break;
		case "<img":
			loc=DOM.getElementByTagName("body");

			f=value.indexOf('src="')+5;
			l=value.indexOf('" />');
			url=value.substring(f,l);

			tag=DOM.createElement("img");
			tag.setAttribute("src", url);
			break;
	}

	loc.appendChild(tag);
}

//DOM Class
DOM=function(){}

DOM.getElementById=function(id){
	return document.getElementById(id);
}
DOM.getElementByTagName=function(tag_name,element){
	var list=DOM.getElementsByTagName(tag_name,element);

	if(list!=null){
		return list[0];
	}else{
		return null;
	}
}
DOM.getElementsByTagName=function(tag_name,element){
	if(element==null){
		element=document;
	}

	var list=element.getElementsByTagName(tag_name);
	return list;
}
DOM.getElementByName=function(name){
	var list=DOM.getElementsByName(name);

	if(list!=null){
		return list[0];
	}else{
		return null;
	}
}
DOM.getElementsByName=function(name){
	return document.getElementsByName(name);
}
DOM.getElementByClassName=function(class_name,element){
	var list=DOM.getElementsByClassName(class_name,element);

	if(list!=null){
		return list[0];
	}else{
		return null;
	}
}
DOM.getElementsByClassName=function(class_name,element){
	if(element==null){
		element=document;
	}

	var list=null;

	if(element.getElementsByClassName){
		list=element.getElementsByClassName(class_name);
	}else{
		//walk tree
		list=new Array();

		var stack=new Array();
		var i=0;
		var node=null;

		stack.push(element);
		while(node!=null || stack.length>0){
			if(node!=null && node.childNodes.length>0){
				for(i=0;i<node.childNodes.length;i++){
					if(node.childNodes[i].nodeType==STD.element){
						stack.push(node.childNodes[i]);

						if(DOM.hasClass(node.childNodes[i],class_name)==true){
							list.push(node.childNodes[i]);
						}
					}
				}
			}

			node=stack.shift();
		}
	}

	return list;
}
DOM.hasClass=function(element,class_name){
	var rs="(^| )"+class_name+"( |$)";
	var re=new RegExp(rs);

	return re.test(element.className);
}
DOM.createElement=function(type,value){
	var element=document.createElement(type);

	if(value!=null){
		var text=document.createTextNode(value);
		element.appendChild(text);
	}

	return element;
}
DOM.createTextNode=function(value){
	return document.createTextNode(value);
}
DOM.removeChildren=function(node){
	while(node.childNodes.length>0){
		node.removeChild(node.firstChild);
	}
}
DOM.actualTop=function(node){
	var top=node.offsetTop;

	while(node=node.offsetParent){
		top+=node.offsetTop;
	}

	return top;
}
DOM.actualLeft=function(node){
	var left=node.offsetLeft;

	while(node=node.offsetParent){
		left+=node.offsetLeft;
	}

	return left;
}