/**
 * @version 1.0
 *
 * @copyright Copyright 2009 WnG Solutions Sàrl, all rights reserved
 * @author Michaël Ambass <michael DOT ambass AT wng DOT ch>
 * @author Yannick Beuchat <yannick DOT beuchat AT wng DOT ch>
 * @author Dorian Villet <dorian DOT villet AT wng DOT ch>
 * @package pnyx
 */

/**
 * Javascript pour tout le site
 */

/**
 * Fonction permettant d'effectuer un temps d'attente
 *
 * @param int time Temps en secondes
 * @param string type ?
 * @return void
 *
 * @see http://docs.jquery.com/Cookbook/wait
 */
$.fn.wait = function(time, type) {
	time = time * 1000;
	time = time || 1;
	type = type || 'fx';
	
	return this.queue(type, function() {
		var self = this;
		
		setTimeout(function() {
			$(self).dequeue();
		}, time);
	});
};

/**
 * Mise à jour du titre du sondage
 *
 * @param string newTitle Nouveau titre
 * @return void
 *
 * @internal Called from Flash AS
 */
function changePollTitle(newTitle) {
	$('#titreSondage').html(newTitle);
	$('#addThisLink').attr('onmouseover', "return addthis_open(this, '', getUrlPollDetail(), '" + newTitle + "');");
}

/**
 * Mise à jour des informations du sondage
 *
 * @param int idPoll ID du sondage
 * @param string newTitle Nouveau titre
 * @param string newNickname Nouveau nom d'utilisateur
 * @param string newAge Nouvelle date de création
 * @param string userLink Lien vers le profil de l'utilisateur
 * @return void
 *
 * @internal Called from Flash AS
 */
function newPollValues(idPoll, newTitle, newNickname, newAge, userLink) {
	
	// On met à jour le titre et les infos du sondage
	$('#titreSondage').html(newTitle);
	
	if (userLink.length > 2) {
		$('#infoSondage').html('Par <a href="' + userLink + '"><strong>' + newNickname + '</strong></a>, il y a ' + newAge);
	} else {
		$('#infoSondage').html('Par ' + newNickname + ', il y a ' + newAge);
	}
	
	// On exécute la requête AJAX
	$.ajax({
		type: 'POST',
		url: 'ajax/searchTags.ajax.php',
		data: 'idPoll=' + idPoll + '&visitorLocation=' + $('#globalLanguage').val() + '_' + $('#globalCountry').val(),
		success: function(msg) {
		
			// On met à jour la liste des tags
			$('div.tags').html(msg);
		}
	});
}
/**
 * IP déjà utilisée sur ce sondage popup
 */
function popIpError() {
	// Ouverture de la popup
	$('#ipError').fadeIn('slow');
}

function switchToPopSignup() {
	// Fermeture de la box d'ip error
	$('#ipError').fadeOut('slow');

	// Ouverture de la box fastsignup
	popSignup(0);
}
/**
 * Inscription rapide à partir du bouton "Voter" du Flash
 *
 * @param int idPoll
 * @return void
 */
function popSignup(idPoll){
	$.ajax({
		type: 'POST',
		url: 'ajax/poll-popups.php',
		data: 'type=test',
		success: function(msg) {
			$('#fastSignup').html(msg);
		}
	});
	
	// Ouverture de la popup
	$('#fastSignup').fadeIn('slow');
}

