$ = 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;
