
// ce script gere l'ouverture, la fermeture et le contenu du panneau


	function showaction(url) {
		document.getElementById('page_action_iframe').contentWindow.document.body.innerHTML='Chargement en cours...';
		document.getElementById("page_action").style.visibility = "visible";

// ici, l'iframe prend tout la place disponible, mais il est aussi pssible de definir une largeur et une hauteur finie
		document.getElementById("page_action_iframe").style.width = "100%";
		document.getElementById("page_action_iframe").style.height = "100%";

		frames['page_action_iframe'].location.href= url ;

	}
	
	function hideaction() {
		document.getElementById("page_action").style.visibility = "hidden";
		document.getElementById("page_action_iframe").style.width = "1px";
		document.getElementById("page_action_iframe").style.height = "1px";
	}

function afficheVignette(cheminVignette,cheminMaxi)
	{
	document.write('<A HREF="javascript:afficheMaxi(\''+cheminMaxi+'\')"><IMG SRC="'+cheminVignette+'" HSPACE=0 VSPACE=0 BORDER=0 ALT="cliquez ici pour voir en grand"></A>');
	}
function afficheMaxi(chemin)
	{
	i1 = new Image;
	i1.src = chemin;
	html = '<HTML><HEAD><TITLE>Image</TITLE></HEAD><BODY LEFTMARGIN=0 MARGINWIDTH=0 TOPMARGIN=0 MARGINHEIGHT=0><CENTER><IMG SRC="'+chemin+'" BORDER=0 NAME=imageTest onLoad="window.resizeTo(document.imageTest.width,document.imageTest.height)"></CENTER></BODY></HTML>';
	popupImage = window.open('','_blank','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=1');
	popupImage.document.open();
	popupImage.document.write(html);
	popupImage.document.close()
	};


////////////////////////////////////////////
// VALIDATION DES CHAMPS DE LA PAGE DEVIS //
////////////////////////////////////////////

function validation (){ 

var lacivilite = document.formdevis.civilite.value; 
     if (lacivilite == "") // Si le champ nom est vide 
      { 
        ecrire0="- Le champ *Civilité* doit être rempli"; // Dans l'alert on note 
      } 
      else // sinon 
      { 
      ecrire0=" "; // à sa place pour éviter le vide 
      } 
  

var lenom = document.formdevis.nom.value; 
     if (lenom == "") // Si le champ nom est vide 
      { 
        ecrire1="- Le champ *Nom* doit être rempli"; // Dans l'alert on note 
      } 
      else // sinon 
      { 
      ecrire1=" "; // à sa place pour éviter le vide 
      } 
  

var email = document.formdevis.email.value;
var verif = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/ 
var verif2 = /^[^@]+@(([w-]+.){1,4}[a-zA-Z]{2,4}|(([01]?d?d|2[0-4]d|25[0-5]).){3}([01]?d?d|2[0-4]d|25[0-5]))$/
var verif3 = /^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
    if (verif3.exec(email) == null)
/*    if (email.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1) */
    {
    var mauvaischamp="ok";
    }
    else
    {
    var bonchamp="ok";
    }

if (bonchamp != "ok")
    { 
    ecrire2="- Saisir une *Adresse Mail* correcte"; // Dans l'alert on note 
    } 
    else // sinon 
    { 
    ecrire2=" "; // à sa place pour éviter le vide 
    } 

var capacite=document.formdevis.commentaire.value.length; 
      if (capacite>1500) //Si le nombre de caractère autorisé est dépassé (ici 1500) 
      { 
      ecrire3="- Dépassement non autorisé de limite de 1500 caractères car vous avez tapé:"+capacite+" caractères"; 
      } 
      else //sinon 
      { 
      ecrire3=" ";  
      } 
       
      if (capacite==0) //Si le champ message est vide (nombre de caractère 0) 
      { 
      ecrire4="- Le champ *Problème(s) Posé(s)* ne doit pas rester vide"; // Dans l'alert on note 
      } 
      else //sinon 
      { 
       ecrire4=" "; // à sa place pour éviter le vide 
      } 
       
       /* Il est très important de souligner que vous devez écrire la même chose après les opérateurs que vous avez précédemment fait, par xemple si vous avez écrit pour le champ nom: 
ecrire1=""; dans ce cas vous écrivez pour ce-que suit: if (ecrire1!="" || etc.... alors imaginez si la faute est située enfin d'un formulaire composé de 10 champs ou plus, cela signifie que vous aurez un alert long plein de vide et qui pas vraiment joli*/ 
          
     if (ecrire0!=" " || ecrire1!=" " || ecrire2!=" " || ecrire3!=" " || ecrire4!=" ") // Si un seul cahmp est mal rempli
     { 
  // Je vous conseil aussi de ne pas sauter plus de ligne et juste aller à la ligne, c'est à dire ne pas mettre dans l'alert suivant \n\n ou plus mais juste \n comme mon éxemple. 
  
alert ("Veuillez corriger les erreurs de saisie suivantes: \n\n"+ecrire0+"\n"+ecrire1+"\n"+ecrire2+"\n"+ecrire3+"\n"+ecrire4) ;
        return false; 
    } 
     
    else{ // Si le formulaire est bien complété 
    return true;
/* on appele la fonction qui ouvrira une nouvelle fenêtre de confirmation de reception des données */ 
        } 
} 




