(function ($){
	var Highlights = function(){
		var 
			element,
			type,
			elements = [],
			currentElement = 0,
			timer,
			duration = 800,
			setType = function(ftype){
				type = ftype || 'toolbar';
			};
		return {
			init: function(){
				if ($('#highlights-toolbar').exists()) {	// lejátszó eszköztár esetén
					setType('toolbar');
					$('#highlights-box').hover(
						function(){
							$('#highlights-toolbar').fadeIn(200);
						},
						function(){
							$('#highlights-toolbar').fadeOut(200);
						}
					);
					$('#highlights-pause').click(function(event){
						event.preventDefault();
						$(this).HighlightsPause();
					});
					$('#highlights-start').click(function(event){
						event.preventDefault();
						$(this).HighlightsStart();
					});
					$('#highlights-prev').click(function(event){
						event.preventDefault();
						$(this).HighlightsPrev();
					});
					$('#highlights-next').click(function(event){
						event.preventDefault();
						$(this).HighlightsNext();
					});
				} else if ($('#highlights-titles').exists()) {	// oldalcímek esetén
					setType('titles');
					$('#highlights-titles a').click(function(event){
						$(event.target).addClass('active').closest('li').siblings().find('a').removeClass('active');
						event.preventDefault();
						$(this).HighlightsGoTo(event.target.id.split('-')[2]);
					});
				} else if ($('#highlights-pages').exists()) {	// oldalszámok esetén
					setType('pages');
					$('#highlights-pages a').click(function(event){
						$(event.target).addClass('active').siblings().removeClass('active');
						event.preventDefault();
						$(this).HighlightsGoTo(event.target.id.split('-')[2]);
					});
				}

				elements = $('#highlights-box div.highlights-item');
				if (elements.length > 1) {
					$(this).HighlightsStart();
				}
			},
			start: function(){
				if (type == 'toolbar') {
					$('#highlights-start').hide();
					$('#highlights-pause').show();
				} else if (type == 'titles') {
					$('#highlights-titles li:first-child a').addClass('active');
				} else if (type == 'pages') {
					$('#highlights-pages a:first-child').addClass('active');
				}

				timer = setInterval(function(){
					var next = currentElement + 1;
					if (elements[next] == undefined) {
						next = 0;
					}
					$(elements[currentElement]).fadeOut(duration);
					$(elements[next]).fadeIn(duration);
					currentElement = next;

					if (type == 'titles') {
						$('#highlights-titles a.active').removeClass('active');
						$('#highlights-titles li:nth-child(' + (next + 1) + ') a').addClass('active');
					} else if (type == 'pages') {
						$('#highlights-pages a.active').removeClass('active');
						$('#highlights-pages a:nth-child(' + (next + 1) + ')').addClass('active');
					}

				}, 4000);
			},
			pause: function(){
				clearTimeout(timer);
				if (type == 'toolbar') {
					$('#highlights-pause').hide();
					$('#highlights-start').show();
				}
			},
			showPrevious: function(){
				clearTimeout(timer);
				var next = currentElement - 1;
				if (elements[next] == undefined) {
					next = elements.length - 1;
				}
				$(elements[currentElement]).fadeOut(duration);
				$(elements[next]).fadeIn(duration);
				currentElement = next;
				$(this).HighlightsStart();
			},
			showNext: function(){
				clearTimeout(timer);
				var next = currentElement + 1;
				if (elements[next] == undefined) {
					next = 0;
				}
				$(elements[currentElement]).fadeOut(duration);
				$(elements[next]).fadeIn(duration);
				currentElement = next;
				$(this).HighlightsStart();
			},
			goTo: function(id){
				$(this).HighlightsPause();
				$(elements[currentElement]).fadeOut(duration);
				$('#highlights-page-' + id).fadeIn(duration, function(){
					currentElement = $('#highlights-page-' + id).index();
				});
			}
		};
	}();
	$.fn.extend({
		Highlights: Highlights.init,
		HighlightsStart: Highlights.start,
		HighlightsPause: Highlights.pause,
		HighlightsPrev: Highlights.showPrevious,
		HighlightsNext: Highlights.showNext,
		HighlightsGoTo: Highlights.goTo
	});
})(jQuery);

jQuery(document).ready(function($){
	$('#highlights-box').Highlights();
});
