//<!--
function findPosX(obj)
{
	var curleft = 10;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 15;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
function cleanPx(value){
	var regExpRemovePx = new RegExp("px$", "gi");
	var newValue = parseInt(value.replace(regExpRemovePx, ""));
	return newValue;
}

function addPx(value){
	return "" + value + "px";
}

function showMessage(e){
	var title = this.id;
	var message = document.getElementById('message' + title);
	var mapImage = document.getElementById("outageMap");
	var messageLength = message.length;
	
	var screenWidth;
	var screenHeight;
	var scrollx;
	var scrolly;
	
	if (self.innerHeight) // all except Explorer
	{
		screenWidth = self.innerWidth;
		screenHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		screenWidth = document.documentElement.clientWidth;
		screenHeight = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		screenWidth = document.body.clientWidth;
		screenHeight = document.body.clientHeight;
	}
	if (self.pageYOffset) // all except Explorer
	{
		scrollx = self.pageXOffset;
		scrolly = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		scrollx = document.documentElement.scrollLeft;
		scrolly = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		scrollx = document.body.scrollLeft;
		scrolly = document.body.scrollTop;
	}
	
	var oneCentered = false;
	var centerYDist = ((this.top+mapy) - scrolly) - screenHeight/2;
	if(Math.abs(centerYDist) < 25){
		message.style.top = addPx(this.top + mapy - (message.offsetHeight/2));
		oneCentered = true;
	} else if(Math.abs(centerYDist) < 75){
		if(centerYDist > 0){
			message.style.top = addPx(this.top + mapy - 3*(message.offsetHeight/4));
		} else {
			message.style.top = addPx(this.top + mapy - (message.offsetHeight/4));
		}
		oneCentered = true;		
	} else if(centerYDist < 0) {
		message.style.top = addPx(this.top + mapy + this.offsetHeight);
	} else {
		message.style.top = addPx(mapy + this.top - message.offsetHeight);
	}
	
	//Make sure they don't go off the bottom of the screen
	if(cleanPx(message.style.top) + message.offsetHeight > screenHeight){
		message.style.top = addPx((screenHeight) - message.offsetHeight);
		oneCentered = true;
	}

	//Make sure they don't go off of the top.
	if(cleanPx(message.style.top) < scrolly){
		message.style.top = addPx(scrolly);
		oneCentered = true;
	}
	
	var centerXDist = ((this.left+mapx) - scrollx) - screenWidth/2;
	if(Math.abs(centerXDist) < 25 && !oneCentered){
		message.style.left = addPx(this.left + mapx - (message.offsetWidth/2));
	} else if(Math.abs(centerXDist) < 75 && !oneCentered){
		if(centerXDist > 0){
			message.style.left = addPx(this.left + mapx - 3*(message.offsetWidth/4));
		} else {
			message.style.left = addPx(this.left + mapx - (message.offsetWidth/4));
		}
	} else if(centerXDist < 0){
		message.style.left = addPx(this.left + mapx + this.offsetWidth);
	} else {
		message.style.left = addPx(this.left + mapx - message.offsetWidth);
	}
	
	message.style.visibility = 'visible';
}

function printableWindow(e) {
	var title = this.id;
	var message = document.getElementById('message' + title);
	var content = message.innerHTML;
	var width = message.offsetWidth + 30;
	width = width > 550 ? width : 550;
	var height = message.offsetHeight + 100;
	top.consoleRef=window.open('','printWindow',
		'width='
		+width
		+',height='
		+height
		+',top=200,left=200'
		+',menubar=1'
		+',toolbar=1'
		+',status=0'
		+',scrollbars=0'
		+',resizable=1')
	top.consoleRef.document.writeln(
		'<html><head><title>Print Window for '
		+title
		+'</title>\n'
		+'<link rel="stylesheet" type="text/css" href="outages.css"/>\n'
		+'<style type="text/css">body{ text-align:center; padding:4px; font-family:Verdana, Arial, Helvetica; font-size:9pt; background-color: #fff;}</style></head>\n'
		+'<body bgcolor=white onLoad="self.focus()">\n'
		+'<IMG src="images/legend.gif"/><br/>\n'
		+'<div class="popup">\n'
		+content
		+'</div>\n'
		+'</body></html>'
	)
	top.consoleRef.document.close()
}


function closeMessage(e){
	var title = this.id;
	var message = document.getElementById('message' + title);
	message.style.visibility = 'hidden';
}

var isUnavailable = false;

function init(){
	if(document.getElementById("unavailable")){
		isUnavailable = true;
	}
	if(!isUnavailable){
		var tags = document.getElementsByTagName("div");
		for(var i=0; i<tags.length; i++){
			if(tags[i].id.substr(0,6) == 'county') {
				tags[i].onmouseover=showMessage;
				tags[i].onmouseout=closeMessage;
			}
		}
	}
	window.onresize = positionOutages;
}

var mapx;
var mapy;
function positionOutages() {
	var mapImage = document.getElementById("outageMap");
	mapx = findPosX(mapImage);
	mapy = findPosY(mapImage);
	
	if(!isUnavailable){
		var tags = document.getElementsByTagName("div");
		for(var i=0; i<tags.length; i++){
			if(tags[i].id.substr(0,6) == 'county'){
				if(!tags[i].top){
					tags[i].top = cleanPx(tags[i].style.top);
					tags[i].left = cleanPx(tags[i].style.left);
				}
				tags[i].style.top = addPx(mapy + tags[i].top);
				tags[i].style.left = addPx(mapx + tags[i].left);
				tags[i].style.visibility = 'visible';
			}
		}
	} else {
		var unavailable = document.getElementById("unavailable");
		unavailable.style.top = addPx(mapy + (mapImage.offsetHeight/4) - (unavailable.offsetHeight/2));
		unavailable.style.left = addPx(mapx + (mapImage.offsetWidth/2) - (unavailable.offsetWidth/2));

		//unavailable doesn't know what size it wants to be until
		//it's already been positioned once. Do it twice and it's ok.
		unavailable.style.top = addPx(mapy + (mapImage.offsetHeight/4) - (unavailable.offsetHeight/2));
		unavailable.style.left = addPx(mapx + (mapImage.offsetWidth/2) - (unavailable.offsetWidth/2));
		unavailable.style.visibility = 'visible';
	}
}

function printableMessagesWindow(e) {
	var title = this.id;
	var message = document.getElementById('message' + title);
	var content = message.innerHTML;
	var width = message.offsetWidth + 30;
	width = width > 550 ? width : 550;
	var height = message.offsetHeight + 100;
	top.consoleRef=window.open('','printWindow',
		'width='
		+width
		+',height='
		+height
		+',top=200,left=200'
		+',menubar=1'
		+',toolbar=1'
		+',status=0'
		+',scrollbars=0'
		+',resizable=1')
	top.consoleRef.document.writeln(
		'<html><head><title>Print Window for '
		+title
		+'</title>\n'
		+'<link rel="stylesheet" type="text/css" href="outages.css"/>\n'
		+'<style type="text/css">body{ text-align:center; padding:4px; font-family:Verdana, Arial, Helvetica; font-size:9pt; background-color: #fff;}</style></head>\n'
		+'<body bgcolor=white onLoad="self.focus()">\n'
		+'<br/>\n'
		+'<div class="messagespopup">\n'
		+content
		+'</div>\n'
		+'</body></html>'
	)
	top.consoleRef.document.close()
}

//-->