//base fucntions
function $(t){return document.getElementById(t);}
function $t(t){return document.getElementsByTagName(t);}

//event listener
Tobj = new Object();
Tobj.addEvent = function( obj, type, fn ) {
    if ( obj.attachEvent ) {		
      obj['e'+type+fn] = fn;
      obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
      obj.attachEvent( 'on'+type, obj[type+fn] );
    } else {
      obj.addEventListener( type, fn, false );
    }
};

//prevSibling
function prevSibling(t){
	while(t){
		t = t.previousSibling;
		if(t.tagName)return t;
	}
	return null;
}
//nextSibling
function nextSibling(t){
	while(t){
		t = t.nextSibling;
		if(t.tagName)return t;
	}
	return null;
}
//addClass
function addClass(t,cls){
	if(t.className.indexOf(cls)==-1)
		t.className = t.className + ' ' + cls;
}
//delClass
function delClass(t,cls){
	if(t.className.indexOf(cls)!=-1)
		t.className = t.className.replace(cls,'');
}

//window open
function o(c){
	var win = window.open('test.html');
	var code = (document.all)?$(c).innerText:$(c).textContent;
	win.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn"><head><title>testing<\/title><\/head><body><\/body><\/html>');
	win.document.getElementsByTagName('body')[0].innerHTML = code.replace(/(\S*)(\s*)(<)/g,'$1$3').replace(/(>)(\s*)(\S*)/g,'$1$3');
	win.document.close();
}
//init code
function initCode(){
	var code = $t('code');
	for(var i=0;i<code.length;i++){
		code[i].id = 'c'+i;
		var d =document.createElement("div");
		d.id='d'+i;
		d.innerHTML = '<button class="run" onclick="o(\'c'+i+'\');">查看效果<\/button>';
		code[i].parentNode.insertBefore(d,code[i].nextSibling);
	}
}

//tree
function initTree(){
	var tree_nav = $('tree_nav');
	//add event
	var h4 = tree_nav.getElementsByTagName('h4');
	var h5 = tree_nav.getElementsByTagName('h5');
	var h6 = tree_nav.getElementsByTagName('h6');
	hdnUL(tree_nav);
	for(var i=0;i<h4.length;i++){
		h4[i].onclick = function(){reInit(tree_nav,this,'h4');}
		addClass(h4[i].getElementsByTagName('a')[0],'t'); 
	}
	for(var i=0;i<h5.length;i++){
		h5[i].onclick = function(){reInit(tree_nav,this,'h5');}
		addClass(h5[i].getElementsByTagName('a')[0],'t'); 
	}
	for(var i=0;i<h6.length;i++){
		h6[i].onclick = function(){reInit(tree_nav,this,'h6');}
		addClass(h6[i].getElementsByTagName('a')[0],'t');
	}
}
//reInit tree
function reInit(t,show,title){
	var titles = t.getElementsByTagName(title);
	changeType(nextSibling(show));
}
//hiddenAll
function hdnUL(t){
	var ul = t.getElementsByTagName('ul');
	for(var i=1;i<ul.length;i++){ul[i].style.display = 'none';}
}
//changeType
function changeType(t){
	if(t.style.display=='none')
	{
		t.style.display = 'block';
		addClass(prevSibling(t).getElementsByTagName('a')[0],'o'); 
	}
	else
	{
		t.style.display = 'none';
		delClass(prevSibling(t).getElementsByTagName('a')[0],'o'); 
	}
}
if(document.getElementById('tree_nav')){initTree();}