 /**
  * @author [cnhubei]yuyangzhi
  * @version v1.3
  * v1.2 ???????????BUG
  * v1.3 ?????????
  * @Date:2007-5-10
  */
function getTBprefixName(str,sta){
	if(str.indexOf("active")!=-1 || str.indexOf("normal")!=-1) str=str.substr(6);
		else if(str.indexOf("over")!=-1) str=str.substr(4);
			else str="";
	return sta+str;
}
function getElement(_id){
  return (document.getElementById) ? document.getElementById(_id): document.all[_id];
}
function IsChild(cNode,pNode){
	while(cNode!=null){
		cNode=cNode.parentNode;
		if(cNode==pNode) return true; 
	}
	return false;
}
var divCache=new Object();
var menuBarObj=new Object();
var MouseDelayTime=150;//??????   ??
function startTouchMenu(){
	for(var i=0;i<arguments.length;i++){
		menuBarObj[arguments[i]]=getElement(arguments[i]);//?????
		if(menuBarObj[arguments[i]]==null) return;
		menuBarObj[arguments[i]].menusObj=new Object();
		//menuBarObj[arguments[i]].menusObj=menuBarObj[arguments[i]].childNodes;//????????????(DIV?)
		menuBarObj[arguments[i]]._isAutoPlayFlag=menuBarObj[arguments[i]].getAttribute("isAutoPlay") || 'false';
        menuBarObj[arguments[i]]._delay=menuBarObj[arguments[i]].getAttribute("delay") || 3000;
		menuBarObj[arguments[i]]._length=0;//?????
		menuBarObj[arguments[i]]._currentActiveIndex=0;//?????????
		menuBarObj[arguments[i]].waitInterval=null;//?????????
		menuBarObj[arguments[i]].autoTimer=null;//????????
		menuBarObj[arguments[i]].prepareAutoTimer=null;//????????????
		//menuBarObj[arguments[i]]=menuBarObj;
		menuBarObj[arguments[i]]._name=arguments[i];//??(ID?)
		menuBarObj[arguments[i]]._childNodes=menuBarObj[arguments[i]].getElementsByTagName("div");
		for(var j=0;j<menuBarObj[arguments[i]]._childNodes.length;j++){
			
			var menuObj=menuBarObj[arguments[i]]._childNodes[j];//????
			if(!menuObj.getAttribute("urn") || !menuObj.getAttribute("rel")){continue;}//????? urn ? rel ??? div
			if(menuObj.parentNode.tagName!="DIV") {return;}
			
			//if(menuObj.nodeType!=1) {continue;}//?FF??,?????
			
			menuObj.urnStr=menuObj.getAttribute("urn");//??????
			menuObj.relStr=menuObj.getAttribute("rel");//?????????
			menuObj.isAjax=menuObj.getAttribute("isAjax") || 'false';
			menuObj.useCache=menuObj.getAttribute("useCache") || 'true';//??????,?isAjax?true???
            menuObj.callback=menuObj.getAttribute("callback") || 'null';//????
			menuBarObj[arguments[i]].menusObj[menuObj.urnStr]=menuObj;//????????????
			menuBarObj.relTagObj=getElement(menuObj.relStr);
			menuBarObj.relTagObj._touchMenu=menuObj;
			menuObj._selfIndex=j;//?????,?????
			menuBarObj[arguments[i]]._length++;//??????
			menuObj.setActive=function(flag){
				if(flag){
					this.status="active";
					this.className=getTBprefixName(this.className,"active");
				}else{
					this.status="normal";
					this.className=getTBprefixName(this.className,"normal");
				}
			}
			
			menuObj.LoadTab=function(){
				this.setActive(true);
				this.parentNode.activetab.setActive(false);
				this.parentNode.activetab=this;
				this.parentNode._currentActiveIndex=this._selfIndex;//????????????????
				if(this.isAjax=="true"){
					//sendRequest(this.urnStr,this.relStr,this.useCache);
					sendRequest.call(this,this.urnStr,this.relStr,this.useCache);
				}else{
					loadCatchTab(this.urnStr,this.relStr);
				}
				
			}

			
			menuObj.onmouseover=function(aEvent){
				if(this.parentNode._isAutoPlayFlag=="true"){this.parentNode.prepareStopPlay();}
				var myEvent = window.event ? window.event : aEvent;
				this.prepareLoadTab(myEvent);
			}
			menuObj.prepareLoadTab=function(_divObj){
				
				var fm=_divObj.fromElement;
				if(IsChild(fm,this) || fm==this) return;//?????event
				if(this.status=="active") {return;}
				var isEvent= (window.event!=null )? true :((window.MouseEvent && _divObj.constructor == window.MouseEvent) ? true :false);//????IE?FF,???????????
				if(isEvent){
					clearTimeout(this.parentNode.waitInterval);
					this.parentNode.waitInterval=window.setTimeout("menuBarObj['"+this.parentNode._name+"'].menusObj['"+this.urnStr+"'].LoadTab();",MouseDelayTime);
				}else{
					this.LoadTab();
				}
			}

			menuObj.onmouseout=function(aEvent){
				var myEvent = window.event ? window.event : aEvent;
				this.prepareUnloadTab(myEvent);
				if(this.parentNode._isAutoPlayFlag=="true"){this.parentNode.prepareAutoPlay();}
			}
			menuObj.prepareUnloadTab=function(_divObj){
				var em=_divObj.toElement;
				if(IsChild(em,this) || em==this) return; //?????event
				if(this.status=="active") return;
				clearTimeout(this.parentNode.waitInterval);
			}
			
			if(menuObj.urnStr.indexOf("#default")!=-1){
				menuObj.setActive(true);
				menuBarObj[arguments[i]].activetab=menuObj;
				//if(menuObj.useCache=='true'){
				//???????????????????
					divCache[menuObj.urnStr]=getElement(menuObj.relStr).innerHTML;
				//}
			}else{
				menuObj.setActive(false);
			}
			
			menuBarObj.relTagObj.onmouseover=function(){
				if(this._touchMenu.parentNode._isAutoPlayFlag=="true"){this._touchMenu.parentNode.prepareStopPlay();}
				
			}
			menuBarObj.relTagObj.onmouseout=function(){
				if(this._touchMenu.parentNode._isAutoPlayFlag=="true"){this._touchMenu.parentNode.prepareAutoPlay();}
			}
			
		}
		
		menuBarObj[arguments[i]].prepareAutoPlay=function(){
			this.prepareAutoTimer=window.setTimeout("menuBarObj['"+this._name+"'].autoPlay();",MouseDelayTime);
		}
		
		menuBarObj[arguments[i]].autoPlay=function(){
			if(this._currentActiveIndex>=this._length){
				this._currentActiveIndex=0;
			}
			
			this._childNodes[this._currentActiveIndex].prepareLoadTab(this._childNodes[this._currentActiveIndex]);
			
			this._currentActiveIndex++;
			//setCurrentIndex(this._currentActiveIndex);??
			clearTimeout(this.autoTimer);
			
			this.autoTimer=window.setTimeout("menuBarObj['"+this._name+"'].autoPlay();",this._delay);
		
		}
		
		menuBarObj[arguments[i]].prepareStopPlay=function(){
			clearTimeout(this.prepareAutoTimer);
			this.stopPlay();
		}
		menuBarObj[arguments[i]].stopPlay=function(){
			clearTimeout(this.autoTimer);
		}
		if(menuBarObj[arguments[i]].activetab==null){
			menuBarObj[arguments[i]].activetab=menuBarObj[arguments[i]]._childNodes[0];
		}
		
		if(menuBarObj[arguments[i]]._isAutoPlayFlag!=null && menuBarObj[arguments[i]]._isAutoPlayFlag=="true"){
			menuBarObj[arguments[i]].autoPlay();
		}
		
	}
	
}
function loadCatchTab(_urnStr,_relStr){
	
	var targetObj=getElement(_relStr);
	if(divCache[_urnStr]==null){
		var srcObj=getElement(_urnStr);
		targetObj.innerHTML=srcObj.innerHTML;
		divCache[_urnStr]=srcObj.innerHTML;
	}else{
		targetObj.innerHTML=divCache[_urnStr];
	}
	
}

