if (!window.console) {
	window.console = {
		log: function () {
			alert(arguments[0]);
		}
	};
}


if (!com) var com = {};
if (!com.principle) com.principle = {};
if (!com.principle.ikea) com.principle.ikea = {};
if (!com.principle.ikea.Config) com.principle.ikea.Config = {};

com.principle.ikea.Config.validationMessage = (function() {

	var _validationMessage = {
	
		'en': {
			EMPTY: 'Please complete all fields.',
			INVALID: 'That email format is not recognized. Please try again.'
		},
	
		'fr': {
			EMPTY: 'SVP, remplir tous les champs.',
			INVALID: 'Format de courriel non reconnu par le système. Essayez de nouveau.'
		}
	}
	
	return {
		get: function () {
			return _validationMessage;
		}
	}
})().get();

com.principle.Validation = function (){
	
	function validate() {
		
		var lang = com.principle.ikea.Config.lang;
		
		if (($.trim($('#fNameField').val())) == '') {
			throw {
				element: $('#fNameField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (($.trim($('#lNameField').val())) == '') {
			throw {
				element: $('#lNameField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (($.trim($('#provinceField').val())) == '') {
			throw {
				element: $('#provinceField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (($.trim($('#storeField').val())) == '') {
			throw {
				element: $('#storeField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (($.trim($('#emailField').val())) == '') {
			throw {
				element: $('#emailField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (! /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/.test($('#emailField').val())) {
			throw {
				element: $('#emailField'),
				message: com.principle.ikea.Config.validationMessage[lang].INVALID
			}
		}

		if (($.trim($('#subjectField').val())) == '') {
			throw {
				element: $('#subjectField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
		if (($.trim($('#messageField').val())) == '') {
			throw {
				element: $('#messageField'),
				message: com.principle.ikea.Config.validationMessage[lang].EMPTY
			}
		}
		
	}
	
	function setEventListeners() {
		
		$('#btnSubmit').click(function(e){
			try {
				validate();
				$('#validationMessage').css({'display': 'none'});
				$('#form').submit();
			} catch (err) {
				$('#validationMessage').text(err.message).css({'display': 'block'});
				try { err.element.focus() } catch (e) {}
			}
			return false;
		});			
	}
	return {
		init: function () {
			setEventListeners();
		}
	}
}()


com.principle.NAVIGATION = function (){
	
	var settings = {};
	var view = {};
	
	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;
			});
		}

		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[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;
		if( len == 0) {
			return 0;
		}
		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 = jQuery.extend({}, defaults, options);		
			setView();				
			setEventListeners();			
			switchTo(0);
		}
	}
}();

