// JavaScript Document

//Quand la page est chargée, on utilise la fonction init.
Event.observe(window,'load',init);
// ---------------------------------- Masque les groupes et met des évements sur les liens modifier ------------------------------------//
function init(e){
	//Gestion affichage et masquage des groupes
	if($$('.tab_groupes')){
		var groupes=$$('.tab_groupes');
		i=0;
		groupes.each(function(elmt)
		{
			elmt.hide();
			Event.observe(elmt.up('form').previous(0).down(0),'click',montrer);
		});
		
		//Gestion de la selection des checkboxes dans les amis
		if($('tous')){
			Event.observe($('tous'),'click',toutSelectionner);
		}
		if($('suppr_selec')){
			Event.observe($('suppr_selec'),'click',supprimerSelectionnes);
		}
		
	}
}
// ---------------------------------- Affiche les groupes ------------------------------------//
function montrer(e)
{
	var groupes=Event.element(e);
	groupes.up(0).next('form').down(0).toggle();
	Event.stop(e);//Stoppe tout
}
// ---------------------------------- Selectionne toutes les checkboxes ----------------------//
function toutSelectionner(){
	form=$('formAmis');
	var i=form.getInputs('checkbox', 'amis');
	i.each(function(item){
			if (item.checked){
				item.checked=false; 
			}
			else{
				item.checked=true;
			}
		}
	);
}
// ---------------------------------- Ajout des contacts avec l'ABI ----------------------//
function ajoutAbi(){
	//Element.update('retourListeOk','Récuperation en cours...');
	
	var params;	
	var pass;
	var email;
	
	var url='index.php';
	params='classe=Anniversaires&action=ajoutAbi&';
	
	//params+=Form.serializeElements( $('formEmail').getInputs('text') );
	//params+='&';
	//params+=Form.serializeElements( $('formEmail').getInputs('password') );

	email = $('emailAbi').value;
	pass = $('passAbi').value;
	params+="emailAbi="+email+"&passAbi="+pass;

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, 
	onSuccess :function(repPHP){
		rep=repPHP.responseText;
		var tableau=rep.split(";");
		table=new Array();

		tableau.each(function(mail){
			table.each(function(mail2) {
				if(mail==mail2){
					table=table.without(mail);
				}
			});
			table.push(mail);
		});
		

		for (var i=0; i<table.length; i++) {
			ajouterEmailList(table[i]);
		}

		$('retourListeOk').innerHTML = "";
		$('retourListeEmails').innerHTML = "";	
		
	}});

}


var email_list=[];
function cleanXML (docElement) {
			var node = docElement.getElementsByTagName('*');
			for(i = 0; i < node.length; i++) {
				a = node[i].previousSibling;
				if(a && a.nodeType == 3) nodeCleaner(a);
				b = node[i].nextSibling;
				if(b && b.nodeType == 3) nodeCleaner(b);
			}
			return docElement;
	}

function nodeCleaner (n){
			if(!n.data.replace(/\s/g,'')) n.parentNode.removeChild(n);
	}


function validerForm(){
	document.formulaire.submit();
}


function envoieDonnees(form){
	var params;
	var url='index.php';

	params=Form.serialize(form);

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params});

}

// ----------------------------------------------------------------------------------------
// -------- Envoi des emails et inscription des amis connus -------------------------------
// -------------------------------------------------------_--------------------------------

function afficheChoixHeure(h_sms){


    if($(h_sms).innerHTML==''){
      new Insertion.Top(h_sms,'<select  style="width:50px;" name="horaire_sms"><option id="8">8</option><option id="10">10</option><option id="12">12</option><option id="14" >14</option><option id="16" >16</option><option id="18" >18</option><option id="20" >20</option></select>&nbsp;&nbsp;&nbsp;Horaire d\'envoi du SMS');
    }
    else $(h_sms).innerHTML='';
}



