/****************************************************************************************************/
/* Ce document appartient à Evildev Corporation - Copyright 2006                                    */
/*                                                                                                  */
/* Nom du fichier: main.js                                                                          */
/* Date de création: 2006/12/11                                                                     */
/* Auteur: [SMN]                                                                                    */
/*                                                                                                  */
/* Objectif:                                                                                        */
/*      - Fichier de script de l'administration de l'application                                    */
/*                                                                                                  */
/****************************************************************************************************/

// --- Ajout d'une entrée à la mailing list --- //
function addMailingList()
{
	f = document.mailing;
	if(f.email.value=='') { displayError(f, f.email, 'on', message.GetValue("message_form_email")); return; }
	else
	{
		if(emailCheck(document.mailing.email)) { f.submit(); }
		//else { displayError(f, f.email, 'on', 'Votre addresse email est incorrecte!'); return; }
	}
}

// --- Ajout d'une entrée à la mailing list --- //
function f_search()
{
	f = document.search;
	if(f.f_text.value.length<4) { displayError(f, f.f_text, 'on', message.GetValue("message_search")); return; }
	else
	{
		f.submit();
	}
}

// --- Affichage des erreurs de formulaires etc. --- //
function displayError(form, control, state, mes)
{
	if(state=='on')
	{
		var str='<table width="100%" height="100%">'+
					'<tr>'+
						'<td align="center" width="100%">'+
							mes+'<br /><br />'+
							'<table>'+
								'<tr>'+
									'<td class="bouton_off_err" onmouseover="this.className=\'bouton_on_err\'; this.style.cursor=\'pointer\'" onmouseout="this.className=\'bouton_off_err\';" onclick="displayError(\''+form.name+'\', \''+control.name+'\', \'off\', \'\');">'+
										 message.GetValue("div_btn_modifier")+
									'</td>'+
								'</tr>'+
							'</table>'+
						'</td>'+
					'</tr>'+
				'</table>';
		
		document.getElementById("error_box").style.display				= "block";
		document.getElementById("error_box").style.top					= "250px";
		document.getElementById("error_box").style.left					= ((window.screen.availWidth-350)/2)+"px";
		
		document.getElementById("error_main").innerHTML					= str;
		document.getElementById("error_header").innerHTML				= message.GetValue("div_header_erreur_saisie");
		
		document.getElementById("error_background").style.display		= "block";
	}
	else
	{
		control = eval('document.'+form+'.'+control);
		control.focus();
		
		document.getElementById("error_box").style.display 				= "none";
		document.getElementById("error_background").style.display		= "none";
	}
}

function displayErrorLoading(form, control, state, mes)
{
	if(state=='on')
	{
		var str='<table width="100%" height="100%">'+
					'<tr>'+
						'<td align="center" width="100%">'+
							mes+'<br /><br />'+
							'<table>'+
								'<tr>'+
									'<td class="bouton_off_err" onmouseover="this.className=\'bouton_on_err\'; this.style.cursor=\'pointer\'" onmouseout="this.className=\'bouton_off_err\';" onclick="displayErrorLoading(\''+form.name+'\', \''+control.name+'\', \'off\', \'\');">'+
										 message.GetValue("div_btn_modifier")+
									'</td>'+
								'</tr>'+
							'</table>'+
						'</td>'+
					'</tr>'+
				'</table>';
		
		document.getElementById("error_box").style.display				= "block";
		document.getElementById("error_box").style.top					= "250px";
		document.getElementById("error_box").style.left					= ((window.screen.availWidth-350)/2)+"px";
		
		document.getElementById("error_main").innerHTML					= str;
		document.getElementById("error_header").innerHTML				= message.GetValue("div_header_erreur_saisie");
		
		document.getElementById("error_background").style.display		= "block";
	}
	else
	{
		location.reload();
	}
	
}

