;(function($) {
  // i18n defaults
  $.efI18N = $.efI18N || {};
  if(!$.efI18N.avInfoTooltip) {
    $.efI18N.avInfoTooltip = {
      //header : 'Dieses Produkt ist in folgenden Größen erhältlich:',
      // NMAG get header by variation
      header : function(variation) {
        variationOut = (variation == 'Grösse' ? 'Größen' : variation + 'n');
        return 'Dieses Produkt ist in folgenden '+ variationOut +' erhältlich:';
      },
      availableLegend : 'verfügbar',
      outOfStockLegend : 'ausverkauft',
      availableText : 'Der Artikel ist verfügbar!',
      outOfStockText : 'Der Artikel ist leider vergriffen!'
    };
  }

  $.fn.extend({
    efAvInfoTooltip : function(settings) {
      return this.efTooltip({
        extraClass : 'av_legend',
        contents : _getContents
      });
    }
  });

  //{{{ private properties and methods
  var _helper = null;
  var i18n = $.efI18N.avInfoTooltip;

  function _getContents(ev) {
    if(_helper == null) { _createHelper(); }
    var productId = this.id.replace(/prd_av_/,"");
    _updateHelper(productId);

    return _helper;
  };

  function _createHelper() {
    _helper = $(
        '<div>'
      // NMAG dont show header yet
      +   '<p><span class="ttheader" />' + '<p>'
      +   '<div class="av_data"></div>'
      +   '<div class="legend">'
      +     '<span class="av av_available">' + i18n.availableText + '</span>'
      +     '<span>= ' + i18n.availableLegend + '</span><br class="clear" />'
      +     '<span class="av av_soldout">' + i18n.outOfStockText + '</span>'
      +     '<span>= ' + i18n.outOfStockLegend + '</span><br class="clear" />'
      +   '</div>'
      + '</div>');
  };

  function _updateHelper(productId) {
    //NMAG changed to dynamic element attribute "json"
    var avData = $.evalJSON($('#prd_av_' + productId).attr('json'));
    var avHtml  = "";
    for(var idx = 0; idx < avData.length; idx++){
      var available = avData[idx];
      if(available.s) {
        avHtml += '<span class="av av_available">' + i18n.availableText + '</span>';
      } else {
        avHtml += '<span class="av av_soldout">' + i18n.outOfStockText + '</span>';
      }
      avHtml += '<span class="size">'+available.n+'</span><br class="clear" />';
    }

    // NMAG set header by variation
    $('.ttheader', _helper).html($.efI18N.avInfoTooltip.header($('#prd_av_' + productId).attr('variation')));

    $('.av_data', _helper).html(avHtml);
  };
  //}}}
})(jQuery);
