var Header = {
	bindEventListeners:function(){
		var searchInput = $(".search-input");
		
		//Set last query value if it there's one,
		var last_query = $('#last_query').val();
		if(last_query !== "" && last_query != "Rechercher un événement") { searchInput.val(last_query); }
		
		searchInput.autocomplete({
			source: ROOT + "assets/php/search_autocomplete.php",
			minLength: 2,
			select: function(event, ui) {
				$(this).val(ui.item.label);
				if($(this).attr("id") == "search-input-header") {	
					$(this).parents("form:first").submit();
				}
			}
		});
		
		$('#rechercher-evenement-input').bind('keypress', function(e) {
			if ((e.keyCode || e.which) == 13) {
				$(this).parents("form:first").submit();
			}
		});
		
		var socialMedias = $("#social-medias");

		socialMedias.delegate("a","mouseover",function(){
			var btn = $(this).attr('id');

			$("#"+btn+"-bubble").css('display','block');
		});
		socialMedias.delegate("a","mouseout",function(){
			var btn = $(this).attr('id');
			$("#"+btn+"-bubble").css('display','none');
		});

		$("#social-medias #email").toggle(
			function(){
				$("#search-bar").css('display','none');
				$("#email-bar").css('display','block');
			},
			function(){
				$("#search-bar").css('display','block');
				$("#email-bar").css('display','none');
				$("#newsletter_header_error").fadeOut();
			}
		);

		var mainMenu = $("#main-menu");
		var mainMenu2 = $("#main-menu-2");
		var subMenu = $("#sub-menu-programmation");
		var subMenu2 = $("#sub-menu-group").hide();
		var subMenuAchatBillet = $("#sub-menu-achat-billet");
		var programmationBtn = $("#main-menu ul li:first");
		var groupBtn = $("#sorties");
		var achatBilletBtn = $("#achat-billet");

		var subMenuMembre = $("#sub-menu-membre").hide();
		var membreBtn = $("#li-become-member");

		mainMenu.delegate("li:not(:has(#sub-menu-programmation))","mouseover",function(){
			$(this).addClass('hover');
		});
		mainMenu.delegate("li:not(:has(#sub-menu-programmation))","mouseout",function(){
			$(this).removeClass('hover');
		});
		programmationBtn.bind("mouseenter",function(){
			subMenu.stop(false,true);
			 subMenu.slideDown(100);
			$(this).addClass('hover');
		});
		programmationBtn.bind("mouseleave",function(){
			subMenu.stop(false,true);
			subMenu.slideUp(100);
			$(this).removeClass('hover');
		});
		
		achatBilletBtn.bind("mouseenter",function(){
			subMenuAchatBillet.stop(false,true);
			subMenuAchatBillet.slideDown(100);
			$(this).addClass('hover');
		});
		achatBilletBtn.bind("mouseleave",function(){
			subMenuAchatBillet.stop(false,true);
			subMenuAchatBillet.slideUp(100);
			$(this).removeClass('hover');
		});
		
		groupBtn.bind("mouseenter",function(){
			subMenu2.stop(false,true);
			subMenu2.slideDown(100);
			$(this).addClass('hover');
		});
		groupBtn.bind("mouseleave",function(){
			subMenu2.stop(false,true);
			subMenu2.slideUp(100);
			$(this).removeClass('hover');
		});
		
		membreBtn.bind("mouseenter",function(){
			subMenuMembre.stop(false,true);
			subMenuMembre.slideDown(100);
			$(this).addClass('hover');
		});
		membreBtn.bind("mouseleave",function(){
			subMenuMembre.stop(false,true);
			subMenuMembre.slideUp(100);
			$(this).removeClass('hover');
		});
		
		mainMenu2.delegate("li:not(:has(#sub-menu-group, #sub-menu-membre))","mouseover",function(){
			$(this).addClass('hover');
		});
		mainMenu2.delegate("li:not(:has(#sub-menu-group, #sub-menu-membre))","mouseout",function(){
			$(this).removeClass('hover');
		});
		
		Classy.Form.UI.makeSmartInput("input[type=text]");
		
		var btnNews			= $('a.btn_news');
		var btnBlogue		= $("a.btn_blogue");
		
		var boxNews			= $('#box-news-content');
		var boxBlogue		= $('#box-blogue-content');
		
		var arrowNewsPrev	= $('#arrow-prev');
		var arrowNewsNext	= $('#arrow-next');
		var arrowBloguePrev	= $('#arrow-blogue-prev');
		var arrowBlogueNext	= $('#arrow-blogue-next');
		
		
		btnNews.addClass('btn_news_active').removeClass('btn_news');
		
		/*btnNews.click(function(){
			//onglets
			$(this).removeClass('btn_news').addClass('btn_news_active');
			btnBlogue.removeClass('btn_blogue_active').addClass('btn_blogue');
			//box
			boxBlogue.hide();
			boxNews.show();
			//arrow
			showHideArrow('news');
			return false;
		});
		
		btnBlogue.click(function(){
			//onglets
			$(this).removeClass('btn_blogue').addClass('btn_blogue_active');
			btnNews.removeClass('btn_news_active').addClass('btn_news');
			//box
			boxBlogue.show();
			boxNews.hide();
			//arrow
			showHideArrow('blogue');
			return false;
		});*/
		
		function showHideArrow(section){
			if(section=='news'){
				arrowNewsPrev.show();
				arrowNewsNext.show();
				arrowBloguePrev.hide();
				arrowBlogueNext.hide();
			}else if(section=='blogue'){
				arrowNewsPrev.hide();
				arrowNewsNext.hide();
				arrowBloguePrev.show();
				arrowBlogueNext.show();
			}
		}
	},
	floatingShareLinks:function() {
		if($("#partager").length !== 0) {
			$(window).scroll(function() {
				$("#partager").stop().animate({
					top: $(window).scrollTop() + 20
				});
			});	
		}
	}
};

