document.write('<script type="text/javascript" src="js/states.js"></script>');

var xmlDoc;
var corporateHq;
var indexOfHqState;

function displayBranchesForPrint(stateIndex, branchIndex)
{
	var branchesInStateArray = arrayOfStateBranches[stateIndex];

	var infoDiv = document.createElement("div");
		infoDiv.className = "branchListing";

	var headerDiv = document.createElement("div");
		headerDiv.className = "header";

	infoDiv.appendChild(headerDiv);
	
	var city = branchesInStateArray[branchIndex].getElementsByTagName("CITY")[0].firstChild.nodeValue;
	
	if (0 == branchesInStateArray.length)
		headerDiv.innerHTML = "There are no Highway Technologies Branches in " + city + ", " + arrayOfStatesNames[stateIndex];		
	else
	{
		headerDiv.innerHTML = "Highway Technologies Branches in " + city + ", " + arrayOfStatesNames[stateIndex];

		var branchesInSameCity = getAllBranchesInCity(branchesInStateArray, city);

		for (var i = 0; i < branchesInSameCity.length; i++)
			infoDiv.appendChild(addBranchInfo(branchesInSameCity[i], stateIndex, true));
	}
	
	document.getElementById("data").appendChild(infoDiv);

	if (0 < branchesInStateArray.length)
		window.print();
}

function addBranchInfo(branchInfo, stateIndex, printPage)
{	
	var clearDiv = document.createElement("div");
		clearDiv.className = "clear";

	var branchDiv = document.createElement("div");
		branchDiv.className = "branch";

	var bulletDiv = document.createElement("div");

	if (1 == branchInfo.getElementsByTagName("isCorporateHQ")[0].firstChild.nodeValue)
		bulletDiv.className = "corporateOfficeBullet_noShadow";

	var locationDiv = document.createElement("div");
		locationDiv.className = "branchLocation";

	if ((stateIndex == indexOfHqState) && (0 == branchInfo.getElementsByTagName("isCorporateHQ")[0].firstChild.nodeValue))
		locationDiv.className += " corporateBranchLocation";

	var address = "Highway Technologies, Inc. <br />" + branchInfo.getElementsByTagName("ADDRESS")[0].firstChild.nodeValue + "<br />";

	if ( (branchInfo.getElementsByTagName("ADDRESS2")[0]) && (undefined != branchInfo.getElementsByTagName("ADDRESS2")[0].firstChild) )
		address += branchInfo.getElementsByTagName("ADDRESS2")[0].firstChild.nodeValue + "<br />";

	address += branchInfo.getElementsByTagName("CITY")[0].firstChild.nodeValue + ", " +
			   branchInfo.getElementsByTagName("ST")[0].firstChild.nodeValue + ", " +
			   branchInfo.getElementsByTagName("ZIP")[0].firstChild.nodeValue;

	var addressText = document.createElement("p");
		addressText.innerHTML = address;

	var phone = "";
	var fax = "";
	
	if (undefined != branchInfo.getElementsByTagName("PHONE")[0].firstChild)
		phone = branchInfo.getElementsByTagName("PHONE")[0].firstChild.nodeValue;

	if (undefined != branchInfo.getElementsByTagName("FAX")[0].firstChild)
		fax = branchInfo.getElementsByTagName("FAX")[0].firstChild.nodeValue;
	
	var phoneNumbers = "Phone: " + phone + "<br />" +
					   "Fax: " + fax;
	
	var phoneNumbersText = document.createElement("p");
		phoneNumbersText.className = "secondaryInfo";
		phoneNumbersText.innerHTML = phoneNumbers;

	var branchLinks = document.createElement("p");
		branchLinks.className = "secondaryInfo";

	if (false == printPage)
	{
		var arrowImgDiv = document.createElement("div");
			arrowImgDiv.className = "arrowImage";

		var locationMapDiv = document.createElement("div");
			locationMapDiv.className = "branchLinks";

		var locationMap = document.createElement("a");
			locationMap.innerHTML = "Local Map";
			locationMap.target = "_blank";
			locationMap.href = 'http://maps.yahoo.com/dd?addr=' + 
								branchInfo.getElementsByTagName("ADDRESS")[0].firstChild.nodeValue + '&csz=' + 
								branchInfo.getElementsByTagName("CITY")[0].firstChild.nodeValue + '+' + 
								branchInfo.getElementsByTagName("ST")[0].firstChild.nodeValue + '+' + 
								branchInfo.getElementsByTagName("ZIP")[0].firstChild.nodeValue + '&country=us';

		locationMapDiv.appendChild(locationMap);

		branchLinks.appendChild(arrowImgDiv);
		branchLinks.appendChild(locationMapDiv);
		branchLinks.appendChild(clearDiv.cloneNode(false));

		var emailLinkDiv = document.createElement("div");
			emailLinkDiv.className = "branchLinks";

		var emailLink = document.createElement("a");
			emailLink.innerHTML = "E-mail Branch";

		if ( (branchInfo.getElementsByTagName("EMAIL")[0]) && (undefined != branchInfo.getElementsByTagName("EMAIL")[0].firstChild) )
			emailLink.href = 'mailto:' + branchInfo.getElementsByTagName("EMAIL")[0].firstChild.nodeValue;
		else
			emailLink.href = 'mailto:info@hwy-tech.com';

		var emailSubject = "?subject=HT Web Site - Contact Us: " + branchInfo.getElementsByTagName("CITY")[0].firstChild.nodeValue + " " + branchInfo.getElementsByTagName("ST")[0].firstChild.nodeValue;
		emailLink.href = emailLink.href + emailSubject;

		emailLinkDiv.appendChild(emailLink);

		branchLinks.appendChild(arrowImgDiv.cloneNode(false));
		branchLinks.appendChild(emailLinkDiv);
		branchLinks.appendChild(clearDiv.cloneNode(false));
	}
		
	locationDiv.appendChild(addressText);
	locationDiv.appendChild(phoneNumbersText);
	locationDiv.appendChild(branchLinks);

	if (1 == branchInfo.getElementsByTagName("isCorporateHQ")[0].firstChild.nodeValue)
		branchDiv.appendChild(bulletDiv);

	branchDiv.appendChild(locationDiv);	
	
	correctPNG();
	
	return branchDiv;
}

