window.onload=rollup;

function rollout(objMenuitem, objEvent)
{
	// Some keyhandling stuff
	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			var iKeyCode = objEvent.keyCode;
		else if (objEvent.which) 
			var iKeyCode = objEvent.which;

		// If it's not the enter key or space key, 
		// pass control back to the browser
		if (iKeyCode != 13 && iKeyCode != 32)
			return true;
	}

	if (objMenuitem.nextSibling.nextSibling.style.display == 'block')
		var strDisplayMode = 'none';
	else
		var strDisplayMode = 'block';

	// Rollup nested lists that are still open
	var objMenu = document.getElementById('mainnav');
	var objNested = objMenu.getElementsByTagName('ul');

	for (var i=0; i<objNested.length; i++)
		if (objNested[i].style.display == 'block')
			objNested[i].style.display = 'none';

	// Toggle the current menu
	objMenuitem.nextSibling.nextSibling.style.display = strDisplayMode;
	
	return false;
}

function rollup()
{
	var strLocation = window.location;
	
	var objMenu = document.getElementById('mainnav');
	
	var objNested = objMenu.getElementsByTagName('ul');

	// Hide each unordered list, and add an event listener to the parent link
	for (var i=0; i<objNested.length; i++)
	{
		// Only hide, if the current location is not found in the list
		bRollup = true;
		var objLinks = objNested[i].getElementsByTagName('a');

		for (var j=0; j<objLinks.length; j++)
		{
			if (objLinks[j].href == strLocation)
				bRollup = false;
		}
		
		if (bRollup == true)
			objNested[i].style.display = 'none';
		else
			objNested[i].style.display = 'block';

		objNested[i].previousSibling.previousSibling.onclick=function(event){return rollout(this, event);}
		objNested[i].previousSibling.previousSibling.onkeypress=function(event){return rollout(this, event);}
	}
	
	addScriptOptions();
	
	//setNavHeight();

	if (document.getElementById('distchart'))
	{
		addMouseOverTD();
		addMouseOverLabel();
	}
}

function addMouseOverTD()
{
	var objChart = document.getElementById('distchart');
	var objGrid = objChart.getElementsByTagName('td');

	for (var iCounter=0; iCounter<objGrid.length; iCounter++)
		objGrid[iCounter].onmouseover=function(){displayGrids(this);}
}

function addMouseOverLabel()
{
	var objChart = document.getElementById('distchart');
	var objGrid = objChart.getElementsByTagName('th');

	for (var iCounter=0; iCounter<objGrid.length; iCounter++)
		objGrid[iCounter].onmouseover=function(){highlightLabel(this);}
}

function displayGrids(objGrid)
{
	var strHeader = objGrid.getAttribute('headers');
	var arHeader = objGrid.getAttribute('headers').split(" ");
	var objChart = document.getElementById('distchart');
	var objBack = objChart.getElementsByTagName('td');
	var objRow = objGrid.parentNode.getElementsByTagName('td');
	
	for (var iCounter=0; iCounter<objBack.length; iCounter++)
		objBack[iCounter].style.backgroundColor = '#fff';

	for (var iCounter=0; iCounter<objRow.length; iCounter++)
		objRow[iCounter].style.backgroundColor = '#718e72';

	for (var iCounter=0; iCounter<objBack.length; iCounter++)
	{
		if (objBack[iCounter].getAttribute('headers').indexOf(arHeader[0])==0)
			objBack[iCounter].style.backgroundColor = '#718e72';
	}
	
	objGrid.style.backgroundColor = '#c0c6bf';

	var objPlace = document.getElementById('distanceplace');
	var objOld = document.getElementById('placetext');
	var objNew = document.createElement('p');
	objNew.id = 'placetext';
	var objContent = document.createTextNode(strHeader + ': ' + objGrid.firstChild.data + '公里 (KM)');
	objNew.appendChild(objContent);
	
	objPlace.replaceChild(objNew, objOld);
}

