/*****************************************************************
 * Ce fichier décrit le controlleur de la page d'acceuil des fresques intéractives.
 *
 *****************************************************************/
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
 
var ConfigurationSite = $H({});

var ConfigurationFlash = $H({});

var Controller = Class.create({
  resize: false,
  largeur: 1164,
  largeurPopup: 514,
  hauteurPopup: 444,
  hauteur: 708,
  flashId: "FresqueEnFlash",
  contenu: "contenu",
  popup: null,
  flashEnabled: true,


  initialize: function(){
    this.platformUnix = navigator.platform.match("Linux") ? true : false;
    this.redimensionnerFenetre();
    this.positionnerFresque();
    this.chargerFlash();

    Event.observe(window, "resize", this.positionnerFresque.bind(this));
  },

  detectFlash: function(){
    if(!Prototype.Browser.IE){
       var flashInstalled = false;
       for(i=0; i<navigator.mimeTypes.length; i++){
         if(navigator.mimeTypes[i]["type"] == "application/x-shockwave-flash") flashInstalled = true;
       }
       return flashInstalled;
    }else{
        try{
          return flashDetectedWithVB;
        }catch(e){
          return false;
        }
    }
  },

  /**
   * Méthode pour redimensionner la fenetre du navigateur en fonction de la taille de l'écran
   */
  redimensionnerFenetre: function(){
    if(screen.availHeight < 900){
      ConfigurationFlash.set("typeResolution",  2);
      this.largeur = 970;
      this.hauteur = 590;

    }else if(screen.availHeight>=900){
      ConfigurationFlash.set("typeResolution",  3);
      this.largeur = 1164;
      this.hauteur = 708;
    }

    $(this.flashId).setStyle({"width": this.largeur+"px"});

    if(this.resize){
      top.moveTo(-4,-4);
      top.resizeTo(this.largeur + 35, this.hauteur +230);
    }
  },

  positionnerFresque: function(event){
    var calcTop = (document.viewport.getHeight() / 2) -  (this.hauteur / 2);
    var top = document.viewport.getHeight() < this.hauteur ? 0 : calcTop;

    $(this.flashId).setStyle({"marginTop": top+"px"});
  },
  /**
   * Méthode pour charger la fresque (le flash)
   */
  chargerFlash: function(optionsSwf){
   if(this.detectFlash() && DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision)){
     paramsSwf= this.creerParametresSwf(optionsSwf);

     if(ConfigurationSite.get("ouvertureInitiale")  == 0){
       var scale = "default";
       var urlSwf = ConfigurationSite.get("LocAccueil");
     }else{
       var scale = "noscale";
       var urlSwf = ConfigurationSite.get("LocFresque");
     }

     urlSwf = urlSwf.replace(".swf", "");

     paramsEmbed = $H({"codebase": "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0",
                                      "width": this.largeur,
                                      "height": this.hauteur,
                                      "src": urlSwf ,
                                      "quality": "high",
                                      "pluginspage": "http://www.macromedia.com/go/getflashplayer",
                                      "align": "middle",
                                      "play": "true",
                                      "loop": "true",
                                      "scale": scale,
                                      "id": this.flashId,
                                      "bgcolor": "#ffffff",
                                      "name": this.flashId,
                                      "menu": "true",
                                      "allowScriptAccess": "always",
                                      "allowFullScreen": "true",
                                      "movie": urlSwf,
                                      "salign": "lt",
                                      "FlashVars": paramsSwf.toQueryString()
                                  });

    if(!this.platformUnix) paramsEmbed.set("wmode" , "transparent");

    var command = "";
    var first = true;
    paramsEmbed.each(function(pair){
      command += !first ? ", " : "";
      command += "\"" + pair.key + "\", \"" + pair.value + "\"";
      first = false;
    });

    eval("AC_FL_RunContent("+ command +")");
    //$(this.flashId+"_embed").observe("keypress", this.arreterPleinEcran.bind(this));
   }else{
     window.location.href = ConfigurationSite.get("LocMajFlash");
   }
  },

  /**
   * Créer les paramétres é passer au flash de la fresque
   */
  creerParametresSwf: function(nouveauxParams){
    var params = $H({});

    //On commence par remplir les paramatres des valeurs par défault
    ConfigurationFlash.each(function( pair ){
      if(pair.value && pair.value!= ""){
        params.set(pair.key, pair.value);
      }
    });

    //et eventuellemnt on les modifie é la volée
    if(nouveauxParams){
      if(Object.isHash(nouveauxParams)){
        nouveauxParams.each(function(pair){
          if(pair.value && pair.value!=""){
            params.set(pair.key, pair.value);
          }
        });
      }else{
        var values = Object.values(nouveauxParams);
        Object.keys(nouveauxParams).each(function(key, index){
           if(values[index] && values[index] != ""){
             params.set(key, values[index]);
           }
        });
      }
    }

    return params;
  },

  /**
   * Retourner é l'acceuil
   */
  retourneALaccueil: function(){
    ConfigurationSite.set("ouvertureInitiale", "0");
    this.chargerFlash();
  },

  /**
   * permet d'ouvrir une popup fresque
   */
  popupWindow: function(page,titre,largeur,hauteur,resizeyn,scrollb) {
    var top=(screen.height-hauteur)/2;
    var left=(screen.width-largeur)/2;
    if (typeTelechargement=="Achat") {
      window.open(page,titre,"top="+top+", left="+left+", width=975, height=742, directories=no, menubar=no, status=no, resizable=yes, scrollbars=yes,location=no");
    } else {
      window.open(page,titre,"top="+top+", left="+left+", width="+largeur+", height="+hauteur+", directories=no, menubar=no, status=no, location=no");
    }
  },

  /**
   * Systeme de popup
   */

  /**
   * Agrandir une image en plein écran
   */
   afficheImagePleinEcran: function(url){
      if(this.platformUnix){
        window.open(url, "_blank");
        return;
      }

      if(!this.conteneurPleinEcran){
        this.conteneurPleinEcran = Element("div");
        this.conteneurPleinEcran .addClassName("conteneurPleinEcran");
        this.conteneurPleinEcran.observe("click", this.arreterPleinEcran.bind(this));

        this.imgPleinEcran = new Element("img");
        this.imgPleinEcran.observe("click", this.arreterPleinEcran.bind(this));
        this.conteneurPleinEcran.hide();
        Element.insert(document.body, {"top": this.conteneurPleinEcran});
        Event.observe(window, "resize", this.resizePleinEcran.bind(this));
      }

      this.imgPleinEcran.writeAttribute("src", url);
      this.imgPleinEcran.writeAttribute("height", document.viewport.getHeight());
      this.conteneurPleinEcran .setStyle({height: document.viewport.getHeight()});

      this.pleinEcran = true;

      this.conteneurPleinEcran.update(this.imgPleinEcran);
      this.conteneurPleinEcran.appear({duration: 1});

      this.afficherMessageDeFermeture();
   },

  arreterPleinEcran: function(event){
      if(this.pleinEcran){
        this.conteneurPleinEcran.fade({duration: 1});
        this.pleinEcran = false;
      }
  },

  resizePleinEcran: function(event){
      this.imgPleinEcran.writeAttribute("height", document.viewport.getHeight());
      this.conteneurPleinEcran .setStyle({height: document.viewport.getHeight()});
  },

  afficherMessageDeFermeture: function(){
    if(!this.messageFermeturePleinEcran){
      this.messageFermeturePleinEcran = new Element("div");
      this.messageFermeturePleinEcran.hide();
      this.messageFermeturePleinEcran.addClassName("messageFermeturePleinEcran");
      Element.insert(document.body, {top: this.messageFermeturePleinEcran} );
    }
    this.messageFermeturePleinEcran.setStyle({"height": document.viewport.getHeight() + "px"});
    this.messageFermeturePleinEcran.appear({duration: 0.5});
    setTimeout(this.effacerMessageDeFermeture.bind(this), 2000);
  },

  effacerMessageDeFermeture: function(event){
    this.messageFermeturePleinEcran.fade({duration: 0.5});
  },

  /**
   * Fonctions d'affichage de popup
   */
   afficherPopup: function(contenu, differ){
      if(!this.popup) this.popup = new ControllerPopup("popup", "fondNoir", this.getHeight(), ConfigurationSite.get("LocPopupCadre"), ConfigurationSite.get("LocPopupCroix"), this, null);
      this.popup.setLargeur(this.largeurPopup);
      this.popup.setHauteur(514);

      this.popup.setPosition();

      if(differ){
        this.tempPopupContenu = contenu;
        this.popup.show(this.onPopupPrete.bind(this));
      }else{
        this.popup.update(contenu);
        this.popup.show();
      }
   },

   onPopupPrete: function(){
     if(this.tempPopupContenu){
       this.popup.update(this.tempPopupContenu);
       this.tempPopupContenu = null;
     }
   },


   fermerPopup: function(){
      if(this.popup) this.popup.hide();
   },

   getHeight: function(){
    var height = $(this.contenu).getHeight();
    var viewport = document.viewport.getHeight();

    return ( height > viewport ) ? height : viewport;
   },

   getWidth: function(){
    var width = $(this.contenu).getWidth();
    var viewport = document.viewport.getWidth();

    return ( width > viewport ) ? width : viewport;
   },

   afficherMail: function(args){
     var args = args.replace(/\'/g, "").split(",");
     var url = args[0];
     var names = ["requeteInitiale", "typeRequeteInitiale", "infoRequeteInitiale", "modeAffichage", "documentZoom", "documentVisionneuse"];
     var params = $H({});
     for(i=1; i<args.length; i++){
        params.set(names[i-1], args[i]);
     }
     url = url + "?" + params.toQueryString();
     window.open(url, "_blank");
   },
   
   checkMail: function(address){
     var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
     filter.test(address) ? true : false;
   },
   validateMailForm: function(obj)
   {
     if(!checkMail(obj.email.value))
     {
       obj.email.focus();
       return false;
     }else if(obj.prenom_from.value == ""){
   	  obj.prenom_from.focus();
       return false;
     }
     if(ok == 1)
     {
       ok=2;
       return true;
     }

     return false;
   }

});

var controller;

function AppelerPage(url){
  var params = url.toQueryParams();

  if(params.ouvertureInitiale)
    ConfigurationSite.set("ouvertureInitiale", params.ouvertureInitiale);
  controller.chargerFlash(params);
}

function RetourneALaccueil(){
  controller.retourneALaccueil();
}

Event.observe(window, 'load', function(event){controller = new Controller()});