var fmg = window.fmg || {};

$.extend(fmg, {
	Carousel: {
		delay: 5000, timeout:null, currentIndex: -1, 
		arrow:null,
		init:function(){
			$('div.carousel-wrapper').each(this.initCarousel);
			fmg.Carousel.showByIndex(0, $('div.carousel-wrapper'));
		},
		initCarousel:function(){
			var t = $(this), nav = t.find('div.carousel-nav'), pix = t.find('div.carousel-area'), arrow =t.find('a.arrow'), btn =t.find('#btn').addClass("ui-pointy");
			t.data('nav',nav);
			t.data('pix',pix);
			pix.data('nav',nav);
			nav.data('pix',pix);
			nav.find('div').bind('mouseenter',fmg.Carousel.Nav.mouseenterHandler).bind('mouseleave', fmg.Carousel.Nav.mouseleaveHandler).addClass("ui-pointy");
			t.data('arrow', arrow);
			btn.bind('mouseenter',fmg.Carousel.Btn.mouseenterHandler).bind('mouseleave', fmg.Carousel.Btn.mouseleaveHandler).bind('click', fmg.Carousel.Btn.clickHandler);
		},
		startAutoAdvance:function(){
			if (fmg.Carousel.timeout !=null){
				clearTimeout(fmg.Carousel.timeout);
				fmg.Carousel.timeout = null;
			}
			fmg.Carousel.timeout = setTimeout(fmg.Carousel.autoAdvance, fmg.Carousel.delay);
		},
		autoAdvance:function(){
			var carousel = $('div.carousel-wrapper'), nav = carousel.data('nav')
			fmg.Carousel.currentIndex++;
			if (fmg.Carousel.currentIndex >= nav.find('div').length){
				fmg.Carousel.currentIndex =0;
			}
			fmg.Carousel.showByIndex(fmg.Carousel.currentIndex, carousel);
		},
		showByIndex:function(i,carousel){
			var pix = carousel.data('pix'), nav = carousel.data('nav'), targetPic = $($('div',pix).get(i)), targetNav= $($('div',nav).get(i)),  arrow = carousel.data('arrow'), newPosition = "arrowPosition-"+(i+1), newLink =targetNav.find('a').attr('href');
			targetNav.addClass('on').siblings().removeClass('on');
			targetPic.removeClass('ui-hide').siblings().addClass('ui-hide');
			arrow.attr('class', 'arrow');
			arrow.addClass(newPosition);
			arrow.attr('href', newLink);
			$('#btn').attr('href', newLink);
			fmg.Carousel.currentIndex =i;
			fmg.Carousel.startAutoAdvance();
		},
		Btn:{
			clickHandler:function(){
				var t = $(this), carousel = t.parents('div.carousel-wrapper'), nav = carousel.data('nav'), target = $(nav.find('div.on a'));
				window.location.href = target.attr('href');
			},
			mouseleaveHandler:function(ev){
				$(this).removeClass('on');
			},
			mouseenterHandler:function(ev){
				$(this).addClass('on');
			}
		},
		Nav:{
			mouseleaveHandler:function(ev){
//				var t = $(this).removeClass('on');
//				fmg.Carousel.stopAutoAdvance();
				
			},
			mouseenterHandler:function(ev){
				var t = $(this), p= t.parent(), index = p.children().index(t), carousel = p.parents('div.carousel-wrapper');
				fmg.Carousel.startAutoAdvance();
				fmg.Carousel.showByIndex(index, carousel, t);
			}
		}
	}
});
$(document).ready(function(){
	fmg.Carousel.init()
});
