var FunctionsJs = new Class({
	initialize: function(options){
		this.options = options;
		this.error = '';
	},
	
	// Méthode permettant de passer d'un select é un autre
	// Utiliser lors de l'inclusion / exclusion d'une publicite
	selecttoselect: function(idFrom,idTo,reference,mode,table) 
	{
		// Initialisation des variables
		var nbFrom = $(idFrom).length;
		var selectedList = new Array();
		var chain;
		var method;
		var listpubs;
		var perso;
		
		// Pour chaque option sélectionée on créé une option pour le select receveur
		for(var i=0; i<nbFrom; i++) {
			if ($(idFrom).options[i].selected) {
				$newoption = document.createElement("option");
				$newoption.value = $(idFrom).options[i].value;
				$newoption.text = $(idFrom).options[i].text;
				try {
					$(idTo).add($newoption,null); // standards compliant
				} catch(ex) {
					$(idTo).add($newoption); // IE only
				}
				selectedList.push(i);
			}
		}
		var exincl = false;
		if (idFrom=='ainclure' || idFrom=='inclure' || idFrom=='aexclure' || idFrom=='exclure') {
			var exincl = true;
			// Action sur l'autre select
			// Si on inclu une pub, on la retire de la liste des pubs é exclure
			// Si on arréte d'inclure une pub, on l'ajoute é la liste des pubs é exclure
			// Et inversement
			switch (idFrom)
			{
				case 'ainclure' :
					chain = 'aexclure';
					method = "retire";
					break;
				case 'inclure' :
					chain = 'aexclure';
					method = "ajout";
					break;
				case 'aexclure' :
					chain = 'ainclure';
					method = "retire";
					break;
				case 'exclure' :
					chain = 'ainclure';
					method = "ajout";
					break;
				
			}
		} else {
			chain = idTo;
		}
		
		// On retire de la liste les champs passés de l'autre cété.
		for(i=selectedList.length-1; i>=0; i--) {
			if (exincl) {
				listpubs = $(idFrom).options[selectedList[i]].text + " a";
				var myHTMLRequest = new Request({
					onComplete: function (content){
						perso = "";
						if (mode==0) {
							perso = "retiré";
						} else {
							perso = "ajouté";
						}
						if (selectedList.length>1) {
							listpubs = "Les publicités ont";
							perso += "es";
						}
						$('dispatchmsg').innerHTML = listpubs + " été " + perso + " é la liste des " + table + " avec succés";
					}
				}).get('/ajax/gestselect/id/'+ reference +'/value/'+ $(idFrom).options[selectedList[i]].value +'/mode/'+ mode +'/table/'+ table);
			}
			if (method=='retire') {
				$each($(chain).options, function(valeur, key){
					if (valeur.text==$(idFrom).options[selectedList[i]].text) {
						$(chain).remove(key);
					}
				});
			} else {
				$newoption = document.createElement("option");
				$newoption.value = $(idFrom).options[selectedList[i]].value;
				$newoption.text = $(idFrom).options[selectedList[i]].text;
				try {
					$(chain).add($newoption,null); // standards compliant
				} catch(ex) {
					$(chain).add($newoption); // IE only
				}
			}
			$(idFrom).remove(selectedList[i]);
		}
	},
	
	SelectToSelect: function(idFrom,idTo) {
		// Initialisation des variables
		var nbFrom = $(idFrom).length;
		var selectedList = new Array();

		// Pour chaque option sélectionée on créé une option pour le select receveur
		for(var i=0; i<nbFrom; i++) {
			if ($(idFrom).options[i] != undefined) {
				if ($(idFrom).options[i].selected) {
					$newoption = document.createElement("option");
					$newoption.value = $(idFrom).options[i].value;
					$newoption.text = $(idFrom).options[i].text;
					try {
						$(idTo).add($newoption,null); // standards compliant
					} catch(ex) {
						$(idTo).add($newoption); // IE only
					}
					selectedList.push(i);
					$(idFrom).remove(i);
				}
			}
		}
		
	},
	
	// Permet é un element en Drag&Drop de revenir é son point d'origine
	goHome: function(el, top, left) {
		el.style.top = top;
		el.style.left = left;
	},
	
	selectAll: function(el) {
		var nb = $(el).length;
		
		for(var i=0; i<nb; i++) {
			$(el).options[i].selected = "selected";
		}
	},
	// Cache les elements rubrique, type d'article et mots clefs lors de la saisi ou la modification d'une publicite
	cacheSelectPublicite: function () {
		var optional = $$('.optional');
		var listRubrique = "";
		$each(optional, function(value, id){
			switch(value.getAttribute("for")) {
				case "type_id" :
					$('type_id').style.display = 'none';
					value.style.cursor = 'pointer';
					value.addEvent('click', function(event){
						$('type_id').style.display = 'inline';
						optional[3].style.display = 'none';
						$('listkeyword').style.display = 'none';
						$('keyword').style.display = 'none';
						$('addkw').style.display = 'none';
					})
					break;
				case "keyword" :
					var okeyword = $('keyword');
					okeyword.style.display = 'none';
					value.style.cursor = 'pointer';
					value.addEvent('click', function(event){
						$('type_id').style.display = 'none';
						okeyword.style.display = 'inline';
						optional[3].style.display = 'inline';
						$('listkeyword').style.display = 'inline';
						$('addkw').style.display = 'inline';
					})
					break;
				case "listkeyword" :
					value.style.display = 'none';
					$('listkeyword').style.display = 'none';
					break;
			};
		})
		$('addkw').style.display = 'none';
	},
	
	// Vérifie si le pattern est présent dans une chaine. Si
	checkContent: function(a, pattern, libpattern) {
		var content = a.value;
		var nbchar = content.length;
		if (content[nbchar-1] == pattern) {
			alert("Merci de ne " + libpattern + " aucun espace dans vos mots clefs.");
		}
	},
	
	// Ajoute le mot saisir dans le champ mot clef d'une publicité pour le passer dans le select associé
	inputToSelectKw: function() {
		var nbKw = $('listkeyword').length;
		var value = nbKw;
		$newoption = document.createElement("option");
		$newoption.value = value;
		$newoption.text = $('keyword').value;
		if ($('sep4').value=='') {
			$('sep4').value = $('keyword').value;
		} else {
			$('sep4').value += "," + $('keyword').value;
		}
		$('keyword').value = "";
		
		try {
			$('listkeyword').add($newoption,null); // standards compliant
		} catch(ex) {
			$('listkeyword').add($newoption); // IE only
		}
	},
	
	setEgalize: function() {
		var espaceMenu = new Number($('centre').offsetHeight);
		$('espace-menu').style.height = (espaceMenu-18-21) + "px";
	}, 
	
	MM_findObj: function (n, d) { //v4.0
		var p,i,x;
		if(!d) d=document;
		if((p=n.indexOf("?"))>0&&parent.frames.length) {
			d=parent.frames[n.substring(p+1)].document;
			n=n.substring(0,p);
		}
		if(!(x=d[n])&&d.all) x=d.all[n];
		for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  	if(!x && document.getElementById) x=document.getElementById(n); return x;
	},

	activerLayer: function (couche, boolValue) {
		if (!(layer = MM_findObj(couche))) return;
		if (boolValue==true)
		{
		  if (layer.style.visibility != 'visible')
		    layer.style.visibility = 'visible';
		}
		else
		  layer.style.visibility = 'hidden';
	},

        voirDejaClient: function (type) {
            if(type == 'yes') {
                $('formUtilisateurDejaClient').setStyle('display', 'block');
                $('formUtilisateurNouveau').setStyle('display', 'none');
            } else {
                $('formUtilisateurNouveau').setStyle('display', 'block');
                $('formUtilisateurDejaClient').setStyle('display', 'none');
            }
        },

        showListMagazines: function () {
            if($$('input[name=domaine]:checked').get('value') == 'GP') {
                $('revueFD').setStyle('display', 'none');
                $('revueGP').setStyle('display', 'block');
            } else {
                $('revueFD').setStyle('display', 'block');
                $('revueGP').setStyle('display', 'none');
            }
        },

        validSynchroAccount: function () {
            //Check client number
            var reg = /^.*?(\d{8,10}).*?$/;
            var clientNumber = $('utba_numero_abo').get('value');

            if(clientNumber == '') {
                alert('Veuillez saisir votre numéro de client.');
                return false;
            }

            if(!reg.test(clientNumber)) {
                alert('Votre numéro de client est incorrect.\nUn numéro de client comporte entre 8 et 10 chiffres');
                return false;
            }

            //Check revue selected
            if($$('input[name=domaine]:checked').get('value') == 'GP' && $('revueGP').get('value') == '')
            {
                alert('Veuillez saisir la revue à laquelle vous êtes abonnés.');
                return false;
            } 
            else if($$('input[name=domaine]:checked').get('value') == 'FD' && $('revueFD').get('value') == '')
            {
                alert('Veuillez saisir la revue à laquelle vous êtes abonnés.');
                return false;
            }
            else
            {
                $('formSynchro').style.display='none';
                $('synchronisation').style.display='block';
                return true;
            }
        }
});
