
Application = {};

Application.FADE_SPEED_LOW = 1000;
Application.FADE_SPEED_HIGH = 300;
Application.FADE_SPEED_BASIC = 500;
Application.AJAX_NAVIGATION_IS_ACTIV = true;
Application.URL_REWRITING_IS_ACTIV = true;

Application.MARQUEUR_HEIGHT = 32;

Application.CARROUSSEL_FREQUENCE = 5000;


Application.main = function(){

  if(Application.isIe7()){
    $("#right-coll-footer").css("display", "none");
  }
  
  if($("body").hasClass("home")){
    Application.initSlider();
  }
  
  if($("body").hasClass("gamme")){
    Application.initCuisineFilter();
  }
  
  if($("body").hasClass("electro")){
    Application.initElectromenagerNavigator();
  }
  
  //listing des offres d'emploi
  if($(".listing_oe").length > 0){
    var rubriques_slider = new OeSlider(".oe_listing_item_content", ".oe_listing_item_btn_plus");
  }
  
  // listes déroulantes
  if($(".candidature_form").length > 0){
    drop_down_manager.init();
  }
  
  // la newsletter
  if($("#nl_validate").length > 0){
    Application.initNl();
  }

  if($("#destock_slider").length){
    Application.initDesctockageVisionneuse();
  }

  // défilement automatique dans le bloc actu
  if($(".visionneuse_actu_btn").length > 1){
    var actu_visionneuse = new VisionneuseActualite(".news", ".btn_visionneuse", 4000);
    actu_visionneuse.start();
  }
  
  // carte interactive
  if($(".carte_magasin").length > 0){
    Application.initCarte();
  }
  
  // page best of low cost
  if($("#detail_pack").length > 0){
    Application.initBestOfLowCost();
  }
  
  if(Application.AJAX_NAVIGATION_IS_ACTIV){
    //navigation dans les pages type
    if($(".low_cost #left_sidebar ul li").length > 0 && !$("#middleContents.emploi").length && !$("#middleContents .actu_view").length ){
      Application.initPageTypeNavigation("#low_cost");
    }else if($("#astuces").length > 0 ){
      Application.initPageTypeNavigation("#astuces");
    }else if($(".electro #left_sidebar ul li").length > 0){
      Application.initPageTypeNavigation("#electro .pack_desc");
    }else if($("#liste_destock").length > 0){
      Application.initDestockageNavigation("#liste_destock_content");
    }else if($(".finitions").length > 0){ 
      Application.initPageTypeNavigation(".finitions_types");
    }
  }
  
  if($(".icone_info").length){
    var informations = [];
    $(".icone_info").each(function(index, elt){
      var info = new InfoCuisine($(this));
      informations.push(info);
    });
  }
  
  Application.initMenuLinkAnimation();
  
  Application.prefooterItemInit();
  Application.initCanceledLinks();
  antispam.init("#page_contenu");
  
  Application.initLazyLoading();
  
  Application.test();
};



Application.initCanceledLinks = function(){
 $("#region_title").click(function(evt){
      evt.preventDefault();
  });
};



/**
 *
 */
Application.initNl = function(){
  var nl = new NewsLetterValidator();
};




Application.prefooterItemInit = function(){
  $(".pre_footer_reactiv_item").each(function(index, elt){
    var item = new PrefooterReactivItem($(this));
  });
};



/**
 *
 */
Application.initDesctockageVisionneuse = function(){
  var items = [];
  $("#destock_images_listing ul").each(function(index, elt){
    var elts = $(this).children();
    var imgMin = $.trim($(elts).first().text());
    var imgMid = $.trim($(elts).first().next().text());
    var imgBig = $.trim($(elts).first().next().next().text());
    
    var item = new VisionneuseDestockageItem(imgMin, imgMid, imgBig);
    items.push(item);
  });
  var visionneuseDestockage = new VisionneuseDestockage(items, "#destock_detail_block_img", ".destock_detail_block_img_min", "#destock_detail_block_img_reactiv");
};


/**
 *  animations pour la page best of low cost 
 */
Application.initBestOfLowCost = function(){
  var bestOf = new BestOfLowCost("#magazins", "#listing_magasin ul li", "#listing_magasin", "#listing_magasin .close");
}


/**
 *  hover un peu stylé sur les lien du header
 **/
Application.initMenuLinkAnimation = function(){
  $(".menu_link").each(function(index, elt){
    var menu_link = new MenuLink($(this));
  })
};




/**
 *  navigation dans les pages type
 */
Application.initPageTypeNavigation = function(updatingAreaSelector){
  var page_navigation = new PageNavigation("#left_sidebar ul li a", updatingAreaSelector, "#left_sidebar ul");
};


/**
 *
 */
Application.initDestockageNavigation = function(updatingAreaSelector){
  MARQUEUR_HEIGHT = 24;
  var destockNavigation = new PageNavigation("#region ul li a",updatingAreaSelector, "#region ul");
};


/**
 * la carte interactive
 */
Application.initCarte = function(){
    var carte = new Carte();
};


/**
 * navigation pour l'electroménager
 */
Application.initElectromenagerNavigator = function(){
  var electroNavigator = new ElectromenagerNavigator(".btn_change_pack", "#slider_navigator");
};


/**
 * filtrage pour les cuisines
 */
Application.initCuisineFilter = function(){
  var cuisineFilter = new CuisineFilter("#listing_cuisine", ".cuisine_prix_filter",".cuisine_carac_filter");
};



/**
 * slider de la home
 */
Application.initSlider = function(){ 
  var slider = new CarrousselSlider("#slider_container", ".slider_carroussel", "#info_slide_container", ".info_slide_content", Application.CARROUSSEL_FREQUENCE);
  slider.load();
};





Application.test = function(){

  
};

Application.isIe7 = function(){
  return ($.browser.msie && $.browser.version == "7.0");
};


Application.initLazyLoading = function(){
  var lazyLoader = new LazyLoading();
  $('.lazy_loading').each(function(index, elt){
    lazyLoader.add($(this), $(this).data('lazy-img'), $(this).data('lazy-type'), $(this).data('lazy-loader'));
  });
  lazyLoader.startLoad();
};



// antispam : remplace [chez] par @ pour les liens contenu dans "where"
antispam = {};
antispam.init = function(where) { 
  //$(where + ' a[href^=mailto:]').each(function(index, elt){ // ne fonctionne plus ???
  $(where + ' a').each(function(index, elt){
    l = $(this).attr("href");
    $(this).attr("href",l.replace("[chez]","@"));

    l = $(this).html();
    $(this).html(l.replace("[chez]","@"));
  });
};


// Serialize JSON 
(function($){
    $.fn.serializeJSON=function(){
        var json={};
        jQuery.map($(this).serializeArray(),function(n,i){
            var name;
            var index;
            
            
            if(n['name'].indexOf('[]') !== -1){
                n['name']  = n['name'].split('[')[0];
            }else if(n['name'].indexOf("[") !== -1){
                index = n['name'].split('[')[1].replace("]","");
                name  = n['name'].split('[')[0];
            }

            if (json[n['name']]) {
                if (!json[n['name']].push) {
                    json[n['name']] = [json[n['name']]];
                }else{
                    json[n['name']][n['index']] = (n['value'] || '');
                }
            } else {
                json[n['name']] = n['value'] || '';
            }
        });
        return json;
    };
})(jQuery);




$(document).ready(function(){
  Application.main();
});


