/*
Images du menu
*/
i1 = new Image;
i1.src = "imgs/blank.gif";
i2 = new Image;
i2.src = "imgs/yingyang.gif";

function Window(mypage, myname, w, h) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

// *****************************************************************************
// *****************************************************************************
//
// Utilisation:
// ------------- 
//
// - Insérer le fichier dans la page HTML comprenant le formulaire
// - Ajouter un attribut valider="type_de_donnée" dans chaque balise à vérifier
// - Ajouter l'attribut obligatoire="vrai" pour rendre ce champ obligatoire
// - Créer un bouton ou un lien qui appelera la méthode 
//		-> valider(nom_du_formulaire_à_valider)
//
// Exemple:
// ---------
//
//  <FORM id="form1" onsubmit="return valider(this)"> 
//		<INPUT valider="email" obligatoire="vrai"> <!-- champs obligatoire -->
//		<INPUT valider="telephone"> <!-- pas obligatoire mais si entré alors doit être un téléphone -->
//		<INPUT type="submit">
//		
//	
//	</FORM>
//
// Expressions autorisées:
// ------------------------
// car : une chaîne non vide
// telephone : 11-45-45-45654, 12 456 45 45 45
// codepostal : 68000, FR-331232, ch-123
// email : s.ros@essaim.univ-mulhouse.fr
// date : 01/01/2000, 01/01/00 ou 01-01-1999
// rga : 123456
// reel : 123,456 123.456, -123,...
// entier : 456
//
// ******************************************************************************
// ******************************************************************************

var clAlerte = "#FF8E8E"; // couleur de fond pour les champs invalides
var clGood = "#BCFCB4"; // couleur de fond pour les champs valides

// expression régulières validées
var reelexp = /^-?\d*[d{1},.\d+]?\d+$/;
var entierexp = /^\d+$/;
var emailexp = /^[\w_][_\w\.\-~]*@[\w_][_\w\.\-~]*\.[\w]{2,}$/i
var carexp = /./;
var codepostalexp = /^\d{3,5}$|^[a-z]{2}\-\d{3,}$/i;
var rgaexp = /^\d{0,5}\d$/;
var telephoneexp = /^[+0-9][0-9\-\s]+\d$/;
var dateexp = /^[0-3]?\d{1}[\/\-][01]\d{1}[\/\-]\d{4}$/;

function isValid(pattern, str) {
	return pattern.test(str);
}

function replaceCommas(str){
	return str.replace(/\./,",");
}

////////////////////////////////////////////////////////////////////////////////
function doValid(objet){
	objet.style.backgroundColor = clGood;
}

////////////////////////////////////////////////////////////////////////////////
function doUnvalid(objet){
	objet.style.backgroundColor = clAlerte;
}

////////////////////////////////////////////////////////////////////////////////
function validerexp(regexp,objet,vOk,obligatoire){

  valide = isValid(regexp,objet.value);
	vide = objet.value=="";
	
	if ((obligatoire && valide && !vide) || (!obligatoire && (valide || vide)) )
	{
		doValid(objet);
		return vOk;
	}
	else
	{	
		doUnvalid(objet);
		return false;
	}
}