// --- Affichage des erreurs de formulaires etc. --- //
function displayImage(img, state)
{
	if(state=='on')
	{
		var str='<a href="javascript:displayImage(\'\',\'off\');" title="Close"><img src="'+img+'" name="span_zoom" border="0" /></a>';
		
		img_zoom = new Image();
		img_zoom.src = img;
		
		document.getElementById("image_box").style.display				= "block";
		
        //document.getElementById("image_box").style.top					= (((window.screen.availHeight-img_zoom.height)/2)-24)+"px";
		if(img_zoom.height<(window.screen.availHeight-100))
		  document.getElementById("image_box").style.top					= "50px";
        else
          document.getElementById("image_box").style.top					= "0px";
		
		document.getElementById("image_box").style.left					= (((window.screen.availWidth-img_zoom.width)/2)-20)+"px";
		document.getElementById("image_main").innerHTML					= str;
		document.getElementById("image_background").style.display		= "block";
	}
	else
	{
		document.getElementById("image_box").style.display 				= "none";
		document.getElementById("image_background").style.display		= "none";
	}
}



// --- Affichage des erreurs de formulaires etc. --- //
function displayConfirm(state, mes, action)
{
	if(state=='on')
	{
		var str='<table width="100%" height="100%">'+
					'<tr>'+
						'<td align="left" width="100%">'+
							mes+'<br /><br />'+
							'<table align="center">'+
								'<tr>'+
									'<td class="bouton_off_err" onmouseover="this.className=\'bouton_on_err\'; this.style.cursor=\'pointer\'" onmouseout="this.className=\'bouton_off_err\';" onclick="displayConfirm(\'off\', \'\', \''+action.replace(/'/g,"µ")+'\');">'+
										message.GetValue("div_btn_valider")+
									'</td>'+
									'<td style="padding:0 80px 0 0"></td>'+
									'<td class="bouton_off_err" onmouseover="this.className=\'bouton_on_err\'; this.style.cursor=\'pointer\'" onmouseout="this.className=\'bouton_off_err\';" onclick="displayConfirm(\'off\', \'\', \'nok\');">'+
										message.GetValue("div_btn_annuler")+
									'</td>'+
								'</tr>'+
							'</table>'+
						'</td>'+
					'</tr>'+
				'</table>';
		
		document.getElementById("confirm_box").style.display				= "block";
		document.getElementById("confirm_box").style.top					= "250px";
		document.getElementById("confirm_box").style.left					= ((window.screen.availWidth-350)/2)+"px";
		
		document.getElementById("confirm_main").innerHTML					= str;
		document.getElementById("confirm_header").innerHTML					= message.GetValue("div_header_confirm");
		
		document.getElementById("confirm_background").style.display			= "block";
	}
	else
	{
		document.getElementById("confirm_box").style.display 				= "none";
		document.getElementById("confirm_background").style.display			= "none";
		
		if(action!="nok")
		{
			action = action.replace(/µ/g, "'");
			eval(action);
		}
	}
}

// --- Récupération du mot de passe --- //
function getPassword()
{
	if(document.get_password.pseudo.value=='')
	{
		displayError(document.get_password, document.get_password.pseudo, 'on', message.GetValue("message_form_insc_pseudo"));
		return;
	}
	if(document.get_password.email.value=='')
	{
		displayError(document.get_password, document.get_password.email, 'on', message.GetValue("message_form_insc_email_1"));
		return;
	}

	//loading();
	document.get_password.submit();
}


// --- Fonction permettant d'ouvrir un popup --- //
function openWin(url, w, h)
{
	if (typeof(w) == 'undefined') 
		w=550;
	else 
		w=w;
	if (typeof(h) == 'undefined')
		h=400;
	else 
		h=h;
		
	var left	= (screen.width-w)/2;
	var top		= (screen.height-h)/2;
	var param	= 'width='+w+',height='+h+',toolbar=0,location=0,directories=0,menuBar=0,scrollbars=1,resizable=1,status=no,personalbar=no,left='+left+',top=100';
	var win 	= window.open(url, "",param);
}

function OKStrOfPenny(X)
{
	var T, S = new String(Math.round(X*100))
	
	while(S.length<3)
		S = '0' + S
	
	return S.substr(0, T=(S.length-2)) + ',' + S.substr(T, 2)
}

function isNumerique(f, c)
{
	if (isNaN(c.value))
	{
		displayError(f, c, 'on', message.GetValue("message_erreur_num")); 
		c.value=""; 
		return;
	}
}

function convertToInt(control) { if(control.value!="") { control.value = parseInt(control.value, 10); } }

function isTelephoneFax(f, c)
{
	var lettre;
	var masque = "0123456789(). +";
	var i;

	for(i=0; i<c.value.length; i++)
	{
		lettre = c.value.substring(i,i+1);
		if(masque.indexOf(lettre)==-1)
		{
			displayError(f, c, 'on', message.GetValue("message_erreur_tel")); 
			c.value = ""; 
			return;
		}
	}
}

function trim(str)
{
	var tmp = "";
	if(str) tmp = str;
	var i = tmp.length;

	while(i>0 && tmp.charAt(0)==" ")
	{
		tmp	= tmp.substring(1, i);
		i	= tmp.length;
	}
	
	while(i>0 && tmp.charAt(i-1)==" ")
	{
		tmp	= tmp.substring(0, i-1);
		i	= tmp.length;
	}
	return tmp;
}

function emailCheck(f, c)
{
	emailStr=c.value;
	if ((trim(emailStr)=="")) { return true }
	
	var emailPat		= /^(.+)@(.+)$/
	var specialChars	= "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars		= "\[^\\s" + specialChars + "\]"
	var quotedUser		= "(\"[^\"]*\")"
	var ipDomainPat		= /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom			= validChars + '+'
	var word			= "(" + atom + "|" + quotedUser + ")"
	
	//Possibilité d'avoir un nom finissant par un "." :
	var userPat			= new RegExp("^" + word + "(\\." + "(" + word + ")*" + ")*$")
	
	var domainPat		= new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray		= trim(emailStr).match(emailPat)
	
	if (matchArray==null)
	{
		displayError(f, c, 'on', message.GetValue("message_erreur_email")); 
		c.value=""; 
		return false;
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null)
	{
		displayError(f, c, 'on', message.GetValue("message_erreur_email")); 
		c.value=""; 
		return false;
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++) 
		{
			if (IPArray[i]>255)
			{
				displayError(f, c, 'on', message.GetValue("message_erreur_email")); 
				c.value=""; 
				return false;
			}
		}
		return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null)
	{
		displayError(f, c, 'on', message.GetValue("message_erreur_email")); 
		c.value=""; 
		return false;
	}
	
	var atomPat 	= new RegExp(atom,"g");
	var domArr 		= domain.match(atomPat);
	var len 		= domArr.length;
	
	return true;
}

