var ie = false;
var select_html = '<option value="">- select -</option>';
var education_level_priorities = new Array;
var program_data;
var last_state_group;

// Establish onload event.
	old_onload = window.onload;
	window.onload = function()
	{
		// IE gets wordwrapped options in select boxes.
		if (document.uniqueID && window.createPopup) 
		{ ie = true; }

		if (typeof(old_onload) == 'function') 
		{ old_onload(); }

		if (typeof(form_name) != 'undefined') 
		{
			switch (form_name) 
			{
				case '2step':
					load2StepForm();
				break;

				case '1step':
				case '1stepWithSpec':
					load1StepForm();
				break;

				case 'tec':
					loadTecForm();
				break;
			}
		}
	}

function load2StepForm()
{
	if (form_step == 1) 
	{
		// Load education levels and education level priority table.
			$.ajax({
				url: '/global/cdm-server.php?path=http://ulm.datamark.com/cdm/clients/WAL0006/educationlevels',
				type: 'get',
				dataType: 'json',
				timeout: 5000,
				success: function(data)
				{
					var options = select_html;
					var edu = data.body;
					var url = "international.waldenu.edu";
					var site = String(window.location.hostname);
					for (var i = 0; i < edu.length; i++) 
					{
						if ( site != url || edu[i].EducationLevelCode != "HS" )
						{
							education_level_priorities[edu[i].EducationLevelCode] = edu[i].EducationLevelPriority;
							options += '<option value="' + edu[i].EducationLevelCode + '">' + edu[i].EducationLevelName + '</option>';
						}
					}
					
					$('#education_level_code').html(options);
					$('#education_level_code').attr('disabled', false);
				}
			});


		// Load program data.
			$.ajax({
				url: '/global/cdm-server.php?path=http://ulm.datamark.com/cdm/campuses/' + campus_code + '/categories/programs',
				type: 'get',
				dataType: 'json',
				timeout: 5000,
				success: function(data)
				{
					program_data = data;
				}
			});
	}
	else 
	{
		// Select Foreign Country by default in the state drop down for international.waldenu.edu
			if (document.location.href.indexOf('international.waldenu.edu') != -1)
			{
				// This will force the states drop down to populate
					$('#country').val('USA');
					$('#country').trigger('change');

					$('#state').val('FC');
					$('#state').trigger('change');

				// Set the country drop down back to 
					document.getElementById('country').selectedIndex = 0;
			}
			else 
			{
				// All microsites except for international.waldenu.edu should select USA by default in the country drop down
					$('#country').val('USA');
					$('#country').trigger('change');
			}

	}
}

function load1StepForm()
{
	// Load program data.
		$.ajax({
			url: service_url + '/cdm/campuses/' + campus_code + '/categories/programs',
			type: 'get',
			dataType: 'json',
			timeout: 5000,
			success: function(data)
			{
				program_data = data;
				loadPrograms();
			}
		});
}

function loadTecForm()
{
	if (form_step == 2) 
	{
		$('#country').val('USA');
		$('#country').trigger('change');
	}
}

function loadPrograms(s)
{
	if (typeof(form_name) != 'undefined' && (form_name == '1step' || form_name == '1stepWithSpec')) 
	{ var education_level_priority = 99; }
	else 
	{
		var education_level = s.options[s.selectedIndex].value;
		var education_level_priority = education_level_priorities[education_level];
	}

	var options;
	var cat = program_data.body;

	for (var i = 0, ii = cat.length; i < ii; i++) 
	{
		if ( cat[i].CategoryName != "School of Public Policy & Administration Certificate Programs" ) 
		{
			var option = '';
			var pro_count = 0;
			var added_programs = [""];

			if (typeof(cat[i].Programs) != 'undefined') 
			{
				var pro = cat[i].Programs;
				
				for (var j = 0, jj = pro.length; j < jj; j++) 
				{
					if (education_level_priority >= pro[j].EducationLevelRange['MinEducationLevelPriority']) 
					{
						pro_count++;
						
						for ( var k=0, kk = added_programs.length; k<kk; k++ )
						{ 
							var found = false;
							
							if ( added_programs[k] == pro[j].ProgramName)
							{  found = true; }
						}
						
						if ( !found )
						{ 
							added_programs[added_programs.length] = pro[j].ProgramName; 
							option += '<option class="' + pro[j].ProgramName + '" value="' + pro[j].ProgramName + '" title="' + pro[j].ProgramName + '">' + pro[j].ProgramName + '</option>';
						}
					}
				}
			}

			// Only show the category if there are programs available.
				if (pro_count > 0) 
				{ option = '<optgroup title="' + cat[i].CategoryName + '" label="' + cat[i].CategoryName + '">' + option; }
				
				option += '</optgroup>';
				options += option;
		}
	}

	// Load options and enable/disable.
		$('#degree_program').html(select_html + options);
		
		if (options) 
		{
			if (typeof(purl_program) != 'undefined' && purl_program) 
			{
				$('#degree_program').val(purl_program);
				$('#degree_program').trigger('change');
			}
			
			$('#degree_program').attr('disabled', false);
		}
		else
		{ $('#degree_program').attr('disabled', true); }
}

