$ = function (id)
{
	return document.getElementById(id);
}

var addresses = [
	'1595 Main Avenue, Clifton, NJ 07011',
	'615 Winters Avenue, Paramus, NJ 07652',
	'660 N. Michigan Avenue, Kenilworth, NJ 07033',
	'275 Rt 10, Succasunna, NJ 07876',
	'268 Brick Boulevard, Brick, NJ 08723'
];
var campuses = [
	'Clifton',
	'Paramus',
	'Kenilworth',
	'Roxbury',
	'Brick'
]
var html = [];
var start;

function zip_search()
{
	directions = [];
	distances = [];
	zip = $('zipcode').value;

	if ( ! zip.match(/\d{5}/))
	{
		alert('Please enter a valid zip code.');
		return false;
	}

	$('getDistOut').innerHTML = '';

	if (html[zip])
	{
		$('getDistOut').innerHTML = html[zip];
	}
	else
	{
		clearTimeout(start);
		$('getDistOut').className = 'loading';
		start = setTimeout("get_info();", 1000);
	}

	return false;
}

function get_info()
{
	for (var i = 0, l = addresses.length; i < l; i++)
	{
		directions[i] = new GDirections;
		directions[i].i = i;
		GEvent.addListener(directions[i], "load", function(direction) {
			var j = direction.i;
			distances[j] = directions[j].getSummaryHtml()+'|'+campuses[j];
		});
		directions[i].load("from: "+zip+" to: "+addresses[i]);
	}

	city_st = zip;
	request = GXmlHttp.create();
	request.open("GET", "?zip="+zip, true);
	request.onreadystatechange = function()
	{
  		if (request.readyState == 4)
  		{
			var xmlDoc = request.responseXML;
			city_st = GXml.value(xmlDoc.documentElement.getElementsByTagName("City")[0]).replace(' Twp', '')
					+', '+GXml.value(xmlDoc.documentElement.getElementsByTagName("State")[0]);
  		}
	}
	request.send(null);

	done = setInterval(function ()
	{
		if ((directions.length == distances.length) && request.readyState == 4)
		{
			clearInterval(done);

			distances.sort(function (a, b)
			{
				var result = parseFloat(a) - parseFloat(b);
				if (result == 0)
				{
					result = parseFloat(a.substr(a.indexOf('about ')+6)) - parseFloat(b.substr(b.indexOf('about ')+6));
				}

				return result;
			});

			html[zip] = get_html();

			$('getDistOut').innerHTML = html[zip];
		}
	}, 100);

	$('getDistOut').className = '';
}

function get_html()
{
	var html = '<div id="result"><div>From '+city_st+'</div><table cellspacing="1">';
	for (i = 0, l = distances.length; i < l; i++)
	{
		var info = distances[i].split('|');
		html += '<tr><td class="header"><a href="#" onclick="return set_campus(\''+info[1]+'\');">'+info[1]+'</a></td><td>'+info[0].replace(/\(/, '<br />(')+'</td></tr>';
	};
	html += '</table></div>';

	return html;
}

function set_campus(campus)
{
	var sel = $('AppointmentCampus');
	for (var i = 0, l = sel.options.length; i < l; i++)
	{
		if (sel.options[i].value == campus)
		{
			sel.selectedIndex = i;
		}
	}

	$('getDistDiv').style.visibility = 'hidden';
	sel.focus();

	return false;
}

window.unload = GUnload;