var Util = {
	getElementsByClassName: function(className, parent, tag) {
		if (parent == null) parent = document;
		if (tag == null) tag = '*';
		var all = parent.getElementsByTagName(tag);

		var elements = [];
		var length = all.length
		for (var i = 0; i < length; i++) {
			if (this.hasClass(all[i], className))
				elements.push(all[i]);
		}
	
		return elements;
	},

	hasClass: function(element, className) {
		return new RegExp('(^|\\s)' + className + '($|\\s)').test(element.className);
	},

	addClass: function(element, className) {
		if (!this.hasClass(element, className))
			element.className += ' ' + className;
	
		return element;
	},

	removeClass: function(element, className) {
		element.className = element.className.replace(new RegExp('((^|\\s)' + className + ')+($|\\s)', 'g'), ' ');
		return element;
	},
	
	getMousePosition: function(e) {
		var posx = 0;
		var posy = 0;

		if (!e) var e = window.event;
		if (e.pageX || e.pageY) {
			posx = e.pageX;
			posy = e.pageY;
		} else if (e.clientX || e.clientY) {
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
		
		return [posx, posy];
	}
}

// Produce the nice initial states on input boxes
var inputs = Util.getElementsByClassName('hasDirections');
var length = inputs.length;
for (var i = 0; i < length; i++) {
	Util.addClass(inputs[i], 'untouched');
	inputs[i].onfocus = function() {
		if (Util.hasClass(this, 'untouched')) {
			Util.removeClass(this, 'untouched');
			this.value = '';
		}
	}
}

function openLocationBox(e) {
	var pos = Util.getMousePosition(e);
	
	document.getElementById('changeLocationBox').style.top = (pos[1] + 10) + 'px';
	document.getElementById('changeLocationBox').style.left = (pos[0] - 220) + 'px';
	document.getElementById('changeLocationBox').style.display = 'block';
	
	return false;
}

var link = document.getElementById('locationsLink')
if (link) link.onclick = openLocationBox;

function closeLocationBox() {
	document.getElementById('changeLocationBox').style.display = 'none';
}

