if (!window.console) {
	window.console = {
		log: function () {
			alert(arguments[0]);
		}
	};
}

if (!com) var com = {};
if (!com.principle) com.principle = {};
if (!com.principle.slideshow) com.principle.slideshow = {};

com.principle.NAVIGATION = function (){
	
	var settings = {};
	
	var defaults = {
		triggerEvent: 'click',
		loopingInterval: 10,
		duration: 500,
		debug: false
	};
	
	function setView() {
		if (settings.debug) console.log('Setting views');
		view = {};
		view.slide_controls = $(settings.slide_controls);
		view.items = view.slide_controls.find('.item');
		view.viewStack = $('#' + view.slide_controls.attr('dataProvider'));
		view.views = view.viewStack.find('.view');

		for (var i = 0; i < view.items.length; i++){
			view.items[i].index = i;
			$(view.items[i]).text(
				$(view.views[i]).attr('viewTitle')
			);
		}
	};
	
	function setEventListeners() {
		if (settings.debug) console.log('Setting Event Listeners');
		settings.triggerEvent = view.slide_controls.attr('triggerEvent') || settings.triggerEvent;
		settings.loopingInterval = view.viewStack.attr('loopingInterval') || settings.loopingInterval;
		settings.duration = parseInt(view.viewStack.attr('duration') || settings.duration);

		for (var i = 0; i < view.items.length; i++){
			$(view.items[i]).bind(settings.triggerEvent, function(event){
				$(this).blur();
				switchTo(this.index);
				clearTimeout(view.timer);
				return false;
			});
		}


		/* --- REMOVE MOUSEOVER PAUSE
		for (var i = 0; i < view.views.length; i++){
			$(view.views[i]).bind(settings.triggerEvent, function(event){
				$(this).blur();
				clearTimeout(view.timer);
				return false;
			});
			
			$(view.views[i]).bind('mouseout', function(event){
				$(this).blur();
				startLooping();
				return false;
			});
		}
		
		-- */
	};
	
	function switchTo(index) {
		if (view.currentIndex || view.currentIndex === 0) {
			if (view.currentIndex == index) return;
			$(view.views[view.currentIndex]).fadeOut(settings.duration);
			$(view.items[this.view.currentIndex]).removeClass('active');
		};
		
		$(view.items[index]).addClass('active');
		$(view.views[index]).fadeIn(settings.duration);
		view.currentIndex = index;
		startLooping();
	};
	
	function startLooping() {
		clearTimeout(view.timer);
		if (! (settings.loopingInterval && settings.loopingInterval > 0)) return; 
		view.timer = setTimeout(function(){
			switchTo(getNextIndex());
		}, settings.loopingInterval)	
	};
	
	function getNextIndex() {
		var len = view.views.length;
		var nextViewIndex = (view.currentIndex + 1) % len;
		return nextViewIndex
	};
	
	function getPreviousIndex() {
		var len = view.views.length;
		var previousViewIndex = (view.currentIndex - 1 + len) % len;
		return previousViewIndex
	};
	
	return {
		init: function(options){
			settings = $.extend({}, defaults, options);
			setView();
			setEventListeners();
			switchTo(0);
		}
	}
}();

$(function(){
	com.principle.NAVIGATION.init({
		'slide_controls': $('.slide_controls')
	});
});