(function( j ){

	j.fn.cmsHeader = function() {

		return this.each(function () {
			var header = j(this);
			var setting;
			var settings = {};
			var totalSlides;
			var pause = false;
			
			header.data('currentSlide', 0);
			header.data('busy', false);
			
			header.hover(function () { pause = true; }, function () { pause = false; });
			
			header.find('.cms-settings').find('div').each(function () {
				setting = this.className.replace('cms-header-', '');
				settings[setting] = j(this).html();
			});
			
			if(settings.showmenu == 'false')
			{
				header.find('> .cms-header-menu').css('display', 'none');
			}
			
			header.find('> .cms-header-slides > .cms-header-slide').each(function(index, element) {
				j(this)
					.height(header.height())
					.css('z-index', index);
				header.find('> .cms-header-menu > ul > li:eq('+index+')').bind('click', function () { changeSlide(index, true); });
				totalSlides = index+1;
				if(index == 0) { j(this).show(); } else { j(this).hide(); }
			});
			
			header.find('> .cms-header-menu > ul > li').eq(0).addClass('cms-header-menu-active');
			header.find('> .cms-header-menu > ul > li').eq(-1).addClass('cms-header-menu-prev');
			if(header.find('> .cms-header-menu > ul > li').eq(1).length > 0)
			{
				header.find('> .cms-header-menu > ul > li').eq(1).addClass('cms-header-menu-next');
			} else {
				header.find('> .cms-header-menu > ul > li').eq(0).addClass('cms-header-menu-next');
			}
		
			var changeSlide = function (slide, ignorePause)
			{
				if(typeof ignorePause == 'undefined')
				{
					ignorePause = false;
				}
				if(slide >= totalSlides)
				{
					slide = slide - totalSlides;
				}
				else if(slide < 0)
				{
					slide = slide + totalSlides;
				}
				
				if(slide == header.data('currentSlide') || header.data('busy') || (pause && !ignorePause))
				{
					return false;
				}
				
				header.data('busy', true);
				
				header.find('> .cms-header-slides').find('> .cms-header-slide:eq('+slide+')').css('z-index', 1);
				header.find('> .cms-header-slides').find('> .cms-header-slide:not(:eq('+slide+'))').css('z-index', 0);
				
				// up
				switch(settings.transition)
				{
					case 'fade':
					default:
						header.find('> .cms-header-slides').find('> .cms-header-slide:not(:eq('+slide+'))').fadeOut(settings.transitiontime*1000);
						header.find('> .cms-header-slides').find('> .cms-header-slide:eq('+slide+')').fadeIn(settings.transitiontime*1000, function () {
							header.data('busy', false);
						});
						break;
					case 'slide':
						header.find('> .cms-header-slides').find('> .cms-header-slide:eq('+slide+')').slideDown(settings.transitiontime*1000, function () {
							header.find('> .cms-header-slides').find('> .cms-header-slide:not(:eq('+slide+'))').hide();
							header.data('busy', false);
						});
					case 'none':
						header.find('> .cms-header-slides').find('> .cms-header-slide:eq('+slide+')').show();
						header.find('> .cms-header-slides').find('> .cms-header-slide:not(:eq('+slide+'))').hide();
						header.data('busy', false);
						break;
				}
				
				header.find('> .cms-header-menu > ul > li').removeClass('cms-header-menu-active').removeClass('cms-header-menu-prev').removeClass('cms-header-menu-next');
				
				header.find('> .cms-header-menu > ul > li').eq(slide).addClass('cms-header-menu-active');
				header.find('> .cms-header-menu > ul > li').eq(parseInt(slide, 10)-1).addClass('cms-header-menu-prev');
				if(header.find('> .cms-header-menu > ul > li').eq(parseInt(slide, 10)+1).length > 0)
				{
					header.find('> .cms-header-menu > ul > li').eq(parseInt(slide, 10)+1).addClass('cms-header-menu-next');
				} else {
					header.find('> .cms-header-menu > ul > li').eq(0).addClass('cms-header-menu-next');
				}
				
				header.trigger('changeSlide', [slide]);
				header.data('currentSlide', slide);
			};
			setInterval(function () { changeSlide(header.data('currentSlide')+1); }, settings.transitiontime*settings.displaytime*1000);
			
		});

	};
})( jQuery );

j(document).ready(function () {
	if(j.app.name == 'site')
	{
		j('.cms-header-slides').parent().cmsHeader();
	}
});
