$(document).ready(function () { var $panels = $('#slider .scrollContainer > div'); var $container = $('#slider .scrollContainer'); var horizontal = true; if (horizontal) { $panels.css({ 'float' : 'left', 'position' : 'relative' }); $container.css('width', $panels[0].offsetWidth * $panels.length); } var $scroll = $('#slider .scroll').css('overflow', 'hidden'); $scroll .before('<img class="scrollButtons left" src="images/scroll_left.png" />') .after('<img class="scrollButtons right" src="images/scroll_right.png" />'); function selectNav() { $(this) .parents('ul:first') .find('a') .removeClass('selected') .end() .end() .addClass('selected'); } $('#slider .navigation').find('a').click(selectNav); function trigger(data) { var el = $('#slider .navigation').find('a[href$="' + data.id + '"]').get(0); selectNav.call(el); } if (window.location.hash) { trigger({ id : window.location.hash.substr(1) }); } else { $('ul.navigation a:first').click(); } var offset = parseInt((horizontal ? $container.css('paddingTop') : $container.css('paddingLeft')) || 0) * -1; var scrollOptions = { target: $scroll, items: $panels, navigation: '.navigation a', prev: 'img.left', next: 'img.right', axis: 'xy', onAfter: trigger, offset: offset, duration: 500, easing: 'swing' }; $('#slider').serialScroll(scrollOptions); $.localScroll(scrollOptions); scrollOptions.duration = 1; $.localScroll.hash(scrollOptions);
});
/** * jQuery.ScrollTo * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http: * Dual licensed under the MIT (http: * and GPL (http: * Date: 2/19/2008 * */
;(function( $ ){	var $scrollTo = $.scrollTo = function( target, duration, settings ){	$scrollTo.window().scrollTo( target, duration, settings );	};	$scrollTo.defaults = {	axis:'y',	duration:1	};	$scrollTo.window = function(){	return $( $.browser.safari ? 'body' : 'html' );	};	$.fn.scrollTo = function( target, duration, settings ){	if( typeof duration == 'object' ){	settings = duration;	duration = 0;	}	settings = $.extend( {}, $scrollTo.defaults, settings );	duration = duration || settings.speed || settings.duration;	settings.queue = settings.queue && settings.axis.length > 1;	if( settings.queue )	duration /= 2;	settings.offset = both( settings.offset );	settings.over = both( settings.over );	return this.each(function(){	var elem = this, $elem = $(elem),	t = target, toff, attr = {},	win = $elem.is('html,body');	switch( typeof t ){	case 'number':	case 'string':	if( /^([+-]=)?\d+(px)?$/.test(t) ){	t = both( t );	break;	}	t = $(t,this);	case 'object':	if( t.is || t.style )	toff = (t = $(t)).offset();	}	$.each( settings.axis.split(''), function( i, axis ){	var Pos	= axis == 'x' ? 'Left' : 'Top',	pos = Pos.toLowerCase(),	key = 'scroll' + Pos,	act = elem[key],	Dim = axis == 'x' ? 'Width' : 'Height',	dim = Dim.toLowerCase();	if( toff ){	attr[key] = toff[pos] + ( win ? 0 : act - $elem.offset()[pos] );	if( settings.margin ){	attr[key] -= parseInt(t.css('margin'+Pos)) || 0;	attr[key] -= parseInt(t.css('border'+Pos+'Width')) || 0;	}	attr[key] += settings.offset[pos] || 0;	if( settings.over[pos] )	attr[key] += t[dim]() * settings.over[pos];	}else	attr[key] = t[pos];	if( /^\d+$/.test(attr[key]) )	attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max(Dim) );	if( !i && settings.queue ){	if( act != attr[key] )	animate( settings.onAfterFirst );	delete attr[key];	}	});	animate( settings.onAfter );	function animate( callback ){	$elem.animate( attr, duration, settings.easing, callback && function(){	callback.call(this, target);	});	};	function max( Dim ){	var el = win ? $.browser.opera ? document.body : document.documentElement : elem;	return el['scroll'+Dim] - el['client'+Dim];	};	});	};	function both( val ){	return typeof val == 'object' ? val : { top:val, left:val };	};
})( jQuery );
/** * jQuery.LocalScroll * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http: * Dual licensed under MIT and GPL. * Date: 3/10/2008 **/
;(function( $ ){	var URI = location.href.replace(/#.*/,'');	var $localScroll = $.localScroll = function( settings ){	$('body').localScroll( settings );	};	$localScroll.defaults = {	duration:1000,	axis:'y',	event:'click',	stop:true	};	$localScroll.hash = function( settings ){	settings = $.extend( {}, $localScroll.defaults, settings );	settings.hash = false;	if( location.hash )	setTimeout(function(){ scroll( 0, location, settings ); }, 0 );	};	$.fn.localScroll = function( settings ){	settings = $.extend( {}, $localScroll.defaults, settings );	return ( settings.persistent || settings.lazy )	? this.bind( settings.event, function( e ){	var a = $([e.target, e.target.parentNode]).filter(filter)[0];	a && scroll( e, a, settings );	})	: this.find('a')	.filter( filter ).bind( settings.event, function(e){	scroll( e, this, settings );	}).end()	.end();	function filter(){	return !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter ));	};	};	function scroll( e, link, settings ){	var id = link.hash.slice(1),	elem = document.getElementById(id) || document.getElementsByName(id)[0];	if ( elem ){	e && e.preventDefault();	var $target = $( settings.target || $.scrollTo.window() );	if( settings.lock && $target.is(':animated') ||	settings.onBefore && settings.onBefore.call(link, e, elem, $target) === false ) return;	if( settings.stop )	$target.queue('fx',[]).stop();	$target	.scrollTo( elem, settings )	.trigger('notify.serialScroll',[elem]);	if( settings.hash )	$target.queue(function(){	location = link.hash;	});	}	};
})( jQuery );
/** * jQuery.serialScroll * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http: * Dual licensed under MIT and GPL. * Date: 3/20/2008 * */
;(function( $ ){	var $serialScroll = $.serialScroll = function( settings ){	$.scrollTo.window().serialScroll( settings );	};	$serialScroll.defaults = {	duration:1000,	axis:'x',	event:'click',	start:0,	step:1,	lock:true,	cycle:true,	constant:true	};	$.fn.serialScroll = function( settings ){	settings = $.extend( {}, $serialScroll.defaults, settings );	var event = settings.event,	step = settings.step,	lazy = settings.lazy;	return this.each(function(){	var	context = settings.target ? this : document,	$pane = $(settings.target || this, context),	pane = $pane[0],	items = settings.items,	active = settings.start,	auto = settings.interval,	nav = settings.navigation,	timer;	if( !lazy )	items = getItems();	if( settings.force )	jump( {}, active );	$(settings.prev||[], context).bind( event, -step, move );	$(settings.next||[], context).bind( event, step, move );	if( !pane.ssbound )	$pane	.bind('prev.serialScroll', -step, move )	.bind('next.serialScroll', step, move )	.bind('goto.serialScroll', jump );	if( auto )	$pane	.bind('start.serialScroll', function(e){	if( !auto ){	clear();	auto = true;	next();	} })	.bind('stop.serialScroll', function(){	clear();	auto = false;	});	$pane.bind('notify.serialScroll', function(e, elem){	var i = index(elem);	if( i > -1 )	active = i;	});	pane.ssbound = true;	if( settings.jump )	(lazy ? $pane : getItems()).bind( event, function( e ){	jump( e, index(e.target) );	});	if( nav )	nav = $(nav, context).bind(event, function( e ){	e.data = Math.round(getItems().length / nav.length) * nav.index(this);	jump( e, this );	});	function move( e ){	e.data += active;	jump( e, this );	};	function jump( e, button ){	if( !isNaN(button) ){	e.data = button;	button = pane;	}	var	pos = e.data, n,	real = e.type,	$items = settings.exclude ? getItems().slice(0,-settings.exclude) : getItems(),	limit = $items.length,	elem = $items[pos],	duration = settings.duration;	if( real )	e.preventDefault();	if( auto ){	clear();	timer = setTimeout( next, settings.interval );	}	if( !elem ){	n = pos < 0 ? 0 : limit - 1;	if( active != n )	pos = n;	else if( !settings.cycle )	return;	else	pos = limit - n - 1;	elem = $items[pos];	}	if( !elem || real && active == pos ||	settings.lock && $pane.is(':animated') ||	real && settings.onBefore &&	settings.onBefore.call(button, e, elem, $pane, getItems(), pos) === false ) return;	if( settings.stop )	$pane.queue('fx',[]).stop();	if( settings.constant )	duration = Math.abs(duration/step * (active - pos ));	$pane	.scrollTo( elem, duration, settings )	.trigger('notify.serialScroll',[pos]);	};	function next(){	$pane.trigger('next.serialScroll');	};	function clear(){	clearTimeout(timer);	};	function getItems(){	return $( items, pane );	};	function index( elem ){	if( !isNaN(elem) ) return elem;	var $items = getItems(), i;	while(( i = $items.index(elem)) == -1 && elem != pane )	elem = elem.parentNode;	return i;	};	});	};
})( jQuery );