UKTV.GalleryFlyout = new function() {	
	this.NS = 'UKTV.GalleryFlyout';
	var _self = this;
	var YD = YAHOO.util.Dom;
	var YE = YAHOO.util.Event;
	var _hideTimer = false;
	var _hideTimeout = 60;
	var _flyout = false;

	var _resetHideTimer = function() {
		if(_hideTimer) {
			window.clearTimeout(_hideTimer);
			_hideTimer = false;
		}		
	};

	var _hideFlyout = function() {
		YD.removeClass(_flyout, 'gallery-flyout-display');
		YD.removeClass(_flyout, 'orientation-left');
		_flyout.innerHTML = '';
	};	
	
	var _showFlyout = function(li) {
		_flyout.innerHTML = li.innerHTML;
		var x = YD.getX(li);
		var y = YD.getY(li);
		YD.addClass(_flyout, 'gallery-flyout-display');
		var ynew = y - 10;
		var xnew = x - 10;
		
		if(x > 450) {
			YD.addClass(_flyout, 'orientation-left');
			var xnew = x - 140;
		} else {
			YD.removeClass(_flyout, 'orientation-left');			
		}
		
		YD.setX(_flyout, xnew);
		YD.setY(_flyout, ynew);
	};
	
	var _getTarget = function(e) {
		var ev = YE.getEvent(e);
		var node = YE.getTarget(ev);
		
		var link = YD.getAncestorByTagName(node, 'a');
		
		if(!link) {
			return false;
		}
		
		var div = YD.getNextSibling(link);
		
		if(!div) {
			return false;
		}
		
		var li = YD.getAncestorByTagName(div, 'li');
		return li;
	};

	var _handleMouseOver = function(e, obj) {
		var li = _getTarget(e);
		
		if(li) {
			_showFlyout(li);			
		}
	};

	var _handleMouseOut = function(e, obj) {
		_hideTimer = window.setTimeout(_hideFlyout, _hideTimeout);
	};

	this.init = function() {
		var con = YD.get('content');
		var tb_con = YD.getElementsByClassName('thumbnails', 'ul', con);
		
		if(tb_con[0]) {
			_flyout = document.createElement('div');
			YD.addClass(_flyout, 'gallery-flyout');

			tb_con[0].appendChild(_flyout);
			var ul = tb_con[0];
			
			YE.addListener(ul, 'mouseover', _handleMouseOver);
			YE.addListener(_flyout, 'mouseout', _handleMouseOut);
			YE.addListener(_flyout, 'mouseover', _resetHideTimer);
		}
	};

	UKTV.loader.registerObj(this);
};