var siteXML;
var objDom;
var loadXmlTime = 0;


function requestNav(){
	var xmlhttp=false;	
	
	var url =  '/tc/xml/sitemap.xml';
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!xmlhttp) {
		alert('Cannot generate navigation for your browser!');
	} else {
		xmlhttp.open("GET",url,true);
		try {
			xmlhttp.onreadystatechange=function() {
				if (xmlhttp.readyState==4) {					
					siteXML = xmlhttp.responseText;
					
					objDom = new XMLDoc('');
					objDom.loadXML(siteXML);
					genSitemap();
				}		
			}			
			xmlhttp.send(null);
		} catch (err) {
			if(loadXmlTime < 6){
				setTimeout('countLoadXml()', 30);
			}else{
				alert("Please reload the page");
			}
		}
	}
}

function countLoadXml(){
	loadXmlTime ++;
	requestNav(navType);
}


function genSitemap() {

	var sitemapName;

	var tempHtml = '';
	var tempHtml_1 = '';
	var tempHtml_2 = '';
	var tempHtml_3 = '';
	
	sitemapName = '網頁索引';
	tempHtml += '<h1>' + sitemapName + '</h1>';
	try{
		// Determine current section and grab its children.
		var sectionNode = objDom.selectNode('');	
		var c1 = sectionNode.getElements().length;
		// Generate a new section for each level 1 child.
//		alert("Start");
	
		for(var i=0;i<c1;i++){
			var lvl1Node = sectionNode.getElements()[i];
			
		//	alert(unescape(lvl1Node.getAttribute('name')));
		
			if (lvl1Node.getAttribute('name') == 'Header'){
/*
***	Start to build first column
*/	
				tempHtml_1 += '<div class="sitemap-block">';
			
				var lv1ID = lvl1Node.getAttribute('id');
				var lv1Link = lvl1Node.getAttribute('link');
				var lv1Name = unescape(lvl1Node.getAttribute('name'));
				var lv1Show = lvl1Node.getAttribute('showOnSitemap');
				var lv1Title = unescape(lvl1Node.getAttribute('title'));
				
				// if node is visible
				if (lv1Show == 'true' || true){
					var sectionNodeLV2 = objDom.selectNode('/section[@id="' + lv1ID + '"]');
					var c2 = lvl1Node.getElements().length;
					//alert("c2: " + c2);
					for(var j=0;j<c2;j++){
						var lvl2Node = sectionNodeLV2.getElements()[j];
						var lv2ID = lvl2Node.getAttribute('id');
						var lv2Link = lvl2Node.getAttribute('link');
						var lv2Name = unescape(lvl2Node.getAttribute('name'));
						var lv2Show = lvl2Node.getAttribute('showOnSitemap');
						var lv2Title = unescape(lvl2Node.getAttribute('title'));
						
						
						// if node is visible
						if (lv2Show == 'true'){
							tempHtml_1 += '<h3 style="padding-top:15px"><a href="' + lv2Link + '" title="' + lv2Title + '">' + lv2Name + '</a></h3>';
								
							var sectionNodeLV3 = objDom.selectNode('/section/section[@id="' + lv2ID + '"]');
							var c3 = lvl2Node.getElements().length;
							//alert("c2: " + c2);
							if (c3 > 0){
								tempHtml_1 += '<ul class="linkList1" style="margin-bottom:0px;">';
							}
							for(var k=0;k<c3;k++){
								var lvl3Node = sectionNodeLV3.getElements()[k];
								//var lv3ID = lvl3Node.getAttribute('id');
								var lv3Link = lvl3Node.getAttribute('link');
								var lv3Name = unescape(lvl3Node.getAttribute('name'));
								var lv3Show = lvl3Node.getAttribute('showOnSitemap');
								var lv3Title = unescape(lvl3Node.getAttribute('title'));
						
								// if node is visible
								if (lv3Show == 'true'){
									tempHtml_1 += '<li><a title="' + lv3Title + '" href="' + lv3Link + '">' + lv3Name + '</a></li>';	
									//alert(unescape(lvl2Node.getAttribute('name')));
								}
							}
							if (c3 > 0){
								tempHtml_1 += '</ul>';
							}
							//alert(unescape(lvl2Node.getAttribute('name')));
						}
					}
				}
				
				tempHtml_1 += '</div>';
/*
***	End of first column
*/	

			} else if (lvl1Node.getAttribute('id') == '636'){
/*
***	Start to build second column
*/	
				tempHtml_2 += '<div class="sitemap-block">';
				
				var lv1ID = lvl1Node.getAttribute('id');
				var lv1Link = lvl1Node.getAttribute('link');
				var lv1Name = unescape(lvl1Node.getAttribute('name'));
				var lv1Show = lvl1Node.getAttribute('showOnSitemap');
				var lv1Title = unescape(lvl1Node.getAttribute('title'));
				
				// if parent node is visible
				if (lv1Show == 'true'){
					tempHtml_2 += '<h3 style="padding-top:15px"><a href="' + lv1Link + '" title="' + lv1Title + '">' + lv1Name + '</a></h3>';
					
					var sectionNodeLV2 = objDom.selectNode('/section[@id="' + lv1ID + '"]');
					var c2 = lvl1Node.getElements().length;
					//alert("c2: " + c2);
					if (c2 > 0){
						tempHtml_2 += '<ul class="linkList1" style="margin-bottom:0px;">';
					}
					
					for(var j=0;j<c2;j++){
						var lvl2Node = sectionNodeLV2.getElements()[j];
						var lv2ID = lvl2Node.getAttribute('id');
						var lv2Link = lvl2Node.getAttribute('link');
						var lv2Name = unescape(lvl2Node.getAttribute('name'));
						var lv2Show = lvl2Node.getAttribute('showOnSitemap');
						var lv2Title = unescape(lvl2Node.getAttribute('title'));
						
						// if node is visible
						if (lv2Show == 'true'){
							tempHtml_2 += '<li><a title="' + lv2Title + '" href="' + lv2Link + '">' + lv2Name + '</a></li>';	
							//alert(unescape(lvl2Node.getAttribute('name')));
						}
					}
					
					if (c2 > 0){
						tempHtml_2 += '</ul>';
					}
				}
				
//				tempHtml_2 += '</div>';
/*
***	End of second up column
*/	
			} else if  (lvl1Node.getAttribute('id') == '638'){
/*
***	Start to build second down column
*/	
//				tempHtml_2 += '<div class="sitemap-block">';
				
				var lv1ID = lvl1Node.getAttribute('id');
				var lv1Link = lvl1Node.getAttribute('link');
				var lv1Name = unescape(lvl1Node.getAttribute('name'));
				var lv1Show = lvl1Node.getAttribute('showOnSitemap');
				var lv1Title = unescape(lvl1Node.getAttribute('title'));
				
				// if parent node is visible
				if (lv1Show == 'true'){
					tempHtml_2 += '<h3 style="padding-top:15px"><a href="' + lv1Link + '" title="' + lv1Title + '">' + lv1Name + '</a></h3>';
					
					var sectionNodeLV2 = objDom.selectNode('/section[@id="' + lv1ID + '"]');
					var c2 = lvl1Node.getElements().length;
					//alert("c2: " + c2);
					if (c2 > 0){
						tempHtml_2 += '<ul class="linkList1" style="margin-bottom:0px;">';
					}
					
					for(var j=0;j<c2;j++){
						var lvl2Node = sectionNodeLV2.getElements()[j];
						var lv2ID = lvl2Node.getAttribute('id');
						var lv2Link = lvl2Node.getAttribute('link');
						var lv2Name = unescape(lvl2Node.getAttribute('name'));
						var lv2Show = lvl2Node.getAttribute('showOnSitemap');
						var lv2Title = unescape(lvl2Node.getAttribute('title'));
						
						// if node is visible
						if (lv2Show == 'true'){
							tempHtml_2 += '<li><a title="' + lv2Title + '" href="' + lv2Link + '">' + lv2Name + '</a></li>';	
							//alert(unescape(lvl2Node.getAttribute('name')));
						}
					}
					
					if (c2 > 0){
						tempHtml_2 += '</ul>';
					}
				}
				
				tempHtml_2 += '</div>';
/*
***	End of second down column
*/	
			} else if  (lvl1Node.getAttribute('id') == '639'){
/*
***	Start to build last up column
*/	
				tempHtml_3 += '<div class="sitemap-block last">';
				
				var lv1ID = lvl1Node.getAttribute('id');
				var lv1Link = lvl1Node.getAttribute('link');
				var lv1Name = unescape(lvl1Node.getAttribute('name'));
				var lv1Show = lvl1Node.getAttribute('showOnSitemap');
				var lv1Title = unescape(lvl1Node.getAttribute('title'));
				
				// if parent node is visible
				if (lv1Show == 'true'){
					tempHtml_3 += '<h3 style="padding-top:15px"><a href="' + lv1Link + '" title="' + lv1Title + '">' + lv1Name + '</a></h3>';
					
					var sectionNodeLV2 = objDom.selectNode('/section[@id="' + lv1ID + '"]');
					var c2 = lvl1Node.getElements().length;
					//alert("c2: " + c2);
					if (c2 > 0){
						tempHtml_3 += '<ul class="linkList1" style="margin-bottom:0px">';
					}
					
					for(var j=0;j<c2;j++){
						var lvl2Node = sectionNodeLV2.getElements()[j];
						var lv2ID = lvl2Node.getAttribute('id');
						var lv2Link = lvl2Node.getAttribute('link');
						var lv2Name = unescape(lvl2Node.getAttribute('name'));
						var lv2Show = lvl2Node.getAttribute('showOnSitemap');
						var lv2Title = unescape(lvl2Node.getAttribute('title'));
						
						// if node is visible
						if (lv2Show == 'true'){
							tempHtml_3 += '<li><a title="' + lv2Title + '" href="' + lv2Link + '">' + lv2Name + '</a></li>';	
							//alert(unescape(lvl2Node.getAttribute('name')));
						}
					}
					
					if (c2 > 0){
						tempHtml_3 += '</ul>';
					}
				}
				
//				tempHtml_2 += '</div>';
/*
***	End of last up column
*/	
			} else if  (lvl1Node.getAttribute('name') == 'Footer'){
/*
***	Start to build last down column
*/	
			
				var lv1ID = lvl1Node.getAttribute('id');
				var lv1Link = lvl1Node.getAttribute('link');
				var lv1Name = unescape(lvl1Node.getAttribute('name'));
				var lv1Show = lvl1Node.getAttribute('showOnSitemap');
				var lv1Title = unescape(lvl1Node.getAttribute('title'));
				
				// if node is visible
				if (lv1Show == 'true' || true){
					var sectionNodeLV2 = objDom.selectNode('/section[@id="' + lv1ID + '"]');
					var c2 = lvl1Node.getElements().length;
					//alert("c2: " + c2);
					for(var j=0;j<c2;j++){
						var lvl2Node = sectionNodeLV2.getElements()[j];
						var lv2ID = lvl2Node.getAttribute('id');
						var lv2Link = lvl2Node.getAttribute('link');
						var lv2Name = unescape(lvl2Node.getAttribute('name'));
						var lv2Show = lvl2Node.getAttribute('showOnSitemap');
						var lv2Title = unescape(lvl2Node.getAttribute('title'));
						
						
						// if node is visible
						if (lv2Show == 'true'){
							tempHtml_3 += '<h3 style="padding-top:15px"><a href="' + lv2Link + '" title="' + lv2Title + '">' + lv2Name + '</a></h3>';
								
							var sectionNodeLV3 = objDom.selectNode('/section/section[@id="' + lv2ID + '"]');
							var c3 = lvl2Node.getElements().length;
							//alert("c2: " + c2);
							if (c3 > 0){
								tempHtml_3 += '<ul class="linkList1" style="margin-bottom:0px">';
							}
							for(var k=0;k<c3;k++){
								var lvl3Node = sectionNodeLV3.getElements()[k];
								//var lv3ID = lvl3Node.getAttribute('id');
								var lv3Link = lvl3Node.getAttribute('link');
								var lv3Name = unescape(lvl3Node.getAttribute('name'));
								var lv3Show = lvl3Node.getAttribute('showOnSitemap');
								var lv3Title = unescape(lvl3Node.getAttribute('title'));
						
								// if node is visible
								if (lv3Show == 'true'){
									tempHtml_3 += '<li><a title="' + lv3Title + '" href="' + lv3Link + '">' + lv3Name + '</a></li>';	
									//alert(unescape(lvl2Node.getAttribute('name')));
								}
							}
							if (c3 > 0){
								tempHtml_3 += '</ul>';
							}
							//alert(unescape(lvl2Node.getAttribute('name')));
						}
					}
				}
				
				tempHtml_3 += '</div>';
/*
***	End of last down column
*/	
			}

		//	alert (tempHtml);
			
/*			
			var showOnSitemapLvl2 = new Array();
			var showOnSitemapLvl2NoChild = new Array();
			var noChildHtml = '';
			var c2 = lvl1Node.getElements().length;
			for(var j=0;j<c2;j++) {
				var lvl2ID = lvl1Node.getElements()[j].getAttribute('id');
				if(lvl1Node.getElements()[j].getAttribute('showOnSitemap').toLowerCase() == 'true') {
					if (objDom.selectNode('/section/section/section[@id="' + lvl2ID +'"]/section[@showOnSitemap="true"]')) {
						// Add lvl 2 subsections where the attribute "showOnSitemap" equals true inside this section and has at
						// least one child with attribute "showOnSitemap" equals true.
						showOnSitemapLvl2.push(lvl2ID);
					} else {
						// Add lvl 2 subsections where the attribute "showOnSitemap" equals true inside this section and has no children
						// with attribute "showOnSitemap" equals true.
						showOnSitemapLvl2NoChild.push(lvl2ID);
					}
				}
			}
			
			// Prepare the html for lvl 2 sections with no children to be displayed at the top.
			if (showOnSitemapLvl2NoChild.length > 0) {
				noChildHtml += '<td style="padding:0px 20px 15px 0px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr valign="top"><td><table width="100%" border="0" cellspacing="0" cellpadding="3">';
				
				var f1 = showOnSitemapLvl2NoChild.length;
				for (var j=0; j<f1;j++) {
					var lvl2Node = objDom.selectNode('/section/section/section[@id="' + showOnSitemapLvl2NoChild[j] + '"]');
					
					noChildHtml += '<tr valign="top"><td style="padding:10px 3px 0px 1px;"><img src="/common/images/common/arrow_red.gif" width="4" height="5" /></td><td width="100%" class="purple"><a href="' + lvl2Node.getAttribute('link') + '" class="purple" target="' + lvl2Node.getAttribute('target') + '">' + unescape(lvl2Node.getAttribute('name')) + '</a></td></tr>';
				}
				noChildHtml += '</table></td></tr></table></td>';			
			}
			
			var displayedCount = showOnSitemapLvl2.length;
			// Generate a new table row for every 3 items.
			for(var j=0;j<Math.ceil(showOnSitemapLvl2.length/3);j++) {
				tempHtml += '<tr valign="top">';

				for(var k=0;k<Math.min(3,displayedCount);k++) {
					var lvl2Node = objDom.selectNode('/section/section/section[@id="' + showOnSitemapLvl2[k+j*3] + '"]');
					var lvl2Name = unescape(lvl2Node.getAttribute('name'));
					
					tempHtml += '<td width="33%" style="padding:0px 20px 15px 0px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr valign="top"><td><table width="100%" border="0" cellspacing="0" cellpadding="3"><tr valign="top"><td style="padding:10px 3px 0px 1px;"><img src="/common/images/common/arrow_red.gif" width="4" height="5" /></td><td width="100%" class="purple"><a href="' + lvl2Node.getAttribute('link') + '" target="' + lvl2Node.getAttribute('target') + '" class="purple">' + lvl2Name + '</a></td></tr><tr valign="top"><td>&nbsp;</td><td style="padding:0px;"><table width="100%" border="0" cellspacing="0" cellpadding="3">';
					var c3 = lvl2Node.getElements().length;
					for(var l=0;l<c3;l++) {
						var lvl3Node = lvl2Node.getElements()[l];
						if (lvl3Node.getAttribute('showOnSitemap').toLowerCase() == 'true') {
							tempHtml += '<tr valign="top"><td style="padding:10px 5px 0px 6px;"><img src="/common/images/common/pt_gray.gif" width="3" height="3" /></td><td width="100%" class="leftnav"><a href="' + lvl3Node.getAttribute('link') + '" class="leftnav" target="' + lvl3Node.getAttribute('target') + '">' + unescape(lvl3Node.getAttribute('name')) + '</a></td></tr>';
						}
					}
					tempHtml += '</table></td></tr></table></td></tr></table></td>';
										
				}
				
				// Check to see if this is the last row and if there are any lvl 2 sections with no show on sitemap children and if they can be displayed on current row.
				if(j == Math.ceil(showOnSitemapLvl2.length/3)-1 && showOnSitemapLvl2NoChild.length > 0 && showOnSitemapLvl2.length % 3 > 0) {
					tempHtml += noChildHtml;
				}
				
				tempHtml += '</tr>';
				displayedCount -= 3;
			}
			// Check to see if are any lvl 2 sections with no show on sitemap children and if they need to be displayed on a new row.
			if(showOnSitemapLvl2NoChild.length > 0 && showOnSitemapLvl2.length % 3 == 0) {
				tempHtml += '<tr valign="top">'+noChildHtml+'</tr>';
			}
				
			tempHtml += '</table></td></tr></table></td></tr>';
		*/
		}
		tempHtml = tempHtml + tempHtml_1 + tempHtml_2 + tempHtml_3;
	} catch (err) {
		tempHtml = '<tr><td style="padding:15px 15px 0px 10px; border-bottom:#E0E0E0 1px solid;">Unable to retrieve sitemap information...</td></tr>';
	}
	
//	tempHtml += '</table><!-- Sitemap End -->';
	
	document.getElementById('sitemapDiv').innerHTML = tempHtml;
	
}