/**
 * 云南信息港---首页异步获取新闻内容的AJAX js
 * author:Yninfo-KeepWatcher
 */

//定义内容块缓存
var contentCache = new Object();

var tempref;
var timeOut = 250;
var waitInterval;

/**
 * 根据id获取Element
 * @id
 * return 返回Element节点对象
 */
function getElement(id) {
	return (document.getElementById) ? document.getElementById(id): document.all[id];
}

/**
 * 创建http请求
 */
function getXmlhttp(){
	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;
}

/**
 * 根据url获取内容并填充到id为contentId的div中
 * @url 需要获取内容的url
 * @contentId 需要填充内容的div id
 */
function loadContentFromId(url,contentId) {
	var ocontent = document.getElementById(contentId);
	if (contentCache[url] == null) {
		var xhttp=getXmlhttp();
			xhttp.onreadystatechange=function() {
				if (xhttp.readyState == 4 && (xhttp.status == 200 || window.location.href.indexOf("http")==-1)) {
					ocontent.innerHTML=xhttp.responseText;
					contentCache[url]=ocontent.innerHTML;
				}
			}
		var getUrl = url + "?timeStamp=" + new Date().getTime();
		xhttp.open("GET",getUrl,true);
		xhttp.send(null);
	}else{
		ocontent.innerHTML=contentCache[url];
	}
}

/**
 * 根据传入的css classname获取替换后的css classname
 * 本方法需与css文件配合使用
 * 如原classname为activeW1，则替换后为normalW1
 * @str 当前的css classname
 * @sta 将其中某部分内容替换的目的字符串
 */
function getPrefixName(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;
}

/**
 * 根据contentId初始化div
 * 对名为contentId的div下的所有li元素进行初始化
 * 包括设置其活动状态，读取其内容以及实现其onmouseover以及onmouseout事件
 * @contentId 需要初始化的div内容块的id
 * @defaultNewsUrl 需要作为初始内容出现在内容块中的url
 *
 */
function initContent(contentId,defaultNewsUrl,cookieName) {
	var obj = getElement(contentId);
	var lists = obj.getElementsByTagName("li");
	
	var isInit = false;
	var listCount = 0;
	var firstList;
	var firstListUrl = "";
	var firstListTarget = "";
	
	for (var i=0; i<lists.length; i++) {
		var list;
		var listlink;
		var listurl;
		var listtarget;

		list = lists[i];
		
		if (list.parentNode.parentNode != obj){
			continue;
		}
		
		if (list.getElementsByTagName("a").length==0){
			continue;
		}
		
		listCount++;
		
		listlink = list.getElementsByTagName("a")[0];
		//需要读取的url
		listurl = listlink.getAttribute("urn");
		//填充的目标div
		listtarget = listlink.getAttribute("rel");

		if (firstListUrl == "") {
			firstList = lists[i];
			firstListUrl = listlink.getAttribute("urn");
			firstListTarget = listlink.getAttribute("rel");
		}

		//设置li活动状态的方法，通过调用getPrefixName方法改变其样式
		list.setActive=function(a) {
			if (a) {
				this.status="active";
				this.className=getPrefixName(this.className,"active");
			} else {
				this.status="normal";
				this.className=getPrefixName(this.className,"normal");
			}
		}
		
		//li方法:根据urn读取内容填充进入rel元素
		list.loadTabContent=function() {
			if (this.parentNode.parentNode.activetab!=undefined){
				this.parentNode.parentNode.activetab.setActive(false);
			}
			this.parentNode.parentNode.activetab=this;
			this.setActive(true);
			//注：此处需注意，由于listlink值在最后会变化
			//因此该方法只能再次使用getElementsByTagName("a")方法来获取当前li中的a标签信息	
			var ulistlink=this.getElementsByTagName("a")[0];
			loadContentFromId(ulistlink.getAttribute("urn"),ulistlink.getAttribute("rel"));
		}
		
		//onmouseover事件实现
		list.onmouseover=function() {
			//alert(this.status);
			if (this.status == "active") {
				return;
			}else {
				tempref = this;
				clearTimeout(waitInterval);
				waitInterval = window.setTimeout("tempref.loadTabContent()",timeOut);
				//tempref.loadTabContent();
			}
			//setCookie("subscibe_" + this.parentNode.parentNode.id,this.getElementsByTagName("a")[0].getAttribute("urn"));
		}

		//onmouseout事件实现
		list.onmouseout=function() {
			clearTimeout(waitInterval);
			if (this.status == "normal")
				return;
			//this.setActive(false);
		}
		
		//当该li为初始内容时，则从其url中读取内容填充进入div
		if (listurl.indexOf(defaultNewsUrl) != -1) {
			list.setActive(true);
			obj.activetab=list;
			isInit = true;
			loadContentFromId(listurl,listtarget);
		}else {
			list.setActive(false);
		}
		
	}
		
	if (isInit == false && listCount>0 && firstListUrl!="") {
		setCookie(cookieName,firstListUrl);
		firstList.loadTabContent();
		//loadContentFromId(firstListUrl,firstListTarget);	
		//initContent(contentId,firstListUrl,cookieName);
	}
}

window.onerror=function(){return true}