function loadSpecializations(s)
{
	var opt = s.options[s.selectedIndex];
	var category = opt.parentNode.title;
	var program = opt.value;
	var options = '';
	var cat = program_data.body;
	
	for (var i = 0, ii = cat.length; i < ii; i++) 
	{
		if (cat[i].CategoryName == category) 
		{
			var pro = cat[i]['Programs'];
			
			for (var j = 0, jj = pro.length; j < jj; j++) 
			{
				if (pro[j].ProgramName == program) 
				{
					options += '<option value="' + pro[j].ProgramCode + '">' + pro[j].Emphasis + '</option>';
				}
			}
		}
	}

	// Load options and show/hide.
		$('#program_code').html(select_html + options);

	if (typeof(form_name) != 'undefined' && form_name == '1step') 
	{ $('#program_code')[0].selectedIndex = 1; }
	else 
	{
		if (options) 
		{ $('#specialization').show(); }
		else 
		{ $('#specialization').hide(); }

		// These rules are regexes to be more accomodating of program name changes.
			(program.match(/bachelor/i) || program.match(/b\.s\./i)) ? $('#hidden-bachelor').show() : $('#hidden-bachelor').hide();
			(program.match(/\(m\.s\.\) in education/i) || program.match(/doctor of education/i)) ? $('#hidden-education').show() : $('#hidden-education').hide();
			(program.match(/engineering/i)) ? $('#hidden-engineering').show() : $('#hidden-engineering').hide();
			(program.match(/nursing/i)) ? $('#hidden-nursing').show() : $('#hidden-nursing').hide();
	}
}

function loadCategory(s)
{
	var opt = s.options[s.selectedIndex];
	var category = opt.parentNode.title;
	var cat = program_data.body;

	for (var i = 0, ii = cat.length; i < ii; i++) 
	{
		if (cat[i].CategoryName == category) 
		{ var catCode = cat[i].CategoryCode; }
	}

	document.getElementById('category_code').value = catCode;
}

function validateHider(e) 
{
	var self = e.objRef;
	var parent = e.objRef.parentNode;
	var gparent = e.objRef.parentNode.parentNode;
	
	if (self.style.display != 'none' && parent.style.display != 'none' && gparent.style.display != 'none') 
	{
		e.type = e.objRef.type;
		
		return DtmkValidator.runValidate(e);
	}
	else 
	{ return true; }
}

function phoneFormat(f) 
{
	if (f.country.value == 'USA' || f.country.value == '' || f.country.value == 'CAN' || f.country.value == 'PRI') 
	{
		document.getElementById('phone_format_intl').style.display = 'none';
		document.getElementById('phone_format_na1').style.display = 'block';
		document.getElementById('phone_format_na2').style.display = 'block';
	} 
	else
	{
		document.getElementById('phone_format_intl').style.display = 'block';
		document.getElementById('phone_format_na1').style.display = 'none';
		document.getElementById('phone_format_na2').style.display = 'none';
	}
}

function zipFormat(f) 
{
	if (f.country.value == 'USA' || f.country.value == '') 
	{
		document.getElementById('zip_format_usa').style.display = 'inline';
		document.getElementById('zip_format_can').style.display = 'none';
	} 
	else if (f.country.value == 'CAN') 
	{
		document.getElementById('zip_format_usa').style.display = 'none';
		document.getElementById('zip_format_can').style.display = 'inline';
	}
	else
	{
		document.getElementById('zip_format_usa').style.display = 'none';
		document.getElementById('zip_format_can').style.display = 'none';
	}
}

function openWindow(name,url,width,height,scrollbar) 
{
	var assetWindow = window.open(url,name,'toolbar=0,location=0,directories=0,menubar=0,status=1,scrollbars=' + scrollbar + ',resizable=0,width=' + width + ',height=' + height);
	
	if(window.focus)
	{ assetWindow.focus(); }	
}

function wordWrap(str, int_width, str_break, cut) 
{
	// http://kevin.vanzonneveld.net

	// PHP Defaults
		var m = ((arguments.length >= 2) ? arguments[1] : 75 );
		var b = ((arguments.length >= 3) ? arguments[2] : "\n" );
		var c = ((arguments.length >= 4) ? arguments[3] : false);
		var i, j, l, s, r;

	if (m < 1) 
	{ return str; }

	for (i = -1, l = (r = str.split("\n")).length; ++i < l; r[i] += s) 
	{
		for(s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : ""))
		{
			j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length || c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
		}
	}

	return r.join("\n");
}

