var Awesome = window.Awesome || {};
Awesome.slider = function() {
	var $D = YAHOO.util.Dom;
	var $E = YAHOO.util.Event;
	var $A = YAHOO.util.Anim;
	var $S = YAHOO.util.Scroll;
	var $Ease = YAHOO.util.Easing;
	var $ = $D.get;
	
	return {
		init : function() {
			var items = $('slider').getElementsByTagName('li');
			var list = $('slider').getElementsByTagName('ul')[0];
			$D.setStyle(list, 'width', items.length*87+'px');
			var pitems = $D.getElementsByClassName('pitem', 'div', 'pbox');
			$D.setStyle(pitems, 'opacity', '0');
			$D.setStyle(pitems, 'height', '0');
			$D.setStyle('pbox', 'height', '350px');
			

			$D.addClass('left', 'noclick');
			var fadeOut = new $A('left', {opacity: {from: 1, to: 0.2}}, 0.2);
			fadeOut.animate();
			if(window.location.href.indexOf('#') == -1) {
				$D.addClass(items[0], 'current');
				$D.addClass(pitems[0], 'currentpbox');
				$D.setStyle(pitems[0], "height", "350px");
				$D.setStyle(pitems[0], 'opacity', '1');
			} else {
				var currentitem = window.location.href.split('#')[1];
				for(i = 0; i < items.length; i++) {
					if(items[i].getElementsByTagName('a')[0].href.split('#')[1] == currentitem) {
						$D.addClass(items[i], 'current');
					}
				}
				
				$D.addClass(currentitem, 'currentpbox');
				$D.setStyle(currentitem, "height", "350px");
				$D.setStyle(currentitem, 'opacity', '1');
			}

			$E.on('right', 'click', this.right, $('slider'), true);
			$E.on('left', 'click', this.left, $('slider'), true);
			$E.on(items, 'click', this.highlight);
		},
		
		left : function() {
			var slideLeft = new $S('slider', {scroll: {by: [-422, 0]}}, 1.5, $Ease.easeBothStrong);
			slideLeft.onComplete.subscribe(function() {
				var xScroll = $('slider').scrollX || $('slider').scrollLeft;
				if(xScroll == 0) {
					$D.addClass($('left'), 'noclick');
					var fadeOut = new $A('left', {opacity: {from: 1, to: 0.2}}, 0.2);
					fadeOut.animate();
				}
				$D.removeClass($('right'), 'noclick');
				var fadeIn = new $A('right', {opacity: {to: 1}}, 0.1);
				fadeIn.animate();
			});
			slideLeft.animate();
		},
		
		right : function() {
			var items = $('slider').getElementsByTagName('li');
			var slideRight = new $S('slider', {scroll: {by: [422, 0]}}, 1.5, $Ease.easeBothStrong);
			slideRight.onComplete.subscribe(function() {
				var xScroll = $('slider').scrollX || $('slider').scrollLeft;
				if(xScroll == (items.length*87)-(6*87)+2) {
					$D.addClass($('right'), 'noclick');
					var fadeOut = new $A('right', {opacity: {from: 1, to: 0.2}}, 0.2);
					fadeOut.animate();
				}
				$D.removeClass($('left'), 'noclick');
				var fadeIn = new $A('left', {opacity: {to: 1}}, 0.1);
				fadeIn.animate();
			});
			slideRight.animate();
		},
		
		highlight : function(e) {
			$E.stopEvent(e);
			var items = $('slider').getElementsByTagName('li');
			var id = this.getElementsByTagName('a')[0].href.split('#')[1];
			var old = $D.getElementsByClassName('currentpbox', 'div', 'pbox')[0];

			$D.removeClass(items, 'current');
			$D.addClass(this, 'current');
			
			var fadeOut = new $A(old, {opacity: {to: 0}}, 0.4);
			fadeOut.onComplete.subscribe(function() {
				$D.removeClass(old, 'currentpbox');
				$D.setStyle(old, "height", "0");
				
				var fadeIn = new $A(id, {opacity: {from: 0, to: 1}}, 0.5);
				fadeIn.onStart.subscribe(function() {
					$D.setStyle(id, "height", "350px");
					$D.addClass(id, 'currentpbox');
				});
				fadeIn.onComplete.subscribe(function() {
					if(window.location.href.indexOf('#') != -1) {
						var theurl = window.location.href.split('#')[0];
					} else { theurl = window.location.href; }
					window.location.href = theurl+'#'+id;
				});
				fadeIn.animate();				
			});
			fadeOut.animate();
		}
	}
}();
YAHOO.util.Event.on(window, 'load', Awesome.slider.init, Awesome.slider, true);
