$(function () {
	LW.DHTML.indexSlideShow.init();
	LW.DHTML.cycleBanner.init();
});

LW.DHTML = LW.DHTML || {};

LW.DHTML.indexSlideShow = LW.DHTML.indexSlideShow || {
	imgPath: LW.vars.imgPath + '/slide',
	init: function () {
		$('div.index_slide_show').each(function (event) {
			var ss = $(this);				
			ss.data('curIndex', 0);
			ss.data('length', ss.find('.slide').size());
			ss.data('isPaused', false);
			
			if (LW.IE) {
				var width  = ss.width();
				var height = ss.height();
				ss.find('img').each(function () {
					LW.IE.fixOnePng(this, width, height);
				});
			}
			
			LW.DHTML.indexSlideShow.startRotation(ss);
			LW.DHTML.indexSlideShow.addControls(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.last-button', 'click', function (event) {
			event.preventDefault();
			var ss = $(this).closest('div.index_slide_show');
			LW.DHTML.indexSlideShow.pause(ss);
			LW.DHTML.indexSlideShow.prev(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.next-button', 'click', function (event) {
			event.preventDefault();
			var ss = $(this).closest('div.index_slide_show');
			LW.DHTML.indexSlideShow.pause(ss);
			LW.DHTML.indexSlideShow.next(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.main-button', 'click', function (event) {
			event.preventDefault();
			var self = $(this);
			var ss   = self.closest('div.index_slide_show');
			if (ss.data('isPaused')) {
				LW.DHTML.indexSlideShow.play(ss);
			}
			else {
				LW.DHTML.indexSlideShow.pause(ss);
			}
		});
		
	},
	startRotation: function (ss) {
		var slide = ss.find('.slide:first');
		slide.show();
		LW.DHTML.indexSlideShow.play(ss);
	},
	play: function (ss) {
		var main_button = ss.find('.main-button');
		main_button.src(LW.DHTML.indexSlideShow.imgPath + '/controls/slide-pause.png');
		ss.data('isPaused', false);
		
		var id = setInterval(function () {
			LW.DHTML.indexSlideShow.next(ss);
		}, 5000);
		
		ss.data('interval', id);
	},
	pause: function (ss) {
		clearInterval(ss.data('interval'));
		
		var main_button = ss.find('.main-button');
		main_button.src(LW.DHTML.indexSlideShow.imgPath + '/controls/slide-play.png');
		ss.data('isPaused', true);
	},
	next: function (ss) {
		var index  = ss.data('curIndex');
		var length = ss.data('length');
		index = ++index % ss.data('length')
		ss.data('curIndex', index);
		var next = ss.find('.slide').eq(index);
		
		ss.find('.slide:visible').fadeOut(350, function () {
			next.fadeIn(350);
		});
	},
	prev: function (ss) {
		var index  = ss.data('curIndex');
		var length = ss.data('length');
		index = --index % ss.data('length')
		ss.data('curIndex', index);
		var prev = ss.find('.slide').eq(index);
		
		ss.find('.slide:visible').fadeOut(350, function () {
			prev.fadeIn(350);
		});
	},
	addControls: function (ss) {
		var controls = $('<div>')
		controls.addClass('controls');
		
		var last = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-last.png'
		}).addClass('last-button');
		
		var next = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-next.png'
		}).addClass('next-button');
		
		var pause = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-pause.png'
		}).addClass('main-button');
		
		controls.append(last);
		controls.append(pause);
		controls.append(next);
		
		ss.append(controls);
		controls.show();
		
		if (LW.IE) {
			LW.IE.fixOnePng(last.get(0));
			LW.IE.fixOnePng(pause.get(0));
			LW.IE.fixOnePng(next.get(0));
		}
	}
};