function loadStates(f, latam) 
{
	var c = f.country.value;
	var new_state_group;

	if (latam && c == 'BRA') 
	{
		var states = ['AC|Acre', 'Al|Algoas', 'AP|Amap&aacute;', 'AM|Amazonas', 'BA|Bahia', 'CE|Cear&aacute;', 'DF|Distrito Federal', 'ES|Esp&iacute;rito Santo', 'GO|Goi&aacute;s', 'MA|Maranh&atilde;o', 'MT|Mato Grosso', 'MS|Mato Grosso do Sul', 'MG|Minas Gerais', 'PA|Par&aacute;', 'PB|Para&iacute;ba', 'PR|Paran&aacute;', 'PE|Pernambuco', 'PI|Piau&iacute;', 'RJ|Rio de Janeiro', 'RN|Rio Grande do Norte', 'RS|Rio Grande do Sul', 'RO|Rond&ocirc;nia', 'RR|Roraima', 'SC|Santa Catarina', 'SP|S&atilde;o Paulo', 'SE|Sergipe', 'TO|Tocantins'];
		new_state_group = 'BRA';
	}
	else if (latam && c == 'MEX') 
	{
		var states = ['AGS|Aguascalientes', 'BC|Baja California', 'BCS|Baja California Sur', 'CAM|Campeche', 'CHIS|Chiapas', 'CHIH|Chihuahua', 'COAH|Coahuila', 'COL|Colima', 'DF|Distrito Federal', 'DGO|Durango', 'GTO|Guanajuato', 'GRO|Guerrero', 'HGO|Hidalgo', 'JAL|Jalisco', 'MEX|Mexico', 'MICH|Michoac&aacute;n', 'MOR|Morelos', 'NAY|Nayarit', 'NL|Nuevo Le&oacute;n', 'OAX|Oaxaca', 'PUE|Puebla', 'QRO|Quer&eacute;taro', 'QR|Quintana Roo', 'SLP|San Luis Potos&iacute;', 'SIN|Sinaloa', 'SON|Sonora', 'TAB|Tabasco', 'TAMS|Tamaulipas', 'TLAX|Tlaxcala', 'VER|Veracruz', 'YUC|Yucat&aacute;n', 'ZAC|Zacatecas'];
		new_state_group = 'MEX';
	}
	else
	{
		var states = ['AL|Alabama', 'AK|Alaska', 'AS|American Samoa', 'AZ|Arizona', 'AR|Arkansas', 'CA|California', 'CZ|Canal Zone', 'CO|Colorado', 'CT|Connecticut', 'DE|Delaware', 'DC|District of Columbia', 'FM|Fed. States of Micronesia', 'FL|Florida', 'GA|Georgia', 'GU|Guam', 'HI|Hawaii', 'ID|Idaho', 'IL|Illinois', 'IN|Indiana', 'IA|Iowa', 'KS|Kansas', 'KY|Kentucky', 'LA|Louisiana', 'ME|Maine', 'MH|Marshall Islands', 'MD|Maryland', 'MA|Massachusetts', 'MI|Michigan', 'MN|Minnesota', 'MS|Mississippi', 'MO|Missouri', 'MT|Montana', 'NE|Nebraska', 'NV|Nevada', 'NH|New Hampshire', 'NJ|New Jersey', 'NM|New Mexico', 'NY|New York', 'MP|Northern Mariana Islands', 'NC|North Carolina', 'ND|North Dakota', 'OH|Ohio', 'OK|Oklahoma', 'OR|Oregon', 'PW|Palau', 'PA|Pennsylvania', 'PR|Puerto Rico', 'RI|Rhode Island', 'SC|South Carolina', 'SD|South Dakota', 'TN|Tennessee', 'TX|Texas', 'UT|Utah', 'VT|Vermont', 'VI|Virgin Islands', 'VA|Virginia', 'WA|Washington', 'WV|West Virginia', 'WI|Wisconsin', 'WY|Wyoming', '|-------------------------', 'AA|Armed Forces - Americas (AA)', 'AE|Armed Forces - Europe (AE)', 'AP|Armed Forces - Pacific (AP)', '|-------------------------', 'AB|ALBERTA', 'BC|BRITISH COLUMBIA', 'MB|MANITOBA', 'NB|NEW BRUNSWICK', 'NF|NEWFOUNDLAND', 'NS|NOVA SCOTIA', 'NT|NORTHWEST TERRITORY', 'ON|ONTARIO', 'PE|PRINCE EDWARD ISLAND', 'QC|QUEBEC', 'SK|SASKATCHEWAN', 'YT|YUKON TERRITORY', '|-------------------------', 'FC|Foreign Country'];
		new_state_group = 'USA';
	}

	if (new_state_group != last_state_group) 
	{
		// Populate state dropdown.
			var options = select_html;
			
			for (var i = 0; i < states.length; i++) 
			{
				var st = states[i].split('|');
				options += '<option value="' + st[0] + '" title="' + st[1] + '">' + st[1] + '</option>'
			}

			$('#state').html(options);
	}

	// Automatically choose "Foreign Country" if we don't have a state list.
		if (c!= '' && c != 'USA' && c != 'CAN' && c != 'BRA' && c!= 'MEX')
		{ document.getElementById('state').value = 'FC'; }
		else if (new_state_group != last_state_group)
		{ document.getElementById('state').value = ''; }
		else 
		{
			if (c!= '' && c != 'USA' && c != 'CAN')
			{ document.getElementById('state').value = 'FC'; }
			else if (new_state_group != last_state_group)
			{ document.getElementById('state').value = ''; }
		}

		last_state_group = new_state_group;
}