function envoieListeEmails(){
	var adresses="";
	i=$$('input[type=checkbox]');
	i.each(function(item){
		if (item.checked){}
		else{
			email_list=email_list.without(item.readAttribute('id'));
		}
	});
	email_list.each(function(mail){
		adresses+=mail+";";
	});
	var params='';
	var url='index.php';
	params='classe=Anniversaires&action=envoyerListeEmails';

	params+='&nomUtilisateur='+$F('nomUtilisateur');
	params+='&prenomUtilisateur='+$F('prenomUtilisateur');
	params+='&listeEmails='+adresses;
	params+='&messageEmails='+$F('messageEmails');

  var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :reponseListeEmails});
}


function reponseListeEmails(requete) {
  retour = requete.responseText;
  $('retourListeOk').innerHTML = "<p>"+retour+"</p>";//$('retourListeOk').innerHTML+"<br />"+retour;

    hidelistmail();
  //new Insertion.Top('retourListeOk',retour);
}
// ------------------- Recuper les infos d'un ami ajout manuellement ---------------------------------
function afficherModifManuel(idAmi){

	$('modifManuel').scrollTo();
	var params;
	var url='index.php';
	params='classe=Anniversaires&action=recupAmiManuel';

	params+='&idAmi='+idAmi;

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onSuccess :retourAfficherModifManuel});
}

// -------------------Retour de afficherModifManuel ---------------------------------
function retourAfficherModifManuel(retour){
	var reponse = retour.responseText;
	
	Element.update("divFormAmi",reponse);
	Effect.Appear("modifManuel",{from:0,to:1,duration:0.2});
}

// ------------------- Tri de la liste des anniv ---------------------------------
function trier(ordre,sens){
	var params;
	var url='index.php';
	params='classe=Anniversaires&action=trier';
	params+='&ordre='+ordre;
	params+='&sens='+sens;
	params+='&idUtilisateur='+$F('idUtilisateur');

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :afficherReponse});
}

// ------------------- Filtre la liste des anniv ---------------------------------
function changementFiltreGroupe(){
	var params;
	var url='index.php';
	params='classe=Anniversaires&action=changementFiltreGroupe';

	params+='&idFiltreGroupe='+$F('filtreGroupe');
	params+='&idUtilisateur='+$F('idUtilisateur');

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :afficherReponse});

}

// ------------------- Change les anniv de groupe ---------------------------------
function changementGroupe(){
	var params;
	var url='index.php';
	//On initialise la la valeur de nb à celle du formulaire
	var nb = document.formAmis.amis.length;

	params='classe=Anniversaires&action=updateGroupe';
	//Si la valeur est undefined, alors on met nb à 1, ce qui correspond au nombre de checkbox du formlaire
	if(typeof document.formAmis.amis.length == 'undefined'){
		nb = 1;
	}
	
	for (i=0; i<nb; i++) {
		if(typeof document.formAmis.amis.length == 'undefined'){		
			if(document.formAmis.amis.checked){
				params+='&idGroupe='+$F('groupe');
				params+='&idAnniv='+document.formAmis.amis.value;	
				var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :afficherReponse});				
			}
		}
		else{
			if(document.formAmis.amis[i].checked){
				params+='&idGroupe='+$F('groupe');
				params+='&idAnniv='+document.formAmis.amis[i].value;		
				var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :afficherReponse});				
			}
		}		
	}
	$('tous').checked=false;
}

