/*
	Kwicks for jQuery (version 1.5.1)
	Copyright (c) 2008 Jeremy Martin
	http://www.jeremymartin.name/projects.php?project=kwicks
	
	Licensed under the MIT license:
		http://www.opensource.org/licenses/mit-license.php

	Any and all use of this script must be accompanied by this copyright/license notice in its present form.
*/
(function($) {
	$.fn.kwicks = function(n) {
		var p = {
			isVertical: false,
			sticky: false,
			defaultKwick: 0,
			event: 'mouseover',
			spacing: 0,
			duration: 500
		};
		
		var o = $.extend(p,n);
		var q = (o.isVertical ? 'height' : 'width');
		var r = (o.isVertical ? 'top' : 'left');
		return this.each(function() {
			container = $(this);
			var k = container.children('li');
			var l = k.eq(0).css(q).replace(/px/, '');
			
			if(!o.max) {
				o.max = (l*k.size())-(o.min*(k.size()-1))
			} else {
				o.min=((l*k.size())-o.max)/(k.size()-1)
			}
			
			if(o.isVertical){
				container.css({
					width: k.eq(0).css('width'),
					height: (l*k.size())+(o.spacing*(k.size()-1))+'px'
			}
		)} else{
				container.css({
				width:(l*k.size())+(o.spacing*(k.size()-1))+'px',
				height: k.eq(0).css('height')
			}
		)}
	
		var m=[];for(i=0;i<k.size();i++){
			m[i]=[];for(j=1;j<k.size()-1;j++){
			
				if(i==j){
					m[i][j]=o.isVertical?j*o.min+(j*o.spacing):j*o.min+(j*o.spacing)
				} else{
			m[i][j]=(j<=i?(j*o.min):(j-1)*o.min+o.max)+(j*o.spacing)}
		}
	}
	
	k.each(function(i){
		var h=$(this);
		
		if(i===0){
			h.css(r,'0px')
		} else if(i==k.size()-1){
			h.css(o.isVertical?'bottom':'right','0px')
		} else{
			if(o.sticky){
				h.css(r,m[o.defaultKwick][i])
			} else{
				h.css(r,(i*l)+(i*o.spacing))
			}
		}
		
		if(o.sticky){
			if(o.defaultKwick==i){
				h.css(q,o.max+'px');
				h.addClass('active')
			} else{
				h.css(q,o.min+'px')
			}
		}
		
		h.css({
			margin:0,
			position:'absolute'
		});
		
		h.bind(o.event,function(){
			var c=[];
			var d=[];
			k.stop().removeClass('active');
			
			for(j=0;j<k.size();j++){
				c[j]=k.eq(j).css(q).replace(/px/,'');
				d[j]=k.eq(j).css(r).replace(/px/,'')
			}
			
			var e={};
			e[q]=o.max;
			var f=o.max-c[i];
			var g=c[i]/f;
			h.addClass('active').animate(e,{
				step:function(a){
					var b=f!=0?a/f-g:1;
					k.each(function(j){
						if(j!=i){
							k.eq(j).css(q,c[j]-((c[j]-o.min)*b)+'px')
						}
						
						if(j>0&&j<k.size()-1){
							k.eq(j).css(r,d[j]-((d[j]-m[i][j])*b)+'px')
						}
					}
				)}
				,duration:o.duration,
				easing:o.easing
			}
		)}
	)});
	
	if(!o.sticky){
		container.bind("mouseleave",function(){
		var c=[];
		var d=[];
		k.removeClass('active').stop();
		
		for(i=0;i<k.size();i++){
			c[i]=k.eq(i).css(q).replace(/px/,'');
			d[i]=k.eq(i).css(r).replace(/px/,'')
		}
		
		var e={};
		e[q]=l;
		var f=l-c[0];
		k.eq(0).animate(e,{
			step:function(a){
				var b=f!=0?(a-c[0])/f:1;
				
				for(i=1;i<k.size();i++){
					k.eq(i).css(q,c[i]-((c[i]-l)*b)+'px');
					
					if(i<k.size()-1){
						k.eq(i).css(r,d[i]-((d[i]-((i*l)+(i*o.spacing)))*b)+'px')
					}
				}
			},
			duration:o.duration,
			easing:o.easing
		}
	)}
)}
}
)}
}
)(jQuery);
