// JavaScript Document

$(document).ready(function(){
						   
	var mainJsUrl = $("script[src*=js/main.js]").attr("src");
	baseUrl = mainJsUrl.substring(0,mainJsUrl.lastIndexOf('/') - 3);
	lang = $("html").attr("lang");	
	
	try {
		$.nyroModalSettings({
			closeButton: '<a href="#" class="nyroModalClose" id="closeBut" title="fermer">X</a>',
			contentLoading: '<img src="' + baseUrl + '/css/img/loader.png" alt="chargement" />',
			minHeight: 250
		});				
	
		$('body.prehome div.continuer a').nyroModal({
			width:662,
			height:308,
			closeButton: '<a href="#" class="nyroModalClose" id="popoverCloseBut">&nbsp;</a>',
			showContent : showModal,
			hideContent : hideModal
		});
	} catch(err) {}
	
	$('#header li.contacts').click(popover_contacts);
	
	$('body.social_published a').click(function(){
		window.close();
		return false;
	});
	
	$('#page.login li.fb a').live("click",function(){fb_login("login");return false;});
	$('#page.login li.twitter a, #page.register li.twitter a').live("click",twitter_login);
	
	// Switch de langue préhome
	$('#header li.lang > a').click(function(){
		$(this).next("ul").slideToggle(function(){
			$(this).parent("li").toggleClass("actif");
		});
		return false;
	});
	
	// initialisation des fonctions sur la page share
	if($('#page.share').is("div")) init_share();
	
	// remplacement des emails sur la page contacts
	if($('#page.contacts').is("div")) email_replace();
	
	// Init du générique
	if($('body.credits').is("body")) generique();

});

function showModal(elts, settings, callback) {
	elts.contentWrapper.css({ // Reset the CSS at the start position
	  display: "block",
	  marginTop: (-settings.height/2 + settings.marginScrollTop)+'px',
	  marginLeft: (-settings.width/2 + settings.marginScrollLeft)+'px',
	  height: settings.height,
	  width: settings.width,
	  opacity: 0
	});
	
	// remplacement des emails sur la page contacts
	if($('#page.contacts').is("div")) email_replace();
	
	$('#page.login form').submit(function(){
		$.ajax({
		   type: "POST",
		   url: $(this).attr("action"),
		   dataType : "json",
		   data : "login=" + encodeURIComponent($(this).find("input[name=login]").val()) + "&password=" + encodeURIComponent($(this).find("input[name=password]").val()),
		   success: function(data){
				if(data.success){
					if(data.max_mdl_order < 5 && data.usr_diff_tv != 1) document.location.href = baseUrl + "/" + lang + "/#/introduction/";
					else document.location.href = baseUrl + "/" + lang + "/#/riviera-motel/";
					try {$.nyroModalRemove();} catch(err) {}
				} else display_login_error("login", null, data.message);
		   },
		   error : function(XMLHttpRequest, textStatus, errorThrown){
				display_login_error("login", 3);
		   }
		 });
		return false;
	});
	
	elts.contentWrapper.animate({opacity: 1}, {complete: callback, duration: 350});
}

function hideModal(elts, settings, callback) {
	elts.contentWrapper.animate({opacity: 0}, {complete: callback, duration: 350});
}

function popupcentree(page,largeur,hauteur,options) {
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
} 

function twitter_login(social_published){
	var url = baseUrl + "/" + lang + "/users/login-twitter/";
	if(social_published == 0 || social_published == 1) url += "?social_published=" + social_published;
	
	popupcentree(url,980,500);
	return false;
}

function popup_social(){
	var url = baseUrl + "/" + lang + "/annexes/publications-sociales/";	
	popupcentree(url,840,600,"scrollbars=yes");
}

function fb_login(source, social_published){
	try {
	FB.ensureInit(function() {
		try {
		FB.Connect.requireSession(function(){
			FB.Connect.showPermissionDialog("publish_stream", function(perms) {
				re = /publish_stream/gi;
				if (!re.test(perms) && social_published == 1) display_login_error(source, 0);
				else {
					FB.Connect.showPermissionDialog("email", function(perms) {
						re = /email|contact_email/gi;
						if (!re.test(perms)) display_login_error(source, 0);
						else fb_logged(source, social_published);
					});
				}
			});
		});
		}catch(err){
			display_login_error(source, 1);
		}
	});
	} catch(err){
		display_login_error(source, 1);
	}
}

function fb_logged(source, social_published){
	var ajaxUrl = "/" + lang + "/users/login-facebook/";
	if(social_published == 0 || social_published == 1) ajaxUrl += "?social_published=" + social_published;
	
	$.ajax({
	   type: "POST",
	   url: ajaxUrl,
	   dataType : "json",
	   success: function(data){
			//Appel de la fonction Flash
			if(data.usr_id != null && data.usr_id > 0){
				if(data.max_mdl_order > 5 || data.usr_diff_tv == 1){
					document.location.href = baseUrl + "/" + lang + "/#/riviera-motel/";
					try {$.nyroModalRemove();} catch(err) {}
				}else if(source == "login"){
					var returnUrl = $("input[name=ReturnUrl]").val();
					if(returnUrl != null && returnUrl != "") document.location.href = returnUrl;
					else document.location.href = baseUrl + "/" + lang + "/#/introduction/";
					try {$.nyroModalRemove();} catch(err) {}
				} else document.getElementById("flashsite").onLogin(1,data.usr_id);
			} else display_login_error(source, 2);
	   },
	   error : function(XMLHttpRequest, textStatus, errorThrown){
		   display_login_error(source, 2);
	   }
	 });
}

