var processChange;
var myHTMLRequest;
var mySecondHTMLRequest;
var Popup;
var myPopupLine;
var myPopupSearch;
var myMainEffect;
var previous;
var previousParams;
var previousNoPopin;
var previousParamsNoPopin;
var isHandClosed = false;
var previousCss;
var myToolTips = null;
var spinner;
var myAdviceFx;
var FooterFollow;
var myFooterFollow;
var myChain;
var myHandleChain;
var effectEnded = false;
var myTimerSuccess = null;
//var myPoppupPages = ['recherche', 'ligne', 'credits'];
var myPoppupPages = ['credits', 'popup_mail'];
var myPaginedPages = ['make_a_sign', 'forms_diagnostic_3', 'outlet', 'advices2'];
var relMenuLinks = {
  'newsletter' : 'news',
  'events': 'news',
  'popup_mail': 'collection',
  'line': ['collection','collections'],
  'product': 'collections',
  'subsidiary': 'contact',
  'faq': 'contact',
  'advices2': 'advices2',
  'forms_diagnostic_2': 'forms_diagnostic_1',
  'forms_diagnostic_3': 'forms_diagnostic_1'
};
var oneRelManyPages = {
  'collections': ['collection']
};
var myPagesWhereReloadSousMenu = [];
var convertUrl;
var replaceMenuElement;
var isProcessExecuted;





function loadlanguageCSS(){
  if ($("cssAssetview/style/"+$('lang').get('value')+".css") != null) {
     $("cssAssetview/style/"+$('lang').get('value')+".css").destroy();
   }
   Asset.css("view/style/"+$('lang').get('value')+".css", { id: "cssAssetview/style/"+$('lang').get('value')+".css"});
 }