function getAllBranchesInCity(branchesInStateArray, city)
{
	var returnArray = new Array();
	
	for (var i = 0; i < branchesInStateArray.length; i++)
	{
		if (city == branchesInStateArray[i].getElementsByTagName("CITY")[0].firstChild.nodeValue)
			returnArray.push(branchesInStateArray[i]);
	}
	
	return returnArray;
}

function displayBranchesInCity()
{
	if (undefined != document.getElementById("balloon"))
		hideBalloon();
	
	var stateIndex = this.getAttribute("stateIndex");
	var branchIndex = this.getAttribute("itemIndex");

	var clearDiv = document.createElement("div");
		clearDiv.className = "clear";

	var balloonDiv = document.createElement("div");
		balloonDiv.id = "balloon";
		balloonDiv.className = "balloon";
		
	var closeBarDiv = document.createElement("div");
		closeBarDiv.className = "closeBar";
		
	var printImg = document.createElement("a");
		printImg.className = "printButton";
		printImg.id = "printLink";
		printImg.setAttribute("balloonId", "balloon");
		printImg.href = "printPage.html?stateIndex=" + stateIndex + "&branchIndex=" + branchIndex;
		printImg.target = "_blank";
		
	var closeImg = document.createElement("div");
		closeImg.className = "closeButton";
		closeImg.id = "closeLink";
		closeImg.setAttribute("balloonId", "balloon");
	
	closeBarDiv.appendChild(printImg);
	closeBarDiv.appendChild(closeImg);
	
	var branchesInStateArray = arrayOfStateBranches[stateIndex];
	var i = this.getAttribute("itemIndex");

	var infoDiv = document.createElement("div");
		infoDiv.className = "branchListing";

	var contentDiv = document.createElement("div");
		contentDiv.className = "content";

	var headerDiv = document.createElement("div");
		headerDiv.className = "header";
		headerDiv.innerHTML = branchesInStateArray[i].getElementsByTagName("CITY")[0].firstChild.nodeValue + ", " + arrayOfStatesNames[stateIndex];

	var branchesInSameCity = getAllBranchesInCity(branchesInStateArray, branchesInStateArray[i].getElementsByTagName("CITY")[0].firstChild.nodeValue);

	for (var j = 0; j < branchesInSameCity.length; j++)
		infoDiv.appendChild(addBranchInfo(branchesInSameCity[j], stateIndex, false));

	var width = 300;
		
	if (1 < branchesInSameCity.length)
		width = 300 + (90 * branchesInSameCity.length);

	balloonDiv.style.width = width + "px";
	contentDiv.style.width = (width - 15) + "px";

	infoDiv.appendChild(clearDiv);
	contentDiv.appendChild(headerDiv);
	contentDiv.appendChild(closeBarDiv);

	var horizontalBar = document.createElement("div");
		horizontalBar.className = "horizontalBar";
		
	contentDiv.appendChild(horizontalBar);
	contentDiv.appendChild(infoDiv);

	var bottomDiv = document.createElement("div");
		bottomDiv.className = "bottom";
		bottomDiv.innerHTML = "<div></div>";

	var balloonTipDiv = document.createElement("div");
		balloonTipDiv.className = "balloonTip";

	balloonDiv.appendChild(contentDiv);
	balloonDiv.appendChild(balloonTipDiv);
	
	document.body.appendChild(balloonDiv);

	var contentMainLeft = YAHOO.util.Dom.getX("contentMain");
	var contentMainTop = YAHOO.util.Dom.getY("contentMain");
	var left = YAHOO.util.Dom.getX(this);
	var top = YAHOO.util.Dom.getY(this);

	showBalloon(left, top);
}