// ------------------- Supprime les amis selectionnés ---------------------------------
function supprimerSelectionnes(e){

	Event.stop(e);//Stoppe tout

	//On initialise la la valeur de nb à celle du formulaire
	var nb = document.formAmis.amis.length;
	//Si la valeur est undefined, alors on met nb à 1, ce qui correspond au nombre de checkbox du formlaire
	if(typeof document.formAmis.amis.length == 'undefined'){
		nb = 1;
	}
	
	for (i=0; i<nb; i++) {	
		if(typeof document.formAmis.amis.length == 'undefined'){		
			if(document.formAmis.amis.checked){				
				// params+='&idAnniv='+document.formAmis.amis.value;		
				// var myAjax = new Ajax.Request(url, {method: 'post', parameters: params});
				supprimerAmi(document.formAmis.amis.value);
			}
		}
		else{
		
			if(document.formAmis.amis[i].checked){
				// params+='&idAnniv='+document.formAmis.amis[i].value;
				// var myAjax = new Ajax.Request(url, {method: 'post', parameters: params});
				supprimerAmi(document.formAmis.amis[i].value);				
			}			
		}			
	}
	$('tous').checked=false;
}
// ------------------- Supprime un anniv de ses contacts ---------------------------------
function supprimerAmi(idAnniv){
	var params;
	var url='index.php';
	params='classe=Anniversaires&action=supprAmis';

	params+='&idAnniv='+idAnniv;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onSuccess: function(repPHP){
			if(repPHP.responseText == 'ok'){
				$('anniv'+idAnniv).remove();
				refresh();
			}
	}});
}
// ------------------- Preinscrit un ami (verification de son existence) --------------------------------
function ajoutAmi(){
	var params;
	var url='index.php';
	params='classe=Anniversaires&action=ajoutVerifEmail';

	params+='&email='+$F('email');
	params+='&idUtilisateur='+$F('idUtilisateur');

	params+='&idGroupe='+document.formAmis.amis[0].value;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :afficherFormulaire});
}

// ------------------- Ajoute un email dans la liste textarea --------------------------------
function ajouterEmail(){
	var exp=new RegExp("^([a-z0-9][a-z0-9_\.\-]*)@([a-z0-9][a-z0-9_\.\-]*[a-z0-9]\.[a-z]{2,6}(\.[a-z]{2,})?)$","g");

	if(exp.test($F('email'))){
		$('listeEmails').value+=$F('email')+'; ';
		Element.update("retourListeEmails","");
		$('email').value="";
	}
	else Element.update("retourListeEmails","Cet email n'est pas valide.");
}


// ------------------- Ajoute un email dans la liste ol --------------------------------

function existantMail(val){
  var params;
	var url='index.php';
	params='classe=Anniversaires&action=verifEmail';
	params+='&email='+val;
	//params+='&idUtilisateur='+$F('idUtilisateur');

	//params+='&idGroupe='+document.formAmis.amis[0].value;
	var myAjax = new Ajax.Request(url, {method: 'post',
									  parameters: params,
									  onSuccess: suiteEmailList,
									onFailure: function(){} });


}

function suiteEmailList(requete){
    id=requete.responseText;
    valeur=id.split('|');
    val=valeur[0];
	email_list.push(val);
	new Insertion.Top('list_email','<li id="'+val+'" class="list_mail"><input type="checkbox" id='+val+' checked="checked" /><span class="nomemail" id="'+val+'">'+val+'</span></li>');

    $('boutonenvoyer').style.display='block';
    $('boutonenvoyer2').style.display='block';
    $('persomail').style.display='block';
    $('bouton_ajout_list_mail').style.display='block';

    $('email').value="";
}


function ajouterEmailList(mail){
	$('retourListeOk').innerHTML = "";
	$('retourListeEmails').innerHTML = "";
	val=mail.toLowerCase();
	if(verifMail(val)){
		id=existantMail(val);
	}
}

function removeEmailList(nom){
  email_list = email_list.without(nom);
  $(nom).remove();
}


function modifEmailList(nom){
  new Insertion.After(nom, '<li id="mod'+nom+'" class="list_mail"><input class="nomemail"  size="30" type="text" id="txt'+nom+'" value="'+nom+'" /><span class="mail_option"><a onclick="modifEmail(\''+nom+'\')">valider</a> - <a onclick="annulEmail(\''+nom+'\')">annuler</a></span></li>');// - <a onclick="removeEmailList(\''+nom+'\')">supprimer</a></li>');
  $(nom).remove();


}

