// ============================================
// Event Slider
//    Event control to open and close events. When an event is opened all other open ones are closed.
//    author: John Norton
//    date: 4/2/09
//    version: 0.1
// ============================================
// Options:
//   listContainer - jQuery selection string. 
//   slideTime     - Integer representing the time it takes to slide down in miliseconds. (1000 = 1s).
//   cleanTime     - Integer representing the time it takes to slide up in miliseconds. (1000 = 1s).
//   itemTag       - jQuery selection string.
//   triggerItem   - jQuery selection string.
//   triggerClose  - jQuery selection string.
//   expandedClass - CSS class name.
// ============================================
// How to call:
//   $(document).EventSlider({options});
// ============================================
// Example HTML: Closed List Item:
// <ul class="eventList">
//   <li>
//     <span><a class="closeBtn" href="javascript:;">Close</a></span>
//     <span class="eventName"><a href="javascript:;">Event Name</a></span>
//   <li>
//   ...
// </ul>
// Example HTML: Open List Item:
// <ul class="eventList">
//   <li class="expanded">
//     <span><a class="closeBtn" href="javascript:;">Close</a></span>
//     <span class="eventName"><a href="javascript:;">Event Name</a></span>
//   <li>
//   ...
// </ul>
// ============================================
(function($){
	$.fn.EventSlider = function(options){
		var settings = jQuery.extend({
				listContainer:	 '.eventList',
				slideTime:		 1500,
				cleanTime:		 500,
				itemTag:		 'li',
				triggerItem:	 '.eventName a',
				triggerClose:	 '.closeBtn',
				expandedClass:	 'expanded'
		},options||{});
		
		$(document).ready(function(){
			//alert('hi');
			$(settings.listContainer+' '+settings.itemTag+' '+settings.triggerItem).bind('click', $.fn.EventSlider.startOpen);
			$(settings.listContainer+' '+settings.itemTag+' '+settings.triggerClose).bind('click', $.fn.EventSlider.startClose);
		});
		
		$.fn.EventSlider.startOpen = function()
		{
			if($($(this).parents().get(1)).hasClass(settings.expandedClass) == false)
			{
				o = $(this).parent().next();
				$(o.parent()).addClass(settings.expandedClass);
				$(o).slideDown(settings.slideTime);
				$(o.parent()).animate({paddingLeft: "144px"}, settings.slideTime);
				$(o.next()).animate({width: "124px", height: "124px"}, settings.slideTime);
				$(o.next().children().get(0)).animate({width: "124px", height: "124px"}, settings.slideTime);
			}
		}
		
		$.fn.EventSlider.startClose = function()
		{
			$($(this).next().next().next()).slideUp(settings.slideTime);
			$($(this).parent()).removeClass(settings.expandedClass);
			$($(this).parent()).animate({paddingLeft: "70px"}, settings.slideTime);
			$($(this).next().next().next().next()).animate({width: "49px", height: "49px"}, settings.slideTime);
			$($(this).next().children().get(0)).animate({width: "49px", height: "49px"}, settings.slideTime);
		}
	};
})(jQuery);