function display_login_error(source, idMessage, message){
	if(idMessage == null){
		message = message.replace(/<[^>]*>/g,"");
	}else{
	
		if(lang == "fr"){
			var messages = new Array(
				"Pour vous connecter via Facebook, vous devez nous autoriser à accéder à votre email",
				"Le chargement de Facebook Connect a échoué",
				"Erreur durant la connexion via Facebook",
				"Erreur lors de la connexion",
				"Pour que Prison Valley puisse mettre à jour votre statut, vous devez préciser que vous l'acceptez"
			);
		} else if (lang == "de"){
			var messages = new Array(
				"To connect to Prison Valley via Facebook, you need to authorize access to your email",
				"Facebook Connect konnte nicht geladen werden.",
				"Fehler während der Verbindung über Facebook",
				"Fehler bei der Verbindungsherstellung",
				"To let Prison Valley update your status, you must specify that you accept"
			);		
		} else {
			var messages = new Array(
				"To connect to Prison Valley via Facebook, you need to authorize access to your email",
				"Error during loading of Facebook Connect",
				"Error during connection with Facebook",
				"Error during connection",
				"To let Prison Valley update your status, you must specify that you accept"
			);
		}
		
		message = messages[idMessage];
		
	}

	if(source == "login"){
		if($('#page.login p.error').is("p")) $('#page.login p.error').html('<img src="' + baseUrl + '/css/img/users/ico-warning.png" alt="" />' + message);
		else $('#page.login div.social').after('<p class="error"><img src="' + baseUrl + '/css/img/users/ico-warning.png" alt="" />' + message + '</p>');	
	}else document.getElementById("flashsite").onLogin(0,null,message);
}

function access_error(){
	$.nyroModalManual({
		url: baseUrl + "/" + lang + "/users/noaccess", 
		width:662, 
		height:308, 
		closeButton: '<a href="#" class="nyroModalClose" id="popoverCloseBut">&nbsp;</a>',
		showContent : showModal,
		hideContent : hideModal}
	);
}

function share(module){
	$.nyroModalManual({
		url: baseUrl + "/" + lang + "/parcours/share/?mdl_name=" + module,
		closeButton: '<a href="#" class="nyroModalClose" id="shareCloseBut">&nbsp;</a>', 
		width:560, 
		height:460, 
		showContent : showModal,
		endShowContent : endShowModal,
		hideContent : hideModal
	})
}

function endShowModal(elts, settings){
	
	// Todo test IE6
	//DD_belatedPNG.fix('.pngfix');
	
	// initialisation des fonctions sur la popover share
	if($('#shareForm').is("form")) init_share();
	
	// remplacement des emails sur la page contacts
	if($('.page_contacts').is("div")) email_replace();
	
	// Init du générique
	if($('#generique').is("table")) generique();
	
}


