var URL_SERVICE = "http://lotoquebec.com/commentrservice";
var URL_COMMENT_POST = URL_SERVICE+"/commentaire";
var URL_COMMENT_POST_REPONSE = URL_SERVICE+"/commentairereponse";
var URL_COMMENTS_GET = URL_SERVICE+"/sujet";
var URL_CAPTCHA = URL_SERVICE+"/captcha";
var URL_NB_COMMENT = URL_SERVICE+"/nbcommentaires"
var NB_COMMENTAIRE_PREFIX = 'nbCommentr_';
var COMMENTAIRE_PREFIX = 'commentr_';
var langue = 'fr';

function traduire(code) {
	return traduction[code][langue];
}

function postCommentaireAjax() {
  $('.err').hide();

  $('#createcomment').click(function() { 
  	   $('.err').hide();
  		
	   var estValide = valider();
	   
		if (estValide) {
			$("iframe#framePostCommentaire").bind('load', function () {	
				iframePostCommentaireCharge();
			});
		}
		return estValide;
	});
}

function iframePostCommentaireCharge() {
	$("iframe#framePostCommentaire").unbind('load');
	$.ajax({
      url:URL_COMMENT_POST_REPONSE,
      dataType:'jsonp',
      success:traiterJSONSubmitCommentaire,
      error:erreurTraiterJSONSubmitCommentaire
	});
}

function traiterJSONSubmitCommentaire(data, textStatus, xmlHttpRequest){
	traiterSubmitCommentaire(data.saved, data.codeMessage);
	autreCaptcha();
}

function erreurTraiterJSONSubmitCommentaire(xmlHttpRequest, textStatus, errorThrown){
	traiterSubmitCommentaire(false, nonDisponible);
	autreCaptcha();
}

function autreCaptcha() {
	var d = new Date();
	$("#imageCaptcha").attr("src", URL_CAPTCHA+"?"+d.getTime());
	$("input#captcha").val('');
}

function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}

function afficherCommentr() {
	var id = $('[id^='+COMMENTAIRE_PREFIX+']').attr('id');
	if (id && id.length > COMMENTAIRE_PREFIX.length) {
		id = id.substr(COMMENTAIRE_PREFIX.length);
		$(document).ready( function () {
			var data = {};
			data.sujet = id;
			$.ajax({ 
				url: URL_COMMENTS_GET,
				data:data, 
				success: traiterJsonRecupererSujet, 
				dataType: "jsonp"
			});
		});
	}
}

function traiterJsonRecupererSujet(jsonCommentaires, textStatus, xmlHttpRequest){	
	var sujetId = jsonCommentaires.shift().sujet;	
	if (jsonCommentaires.length > 0) {	
		langue = jsonCommentaires.shift().langue;
		$('#'+COMMENTAIRE_PREFIX+sujetId).append('<iframe id="framePostCommentaire" name="framePostCommentaire"></iframe>');
		$('#'+COMMENTAIRE_PREFIX+sujetId).append(traiterAffichageSujet(sujetId, jsonCommentaires));
      	postCommentaireAjax();
      	initialiserFormulaire();
	} else {
		$('#'+COMMENTAIRE_PREFIX+sujetId).append(traiterAffichageSujetErreur(sujetId));
	}
}

function initialiserFormulaire() {
	alert('redefinir la méthode "initialiserFormulaire()" pour ajouter du code javascript après l\'affichage du formulaire');
}

function formatDateFromMillis(dateMillis) {
	var date = new Date(parseInt(dateMillis));
	var format;
	var day = date.getDate();
	var hour = padNumberBelowTenWithZero(date.getHours());
	var minute = padNumberBelowTenWithZero(date.getMinutes());
	if (langue == 'en') {
		var monthLabel = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
		var month = monthLabel[date.getMonth()];
		format = month+' '+day+', '+date.getFullYear()+' '+hour+':'+minute;
	} else { 
		var monthLabel = new Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
		var month = monthLabel[date.getMonth()];
		format = day+' '+month+' '+date.getFullYear()+' '+hour+':'+minute;
	} 
	return format;
}

function padNumberBelowTenWithZero(number) {
	var numberPadded;
	if (number < 10) {
		numberPadded = '0'+number;
	} else {
		numberPadded = number;
	}
	return numberPadded;
}

function afficherNbCommentaire() {
	$(document).ready( function () {
		var ids = '';
		$('[id^='+NB_COMMENTAIRE_PREFIX+']').each(function(index) {
			var id = $(this).attr('id');
			id = id.substr(NB_COMMENTAIRE_PREFIX.length);
			ids += id;
			ids += '|';
		});
		ids = ids.substr(0, ids.length-1);
		var data = {};
		data.ids = ids;
		$.ajax({
		      url:URL_NB_COMMENT,
		      data:data,
		      dataType:'jsonp',
		      success:traiterJsonNbCommentaires
		});
	});
}

function traiterJsonNbCommentaires(jsonNbCommentaires){
	var tableauIdSujets = jsonNbCommentaires.idSujets;
	var tableauNbCommentaires = jsonNbCommentaires.nbCommentaires;
	for (var i = 0; i < tableauIdSujets.length; ++i) {
		var sujetId = tableauIdSujets[i];
		var nbCommentaire = tableauNbCommentaires[i];
		$('#'+NB_COMMENTAIRE_PREFIX+sujetId).append(traiterNbCommentaires(sujetId, nbCommentaire));
	}
}
