/*

Used on many pages to jump when an item is clicked (or selected + Enter) from a dropdown.

Usage:

	dropdown.init(form_id);

Changed 'init' to use own copy of Glow to avoid conflict with older B-site version.
MET 2009-06-03

*/

dropdown = function() {
	var s
		, form
		, $		// set to glow.dom.get when loaded
		, events	// set to glow.events when loaded
		;
	
	function init(id) {

		gloader.load(
			["glow", "1", "glow.dom", "glow.events"],
			{
				async: true,
				onLoad: function(glow) {
					glow.ready(function() { 

						// set global glow shortcuts...
						$ = glow.dom.get;
						events = glow.events;

						// .. then continue as normal
						init_on_ready(id) 

					});
				}
			}
		);
	}

	function init_on_ready(id) {

		form = $("#" + id);	
		s = form.get("select")[0];
		s.changed = false;

		events.addListener(s, "focus", selectFocussed);		
		events.addListener(s, "change", selectChanged);	
		events.addListener(s, "keydown", function (e) { selectKeyed(e)});	
		events.addListener(s, "click", selectClicked);	
		
		return true;
	}
	
	function selectFocussed() {
		s.initValue = s.value;
		
		return true;
	}
	
	function selectChanged(el) {
		if (el && el.value) {
			s = el;
		}
		if (!s.changed) {
			return false;
		}
		
		if(s.value){
			window.location = "/cultureshow/videos/genre/" + s.value;
		} else {
			window.location = "/cultureshow/videos/";
		}
		
		return true;		
	}
	
	function selectKeyed(e) {
		if ((e.key == "ENTER" || e.key == "TAB") && s.value != s.initValue) {
			s.changed = true;
			selectChanged(s);
		}
		else if (e.key == "ESC") {
			s.value = s.initValue;
		}
		else {
			s.changed = false;
		}
		
		return true;
	}
	
	
	function selectClicked() {
		s.changed = true;
		return true;
	}		
	
	return {
		init : init
	};

}();