//////////////////////////////////////////////////////
// VALIDATION DES CHAMPS DE LA PAGE RENSEIGNEMENTS //
////////////////////////////////////////////////////

function validationrenseignements (){ 

var lacivilite = document.formrenseignements.civilite.value; 
     if (lacivilite == "") // Si le champ nom est vide 
      { 
        ecrire0="- Le champ *Civilité* doit être rempli"; // Dans l'alert on note 
      } 
      else // sinon 
      { 
      ecrire0=" "; // à sa place pour éviter le vide 
      } 
  

var lenom = document.formrenseignements.nom.value; 
     if (lenom == "") // Si le champ nom est vide 
      { 
        ecrire1="- Le champ *Nom* doit être rempli"; // Dans l'alert on note 
      } 
      else // sinon 
      { 
      ecrire1=" "; // à sa place pour éviter le vide 
      } 
  

var email = document.formrenseignements.email.value;
var verif = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/ 
var verif2 = /^[^@]+@(([w-]+.){1,4}[a-zA-Z]{2,4}|(([01]?d?d|2[0-4]d|25[0-5]).){3}([01]?d?d|2[0-4]d|25[0-5]))$/
var verif3 = /^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
    if (verif3.exec(email) == null)
/*    if (email.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1) */
    {
    var mauvaischamp="ok";
    }
    else
    {
    var bonchamp="ok";
    }

if (bonchamp != "ok")
    { 
    ecrire2="- Saisir une *Adresse Mail* correcte"; // Dans l'alert on note 
    } 
    else // sinon 
    { 
    ecrire2=" "; // à sa place pour éviter le vide 
    } 

var capacite=document.formrenseignements.commentaire.value.length; 
      if (capacite>1500) //Si le nombre de caractère autorisé est dépassé (ici 1500) 
      { 
      ecrire3="- Dépassement non autorisé de limite de 1500 caractères car vous avez tapé:"+capacite+" caractères"; 
      } 
      else //sinon 
      { 
      ecrire3=" ";  
      } 
       
      if (capacite==0) //Si le champ message est vide (nombre de caractère 0) 
      { 
      ecrire4="- Le champ *Renseignements Souhaités* ne doit pas rester vide"; // Dans l'alert on note 
      } 
      else //sinon 
      { 
       ecrire4=" "; // à sa place pour éviter le vide 
      } 
       
       /* Il est très important de souligner que vous devez écrire la même chose après les opérateurs que vous avez précédemment fait, par xemple si vous avez écrit pour le champ nom: 
ecrire1=""; dans ce cas vous écrivez pour ce-que suit: if (ecrire1!="" || etc.... alors imaginez si la faute est située enfin d'un formulaire composé de 10 champs ou plus, cela signifie que vous aurez un alert long plein de vide et qui pas vraiment joli*/ 
          
     if (ecrire0!=" " || ecrire1!=" " || ecrire2!=" " || ecrire3!=" " || ecrire4!=" ") // Si un seul cahmp est mal rempli
     { 
  // Je vous conseil aussi de ne pas sauter plus de ligne et juste aller à la ligne, c'est à dire ne pas mettre dans l'alert suivant \n\n ou plus mais juste \n comme mon éxemple. 
  
alert ("Veuillez corriger les erreurs de saisie suivantes: \n\n"+ecrire0+"\n"+ecrire1+"\n"+ecrire2+"\n"+ecrire3+"\n"+ecrire4) ;
        return false; 
    } 
     
    else{ // Si le formulaire est bien complété 
    return true;
/* on appele la fonction qui ouvrira une nouvelle fenêtre de confirmation de reception des données */ 
        } 
} 



