$(function() {
	$.fn.serializeForm = function() {
		var formvals = {};

		$.each($(this).serializeArray(), function(i, obj) {
			if(formvals[obj.name] == undefined) {
				formvals[obj.name] = Array();
				formvals[obj.name].push(obj.value);
			} else {
				formvals[obj.name].push(obj.value);
			}
		});

		return formvals; 
	}
	$.fn.exists = function() {
		return this.length > 0;
	}
	
	/* Init
	--------------------------------------------------------------------------------------- */
	var delay = 5000;
	var speed = 600;
	var init = function() {
		slideshow();
		form();
		sharelink();
	};
		
	/* Share link
	--------------------------------------------------------------------------------------- */
	var sharelink = function() {
		$(".sharelink").click(
			function() {
				var id = $(this).attr("href");
				$(this).after('<span id="shareform-' + id.substr(1)  + '" class="shareform btn btn-orange"><span><form id="form-share"><input type="text" name="email-from" class="input-email-from btn-input" default="Votre email"><input type="text" name="email-to" class="input-email-to btn-input" default="Email destinataire"><input type="hidden" name="offre" value="' + id.substr(1)  + '"><input type="submit" class="sharesubmit btn-submit" value=""></form></span></span>');
				$(this).hide();
				sharesubmit();
				return false;
			}
		);
	}
	var sharesubmit = function() {
		$("#form-share input[type='text']").each(function() {
			var fld_current = this;
			var defaultValue = $(this).attr("default");

			if(this.value == "") {
				this.value = defaultValue;
			}

			$(this).focus(function() {
				if (this.value == defaultValue) {
					this.value = "";
				}
			}).blur(function() {
				if (this.value == "") {
					this.value = defaultValue;
				}
			}).parents("form").each(function() {
				$(this).submit(function() {
					if (fld_current.value == defaultValue) {
						fld_current.value = "";
					}
				});
				$(this).find("a.submit").each(function() {
					$(this).click(function() {
						if (fld_current.value == defaultValue) {
							fld_current.value = "";
						}
					});
				});
			});
		});	
		
		var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
		$(".sharesubmit").click(
			function() {
				var emailFrom = $(this).parent().find(".input-email-from").attr("value");
				var emailTo = $(this).parent().find(".input-email-to").attr("value");
				if( emailPattern.test(emailFrom) && emailPattern.test(emailTo) ) {
					var ajax_file = $("#main-title").attr("href") + "/wp-admin/admin-ajax.php";
					var fields = $(this).parent().serializeForm();
									
					$.ajax({
						type: "POST",
						url: ajax_file,
						data: {
							action: "share",
							fields: fields
						},
						success: function(data) {
							var data = eval("(" + data + "})");
							if(!data.response["error"]) {								
								// Google Analytics
								if(typeof _gaq !== "undefined" && _gaq) {
									_gaq.push(['_trackPageview', '/partage-offre/']);
								}
								// End Google Analytics
								
								alert(data.response["success"]);
								$("#shareform-" + data.response["id"]).prev().show();
								$("#shareform-" + data.response["id"]).remove();
							}
							else {
								alert(data.response["error"]);
							}				
						}
					});
				} else {
					alert("Un email est invalide");
				}
				
				return false;
			}
		);
	}
	
	/* Slideshow
	--------------------------------------------------------------------------------------- */
	var slideshow = function() {
		if($("#slideshow").exists()) {
			var timeout;
			var nbItems = $("#slideshow-list li").size();
			var item = 0;
			var initClick = false;
			
			for (var i=0; i < nbItems; i++) {
				$("#slideshow-nav").append("<li></li>");
			};
						
			var slideTo = function() {
				$("#slideshow-nav li.active").removeClass("active");
				$("#slideshow-nav li").eq(item).addClass("active");
				
				if(!initClick) {
					timeout = setTimeout(function() {
						next(-1);
					}, delay);
				}
			}			
			
			var next = function(newitem) {
				var currentClip = $("#slideshow-list li").eq(item);			

				if(newitem != -1) {
					item = newitem;
				} else {
					item++;
				}

				if(item >= nbItems) {
					item = 0;
				}
		
				var nextClip = $("#slideshow-list li").eq(item);
		
				$("#slideshow-title").html(nextClip.find("img").attr("alt"));
				nextClip.css({"z-index" : 0}).show();
				currentClip.css({"z-index" : 1}).fadeOut(speed);		
		
				slideTo();
			}
		
			$("#slideshow-nav li").click(
				function() {
					if(!initClick) {
						clearTimeout(timeout);
						initClick = true;
					}
					var newitem = $("#slideshow-nav li").index($(this));
					if(newitem != item) {
						next(newitem);
					}				
				
					return false;
				}
			);
		
			$("#slideshow-list li").eq(item).css({"z-index" : 0}).show();
			$("#slideshow-title").html($("#slideshow-list li").eq(item).find("img").attr("alt"));
			slideTo();		
		}
	}
	
	/* Form
	--------------------------------------------------------------------------------------- */
	var form = function() {
		if($("form").exists()) {			
			$("form").validate({
				errorLabelContainer: "#message",
				wrapper: "li"
			});
						
			$("#form-reservation #submit").click(
				function() {
					if($("#form-reservation").valid()) {
						var ajax_file = $("#main-title").attr("href") + "/wp-admin/admin-ajax.php";
						var fields = $("#form-reservation").serializeForm();
					
						$("body").prepend('<div id="preloader"></div>');
						
						$.ajax({
							type: "POST",
							url: ajax_file,
							data: {
								action: "send_reservation",
								fields: fields
							},
							success: function(data) {
								var data = eval("(" + data + "})");
								if(!data.response["error"]) {								
									// Google Analytics
									if(typeof _gaq !== "undefined" && _gaq) {
										_gaq.push(['_trackPageview', '/reservation-envoyee/']);
									}
									// End Google Analytics
									
									$("html,body").stop().animate({
										scrollTop: 0
									}, speed, "easeInOutExpo", function() {
										$("#message").html('<li class="success">' + data.response["success"] + '</li>');
										$("#message").show(speed);
										$("#preloader").hide();
										$("#submit").hide(speed);
							        });
								}
								else {
									$("#preloader").hide();
									$("#message").hide();
									$("#message").html("<li>" + data.response["error"] + "</li>");
								}				
							}
						});
					}
				
					return false;
				}
			);
			
			$("#form-contact #submit").click(
				function() {
					if($("#form-contact").valid()) {
						var ajax_file = $("#main-title").attr("href") + "/wp-admin/admin-ajax.php";
						var fields = $("#form-contact").serializeForm();
					
						$("body").prepend('<div id="preloader"></div>');
						
						$.ajax({
							type: "POST",
							url: ajax_file,
							data: {
								action: "send_contact",
								fields: fields
							},
							success: function(data) {
								var data = eval("(" + data + "})");
								if(!data.response["error"]) {								
									// Google Analytics
									if(typeof _gaq !== "undefined" && _gaq) {
										_gaq.push(['_trackPageview', '/contact-envoyee/']);
									}
									// End Google Analytics
									
									$("html,body").stop().animate({
										scrollTop: 0
									}, speed, "easeInOutExpo", function() {
										$("#message").html('<li class="success">' + data.response["success"] + '</li>');
										$("#message").show(speed);
										$("#preloader").hide();
										$("#submit").hide(speed);
							        });
								}
								else {
									$("#preloader").hide();
									$("#message").hide();
									$("#message").html("<li>" + data.response["error"] + "</li>");
								}				
							}
						});
					}
				
					return false;
				}
			);
		}	
	}
	
	init();
});
