﻿function $sy(id){return document.getElementById(id);}
function $sytag(name){return document.getElementsByTagName(name);}

function trim(str) {
	var	str = str.replace(/^\s\s*/, ''), ws=/\s/, i=str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

var UTF8 = {
	encode: function(s){
		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
			s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
		);
		return s.join("");
    },
    decode: function(s){
		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
			((a = s[i][c](0)) & 0x80) &&
			(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
			o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
		);
		return s.join("");
    }
};

var tabLng='';
function loadLNG(){
	var d=document.mailing_list;
	if(d.lng){
		var lng=(d.lng.value=='fr' || d.lng.value=='uk' || d.lng.value=='de' || d.lng.value=='es')?d.lng.value:'fr';
	}else{
		var lng='fr';
	}	
	if(lng=='fr'){
		tabLng=['Erreur ind&eacute;termin&eacute;e','Erreur de cr&eacute;ation de liste','la liste existe d&eacute;j&agrave;','la cl&eacute; de liaison vide','Erreur de renomage de liste (fichier destination existe d&eacute;j&agrave; ou &eacute;chec au renommage)','Erreur de suppression de liste','Erreur lors de l\'affichage de contenu de liste','Cl&eacute; incorrecte','Suppression d\'une entr&eacute;e de liste','Mail fourni invalide','Erreur de renomage du fichier &eacute;pur&eacute;','Erreur Ouverture des fichiers de travail','Erreur de suppression ancien fichier','Ajout d\'une entr&eacute;e de liste','Param&egrave;tre ID vide','Param&egrave;tre Name (nom de la liste) trop long','Mauvais ID pour la commande','Mauvais NAME pour la commande','Mauvais ID et mauvais NAME pour la commande','Acc&egrave;s non autoris&eacute;','Commande non reconnue, ou param&egrave;tres associ&eacute;s &agrave; une commande erron&eacute;s ou manquant','Erreur inconnue (code: %code_erreur%), merci de bien vouloir nous contacter.',', veuillez r&eacute;essayer plus tard.','Vos informations ont &eacute;t&eacute; ajout&eacute;es avec succ&egrave;s.','L\'adresse email saisie n\'est pas conforme aux standards.'];
	}else if(lng=='es'){
		tabLng=['Error indeterminado', 'Error al crear la lista', 'la lista ya existe', 'no ha elegido contraseña para la lista', 'Error al renombrar la lista (puede que una lista tenga ya este nombre)', 'Error al suprimir la lista', 'Error al visualizar el contenido de la lista', 'Contraseña incorrecta', 'Eliminación de una entrada de la lista', 'La dirreción de e-mail introducida no es valida.', 'Error al renombrar el archivo limpiado', 'Error al abrir archivos de trabajo', 'Error al suprimir el archivo antiguo', 'Añadido de una entrada en la lista', 'El formulario no funciona correctamente (ID vacío)', 'El formulario no funciona correctamente (NAME demasiado largo)', 'El formulario no funciona correctamente (ID incorrecto)', 'El formulario no funciona correctamente (NAME incorrecto)', 'El formulario no funciona correctamente (ID y NAME incorrectos)', 'El formulario no funciona correctamente (Acceso no autorizado)', 'El formulario no funciona correctamente (comando no reconocido, o faltan parámetros o son erróneos)', 'Error desconocido (código: %code_erreur%), contacte con nosotros.', ', intentelo de nuevo más tarde.', 'Sus datos han sido registrados correctamente.', 'La dirreción de e-mail introducida no es valida.'];
	}else if(lng=='de'){
		tabLng=['Erreur ind&eacute;termin&eacute;e','Erreur de cr&eacute;ation de liste','la liste existe d&eacute;j&agrave;','la cl&eacute; de liaison vide','Erreur de renomage de liste (fichier destination existe d&eacute;j&agrave; ou &eacute;chec au renommage)','Erreur de suppression de liste','Erreur lors de l\'affichage de contenu de liste','Cl&eacute; incorrecte','Suppression d\'une entr&eacute;e de liste','Mail fourni invalide','Erreur de renomage du fichier &eacute;pur&eacute;','Erreur Ouverture des fichiers de travail','Erreur de suppression ancien fichier','Ajout d\'une entr&eacute;e de liste','Param&egrave;tre ID vide','Param&egrave;tre Name (nom de la liste) trop long','Mauvais ID pour la commande','Mauvais NAME pour la commande','Mauvais ID et mauvais NAME pour la commande','Acc&egrave;s non autoris&eacute;','Commande non reconnue, ou param&egrave;tres associ&eacute;s &agrave; une commande erron&eacute;s ou manquant','Erreur inconnue (code: %code_erreur%), merci de bien vouloir nous contacter.',', veuillez r&eacute;essayer plus tard.','Vos informations ont &eacute;t&eacute; ajout&eacute;es avec succ&egrave;s.','L\'adresse email saisie n\'est pas conforme aux standards.'];
	}else{
		tabLng=['Unknown error','Error of list creation','the list already exists','the key link is empty','Error in renaming the list (output file already exists or rename process has failed)','Error in deleting the list','Error in displaying the list content','Link key incorrect','Removal of a list entry','Mail filled not valid','Error in rename proccess of the purged file','Error in opening work files','Error in removing old file','Adding a list entry','Empty ID parameter','Name Parameter too long (name of your list)','Bad ID for this command','Bad NAME for this command','Bad ID and bad NAME for this command','Access unauthorized (code: %code_erreur%)','Unknow command, or parameters associated to a command are wrong or missing','Unknown error (code: %code_erreur%), please contact us.',', please try again later.','Your informations have been successfully added.','The filled e-mail address is not complyed to standards.'];
	}
	return lng;
}

