GoldmanSachs.BubbleTout = new Class({
	options : {
		autoInterval: 10000,
		disabledInterval: false, 
		opacity: .75
	},
	fx: {},
	slideFx: {},
	interval: null,
	container: null,
	locked: false,
	initialize : function(options){
		this.setOptions(options);
		var self = this;
		
		
		this.links = $$("#gsam_home_navHolder div.gsam_home_item");								
		
		this.links.each(function(itm, index) {
			self.fx[itm.id] = new Fx.Styles(itm.getElement("img"), {duration: 0, transition:Fx.Transitions.Quad.easeInOut});
			itm.getElement("img").setStyles({opacity: self.options.opacity});	
			
			var $msg = itm.getElement("div.gsam_home_msg");
			var height = $msg.getElement("div").getSize().size.y / 2;
			$msg.setStyles({top: -(height)});
			
			var $text = $msg.getElement("div");
			
			$text.setProperty('slideHeight', height);
			self.slideFx[itm.id] = new Fx.Styles($text, {duration: 0, transition:Fx.Transitions.Quad.easeInOut});
			$text.setStyles({top: (height)});
		});

		this.startInterval();

		// EVENTS
		this.links.addEvent('mouseenter', this.overButton.bind(this));
		this.links.addEvent('mouseleave', this.outButton.bind(this));
		
		// this.links.addEvent("click", this.clickButton.bind(this));
		
		this.container = $("gsam_home_tout");
		this.container.addEvent('mouseenter', this.pauseInterval.bind(this));
		this.container.addEvent('mouseleave', this.startInterval.bind(this));
	},
	pauseInterval: function() {
		clearInterval(this.interval);
	},
	startInterval: function() {
		if(!this.options.disabledInterval) {
			var self = this;
			
			this.interval = setInterval(function(){ 
				var currentItm = $("gsam_home_navHolder").getElement("div.on");
				var nextItm = null;
				if(currentItm.getNext("div.gsam_home_item") == null) { 
					nextItm = $("gsam_home_navHolder").getElement("div.gsam_home_item");
				} else {
					nextItm = currentItm.getNext("div.gsam_home_item");	
				}
				nextItm = nextItm.getElement("img");
				
				self.showTout(nextItm, 1);
				
			}, self.options.autoInterval);
		}
	},
	clickButton: function(event) {
		var e = new Event(event);
		e.stop();
		
		if(this.locked == false) {
			this.showTout($(e.target));
		}
	},
	overButton: function(event) { 
		var e = new Event(event);
		e.stop();
		this.pauseInterval();
		this.highlightButton($(e.target));
	},
	outButton: function(event) {
		var e = new Event(event);
		e.stop();
		this.pauseInterval();
		this.fadeButton($(e.target));
	},
	highlightButton: function(btn) {
			var btn = btn;
			this.btn = btn;
			while(!btn.hasClass("gsam_home_item")) {
				btn = btn.getParent("div.gsam_home_item");			
			}
			
			var fadeFX = this.fx[btn.id];
			fadeFX.stop();
			
			fadeFX.start({opacity: 1});		
			
			var $msg = btn.getElement("div.gsam_home_msg div");
			
			var slideFX = this.slideFx[btn.id];
			slideFX.stop();
			slideFX.start({top: -($msg.getProperty("slideHeight"))});	
	},
	fadeButton: function(btn) {
		var btn = btn.getParent("div.gsam_home_item");
			
			while(!btn.hasClass("gsam_home_item")) {
				btn = btn.getParent("div.gsam_home_item");			
			}
			
			var self = this;
			
			var fadeFX = this.fx[btn.id];
			fadeFX.stop();
			
			fadeFX.start({opacity: self.options.opacity});	
			
			var $msg = btn.getElement("div.gsam_home_msg div");
			var slideFX = this.slideFx[btn.id];
			slideFX.stop();
			slideFX.start({top: $msg.getProperty("slideHeight")});	
			
	},
	showTout: function(btn, auto){ 
		var self = this;
		self.locked = true;
		var btn = btn.getParent("div.gsam_home_item");
		while(!btn.hasClass("gsam_home_item")) {
			btn = btn.getParent("div.gsam_home_item");			
		}
			
		if(!btn.hasClass("on")) {
			var active = $("gsam_home_navHolder").getElement("div.on");
			var wasActive = $(active.getProperty("id") + "-tout");
			
			if(active.id != btn.id) {		
				active.removeClass("on");
				wasActive.removeClass("on");
				wasActive.setStyle("z-index", 5);
				var activeFX = this.fx[active.id];
				activeFX.stop();
			}

			btn.addClass("on");
			
			
			$(btn.id + "-tout").setStyles({
				"z-index": 10,
				opacity: 0,
				left: 0
			});
			
			var fx = new Fx.Style($(btn.id + "-tout"), 'opacity', {duration: 500, transition:Fx.Transitions.Quad.easeInOut});
			
			var val = .99;
			if(window.ie) { val = 1 }
			fx.start(val).chain(function(){
				$(btn.id + "-tout").addClass("on");
				
				var isMac = navigator.platform.search("Mac");
				if(isMac != -1) {
					$(btn.id + "-tout").setStyle("opacity", 1);
				}
				
				wasActive.setStyles({"z-index": 2, "left": -10000});
				self.locked = false;
				
			});
		} else {
			self.locked = false;	
		}
	}
});
GoldmanSachs.BubbleTout.implement(new Options);


