/* --------- REGLAGES --------- */

// texte ou image a afficher pendant le chargement d'une image
var LoadingText = '<strong>Chargement en cours...</strong>';

// en ms, duree du fading
var Fading = false; // true ou false
var FadeDelay = 600;

// largeure de la bordures encadrant le contenu a afficher
var BorderWidth = 10;

/* -------- TRAITEMENT -------- */

function OverlayAdjust(){
         // on recupere tout les div concernant l'overlay
         var Overlay = document.getElementById('overlay');
         var OverlayLoading = document.getElementById('overlay_loading');
         var OverlaySupportContent = document.getElementById('overlay_support_content');
         var OverlayContent = document.getElementById('overlay_content');

         // TODO : patcher selon browser / doctype
         // on recupere des largeures / hauteur du document
         var RealScrollTop = document.documentElement.scrollTop;
         var RealScrollLeft = document.documentElement.scrollLeft;
         var RealClientWidth = document.documentElement.clientWidth;
         var RealClientHeight = document.documentElement.clientHeight;
         var RealBodyWidth = document.documentElement.scrollWidth;
         var RealBodyHeight = document.documentElement.scrollHeight;

         // on recupere la largeur / hauteur du overlay_content et du overlay_loading
         OverlayContentWidth = OverlayContent.offsetWidth;
         OverlayContentHeight = OverlayContent.offsetHeight;
         OverlayLoadingWidth = OverlayLoading.offsetWidth;
         OverlayLoadingHeight = OverlayLoading.offsetHeight;

         // on regle overlay_content_support de maniere a ce qu'il soit de la meme taille que le contenu + la marge
         OverlaySupportContent.style.width = OverlayContentWidth + (BorderWidth * 2) + 'px';
         OverlaySupportContent.style.height = OverlayContentHeight + BorderWidth + 'px';

         // #### OVERLAY_LOADING
         // si overlay_loading est moins large que la zone affichable par le client,
         // alors on le centre horizontalement
         if(OverlayLoadingWidth < RealClientWidth){
            var OverlayLoadingLeft = (RealClientWidth - OverlayLoadingWidth) / 2 + RealScrollLeft;
         }else{
               var OverlayLoadingLeft = RealScrollLeft;
         }
         // si overlay_loading est moins haut que la zone affichable par le client,
         // alors on le centre verticalement
         if(OverlayLoadingHeight < RealClientHeight){
            var OverlayLoadingTop = (RealClientHeight - OverlayLoadingHeight) / 2 + RealScrollTop;
         }else{
               var OverlayLoadingTop = RealScrollTop;
         }

         // #### OVERLAY_CONTENT
         // si overlay_content (+ la bordure x 2) est moins large que la zone affichable par le client,
         // alors on le centre horizontalement
         if((OverlayContentWidth + BorderWidth * 2) < RealClientWidth){
            var OverlayContentLeft = (RealClientWidth - OverlayContentWidth) / 2 + RealScrollLeft;
         }else{
               var OverlayContentLeft = RealScrollLeft + BorderWidth;
         }
         var OverlaySupportContentLeft = OverlayContentLeft - BorderWidth;
         // si overlay_content (+ la bordure) est moins haut plus que la zone affichable par le client,
         // alors on le centre verticalement
         if((OverlayContentHeight + BorderWidth) < RealClientHeight){
            var OverlayContentTop = (RealClientHeight - OverlayContentHeight) / 2 + RealScrollTop;
         }else{
               var OverlayContentTop = RealScrollTop + BorderWidth;
         }
         var OverlaySupportContentTop = OverlayContentTop - BorderWidth;
         // #### OVERLAY
         // si overlay_content (+ son scroll top) ne depasse pas du body verticalement
         // alors le overlay sera de la taille du body
         // sinon il sera agrandis au necessaire
         if((OverlayContentHeight + OverlayContentTop + BorderWidth) < RealBodyHeight){
            var OverlayHeight = RealBodyHeight;
         }else{
               var OverlayHeight = OverlayContentHeight + OverlayContentTop;
         }
         // si le overlay (+ son scroll left) ne depasse pas du body horizontalement, alors le overlay sera de la taille du body,
         // sinon il sera agrandis au necessaire
         if((OverlayContentWidth + OverlayContentLeft + BorderWidth * 2) < RealClientWidth){
            var OverlayWidth = RealClientWidth;
         }else{
               var OverlayWidth = OverlayContentWidth + OverlayContentLeft + BorderWidth;
         }
   
         // on ajuste les div
         Overlay.style.height = OverlayHeight + 'px';
         Overlay.style.width = OverlayWidth + 'px';

         OverlayLoading.style.top = OverlayLoadingTop + 'px';
         OverlayLoading.style.left = OverlayLoadingLeft + 'px';

         OverlaySupportContent.style.top = OverlaySupportContentTop + 'px';
         OverlaySupportContent.style.left = OverlaySupportContentLeft + 'px';

         OverlayContent.style.top = OverlayContentTop + 'px';
         OverlayContent.style.left = OverlayContentLeft + 'px';
}

