function getPrograms (areastudyID)
{
	if (! zipCode)
	{	
		var form = $ ('UOPForm');
		var zipCodeField = form['slfZip'];	
		var zipCode = $F (zipCodeField);
	}
	
	if (zipCode != '')
	{	
		if (areastudyID != 0)
		{
			var requestUrl = 'ProgramListing';
			
			new Ajax.Request (requestUrl,
			{
				method:'get',
				parameters: {'areastudyID': areastudyID, 'zipCode': zipCode},
				
				onCreate: function ()
				{
					$ ('slfProgramListing').disabled = true;
					$ ('loader').style.display = 'block';
				},
				onComplete: function ()
				{
					$ ('slfProgramListing').disabled = false;
					$ ('loader').style.display = 'none';
				},
				onFailure: function ()
				{
					alert ('Error reading data...');
				},
				onSuccess: populateProgramList 
			});
		}
	}
	else
	{
		resetAreaList ();
		
		alert ('Please enter the Zip Code first');
	}
}

function clearProgramList ()
{
	var programListingObject = $ ('slfProgramListing');
	
	while (programListingObject.childNodes.length > 0)
	{
		programListingObject.remove (0);
	}	
}

function populateProgramList (transport)
{
	/**
	 * Get Ground programs
	 */
	var groundProgramsNode = transport.responseXML.getElementsByTagName ('groundprograms');
	var groundProgramsRoot = groundProgramsNode[0];
	
	/**
	 * Get Ground programs
	 */
	var onLineProgramsNode = transport.responseXML.getElementsByTagName ('onlineprograms');
	var onLineProgramsRoot = onLineProgramsNode[0];
	
	/**
	 * Get Message Node
	 */
	var messageNode = transport.responseXML.getElementsByTagName ('message');
	
	/**
	 * Populate List or display message
	 */
	if (groundProgramsRoot || onLineProgramsRoot)
	{		
		clearProgramList ();
		
		addOption ('-- Select Program and Learning Format --', 0, null, null);
		
		/**
		 * Ground Programs
		 */
		if (groundProgramsRoot)
		{
			var groundPrograms = groundProgramsRoot.childNodes;
			
			if (groundPrograms.length > 0)
			{
				addOption ('-- Ground Programs --', 0, 'dropdownseparator', null);
				
				for (var i = 0; i < groundPrograms.length; i++)
				{
					var program = groundPrograms[i];
					
					textNode = program.childNodes[0].firstChild;
					valueNode = program.childNodes[1].firstChild;
				
					text = textNode.nodeValue;
					value = valueNode.nodeValue;
					
					var selected = (value == selectedProgram);
					
					addOption (text, value, 'ground', selected);
				}
				
				$ ('noCampusMessage').className = 'hidden';
			}
		}
		else
		{
			$ ('noCampusMessage').className = 'visible';
		}
		
		/**
		 * Online Programs
		 */
		if (onLineProgramsRoot)
		{
			var onLinePrograms = onLineProgramsRoot.childNodes;
			
			if (onLinePrograms.length > 0)
			{
				addOption ('-- Online Programs --', 0, 'dropdownseparator', null);
				
				for (var i = 0; i < onLinePrograms.length; i++)
				{
					var program = onLinePrograms[i];
					
					textNode = program.childNodes[0].firstChild;
					valueNode = program.childNodes[1].firstChild;
				
					text = textNode.nodeValue;
					value = valueNode.nodeValue;
					
					var selected = (value == selectedProgram);
					
					addOption (text, value, 'onLine', selected);
				}
			}
		}
	}	
	else
	{
		resetAreaList ();
		
		var message = messageNode[0].firstChild;
		
		alert (message.nodeValue);
	}
	
}

function resetAreaList ()
{
	var slfAreaOfInterest = $ ('slfAreaOfInterest');
	
	slfAreaOfInterest.options[0].selected = true;
}

function checkOnLine (selectObject)
{
	for (var i = 0; i < selectObject.options.length; i++)
	{
		option = selectObject.options[i];
		
		if (option.selected)
		{
			if (option.className == 'onLine')
			{
				$ ('schoolType').value = 'online';
			}
			else
			{
				$ ('schoolType').value = 'ground';
			}
		}
	}
}

function addOption (text, value, className, selected)
{
	var programListingObject = $ ('slfProgramListing');
	
	var optionObject = document.createElement ('option');
	
	optionObject.text = text;
	optionObject.value = value;
	
	if (className)
	{
		optionObject.className = className;
	}
	
	if (selected)
	{
		optionObject.selected = selected;
	}

	Try.these
	(
		function ()
		{
			programListingObject.options.add (optionObject);
		},
		function ()
		{
			return programListingObject.appendChild (optionObject);
		}
	);
}