////////////////////////////////////////////////////////////////////////////////
function ValideFormulaire(unFormulaire)
{
	var obligatoire;
	var ok = true;

	for(i=0;i<unFormulaire.elements.length;i++)
	{	
		if ((!unFormulaire.elements(i).disabled) && (unFormulaire.elements(i).valider!="undefined"))
		{ // à ce niveau, une vérification de contenu a été demandée
		
			obligatoire = unFormulaire.elements(i).obligatoire=="vrai"			
			switch(unFormulaire.elements(i).valider)
			{	
				case "car" : ok = validerexp(carexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "telephone" : ok = validerexp(telephoneexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "codepostal" : ok = validerexp(codepostalexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "email" : ok = validerexp(emailexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "date" :  unFormulaire.elements(i).value = unFormulaire.elements(i).value.replace(/\-/,"/"); ok = validerexp(dateexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "rga" : ok = validerexp(rgaexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "reel" : unFormulaire.elements(i).value=replaceCommas(unFormulaire.elements(i).value);ok = validerexp(reelexp,unFormulaire.elements(i),ok,obligatoire); break;
				case "entier" : ok = validerexp(entierexp,unFormulaire.elements(i),ok,obligatoire); break;
			}
		}
	}
	return ok;
}

////////////////////////////////////////////////////////////////////////////////
function valider(leFormulaire){
	right = true;
	if (ValideFormulaire(leFormulaire))
		//leFormulaire.submit();
		right=true;
	else
	{
		if(!message)
		{
			var message = "Informations manquantes ou erronées";
		}
		alert(message);
		right=false;		
	}	
	
	return right;
}


function ChangeMessage(message,champ)
  {
  if(document.getElementById)
    document.getElementById(champ).innerHTML = message;
  }
  
  // Activation & désactivation
function Activ(nom_box,nom_lien,nom_lien2)
{
  if(nom_box.checked=='1')
  {
    nom_lien.disabled=''
    nom_lien.value='http://'
    nom_lien2.disabled=''
  }
  else
  {
    nom_lien.disabled='true'
    nom_lien.value='--vide--'
    nom_lien2.disabled='true'
  }
}

// Activation & désactivation pour modif 2
function Activ2(nom_box,nom_lien,nom_lien2)
{
  if(nom_box.checked=='1')
  {
    nom_lien.disabled=''
    nom_lien2.disabled=''
  }
  else
  {
    nom_lien.disabled='true'
    nom_lien.value='--vide--'
    nom_lien2.disabled='true'
  }
}

// Activation & désactivation pour modif 3
function Activ3(nom_box,nom_lien)
{
  if(nom_box.value=='url')
  {
    nom_lien.disabled=''
	nom_lien.value='http://'
  }
  else
  {
    nom_lien.disabled='true'
    nom_lien.value='--vide--'
  }
}

// Mise en forme
function storeCaret(text)
{ // voided
}

function AddText(startTag,defaultText,endTag,nom_du_textarea,nom_du_form)
{
 if(startTag == '[color=')
 {
   if (nom_du_textarea.createTextRange)
   {
     var text;
     nom_du_textarea.focus(nom_du_textarea.caretPos);
     nom_du_textarea.caretPos = document.selection.createRange().duplicate();

     if(nom_du_textarea.caretPos.text.length>0)
     {
       nom_du_textarea.caretPos.text = startTag + nom_du_form.idcolor.value + ']' + nom_du_textarea.caretPos.text + endTag;
     }
     else
     {
       nom_du_textarea.caretPos.text = startTag + nom_du_form.idcolor.value + ']' + defaultText+endTag;
     }
   }
   else nom_du_textarea.value += startTag + nom_du_form.idcolor.value + ']' + defaultText+endTag;
 }
 else
 {
   if (nom_du_textarea.createTextRange)
   {
     var text;
     nom_du_textarea.focus(nom_du_textarea.caretPos);
     nom_du_textarea.caretPos = document.selection.createRange().duplicate();

     if(nom_du_textarea.caretPos.text.length>0)
     {
       nom_du_textarea.caretPos.text = startTag + nom_du_textarea.caretPos.text + endTag;
     }
     else
     {
       nom_du_textarea.caretPos.text = startTag + defaultText + endTag;
     }
   }
   else nom_du_textarea.value += startTag + defaultText + endTag;
 }
}


// Mise en forme url source
function ActivUrl(champ1,champ2)
{
  if(champ1.value != '')
  {
  	champ2.disabled = ''
      champ2.value = 'http://'
  }
  else
  {
  	champ2.disabled = 'true'
  	champ2.value = '--vide--'
  }
}


//  convertion decimal ver hexa
function Hexa(Dec){
  var nb = Dec.toString(16)
  if (nb.length < 2) {nb = "0" + nb}
  return(nb)
}
function GradientPart(dr, dg, db, fr, fg, fb, Step, num) {      
  if(!num)
  num = '';
  cr=dr;cg=dg;cb=db
  //  Calcul du pas par couleur
  sr=((fr-dr)/Step)  // rouge
  sg=((fg-dg)/Step)  // vert
  sb=((fb-db)/Step)  // bleu
  var Result = ''
    for (var x = 0; x <= Step; x++) {
    var cmd = " onclick=\"ColorCode" +num+ ".value=this.bgColor;IndColor"+num+".style.backgroundColor=this.bgColor;\" onmouseover=\"ColorShow"+num+".style.backgroundColor=this.bgColor;ChangeMessage('Sélection couleur','ejs_texte"+num+"');\" onMouseOut=\"ChangeMessage('---','ejs_texte"+num+"')\""
    Result += "<TD CLASS=ColorCell BGCOLOR=#" + Hexa(Math.floor(cr)) + Hexa(Math.floor(cg)) + Hexa(Math.floor(cb)) + cmd + "></TD>"
    cr += sr; cg += sg; cb += sb
    }
  return(Result)
}
function WriteRow(a,i,num){
  document.write("<TR>")
  document.write(GradientPart(a,i,i, a,a,i, StepH,num))
  document.write(GradientPart(a,a,i ,i,a,i, StepH,num))
  document.write(GradientPart(i,a,i, i,a,a, StepH,num))
  document.write(GradientPart(i,a,a, i,i,a, StepH,num))
  document.write(GradientPart(i,i,a, a,i,a, StepH,num))
  document.write(GradientPart(a,i,a, a,i,i, StepH,num))
  document.write("</TR>")
}

// Texte au passage de la souris
function ChangeMessage(message,champ)
{
  if(document.getElementById)
  document.getElementById(champ).innerHTML = message;
}

// Demande pour URL
function PromptUrl(question,defaut,champ,nom_du_form)
{
  var rep = prompt(question,defaut)
  if((rep == '') || (rep == 'http://'))
  {
    alert('Vous n\'avez pas saisi d\'url !');
  }
  else if(rep != null)
  {
    if (champ.createTextRange)
    {
      var text;
      champ.focus(champ.caretPos);
      champ.caretPos = document.selection.createRange().duplicate();

      if(champ.caretPos.text.length>0)
      {
        champ.caretPos.text = '[url]' + rep + '[/url]' + '[lien]' + champ.caretPos.text + '[/lien]';
      }
      else
      {
        champ.caretPos.text = '[url]' + rep + '[/url]' + '[lien]' + 'Lien' + '[/lien]';
      }
    }
    else champ.value += '[url]' + rep + '[/url]' + '[lien]' + 'Lien' + '[/lien]';
  }
}