function init_share (){

	// Focus sur le champ emails
	focusValue = $(".clear_focus").text();
    $(".clear_focus").focus(function(){
		if($(this).text() == focusValue){
			$(this).text("");
			return false;
		}
	})
	.blur(function(){
	   if($(this).text() == "") $(this).text(focusValue);
	});
	
	// Sélection du service
	$('#page.share #services a').click(function(){
		$li = $(this).parent("li");
		$li.addClass("active").siblings().removeClass("active");
		
		$dest = $('#page.share form fieldset.destinataires');
		$status = $('#page.share form fieldset.status');
		$email_status = $('#page.share form fieldset.email_status');
		$preview = $('#page.share form div.preview');
		
		if($li.hasClass("email")){
			$(this).parents("ul").removeClass().addClass("service3");
			$preview.hide();
			$status.hide();
			$email_status.show();
			$dest.show();
		}else if($li.hasClass("twitter")){
			$(this).parents("ul").removeClass().addClass("service2");
			$preview.hide();
			$status.show();
			$email_status.hide();
			$dest.hide();
		}else if($li.hasClass("facebook")){
			$(this).parents("ul").removeClass().addClass("service1");
			$preview.show();
			$status.hide();
			$email_status.hide();
			$dest.hide();
		}else if($li.hasClass("delicious")){
			$(this).parents("ul").removeClass().addClass("service3");
			$preview.hide();
			$status.hide();
			$email_status.hide();
			$dest.hide();
		}
		return false;
	});
	
	// Compteur nombre de caractères
	status_count_max = parseInt($('#page.share form fieldset.status p.count span').text(),10);
	email_status_count_max = parseInt($('#page.share form fieldset.email_status p.count span').text(),10);
	refreshCompteur();
	$('#page.share form textarea[name=status]').keyup(refreshCompteur);
	
	if($('#page.share form').hasClass("prisonvalley")){
		refreshEmailCompteur();
		$('#page.share form textarea[name=email_status]').keyup(refreshEmailCompteur);
	}
	
	// Validation du formulaire
	$('#page.share form').submit(function(){
		$service = $('#page.share #services li.active').attr("class");
		$serviceExists = $('#page.share #services li.active').is("li");
		
		$('#page.share form div.error').hide();
		
		// Cas du share FB ou Twitter
		if(!$serviceExists || ($serviceExists && $service.search("email") >= 0)){
			
			var datasSend = "mdl_name=" + $(this).find("input[name=mdl_name]").val();
			if($serviceExists && $service.search("email") >= 0) datasSend += "&destinataires=" + $(this).find("input[name=destinataires]").val() + "&email_status=" + encodeURIComponent($(this).find("textarea[name=email_status]").val()) + "&send_email=1";
			else datasSend += "&status=" + encodeURIComponent($(this).find("textarea[name=status]").val());
			$.ajax({
			   type: "POST",
			   url: $(this).attr("action"),
			   dataType : "json",
			   data : datasSend,
			   success: function(data){
					if(data.success == 1) $.nyroModalRemove();
					else {
						$('#page.share form div.error').html('<img alt="" src="' + baseUrl + '/css/img/users/ico-warning.png" /> ' + data.message).show();
					}
			   }
			 });
		}else if($service.search("facebook") >= 0){
			var page = "http://www.facebook.com/sharer.php?u=" + encodeURIComponent($('#page.share form div.preview span').text());
			popupcentree(page,600,400);
		}else if($service.search("twitter") >= 0){
			var status = $('#page.share form textarea[name=status]').val() + $('#page.share form p.status_end').text();
			var page = "/share-twitter.php?status=" + encodeURIComponent(status);
			popupcentree(page,800,600);
		}else if($service.search("delicious") >= 0){
			var page = "http://delicious.com/save?url=" + encodeURIComponent($('#page.share form div.preview span').text()) + "&title=" + encodeURIComponent($('#page.share form div.preview h2').text()) + "&v=5&noui=1&jump=doclose";
			popupcentree(page,800,400);
		}
		return false;
	});	
}

function refreshCompteur (){
	$statusField = $("#page.share form textarea[name=status]");
	var status_content = $statusField.val();			   
	var status_reste = status_count_max - status_content.length;
	
	if(status_reste < 0){
		$statusField.val(status_content.substring(0,status_count_max));
		status_reste = 0;
	}
	$('#page.share fieldset.status p.count span').text(status_reste);
}

function refreshEmailCompteur (){
	$emailStatusField = $("#page.share form textarea[name=email_status]");
	var email_status_content = $emailStatusField.val();			   
	var email_status_reste = email_status_count_max - email_status_content.length;
	
	if(email_status_reste < 0){
		$emailStatusField.val(status_content.substring(0,email_status_count_max));
		email_status_reste = 0;
	}
	$('#page.share fieldset.email_status p.count span').text(email_status_reste);
}

function popover_credits(){
	$.nyroModalManual({
		url: baseUrl + "/" + lang + "/annexes/credits/",
		closeButton: '<a href="#" class="nyroModalClose" id="shareCloseBut">&nbsp;</a>', 
		width:980,
		showBackground : creditsPopoverOpacity,
		showContent : showModal,
		endShowContent : endShowModal,
		hideContent : hideModal
	})
}

function popover_contacts(){
	$.nyroModalManual({
		url: baseUrl + "/" + lang + "/annexes/contacts/",
		closeButton: '<a href="#" class="nyroModalClose pngfix" id="contactsCloseBut">&nbsp;</a>', 
		height:338,
		width:662,
		showContent : showModal,
		endShowContent : endShowModal,
		hideContent : hideModal
	});
	return false;
}


function popover_login(){
	$.nyroModalManual({
		url: baseUrl + "/" + lang + "/users/login/",
		width:662,
		height:308,
		closeButton: '<a href="#" class="nyroModalClose" id="popoverCloseBut">&nbsp;</a>',
		showContent : showModal,
		hideContent : hideModal
	});
}

function generique() {
	$("#generique").animate({marginTop: -3800}, 100000,'linear',function(){
		$("#generique").css({ marginTop: "500px" });
		generique();
	});
}
function creditsPopoverOpacity(elts, settings, callback){
	elts.bg.css({opacity: 0}).animate({opacity: 0.95}, 500, callback);
}

function email_replace() {
	$('a[href^=mailto]').each(function(index) {
		$(this).attr("href", $(this).attr("href").replace("[at]","@"));
		$(this).attr("href", $(this).attr("href").replace("[dot]","."));
		$(this).text($(this).text().replace("[dot]","."));
		$(this).text($(this).text().replace("[at]","@"));
	});
}
