/*
	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:'click',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(){
var 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",
$('#foo').bind('click',
function(){

var c=[];
var d=[];

//$('li').removeClass('active')

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
}
)
}
)
} //sticky


})}})(jQuery);

function getElementsByClassName(node,classname) {
  if (node.getElementsByClassName) { // use native implementation if available
    return node.getElementsByClassName(classname);
  } else {
    return (function getElementsByClass(searchClass,node) {
        if ( node == null )
          node = document;
        var classElements = [],
            els = node.getElementsByTagName("*"),
            elsLen = els.length,
            pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j;

        for (i = 0, j = 0; i < elsLen; i++) {
          if ( pattern.test(els[i].className) ) {
              classElements[j] = els[i];
              j++;
          }
        }
        return classElements;
    })(classname, node);
  }
}

