(
	function($) {
		$.hrzAccordion = {
   			setOnClick: function(i, container, finalWidth, settings) {
				$("#" + container + "Handle" + i).bind("click", function() {
					/* if this handle is not the selected one */
					if($("#" + container + "Handle" + i).attr("rel") != "selected") {
						/* clear the rel attribute of all handles */
   						$('[@id*=' + container + 'Handle]').attr("rel", "");
						/* set the class of all handles to the handle class */
   						$('[@id*=' + container + 'Handle]').attr("class", settings.handleClass);
						/* Add selected to this handle's class */
	   					$("#" + container + "Handle" + i).addClass(settings.handleClassSelected);
	
						/* animate the closure of all content divs */
   						$('div[@id*=' + container + 'Content]').animate(
							{width: "hide"},
							settings.closeEaseSpeed,
							settings.closeEaseAction
						);
						
						/* animate the opening of this content div */
						$('#' + container + 'Content' + i).animate(
							{
								width: finalWidth + "px"
							},
							settings.openEaseSpeed, 
							settings.openEaseAction
						);

						/* note this as the selected handle */
		   				$("#" + container + "Handle" + i).attr("rel", "selected");
		
					}
				});	
			}
	    };
	
		$.fn.extend(
			{
				hrzAccordion: function(options) {
					this.settings = {
						containerClass     : "hrzContainer",
						listItemClass      : "listItem",					
						contentStartClass  : "contentStart",
						contentEndClass    : "contentEnd",
						contentWrapper     : "contentWrapper",
						contentInnerWrapper: "contentInnerWrapper",
						handleClass        : "handle",
						handleClassOver    : "handleOver",
						handleClassSelected: "handleSelected",
						handlePosition     : "left",
						closeEaseAction    : "backin",
						closeEaseSpeed     : 500,
						openEaseAction     : "easein",
						openEaseSpeed      : 500,
						openOnLoad		   : 1
					};
	
					if(options)
						$.extend(this.settings, options);
					var settings = this.settings;
			
					return this.each(function(a){
    		
				
						var container = $(this).attr("id") || $(this).attr("class");
					
						$(this).wrap("<div class='"+settings.containerClass+"'></div>");
			
						var elementCount = $('#'+container+' > li, .'+container+' > li').size();
						var containerWidth = $("."+settings.containerClass).width();
			
						$('#'+container+' > li, .'+container+' > li').each(function(i) {
			
							$(this).attr('id', container+"ListItem"+i);
			   				$(this).attr('class',settings.listItemClass);
		       				$(this).html("<div class='" + 
								settings.contentStartClass + 
								"' id='" + 
								container + 
								"Content" + 
								i + 
								"'>" + 
								"<div class=\"" + 
								settings.contentWrapper + 
								"\"><div class=\"" + 
								settings.contentInnerWrapper + 
								"\"> " + 
								$(this).html() + 
								"</div></div></div>"
							);
			   	
							if($("div",this).hasClass(settings.handleClass)){
								var html = $("div."+settings.handleClass,this).attr("id",""+container+"Handle"+i+"").html();
								$("div."+settings.handleClass,this).remove();
								var handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
							}else{
								var handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'></div>";
							}
							switch(settings.handlePosition ){
								case "left":
								$(this).prepend( handle );
								break;
								case "right":	
								$(this).append( handle );	
								break;
								case "top":	
								$("."+container+"Top").append( handle );	
								break;
								case "bottom":	
								$("."+container+"Bottom").append( handle );	
								break;
							}
			   		
							var handleWidth = $("."+settings.handleClass).width();
							/* var finalWidth = containerWidth - (elementCount*handleWidth)-15; */
							var finalWidth = 490;
				
							$("#"+container+"Handle"+i).bind(
								"mouseover",
								function(){
									$("#"+container+"Handle"+i).addClass(settings.handleClassOver);
								}
							);
			    
							$("#"+container+"Handle"+i).bind(
								"mouseout",
								function(){
									if( $("#"+container+"Handle"+i).attr("rel") != "selected"){
										$("#"+container+"Handle"+i).removeClass(settings.handleClassOver);
									}
								}
							);
					
							// resize check start
					    	$(window).bind('resize', function(){
								var containerWidth = $("."+settings.containerClass).width();
								/* var finalWidth = containerWidth - (elementCount*handleWidth)-15; */
								var finalWidth = 490;
						
								$("#"+container+"Handle"+i).unbind("click");
								$("."+settings.contentWrapper).css({width: finalWidth });
						
								if( $("#"+container+"Handle"+i).attr("rel") == "selected"){
									$('#'+container+'Content'+i).animate({className:settings.contentEndClass, width: finalWidth }, 
																		 		settings.openEaseSpeed, 
																				settings.openEaseAction);
								}
								$.hrzAccordion.setOnClick(i, container, finalWidth, settings);
							});
							// resize check end
					
							$.hrzAccordion.setOnClick(i, container, finalWidth, settings);
										
							if(settings.openOnLoad !=false){
								$("#"+container+"Handle"+(settings.openOnLoad-1)).click();				
							}				
						}
					);	
				}
			);	
		}
	});
})(jQuery);