function displayBranchMarkers()
{
	var mapDiv = document.getElementById("map");
	
	for (var i = 0; i < arrayOfStateBranches.length; i++)
	{
		var branchesInStateArray = arrayOfStateBranches[i];
		
		for (var j = 0; j < branchesInStateArray.length; j++)
		{
			var x = 0;
			var y = 0;

			if (undefined != branchesInStateArray[j].getElementsByTagName("xCoord")[0].firstChild)
				x = branchesInStateArray[j].getElementsByTagName("xCoord")[0].firstChild.nodeValue;
			
			if (undefined != branchesInStateArray[j].getElementsByTagName("yCoord")[0].firstChild)
				y = branchesInStateArray[j].getElementsByTagName("yCoord")[0].firstChild.nodeValue;

			// add pushpin to map
			if ((0 < x) && (0 < y))
			{
				var imageElement = document.createElement("div");
					imageElement.className = "localBranch";
					imageElement.setAttribute("stateIndex", i);
					imageElement.setAttribute("itemIndex", j);
//					imageElement.alt = branchesInStateArray[j].getElementsByTagName("CITY")[0].firstChild.nodeValue + ", " + branchesInStateArray[j].getElementsByTagName("ST")[0].firstChild.nodeValue;
//					imageElement.title = branchesInStateArray[j].getElementsByTagName("CITY")[0].firstChild.nodeValue + ", " + branchesInStateArray[j].getElementsByTagName("ST")[0].firstChild.nodeValue;
				
				if (1 == branchesInStateArray[j].getElementsByTagName("isCorporateHQ")[0].firstChild.nodeValue)
					imageElement.className = "corporateOffice";

				imageElement.style.top = y + "px";
				imageElement.style.left = x + "px";
				
				YAHOO.util.Event.addListener(imageElement, "mouseover", displayBranchesInCity);
				YAHOO.util.Event.addListener(imageElement, "mouseover", function() { this.style.cursor = "pointer"; });

				YAHOO.util.Event.addListener(imageElement, "mouseout", function() { this.style.cursor = "default"; });
				YAHOO.util.Event.addListener(imageElement, "mouseout", initMouseTracking);

				mapDiv.appendChild(imageElement);
			} // if
		} // for j
	} // for i
}

function putBranchesIntoArray()
{
	var branchXml = xmlDoc.getElementsByTagName('branch');
	
	for (var i = 0; i < branchXml.length; i++)
	{
		// find where in the array does the branch's state belong in
		var state = branchXml[i].getElementsByTagName('ST')[0].firstChild.nodeValue;
		var index = -1;

		for (var j = 0; j < arrayOfStatesAbbr.length; j++)
		{
			if (state == arrayOfStatesAbbr[j])
			{
				index = j;
				break;
			}
		}
			
		// state is found in array
		if (-1 < index)
		{
			if (1 == branchXml[i].getElementsByTagName("isCorporateHQ")[0].firstChild.nodeValue)
			{
				corporateHq = branchXml[i];
				indexOfHqState = index;
			}

			arrayOfStateBranches[index].push(branchXml[i]);
		}
	}
}

function readBranchLocationsXml()
{
	// parses the xml result
	importXML("branchLocations.xml", putBranchesIntoArray);
}

function initalizeMap()
{
	readBranchLocationsXml();
	displayBranchMarkers();
}

function initalizePrintPage()
{
	var urlParameters = window.location.search;
	var stateIndex = -1;
	var branchIndex = -1;
	
	// parse the parameters to extract the state index
	var index = urlParameters.indexOf("stateIndex=");
	var nextParameter;
	
	if (-1 < index)
	{
		var i = "stateIndex=".length;
		nextParameter = urlParameters.indexOf("&", index);
		stateIndex = urlParameters.substr(index + i, (nextParameter - index) - i);

		index = urlParameters.indexOf("branchIndex=");
		branchIndex = urlParameters.substr(nextParameter + "branchIndex=".length + 1, urlParameters.length);

		if ( (-1 < stateIndex) && (-1 < branchIndex) )
		{
			readBranchLocationsXml();
			displayBranchesForPrint(stateIndex, branchIndex);
		}
	}
}

YAHOO.util.Event.onAvailable('map', initalizeMap);
YAHOO.util.Event.onAvailable('printPageContainer', initalizePrintPage);
