var isMozilla = /Mozilla\/5\.0/.test(navigator.userAgent);
if (isMozilla)
   document.write('<script type="text/javascript" src="'+SITE_JS_PATH+'mozillaForIE.js"></sc' + 'ript>');

//HTML Outline对象
var m_objSrcContent = null;
//HTML Column对象
var m_arSingleRec = null;


//所有的节点
var m_arNodes = null;

var m_nCurrentRecCount = 0;


var DocumentsDataSrc = null;

var m_nLoadCount = 0;
var xmlhttp = null;
function XMLHttpStateChangeForIE(){
	if(xmlhttp.readyState == 4){
		if(DocumentsDataSrc == null){
			DocumentsDataSrc = new ActiveXObject("Microsoft.XMLDOM");
			DocumentsDataSrc.setProperty("SelectionLanguage", "XPath"); 
			DocumentsDataSrc.async=false;
		}
		DocumentsDataSrc.loadXML(xmlhttp.responseText);
		initBody();		
	}else{
		//alert("服务器出现异常！["+xmlhttp.readyState+"]["+xmlhttp.status+"]");
	}
}

function initDocumentsDataSrc(){
	if (window.ActiveXObject)
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		xmlhttp.onreadystatechange=XMLHttpStateChangeForIE;
		xmlhttp.open("GET", XML_FILE + "?rand=" + Math.random(), true)
		xmlhttp.send();
	}
	// code for Mozilla, etc.
	else if (document.implementation &&document.implementation.createDocument)
	{
		DocumentsDataSrc= document.implementation.createDocument("","",null);
		DocumentsDataSrc.async=true;
		DocumentsDataSrc.load(XML_FILE + "?rand=" + Math.random());
		//DocumentsDataSrc.setProperty("SelectionLanguage", "XPath"); 
		DocumentsDataSrc.onload=initBody;
	}
	else
	{
		alert('您的系统不支持XML浏览！');
	}
}

function initBody(){
	m_objSrcContent = document.getElementById("OutlineContent");
	if(m_objSrcContent == null){
		alert( "没有定义Outline区域！分页代码发生异常！" );
		return false;
	}

	m_arSingleRec = document.getElementsByName("ColumnContent");
	if(m_arSingleRec == null){
		alert( "没有定义Column区域！分页代码发生异常！" );
		//return false;
	}
	
	loadXMLData("//D");

	window.setTimeout("initDocumentsDataSrc();", 1000);
}

function loadXMLData(_sPath){
	var sPath = _sPath;
	//提取数据	
	m_arNodes = DocumentsDataSrc.selectNodes(sPath);	
	if(m_arNodes.length > m_nCurrentRecCount){
		loadCurrentData();		
	}

	if(m_nLoadCount>0){
		m_nCurrentRecCount += m_nLoadCount;
		if(m_arNodes.length < m_nCurrentRecCount){
			m_nCurrentRecCount = m_arNodes.length;
		}
	}else{
		m_nCurrentRecCount = m_arNodes.length;
	}
	return;
}

function getElementsByNameFrom(_oElement, _sName){
	var pElements = new Array();
	var arAll = _oElement.all;
	for(var i=0; i<arAll.length; i++){
		if(arAll[i].getAttribute("name") == _sName){
			pElements.push(arAll[i]);
		}
	}
	return pElements;
}

function loadCurrentData(){	
	var nStartIndex = m_arNodes.length - m_nCurrentRecCount - 1 ;
	var nEndIndex = 0;
	if(m_nLoadCount>0 && (nStartIndex - nEndIndex)>m_nLoadCount){
		nEndIndex = nStartIndex - m_nLoadCount + 1;
	}
	

	for(var i = nStartIndex; i>=nEndIndex; i--){		
		var objContent = null;		
		//复制Outline节点
		objContent = m_objSrcContent.cloneNode(true);
		//设置Name及ID
		objContent.name = "OutlineClone";	
		objContent.id	= "OutlineClone_"+i;	
		//设置Display
		objContent.style.display = "";

		
		var arSingleRec = getElementsByNameFrom(objContent, "ColumnContent");
		if(arSingleRec==null)arSingleRec = objContent;
		var recCount = 1;
		if(arSingleRec.length)recCount = arSingleRec.length;
		
		var nRecordIndex = 0, nColumnElementIndex = recCount-1;
		for(nRecordIndex = 0; nRecordIndex < recCount; nRecordIndex++, nColumnElementIndex--){		
			//判断当前索引是否有效
			if((i - nRecordIndex+1)<nEndIndex)break;		

		
			//获取当前的XML节点
			var xmlNode = null;
			if(isMozilla){
				xmlNode = m_arNodes.array[i - nRecordIndex];			
			}else{
				xmlNode = m_arNodes[i - nRecordIndex ];
			}
			if(xmlNode == null)break;

			//遍历所有属性子节点，从XML中提取数据
			var objSingleRec = null;
			if(arSingleRec.length)
				objSingleRec = arSingleRec[nColumnElementIndex];
			else
				objSingleRec = arSingleRec;
			
			var arAllField = objSingleRec.all;
			objSingleRec.style.display = "";
			for(var j=0; j<arAllField.length; j++){		
				var sFieldName = arAllField[j].getAttribute("FieldName");
				var sTagName = arAllField[j].tagName;
				
				
				if(sFieldName){
					var sValue = "";
					//获取属性节点
					var xmlNodeTemp = getChildXMLNodeByTagName(xmlNode, sFieldName);//xmlNode.selectSingleNode(sFieldName);
					if(xmlNodeTemp)sValue = getNodeText(xmlNodeTemp);
					
					switch(sTagName.toUpperCase()){//暂时只支持四种HTML置标定义数据源
						case "A":
							arAllField[j].href = sValue;
							break;
						case "SPAN":
						case "TD":
							arAllField[j].innerHTML = sValue;
							break;
						case "IMG":
							arAllField[j].src = sValue;
							break;
						default:
							break;
					}
				}
			}			
		}		
		//将没有填充内容的Column隐藏
		for(; arSingleRec.length && nColumnElementIndex>=0; nColumnElementIndex--)
			arSingleRec[nColumnElementIndex].style.display = "none";

		
		var all = m_objSrcContent.all;
		m_objSrcContent.parentNode.insertBefore(objContent, m_objSrcContent.parentNode.childNodes[0]);				

		i -= (nRecordIndex-1);
	}
}



//删除原有的节点
function removeAllOldNodes(){
	var arTemp = document.getElementsByName("OutlineClone");
	if(!arTemp)return false;

	if(arTemp.length){
		for(var i=arTemp.length-1; i>=0; i--){
			arTemp[i].removeNode(true);
		}
	}else{
		arTemp.removeNode(true);
	}
	return true;
}

var m_bFirst    = true;

function getChildXMLNodeByTagName(_xmlNode, _sTagName){
	var sTagName = _sTagName.toUpperCase();
	var arChildren = _xmlNode.childNodes;
	var nCount = arChildren.length;
	for(var i=0; i<nCount; i++){
		var node = arChildren[i];
		if(node.nodeName.toUpperCase() == _sTagName){
			return node;		
		}
	}
}

function getNodeText(_node){
	if(_node.childNodes.length==0){
		return _node.nodeValue;
	}

	return getNodeText(_node.childNodes[0]);
}

//window.onload = initBody;

window.setTimeout("initDocumentsDataSrc();", 1000);
