/*
 * dialogue Modal
 */


var DialogueModal = function (titre, contenu, options) {
    if ( typeof DialogueModal.num == 'undefined' ) {
        DialogueModal.num = 1;
    } else {
	DialogueModal.num ++;
    }
    
    this.init(titre, contenu, options);
};
    
DialogueModal.prototype = {
    init: function(titre, contenu, options) {
	this.id_dom = 'dialogue_modal_' + DialogueModal.num;
	
	if (contenu == '') {
	    contenu = '<img src="/i/chargement_en_cours.gif" />Votre demande est en cours de traitement';
	}
	
	if (options == 0) {
	    options = { 
		modal: true,
		bgiframe: true
	    }
	}

	$("body").append('<div id="' + this.id_dom + '"></div>');
	$("#" + this.id_dom).html(contenu).attr('title', titre).dialog(options);
    },
    reaffiche: function() {
	if (!$("#" + this.id_dom).dialog('isOpen')) { $("#" + this.id_dom).dialog('open'); }
    },

    existe: function() {
	return ($("#" + this.id_dom).length > 0);
    },

    affiche: function(contenu) {
	if (!$("#" + this.id_dom).dialog('isOpen')) { $("#" + this.id_dom).dialog('open'); }
	$("#" + this.id_dom).html(contenu);
    },

    affiche_deja_en_cours: function() {
	this.affiche('<img src="/i/chargement_en_cours.gif" />Votre demande est déjà en cours de traitement');
    },

    affiche_erreur_technique: function() {
	this.affiche('Une erreur technique s\'est produite et votre demande n\'a pu être prise en compte. Merci de la renouveller ulterieurement');
	this.ajoute_bouton_ok();
    },

    ajoute_bouton_ok: function() {
	$("#" + this.id_dom).dialog('option', 'buttons', { Ok: function() { 
		    $(this).dialog('destroy'); 
		    $(this).remove();		    
		}});
    },
    
    option: function(nom, valeur) {
	$("#" + this.id_dom).dialog('option', nom, valeur);
    },

    detruit: function() {
	$("#" + this.id_dom).dialog('destroy');
	$("#" + this.id_dom).remove();
    }

}



/*
 * initialisations diverses
 */