function getXMLHttpRequest() {
	var http_request;
	if(window.XMLHttpRequest) { 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/xml");
		}
	}
	else if (window.ActiveXObject) { 
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	
	if (!http_request) { 
		window.alert("can't create XMLHttpRequest object.");
		return null;
	}	
	return http_request;
}

function sendRequest(url,_relStr,_useCache) {
	
	var targetObj=getElement(_relStr);
	var callback=this.callback;
	if(_useCache == "false" || divCache[url]==null){
		var XMLHttpObj = new getXMLHttpRequest();
		if (XMLHttpObj) {
			XMLHttpObj.onreadystatechange =function(){
				var data = null;
				if (XMLHttpObj.readyState == 4) {
					if (XMLHttpObj.status == 200) {
						targetObj.innerHTML = XMLHttpObj.responseText;
						
                        if(callback){
                            eval(callback);
                        }
						if(_useCache != "false"){divCache[url]=targetObj.innerHTML;}
					}
				}
			}
			
			
			XMLHttpObj.open("GET", url+ "?v="+(new Date()).getMilliseconds() , true);
			XMLHttpObj.setRequestHeader("content-type","text/html; charset=gb2312");

			XMLHttpObj.send(null);
		}
	}else{
		targetObj.innerHTML=divCache[url];
	}
	
	
}



///////////////////??////////////////////////////////
function setCurrentIndex(index){
	var currentIndexTag=getElement("currentIndex");
	currentIndexTag.innerText=index;
}