var map;
var markers = [];
var ids = [];
var htmls = [];
var num_markers = 0;
var tmp_html = "";

var CP={
	init:function(){
		$("body").addClass("js");
		CP.Features.init();
		CP.Util.equalize("#meta>div");
	},
	Features:{
		init:function(){
			Tabs.init($(".panels"));
		}
	},
	Util:{
		equalize:function(selector){
			var maxHeight=1;
			$(selector).each(function(){
				if (this.offsetHeight>maxHeight) maxHeight=this.offsetHeight;
			});
			$(selector).css("height",maxHeight+"px");
		}
	}
}

var Tabs={
	container:null,
	panels:Array(),
	init:function(container){
		Tabs.container=$(container);
		$('.panel',Tabs.container).each(
			function(i){
				var newPanel={};
				newPanel.element=this;
				newPanel.id=this.id;
				newPanel.index=i;
				newPanel.title=$('h2',this)[0];
				newPanel.tab=Tabs.createTab(newPanel);
				Tabs.panels[i]=newPanel;
			}
		)
		Tabs.createTabsBar();
		Tabs.showPanel(Tabs.panels[0]);
	},
	createTab:function(panel){
		var tab=document.createElement("li");
		tab.className="inactive";
		var tabLink=document.createElement("a");
		tabLink.innerHTML=panel.title.innerHTML;
		tabLink.href="#"+panel.id;
		$(tabLink).click(function() {Tabs.showPanel(panel); return false;})
		tab.appendChild(tabLink);
		return tab;
	},
	createTabsBar:function(){
		var tabsParent=$(".tab-container")[0];
		var ul=document.createElement("ul");
		$(Tabs.panels).each(function(){ ul.appendChild(this.tab); });
		var tabBar=document.createElement("div");
		tabBar.className="tabs";
		tabBar.appendChild(ul);
		tabsParent.appendChild(tabBar);

		next=document.createElement("a");
		next.className="next";
		next.innerHTML="&raquo;";
		next.href="#";
		$(next).click(function() {Tabs.showNextPanel(); return false;})

		previous=document.createElement("a");
		previous.className="previous";
		previous.innerHTML="&laquo;";
		previous.href="#";
		$(previous).click(function() {Tabs.showPreviousPanel(); return false;})

	},
	showNextPanel:function(){
		if (Tabs.activePanelIndex<(Tabs.panels.length-1)){
			nextIndex=Tabs.activePanelIndex+1;
		}else{
			nextIndex=0;
		}
		Tabs.showPanel(Tabs.panels[nextIndex]);
	},
	showPreviousPanel:function(){
		if (Tabs.activePanelIndex>(0)){
			nextIndex=Tabs.activePanelIndex-1;
		}else{
			nextIndex=Tabs.panels.length-1;
		}
		Tabs.showPanel(Tabs.panels[nextIndex]);
	},
	showPanel:function(panel){
		var l = ($(".tab-container")[0].clientWidth)*panel.index;		
		Tabs.container.animate({left:"-"+l+"px"},"slow","easeOutQuad");
		Tabs.activeTab(panel.tab);
		Tabs.activePanelIndex=panel.index;
	},
	activeTab:function(tab){
		$("#features li.active").each(function(){$(this).removeClass("active");$(this).addClass("inactive")});
		tab.className="active";
	}
}


function loadPiece(href,divName) {     
    $(divName).load(href, {}, function(){ 
        var divPaginationLinks = divName+" #pagination a"; 
        $(divPaginationLinks).click(function() {      
            var thisHref = $(this).attr("href"); 
            loadPiece(thisHref,divName); 
            return false; 
        });
    }); 
}

function email_check(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}
    
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}
    
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}
    
	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }
    
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }
    
	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }    
 	 return true					
}

function checkLogin() {
	$(".user_panel a.FB_Link").each(function() {
		var uid = null;
		var name = null;
		uid = $(this).attr("href").split("?id=")[1];
		name = $(this).html();
		
		if(uid != null) {	
			$.get("/users/check_status/"+uid);
			$.post("/users/add_fb_user/",{fb_id: uid, name: name},function(data) {
			});
		}
	});
}