// Après le chargement de la page
$(document).ready(function() {
	
	// Gestion de l'upload d'avatar
	new Ajax_upload('#uploadAvatar', {
		action: 'ajax/upload-avatar.ajax.php',
		name: 'uploadFile',
		onComplete: function(file, response) {
			
			// On gère les erreurs
			if ($(response + 'ul').attr('class') == 'errorBox') {
				$('#dialog').html(response).dialog();
			} else {
				
				// On met à jour la base de données avec le nouvel avatar
				$.ajax({
					type: 'POST',
					url: 'ajax/upload-avatar-bdd.ajax.php',
					data: 'filename=' + response + '&iduser=' + $('#iduser').val(),
					success: function(msg) {
					
						// On met à jour l'image
						$('#avatarImage, #avatar img').attr('src', response);
					}
				});
			}
		}
	});

	// On cache les messages d'informations(notifications réussies)
	$('.validBox:not(.noHide)').wait(3).hide('normal');
	
	// Afficher / Cacher un div en relation avec un lien
	$('a.show span').live('click', function() {
		$('div.' + $(this).attr('class')).slideToggle('slow');
	});
	
	// Affichage de la zone de réponse à un commentaire
	$('a[class^=\'commentReply_\']').live('click', function() {
		$('.commentZoneReply_' + $(this).attr('class').split('_')[1]).slideToggle('slow');
	});
	
	// Ouverture de la popup de la box d'inscription rapide
	$('#fastSignupOpen').live('click', function() {
	
		// On affiche la box d'inscription
		popSignup(0);
	
		// On annule l'effet du lien
		return false;
	});
	
	// Gestion de l'inscription rapide
	$('#fastSubmit').live('click', function() {
	
		// On gère l'ID du sondage
		var idPoll = ($('#sys_idPoll').val() != '') ? '&idPoll=' + $('#sys_idPoll').val() : null;
			
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/fastSignup.ajax.php',
			data: $('#fastForm').serialize() + '&language=' + $('#globalLanguage').val() + '&country=' + $('#globalCountry').val() + idPoll,
			success: function(msg) {
			
				// Expression régulière recherchant si la condition est valide
				var reg = new RegExp('(validBox)', 'g');
			
				// Gestion des erreurs
				if (!reg.test(msg)) {
					$('#fastError').html(msg);
				} else {
					
					// On cache la box d'inscription
					$('#fastSignup').html(msg).wait(3).fadeOut('slow');
				
					// On redirige
					setTimeout('window.location="' + $('#globalCountry').val() + '_' + $('#globalLanguage').val() + '/home' + '"', 2000);
				}					
			}
		});
	});
	
	// Fermeture de la popup de la box d'inscription rapide
	$('#fastSignupClose, #fastSignupCloseButton').live('click', function() {
		$('#fastSignup').fadeOut('slow');
	});

	// Fermeture de la popup d'erreur IP
	$('#ipErrorClose, #ipErrorCloseButton').live('click', function() {
		$('#ipError').fadeOut('slow');
	});
	
	// Ouverture de la recherche
	$('#searchBtn').live('click', function() {
	
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/search.ajax.php?page=1',
			data: 'search=' + $('#search').val() + '&language=' + $('#globalLanguage').val() + '&country=' + $('#globalCountry').val() + '&idlanguage=' + $('#globalIdLanguage').val() + '&idcountry=' + $('#globalIdCountry').val(),
			success: function(msg) {
			
				// On met à jour le contenu
				$('#searchResult').html(msg);
				
				// On affiche la page
				$('#container').fadeOut('fast', function() {
					$('#searchResult').slideDown('slow');
				});
			}
	    });
	});

	// Fermeture de la recherche
	$('#searchClose').live('click', function() {
		$('#searchResult').fadeOut('slow');
		$('#container').slideDown('slow');
		$('#searchResult').html('');
	});
		
	// Gestion de la pagination
	$('#pagination li a').live('click', function() {
		$.ajax({
			type: 'POST',
			url: 'ajax/search.ajax.php?page=' + $(this).html(),
			data: 'search=' + $('#search').val() + '&language=' + $('#globalLanguage').val() + '&country=' + $('#globalCountry').val() + '&idlanguage=' + $('#globalIdLanguage').val() + '&idcountry=' + $('#globalIdCountry').val(),
			success: function(msg) {
			
				// On met à jour le contenu
				$('#searchResult').html(msg);	
			}
		});
	});
	
	// Gestion des champs de login - Nom d'utilisateur
	$('#loginNickname').blur(function() {
		if ($('#loginNickname').val() == '') {
			$('#loginNickname').val('login');
		}
	});
	$('#loginNickname').focus(function() { $('#loginNickname').val(''); });
	
	// Gestion des champs de login - Mot de passe
	$('#loginPassword').blur(function() {
		if ($('#loginPassword').val() == '') {
			$('#loginPassword').val('password');
		}
	});
	$('#loginPassword').focus(function() { $('#loginPassword').val(''); });
	
	// Gestion des champs de login rapide
	$('input[name^=\'fastLogin\'], input[name^=\'fastEmail\'], input[name^=\'fastPassword\'], #fastLoginNickname, #fastLoginPassword').live('click', function() {
		$(this).val('').focus();
		
		// On change les noms s'ils sont vides
		$(this).blur(function() {
			if ($(this).val() == '') {
				
				if ($(this).attr('name') == 'fastLogin') {
					$(this).val('Nom d\'utilisateur');
				} else if ($(this).attr('name') == 'fastEmail') {
					$(this).val('Adresse electronique');
				} else if ($(this).attr('name') == 'fastPassword') {
					$(this).val('password');
				} else if ($(this).attr('name') == 'nickname') {
					$(this).val('Nom d\'utilisateur');
				} else if ($(this).attr('name') == 'password') {
					$(this).val('password');
				}
			}
		});
	});
	
	/**
	 * Envoi du commentaire de réaction
	 */
	$('input[name^=\'commentSubmitReply_\']').live('click', function() {
		var commentID = $(this).attr('name').split('_')[1];
		
		$.ajax({
			type: 'POST',
			url: 'ajax/fastComment.ajax.php',
			data: $('.commentZoneReply_' + commentID).serialize(),
			success: function(msg) {
				var reg = new RegExp('(validBox)', 'g');
				
				// On redirige
				if (reg.test(msg)) {
					setTimeout('window.location="' + $('#globalCountry').val() + '_' + $('#globalLanguage').val() + '/sondage/' + $('#sys_idPoll').val() + '"', 2000);
				}
				
				// On met à jour le contenu
				$('.commentStatus_' + commentID).html(msg);
			}
		});
	});
	
	// Liens des box de la home
	$('.most-popular-content ul li a, .most-recent ul li a').live('click', function() {
		
		// Récupère les informations importantes
		var splittedID = $(this).attr('id').split('_');
		var href = $(this).attr('href');
		
		// On supprime le lien actuel
		$(this).removeAttr('href');
		
		// Lancer la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/clickMethod.ajax.php',
			data: 'type=' + splittedID[0] + '&idPoll=' + splittedID[1],
			success: function(msg) {
			
				// On redirige la page
				location.href = href;
			}
		});
	});
	
	// Image chargement des boxes de la home
	function loadingHomeBox() {
		$('.most-popular-content').html('<div style="text-align: center;"><img src="images/ajax-loader.gif" height="32" width="32" alt="Loading"></div>');
	}
	
	// Home - Plus populaires par votes
	$('.mostPopularVotes').live('click', function() {
		loadingHomeBox();
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/homePopular.ajax.php',
			data: 'type=votes',
			success: function(msg) {
			
				// On met à jour le contenu
				$('.most-popular-content').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularReactions').removeClass('selectedOrder');
				$('a.mostPopularVotes').addClass('selectedOrder');
			}
		});
	});
	
	// Home - Plus populaires par réactions
	$('.mostPopularReactions').live('click', function() {
		loadingHomeBox();
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/homePopular.ajax.php',
			data: 'type=reactions',
			success: function(msg) {
			
				// On met à jour le contenu
				$('.most-popular-content').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularVotes').removeClass('selectedOrder');
				$('a.mostPopularReactions').addClass('selectedOrder');
			}
		});
	});
	
	
	/*
	 * PAGE LES PLUS POPULAIRES
	 */

	// Plus populaires par votes
	$('.mostPopularsListVotes').live('click', function() {
		
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular.ajax.php',
			data: 'order=votes',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularsList').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularsListComments').removeClass('selectedOrder');
				$('a.mostPopularsListVotes').addClass('selectedOrder');
			}
		});
		
	});
	
	// Plus populaires par commentaires/réactions
	$('.mostPopularsListComments').live('click', function() {
		
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular.ajax.php',
			data: 'order=comments',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularsList').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularsListVotes').removeClass('selectedOrder');
				$('a.mostPopularsListComments').addClass('selectedOrder');
			}
		});
		
	});
	
	// Plus populaires que les 7 premiers
	$('.mostPopularsListSeven').live('click', function() {
	
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular.ajax.php',
			data: 'time=7',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularsList').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularsListAll').removeClass('selectedQuantity');
				$('a.mostPopularsListSeven').addClass('selectedQuantity');
			}
		});
		
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular-pagination.ajax.php',
			data: 'time=7',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularPagination').html(msg);
			}
		});
	});
	
	// Plus populaires par commentaires/r�actions
	$('.mostPopularsListAll').live('click', function() {
	
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular.ajax.php',
			data: 'time=all',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularsList').html(msg);
				
				// On gère les classes CSS
				$('a.mostPopularsListSeven').removeClass('selectedQuantity');
				$('a.mostPopularsListAll').addClass('selectedQuantity');
			}
		});
		
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/most-popular-pagination.ajax.php',
			data: 'time=all',
			success: function(msg) {
			
				// On met à jour le contenu
				$('#mostPopularPagination').html(msg);
			}
		});
	});
	
	// Détails d'un sondage
	$('p#pollDescriptionP a').live('click', function() {
		
		// On exécute la requête AJAX
		$.ajax({
			type: 'POST',
			url: 'ajax/poll-details-full-description.ajax.php',
			data: 'idPoll=' + $(this).attr('id').split('_')[1],
			success: function(msg) {
			
				// On met à jour le contenu
				$('p#pollDescriptionP').html(msg);
			}
		});
	});

	// Profil d'un utilisateur => ajouter/supprimer l'utlisateur en tant que favori
	$('#profilUserContent ul li button').live('click', function() {
	
		// On récupère les informations importantes
		var action = $(this).attr('id').split('_')[0];
		var idFavouriteUser = $(this).attr('id').split('_')[1];
		
		// On cache le bouton
		$(this).addClass('hide');
		
		// Ajout et suppression de l'utilisateur aux favoris
		if (action == 'addToFavouriteUser') {
			
			// On affiche le bouton avec l'ID voulu
			$('#removeFromFavouriteUser_' + idFavouriteUser).removeClass('hide');
			
			// On exécute la requête AJAX
			$.ajax({
				type: 'POST',
				url: 'ajax/favouriteUser.ajax.php',
				data: 'idFavouriteUser=' + idFavouriteUser + '&action=add'
			});
			
		} else if (action == 'removeFromFavouriteUser') {
			
			// On affiche le bouton avec l'ID voulu
			$('#addToFavouriteUser_' + idFavouriteUser).removeClass('hide');
			
			// On exécute la requête AJAX
			$.ajax({
				type: 'POST',
				url: 'ajax/deleteFavourite.ajax.php',
				data: 'favType=user&idFav=' + idFavouriteUser
			});
		}
	});
	
	// Changement des pays
	$('#select-country').change(function() {
		$.ajax({
			type: 'POST',
			url: 'tlbx/select-country.php',
			data: 'select-country=' + $(this).val(),
			success: function(msg) {
				window.location = msg;
			}
		});
	});

	/**
	 * Change le paramètre flashVars
	 *
	 * @deprecated ?
	 */
	$('#btnChange').live('click', function() {
		$('embed[name=\'resultViewer\']').attr('flashVars', 'test');
	});
	
	/**
	 * Affiche un div...
	 *
	 * @deprecated ?
	 */
	$('a[class$=\'click-1\']').live('click', function() {
		$('div.' + $(this).attr('class').split('-')[0] + '1').toggle('slow');
	});
	$('a[class$=\'click-2\']').live('click', function() {
		$('div.' + $(this).attr('class').split('-')[0] + '2').toggle('slow');
	});
});