function annulEmail(nom){
  val=nom;
	val=val.toLowerCase();
  new Insertion.After('mod'+nom,'<li id="'+val+'" class="list_mail"><span class="nomemail"  id="txt'+val+'">'+val+'</span><span class="mail_option"><a onclick="modifEmailList(\''+val+'\')">modifier</a> - <a onclick="removeEmailList(\''+val+'\')">supprimer</a></span></li>');
  $('mod'+nom).remove();
}

function modifEmail(nom){
	val=$('txt'+nom).value;
	val=val.toLowerCase();
 	if(verifMail(val)){
    new Insertion.After('mod'+nom,'<li id="'+val+'" class="list_mail"><span class="nomemail"  id="txt'+val+'">'+val+'</span><span class="mail_option"><a onclick="modifEmailList(\''+val+'\')">modifier</a> - <a onclick="removeEmailList(\''+val+'\')">supprimer</a></span></li>');
    $('mod'+nom).remove();
    email_list = email_list.without(nom);
    email_list.push(val);
  }
}

function verifMail(val){

  retour=true;
  var exp=new RegExp("^([a-z0-9][a-z0-9_\.\-]*)@([a-z0-9][a-z0-9_\.\-]*[a-z0-9]\.[a-z]{2,6}(\.[a-z]{2,})?)$","g");
  if(!exp.test(val)){
    retour=false;
    Element.update('retourListeEmails',"En cours...");
  }

  email_list.each(function(mail) {
      if(mail==val){
        retour=false;
        Element.update('retourListeEmails',"<p>email existant dans la liste</p>");
      }
    }
  );

  if(retour) Element.update('retourListeEmails',"");

  return retour;
}



// ------------------- verification d'un formulaire --------------------------------
function verifForm(form){

	Element.cleanWhitespace(form);
	cleanXML($(form));

	var tableauChamps=$(form).getElementsByClassName('obligatoire');
	var tableauLength=tableauChamps.length;


	var erreur="<p>Les champs suivants doivent &ecirc;tre renseign&eacute;s :</p>";

	for(j=0;j<tableauLength;j++){

    	Element.cleanWhitespace(tableauChamps[j]);
		if(Field.present(tableauChamps[j])==false){
			erreur+=" "+tableauChamps[j].name+",";
			var vide=1;
		}

	}
	erreur=erreur.substr(0,erreur.length-1);
		if(vide==1) return erreur;
	else return false;
}


