/**
 * ITM.js
 * fichier js principal pour le Site Intermarché
 *
 * @package intermarche
 * @subpackage js
 * @author     2S3i
 * @version    SVN: $Id: itm.js 106 2009-01-26 14:46:58Z bozec $
 */

if (ITM === undefined) { var ITM = {} };

(function($) {

  ITM.separateListItems = function() {
    var items = arguments[0] || 'li';
    $(items).each( function(index, el) {
      if (index < $(items).size() - 1) {
        if (el.tagName == 'LI') {
          $(el).append('|');
        }
        if (el.tagName == 'A') {
          $(el).after('|');
        }
      }
    });
  };

  ITM.textShadow = function(targetElement) {
    if (typeof(targetElement) != 'object') {
      targetElement = document.getElementById(targetElement);
    }
    if (targetElement.firstChild != null) {
      var value = targetElement.firstChild.nodeValue;
      targetElement.style.position = 'relative';
      targetElement.style.zIndex = 1;

      var newEl = document.createElement('span');
      newEl.appendChild(document.createTextNode(value));
      newEl.className = 'shadowed';
      newEl.style.color = '#333';
      newEl.style.position = 'absolute';
      newEl.style.left =  '1px';
      if ($.browser.msie && $.browser.version < '8.0') {
        newEl.style.top = '4px';
      }
      else {
        newEl.style.top = '1px';
      }
      newEl.style.zIndex = -1;

      targetElement.appendChild(newEl);
    }
  };

  ITM.hover = function() {
    var items = arguments[0];
    $(items).hover(
      function () {
        $(this).toggleClass("hover");
      },
      function () {
        $(this).toggleClass("hover");
      }
    );
  }

  // chargement sIFR
  if (typeof sIFR == "function") {

    var colorSIFR = "#9e7352";
    if (ITM_THEME == 'infos') {
      var colorSIFR = "#4295A2";
    }
    else if (ITM_THEME == 'brands') {
      var colorSIFR = "#EF8412";
    }
    else if (ITM_THEME == 'loyalty') {
      var colorSIFR = "#B39649";
    }
    else if (ITM_THEME == 'onlinestore') {
      var colorSIFR = "#82A009";
    }
    else if (ITM_THEME == 'services') {
      var colorSIFR = "#785F87";
    }
    else if (ITM_THEME == 'thisweek') {
      var colorSIFR = "#E13A2C";
    }

    sIFR.replaceElement(named({
      sSelector:"body h2.itm_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/ArialNarrow_Shaded.swf",
      sColor: colorSIFR,
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );

    sIFR.replaceElement(named({
      sSelector:"body h3.itm_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/ArialNarrow_Shaded.swf",
      sColor: "#9e7352",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );

    sIFR.replaceElement(named({
      sSelector:"body #home .pagelet_cmsedito_homepage h4.itm_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/ArialNarrow_Shaded.swf",
      sColor: "#4295a2",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );

    // remaplcement sIFR pour les smallDisplay
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .services .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#d7c0e6",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );

    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .thisweek .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#f6c7c3",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .perso .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#d9c9bc",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .onlinestore .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#d6dab9",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .loyalty .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#efdfae",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .infos .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#a6d7df",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );
    sIFR.replaceElement(named({
      sSelector:".pagelet_smalldisplay .brands .itm_small_sifr",
      sFlashSrc:"/Itm2.Controls/portail/_montage_2S3I/library/js/swf/SlimSansSerif.swf",
      sColor: "#fcdeb4",
      sFlashVars:"textalign=left",
      sCase:"upper",
      sWmode:"transparent"
      })
    );

  }

  /*
       * Ultimate implementation of getElementsByClassName
       *  @author John resig
       *  @see http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
      */
  ITM.getElementsByClassName = function (oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all :
        oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
  }

  ITM.modal = function() {
    modalOverlay = '<div id="overlay_box"><div id="overlay"></div></div>';
    $('#footer').after(modalOverlay);
    $('#overlay_box').css({ 'height': $(document).height() });
    $('#overlay').css({ 'height': $(document).height() });
    $('#overlay_box, #overlay').bgiframe();
    $('#overlay_box').next('div').addClass('lightbox');
  }

  ITM.unmodal = function() {
    if ($('#overlay_box') && $('#overlay')) {
      $('.lightbox').fadeOut(0, function() {
        $('#overlay_box, #overlay, .lightbox').remove();
      });
    }
  }

  ITM.formatTable = function() {
    $('#pdv_overlay_results tr:first').addClass('first');
    $('#pdv_overlay_results tr:last').addClass('last');
    $('#pdv_overlay_results tr').each( function(index, el) {
      $(this).children('td').eq(0).addClass('first');
    });
  }

  $(document).ready( function() {
    /* appel menu déroulant */
    $('ul.sf-menu').superfish({
      delay: 0,
      speed: 'fast',
      autoArrows: false,
      disableHI: true
    });

    /* séparateur sur les menus du footer  */
    ITM.separateListItems('#footer_top_links li');
    ITM.separateListItems('#footer_links li');

    // ajout ombre portée sur texte
    var navigationHeading = $('#main_navigation h3');
    if (navigationHeading.length > 0) {
      for (var i = 0; i < document.getElementById('main_navigation').getElementsByTagName('h3').length; i++) {
        ITM.textShadow(document.getElementById('main_navigation').getElementsByTagName('h3')[i]);
      }
    }
    var textshadowSelector = $('.textshadow');
    if (textshadowSelector.length > 0) {
      for (var i = 0; i < ITM.getElementsByClassName(document, "*", 'textshadow').length; i++) {
        ITM.textShadow(ITM.getElementsByClassName(document, "*", 'textshadow')[i]);
      }
    }

    // ajout ombre sur menu
    $('.root_child .tab_conteneur').wrap('<div class="shadowBox"></div>');
    // ombre portée top sur les contenus
    $('#content_simple #content_main_navigation').before('<div id="content_main_top_shadow"></div>');
    $('#content_navigation #content_main').wrap('<div id="content_main_top_shadow"></div>');

    // correctif rollover IE8
    ITM.hover("#main_navigation ul.root li .tab_conteneur a, .link, .toolbar li, #content #content_main #themas #themas_content .thema_item a");

    $('td.service_repeater').each( function(index, el) {
      if ($(el).find('.service_description_link').length > 0) {
        $(el).hover( function() {
          $(this).toggleClass("hover");
        }, function() {
          $(this).toggleClass("hover");
        });
      }
    });

    // rectif css diverses
    $('#content #content_main .pagelet_cmsoffreemploi_largesearch p:last').css('margin-bottom', '0');

    // ajout des classes en plus sur les tableaux, et repeaters
    $('.pagelet_cmsrecette_menusemaine .summary_items li:last').addClass('last');
    $('#pagelet_home_prospectus_content .item:gt(0)').hide();
    $('#home #content .cmsedito_homepage_wrapper .column:last').addClass('last');
    ITM.formatTable();
    $('#meteo_widget_inside th:first').addClass('first');
    $('#meteo_widget_inside tbody tr').each( function(index, el) {
      $(this).children('td').eq(0).addClass('first');
    });
    $('.services .service_repeater:even').addClass('even');
    $('.pagelet_developpementphotos_avantage p:odd').addClass('odd');

    // toolbar
    $.FontSizer.Init({
      'obj': '.entry',
      'min': 8,
      'max': 16,
      'step': 2,
      'unit': 'px',
      'def': 11
    });
    $('.increase-font-article').click( function(event) {
      event.preventDefault();
      $.FontSizer.IncreaseSize();
    });
    $('.decrease-font-article').click( function(event) {
      event.preventDefault();
      $.FontSizer.DecreaseSize();
    });
    if ($.browser.msie && $.browser.version < '8.0') {
      DD_belatedPNG.fix('#content #content_main .pagelet_developpementphotos_avantage .pagelet_developpementphotos_avantage_inside p');
    }
  });
})(jQuery);