function checkFields() {
	$(".input_valid").parent().find('input').each(function() {
		if($(this).parent().find('.input_valid').attr("id") == "name") {
			valid = $(this).val().length >= 2;
		} else if($(this).parent().find('.input_valid').attr("id") == "mobile") {
			valid = $(this).val().length >= 10;
		} else if($(this).parent().find('.input_valid').attr("id") == "email") {
	  	valid = email_check($(this).val());
	  } else if($(this).parent().find('.input_valid').attr("id") == "email_confirmation") { 
	  	valid = email_check($(this).val()) && $(this).val() == $("#email").parent().find('input').val();
	  }

		$(this).parent().find('.input_valid').removeClass("valid_field");
		$(this).parent().find('.input_valid').removeClass("error_field");

		if(valid) {
			$(this).parent().find('.input_valid').addClass("valid_field");
		} else {
			$(this).parent().find('.input_valid').addClass("error_field");		
		}
	});
}

$(document).ready(function() {
	if($(".panels .panel").length > 0) {
		CP.init();
	}
	
	$(".input_valid").parent().find('input').blur(function() {
		if($(this).parent().find('.input_valid').attr("id") == "name") {
			valid = $(this).val().length >= 2;
		} else if($(this).parent().find('.input_valid').attr("id") == "mobile") {
			valid = $(this).val().length >= 10;
		} else if($(this).parent().find('.input_valid').attr("id") == "email") {
	  	valid = email_check($(this).val());
	  } else if($(this).parent().find('.input_valid').attr("id") == "email_confirmation") { 
	  	valid = email_check($(this).val()) && $(this).val() == $("#email").parent().find('input').val();
	  }

		$(this).parent().find('.input_valid').removeClass("valid_field");
		$(this).parent().find('.input_valid').removeClass("error_field");

		if(valid) {
			$(this).parent().find('.input_valid').addClass("valid_field");
		} else {
			$(this).parent().find('.input_valid').addClass("error_field");		
		}
	});
	
	$(".rowstyle-alt tr:odd").addClass("alt");
	
	$('.columnize').columnize({columns: 2}); 
	
	setTimeout("checkLogin();",2000);

	$('a[rel*=facebox]').facebox();
	
	$("#datepicker").datepicker();
	
	$(".google_map").each(function() {
		loadMap(this.id);
	});
	
	$("#signup_form").submit(function() {
		$("#signup_spinner").show();
		if($("#UserName").val().length >= 2 && $("#UserLastname").val().length >= 2 && $("#UserBirthyear").val().length == 4 && email_check($("#UserEmail").val()) && $("#UserMobile").val().length >= 10) {
			$.post("/users/add",
			   { name: $("#UserName").val(), lastname: $("#UserLastname").val(), birthyear: $("#UserBirthyear").val(), email: $("#UserEmail").val(), sex: $('input[name=user_sex]:checked').val(), mobile: $("#UserMobile").val() },
			   	function(data){
					if(data == "SUCCESS") {
							$("#signup_message").html("Tack f&ouml;r att du registrerade dig p&aring; G&ouml;teborgs Nattliv!<br /><br />&Auml;r ni fler som vill registrera er?");
							$("#UserName").val(""); $("#UserEmail").val(""); $("#UserMobile").val(""); $("#UserLastname").val(""); $("#UserBirthyear").val("");
							$(".input_valid").removeClass("error_field");
							$(".input_valid").removeClass("valid_field");
					} else {
						if(data == "EXISTS")
							alert('Du kunde inte registreras, en användare med den e-postadressen eller mobilnummret är redan registrerad.');
						else
							alert('Du kunde inte registreras, fyll i alla fält.');
					}
					$("#signup_spinner").hide();
				}
			);	
		} else {
			alert('Du kunde inte registreras, fyll i alla fält korrekt.');
			checkFields();
			$("#signup_spinner").hide();
		}	
		return false;
		
	});
	
	$('.light').lightBox();
	
	$("#cal_datepicker").datepicker(
		{dateFormat: "yy-mm-dd",
		 onSelect: function(dateText) { 
			$("#cal_events").load("/events/get_calendar_events/"+dateText);
		 },
		 beforeShowDay: checkDate
	});
});

function contains(a, obj) {
  var i = a.length;
  while (i--) {
    if (a[i] === obj) {
      return true;
    }
  }
  return false;
}

function checkDate(date) {				
	month = (date.getMonth()+1) < 10 ? "0"+(date.getMonth()+1) : (date.getMonth()+1);
	day = date.getDate() < 10 ? "0"+date.getDate() : date.getDate();
	date_str = date.getFullYear()+"-"+month+"-"+day;
	if(contains(dates_arr,date_str)) {
		return [true,""];
	} else {
		return [false,""];	
	}
}