/* //////////////////////////////////////////////////////////////////////// */
/* //                                                                    // */
/* //                CODE POUR LES CARTES DE VISITE                      // */
/* //                                                                    // */
/* //////////////////////////////////////////////////////////////////////// */

//-------------------------------------------------------------
//  Nom Document : GFBULLE.JS
//  Auteur       : G.Ferraz
//  Objet        : Info Bulle...
//  Création     : 01.12.2003
//-------------------------------------------------------------
//  Mise à Jour  : 29.05.2006
//  Objet        : Compatibilité IE6 et DOCTYPE
//  -----------------------------------------------------------
//  Mise à Jour  : 21.06.2006
//  Objet        : Prise en compte des <SELECT>
//  -----------------------------------------------------------
//  Mise à Jour  : 15.09.2006
//  Objet        : Amélioration et modif suite à commentaires
//  -----------------------------------------------------------
//  Mise à Jour  : 10.11.2006
//  Objet        : Correction Bug sous FF si document <DIV style="float...">
//  -----------------------------------------------------------
var DOM = (document.getElementById ? true : false);
var IE  = (document.all && !DOM ? true : false);
var NAV_OK   = ( DOM || IE );
var NETSCAPE = ( navigator.appName == 'Netscape');
var EXPLORER = ( navigator.appName == 'Microsoft Internet Explorer');
var OPERA    = ( window.opera ? true : false);
var Mouse_X;          // Position X en Cours de la Mouse
var Mouse_Y;          // Position Y en Cours de la Mouse
var Decal_X  = -10;   // Décalage X entre Pointeur Mouse et Bulle
var Decal_Y  = -10;   // Décalage Y entre Pointeur Mouse et Bulle
var bBULLE   = false; // Flag Affichage de la Bulle
// Flag pour présence Select sous IE
var bSELECT  = ( navigator.appName =='Microsoft Internet Explorer') && !OPERA;