LW.DHTML.cycleBanner = LW.DHTML.cycleBanner || {
	arrowLeft:  LW.vars.imgPath + '/cyclebanner/leftarrow.png',
	arrowRight: LW.vars.imgPath + '/cyclebanner/rightarrow.png',
	init: function () {
		$('.cyclebanner').each(function () {
			var banner = $(this);
			var show   = parseInt(banner.attr('show'));

			banner.wrapInner($('<div>').addClass('plane'))
			banner.wrapInner($('<div>').addClass('window'));
			
			banner.append($('<div>').addClass('corner_bg'));
			banner.append($('<div>').addClass('fader_bg'));
			
			var plane  = banner.find('.plane');
			var window = banner.find('.window');
			
			window.css({zIndex: 40});
			
			var width  = plane.innerWidth();
			var height = banner.height();
						
			var first = plane.find('.item').eq(0);
			
			var elwidth  = first.width();
			var elheight = first.height();
			
			
			var totalPadding = width - (show * elwidth);
			var padding      = totalPadding > 0 ? Math.ceil(totalPadding / (show - 1)) - (show * 2) : 0;
			var tmp = elwidth + padding;
			
			banner.data('offset', elwidth + padding);
			banner.data('pos', 0)
			
			var imgs = plane.find('.item');
			
			imgs.each(function (i) {
				$(this).css({
					marginRight: Math.floor(padding) + 'px'
				});
			});
			
			banner.data('size', imgs.size());
			
			banner.prepend(
				$('<img>').attr({
					src: LW.DHTML.cycleBanner.arrowLeft
				}).css({
					position: 'absolute',
					left: '-12px',
					top:  (height / 2 - 6) + 'px',
					cursor: 'pointer',
					zIndex: 50
				}).click(function () {
					var banner = $(this).closest('.cyclebanner');
					var plane  = banner.find('.plane');
					
					if (plane.is(':animated')) {
						return false;
					}
					
					var pos    = banner.data('pos');
					var size   = banner.data('size');
					var show   = parseInt(banner.attr('show'));
					var offset = banner.data('offset');
					var left   = parseInt(plane.css('left').replace('px', ''));
					
					window.css({zIndex: 0});
					
					if (pos == 0) {
						var img = plane.find('.item').eq(size - 1);
						var newImg = img.clone();
						plane.prepend(newImg);
						plane.css({ left: (left - offset) + 'px'});
						plane.animate(
							{
								left: (left) + 'px'	
							},
							'1500',
							'swing',
							function () {
								img.remove();
								window.css({zIndex: 40});
							}
						);
					}
					else {
						banner.data('pos', pos - 1)
						plane.animate(
							{
								left: (left + offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								window.css({zIndex: 40});
							}
						);
					}
					
					return false;
				})
			);
			
			
			banner.append(
				$('<img>').attr({
					src: LW.DHTML.cycleBanner.arrowRight
				}).css({
					position: 'absolute',
					right: '-12px',
					top:  (height / 2 - 6) + 'px',
					cursor: 'pointer',
					zIndex: 50
				}).click(function () {
					var banner = $(this).closest('.cyclebanner');
					var plane  = banner.find('.plane');
					
					if (plane.is(':animated')) {
						return false;
					}
					
					var pos    = banner.data('pos');
					var size   = banner.data('size');
					var show   = parseInt(banner.attr('show'));
					var offset = banner.data('offset');
					var left   = plane.css('left').replace('px', '');
					
					window.css({zIndex: 0});
					
					if (pos == size - show) {
						var img = plane.find('.item').eq(0);
						var newImg = img.clone();
						plane.append(newImg);
						plane.animate(
							{
								left: (left - offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								var left   = parseInt(plane.css('left').replace('px', '')) + offset;
								img.remove();
								plane.css({ left: left  + 'px'});
								window.css({zIndex: 40});
							}
						);
					}
					else {
						banner.data('pos', pos + 1)
						plane.animate(
							{
								left: (left - offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								window.css({zIndex: 40});
							}
						);
					}
					
					return false;
				})
			);
		});
	}
};