function dateFromJJMMAAAAToAAAAMMJJ(sDate)
{
	var theJour,theMois,theAnnee;
	var theStepA,theStepB;

	theStepA = sDate.indexOf("/");
	theJour  = sDate.substring(0, theStepA);
	theStepA = theStepA+1;
	theStepB = sDate.indexOf("/", theStepA);
	theMois  = sDate.substring(theStepA, theStepB);
	theStepA = theStepB+1;
	theAnnee = sDate.substring(theStepA, sDate.length);
	return theAnnee + theMois + theJour;
}

function compareDate(sDate1, sDate2)
{
	var sDateInv1, sDateInv2

	sDateInv1 = dateFromJJMMAAAAToAAAAMMJJ(sDate1);
	sDateInv2 = dateFromJJMMAAAAToAAAAMMJJ(sDate2);

	if (sDateInv1 < sDateInv2) { return -1; }
	else if (sDateInv1 > sDateInv2) { return 1; }
	else { return 0; }
}

function isDateJJMMAAAA(aJJ,aMM,aAAAA,sDate) 
{
    var longueur = sDate.length;
    if (longueur != 10) 
	{
		alert('Veuillez saisir la date au format JJ/MM/AAAA !');
      	return false;
    } 
	else if (isNaN(aAAAA) || aAAAA < 1900 || aAAAA > 2100) 
	{
		alert("l'ann\u00E9e de la date " + sDate + " doit \u00EAtre comprise entre 1900 et 2100!");
		return false;
	} 
	else if (aMM==1 || aMM==3 || aMM==5 || aMM==7 || aMM==8 || aMM==10 || aMM==12) 
	{
		if (aJJ<1 || aJJ>31) 
		{
			alert("la date " + sDate + " est invalide!");
			return false;
		} 
		else
			return true;
	} 
	else if (aMM==4 || aMM==6 || aMM==9 || aMM==11) 
	{
		if (aJJ<1 || aJJ>30) 
		{
			alert("la date " + sDate + " est invalide!");
			return false;
		} 
		else
			return true;
	} 
	else if (aMM==2) 
	{
	    var nbj =28;
	    if (isBissextile(aAAAA)) nbj=29;

		if (aJJ<1 || aJJ>nbj) 
		{
			alert("la date " + sDate + " est invalide!");
			return false;
		} 
		else
			return true;
	} 
	else 
	{
		alert("la date " + sDate + " est invalide!");
		return false;
	}
}

