/**
* YUI Object that powers the market switch select
* 
* @requires yahoo.js
* @author Sarah <sarah.simmonds@hitwise.com>
* @namespace YAHOO.hw.widget
* @class MarketSelect
* @access public
*/

YAHOO.hw.widget.MarketSelect = {

	selectObject : false,
	chosenObject : false,
	
	init : function(id) {
		this.selectObject = YAHOO.util.Dom.get('market-select');
		this.chosenObject = YAHOO.util.Dom.get('market-select-chosen');
		
		// setup the open/close events on the primary chosen li
		YAHOO.util.Event.addListener(this.chosenObject, "click",
			this.fnOverChosenHandler, this, true);
		YAHOO.util.Event.addListener(this.chosenObject, "mouseout",
			this.fnOutChosenHandler, this, true);

		var opts = this.selectObject.getElementsByTagName('li');

		// for each li we need a few more events
		for (var i=0; i<opts.length; i++) {
			if(opts[i] != this.chosenObject) {
				YAHOO.util.Event.addListener(opts[i], "mouseover",
					this.fnOverLIHandler, this, true);
				YAHOO.util.Event.addListener(opts[i], "mouseout",
					this.fnOutLIHandler, this, true);
				YAHOO.util.Event.addListener(opts[i], "click",
					this.fnClickLIHandler, this, true);
			}
		}
	},

	/**
	 * Drop down the list when clicked
	 */
	fnOverChosenHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);
		target.className += ' selHover';
		
		if(this.selectObject.className.indexOf('open') == -1) {
			this.selectObject.className += ' open';
		
		} else {
			// close it if it was already open
			this.selectObject.className = this.selectObject.className.replace("open", '');
		}
	},
	
	/**
	 * Close the list when the cursor leaves the list
	 */
	fnOutChosenHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);
		target.className = target.className.replace("selHover", '');
		
		this.selectObject.className = this.selectObject.className.replace("open", '');
	},
	
	/**
	 * Highlight the li on mouseover
	 */
	fnOverLIHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);
		target.className += ' selHover';
		this.selectObject.className = this.selectObject.className.replace("open", '');
		this.selectObject.className += ' open';
	},
	
	/**
	 * Clear highlights on li mouseout
	 */
	fnOutLIHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);
		target.className = target.className.replace("selHover", '');
		
		this.selectObject.className = this.selectObject.className.replace("open", '');
	},
	
	/**
	 * An item has been selected so perform the redirect action
	 */
	fnClickLIHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);

		// get the <li>’s siblings
		var lis = this.selectObject.getElementsByTagName('li');

		// move the selected class
		for (var i=0; i<lis.length; i++) {
			if (lis[i] != target) {
				lis[i].className = lis[i].className.replace(new RegExp("selected-original\\b"), '');
			} else {
				this.chosenObject.removeChild(this.chosenObject.firstChild);
				this.chosenObject.appendChild(document.createTextNode(lis[i].firstChild.nodeValue));
				this.chosenObject.className = lis[i].className + ' selected';
				lis[i].className += ' selected-original';
				var redirect = lis[i].title;
			}
		}

		window.location.href = redirect;
	}
}

YAHOO.util.Event.onContentReady("market-select", YAHOO.hw.widget.MarketSelect.init, YAHOO.hw.widget.MarketSelect, true);

