$(document).ready(function() {
	var nbImage = 15;
	var root = "/";
	var lastRandom = 0;
	
	//$("#first_name").focus();
	
	$.ajax({
		url: root + "includes/php/scan.php",
		success: function(response){
			nbImage = response;
			
			resize();
		}
	});
	
	
	Array.prototype.exists = function(o, min, max) {
		for(var i = min; i <= max; i++)
		   if(this[i] === o)
		     return true;
		return false;
	}
	
/*-------------------------------------- Resize window --------------------------------------*/	
	$(window).resize(function() {
  		resize();
	});
	
	function resize() {
	
		var width = $(window).width();
		var height = $(window).height();
	
		$("div#wrapper").width(width - 20);
		$("div#wrapper").height(height - 20);
		$("section").height(height - 20);
		$("div#side").height(height - 20);
		$('#mainNav').css('top', '200px');
		
		$("#home").width(width - 340);
		
		updateMosaic(width, height);
		
		if($(window).height() < 785)
		{
			var menuHeight = 260;
			var divHeight = $("div#side").height();
			
			var newTop = Math.floor((divHeight - menuHeight)/2) + 50;

			$('#mainNav').css('top', newTop + 'px');

			
			
			if($("ul#sideMenu li").hasClass("large"))
			{
				$("ul#sideMenu li").removeClass("large");
				$("ul#sideMenu li").addClass("small");
			}
			else
			{
				$("ul#sideMenu li").addClass("small");
			}
		}
		else
		{
			if($("ul#sideMenu li").hasClass("small"))
			{
				$("ul#sideMenu li").removeClass("small");
				$("ul#sideMenu li").addClass("large");
			}
			else
			{
				$("ul#sideMenu li").addClass("large");
			}
		}
	}
	
	function updateMosaic(width, height) {

		var nbEleWidth = ((width-340) - ((width-340)%180))/180 + 1;
		var nbEleHeight = ((height-20) - ((height-20)%180))/180 + 1;
		
		var min = 0;
		var max = nbImage -1;
		
		var nbEle = nbEleWidth*nbEleHeight;
		
		var arrayImages = new Array;	
		
		$("#wrapMosaic").width(nbEleWidth*180);
		$("#wrapMosaic").height(nbEleHeight*180);
		
		var count = $("#wrapMosaic .item").length;
		
		if(nbEle > count)
		{
			for(var i = count; i < nbEle; i++)
			{
				var random = Math.floor(Math.random() * nbImage) + 1;
				
				if((i+1) % nbImage === 0)
				{
					min = i;
					max = i + (nbImage-1);
				}
				
				while(arrayImages.exists(random, min, max))
				{
					random = Math.floor(Math.random() * nbImage) + 1;
				}

				$("#wrapMosaic").append('<div class="item column-1-large"><div class="thumbMosaic"><img src="' + root + 'images/mosaic/' + random + '.jpg" alt="Photo Balnéa" /></div></div>');
				arrayImages.push(random);
			}

		} else if (nbEle < count) {
			var overItems = count - nbEle;
			var index = 1;
			
			while(index <= overItems)
			{
				$("#wrapMosaic .item:last-child").remove();
				index++;
			}
		}
	}

/*-------------------------------------- Drop down --------------------------------------*/		
	$("#dropDownInput").click(function(){
		$("ul#dropDown").toggleClass("showDrop");
	});
	
	$("ul#dropDown a").click(function(){
	
		var txtInput = $(this).html();
		
		$("input#age").attr("value", txtInput);
		
		$("ul#dropDown").removeClass("showDrop");
		
		validateInputs($("input#age").attr("id"));
		
		return false;
	});

/*-------------------------------------- Checkbox --------------------------------------*/		
	$("input:checkbox").change(function () {
		toggleCheckBox($(this));
	});
	
	$(".checkbox").click(function(){
		var checkbox = $(this).attr("class").split(' ')[0];
		var element = eval('$("input:checkbox#' + checkbox + '")');
		
		if(element.is(':checked'))
			element.attr('checked', false);
		else
			element.attr('checked', true);
			
		toggleCheckBox(element);
	});
	
	function toggleCheckBox(checkbox) {
		var idCheck = checkbox.attr("id");
		
		var element = eval('$(".' + idCheck + '")');
		element.toggleClass("selected");
	}
	
/*-------------------------------------- Radio --------------------------------------*/		
	
	$(".radio").click(function(){
		var radio = $(this).attr("class").split(' ')[2];
		var element = eval('$("input:radio#' + radio + '")');
		
		element.attr('checked', true);
		toggleRadio(element);
		
		validateInputs("radio");
	});
	
	function toggleRadio(radio) {
		var idCheck = radio.attr("id");
		var element = eval('$(".' + idCheck + '")');
		var input_name = radio.attr("name");

		$("." + input_name).removeClass("selected");
		element.addClass("selected");
	}
	
/*-------------------------------------- Validate inputs --------------------------------------*/		
	
	var regexName = /^[a-zA-Z-\s]{2,20}$/;
	var regexLength = /^[a-zA-Z0-9\s-+]{1,50}$/;
	var regexNumber = /^[a-zA-Z0-9\s-]{1,35}$/;
	var regexPhone = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
	var regexEmail = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
	var regexPostalCode = /^\s*[a-ceghj-npr-tvxy]\d[a-ceghj-npr-tv-z](\s)?\d[a-ceghj-npr-tv-z]\d\s*$/i;
	var regexDate = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;
	
	$("#contestForm input").blur(function(){
		validateInputs($(this).attr("id"));
	});
	
	
	$("#contestSubmit").click(function(){

		var error = validateInputs("all");		

		if(!error) {
			var input = $("form").serialize();

			$.ajax({
				type 	: "POST",
				url  	: "/includes/php/post.php",
				data 	: input,
				success : function(callback) {
					eval("var results = " + callback);
					
					if(results.response)
					{
						$("#message_box").show();
						$("#message_box").html(results.message);
						$("#message_box").removeClass();
						$("#message_box").addClass("green");
						
						$("#first_name").focus();
						
						$(':input','#contestForm')
							 .not(':button, :submit, :reset, :hidden')
							 .val('')
							 .removeAttr('checked')
							 .removeAttr('selected');
							 
						$('.radio','#contestForm').removeClass("selected");
						$('.checkbox','#contestForm').removeClass("selected");
						window.location.hash = '#message_box';
							 
					} else {
						$("#message_box").show();
						$("#message_box").html(results.message);
						$("#message_box").removeClass();
						$("#message_box").addClass("red");
						
						//$("#first_name").focus();
						window.location.hash = '#message_box';
					}
				}
			});
		}

		return false;
	});
	
	
	function validateInputs(input) {
		
		var error = false;
		
		var eleFirstName = $("#first_name");
		var eleLastName = $("#last_name");
		var eleEmail = $("#email");
		var elePhone = $("#phone");
		var elePostalCode = $("#postal_code");
		var eleDate = $("#date");
		var eleBillNumber = $("#bill_number");
		var eleAge = $("#age");
		
		if(input == "all" || input == "age")
		{
			var check = checkInput(regexLength, eleAge, "Vous devez entrer une tranche d'âge");
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "first_name")
		{
			/*var check = checkInput(regexName, eleFirstName, "Vous devez entrer votre prénom");
			if(check)
				error = true;*/
			if(eleFirstName.val().length < 1) {
				eleFirstName.parent().next().show();
				eleFirstName.parent().next().html("Vous devez entrer votre prénom");
				error = true;
			}
			else
				eleFirstName.parent().next().hide();
		}
		
		if(input == "all" || input == "last_name")
		{
			/*var check = checkInput(regexName, eleLastName, "Vous devez entrer votre nom");
			if(check)
				error = true;*/
			if(eleLastName.val().length < 1) {
				eleLastName.parent().next().show();
				eleLastName.parent().next().html("Vous devez entrer votre nom");
				error = true;
			}
			else
				eleLastName.parent().next().hide();
		}
		
		if(input == "all" || input == "email")
		{	
			var check = checkInput(regexEmail, eleEmail, "Vous devez entrer un courriel valide");
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "phone")
		{	
			var check = checkInput(regexPhone, elePhone, "Vous devez entrer un numéro de téléphone valide");
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "postal_code")
		{	
			var check = checkInput(regexPostalCode, elePostalCode, "Vous devez entrer votre code postal");
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "date")
		{	
			var check = checkInput(regexDate, eleDate, "Vous devez entrer une date valide");
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "bill_number")
		{	
			if($("#balnea").attr("checked"))
			{
				if(!(eleBillNumber.attr("value") > 172200 && eleBillNumber.attr("value") < 190000)) {
					eleBillNumber.parent().next().show();
					eleBillNumber.parent().next().html("Vous devez entrer un numéro valide");
					var check = true;
				}
				else
				{
					eleBillNumber.parent().next().hide();
					var check = false;
				}

			}
			else
				var check = checkInput(regexNumber, eleBillNumber, "Vous devez entrer un numéro valide");
				
			if(check)
				error = true;
		}
		if(input == "all" || input == "radio")
		{
			if($("input:radio[@name='choice']:checked").val())
			{
				$("#chefs").hide();
				var check = false;
				
				if($("input:radio[name='place']:checked").val())
				{
					$("#endroit").hide();
					check = false;		
					
				} else {
					$("#endroit").show();
					$("#endroit").html("Vous devez sélectionner un endroit");
					check = true;
				}
				
			} else {
				$("#chefs").show();
				$("#chefs").html("Vous devez sélectionner un chef");
				var check = true;
			}
			
			if(check)
				error = true;
		}
		
		if(input == "all" || input == "rating")
		{
			if($("input:radio[name='rating']:checked").val()) {
				var check = false;
				$("#errorRating").hide();
			} else {
				var check = true;
				$("#errorRating").show();
				$("#errorRating").html("Vous devez entrer une note pour le plat");
			}
			
			if(check)
				error = true;
		}
		
		if(error)
			return true;
		else
			return false;
		
	}
	
	function checkInput(regex, element, message)
	{
		if(regex.exec(element.attr("value")) == null)
		{
			element.parent().next().show();
			element.parent().next().html(message);
			return true;
		}
		else
			element.parent().next().hide();
	}

/*-------------------------------------- Changing radio buttons --------------------------------------*/

	$("#section_place").hide();
	
	$(".choice").click(function () {
		
		var arrayItem= $(this).attr('class').split(' ');
		
		var element = eval('$("#' + arrayItem[2] + '")');

		changePlace(element);
	});
	
	function changePlace(element) {
		
		if($("#section_place").is(":hidden"))
			$('#section_place').toggle('slow');
			
		var choice = element.attr("value");
		var color;
		var text;
		var name;
		var url;
		var id;
		
		switch(choice)
		{
			case "martin_juneau_daren_bergeron":	color =	"purple";
									text = "RESTAURANT<br />NEWTOWN";
									name = "Newtown";
									url = "martin_juneau_daren_bergeron";
									id = "newtown";
									break;
			
			case "ortiz" :			color =	"darkRed";
									text = "RESTAURANT<br />PINTXO";
									name = "Pintxo";
									url = "alonso_ortiz";
									id = "pintxo";
									break;
			
			case "st_pierre":		color =	"yellow";
									text = "RESTAURANT<br />AUGUSTE";
									name = "Auguste";
									url = "danny_st_pierre";
									id = "auguste";
									break;
			
			case "dufresne" :		color =	"orange";
									text = "RESTAURANT<br />LES 3 PETITS BOUCHONS";
									name = "Les 3 petits bouchons";
									url = "audrey_dufresne";
									id = "3_petits_bouchons";
									break;
			
			case "lavergne" :		color =	"black";
									text = "RESTAURANT<br />ACCORDS";
									name = "Accords";
									url = "marc_andre_lavergne";
									id = "accords";
									break;
			
			case "godbout" :		color =	"blue";
									text = "RESTAURANT<br />CHEZ L'ÉPICIER";
									name = "Chez l'épicier";
									url = "laurent_godbout";
									id = "chez_lepicier";
									break;
			
			case "gonzalez" :		color =	"red";
									text = "RESTAURANT<br />AUBERGE ST-GABRIEL";
									name = "Auberge St-Gabriel";
									url = "eric_gonzalez";
									id = "auberge_st_gabriel";
									break;
			
			case "nguyen" :			color =	"green";
									text = "RESTAURANT<br />MIKADO";
									name = "Mikado";
									url = "kimio_nguyen";
									id = "mikado";
									break;
			
			case "jette" :			color =	"darkGrey";
									text = "RESTAURANT<br />LES 400 COUPS";
									name = "Les 400 coups";
									url = "marc_andre_jette";
									id = "400_coups";
									break;
			
			case "laborde" :		color =	"brown";
									text = "RESTAURANT<br />VALLIER";
									name = "Vallier";
									url = "simon_laborde";
									id = "vallier";
									break;
		}
		
		$("#restaurant .inputRadio span").removeClass("selected");
		
		var arraySpan = $("#restaurant .inputRadio span").attr('class').split(' ');
		
		$("#restaurant .inputRadio span").removeClass(arraySpan[2]);
		$("#restaurant input").attr('checked', false);
		
		$("#restaurant .inputRadio span").addClass(id);
		$("#restaurant input").attr("value", id);
		$("#restaurant input").attr("id", id);
		
		var arrayH4 = $("#restaurant .miniText h4").attr('class').split(' ');
		$("#restaurant .miniText h4").removeClass(arrayH4[2]);
		$("#restaurant .miniText h4").addClass(color + "Font");
		$("#restaurant .miniText h4").html(text);
		
		var arrayDiv = $("#restaurant .miniPhoto").attr('class').split(' ');
		$("#restaurant .miniPhoto").removeClass(arrayDiv[1]);
		$("#restaurant .miniPhoto").addClass(color + "Border");
		
		$("#restaurant .miniPhoto img").attr("src", root + "images/chefs/" + url + "/logo_small.jpg");
		$("#restaurant .miniPhoto img").attr("alt", name);

	}


/*-------------------------------------- Mask inputs --------------------------------------*/	
	$("#phone").mask("(999) 999-9999");
	$("#postal_code").mask("a9a 9a9");
	$("#date").mask("99/99/9999");
	
/*-------------------------------------- Mosaic --------------------------------------*/
/*$('#home').masonry({
	itemSelector : '.item',
	columnWidth : 170
});
*/

});
