/// init func
function init() {
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	if (_timer) clearInterval(_timer);
}
/// for Moz/Opr9
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", init, false);
}
/// for IE
/*@cc_on @*/
/*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			init();
		}
	}
/*@end @*/
/// for safari
if (/WebKit/i.test(navigator.userAgent)) {
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			init();
		}
	}, 10);
}
window.onload = function(){initALL();init;}

//   Written by Terry Friesen,  tfriesen@mts.net
//   http://www.mts.net/~tfriesen/dhtml/

//   This script gives Netscape 6 the following IE methods:
//   removeNode(),replaceNode(),swapNode(),applyElement(),contains(),
//   insertAdjacentText(),insertAdjacentHTML(),insertAdjacentElement()

if(self.Node&&self.Node.prototype){
	Node.prototype.removeNode=remove_Node;
	Node.prototype.replaceNode=replace_Node;
	Node.prototype.swapNode=swap_Node;
	Element.prototype.applyElement=apply_Element;
	Element.prototype.contains=_contains;
	Element.prototype.insertAdjacentText=insertAdj_Text;
	Element.prototype.insertAdjacentHTML=insertAdj_HTML;
	Element.prototype.insertAdjacentElement=insertAdj_El;
	Element.prototype.insert__Adj=insert__Adj;
}

function remove_Node(a1){
	var p=this.parentNode;
	if(p&&!a1){
	var df=document.createDocumentFragment();
	for(var a=0;a<this.childNodes.length;a++){
		df.appendChild(this.childNodes[a])
	}
		p.insertBefore(df,this)
	}
	return p?p.removeChild(this):this;
}

function replace_Node(a1){return this.parentNode.replaceChild(a1,this)}

function swap_Node(a1){
	var p=a1.parentNode;
	var s=a1.nextSibling;
	this.parentNode.replaceChild(a1,this);
	p.insertBefore(this,s)
	return this;
}

function apply_Element(a1,a2){
	if(!a1.splitText){
		a1.removeNode();
		if(a2&&a2.toLowerCase()=="inside"){
			var l = this.childNodes.length;
			for(var a=0;a<l;a++){
				a1.appendChild(this.childNodes[0])
			}
			this.appendChild(a1)
		}
		else{
			var p=this.parentNode;
			p.insertBefore(a1,this);
			a1.appendChild(this);
		}
		return a1;
	}
}

function _contains(a1){
	var r=document.createRange();
	r.selectNode(this);
	return r.compareNode(a1)==3;
}

function insertAdj_Text(a1,a2){
	var t=document.createTextNode(a2||"")
	this.insert__Adj(a1,t);
}

function insertAdj_HTML(a1,a2){
var r=document.createRange();
r.selectNode(this);
var t=r.createContextualFragment(a2);
this.insert__Adj(a1,t);
}

function insertAdj_El(a1,a2){
this.insert__Adj(a1,a2);
return a2;
}

function insert__Adj(a1,a2){
var p=this.parentNode;
var s=a1.toLowerCase();
if(s=="beforebegin"){p.insertBefore(a2,this)}
if(s=="afterend"){p.insertBefore(a2,this.nextSibling)}
if(s=="afterbegin"){this.insertBefore(a2,this.childNodes[0])}
if(s=="beforeend"){this.appendChild(a2)}
}

function $(t){return document.getElementById(t);}
//Object.prototype.$ = function(t){return this.getElementById(t);}

//readStyle
function style(obj, prop){
	if(obj.currentStyle){
		prop = prop.replace(/-([a-z])/g,function(a,b){return b.toUpperCase();});
		prop = prop.replace('float','styleFloat');
		prop = prop.replace('ACCELERATOR','accelerator');
		return obj.currentStyle[prop];
	}
	else if(window.getComputedStyle) {
		return window.getComputedStyle(obj, "").getPropertyValue(prop);
	}
	return null;
}

function autoHeight(t){
	var max=0,_max,_top,_height,_marginBottom;
	for(var i=0;i<t.childNodes.length;i++)
	{
		if(t.childNodes[i].nodeName=="#text"||t.childNodes[i].nodeName=="#comment") continue;
		_top = t.childNodes[i].offsetTop;
		_height = t.childNodes[i].offsetHeight;
		_marginBottom = parseInt(style(t.childNodes[i],'margin-bottom').replace('px',''));
		_max =	_top + _height + _marginBottom;
		max = (max<_max)?_max:max;
	}
	t.style.height = max +'px';
}
