// College Search Scout application-specific functions

// slider definitions
// program_level 12-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_program_level", bg="slider_bg_program_level", thumb="slider_thumb_program_level", controlID="program_level"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 20);				// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.05); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_program_level").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_program_level").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = '< 1 Year Award'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = '1 to 2 Year Award (below Associate)'; }
			else if( actualValue == 3 )	{ valnode.innerHTML = 'Associate\'s Degree'; }
			else if( actualValue == 4 )	{ valnode.innerHTML = '2 to 4 Year Award (below Bachelor)'; }
			else if( actualValue == 5 )	{ valnode.innerHTML = 'Bachelor\'s Degree'; }
			else if( actualValue == 6 )	{ valnode.innerHTML = 'Postbaccalaureate Certificate'; }
			else if( actualValue == 7 )	{ valnode.innerHTML = 'Master\'s Degree'; }
			else if( actualValue == 8 )	{ valnode.innerHTML = 'Post-Master\'s Certificate'; }
			else if( actualValue == 9 )	{ valnode.innerHTML = 'Doctoral Degree'; }
			else if( actualValue == 10 ){ valnode.innerHTML = 'First-Professional Degree'; }
			else if( actualValue == 11 ){ valnode.innerHTML = 'First-Professional Certificate'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string [ optional: use slider below ]
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// campus_setting 5-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_campus_setting", bg="slider_bg_campus_setting", thumb="slider_thumb_campus_setting", controlID="campus_setting"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 55);					// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.018); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_campus_setting").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_campus_setting").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for text in display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = 'Urban'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = 'Suburban'; }
			else if( actualValue == 3 )	{ valnode.innerHTML = 'Town'; }
			else if( actualValue == 4 )	{ valnode.innerHTML = 'Rural'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string '[ optional: use slider below ]'
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// Tuition 5-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_tuition", bg="slider_bg_tuition", thumb="slider_thumb_tuition", controlID="tuition"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 55);					// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.018); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_tuition").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_tuition").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = '$5,000 or less'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = '$10,000 or less'; }
			else if( actualValue == 3 )	{ valnode.innerHTML = '$20,000 or less'; }
			else if( actualValue == 4 )	{ valnode.innerHTML = '$30,000 or less'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string '[ optional: use slider below ]'
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// Graduate School 3-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_graduate_school", bg="slider_bg_graduate_school", thumb="slider_thumb_graduate_school", controlID="graduate_school"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 110);					// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.009); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_graduate_school").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_graduate_school").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = 'Master\'s or Higher'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = 'Doctorate'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string [ optional: use slider below ]
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// Control (Public/Private) 3-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_control", bg="slider_bg_control", thumb="slider_thumb_control", controlID="control"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 110);					// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.009); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_control").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_control").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = 'Public'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = 'Private'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string [ optional: use slider below ]
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// Student Body 5-position slider
(function()
{
	var Event =	YAHOO.util.Event, Dom = YAHOO.util.Dom, lang = YAHOO.lang, slider, displayarea="display_student_body", bg="slider_bg_student_body", thumb="slider_thumb_student_body", controlID="student_body"
    Event.onDOMReady(function()
	{
		slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, 0, 220, 55);					// bg,thumb,topConstraint,bottomConstraint,20
		slider.getRealValue = function() { return Math.round(this.getValue() * 0.018); }	// convert pixels to option numbers (20:1, e.g.)
		slider.subscribe("change", function(offsetFromStart)
		{
			var actualValue = slider.getRealValue();	// use scale factor to convert pixel offset into real value
			Dom.get(controlID).value = actualValue;	    // update the form control with the actual value

			// "light up" the LCD when the user has made a selection
			if( actualValue > 0 )	{ document.getElementById("lcd_for_student_body").style.backgroundColor="#D9ECFF"; }
			else					{ document.getElementById("lcd_for_student_body").style.backgroundColor="#aabde5"; }

			// update LCD text display for the current user selection
			var valnode = Dom.get(displayarea);			// handle for display area (LCD)
			if( actualValue == 1 )		{ valnode.innerHTML = '1-100 students'; }
			else if( actualValue == 2 )	{ valnode.innerHTML = '101-1,000 students'; }
			else if( actualValue == 3 )	{ valnode.innerHTML = '1,001-10,000 students'; }
			else if( actualValue == 4 )	{ valnode.innerHTML = '10,000 or more students'; }
			else						{ valnode.innerHTML = 'Any'; }	// default string [ optional: use slider below ]
		});
		Event.on("Clear", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
		Event.on("Clear2", "click", function(e)	{ slider.setValue(0, false); });	// clear slider on Clear button; false means animate
	});
})();

// College Search Scout form processing
function close_college_scout_fieldsets()	{ toggle('college_scout_advanced_info'); }
function clear_college_scout_form()
{
	document.getElementById("baseball").checked = '';
	document.getElementById("basketball").checked = '';
	document.getElementById("campus_daycare").checked = false;
	document.getElementById("campus_setting").value = '';
	document.getElementById("college_search_results").innerHTML = '';
	document.getElementById("control").value = '';
	document.getElementById("distance_learning").checked = false;
	document.getElementById("dorms").checked = false;
	document.getElementById("football").checked = '';
	document.getElementById("graduate_school").value = '';
	document.getElementById("historically_black").checked = '';
	document.getElementById("national_athletic_association").checked = false;
	document.getElementById("open_admission").checked = false;
	document.getElementById("part_time").checked = false;
	document.getElementById("religious_affiliation").value = '';
	document.getElementById("remedial_services").checked = false;
	document.getElementById("rotc").checked = false;
	document.getElementById("state").value = '';
	document.getElementById("student_body").value = '';
	document.getElementById("student_employment").checked = false;
	document.getElementById("study_abroad").checked = false;
	document.getElementById("track").checked = '';
	document.getElementById("tribal").checked = '';
	document.getElementById("tuition").value = '';
	document.getElementById("weekend_study").checked = false;

	clear_college_scout_degrees();
	show_college_search_results();	// show default results view
}
function clear_college_scout_degrees()
{
	document.getElementById("degree_program_general_category").value = '';
	document.getElementById("degree_program_subcategory").value = '';
	document.getElementById("program_level").value = '0';
	document.getElementById("subcategory_list").innerHTML = '<input id="degree_program_subcategory" name="degree_program_subcategory" type="hidden" value="">';
}
function show_college_search_results( paramstring )
{
	// if paramstring, show real results. otherwise show sample output.
	var myDataSource;
//alert('paramstring: ' + paramstring);
	if( paramstring )
	{
		myDataSource = new YAHOO.util.DataSource("/process-college-search?rm=col&" + paramstring);
//alert('myDataSource: ' + myDataSource);
		myDataSource.responseType = YAHOO.util.DataSource.TYPE_TEXT;	// define input as plain text
//alert('document.getElementById("sample_notice").innerHTML: ' + document.getElementById("sample_notice").innerHTML);
		document.getElementById("sample_notice").innerHTML = '';		// don't show sample data; we will be showing real data
	}
	else
	{
		var default_data =
		[
			{school:"Example University",location:"Anywhere, CA",enrollment:12500,open_admission:"no",sat:"V: 570-685<br>M: 540-650",tuition:25000},
			{school:"XYZ Beauty School",location:"Smalltown, FL",enrollment:102,open_admission:"yes",sat:"",tuition:6500}
		];
		var myDataSource = new YAHOO.util.DataSource(default_data); 
		myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
		document.getElementById("sample_notice").innerHTML = '<strong>The data below shows an example of the College Search Scout output format. </strong>';
	}
	myDataSource.responseSchema =
	{ 
		recordDelim: "\n",
		fieldDelim: "\t",
		fields: [	{key:"school"},
					{key:"location"},
					{key:"enrollment", parser:YAHOO.util.DataSource.parseNumber},
					{key:"open_admission"},
					{key:"sat"},
					{key:"tuition", parser:YAHOO.util.DataSource.parseNumber}
				]
	}; 
	var myColumnDefs =
	[
		{key:"school", label:"School (click name for details)", sortable:true},
		{key:"location", label:"Location", sortable:true},
		{key:"enrollment", label:"Enrollment", formatter:YAHOO.widget.DataTable.formatNumber, sortable:true, sortOptions:{defaultOrder:"desc"}},
		{key:"open_admission", label:"Open<br>Admission", sortable:true, sortOptions:{defaultOrder:"desc"}},
		{key:"sat", label:"SAT<br>Mid-Range", sortable:true, sortOptions:{defaultOrder:"desc"}},
		{key:"tuition", label:"Tuition<br>& Fees", formatter:YAHOO.widget.DataTable.formatNumber, sortable:true, sortOptions:{defaultOrder:"desc"}}
		//{key:"tuition", label:"Tuition<br>& Fees", formatter:YAHOO.widget.DataTable.formatCurrency, sortable:true, sortOptions:{defaultOrder:"desc"}}
	];
	var myDataTable = new YAHOO.widget.DataTable("college_search_results", myColumnDefs, myDataSource);		// update college_search_results with HTML results
}
function show_college_scout_subcategory_results( subcategory_list )
{
	var default_subcat_html = '<input id="degree_program_subcategory" name="degree_program_subcategory" type="hidden" value="">';
	var use;
	if( subcategory_list.length > 10 )	{ use = subcategory_list; }		// length is a kludge; find better test
	else								{ use = default_subcat_html; }
	document.getElementById("subcategory_list").innerHTML = use;
}
function process_college_scout_subcategories()
{
	// do the POST and display the result
	document.getElementById("degree_program_subcategory").value = '';	// clear prev subcat choice, if any
	var url = "/process-college-search?rm=sub";
	var topcat = document.getElementById("degree_program_general_category").value;
	var paramstring = "Degree Program General Category=" + escape(topcat);
	post_form( url, show_college_scout_subcategory_results, paramstring );			// update degree_program_subcategory with HTML results
}
function process_college_scout_form()
{
	var paramstring;

	var state = document.getElementById("state").value;
	if( state.length > 0 )		{ paramstring = "State=" + escape(state); }

	var relaffil = document.getElementById("religious_affiliation").value;
	if( relaffil.length > 0 )	{ paramstring = paramstring + "&Religious Affiliation=" + escape(relaffil); }

	var subcat = document.getElementById("degree_program_subcategory").value;
	if( subcat.length > 0 )		{ paramstring = paramstring + "&Degree Program Subcategory=" + escape(subcat); }

	var topcat = document.getElementById("degree_program_general_category").value;
	if( topcat.length > 0 )		{ paramstring = paramstring + "&Degree Program General Category=" + escape(topcat); }

	var proglevel = document.getElementById("program_level").value;
	if( proglevel > 0 )			{ paramstring = paramstring + "&Program Level=" + escape(proglevel); }

	var setting = document.getElementById("campus_setting").value;
	if( setting > 0 )	{ paramstring = paramstring + "&Campus Setting=" + escape(setting); }

	var tuition = document.getElementById("tuition").value;
	if( tuition > 0 ){ paramstring = paramstring + "&Tuition=" + escape(tuition); }

	var control = document.getElementById("control").value;
	if( control > 0 ){ paramstring = paramstring + "&Control=" + escape(control); }

	var highest_level = document.getElementById("graduate_school").value;
	if( highest_level > 0 ){ paramstring = paramstring + "&Graduate School=" + escape(highest_level); }

	var student_body = document.getElementById("student_body").value;
	if( student_body > 0 ){ paramstring = paramstring + "&Student Body=" + escape(student_body); }

	// checkbox processing
	if( document.getElementById("baseball").checked == true )				{ paramstring = paramstring + "&Baseball=1"; }
	if( document.getElementById("basketball").checked == true )				{ paramstring = paramstring + "&Basketball=1"; }
	if( document.getElementById("campus_daycare").checked == true )			{ paramstring = paramstring + "&Campus Daycare=1"; }
	if( document.getElementById("distance_learning").checked == true )		{ paramstring = paramstring + "&Distance Learning=1"; }
	if( document.getElementById("dorms").checked == true )					{ paramstring = paramstring + "&Dorms=1"; }
	if( document.getElementById("football").checked == true )				{ paramstring = paramstring + "&Football=1"; }
	if( document.getElementById("historically_black").checked == true )		{ paramstring = paramstring + "&Historically Black=1"; }
	if( document.getElementById("national_athletic_association").checked == true )	{ paramstring = paramstring + "&National Athletic Association=1"; }
	if( document.getElementById("open_admission").checked == true )			{ paramstring = paramstring + "&Open Admission=1"; }
	if( document.getElementById("part_time").checked == true )				{ paramstring = paramstring + "&Part-Time=1"; }
	if( document.getElementById("remedial_services").checked == true )		{ paramstring = paramstring + "&Remedial Services=1"; }
	if( document.getElementById("rotc").checked == true )					{ paramstring = paramstring + "&ROTC=1"; }
	if( document.getElementById("student_employment").checked == true )		{ paramstring = paramstring + "&Student Employment=1"; }
	if( document.getElementById("study_abroad").checked == true )			{ paramstring = paramstring + "&Study Abroad=1"; }
	if( document.getElementById("track").checked == true )					{ paramstring = paramstring + "&Track=1"; }
	if( document.getElementById("tribal").checked == true )					{ paramstring = paramstring + "&Tribal=1"; }
	if( document.getElementById("weekend_study").checked == true )			{ paramstring = paramstring + "&Weekend Study=1"; }

	if( ! paramstring )	{ alert('You did not make any selections.'); return; }

	// disable controls to prevent double-submissions (works on IE only)
	document.body.style.cursor='wait';
//		document.college_search_form.Submit.disabled = true;
//		document.college_search_form.Clear.disabled = true;

	show_college_search_results(paramstring);

////	javascript:urchinTracker("/process-college-search?rm=col&" + paramstring);
	//s_action('07');		// indextools

	// re-enable the form controls after the POST succeeds (works on IE only)
	document.body.style.cursor = 'default';
//		document.college_search_form.Submit.disabled = false;
//		document.college_search_form.Clear.disabled = false;

	scroll(0,260);
}