function Slider(opts){
	
	var _this = this;
	
	
	this.container = $(opts.container);
	// handles cases where an event doesnt have news but the constructor is called anyway
	if(this.container.length === 0){
		return;
	}
	this.overflowContainer = $(opts.overflowContainer);
	this.childType = this.container.children(":first-child").get(0).nodeName.toLowerCase();
	
	this.hide	= opts.hide ? opts.hide : false;
	if(this.hide){
		this.content = $(opts.content);
	}
	
	
	this.btnPrev = $(opts.btnPrev);
	this.btnNext = $(opts.btnNext);
	this.btnPrevIsHidden = true;
	this.btnNextIsHidden = false;
	
	this.onGoto = opts.onGoto ? opts.onGoto : false;
	
	this.isAnimated = false;
	
	var isAutoScroll = this.isAutoScroll = opts.isAutoScroll || false;
	if(this.isAutoScroll){
		this.btnPrev.css('opacity',1);
	}
	
	this.btnPrev.bind('click',function(){
		if(_this.container.children(this.childType).length > 1){
			_this.gotoPrev();
			if(_this.autoScrollTimer){
				clearInterval(_this.autoScrollTimer);
				_this.autoScrollTimer = null;
			}
		}
		return false;
	});
	this.btnNext.bind('click',function(){
		if(_this.container.children(this.childType).length > 1){
			_this.gotoNext();
			if(_this.autoScrollTimer){
				clearInterval(_this.autoScrollTimer);
				_this.autoScrollTimer = null;
			}
		}
		return false;
	});
	
	this.currentPage = 1;
	this.totalPages = this.container.children().length;
	this.step = opts.step;
	this.left = 0;
	
	this.adjustOverflowContainerHeight(isAutoScroll);

	if(this.container.children(this.childType).length > 1){
		this.autoScrollTimer = false;
		if(isAutoScroll){
			this.autoScrollTimer = setInterval(function(){
				_this.gotoNext();
			},8000);
		}
	}
}
Slider.prototype = {
	gotoPrev:function(){
		
		if(this.isAutoScroll){
			this.gotoPrev = function(){
			
				var _this = this;
				if(!_this.isAnimated) {
					_this.isAnimated = true;
					
					this.container.children(_this.childType+":last").prependTo(_this.container);
					this.container.css('left',this.left-this.step);
					this.adjustOverflowContainerHeight("prev");
					
					//Call onGoto,
					if(this.onGoto) { this.onGoto(this.container.children(_this.childType+":first")); }

					this.container.animate({"left":this.left},300, function() { _this.isAnimated = false; });
				}
			};
		} else {
			this.gotoPrev = function(){
				var _this = this;
				if(!_this.isAnimated) {
					
					_this.isAnimated = true;
					this.currentPage--;
					if(this.currentPage < 1){
						this.currentPage = 1;
						_this.isAnimated = false;
						return;
					}
					if(this.currentPage == 1){
						this.btnPrev.css('opacity',0.5);
						this.btnPrevIsHidden = true;
					}
					if(this.btnNextIsHidden){
						this.btnNext.css('opacity',1);
						this.btnNextIsHidden = false;
					}
					this.adjustOverflowContainerHeight();
					this.left += this.step;
				
					//Call onGoto,
					if(this.onGoto) { this.onGoto(this.container.children(_this.childType+":first")); }
				
					this.container.animate({"left":this.left},300, function() { _this.isAnimated = false; });
				}
			};
		}
		this.gotoPrev();
	},
	gotoNext:function(){
		if(this.isAutoScroll){
			this.gotoNext = function(){
				var _this = this;
				if(!_this.isAnimated) {
					_this.isAnimated = true;
				
					this.adjustOverflowContainerHeight("next");
					this.left -= this.step;
				
					//Call onGoto,
					if(this.onGoto) { this.onGoto(this.container.children(_this.childType).get(1)); }
				
					this.container.animate({"left":this.left},300,function(){
						_this.container.children(_this.childType+":first").appendTo(_this.container);
						_this.container.css('left',0);
						_this.left = 0;
						_this.isAnimated = false;
					});
				}
			};
		} else {
			this.gotoNext = function(){
				var _this = this;
				
				if(!_this.isAnimated) {
					_this.isAnimated = true;
					this.currentPage++;
					if(this.currentPage > this.totalPages){
						this.currentPage = this.totalPages;
						_this.isAnimated = false;
						return;
					}
					if(this.currentPage == this.totalPages){
						this.btnNext.css('opacity',0.5);
						this.btnNextIsHidden = true;
					}
					if(this.btnPrevIsHidden){
						this.btnPrev.css('opacity',1);
						this.btnPrevIsHidden = false;
					}
					this.adjustOverflowContainerHeight();
					this.left -= this.step;
				
					//Call onGoto,
					if(this.onGoto) { this.onGoto(this.container.find(_this.childType).get(1)); }
				
					this.container.animate({"left":this.left},300, function() { _this.isAnimated = false; });
				}
			};
		}
		this.gotoNext();
	},
	adjustOverflowContainerHeight:function(action){
		var _this = this;
		if(action === true){
			this.adjustOverflowContainerHeight = function(action){
				var h;
				switch(action){
					case "next":
						h = this.container.children(this.childType+":nth-child(2)").outerHeight();
					break;
					default:
						h = this.container.children(this.childType+":first").outerHeight();
					break;
				}
				this.overflowContainer.animate({"height":h},300);
			};
		} else {
			this.adjustOverflowContainerHeight = function(){
				var h = this.container.children(this.childType+":nth-child("+this.currentPage+")").outerHeight();
				
				if(_this.hide){
					this.overflowContainer.height(h);
					this.content.hide();
					_this.hide=false;
				}else{
					this.overflowContainer.animate({"height":h},300);
				}
			};
		}
		this.adjustOverflowContainerHeight(action);
	}
};