// cache et vide un div
function CleanAndHide(Id){
         var object = document.getElementById(Id);
         object.style.display = 'none';
         object.style.visibility = 'hidden';
         object.innerHTML = '';
}

// rend un div visible
function MakeVisible(Id, FadeTrueFalse){
         var object = document.getElementById(Id).style;
         object.display = 'block';
         OverlayAdjust();
         object.visibility = 'visible';
         if(FadeTrueFalse && Fading && !window.ActiveXObject){ // on fade pas sur IE c'est moche
            object.opacity = '0';
            object.MozOpacity = '0';
            object.KhtmlOpacity = '0';
            object.filter = 'alpha(opacity=0)';
            opacity(Id, 0, 100, FadeDelay)
         }else if(FadeTrueFalse && (!Fading || window.ActiveXObject)){ // SI IE on met direct a 100% visible
                  object.opacity = '1';
                  object.MozOpacity = '1';
                  object.KhtmlOpacity = '1';
                  object.filter = 'alpha(opacity=100)';
         }
}

// fonctions de fadein
function opacity(id, opacStart, opacEnd, millisec){
    // vitesse pour chaque frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    // determine le sens du fading, si opacStart et opacEnd sont identiques rien ne se produit
    if(opacStart > opacEnd){
       for(i = opacStart; i >= opacEnd; i--){
           setTimeout("changeOpac("+i+",'"+id+"')",(timer * speed));
           timer++;
       }
    }else if(opacStart < opacEnd){
             for(i = opacStart; i <= opacEnd; i++){
                 setTimeout("changeOpac("+i+",'"+id+"')",(timer * speed));
                 timer++;
             }
    }
}

// change l opacite d un element
function changeOpac(opacity, id){
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = 'alpha(opacity='+opacity+')';
}

// vide et cache tout les div de l'overlay (lien "fermer")
function DeleteOverlay(){
         // on les vire tous
         CleanAndHide('overlay');
         CleanAndHide('overlay_loading');
         CleanAndHide('overlay_support_content');
         CleanAndHide('overlay_content');
}

