$(document).ready(function() {
	$(".registLigne").corner("left 10px");
	$('.registerHelp').corner("10px");
	$('#new-user-div').corner('15px');
});


// check si le username est valide et deja utilise
function checkUsername(everyCaratere) {
	var username = $.trim($('#UserUsername').val());
	var verif = /^([a-z0-9_-])+$/;

	// si l'email est valide
	if (username != '' && verif.exec(username) != null) {
		$.ajax({
			type : 'GET',
			url : '/users/checkUsername/' + username,
			success : function(data) {
				if (data == 'pas diponible') {
					$('.registerHelp').html("Désoler, ce pseudo existe déjà. Merci d'en choisir un autre.");
					$('#errors').attr('username', 'yes');
					$('#readys').attr('username', 'no');
				} else {
					$('.HelpPseudoOk').html("Ok, pas de soucis, votre pseudo sera: "+ username);
					$('#errors').attr('username', 'no');
					$('#readys').attr('username', 'yes');
				}
				calcPercentage();
			}
		});
	// Si l'email n'est pas valide
	} else {
		if (username == '') {
			$('#readys').attr('username', 'no');
			calcPercentage();
		} else if (username != '' && verif.exec(username) == null) {
			$('.registerHelp').html("Des caractères speciaux figure dans votre pseudo ! Merci de les retirer");
			$('#errors').attr('username', 'yes');
			$('#readys').attr('username', 'no');
			calcPercentage();
		}
	}
}


// Permet de verifer si l'email entrer est valide
function checkEmail(everyCaratere) {
	var email = $('#UserEmail').val();

	if ($.trim(email) == '') {
		$('#readys').attr('email', 'no');
		calcPercentage();
	} else if ($.trim(email) != '') {
		var verif = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (verif.exec(email) == null) {
			$('.registerHelp').html("Désoler mais votre adresse email n'a pas l'air d'être valide. Merci de réessayer.");
			$('#errors').attr('email', 'yes');
			$('#readys').attr('email', 'no');
			calcPercentage();
		} else {
			$('#errors').attr('email', 'no');
			$('#readys').attr('email', 'yes');
			calcPercentage();
		}
	}
}


// Permet de verifier que le mot de passe contient au moins caracteres
function checkPassword(everyCaratere) {

	if ($('#readys').attr('password') == 'yes' && everyCaratere == 'yes') {
		checkConfirmation();
		return false;
	} else {
		var password = $('#UserPassword').val();

		if (password == '') {
			$('#readys').attr('password', 'no');
			calcPercentage();
		} else if (password.length >= 5) {
			$('#errors').attr('password', 'no');
			$('#readys').attr('password', 'yes');
			calcPercentage();
		} else {
			$('.registerHelp').html("Votre mot de passe doit comporter au minimum 5 caractères.");
			$('#errors').attr('password', 'yes');
			$('#readys').attr('password', 'no');
			calcPercentage();
		}
	}
}


// Permet de verifier que les deux mots de passe entrer sont identiques
function checkConfirmation(everyCaratere) {
	var password = $('#UserPassword').val();
	var confirmation = $('#UserPasswordConfirm').val();

	if (everyCaratere == 'yes' && $.trim(confirmation) != '') {
		if ($.trim(password) == $.trim(confirmation)) {
			$('#errors').attr('confirmation', 'no');
			$('#readys').attr('confirmation', 'yes');
			calcPercentage();
		} else {
			$('#errors').attr('confirmation', 'yes');
			$('#readys').attr('confirmation', 'no');
			calcPercentage();
		}
	} else {
		if ($.trim(password) == '' || $.trim(confirmation) == '') {
			$('#readys').attr('confirmation', 'no');
			calcPercentage();
		} else if ($.trim(password) != '' && $.trim(confirmation) != '' && $.trim(password) != $.trim(confirmation)) {
			$('.registerHelp').html("Vos deux mot de passe ne sont pas identiques.");
			$('#errors').attr('confirmation', 'yes');
			$('#readys').attr('confirmation', 'no');
			calcPercentage();
		}
	}
}


// Change la progresse bar => pourcentage de l'enregistrement
function calcPercentage() {

	var divWidth = 0;
	if ($('#readys').attr('username') == 'yes') {
		divWidth += 25;
	}
	if ($('#readys').attr('email') == 'yes') {
		divWidth += 25;
	}
	if ($('#readys').attr('password') == 'yes') {
		divWidth += 25;
	}
	if ($('#readys').attr('confirmation') == 'yes') {
		divWidth += 25;
	}
	if (divWidth == 100) {
		$('#locationSubmit').html('<input type="submit" value="Créer mon compte">');
	} else {
		$('#locationSubmit').html('<div id="registerSubmitPercentage"><div id="registerPercentageOk"></div><div id="registerPercentageValue">' + divWidth + '%</div></div>');
		$('#registerPercentageOk').css('width', divWidth);
	}
}