$(function() {
	
	// header
	Header.bindEventListeners();
	Header.floatingShareLinks();
	
	// plan
	window.PlanManager = {

		lightbox: new Classy.Lightbox(),

		init: function() {

			$(PlanManager.lightbox).bind("contentloaded", function(event, fileLoaded) {

				this.show();

				$("#lightbox-close").bind('click', function(e) {
					e.preventDefault();
					PlanManager.lightbox.hide();
				});
				/*
				if($.browser.msie && $.browser.version == 6) {
					
					DD_belatedPNG.fix("#lightbox-title, div > #legend");
					
					if(fileLoaded == "/sallealbertrousseau/trunk/pages/lightbox-1.html") {

					} else if(fileLoaded == "/sallealbertrousseau/trunk/pages/lightbox-2.html") {
						
					}
				}*/
			});
			$("#main-menu-salle").bind('click', function() {
				PlanManager.lightbox.load(ROOT + "pages/lightbox-1.php");
				return false;
			});
		}
	};
	PlanManager.init();
	
	// newsletter
	$("#repsolution_form_header").submit(function() {
		var reg = /^[a-z0-9._%+\-]+@[a-z0-9\.\-]+\.[a-z]{2,4}$/;
		if(!reg.test($(this).find("input[name='OFC4_Optin_OptinField_EMail']").val())) {
			$("#newsletter_header_error").fadeIn();
			return false;
		} else {
			$("#newsletter_header_error").fadeOut();
			return true;
		}					
	});
	$("#repsolution_form_index").submit(function() {
		var reg = /^[a-z0-9._%+\-]+@[a-z0-9\.\-]+\.[a-z]{2,4}$/;
		if(!reg.test($(this).find("input[name='OFC4_Optin_OptinField_EMail']").val())) {
			$("#newsletter_index_error").fadeIn();
			return false;
		} else {
			$("#newsletter_index_error").fadeOut();
			return true;
		}					
	});
	
	// alert
	var btn = $("#alert #btn_fermer");
	if(btn.length !== 0){
		
		btn.bind('click',function(){
			$("#alert").slideUp();
			$("body").removeClass("alert");
			
			var rel = $('#alert').attr('rel');
			if(rel !== ""){
				var Cookies = {
					create : function(name,value,days) {
						var expires = "";
						if (days) {
							var date = new Date();
							date.setTime(date.getTime()+(days*24*60*60*1000));
							expires = "; expires="+date.toGMTString();
						}
						document.cookie = name+"="+value+expires+"; path=/";
					},
					read : function(name) {
						var nameEQ = name + "=";
						var ca = document.cookie.split(';');
						for(var i=0;i < ca.length;i++) {
							var c = ca[i];
							while (c.charAt(0)==' ') {
								c = c.substring(1,c.length);
							}
							if (c.indexOf(nameEQ) === 0) {
								return c.substring(nameEQ.length,c.length);
							}
						}
						return null;
					}
				};
				var cookieValue = Cookies.read("sar_alert_cancel_id");
				if(cookieValue !== null){
					var ids = cookieValue.split(",");
					var alreadySet = false;
					for(var i=0, l=ids.length; i<l; i++){
						if(ids[i] == rel){
							alreadySet = true;
						}
					}
					if(alreadySet === false){
						rel = cookieValue+","+rel;
					}
				}
				Cookies.create("sar_alert_cancel_id",rel,30);
			}
			return false;
		});
	}
	
	// common code
	$(".rollover").each(function(i, el) {
		if($(el).data("fileName") == undefined) {
			var tmp = el.src.split(".");
			$(el).data("extension", tmp.pop());
			$(el).data("fileName", tmp.join("."));
		}
		$(el).hover(
			function() { 
				$(this).attr("src", $(this).data("fileName")+"_hover."+$(this).data("extension")); 
			},
			function() {
				$(this).attr("src", $(this).data("fileName")+"."+$(this).data("extension"));
			}
		);
	});
});