window.addEvent('domready', function() {

//  Object.implement ({
//
//    /**
//     * Implements Object.each() as a method of Object
//     * @see http://mootools.net/docs/core/Types/Object#Object:Object-each
//     * I can't find on the net why this is not part of the framework already,
//     * but I bet it's for performance reasons. Well, here it is !
//     */
//    each: function(fn, bind){
//      return Object.each(this, fn, bind);
//    }
//
//  });

  MooTools.lang.setLanguage($('lang').get('value'));

  /**
   * Avannt de faire quoi que ce soit, on vérifie que la page est bien ajaxifiée
   */
  var makingRedirection = function(path, vars) {
    var myForm = new Element('form', {
      action: '/',
      method: 'post'
    });
    var myInputPageName = new Element('input', {
      type: 'hidden',
      name: 'pageName',
      value: path
    });
    var myInputLang = new Element('input', {
      type: 'hidden',
      name: 'lang',
      value: $('lang').get('value').toLowerCase()
    });

    var myInputVars = new Element('input', {
      type: 'hidden',
      name: 'AJAXvars',
      value: vars
    });

    myInputPageName.inject(myForm);
    myInputLang.inject(myForm);
    myInputVars.inject(myForm);
    myForm.inject($('main_content'));

    myForm.submit();
  }

  var currentUrl = new URI(document.location.href);
  var myCompareUrl = currentUrl.get('scheme')+'://'+currentUrl.get('host')+currentUrl.get('directory');//+currentUrl.get('file')+currentUrl.get('query');

  if (myCompareUrl != basePath) {
    var pageName = currentUrl.get('directory');
    pageName = pageName.substr(4, pageName.length-5);
    makingRedirection(pageName, currentUrl.get('file'));
    return;
  } else {

    /**
     * Gestion de l'ajax des menus
     */
    $$('#nav a.menuLink').each(function(el){
      el.addEvent('click', function(e){
        // Arrêt de l'éxécution du lien
        e.stop();
        SWFAddress.setValue(el.get('rel'));
      });
      var myLink = el;
      var coord = el.getParent('div').getCoordinates();
      var coorda = myLink.getCoordinates();
      var paddingTop = (coord.height - coorda.height - el.getStyle('margin-top').toInt())/2;
      el.setStyle('margin-top', '8px');
      el.setStyle('padding-top', paddingTop);
    });
    $$('#footer a.menuLink').each(function(el){
      el.addEvent('click', function(e){
        // Arrêt de l'éxécution du lien
        e.stop();
        SWFAddress.setValue(el.get('rel'));
      });
    });

    /**
     * Gestion des pages en poppup
     */
    var isPoppup = function(page) {
      return myPoppupPages.contains(page);
    }
    var hasToReload = function(page) {
       return myPagesWhereReloadSousMenu.contains(page);
    }
    var hasToReloadContent = function(page) {
      return !myPaginedPages.contains(page);
    }
    var getMenuLink = function(page) {
      var myHash = new Hash(relMenuLinks);
      if (myHash.has(page)) {
        return $splat(myHash.get(page));
      } else {
        return false;
      }
    }

    var findRelByPath = function(path) {
      var r = false;
      $each(oneRelManyPages, function(paths, rel){
        if ($splat(paths).contains(path)) r = rel;
      });

      return r;
    }

    var renamePage = function(page) {
      var renamedPages = new Hash(myPagesRenamed);
      var myPage = renamedPages.get(page);
      myConsole.log(page);
      myConsole.log(myPage);
      if (myPage == null) {
        return renamedPages.keyOf(page);
      } else {
        return myPage;
      }
    }

    var myMoveEffect = new Fx.Tween($('sous_nav'), {

      link : 'chain',
      duration: 200,
      fps: 25
    });


    // The chain manager;
    myChain = new Chain();
    myHandleChain = new Chain();

    myMainEffect = new Fx.Tween($('main_content'), {
      link: 'chain',
      duration: 150,
      fps: 25
    });

    /**
     * Gestion du bottom follow !
     */
    FooterFollow = new Class({
      Implements: [Options,Chain],


      myEffect: null,

      options: {
        footer : null,
        pusher : null,
        minTop: 80
      },


      initialize: function(options) {
        this.setOptions(options);
        this.myEffect = new Fx.Morph(this.options.footer, {
          link: 'chain',
          fps: 25,
          duration: 200
        });
      },

      unPin: function() {
        this.options.footer.setStyles({
          'position': 'static'
        });
        return this;
      },

      pin: function() {
        var coord = this.options.footer.getCoordinates();
        this.options.footer.setStyles({
          'top': coord.top,
          'position': 'absolute'
        });
        return this;
      },

      goToMin: function(val) {
        this.pin();
        if (val == null) {
          var min = this.options.minTop;
        } else {
          var min = val;
        }
        return this.myEffect.start({
          'top': min+'px'
        });
      },

      goToMax: function() {
        var maxValue = this.calcMaxValue();
        this.myEffect.start({
          'top': maxValue
        }).chain(function(){
          this.unPin();
          myChain.callChain();
        }.bind(this));
      },

      calcMaxValue: function() {
        var coord = this.options.pusher.getCoordinates();
        return coord.top+coord.height;
      }
    });

    myFooterFollow = new FooterFollow({
      footer: $('footer'),
      pusher: $('main_container'),
      minTop: 500
    });

    $('main_container').setStyle('background-color', '#FDFCFC');


    /**
     * Gestion du SWFAddress
     */

    processChangeFunction = function(json, page, callBack, params, previous) {
        if (json.valid) {
          if (json.includeJS != null) {
            if ($type(json.includeJS) == 'string') {
//              alert(json.includeJS);
              Asset.javascript(json.includeJS, {id: 'jsAsset'+json.includeJS});
            } else {
              json.includeJS.each(function(inc){
                Asset.javascript(inc, {id: 'jsAsset'+inc});
              });
            }
          }
          if (json.includeCSS != null) {
//            if (page != 'ligne' && page != 'recherche') {
//              if ($type(previousCss) == 'string') {
//                $('cssAsset'+previousCss).destroy();
//              } else if ($type(previousCss) == 'array') {
//                previousCss.each(function(inc){
//                  $('cssAsset'+inc).destroy();
//                });
//              }
//            }

            if ($type(json.includeCSS) == 'string') {
              /*Asset.css(json.includeCSS, {
                id: 'cssAsset'+json.includeCSS, 'class': 'cssToRemove', title:"cssAsset"+json.includeCSS, onLoad : loadlanguageCSS
              });*/
              Asset.css(json.includeCSS, {
                id: 'cssAsset'+json.includeCSS, 'class': 'cssToRemove'
              });
            } else {
              var iterator = 0;
              json.includeCSS.each(function(inc){
                if ($('cssAsset'+inc) != null) {
                  $('cssAsset'+inc).destroy();
                }
                Asset.css(inc, {id: 'cssAsset'+inc});

                /*if(inc == json.includeCSS[json.includeCSS.length - 1]){
                  //alert(inc);
                  //Asset.css(inc, {id: 'cssAsset'+inc, onLoad : loadlanguageCSS});
                  Asset.css(inc, {id: 'cssAsset'+inc, title:"cssAsset"+inc, onLoad : loadlanguageCSS, events: {
                    load: function(){
                      alert('myScript.js is loaded!');
                    }
                  }});
                }else{*/
        //}
              });
            }

            if (isPoppup(page)) {
              previousCss = json.includeCSS;
            }
          }

          if (json.background != null) {
            $('main_content').setStyle('background', json.background);
          }

          if (json.title != null) {
            if ($('lang').get('value') == 'ru') {
              var title = String.fromCharCode(json.title);
            } else {
              var title = json.title;
            }

            document.title = json.title;
            // SWFAddress.setTitle(json.title);
          }


          if (page != previous || hasToReload(page)) {

            $('linkContainer').empty();
            if (json.sousMenus != null) {
              json.sousMenus.each(function(menu){
                var myLi = new Element('li');
                if (menu.varName != null) {
                  var myHash = new Hash({});
                  myHash.set(menu.varPage, menu.varUsed);
                  var myLink = new Element('a', {
                    href: basePath+menu.page+'/'+myHash.toQueryString(),
                    rel : menu.page+'?'+myHash.toQueryString(),
                    text: menu.varName
                  });
                } else {
                  var myLink = new Element('a', {
                    href: basePath+menu.myVar+'/',
                    rel : menu.myVar,
                    text: menu.translation
                  });
                }
                myLink.addClass('sousMenuLink');
                myLink.addClass('mySousMenu_'+menu.varId);
                //myLink.addClass('typeface-js');
                myLink.inject(myLi);
                myLi.inject($('linkContainer'));
              });
              $$('#linkContainer a.sousMenuLink').each(function(el){
                el.removeClass('selected');
                if (el.get('rel').contains('?')) {
                  if (el.get('rel') == page+params) {
                    var myFxMorph = new Fx.Morph(el, {duration: 150, link: 'chain', transition: Fx.Transitions.Sine.easeOut});
                    myFxMorph.addEvent('complete', function(){
                      el.addClass('selected');
                    });
                    myFxMorph.start({
                      'color': '#000000'
                    });
                  }
                } else {
                  if (el.get('rel') == page) {
//                    el.set('morph', {duration: 'long', transition: 'bounce:out'});
                    //el.morph('.selected');
                    el.addClass('selected');
                  }
                }
                el.addEvent('click', function(e){
                  // Arrêt de l'éxécution du lien
                  e.stop();
                  SWFAddress.setValue(el.get('rel'));

                });
              });
              myMoveEffect.start('margin-top', '0px');
              $('sous_nav').set('margin-top', 0);
            }
          } else {
            var myFxMorph;
            $$('#linkContainer a.sousMenuLink').each(function(el){
              el.removeClass('selected');
              myFxMorph = new Fx.Morph(el, {link: 'chain', duration: 150, transition: Fx.Transitions.Sine.easeOut});
              myFxMorph.start({
                'color': '#a08d90',
                'font-size' : 12
              });
              if (el.get('rel').contains('?')) {
                if (el.get('rel') == page+params) {
                  myFxMorph.start({
                    'color': '#000000'
                  });
                }
              } else {
                if (el.get('rel') == page) {
//                  el.set('morph', {duration: 'long', transition: 'bounce:out'});
                  //el.morph('.selected');
                  el.addClass('selected');
                  myFxMorph.start({
                    'color': '#000000'
                  });
                }
              }
              el.addEvent('click', function(e){
                // Arrêt de l'éxécution du lien
                e.stop();
                SWFAddress.setValue(el.get('rel'));

              });
            });
            var myFunc = function(){
              if (myFxMorph != null) {
                myFxMorph.cancel();
              }
              $('linkContainer').fireEvent('sousMenuProcedeed');
            }
            myFunc.delay(350);
          }


//            $$('a.typeface-js').each(function(el){
//              myConsole.log('OKAY !!!!');
//              el.addEvents({
//                'mouseenter': function(){
//                  el.store('clone', el.clone().inject('myElement','after'));
//                  el.addClass('hidden');
//                },
//                'mouseleave': function(){
//                  el.removeClass('hidden');
//                  el.retrieve()...
//                }
//              })
//            });
        }

        callBack.run();
    }


    processChange = function (page, callBack, params, previous) {

      isProcessExecuted = false;

      var datas = {
        'page': 'getConf',
        'conf': page
      }

  //    var uri = new URI();
      if (mySecondHTMLRequest != null) {
        mySecondHTMLRequest.cancel();
      }
      mySecondHTMLRequest = new Request.JSON({
        url: basePath+'ajax/'+convertUrl(Hash.toQueryString(datas)),
        link: 'cancel',
        onFailure: function(){
          _typeface_js.renderDocument();
        },
        onRequest: function(){

  //        myMoveEffect.set('margin-top', -30);
          //_typeface_js.renderDocument();
        },
        onComplete: function(json){
          if (json) {
            isProcessExecuted = true;
            myHandleChain.chain(processChangeFunction.pass([json, page, callBack, params, previous]));
          }
        }
      }).get();
    }

  /******************************************************************************/

    Popup = new Class({
      Implements: [Options],

      options: {
        idPopup : null
      },

      /**
       * Constructeur
       */
      initialize: function(options) {
        this.setOptions(options);
      },

      /**
       * Ferme la poppup
       */
      closePopup: function(callBack) {
        myMainEffect.start('opacity', 1);
        spinner.hide();
        if ($(this.options.idPopup) != null) {
          this.start(this.options.styleEffect, this.options.styleStartValue, function(){
            $(this.options.idPopup).destroy();
            this.bottomReset(callBack);
          }.bind(this));
        } else {
          callBack.attempt();
        }
      },

      /**
       * Ouvre la popup
       */
      openPopup: function() {
        var myEl = new Element('div', {
          id: this.options.idPopup,
          styles: this.options.startStyles
        });
        myEl.addClass('pop_content');
        myEl.inject($(window.document.body));
      },

      bottomFollow: function(){
        var pos = $(this.options.idPopup).getElement('div').getCoordinates();

        $('main_content').store('height', $('main_content').getStyle('height'));

        var main_height = $('main_content').getStyle('height').toInt();

        if (main_height<pos.top+pos.height+15) {
          $('main_content').tween('height', pos.top+pos.height+15);
        }
      },

      bottomReset: function(callBack){
        myConsole.log('BOTTOMRESET');
        $('main_content').set('tween', {
          link: 'chain',
          onComplete: function(){
            myConsole.log('BOTTOMCOMPLETE');
            callBack.attempt();
          }
        });
        if ($('main_content').retrieve('height') > $('main_content').getCoordinates().height) {
          $('main_content').tween('height', $('main_content').retrieve('height'));
        } else {
          callBack.run();
        }
      },

      /**
       * Rempli la popup
       */
      setContents: function(contents) {
        if (!$defined($(this.options.idPopup))) {
          this.openPopup();
        }
        $(this.options.idPopup).set('html', contents);
        _typeface_js.renderDocument();
        pushEvents.run();
        this.start(this.options.styleEffect, this.options.styleEndValue, this.bottomFollow.bind(this));
  //      myConsole('render setContentsd');
      },

      /**
       * Start the effect
       */
      start: function(property, value, callBack) {
        var myFxx = new Fx.Tween($(this.options.idPopup), {
          onComplete : callBack,
          fps: 25
        });
        myFxx.start(property, value);
      },

      isset: function() {
        return $defined($(this.options.idPopup));
      }

    });


    myPopupLine = new Popup({
      idPopup: 'pop_content',
      startStyles : {
        'margin-top': -1000,
        'position': 'absolute',
        'top': 0,
        'z-index': 20,
        'width': $('main_content').getSize().x
      },
      styleEffect: 'margin-top',
      styleEndValue: 0,
      styleStartValue: -1000
    });

  //  myPopupSearch = new Popup({
  //    idPopup: 'pop_content',
  //    startStyles : {
  //      'position': 'absolute',
  //      'top': 0,
  //      'width': $('main_content').getSize().x
  //    },
  //    styleEffect: 'opacity',
  //    styleEndValue: 1,
  //    styleStartValue: 0
  //  });


  /******************************************************************************/

    replaceMenuElement = function(element, hover) {
      if (element.getNext('span.typeText') != null) {
        element.set('html', element.getNext('span.typeText').get('text'));
        if (hover) {
          element.setStyles({
            'color': 'white'
//           ,'font-style': 'italic'
          });
        } else {
          element.setStyles({
            'color': '#a08d90'
//           ,'font-style': 'normal'
          });
        }
        _typeface_js.renderDocument();
      }
    }

    previous = null;
    previousParams = null;

    pushEvents = function() {
      $$('#main_content .linkable').each(function(el){
        el.addEvent('click', function(e){
          e.stop();
          SWFAddress.setValue(el.get('rel'));
        });
      });

      $$('#pop_content .fermeture_popin').each(function(el){
        el.addEvents({
          'click': function(e){
            myConsole.log('CLOSE CLICK');
            e.stop();
            isHandClosed = true;
            if (previousNoPopin == null) {
              var goTo = 'homepage';
            } else {
              var goTo = previousNoPopin+previousParamsNoPopin;
            }
            SWFAddress.setValue(goTo);
          },
          'mouseover': function(){
            el.setStyle('cursor', 'pointer');
          }
        });
      });
    }

    function handleChange(event) {
      // On change notre path
      var path = event.path;
      var length = path.length;
      path = path.substr(1, length);

      //alert(event.path);
  //    if (path == "") {
  //      regPath = new Regexp('/page=([^&#]+)/');
  //      path = regPath.exec(document.location.href);
  //      alert(path[0]);
  //    }

      // Virer le capcha...
      $$('.tip-type1', '.tip-type2').each(function(el){
        el.destroy();
      })

        var parameters = new Hash({});
        var params = '';
        var first = true;
        for (var p in event.parameters) {
            parameters.set(p,event.parameters[p]);
            if (first) {
              first = false;
              params = '?';
            } else {
              params += '&';
            }
            params += p+'='+event.parameters[p];
        }

        // Logique de hovering
        var menuEl;
        $$('#nav a.menuLink').each(function(myEl){
          if (myEl.getParent('div.item') != null) {
            //myConsole.log(myEl.get('rel')+' == '+path+' == '+getMenuLink(path));
            if ( (myEl.get('rel') == path) ||
                 (getMenuLink(path) && getMenuLink(path).contains(myEl.get('rel'))) ||
                 (myEl.get('rel') == findRelByPath(path))) {
              menuEl = myEl;
            }
          }
        });

        if (menuEl == null ) {
          menuEl = $('welcome_menu');
        }

        $$('#nav a.menuLink').each(function(myEl){
          if (myEl.getParent('div.item') != null) {
            myEl.getParent('div.item').removeClass('selected');
            replaceMenuElement(myEl, false);
          }
        });

        menuEl.getParent('div.item').addClass('selected');
        replaceMenuElement(menuEl, true);

        myAdviceFx = new Fx.Tween($('my_video_content'), {
          link : 'cancel',
          duration: 125,
          fps: 25
        });
        myFormFx = new Fx.Tween($('myAJAXContainer'), {
          link : 'cancel',
          duration: 125,
          fps: 25
        });

        /**
         * Pour la page marque
         */
        if (path == 'brand' && parameters.has('ajax') && $('myMarqueFirst') != null) {
          var myBrandEffect = new Fx.Morph($('slide_horizontal'), {
            link : 'chain',
            duration: 300
          });
          var myVars = new Hash({
            'isAJAX': true,
            'partOfPage': true
          });
          myVars = myVars.combine(parameters);

          var myString = '/brand?marque='+parameters.get('marque')+'&ajax=1';

          //alert($('myMarque').get('text')+' == '+parameters.get('marque'));
          if ($('myMarque').get('text') == parameters.get('marque')) {
            $('flash_dates').changeStep(myString);
            $('myMarque').set('text', 'ALREADY_CHANGED');
          } else {
            var myBrandRequest = new Request.HTML({
            url: basePath+'brand/'+convertUrl(myVars.toQueryString()),
            link: 'cancel',
            onRequest: function() {
                myBrandEffect.start({
                  'opacity': 0
                });
                if (Browser.Engine.trident) {
                  var title = $('slide_horizontal').getElement('h6.pointilles');
                  if (title != null) {
                    title.destroy();
                  }
                }
              },
              onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) {
                $('flash_dates').changeStep(myString);
                $('slide_horizontal').set('html', responseHTML);
                _typeface_js.renderDocument();
        //alert(myBrandEffect);
        myBrandEffect.cancel();
                myBrandEffect.start({
                  'opacity': 1
                });
                pushEvents();
              }
            });
            myBrandRequest.get();
          }
        } else if (path == 'advices2' && parameters.has('ajax') && $('my_video_content') != null ) {
          var myVars = new Hash({
            'isAJAX': true,
            'partOfPage': true
          });
          myVars = myVars.combine(parameters);
          var myAdviceRequest = new Request.HTML({
            url: basePath+'advices2/'+convertUrl(myVars.toQueryString()),
            link: 'cancel',
            onRequest: function() {
              myAdviceFx.start('opacity', [1, 0]);
              /*if (spinner != null) {
                spinner.destroy();
              }
              spinner = new Spinner('my_video_content', {
                style: {
                  background: 'transparent'
                }
              });
              spinner.show();*/

            },
            onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) {
              $('my_video_content').set('html', responseHTML);
              myAdviceFx.start('opacity', 1);
              _typeface_js.renderDocument();
                if ($('myVideoPath').get('text') != 0) {
                  var flashvars = {
                    fonts: "view/media/swf/fonts/LejabyFontLibrary.swf",
                    registerNames: "OptimaClass|OptimaItalicClass",
                    css: "view/media/swf/css/lejabyStyles.css",
                    title: $('myVideoTitle').get('text'),
                    urlvideo: "flv/conseils/"+$('myVideoPath').get('text'),
                    autoplay: "0"
                  };
                  var params = {
                    scale: "noScale",
                    salign:"TL",
                    wmode: "transparent",
                    allowScriptAccess: "always"
                  };
                  swfobject.embedSWF("view/media/swf/LejabyVideoPlayer.swf", "flashVideoContent", "340", "315", "10", "view/media/swf/expressInstall.swf", flashvars, params);
                }



                var scrollSize = $('paragraphes_container').getScrollSize();
                var divSize = $('paragraphes_container').getSize();

                // alert(scrollSize.y+' <= '+divSize.y);

                if (scrollSize.y <= divSize.y) {
                  $('scrollbar').setStyle('opacity', 0);
                  $('scrollbar').setStyle('visibility', 'hidden');
                  if (Browser.Engine.trident) {
                    $('scrollbar').setStyle('display', 'none');
                  }
                } else {
                  mySmoothScroll = new Fx.Scroll($('paragraphes_container'));
                  mySlider = new Slider($('scrollbar'), $('knob'), {
                    mode: 'vertical',
                    onChange: function(step) {
                      var dimensions = $('paragraphes_container').getCoordinates();
                      var scrollSize = $('paragraphes_container').getScrollSize();

                      var scroll = (scrollSize.y-dimensions.height)*step/100;
                      //scroll = Math.min(scroll, scrollSize.y-dimensions.height);
                //      myConsole.log(scroll);
                      $('paragraphes_container').scrollTo(0, scroll);
                      //mySmoothScroll.start(0, scroll);

                    }
                  });

                  $('paragraphes_container').addEvent('mousewheel', function(e){
                    e.stop();
                    var dimensions = $('paragraphes_container').getCoordinates();
                    var scrollSize = $('paragraphes_container').getScrollSize();
                    var scrollPos = $('paragraphes_container').getScroll();

                    var etapes = Math.max(1, 50 + ( 100 / scrollSize.y));

                    var myScroll = scrollPos.y-(e.wheel*etapes);
                    //$('paragraphes_container').scrollTo(0, myScroll);
                    var step = (myScroll*100)/(scrollSize.y-dimensions.height);
                //    myConsole.log('Scroll : '+myScroll);
                //    myConsole.log('step : '+step);
                    mySlider.set(step);
                  });
                }
              //spinner.hide();
              pushEvents();


            }
          });
          myAdviceRequest.get();
        } /*else if (path == 'forms_diagnostic_3' && $('myTestAJAX') != null ) {
          var myVars = new Hash({
            'isAJAX': true,
            'partOfPage': true
          });
          myVars = myVars.combine(parameters);
          var myAdviceRequest = new Request.HTML({
            url: basePath+'forms_diagnostic_3/'+convertUrl(myVars.toQueryString()),
            link: 'cancel',
            onRequest: function() {
              myFormFx.start('opacity', [1, 0]);
            },
            onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) {
              $('myAJAXContainer').set('html', responseHTML);
              myFormFx.start('opacity', 1);
              _typeface_js.renderDocument();
              pushEvents();


            }
          });
          myAdviceRequest.get();
        } */ else {

        parameters = parameters.combine({
          'isAJAX': 1
        });

        var isseted = false;
        var isSameAsPrevious;


        // URL Rewrite
        var uriBase = new URI($('baseURL').get('value'));
        var lang = uriBase.toString()+$('lang').get('value')+'/';


        // TODO : crado !
        if (path == '') {
          if ($('pageToLoad').get('value') != '') {
            myPath = $('pageToLoad').get('value');
            myVars  = $('AJAXvars').get('value');
            $('pageToLoad').set('value', '');
            $('AJAXvars').set('value', '');
            if (myVars == '') {
              SWFAddress.setValue(myPath);
            } else {
              SWFAddress.setValue(myPath+'?'+convertUrl(myVars));
            }
            return;

          } else {
            myPath = 'welcome';
          }
        } else {
          myPath = path;
        }

        // On crée une requete a la place
        if (myHTMLRequest != null) {
          myHTMLRequest.cancel();
          myConsole.log('cancel');
        }

        myHTMLRequest = new Request.HTML({
          url: basePath+myPath+'/'+convertUrl(parameters.toQueryString()),
          link: 'cancel',
          onRequest: function() {
            effectEnded = false;
            var myCallBack = function(){
              _typeface_js.renderDocument();
              myChain.chain(
                function() {
                  myFooterFollow.goToMax();
                },
                function() {
                  $('main_container').setStyle('background-color', $('main_container').retrieve('bg'));
                  myMainEffect.cancel();
         // Asset.css
        // alert($('lang').get('value'));
         /*Asset.css("view/style/"+$('lang').get('value')+".css", {
                  id: 'cssAsset'+$('lang').get('value'), 'class': 'cssToRemove'
                });*/
                  myMainEffect.start('opacity', 1);
          loadlanguageCSS();
                  if (spinner != null) {
                    spinner.hide();
                  }
                }
              );
              myChain.callChain();
            }
            var myCallBackPopup = function(){
              _typeface_js.renderDocument();
            }
            if (isPoppup(path)) {
              myChain.clearChain();
              myHandleChain.clearChain();
              processChange(path, myCallBackPopup, params, previous);
            } else {
              processChange(path, myCallBack, params, previous);
            }

            if (path != previous) {
              myMoveEffect.start('margin-top', -30);
            }
            if (!isPoppup(path)) {
              myConsole.log(previousNoPopin+previousParamsNoPopin+' == '+path+params)
              isSameAsPrevious = (previousNoPopin+previousParamsNoPopin == path+params);
              myConsole.log('1 : '+myPopupLine.isset()+' '+isSameAsPrevious+' '+isHandClosed);
              if ((!isSameAsPrevious && !isHandClosed && hasToReloadContent(path)) || (previousNoPopin != path && !isHandClosed && !hasToReloadContent(path))) {
                myConsole.log('OPACITY TO ZERO');
                myMainEffect.start('opacity', 0).chain(function(){
                  var tempChain = new Chain;
                  tempChain.chain(
                    function() {
                      myFooterFollow.goToMin();
                    },
                    function() {
                      $('main_content').empty();
                      effectEnded = true;
                    }
                  );
                  tempChain.callChain();
                  tempChain.callChain();
                });
                isseted = true;
               if (spinner != null) {
                  spinner.destroy();
                }
                spinner = new Spinner('main_content', {
                  style: {
                    'z-index': 99
                  }
                });
                spinner.show();
              } else if (previousNoPopin == path && !hasToReloadContent(path) && path == 'forms_diagnostic_3') {
                /*spinner = new Spinner('type_container', {
                  style: {
                    'z-index': 99,
                    'background': 'none',
                    'display':'block'
                  }
                });
                spinner.show();*/
                $('type_container').fade(0.5);
                effectEnded = true;
                // myFooterFollow.goToMin(800);
              } else {
                effectEnded = true;
              }
              myPopupLine.closePopup($empty);
              //myPopupSearch.closePopup();
              $(window.document.body).setStyle('cursor', 'progress');
              $('main_content').setStyle('cursor', 'progress');
            } else {
              $('main_container').store('bg', $('main_container').getStyle('background-color'));
              $('main_container').setStyle('background-color', '#FDFCFC');
              myMainEffect.start('opacity', 0.3);
              if (spinner != null) {
                spinner.destroy();
              }
              spinner = new Spinner('main_content', {
                style: {
                  'z-index': 15
                },
                'class': 'noLoading spinner'
              });
              spinner.show();
              effectEnded = true;
            }
          },
          onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) {
            _gaq.push(['_trackPageview', path]);

            var mySuccessFunc = function () {
              if (effectEnded) {
                $(window.document.body).setStyle('cursor', '');
                if (!isPoppup(path)) {
                  $('main_content').setStyle('cursor', '');
                  myConsole.log('2 : '+isseted+' '+isSameAsPrevious+' '+isHandClosed);
                  if (!isSameAsPrevious && !isHandClosed) {
                    //myConsole.log('AAAAAAAAAAAAAAAAAA');
                    $('main_content').setStyle('background', 'none');
                    $('main_content').set('html', responseHTML);
                    if (previousNoPopin == path && !hasToReloadContent(path) && path == 'forms_diagnostic_3') {
                      //myFooterFollow.goToMax();
                      $('type_container').set('opacity',0.5);
                      $('type_container').fade(1);
                    }
                    var waitForProcessChange = function() {
                      if (isProcessExecuted) {
                        myHandleChain.chain(function() {
                          _typeface_js.renderDocument();
                        });
                        myHandleChain.callChain();
                        myHandleChain.callChain();
                      } else {
                        waitForProcessChange.delay(100);
                      }
                    }
                    waitForProcessChange.delay(50);
                  }
                  pushEvents.run();
                  isHandClosed = false;
                } else {
                  if (isPoppup(previous)) {
                    myPopupLine.closePopup(function(){
                      var waitForProcessChange = function() {
                        if (isProcessExecuted) {
                          myHandleChain.chain(function() {
                            myPopupLine.setContents(responseHTML);
                            _typeface_js.renderDocument();
                          });
                          myHandleChain.callChain();
                          myHandleChain.callChain();
                        } else {
                          waitForProcessChange.delay(100);
                        }
                      }
                      waitForProcessChange.delay(50);
                      isHandClosed = false;
                    });
                  } else {
                    var waitForProcessChange = function() {
                      if (isProcessExecuted) {
                        myHandleChain.chain(function() {
                          myPopupLine.setContents(responseHTML);
                          _typeface_js.renderDocument();
                        });
                        myHandleChain.callChain();
                        myHandleChain.callChain();
                      } else {
                        waitForProcessChange.delay(100);
                      }
                    }
                    waitForProcessChange.delay(50);
                    isHandClosed = false;
                  }
                }

                previous = path;
                previousParams = params;
                if (!isPoppup(path)) {
                  previousNoPopin = path;
                  previousParamsNoPopin = params;
                }

                myConsole.log('END : '+previous+previousParams);
                myConsole.log('END2 : '+previousNoPopin+previousParamsNoPopin);
              } else {
                clearTimeout(myTimerSuccess);
                myTimerSuccess = mySuccessFunc.delay(100);
              }
            }
            mySuccessFunc();
          },
          onCancel: function() {
            myChain.clearChain();
            myHandleChain.clearChain();
            previous = path;
            previousParams = params;
            if (!isPoppup(path)) {
              previousNoPopin = path;
              previousParamsNoPopin = params;
            }
          }
        }).get();
      }
    }

      SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);
      var myElement = new Element('span', {
        'id': 'page_ajaxified',
        'class': 'hidden',
        'styles': {
          'visibility': 'hidden'
        }
      });
      myElement.inject($('footer'));

    /**
     * Pour le formulaire de recherche
     */
    $('item_recherche').addEvent('click', function(e){
      e.stop();
      SWFAddress.setValue($('pageToLoad').get('value'));
    });

    /**
     * Pour le menu deroulant du footer
     */
    var mySelect = $('lang_switch_select');
  //  var mySelect = new elSelect( {
  //    container : 'lang_switcher',
  //  });

    $('mylangSelectForm').addEvent('submit', function(e){
      e.stop();
      $('lang').set('value', mySelect.get('value').toLowerCase())
      calcURIs($('lang').get('value'));
      window.location.replace(basePath);
    });

    /**
     * Musique (flash)
     */
    var flashvars = {
      config: escape(basePath+"xml/xml-musique")
    };
    var params = {
      scale: "noScale",
      salign:"TL",
      allowScriptAccess: "always",
      wmode: "transparent"
    };
    swfobject.embedSWF("view/media/swf/LejabySurroundSound.swf ", "flashContentMusic", "34", "40", "10", "swf/expressInstall.swf", flashvars, params);

  }


});