// Permet de changer le contenu du tooltip
function completeRegisterHelp(step) {

	switch (step) {
	case 'pseudo':
		showGoodCss('registerUsername');
		$('.registerHelp').html('<span class="HelpPseudoOk"></span><span class="HelpTitle">Choisisser un pseudo</span><br>Celui-ci sera le nom que vous aurez vis a vis des autres utilisateurs.<br/><br/>Il ne peut comporter que des chiffes et des lettres ainsi que des - ou _');
		break;
	case 'email':
		showGoodCss('registerEmail');
		$('.registerHelp').html('<span class="HelpPseudoOk"></span><span class="HelpTitle">Renseigner votre email</span><br>Merci de renseigner votre adresse email qui permettra de valider votre compte.');
		break;
	case 'password':
		showGoodCss('registerPassword');
		$('.registerHelp').html('<span class="HelpPseudoOk"></span><span class="HelpTitle">Entrer un mot de passe</span><br>Le mot de passe permettra de vous connecter sur le site.<br/><br/>Il doit être composé au minimum de 5 caratères.');
		break;
	case 'confirmation':
		showGoodCss('registerConfirmation');
		$('.registerHelp').html('<span class="HelpPseudoOk"></span><span class="HelpTitle">Confirmation</span><br>Merci de réinscrire votre mot de passe afin de le confirmer.');
		break;
	}
}


function showGoodCss(id) {
	$('#registerUsername').css('background-color', '#ffffff');
	$('#registerEmail').css('background-color', '#ffffff');
	$('#registerPassword').css('background-color', '#ffffff');
	$('#registerConfirmation').css('background-color', '#ffffff');
	$('#' + id).css('background-color', '#D7D5E8');
}





// Fonction qui compte le nombre de caractere restant pour la description d'un reve
function limiter(elem, count, disp) {
	var tex = $('#'+elem).val();
	var len = tex.length;
	if (len > count) {
		tex = tex.substring(0, count);
		$('#'+elem).val(tex);
		return false;
	}
	if(disp.substr(0,10)=='DreamCount'){
		$('#'+disp).html(len + '/'+count);
	}else{
		if(len < 25){
			$('#pseudoError').hide();
			if($('#dreamError').find('div').css('display') == 'block'){
			}else{
				$('#dreamError').hide();
			}
		}else{
			$('#dreamError').show();
			$('#pseudoError').show();
		}
		$('#'+disp).html(len);
		//$('#page').css('height', $('#content').height() + 30);
	}
}



function reportAbuse(elem, id){
	$.ajax({
		type : 'GET',
		url : '/reports/dream/'+id,
		cache:false,
		success : function(data) {
		if (data === 'true') {
			showDialog('',"Merci de nous avoir signaler ce rêve.<br/><br/>Nous procéderons à un examen afin de déterminer s'il risque d'offenser certaines personnes.<br/><br/>L'usage abusif de cette fonctionnalité constitue une violation du règlement de la communauté.<br/><br/>Ne l'utilisez pas de manière inadéquate.",'success');
			//$(elem).hide();
		}else{
			showDialog('Erreur',"Désolé mais vous devez être connecté pour pouvoir signaler un rêve.<br/><br/><br/>Vous n'avez pas encore de compte ?<br/><br/><a onmouseover=\"$(this).css('text-decoration','underline');\" onmouseout=\"$(this).css('text-decoration','none');\" href='/users/register'>Cliquez ici</a> pour vous inscrire.",'error');
		}
	}
	});	
}