var randSeed = 1;

function random(max) {
	randSeed = (randSeed * 129749) % 0x100000000;
	randSeed = (randSeed * 8505)   % 0x100000000;
	randSeed = (randSeed + 12345)  % 0x100000000;
 	return randSeed % max;
}

function randomString(count) {
	var s='';
	for(var i=0; i<count; i++){
		s=s+String.fromCharCode(65+random(26));
	}
	return(s);
}

function getByScript(url,callback,obj,v){
	var h = document.getElementsByTagName('head').item(0);
	var js = document.createElement('script');
	var tryCount = 1;
	if(typeof(v)=="undefined"){v = randomString(5);}
	js.language='javascript';
	js.type='text/javascript';
	js.src=url+((url.indexOf('?') == -1)?'?':'&')+'result='+v+'&BreakIEcache='+Math.round(Math.random()*10000);
	js.onreadystatechange= function(){ // pour IE
		if((this.readyState == 'complete') || (this.readyState == 'loaded')){
			js.onload();
		}
	}
	js.onload = function(){ // pour FF
		if(typeof(eval(v))=='undefined'){
			alert('erreur rpc');
			if(tryCount<3){
				tryCount++;
				h.removeChild(this);
				h.appendChild(this);
				return;
			}
		}else{
			callback(obj,eval(v));
			eval('delete '+v); // libération du résultat 
		}
		h.removeChild(this); // libération du script
	};
	h.appendChild(js);
}

