/**
* jQuery.Alternate
* Copyright (c) 2009 Brian Campbell - brian(at)briancampbell(dot)name
* Licensed under GPLv3
* Date: Feb 12, 2009
*
* @projectDescription Set alternating styles to sibling elements 
* http://alternate.briancampbell.name
*
* @author Brian Campbell
* @version 1.0
*
* @param {odd, even, hover}
* odd : class name for odd (1st, 3rd, 5th etc.) elements (default = "odd")
* even : class name for even (2nd, 4th, 6th etc.) elements (default = "even")
* hover : boolean (default = false)
* @return {jQuery} Returns the same jQuery object, for chaining.
*
* @example $('#my_table tbody tr').alternate();
*
* @$('#my_list li').alternate({odd:'light', even:'dark'});
*
* @$('#my_list dd').alternate({hover:true});
*
* All the parameters are optional.
*
* @example css
* .odd {background-color:lightgray}
* .even {background-color:white}
* .hover {background-color:darkgray; font-style:bold}
*
*/

;(function($){
	
	$.fn.alternate = function(options) {

		var opts = $.extend({}, $.fn.alternate.defaults, options);

		return this.each(function(i) {

			var $this = $(this);
			var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
			
			if(i % 2 == 0 && opts.even.length){
				$this.removeClass(opts.odd).addClass(opts.even);
			} else if(opts.odd.length){
				$this.removeClass(opts.even).addClass(opts.odd);
			}
			
			if(opts.hover){
				$this.hover(
					function(){
						$(this).addClass('hover');
					}
					,function(){
						$(this).removeClass('hover');
					}
				);
			}

		});

	};

  $.fn.alternate.defaults = {
  	odd : 'odd'
  	,even : 'even'
  	,hover : false
  };

})(jQuery);