/*
 * jQuery Size Selector Plugin v1.0
 * by TechNinja - 12/2010
 *
 * Centrihost
 *
 *
 */

jQuery.fn.sizeselect = function(settings) {
    settings = jQuery.extend({
    sizes: {},
    select_msg: 'Select Size',
    scale_labels: ['Inch', 'Metric'],
    table_class: ''
  }, settings);
  return this.each(function(){
    var $sizer = jQuery(this);
    $sizer.html('<table class="' + settings.table_class + '"><tr><td class="sizekey key1"><div class="wrapper">' + settings.select_msg + '</div></td><td class="sizekey key2"><div class="wrapper"><span>-</span>' + settings.scale_labels[0] + '<div class="line">|</div>' + settings.scale_labels[1] + '</div></td></tr></table>');
    $sizer.addClass('size-selector');

    render_sizes(settings.sizes);

    function render_sizes(sizes){
      // Clear non key tds
      $('td', $sizer).not('.sizekey').remove();

      var i = 0;

      // Build out each size into DOM elements
      $.each(sizes, function(value, labels){
        var extra_class = '';

        if (i == sizes.length-1){
          extra_class+= ' last';
        }

        var label = labels[0];
        if (labels[1] != undefined){
          label = label + '<div class="line">|</div>' + labels[1];
        }

        $('tr', $sizer).append('<td class="sel-item' + extra_class + '"><a class="wrapper ' + value + '" href="#' + value + '"><span>-</span><label>' + label + '</label></a></td>');

        i++;
      });

      // Bind click events for chamber nolinks in menu
      $('a', $sizer).each(function(){
        $size = $(this);
        size_name = $size.attr('href').slice(1);

        // Chamber Specific override
        if (size_name.split('_')[0] == 'chamber'){
          var $menu_link = $("#menu-wrapper a:contains('"+$size.text().slice(1).split(' ')[0]+"')");
          $menu_link.click(function(){
            var $size_link = $("a:contains('"+$(this).text().split(' ')[0]+"')", $sizer);
            update_tabs($size_link.attr('href').slice(1));
          });
        }
      });

      // Bind click events for each size
      $('a', $sizer).click(function(){
        size_name = $(this).attr('href').slice(1);

        // Chamber Specific override
        if (size_name.split('_')[0] == 'chamber'){
          var $menu_link = $("#menu-wrapper a:contains('"+$(this).text().slice(1).split(' ')[0]+"')");
          $menu_link.click();
        }else{
          // If we're on the intro tab and we click a size, default to the All Types tab
          if ($('#product-tabs').tabs('option', 'selected') == 0){
            $('#product-tabs').tabs('select', 1)
          }
          update_tabs(size_name);
        }

        // Prevent full page load on sub page loads
        address_skip_load = true;
        $.address.parameter('size', size_name);
        return false;
      });


      // Default tabs to All Sizes only if one isn't set by address
      var url_size = $.address.parameter('size');
      if (url_size){update_tabs(url_size);}else{
        update_tabs('*', true);
      }

    }

    function update_tabs(size, noload){
      // Visually select size
      $('td.active', $sizer).removeClass('active');
      $('a[href=#'+size+']', $sizer).parents('td').addClass('active');

      // Chamber Specific Override
      if (size.split('_')[0] == 'chamber'){
        size = size.split('_')[1];
        var root = '/products/product-intros/category/chambers-';
        $('#product-tabs li a.atlas-ajax').each(function(index){
          $(this).data('path', root + size)
          if (!noload && index == $('#product-tabs').tabs('option', 'selected')){load_product_content($(this).data('path'));}
        });

      }else{
        $('#product-tabs li a.atlas-ajax').each(function(index){
          if (index !=0){ // Ignore updates to the first tab (Intro doesn't care about sizes)
            $(this).data('path', $(this).data('root') + '/' + size)
            if (!noload && index == $('#product-tabs').tabs('option', 'selected')){load_product_content($(this).data('path'));}
          }
        });
      }
    }
    $sizer.height(115).slideDown('slow');
  });
};
