//# jQuery - Horizontal Accordion
//# Version 2.00.00 Alpha 1
//#
//# portalZINE(R) - New Media Network
//# http://www.portalzine.de
//#
//# Alexander Graef
//# portalzine@gmail.com
//#
//# Copyright 2007-2009

(function($) {
	$.hrzAccordion = {
      setOnEvent: function(i, container, finalWidth, settings){
		$("#"+container+"Handle"+i).bind(settings.eventTrigger,function() {			 
			var status = $('[rel='+container+'ContainerSelected]').data('status');
			if(status ==1 && settings.eventWaitForAnim === true){
				return false;	
			}
			if( $("#"+container+"Handle"+i).attr("rel") != container+"HandleSelected"){
				//alert(i);
				//Note: support only for ie 6 browser (handle 1 banner slideshow )
				if(navigator.appName == "Microsoft Internet Explorer"){ //ie 6
					if(i != "0" ){ $(document).ready(function() { $('#bannerslideshow').hide();  }); }
					else if(i == "0" ){ $(document).ready(function() { $('#bannerslideshow').show();  }); }
                }
								
				settings.eventAction;
				$('[id*='+container+'Handle]').attr("rel","");			   				
				$('[id*='+container+'Handle]').attr("class",settings.handleClass);
				//$("#"+container+"Handle"+i).addClass(settings.handleClassSelected);
				$("#"+container+"Handle"+i).addClass(settings.handleClassSelected+i);
				$("."+settings.contentWrapper).css({width: finalWidth+"px" });
								
				switch(settings.closeOpenAnimation) {
					case 1: 
						if($('[rel='+container+'ContainerSelected]').get(0) ){
							$('[rel='+container+'ContainerSelected]').data('status',1);
							//current_width = $('[rel='+container+'ContainerSelected]').width();
							$('[rel='+container+'ContainerSelected]').animate({width: "0px",opacity:"0"}, { 
								queue:true, 
								duration:settings.closeSpeed,
								easing:settings.closeEaseAction,
								complete: function(){ $('[rel='+container+'ContainerSelected]').data('status',0);},
								step: function(now){ 
									width = $(this).width();
									//new_width = finalWidth- (finalWidth  * (width/current_width));
									new_width = finalWidth - width;
									$('#'+container+'Content'+i).width(Math.ceil(new_width)).css("opacity","1");
								}
							});
						}else{
							
							$('[rel='+container+'ContainerSelected]').data('status',1);
							$('#'+container+'Content'+i).animate(
								{width: finalWidth,opacity:"1"}, 
								{ queue:false, 
								  duration:settings.closeSpeed,
								  easing:settings.closeEaseAction,
								  complete: function(){ $('[rel='+container+'ContainerSelected]').data('status',0);	}
								}
							);
						}
					break;
					case 2:
						$('[id*='+container+'Content]').css({width: "0px"});
						$('#'+container+'Content'+i).animate(
							{width: finalWidth+"px",opacity:"1"}, 
							{	queue:false, 
								duration:settings.openSpeed,
								easing:settings.openEaseAction,
								complete:settings.completeAction 
							}
						);						
					break;
				} //switch
				$('[id*='+container+'Content]').attr("rel","");			
				
				$("#"+container+"Handle"+i).attr("rel",container+"HandleSelected");
				$("#"+container+"Content"+i).attr("rel",container+"ContainerSelected");					
						
			}
		});	
	 }
	};
	
	$.fn.extend({
		hrzAccordionLoop: function(options) {
			return this.each(function(a){  
				var container = $(this).attr("id") || $(this).attr("class");
				var elementCount = $('#'+container+' > li, .'+container+' > li').size();
				var settings = $(this).data('settings');
				variable_holder="interval"+container ;
				var i =0;
				var loopStatus  = "start";
				variable_holder = window.setInterval(function(){							
				$("#"+container+"Handle"+i).trigger(settings.eventTrigger);
				if(loopStatus =="start"){
					i = i + 1;
				}else{
					i = i-1;	
				}
				if(i==elementCount && loopStatus  == "start"){
					loopStatus  = "end";
					i=elementCount-1;
					
				}
				if(i==0 && loopStatus  == "end"){
					loopStatus  = "start";
					i=0;
				}
			},settings.cycleInterval);
		});
	},
	hrzAccordion: function(options) {
		this.settings = {
		eventTrigger	   		: "click",
		containerClass     		: "container",
		listItemClass      		: "listItem",					
		contentContainerClass  	: "contentContainer",
		contentWrapper     		: "contentWrapper",
		contentInnerWrapper		: "contentInnerWrapper",
		handleClass        		: "handle",
		handleClassOver    		: "handleOver",
		handleClassSelected		: "handleSelected",
		handlePosition     		: "left",
		handlePositionArray		: "left,left,left,right,right,right", // left,left,right,right,right
		closeEaseAction    		: "swing",
		closeSpeed     			: 500,
		openEaseAction     		: "swing",
		openSpeed      			: 500,
		openOnLoad		   		: 1,
		hashPrefix		   		: "tab",
		eventAction		   		: function(){
								//add your own extra clickAction function here
								},
		completeAction	   		: function(){

								//add your own onComplete function here
								},
		closeOpenAnimation 		: 1,// 1 - open and close at the same time / 2- close all and than open next
		cycle			   		: false, // not integrated yet, will allow to cycle through tabs by interval
		cycleInterval	   		: 10000,
		fixedWidth				: "687",
		eventWaitForAnim		: true
	};
	
	if(options){ $.extend(this.settings, options);	}
	var settings = this.settings;
	return this.each(function(a){ 
		var container = $(this).attr("id") || $(this).attr("class");
		
		$(this).data('settings', settings);
		
		$(this).wrap("<div class='"+settings.containerClass+"' style='float:left;border:0px solid #cc0000;'></div>");
		var elementCount = $('#'+container+'> li, .'+container+' > li').size();
		
		var containerWidth =  $("."+settings.containerClass).width();
		var handleWidth = $("."+settings.handleClass).css("width");
		handleWidth =  handleWidth.replace(/px/,"");
		
		var finalWidth;
		var handle;
		if(settings.fixedWidth){
			finalWidth = settings.fixedWidth;
			
		}else{
			finalWidth = containerWidth-(elementCount*handleWidth)-handleWidth;
			//alert(finalWidth);
		}
		
		$('#'+container+'> li, .'+container+' > li').each(function(i) {
			$(this).attr('id', container+"ListItem"+i);
			$(this).attr('class',settings.listItemClass);
			$(this).html("<div class='"+settings.contentContainerClass+"' 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();
				/****28-10-2011 ******/
						
				if(navigator.appName == "Microsoft Internet Explorer"){ //ie 6

					if(i=="0"){
						handle = "<div class=\""+settings.handleClass+"\" style=\"width:43px;margin-right:0.5px;\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}else{
						handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}

				}else if(navigator.appName == "Netscape"){ //firgfox, crome
					if(i=="1"){
						handle = "<div class=\""+settings.handleClass+"\" style=\"border-left:1px solid #fff;\" id='"+container+"Handle"+i+"'>"+html+"</div>"; 
					}else{
						handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}
				}else if(navigator.appName == "Opera"){ 
					if(i=="1"){
						handle = "<div class=\""+settings.handleClass+"\" style=\"width:43px;border-left:1px solid #fff;\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}else{
						handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}
				}else{
					handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
				}
				
				/* handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>"; */
				 
				/****28-10-2011 ******/
				
			}else{
				handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'></div>";
			}
			
			if(settings.handlePositionArray){
				splitthis = settings.handlePositionArray.split(",");
				settings.handlePosition = splitthis[i];
			}
			
					
			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;
			}					
			$("#"+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);
				}
			});
			$.hrzAccordion.setOnEvent(i, container, finalWidth, settings);
			if(i == elementCount-1){ 
				$('#'+container+",."+container).show(); 
			}
			if(settings.openOnLoad !== false && i == elementCount-1){
				var location_hash = location.hash;
				location_hash  = location_hash.replace("#", "");
				if(location_hash.search(settings.hashPrefix) != '-1' ){
					var tab = 1;
					location_hash  = location_hash.replace(settings.hashPrefix, "");
				}
				
				if(location_hash && tab ==1){
					$("#"+container+"Handle"+(location_hash)).attr("rel",container+"HandleSelected");
					$("#"+container+"Content"+(location_hash)).attr("rel",container+"ContainerSelected");		
					$("#"+container+"Handle"+(location_hash-1)).trigger(settings.eventTrigger);
				}else{
					
					
					$("#"+container+"Handle"+(settings.openOnLoad)).attr("rel",container+"HandleSelected");
					$("#"+container+"Content"+(settings.openOnLoad)).attr("rel",container+"ContainerSelected");	
					$("#"+container+"Handle"+(settings.openOnLoad-1)).trigger(settings.eventTrigger);
					
				}
			}	
		});	
		
		if(settings.cycle === true){ 
			$(this).hrzAccordionLoop(); 
		}
	});				
	}		
	});
})(jQuery);	