function highlightLabel(objLabel)
{
	var strPlace = objLabel.firstChild.data.toLowerCase();
	var iPos = strPlace.indexOf(" ")

	if (iPos > 0)
		strPlace = strPlace.substring(0, iPos);
	
	var strRegExp = "\\b" + strPlace;
	
	var objChart = document.getElementById('distchart');
	var objGrid = objChart.getElementsByTagName('td');
	for (var iCounter=0; iCounter<objGrid.length; iCounter++)
		if (objGrid[iCounter].getAttribute('headers').match(strRegExp))
			objGrid[iCounter].style.backgroundColor = '#718e72';
		else
			objGrid[iCounter].style.backgroundColor = '#fff';

	var objPlace = document.getElementById('distanceplace');
	var objOld = document.getElementById('placetext');
	var objNew = document.createElement('p');
	objNew.id = 'placetext';
	var objContent = document.createTextNode(objLabel.firstChild.data);
	objNew.appendChild(objContent);
	
	objPlace.replaceChild(objNew, objOld);
}

function setNavHeight()
{
	var objNavBar = document.getElementById('navigation');
	var objFooter = document.getElementById('footer');
	
	if (document.all)
		var iAdjustment = 10;
	else
		var iAdjustment = 26;
	
	var strFinal = String((objFooter.offsetTop - objNavBar.offsetHeight) - iAdjustment) + 'px';
	
	if ((objNavBar.offsetHeight + iAdjustment) < objFooter.offsetTop)
	{
		var objNewPanel = document.createElement('div');
		objNewPanel.className = 'panel';
		objNewPanel.style.height = strFinal;
		objNavBar.appendChild(objNewPanel);
	}
}

function displayAll()
{
       var objItem, objItemContent, objAttributes, strElement, objChildren;

       var objContent = document.getElementsByTagName('*');

       var objList = document.createElement('ul');

       for (var i=0; i<objContent.length; i++)
       {
               objItem = document.createElement('li');

               strElement = objContent[i].nodeName;
/*
               objAttribute = objContent[i].attributes;
               for (j=0; j<objAttribute.length; j++)
                       strElement += ' ' + objAttribute[j].name + '="' + objAttribute[j].value + '"';
*/
               objItemContent = document.createTextNode(strElement);

               objItem.appendChild(objItemContent);
               objList.appendChild(objItem);               
       }

       document.body.appendChild(objList);
}

function addScriptOptions()
{
	var objListItem, objLink, objLinkPhrase;

	if (document.getElementById('sendpage'))
	{
		var objKnownItem = document.getElementById('sendpage');
		
		// Only add a print option if the browser is capable of printing
		if (window.print)
		{
			objListItem = document.createElement('li');
			objListItem.id = 'printpage';
			objLink = document.createElement('a');
			objLinkPhrase = document.createTextNode('Print this page');
			objLink.href='#';
			objLink.onclick=function(event){return printDoc(this, event);}
			objLink.onkeypress=function(event){return printDoc(this, event);}
		
			objLink.appendChild(objLinkPhrase);
			objListItem.appendChild(objLink);
			
			objKnownItem.parentNode.insertBefore(objListItem, objKnownItem);
		}
		
		// Only IE can use AddFavorite, so hide from sensible browsers
		if (window.external)
		{
			objListItem = document.createElement('li');
			objListItem.id = 'homepage';
			objLink = document.createElement('a');
			objLinkPhrase = document.createTextNode('Set as Home Page');
			objLink.href='#';
			objLink.style.behavior='url(#default#homepage)';
			objLink.onclick=function(event){return addFave(this, event);}
			objLink.onkeypress=function(event){return addFave(this, event);}

			objLink.appendChild(objLinkPhrase);
			objListItem.appendChild(objLink);
			
			objKnownItem.parentNode.appendChild(objListItem);
		}
	}
}

function printDoc(objItem, objEvent)
{
	// Some keyhandling stuff
	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			var iKeyCode = objEvent.keyCode;
		else if (objEvent.which) 
			var iKeyCode = objEvent.which;

		// If it's not the enter key or space key, 
		// pass control back to the browser
		if (iKeyCode != 13 && iKeyCode != 32)
			return true;
	}
	
	window.print();
	
	return false;
}

function addFave(objItem, objEvent)
{
	// Some keyhandling stuff
	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			var iKeyCode = objEvent.keyCode;
		else if (objEvent.which) 
			var iKeyCode = objEvent.which;

		// If it's not the enter key or space key, 
		// pass control back to the browser
		if (iKeyCode != 13 && iKeyCode != 32)
			return true;
	}

	objItem.setHomePage('http://visitenc.com');
	
	return false;
}