function isBissextile(annee) 
{
	if (annee % 4 == 0) 
	{
		if ((annee % 100 ==0) && (annee%400!=0)) { return false; } else { return true; }
	} else { return false; }
}

function isDate(sDate) 
{
	if(sDate!="")
	{
		var theStepA,theStepB;
		var theJour,theMois,theAnnee;
		var sDateCopy = sDate;
	
		theStepA = sDate.indexOf("/");
		theJour  = sDate.substring(0, theStepA);
		theStepA = theStepA+1;
		theStepB = sDate.indexOf("/", theStepA);
		theMois  = sDate.substring(theStepA, theStepB);
		theStepA = theStepB+1;
		theAnnee = sDate.substring(theStepA, sDate.length);
	
		return (isDateJJMMAAAA(parseInt(theJour,10), parseInt(theMois,10), parseInt(theAnnee,10), sDateCopy));
	}
}

function htmlEncode(str)
{
	if (str==null)
		return null;
	else
	{	
		str = str.replace(/'/g, "&rsquo;");        	// ' - apostrophe
		str = str.replace(/"/g, "\u0022");       	// " - double-quote
		str = str.replace(/©/g,	"&copy;");			// © - copyright
		str = str.replace(/®/g,	"&reg;");			// ® - registered trademark
		str = str.replace(/£/g, "\u00A3");			// £
		str = str.replace(/À/g,	"&Agrave;");		// À - uppercase A, grave accent
		str = str.replace(/Á/g,	"&Aacute;");		// Á - uppercase A, acute accent
		str = str.replace(/À/g,	"&Agrave;");		// À - uppercase A, grave accent
		str = str.replace(/Á/g,	"&Aacute;");		// Á - uppercase A, acute accent
		str = str.replace(/Â/g,	"&Acirc;");			// Â - uppercase A, circumflex accent
		str = str.replace(/Ã/g,	"&Atilde;");		// Ã - uppercase A, tilde
		str = str.replace(/Ã/g,	"&Auml;");			// Ã - uppercase A, umlaut
		str = str.replace(/Ã/g,	"&Aring;");			// Ã - uppercase A, ring
		str = str.replace(/Æ/g,	"&AElig;");			// Æ - uppercase AE
		str = str.replace(/Ç/g,	"&Ccedil;");		// Ç - uppercase C, cedilla
		str = str.replace(/È/g,	"&Egrave;");		// È - uppercase E, grave accent
		str = str.replace(/É/g,	"&Eacute;");		// É - uppercase E, acute accent
		str = str.replace(/Ê/g,	"&Ecirc;");			// Ê - uppercase E, circumflex accent
		str = str.replace(/Ë/g,	"&Euml;");			// Ë - uppercase E, umlaut
		str = str.replace(/Ì/g,	"&Igrave;");		// Ì - uppercase I, grave accent
		str = str.replace(/Í/g,	"&Iacute;");		// Í - uppercase I, acute accent
		str = str.replace(/Î/g,	"&Icirc;");			// Î - uppercase I, circumflex accent
		str = str.replace(/Ï/g,	"&Iuml;");			// Ï - uppercase I, umlaut
		str = str.replace(/Ð/g,	"&ETH;");			// Ð - uppercase Eth, Icelandic
		str = str.replace(/Ñ/g,	"&Ntilde;");		// Ñ - uppercase N, tilde
		str = str.replace(/Ò/g,	"&Ograve;");		// Ò - uppercase O, grave accent
		str = str.replace(/Ó/g,	"&Oacute;");		// Ó - uppercase O, acute accent
		str = str.replace(/Ô/g,	"&Ocirc;");			// Ô - uppercase O, circumflex accent
		str = str.replace(/Õ/g,	"&Otilde;");		// Õ - uppercase O, tilde
		str = str.replace(/Ö/g,	"&Ouml;");			// Ö - uppercase O, umlaut
		str = str.replace(/Ø/g,	"&Oslash;");		// Ø - uppercase O, slash
		str = str.replace(/Ù/g,	"&Ugrave;");		// Ù - uppercase U, grave accent
		str = str.replace(/Ú/g,	"&Uacute;");		// Ú - uppercase U, acute accent
		str = str.replace(/Û/g,	"&Ucirc;");			// Û - uppercase U, circumflex accent
		str = str.replace(/Ü/g,	"&Uuml;");			// Ü - uppercase U, umlaut
		str = str.replace(/Ý/g,	"&Yacute;");		// Ý - uppercase Y, acute accent
		str = str.replace(/Þ/g,	"&THORN;");			// Þ - uppercase THORN, Icelandic
		str = str.replace(/ß/g,	"&szlig;");			// ß - lowercase sharps, German
		str = str.replace(/à/g,	"&agrave;");		// à - lowercase a, grave accent
		str = str.replace(/á/g,	"&aacute;");		// á - lowercase a, acute accent
		str = str.replace(/â/g,	"&acirc;");			// â - lowercase a, circumflex accent
		str = str.replace(/ã/g,	"&atilde;");		// ã - lowercase a, tilde
		str = str.replace(/ä/g,	"&auml;");			// ä - lowercase a, umlaut
		str = str.replace(/å/g,	"&aring;");			// å - lowercase a, ring
		str = str.replace(/æ/g,	"&aelig;");			// æ - lowercase ae
		str = str.replace(/ç/g,	"&ccedil;");		// ç - lowercase c, cedilla
		str = str.replace(/è/g,	"&egrave;");		// è - lowercase e, grave accent
		str = str.replace(/é/g,	"&eacute;");		// é - lowercase e, acute accent
		str = str.replace(/ê/g,	"&ecirc;");			// ê - lowercase e, circumflex accent
		str = str.replace(/ë/g,	"&euml;");      	// ë - lowercase e, umlaut
		str = str.replace(/ì/g,	"&igrave;");		// ì - lowercase i, grave accent
		str = str.replace(/í/g,	"&iacute;");		// í - lowercase i, acute accent
		str = str.replace(/î/g,	"&icirc;");			// î - lowercase i, circumflex accent
		str = str.replace(/ï/g,	"&iuml;");			// ï - lowercase i, umlaut
		str = str.replace(/ð/g,	"&eth;");			// ð - lowercase eth, Icelandic
		str = str.replace(/ñ/g,	"&ntilde;");		// ñ - lowercase n, tilde
		str = str.replace(/ò/g,	"&ograve;");		// ò - lowercase o, grave accent
		str = str.replace(/ó/g,	"&oacute;");		// ó - lowercase o, acute accent
		str = str.replace(/ô/g,	"&ocirc;");			// ô - lowercase o, circumflex accent
		str = str.replace(/õ/g,	"&otilde;");		// õ - lowercase o, tilde
		str = str.replace(/ö/g,	"&ouml;");			// ö - lowercase o, umlaut
		str = str.replace(/ø/g,	"&oslash;");		// ø - lowercase o, slash
		str = str.replace(/ù/g,	"&ugrave;");		// ù - lowercase u, grave accent
		str = str.replace(/ú/g,	"&uacute;");		// ú - lowercase u, acute accent
		str = str.replace(/û/g,	"&ucirc;");			// û - lowercase u, circumflex accent
		str = str.replace(/ü/g,	"&uuml;");			// ü - lowercase u, umlaut
		str = str.replace(/ý/g,	"&yacute;");		// ý - lowercase y, acute accent
		str = str.replace(/þ/g,	"&thorn;");			// þ - lowercase thorn, Icelandic
		str = str.replace(/ÿ/g,	"&yuml;");			// ÿ - lowercase y, umlaut
		str = str.replace(/€/g,"&euro;");			// ÿ - lowercase y, umlaut
		return str;
	}
}

function nl2br(str) { return str.replace(/\n/g,"<br />"); }

/* Envoi d'un message */
function sendContact(f)
{
	if(f.f_email.value=='')
	{
		displayError(f, f.f_email, 'on', message.GetValue("message_contact_email"));
		return;
	}
	if(f.f_objet.value=='')
	{
		displayError(f, f.f_objet, 'on', message.GetValue("message_contact_objet"));
		return;
	}
	if(f.f_texte.value=='')
	{
		displayError(f, f.f_texte, 'on', message.GetValue("message_contact_message"));
		return;
	}
	f.submit();
	loading();
}
