Element.addMethods(['select'], {
	addOption: function(element, value, name) {
		var option = document.createElement('option');
		option.text = name;
		if(value != "undfined")
			option.value = value;
		
		try{
			$(element).add(option, null);
		}
		catch(ex) {
			$(element).add(option);
		}
	},
	addOptions: function(element, options) {
		var count = 0;
		for(var i in options) {
			count++;
			$(element).addOption(i, options[i]);
		}
		return count;
	},
	selectIndex: function(element, value) {
		if(value == null || value == "")
			return;
		
		for(var i=0; i<$(element).length; i++)
		{
			if($(element).options[i].value == value) {
				$(element).selectedIndex = i;
				return;
			}
		}
	}
});

Event.observe(window, 'load', function(){
	Event.observe('zipcode', 'blur', zipcodeChange);
	Event.observe('course', 'change', courseChange);
	Event.observe('form-adkey', 'change', gradDate);
	gradDate();
});

function zipcodeChange() {
	$('course-loading').show();
	$('campus').length = 0;
	$('campus').addOption('0', '-- Choose a Program First --');
	new Ajax.Request('/contact/program_search', {
		method: 'GET',
		asynchronous: true,
		evalScripts: false,
		parameters: {zipcode: $F('zipcode')},
		onComplete: function(request, json) {
			$('course-loading').hide();
			$('course').length = 0;
			$('course').addOption('0', '-- Choose a Program --');
			$('course').addOptions(json['programs']);
			$('course').addOption('NS', 'Not Sure');
			
			updateCity(json['location']['city']);			
			$('state').selectIndex(json['location']['state']);
			$('country').selectIndex(json['location']['country']);
		}
	});
}
function courseChange() {
	if($F('course') == '0') {
		$('campus').length = 0;
		$('campus').addOption('0', '-- Choose a Program First --');
		return;
	}
	$('campus-loading').show();
	new Ajax.Request('/contact/campus_search', {
		method: 'GET',
		asynchronous: true,
		evalScripts: false,
		parameters: {zipcode: $F('zipcode'), course: $F('course')},
		onComplete: function(request, json) {
			$('campus-loading').hide();
			$('campus').length = 0;
			$('campus').addOption('0', '-- Choose a Campus --');
			var added = $('campus').addOptions(json);
			if(added == 1)
				$('campus').selectedIndex = 1;
			else if(added == 0) {
				$('campus').length = 0;
				$('campus').addOption('0', '-- Choose a Program First --');
			}
		}
	});
}
function updateCity(city) {
	if(city != null && city != "")
		$('city').value = city;
}

function gradDate() {
	if($F('form-adkey') == 'HSINTRNT')
		$('graddate-field').show();
	else
		$('graddate-field').hide();
}