// javascript for the online permits pages

// add cross-browser events
function addEvent(obj, evType, fn){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	} else {
		return false;
	}
}

// get an events target
function getTarget(e) {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	return targ;
}

// onclick event handler to select the text in a textbox
function selectText(e) {
	var targ = getTarget(e);
	if(targ.value.length > 0)
		targ.select();
}

// onload setup selectText event handlers
function setupTextboxSelector() {
	var textboxes = document.getElementsByTagName('input');
	for(var i = 0; i < textboxes.length; i++) {
		var input = textboxes[i];
		if(input.type == 'text') {
			addEvent(input, 'click', selectText);
		}
	}
}

// set the map img's src
function setMapImage(src) {
	var img = document.getElementById('mapImage');
	img.src = src;
}

// alter the display: of a css rule
function setDisplay(cssSelector, displayValue) {
	var rule = getCssRule(cssSelector);
	if(rule) {
		rule.style.display = displayValue;
	}
}

// alter stylesheet to hide text for all areas but the specified one
function showAreaText(areaName) {
	setDisplay('.rollovertext .default', 'none');
	setDisplay('.rollovertext .area1', 'none');
	setDisplay('.rollovertext .area2', 'none');
	setDisplay('.rollovertext .area3', 'none');
	setDisplay('.rollovertext .area4', 'none');
	setDisplay('.rollovertext .area5', 'none');
	setDisplay('.rollovertext .area6', 'none');
	setDisplay('.rollovertext .' + areaName, '');
}

// event for an area is moused over
function mapMouseOver(e) {
	var targ = getTarget(e);
	if(targ.attributes["alt"] == null)
		return;
	var areaName = targ.attributes["alt"].value;
	if(areaName && areaName.length > 0) {
		setMapImage("Images/map-full-" + areaName + ".gif");
		showAreaText(areaName);
	}
}

// cross-browser function to get a css rule by name
function getCssRule(searchingFor) {
	if (!document.styleSheets) return;
	for(var i = 0; i < document.styleSheets.length; i++) {
		var rules = new Array();
		if (document.styleSheets[0].cssRules)
			rules = document.styleSheets[0].cssRules
		else if (document.styleSheets[0].rules)
			rules = document.styleSheets[0].rules
		else return;
		for(var j = 0; j < rules.length; j++) {
			if(rules[j].selectorText == searchingFor)
				return rules[j]
		}
	}
}

// event for moving out of the map, resets the map
function mapMouseOut(e) {
	setMapImage('Images/map-full.jpg');
	showAreaText('default');
}

// setup rollover events
function setupMapRollover() {
	var img = document.getElementById("mapImage");
	if(!img)  // no image = no rollovers
		return;
	var areas = document.getElementsByTagName('area');
	for(var i = 0; i < areas.length; i++) {
		addEvent(areas[i], 'mouseover', mapMouseOver);
		addEvent(areas[i], 'mouseout', mapMouseOut);
	}
	addEvent(img, 'mouseout', mapMouseOut);
	
	var menuBar = document.getElementById('menubar');
	for(var i = 0; i < menuBar.childNodes.length; i++) {
		if(menuBar.childNodes[i].tagName == 'A') {
			addEvent(menuBar.childNodes[i], 'mouseover', mapMouseOver);
			addEvent(menuBar.childNodes[i], 'mouseout', mapMouseOut);
		}
	}
	addEvent(menuBar, 'mouseout', mapMouseOut);			
}

// setup onload functions
addEvent(window, 'load', setupTextboxSelector);
addEvent(window, 'load', setupMapRollover);