function response(a, r){
	delete a;
	var say='';
	var code_erreur=new RegExp("%code_erreur%", "g");
	switch(r){
		case -1: say=tabLng[0]; //Erreur indéterminée
		case 0: say=tabLng[23]; break; //RAS, tout va bien, traitement effectué avec succès
		case 100: say=tabLng[1]+" : undefined"; break;
		case 110: say=tabLng[1]+" : "+tabLng[2]; break;
		case 111: say=tabLng[1]+" : "+tabLng[2]; break;
		case 112: say=tabLng[1]+" : "+tabLng[2]; break;
		case 113: say=tabLng[1]+" : "+tabLng[2]; break;
		case 114: say=tabLng[1]+" : "+tabLng[2]; break;
		case 115: say=tabLng[1]+" : "+tabLng[2]; break;
		case 116: say=tabLng[1]+" : "+tabLng[2]; break;
		case 117: say=tabLng[1]+" : "+tabLng[2]; break;
		case 118: say=tabLng[1]+" : "+tabLng[2]; break;
		case 119: say=tabLng[1]+" : "+tabLng[2]; break;
		case 101: say=tabLng[1]+" : "+tabLng[3]; break;
		case 111: say=tabLng[1]+" : "+tabLng[3]; break;
		case 121: say=tabLng[1]+" : "+tabLng[3]; break;
		case 131: say=tabLng[1]+" : "+tabLng[3]; break;
		case 141: say=tabLng[1]+" : "+tabLng[3]; break;
		case 151: say=tabLng[1]+" : "+tabLng[3]; break;
		case 161: say=tabLng[1]+" : "+tabLng[3]; break;
		case 171: say=tabLng[1]+" : "+tabLng[3]; break;
		case 181: say=tabLng[1]+" : "+tabLng[3]; break;
		case 191: say=tabLng[1]+" : "+tabLng[3]; break;
		case 200: say=tabLng[4]; break;
		case 300: say=tabLng[5]; break;
		case 400: say=tabLng[6]; break;
		case 410: say=tabLng[6]+" : "+tabLng[7]; break;
		case 500: say=tabLng[8]+" : undefined"; break;
		case 510: say=tabLng[8]+" : "+tabLng[9]; break;
		case 511: say=tabLng[8]+" : "+tabLng[9]; break;
		case 512: say=tabLng[8]+" : "+tabLng[9]; break;
		case 513: say=tabLng[8]+" : "+tabLng[9]; break;
		case 514: say=tabLng[8]+" : "+tabLng[9]; break;
		case 515: say=tabLng[8]+" : "+tabLng[9]; break;
		case 516: say=tabLng[8]+" : "+tabLng[9]; break;
		case 517: say=tabLng[8]+" : "+tabLng[9]; break;
		case 518: say=tabLng[8]+" : "+tabLng[9]; break;
		case 519: say=tabLng[8]+" : "+tabLng[9]; break;
		case 501: say=tabLng[8]+" : "+tabLng[7]; break;
		case 511: say=tabLng[8]+" : "+tabLng[7]; break;
		case 521: say=tabLng[8]+" : "+tabLng[7]; break;
		case 531: say=tabLng[8]+" : "+tabLng[7]; break;
		case 541: say=tabLng[8]+" : "+tabLng[7]; break;
		case 551: say=tabLng[8]+" : "+tabLng[7]; break;
		case 561: say=tabLng[8]+" : "+tabLng[7]; break;
		case 571: say=tabLng[8]+" : "+tabLng[7]; break;
		case 581: say=tabLng[8]+" : "+tabLng[7]; break;
		case 591: say=tabLng[8]+" : "+tabLng[7]; break;
		case 520: say=tabLng[8]+" : "+tabLng[10]; break;
		case 530: say=tabLng[8]+" : "+tabLng[11]; break;
		case 540: say=tabLng[8]+" : "+tabLng[12]; break;
		case 600: say=tabLng[13]+" : "+tabLng[9]; break;
		case 610: say=tabLng[13]+" : "+tabLng[11]; break;
		case 1000: say=tabLng[14]; break;
		case 1001: say=tabLng[15]; break;
		case 1002: say=tabLng[16]; break;
		case 1003: say=tabLng[17]; break;
		case 1004: say=tabLng[18]; break;
		case 6000: say=tabLng[19]; break; //IP D'appel invalide (192.168.10.* 81.255.196.* 192.168.1.* 127.0.0.1)"
		case 6001: say=tabLng[19]; break; //Méthode d'appel non supportée (GET / POST only)"
		case 6002: say=tabLng[20]; break;
		default: say=tabLng[21].replace(code_erreur, r); break;
	}
	var d=document.mailing_list;
	if(d.callback_text){ // On affiche un message perso
		$sy('mailing_list_result').innerHTML=(r==0)?d.callback_text.value:say+tabLng[22];
	}else if(d.callback_url && r==0){ // On redirige
		window.location=d.callback_url.value;
	}else{ // On affiche le message par défaut
		$sy('mailing_list_result').innerHTML=(r==0)?say:say+tabLng[22];
	}
	if(d.first_callback && r==0){ // On supprime tout le formulaire
		for(var i=0; i<$sytag('form').length; i++){
			if($sytag('form')[i].name=='mailing_list'){
				$sytag('form')[i].innerHTML='';
				$sytag('form')[i].parentNode.removeChild($sytag('form')[i]);
			}
		}
		/*for(var i=0; i<$sytag('script').length; i++){
			if($sytag('script')[i].src=='http://www.sarbacane.com/mailing_list.js'){
				$sytag('script')[i].innerHTML='';
				$sytag('script')[i].parentNode.removeChild($sytag('script')[i]);
			}
		}*/
	}
}

