/**
  Pricelr v1.0
  Ultimate Pricing Table Solution
  (c) Web factory Ltd 2011.
**/

(function($){
  $.fn.pricelr = function(options) {
  var defaults = {
    zebra: false,
    prettyColumn: 0,
    prettyHover: true,
    prettyHoverSticky: true,
    ribbons: '',
    colors: '',
    tooltips: true,
    extra: true
  };
  
  var options = $.extend(defaults, options);
  options.colors = options.colors.replace(/ /g, '').split(',');
  options.ribbons = options.ribbons.replace(/ /g, '').split(',');
  
  // loop trough all DOM elements users specified
  return this.each(function() {
    var obj = $(this);
    var pr_price_box = $('.pr-price-box', obj);
    
    // we can only work on our tables
    if (!obj.hasClass('pr-pricing-tables')) {
      return false;
    }
    
    // hide all pr-extra elements
    $('.pr-extra', obj).hide();
  
    // tipsy
    if (options.tooltips) {
      $("li[title!='']", obj).tipsy({gravity: $.fn.tipsy.autoWE, fade: 1});
    } // tipsy
  
    // prettyHover
      if (options.prettyHover) {
        pr_price_box.hover(function() {
          pr_price_box.removeClass('pr-pretty-hover');
          $(this).addClass('pr-pretty-hover');
        }, function(col) {
          if(!options.prettyHoverSticky) {
            pr_price_box.removeClass('pr-pretty-hover');
          }
        } 
      );
    } // prettyHover
  
    // even-odd
    if (options.zebra) {
      pr_price_box.each(function(index, element) {
        if (options.zebra == 'odd') {
          var tmp = 0;
        } else {
          var tmp = 1;
        }
        $('ul:not(no-zebra) li:visible:not(.pr-extra)', element).each(function(index2, element2) {
          $(element2).removeClass('pr-odd');
          $(element2).removeClass('pr-even');
          if ((index2 - tmp) % 2) {
            $(element2).addClass('pr-odd');
          } else {
            $(element2).addClass('pr-even');
          }
        }); // li each
      }); // column each
    } // even-odd
  
    // ribbon & pretty-hover column
    if (options.ribbons.length || options.prettyColumn || options.colors) {
      var len = pr_price_box.length;
      pr_price_box.each(function(index, element) {
        if (options.colors.length) {
          if (options.colors.length == len) {
            $(element).addClass('pr-' + options.colors[index]);
          }
        } // if colors
        
        if (options.ribbons.length) {
          if (options.ribbons[index]) {
            $('.pr-price-box-header', element).prepend('<div class="pr-' + options.ribbons[index] + '"></div>');
          }
        } // if ribbons
      
        if (index == (options.prettyColumn - 1)) {
          $(element).addClass('pr-pretty-hover');
        }
      });
    }
    // ribbon
  
  // extra
  if (options.extra) {
     pr_price_box.each(function(index, col) {
       var pr_extra = $('.pr-extra', col);
       if (pr_extra.length != 1) {
         return true;
       }
       var li_last = $('li:last', col);
       var li_first = $('li:first', col);
       
       pr_extra.addClass(li_last.attr('class'));
       pr_extra.height(2 * parseInt(li_first.css('height')) + 
                           parseInt(li_first.css('padding-top')) + 
                           parseInt(li_first.css('padding-bottom')) - 1);
       pr_extra.css('bottom', parseInt(li_last.css('height')) + 
                              parseInt(li_last.css('padding-top')) + 
                              parseInt(li_last.css('padding-bottom')) - 1);
       $('.pr-button', col).hover(
         function() {
           pr_extra.fadeIn(600);
         },
         function() {
           pr_extra.fadeOut(300);
         }
       );
     } // each
   );
  } // extra
 
  }); // return each
 };
})(jQuery);
// $.pricelr