//Ajout d'un commentaire
function addNewCommentarie(dream_id, elem){

	var description = $.trim($('#'+elem).val());
	if($.trim($('#DreamPseudo').val()) == ''){
		$('#DreamPseudo').val('Anonyme');
	}
	$('#'+elem).css('border','none');
	$('#DreamFF').css('border','none');
	
	if (description == '' && $('#DreamFF').val() != '3') {
		$('#'+elem).css('border','1px red dotted');
		$('#DreamFF').css('border','1px red dotted');
	}else if (description == ''){
		$('#'+elem).css('border','1px red dotted');
	}else if ($('#DreamFF').val() != '3'){
		$('#DreamFF').css('border','1px red dotted');
	}else{
		var postData = {};
		postData.dream_id = dream_id;
		postData.commentarie = description;
		
		if($.trim($('#DreamPseudo').val()) == ''){
			postData.pseudo = 'Anonyme';
		}else{
			postData.pseudo = $.trim($('#DreamPseudo').val());
		}
		$.ajax({
			type : 'POST',
			data : postData,
			url : '/commentaries/add',
			dataType : 'json',
			cache:false,
			success : function(data) {
				if (data === true) {
					$('#'+elem).parent().parent().parent().slideUp();
					//$('#page').css('height', $('#page').height()-170);
				}
			}
		});
	}
}



function newReaction(elem){
	if($('#showCommentaries-'+elem).css('display') == 'block'){
		//$('#page').css('height', $('#page').height()-$('#showCommentaries-'+elem).height());
		$('#showCommentaries-'+elem).hide();
	}
	
	if($('#form-redac-'+elem).css('display') == 'none'){
		//$('#page').css('height', $('#page').height()+170);
		$('#form-redac-'+elem).slideDown();
	}
}



function showComs(counter){
	if($('#form-redac-'+counter).css('display') == 'block'){
		$('#form-redac-'+counter).hide();
		//$('#page').css('height', $('#page').height()-170);
	}
	
	if($('#showCommentaries-'+counter).css('display') == 'block'){
		//$('#page').css('height', $('#page').height()-$('#showCommentaries-'+counter).height());
		$('#showCommentaries-'+counter).hide();
	}else{
		$('#showCommentaries-'+counter).show();
		//$('#page').css('height', $('#page').height()+$('#showCommentaries-'+counter).height());
	}
}



function dislike(dreamId, counter){
	$.ajax({
		type : 'POST',
		url : '/votes/dislike/'+dreamId,
		cache:false,
		success : function(data) {
			if (data == 'new') {
				$('#counter-dislike-'+counter).html( parseInt($('#counter-dislike-'+counter).html())+1);
				//$('#img-dislike-'+counter).css('background-position','0px -19px');
				$('#img-dislike-'+counter).addClass('hasvote');
			}else if(data == 'change'){
				$('#counter-dislike-'+counter).html( parseInt($('#counter-dislike-'+counter).html())+1);
				$('#counter-like-'+counter).html( parseInt($('#counter-like-'+counter).html())-1);
			}
			var votePositif = parseInt($('#counter-like-'+counter).html());
			var voteNegatif = parseInt($('#counter-dislike-'+counter).html());
			var totalVote = (votePositif + voteNegatif);
			var progressDislike = (voteNegatif*42/totalVote);
			if(votePositif > 0){
				var progressLike = (votePositif*42/totalVote);
			}else{
				var progressLike = 1;
			}
			$("#progress-like-"+counter).css('width',progressLike);
			$("#progress-dislike-"+counter).css('width',progressDislike);
		}
	});
}

function like(dreamId, counter){	
	$.ajax({
		type : 'POST',
		url : '/votes/like/'+dreamId,
		cache:false,
		success : function(data) {
			if (data == 'new') {
				$('#counter-like-'+counter).html( parseInt($('#counter-like-'+counter).html())+1);
				//$('#img-like-'+counter).css('background-position','0px -59px');
				$('#img-like-'+counter).addClass('hasvote');
			}else if(data == 'change'){
				$('#counter-like-'+counter).html( parseInt($('#counter-like-'+counter).html())+1);
				$('#counter-dislike-'+counter).html( parseInt($('#counter-dislike-'+counter).html())-1);
			}
			var votePositif = parseInt($('#counter-like-'+counter).html());
			var voteNegatif = parseInt($('#counter-dislike-'+counter).html());
			var totalVote = (votePositif + voteNegatif);
			var progressLike = (votePositif*42/totalVote);
			if(voteNegatif > 0){
				var progressDislike = (voteNegatif*42/totalVote);
			}else{
				var progressDislike = 1;
			}
			$("#progress-like-"+counter).css('width',progressLike);
			$("#progress-dislike-"+counter).css('width',progressDislike);
		}
	});
}



function mouseDislike(action,counter){
	
	if(action == 'out'){
		$('#img-dislike-'+counter).css('background-position','0px 0px');
	}else if(action == 'over'){
		$('#img-dislike-'+counter).css('background-position','0px -19px');
	}
}



function fbs_click(u,t) {
	u=location.href;
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}


function loginPlease(){
	$('#loginBox').show();
}