function CheckUTF8(s){
	var reg = new RegExp("utf-8", "gi");
	if(document.getElementsByTagName('head')[0].innerHTML.match(reg)){
		return escape(s);
	}else if(s==undefined || (s=='' || s.length==0)){
			return '';
	}else{
		return escape(UTF8.encode(s));
	}
}

function process(){
	var lng=loadLNG();
	var d=document.mailing_list;
	var s=d.send;
	var sendValue=s.value;
	var reg=/^[a-z0-9][a-z0-9._-]*[a-z0-9]@[a-z0-9][a-z0-9.-]*[a-z0-9][.][a-z]{2,5}$/i;
	s.value='Envoi en cours';
	s.disabled=true;
	if(document.mailing_list.email.value.match(reg)==null){
		$sy('mailing_list_result').innerHTML=tabLng[24];
		s.value=sendValue;
		s.disabled=false;
		return false;
	}else{
		var url='http://www.sarbacane.com/admin/mailing_list_protocole.asp?lng='+lng+'&id='+d.id_user.value+'&idlist='+d.list.value; //+CheckUTF8(d.list.value);
		url+='&data='+d.email.value+'|';
		url+=(d.Nom)?CheckUTF8(d.Nom.value)+'|':'|';
		url+=(d.Prenom)?CheckUTF8(d.Prenom.value)+'|':'|';
		if(d.civilite){
			if(d.civilite[0].checked==true){
				url+=CheckUTF8(d.civilite[0].value)+'|';
			}else if(d.civilite[1].checked==true){
				url+=CheckUTF8(d.civilite[1].value)+'|';
			}else if(d.civilite[2].checked==true){
				url+=CheckUTF8(d.civilite[2].value)+'|';
			}	
		}else{
			url+='|';
		}
		url+=(d.naissance)?CheckUTF8(d.naissance2.value)+'-'+CheckUTF8(d.naissance1.value)+'-'+CheckUTF8(d.naissance0.value)+'|':'|';
		url+=(d.Adresse)?CheckUTF8(d.Adresse.value)+'|':'|';
		url+=(d.Cplmtadresse)?CheckUTF8(d.Cplmtadresse.value)+'|':'|';
		url+=(d.Cp)?CheckUTF8(d.Cp.value)+'|':'|';
		url+=(d.Ville)?CheckUTF8(d.Ville.value)+'|':'|';
		url+=(d.Pays)?CheckUTF8(d.Pays.value)+'|':'|';
		url+=(d.Tel)?CheckUTF8(d.Tel.value)+'|':'|';
		url+=(d.Fax)?CheckUTF8(d.Fax.value)+'|':'|';
		url+=(d.Portable)?CheckUTF8(d.Portable.value)+'|':'|';
		url+=(d.Societe)?CheckUTF8(d.Societe.value):'';
		getByScript(url, response, '');
		s.value=sendValue;
		s.disabled=false;
		return false;
	}
}