// ------------------- Ajoute un ami  sa liste ---------------------------------
function ajouterAmiManuel(form,modif){
	
  var erreur=verifForm(form);
   

	if(erreur==false){

		var exp1=new RegExp("^[0-3][0-9]$","g");
		var exp2=new RegExp("^[0-1][0-9]$","g");
		var exp3=new RegExp("^[0-9]{4}$","g");
		var exp4=new RegExp("^([a-z0-9][a-z0-9_\.\-]*)@([a-z0-9][a-z0-9_\.\-]*[a-z0-9]\.[a-z]{2,6}(\.[a-z]{2,})?)$","g");

		/*var structure= new Array();
		structure["jour"]=exp1;
		structure["mois"]=exp2;
		structure["annee"]=exp3;

		var valide="Les champs suivants ne sont pas valides :";
		var i=0;
		for(var champs in structure){
			if(i<3){
				i++;
				exp=structure[champs];

				if(!exp.test($F(champs))){
						valide+=" "+champs+",";
						a=1;
				}
			}
		}*/

		var valide="Les champs suivants ne sont pas valides :";
		if(!exp1.test($F("jour")) || $F("jour")<1 || $F("jour")>31){
			valide+=" jour,";
			a=1;
		}
		if(!exp2.test($F("mois")) || $F("mois")<1 || $F("mois")>12){
			valide+=" mois,";
			a=1;
		}
		var annee=$F("annee");
		var datedujour = new Date();
		var anneeActuelle = datedujour.getFullYear();
		if($F("annee")!='' && $F("annee")!='AAAA'){
			if(!exp3.test($F("annee")) || $F("annee")<1900 || $F("annee")>anneeActuelle){
				valide+=" annee,";
				a=1;
			}
		}
		else annee='1801';

		if(!modif){
			if(!exp4.test($F("courriel")) && $F("courriel")!=""){
				a=1;
     			valide+=" email,";
    		}
		}

		valide=valide.substr(0,valide.length-1);

	//	alert("ajouterAmiManuel valide:"+valide+";");


		if(a!=1){
			var params;
			var url='index.php';

			if(modif) {
				params='classe=Anniversaires&action=modifierAmiManuel';
				params+='&idAmi='+$F('idAmi');
				
			}
			else params='classe=Anniversaires&action=ajouterAmiManuel';

			//params+='&idUtilisateur='+$F('idUtilisateur');
			//params+='&idGroupe='+document.formAmis.amis[0].value;


      params+='&nom='+$F('nom');
			params+='&prenom='+$F('prenom');
			params+='&jour='+$F('jour');
			params+='&mois='+$F('mois');
			params+='&annee='+annee;

			if (!modif) {
				params+='&email='+$F('courriel');
				params+='&texte='+$F('messageEmails');
				params+='&groupe='+$F('groupe');
			}

			//params+=Form.serialize('formInfosAmi');
			var myAjax = new Ajax.Request(url, {method: 'post', parameters: params,onComplete: retourAmiManuel});

		}
		else {
	//	  alert("ajouterAmiManuel valide:"+valide+";");
		  Element.update("retourListeEmails","<p>"+valide+"</p>");
		}
		if(modif=="modif"){
			$('modifManuel').hide(2000);
			refresh();
		}
	}
	else{
  //  alert("ajouterAmiManuel erreur:"+erreur+";");
    Element.update("retourListeEmails",erreur);
  } 
}

// ------------------- Actualise la liste des anniv ---------------------------------
function afficherReponse(requete) {
	retour = requete.responseText;

	Element.update("lignesAnniv",retour);

	Effect.Fade('modifManuel',{from:0.9,to:0.0,duration:0.2});
	//refresh();

}

// ------------------- Retour du php ---------------------------------
function retourAmiManuel(retour){

	var reponse = retour.responseText;

	if($('retourListeOkManuel')!==undefined){	
		Element.update('retourListeOkManuel',"<p>anniversaire ajout&eacute;</p>");
		refresh();
		setTimeout(		
			function(){
				if($('retourListeOkManuel').visible()){
					Effect.Appear("retourListeOkManuel",{from:1,to:0,duration:0.6});
				}
			}		
		,2000);	
		$('nom').clear();
		$('prenom').clear();
		$('jour').value='JJ';
		$('mois').value='MM';
		$('annee').value='AAAA';
		$('courriel').value='';
	}
	else{		
		Element.update($('retourAjoutManuel'),"<p>anniversaire modifi&eacute;</p>");
		Element.update($('listedroite'),"<p>anniversaire modifi&eacute;</p>");
		Element.update($('lignesAnniv'),reponse);
		
		setTimeout(		
			function(){
				if($('modifManuel').visible()){
					Effect.Appear("modifManuel",{from:1,to:0,duration:0.6,afterFinish:function(){$('modifManuel').hide();}});
				}
			}		
		,2000);		
		refresh();
	}

}

// ------------------- Retour du php ---------------------------------
function retourListeEmails(retour){
	 var reponse = retour.responseText;
	 Element.update("retourListeOk","<p>"+reponse+"</p>");
	 $('listeEmails').value="";
}

// ------------------- Retour du php ---------------------------------
function afficherFormulaire(requete) {

	 var reponse = requete.responseText;
	 Element.update("ajoutAmi",reponse);
	Effect.BlindDown('ajoutAmi');

	if($('type')==undefined){
		if($F('amis')==undefined){
			//Element.update("divErreur",reponse);
			//Element.update("ajoutAmi",reponse);

		}
		else{
			Element.update("ajoutAmi",'');
			afficherReponse(requete);
		}
	}
	//$('contenu').innerHTML = retour;
}