//-- Pour Test mode Cadre
var ZObjet = new RECT();   // Zone pour MouseMove
var ZBulle = new RECT();
var bCADRE = false;        // Flag Affichage du Cadre
var bINIT  = false;
var Fenetre = new RECT();
//=========================
// Définition pour le Cadre
//=========================
function RECT(){
  this.Left   =0;
  this.Top    =0;
  this.Right  =0;
  this.Bottom =0;
  this.InitRECT = RECT_Set; 
  this.PtInRECT = RECT_PtIn; 
}
//-------------------------------------------
function RECT_Set( left_, top_, larg_, haut_){
  with( this){
    Left   = ( left_ ? left_ : -1);
    Top    = ( top_  ? top_  : -1);
    Right  = Left + ( larg_ ? (larg_ -1): 0);
    Bottom = Top  + ( haut_ ? (haut_ -1): 0);
  }
}
//-------------------------
function RECT_PtIn( x_, y_){
  with( this){
    return(( x_ > Left) && ( x_ < Right) && ( y_ > Top ) && ( y_ < Bottom));
    if( x_ < Left || x_ > Right)  return( false);
    if( y_ < Top  || y_ > Bottom) return( false);
    return( true);
  }
}
//---------------------
function GetObjet(div_){
  if( DOM) return document.getElementById(div_);
  if( IE)  return document.all[div_];
  return( null);
}
//-----------------------------
function ObjWrite( div_, html_){
  var Obj = GetObjet( div_);
  if( Obj)
    Obj.innerHTML = html_;
}
//-- 10.11.2006 ----------------------------
// correction bug sur <DIV style="float...">
//------------------------------------------
function Get_DimFenetre(){
  var L_Doc;
  var H_Doc;
  var DocRef;
  
  with( Fenetre){
    if( window.innerWidth){
      with( window){
        Left   = pageXOffset;
        Top    = pageYOffset;
        Right  = innerWidth;
        Bottom = innerHeight;
        //-- Modif du 10.11.2006
        L_Doc = document.body.clientWidth;
        H_Doc = document.body.clientHeight;
        //-- fin modif.
        if( Right  > L_Doc) Right  = L_Doc;
        if( Bottom > H_Doc) Bottom = H_Doc;
      }
    }
    else{ // Cas Explorer à part
      if( document.documentElement && document.documentElement.clientWidth)
        DocRef = document.documentElement;
      else
        DocRef = document.body;

      with( DocRef){
        Left   = scrollLeft;
        Top    = scrollTop;
        Right  = clientWidth;
        Bottom = clientHeight;
      }
    }
    //-- limite Maxi Fenêtre Affichage
    Right  += Left;
    Bottom += Top;
  }
}
//------------------------------------
function ObjShowAll( div_, x_, y_, z_){
  var B_Obj = GetObjet( div_);
  var F_Obj = GetObjet( 'F' +div_);
  var MaxX, MaxY;
  var Haut, Larg;
  var SavY = y_;

  if( B_Obj){
    //-- Récup. dimension du DIV
    if( NETSCAPE){
      Larg = B_Obj.offsetWidth;
      Haut = B_Obj.offsetHeight;
    }
    else{
      Larg = B_Obj.scrollWidth;
      Haut = B_Obj.scrollHeight;
    }
    with( Fenetre){
      //-- Réajuste dimension fenêtre
      MaxX = Right  - Larg;
      MaxY = Bottom - Haut;

      //-- Application Bornage
      if( x_ > MaxX) x_ = MaxX;
      if( x_ < Left) x_ = Left;
      if( y_ > MaxY) y_ = MaxY;
      if( y_ < Top)  y_ = Top;
    }
    //-- si en bas On réajuste
    //-- pour que la bulle ne prenne pas le focus
    if( y_== MaxY){
      var DeltaY = MaxY -SavY;
      y_ = MaxY - DeltaY -Haut -2*Decal_Y;
    }
    //-- On place la Bulle
    if( bSELECT){//-- Ajout pour SELECT sous IE
      with(F_Obj.style){
        left       = x_ +"px";
        top        = y_ +"px";
        zIndex     = z_-1;
        visibility = "visible";
      }
    }
    with(B_Obj.style){
      left       = x_ +"px";
      top        = y_ +"px";
      zIndex     = z_;
      visibility = "visible";
    }
    //-- Affectation Zone du Rectangle
    ZBulle.InitRECT( x_, y_, Larg, Haut);
  }
}
//-- 15.09.2006 ------------------------
// Ajout Fonction Add_Event
//--------------------------------------
function Add_Event( obj_, event_, func_, mode_){
  if( obj_.addEventListener)
    obj_.addEventListener( event_, func_, mode_? mode_:false);
  else
    obj_.attachEvent( 'on'+event_, func_);
}
//-- 15.09.2006 ------------------------
// Utilisation de Add_Event
//--------------------------------------
function Init_Bulle(){
  //-- Pour les SELECT on supprime l'événement hérite
  var Obj = document.body.getElementsByTagName('SELECT');
  if( Obj && Obj.length){
    for(var i=0; i < Obj.length; i++){
      if( Obj[i].size == 1){
        for(var k=0; k < Obj[i].options.length; k++){
          Add_Event( Obj[i].options[k], 'mousemove', BulleHide);
        }
      }
      Add_Event( Obj[i], 'mousedown', BulleHide);
      Add_Event( Obj[i], 'scroll', BulleHide);
    }
  }
  else 
    bSELECT = false; // Pas de SELECT dans le document
  bINIT =true;
}
////////////////////////////
// mode Cadre Indépendant //
////////////////////////////
//------------------------
function CadreWrite( txt_){
  var Html;
  var B_Obj = GetObjet( 'Bulle');
  var F_Obj = GetObjet( 'FBulle');
  if( !bINIT) Init_Bulle();
  if( B_Obj){
    //-- Récup dimension d'affichage
    Get_DimFenetre();
    Decal_X = -5;  // Decalage dans de la Bulle
    Decal_Y = -5;
    Html  = "<TABLE BORDER='1' BORDERCOLOR='#808080' CELLSPACING=0 CELLPADDING=2 BGCOLOR='#C0C0C0'>";
    Html += "<TR><TD class='Bulle' NOWRAP>";
    Html += txt_;
    Html += "</TD></TR></TABLE>";
    B_Obj.innerHTML = Html;

    if( bSELECT){ //-- Ajout pour SELECT sous IE
      with(F_Obj.style){
        height = B_Obj.offsetHeight;
        width  = B_Obj.offsetWidth;
        left   = B_Obj.offsetLeft;
        top    = B_Obj.offsetTop;
      }
    }
    //-- On affiche le résultat
    ObjShowAll('Bulle', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
    bCADRE= true;
    return( true);
  }
  return(false);
}
////////////////////////////
// mode Bulle Indépendant //
////////////////////////////
//-- 15.09.2006 ------------------------
// Ajout paramètre x_ et y_
//--------------------------------------
function BulleWrite( txt_, x_, y_){
  var B_Obj = GetObjet( 'Bulle');
  var F_Obj = GetObjet( 'FBulle');
  var Html;
  if( !bINIT) Init_Bulle();
  if( B_Obj){
    //-- Récup dimension d'affichage
    Get_DimFenetre();
    // Decalage hors de la Bulle
    Decal_X =( x_ ? x_: 5);//    Decal_X = 5 par défaut
    Decal_Y =( y_ ? y_: 5);//    Decal_Y = 5 par défaut
    //-- Ecriture de la Bulle 
    Html  = "<TABLE BORDER=0 CELLSPACING=0><TR><TD BGCOLOR='#0000c0'>";
    Html += "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH='100%' BGCOLOR='#FFFFE8'>";
    Html += "<TR><TD class='Bulle' NOWRAP>";
    Html += txt_;
    Html += "</TD></TR></TABLE></TD></TR></TABLE>";
    B_Obj.innerHTML = Html;
    //-- Ajout pour SELECT sous IE
    if( bSELECT){
      with(F_Obj.style){
        height = B_Obj.offsetHeight;
        width  = B_Obj.offsetWidth;
        left   = B_Obj.offsetLeft;
        top    = B_Obj.offsetTop;
      }
    }
    //-----------------------------------------//
    // IMPORTANT on n'affiche pas la Bulle     //
    // l'événement MouseOver va avec MouseMove //
    //-----------------------------------------//
    // ObjShowAll('Bulle', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
    bBULLE= true;
    return( true);
  }
 return(false);
}
//------------------
function BulleHide(){
  var B_Obj = GetObjet( 'Bulle');
  var F_Obj = GetObjet( 'FBulle');

  if( bSELECT){ //-- Ajout pour SELECT sous IE
    F_Obj.style.height = 0 +"px";
  }
  with(B_Obj){
    innerHTML        = "&nbsp;"
    style.left       = -1000 +"px";
    style.top        = -1000 +"px";
    style.zIndex     = 0;
    style.visibility = "hidden";
  }
  //-- Pose les Flags
  bCADRE = false;
  bBULLE = false;
  return(true);
}
//--------------------
function WhereMouse(e){
  var DocRef;
  var Obj  = null;
  var bRECT= true;
  //-- On traque les hybrides
  if( e && e.target){
    Mouse_X = e.pageX;
    Mouse_Y = e.pageY;
    Obj     = e.target;
    //-- Spécifique FireFox
    if( Obj.boxObject){
      with( Obj){
        //-- La Zone de prise en compte
        ZObjet.InitRECT( boxObject.x, boxObject.y, boxObject.width, boxObject.height);
      }
      //-- Barre de défilement et autre sous FireFox
      Obj = e.originalTarget;
      if( Obj)
        if( Obj.prefix =="xul"){
          BulleHide();
          return( true);
        }
      //-- Test pour SELECT sous FireFox
      bRECT = ZObjet.PtInRECT( Mouse_X, Mouse_Y);
    }
  }//-- Endif NETSCAPE
  else{
    if( document.documentElement && document.documentElement.clientWidth)
      DocRef = document.documentElement;
    else
      DocRef = document.body;

    Mouse_X = event.clientX +DocRef.scrollLeft;
    Mouse_Y = event.clientY +DocRef.scrollTop;
  }

  if( bBULLE)
    if( bRECT)
      ObjShowAll('Bulle', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);

  if( bCADRE)// on ne move pas on test juste si dans Rect
    if( !ZBulle.PtInRECT( Mouse_X, Mouse_Y))
      BulleHide();

  return( true);
}
//== INITIALISATION ==================================
//-- 15.09.2006 ------------------------
// Ajout Fonction Add_Event
// Permet de faire autre chose...
//--------------------------------------
//document.onmousemove = WhereMouse;
Add_Event( document, 'mousemove', WhereMouse);

//-- Création STYLE Bulle et DIV----------------------
var Html;
  //-- On met du style pour la bulle
  Html  = '<STYLE TYPE="text/css">';
  Html += '.Bulle{cursor:default;color:#000000;font-size:13px;font-family:Verdana;}';
  Html += '</STYLE>';
  document.write( Html);
  //-- Création du DIV Bulle
  Html ='<div id="Bulle" style="position:absolute; left:auto; top:auto; width:auto; height:auto; z-index:0; visibility:hidden"></div>';
  if( bSELECT) //-- Ajout pour SELECT sous IE
    Html +='<iframe id="FBulle" style="position:absolute;visibility:hidden;border:0px;" frameborder="0" scrolling="no">&nbsp;</iframe>';
  document.write( Html);
//-- EOF ------------------------------------------------------