// rempli et rend visible l'overlay
function OverlayFillAndShow(FocusUrl, FocusTitle){
         // on s assure que l overlay est supprime
         DeleteOverlay();
         // on recupere les div a remplir
         var OverlayLoading = document.getElementById('overlay_loading');
         var OverlayContent = document.getElementById('overlay_content');

         // on met "chargement" dans le div overlay_loading
         OverlayLoading.innerHTML = LoadingText;

         // on rend visible les div overlay et overlay_loading
         MakeVisible('overlay', false);
         MakeVisible('overlay_loading', false);

         // on charge le contenu a afficher
         if(FocusUrl.toLowerCase().match('.inc.')){ // si FocusUrl pointe vers un fichier
            isFile = true;
         }else{ // si FocusUrl est un lien vers une image
               LoadContent = new Image();
               LoadContent.src = FocusUrl;
               isFile = false;
         }

         // on prepare la fonction d'affichage
         function ShowTheStuff(){
                  if(isFile){
                     ContentToShow = LoadContent;
                     // si c'est un fichier on ajoute le lien de fermeture apres la premiere balise "<div*>" du LoadContent
                     var DaCloseBoxLink = '<p class="close_p"><a href="#" onclick="DeleteOverlay();return false;">Fermer</a></p>';
                     // on recherche la premiere occurence de "<div.*>" et on la remplace par "<div.*>+(le lien)"
                     //var ContentToShow = '<!-- COLLLLLL_CONTENT********************************************************************************** --><div id="col_content"><form action="http://v2.lavazzo.net/v2_new/index.php" method="post"><fieldset><legend>Login</legend><label for="login">Nom d\'utilisateur</label><input name="login" id="login" type="text"><div class="break"></div><label for="pass">Mot de passe</label><input name="pass" id="pass" type="password"><div class="break"></div><label for="remember">Connexion automatique à la prochaine visite (cookie)</label><input name="remember" id="remember" value="1" type="checkbox"><div class="break"></div><input value="Connexion" type="submit"><p style="text-align: center;">Pas encore de compte ? <a href="signup.php" onclick="OverlayFillAndShow(\'signup_form.inc.php\', \'\');return(false);">Inscrivez-vous</a> afin de<br>profiter pleinement de Lavazzo.net !</p><p style="text-align: center;"><a href="#65bite">Mot de passe perdu ?</a></p></fieldset></form></div></div>';
                     var DaPattern = /^(.)*<div(.)*?>(.)*$/i;
                     if(DaPattern.test(ContentToShow)){alert('true');}
                     //alert(ContentToShow);
                     //alert(ContentToShow.replace(DaPattern, '$2'));
                  }else{
                        var ContentToShow = '<table><tr><td class="view_img" colspan="2"><a href="#" onclick="DeleteOverlay();return false;"><img src="'+LoadContent.src+'" alt="'+FocusTitle+'" title="" /></a></td></tr><tr><td class="desc_img">'+FocusTitle+'</td><td class="close_img"><a href="#" onclick="DeleteOverlay();return false;">Fermer</a></td></tr></table>';
                  }
                  
                  // on remplis l'overlay avec le contenu
                  OverlayContent.innerHTML = ContentToShow;

                  // on supprime OverlayLoading
                  CleanAndHide('overlay_loading');

                  // on affiche OverlayContentSupport(seulement si ce n est pas un fichier) et OverlayContent
                  if(!isFile){
                     MakeVisible('overlay_support_content', false);
                  }
                  MakeVisible('overlay_content', true);
         }

         if(!isFile && LoadContent.complete){ // si c est une image et qu elle est chargee
            ShowTheStuff();
         }else if(isFile){ // si c est un fichier on le recupere via un objet XHR
                  var request;
                  if(window.XMLHttpRequest){ // Firefox & co
	             request = new XMLHttpRequest();
                  }else if(window.ActiveXObject){ // IE
	                   request = new ActiveXObject("Microsoft.XMLHTTP");
                  }else{ // Non supporte
	                return(false);
                  }
                  // controle de l'etat de la requete
                  request.onreadystatechange = function(){
                                                          if(request.readyState == 4){
                                                          LoadContent = request.responseText;
                                                          ShowTheStuff();
                                                          }
                                               }
                  request.open('GET', FocusUrl, true); // Asyncrone -> true / false
                  request.send(null);
         }else if(!isFile && !LoadContent.complete){ // si c est une image et qu elle n est pas encore chargee
                  LoadContent.onload = function(){
                                                ShowTheStuff();
                                       }
         }
         
         // on met un onclick sur le div "overlay" qui permet de fermer le tout
         var Overlay = document.getElementById('overlay');
         Overlay.onclick = function(){
                                      // DeleteOverlay();
                                      return(false);
                           }
         return(false);
}

function OverlayAnalysePage(){
         // on recupere dans un array toutes les ancres de la page (tag <a>)
         var AnchorsArea = document.getElementsByTagName('area');
         var AnchorsA = document.getElementsByTagName('a');

         // on parcour l'array Anchors[] à la recherche des ancres dont l'attribut "rel" est de valeure "focusbox"
         for(var i=0; i<AnchorsArea.length; i++){
             var CurrentAnchor = AnchorsArea[i];
             var RelAttribute = String(CurrentAnchor.getAttribute('rel'));
             // si l'ancre pointe effectivement vers un element et que l'attribut "rel" est bien "focusbox" alors on place un "onclick" sur l'ancre
             if(CurrentAnchor.getAttribute('href') && (RelAttribute.toLowerCase().match('focusbox'))){
                CurrentAnchor.onclick = function(){
                                                   var FocusUrl = this.href;
                                                   var FocusTitle = this.title;
                                                   OverlayFillAndShow(FocusUrl, FocusTitle);
                                                   return(false);
                                        }
             }
         }
         // on parcour l'array Anchors[] à la recherche des ancres dont l'attribut "rel" est de valeure "focusbox"
         for(var i=0; i<AnchorsA.length; i++){
             var CurrentAnchor = AnchorsA[i];
             var RelAttribute = String(CurrentAnchor.getAttribute('rel'));
             // si l'ancre pointe effectivement vers un element et que l'attribut "rel" est bien "focusbox" alors on place un "onclick" sur l'ancre
             if(CurrentAnchor.getAttribute('href') && (RelAttribute.toLowerCase().match('focusbox'))){
                CurrentAnchor.onclick = function(){
                                                   var FocusUrl = this.href;
                                                   var FocusTitle = this.title;
                                                   OverlayFillAndShow(FocusUrl, FocusTitle);
                                                   return(false);
                                        }
             }
         }
}

// on execute OverlayAnalysePage() une fois la page chargee
// cf onload.js

