$(function() {
	if (window.location.hash == '') {
		window.location.hash = '#/home';
	}
	
    // $(".gallery").lightBox();
    $(".gallery").live('mouseover', function(){ $('.photo').lightBox(); });
	
	$('#newsletter').submit(newsletter);
	$('#guestbook_link').click(function() {$('#guestbook_form').slideToggle(); return false;});
	$('#guestbook_form').submit(guestbook);
	
	var loader = $('#loader');
	loader.ajaxStart(function(){ $(this).show(200);});
	loader.ajaxStop(function(){ $(this).hide(200);});
});

$.hashListen('/', function() {
	window.location.hash = '#/home';
});

$.hashListen('/:action/?', function(action) {
	var url = '/'+action;
	$.getJSON(url, null, function(data) {
		fill(data);
	});
});

$.hashListen('/:action/([0-9]+)/?', function(action, id) {
	var url = '/'+action+'/'+id;
	$.getJSON(url, null, function(data) {
		fill(data, top);
	});
});

$.hashListen('/list/:model/?', function(model) {
	var url = '/list/'+model;
	$.getJSON(url, null, function(data) {
		fill(data, top);
	});
});

function fill(data, top) {
	var html = Mustache.to_html(data.template, data.data);
	
	$('#page').fadeOut(300, function() {
		$('#page').html(html);
		$('#page').fadeIn(300);
	});
}

function newsletter() {
	var form = $('#newsletter');
	
	$.ajax({
		url: form.attr('action'),
		data: form.serialize(),
		type: 'GET',
		dataType: 'json',
		success: function(data) {
			console.log(data.confirm);
			if (data.confirm == 0) {
				var mess = 'Addresse email invalide';
			} else if(data.confirm == 2) {
				var mess = 'Addresse email déjà présente';
			} else {
				var mess = 'Inscription réussie';
			}
			alert(mess);
		}
	});
	
	return false;
}

function guestbook() {
	var form = $('#guestbook_form');
	
	$.ajax({
		url: form.attr('action'),
		data: form.serialize()+'&verif=1',
		type: 'POST',
		format: 'text',
		success: function(data) {
			if (window.location.hash == '#/guestbook') {
				$.getJSON('/guestbook', null, function(data){
					fill(data);
				});
			} else {
				window.location.hash = '#/guestbook';
			}
		}
	});
	
	return false;
}