function callBackEmails(emails){

	var tableau=emails.split(";");
	for (var i=0; i<tableau.length; i++) {
		ajouterEmailList(tableau[i]);
	}

  //$('listeEmails').value+= emails;

}

function callBackEmailsErreur(erreur){

	//Element.update("retourListeEmails",erreur);
}
/* Permet de rafraichir la sidebar automatiquement  */
function refresh(){
var params;
	var url='index.php';
	params='classe=Anniversaires&action=refreshModules';

	var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, 
	onComplete :function(repPHP){
	
		Element.update("listedroite",repPHP.responseText);
	
	}});
}

// ------------------- Traite les infos des contacts MSN ---------------------------------
// function retourAfficherMSNList(retour){

// $('waiter').innerHTML = '';
	 // var reponse = retour.responseText;

	 // if(reponse=="ERROR") { Element.update('retourListeEmails',"le mot de passe ou le nom d'utilisateur est faux");exit;}
	// var tableau=reponse.split(";");

	// table=new Array();

	// tableau.each(function(mail) {
		// table.each(function(mail2) {
			// if(mail==mail2){
				// table=table.without(mail);
			// }
		// });
		// table.push(mail);
	// });


  // for (var i=0; i<table.length; i++) {
    // ajouterEmailList(table[i]);
  // }


    // $('retourListeOk').innerHTML = "";
  // $('retourListeEmails').innerHTML = "";
// }

// ------------------- Recupre les infos des contacts MSN ---------------------------------
// function ajouterMSNList(){

	// var params;
	// var url='index.php';
	// params='classe=Anniversaires&action=recupMSNlist';

	// params+='&nom_util='+$F('nom_util');
  // params+='&mdp='+$F('mdp_util');
// $('waiter').innerHTML = '<img src="./img/wait.gif" alt="waiter">';
	// var myAjax = new Ajax.Request(url, {method: 'post', parameters: params, onComplete :retourAfficherMSNList});
// }

var div_affiche='';
var test='';

function styleCalque(idCalque){
 if (document.all) calqueStyle = document.all[idCalque].style;
 if (document.layers) calqueStyle = document.layers[idCalque];
 if (document.getElementById) calqueStyle = document.getElementById(idCalque).style;
 return calqueStyle;
}


function effectToggleAppear(div){
    $('retourListeOk').innerHTML = "";
    $('retourListeEmails').innerHTML = "";

    style = styleCalque(div);
    style.display = style.display=="block"?'none':'block';
   // document.getElementById(div).setAttribute("class","affichage_ajout_oui");
    if(div_affiche!='' && div_affiche!=div){

      style = styleCalque(div_affiche);
      style.display = "none";

    //  resetMsg();
     // div_affiche='';

   //   document.getElementById(div_affiche).setAttribute("class","affichage_ajout");
   //   Effect.toggle(div,'appear',{duration:0.5});
   //   Effect.toggle(div_affiche,'appear',{delay:0.5,duration:0.5});
    }
   // else  Effect.toggle(div,'appear',{duration:0.5});

    div_affiche=div;
}

var div_ajoutMassif=false;
var div_ajoutManuel=false;

function effetToggleBlind(div){
  Effect.toggle(div,'blind');

  if(div=='ajoutMassif'){
    if( div_ajoutManuel==true){
      Effect.toggle('ajoutManuel','blind');
      div_ajoutManuel=false;
    }
    div_ajoutMassif=div_ajoutMassif?false:true;
  }
  else{
    if( div_ajoutMassif==true){
      Effect.toggle('ajoutMassif','blind');
      div_ajoutMassif=false;
    }
    div_ajoutManuel=div_ajoutManuel?false:true;
  }
}
	
function hidelistmail(){
	$$('#boutonenvoyer2').each(Element.hide);
	$$('#bouton_ajout_list_mail').each(Element.hide);
	$$('li.list_mail').each(Element.hide);
	$('email').value="";
	email_list=[];
}