$(document).ready(function() {
	var dial;
	var traitement_en_cours=0;
	var dial_contact=0;

        $("ul.sf-menu").superfish().find('ul').bgIframe({opacity:false}); 
	$("ul.sf-menu").addClass('superfish-tr');
	$("ul.sf-menu > li").addClass('superfish-ts');

	var calendrier = $("#calendrier").datepicker({ altField: 'grille_date', altFormat: 'yy-mm-dd' });



	/*
	 * formulaire de liste des films / acteurs
	 *
	 */

	$(".liste_liens").submit(function() {
		document.location.href = '/' + this.liste.value;
		window.location.reload();
		return false;
	    });


	/*
	 * le formulaire de la grille de programmes
	 */

	$("#form_grille_ok").click(function() {
		var date = $('#grille_date').val();
		var lieu = $('#grille_lieu').val();
		var film = $('#grille_film').val();
		$("#contenu").load('/grille.php', { cinema: lieu, film: film, date: date });
		return false;
	    });

	/*
	 * les emails (replace les <a href="remplace:blablabal">EMAIL</a> par le mailto correct...
	 */

	$(".email_mdf").attr("href", function() {
		var mail = this + '';
		return mail.replace(RegExp("^remplace:", ""), "mailto:") + '@maghrebdesfilms.fr';
	    }).each(function(i, dom) { 
		    var mail = dom + '';
		    $(this).text(mail.replace(RegExp("^mailto:", ""), ""));
		});


	$.getJSON("/fichiers_diaporama.php", 
		  function(data){ 
		      $.each(data.images, function(i,item){ 
			      $("<img width=\"740\" height=\"150\" />").attr("src", item).appendTo("#diaporama"); 
			      $("#diaporama").cycle({
				      fx: 'fade',
					  random: 1,
					  requeueOnImageNotLoaded: true,
					  timeout: 5000,
					  speed: 1500
					  });
			  }); 
		  });




	$(".lien_contacts").live('click', function() {
		if (dial_contact == 0 || (!dial_contact.existe())) {
		    contenu = '<table><tr><td style="text-align:right;">Votre message concerne :</td><td style="text-align:left;"><select id="contact_categorie" name="contact_categorie"><option value="0">Choisissez...</option><option value="1">La programmation des films</option><option value="2">Le réseau de salles</option><option value="3">La communication / la presse / les partenaires médias</option><option value="4">La diffusion / les partenariats associatifs</option><option value="0">Un autre sujet</option></select></td></tr><tr><td  style="text-align:right;">Votre adresse e-mail :</td><td style="text-align:left;"><input id="contact_email" name="contact_email" type="text" size="20" maxlength="255" /></td></tr><tr><td style="text-align:right;">Sujet de votre message :</td><td  style="text-align:left;"><input name="contact_objet" id="contact_objet" type="text" size="20" maxlength="255" /></td></tr><tr><td  style="text-align:right;">Votre message :</td><td  style="text-align:left;"><textarea cols="40" rows="10" id="contact_message"></textarea></td></tr></table>';
		    dial_contact = new DialogueModal('Contactez-nous :', contenu, { 
			    modal: true,
			    bgiframe: true,
			    minWidth: 600,
			    width: 700,
			    buttons: { 
			        Annuler: function() { $(this).dialog('close'); },
				"Envoyer la demande": function() {
				    $.ajax({
					    type: "POST",
					    url: "/traitement-contacts.php",
					    data: "email=" + encodeURIComponent($("#contact_email").val()) +
					    "&objet=" + encodeURIComponent($("#contact_objet").val()) +
					    "&message=" + encodeURIComponent($("#contact_message").val()) +
					    "&categorie=" + $("#contact_categorie").val(),
					    dataType: "json",
					    timeout: 30000,
					    error: function (XMLHttpRequest, textStatus, errorThrown) {
						dial_contact.affiche_erreur_technique();
					    },
					    success: function(reponse){
						switch(reponse.action) {
						case 'erreur-technique':					 
						dial_contact.affiche('Une erreur technique s\'est produite et votre demande n\'a pu être prise en compte. Merci de la renouveller ulterieurement');
						break;
						case 'ok':
						dial_contact.affiche('Votre demande a bien été envoyé et nous vous répondrons rapidement.');
						break;
						default:
						}
						dial_contact.ajoute_bouton_ok();
						return(false);
					    }
					});
				    return(false);
				}
			    }
			});
		} else {
		    dial_contact.reaffiche();
		}
		return false;
	    });
	    

	var form_news_letter = $("#form_news_letter").validate({
		rules: { nl_email: { required: true, email: true } },
	    messages : {
			nl_email: {
		    required: "Merci d'entrer votre adresse email",
		    email: "Votre email n'est pas valide"
		}
	    },
	    errorPlacement: function(error, element) {
		 error.appendTo( element.parent("form"));
	    },

	    wrapper: "div",
	    onsubmit: true,
	    onfocusout: false,
	    onkeyup: false,
	    onclick: false,
	    submitHandler: function() {
	         if (traitement_en_cours) { dial.affiche_deja_en_cours(); return false; }
  	         traitement_en_cours = 1;
	         dial = new DialogueModal('Inscription à la liste d\'informations', '', 0);
		 $.ajax({
			 type: "POST",
			     url: "/traitement-news-letter.php",
			     data: "email=" + $("#nl_email").val(),
			     dataType: "json",
			     timeout: 30000,
			     error: function (XMLHttpRequest, textStatus, errorThrown) {
			     dial.affiche_erreur_technique();
			     traitement_en_cours=0;
			 },
		     success: function(reponse){
		     switch(reponse.action) {
		     case 'erreur-technique':					 
			 dial.affiche('Une erreur technique s\'est produite et votre demande n\'a pu être prise en compte. Merci de la renouveller ulterieurement');
				     break;
				 case 'email-incorrect':
                                     dial.affiche('Votre email n\'est pas valide.');
				     break;
				     
		                  case 'trop-de-demandes':
				      dial.affiche('Votre email a déjà fait l\'objet de trop de demandes d\'adhésions à la liste. Merci de nous contacter à contacts@maghrebdesfilms.fr');
				      break;

				 case 'ok':
                                     dial.affiche('Votre email a bien été enregistré et un email de confirmation vous a été adressé.');
				     $("#nl_email").val('');
				     break;
				 default:
				 }
                      		 dial.ajoute_bouton_ok();
				 form_news_letter.resetForm();
				 form_news_letter.prepareForm();
				 form_news_letter.hideErrors();
				 traitement_en_cours = 0;
				 return(false);
			     }
			 });
		     return(false);
                }
		});

    });

