/**
* jQuery.timers - Timer abstractions for jQuery
* Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
* Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
* Date: 2009/02/08
*
* @author Blair Mitchelmore
* @version 1.1.2
*
**/
jQuery.fn.extend({
everyTime: function(interval, label, fn, times, belay) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, times, belay);
});
},
oneTime: function(interval, label, fn) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, 1);
});
},
stopTime: function(label, fn) {
return this.each(function() {
jQuery.timer.remove(this, label, fn);
});
}
});
jQuery.event.special
jQuery.extend({
timer: {
global: [],
guid: 1,
dataKey: "jQuery.timer",
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
powers: {
// Yeah this is major overkill...
'ms': 1,
'cs': 10,
'ds': 100,
's': 1000,
'das': 10000,
'hs': 100000,
'ks': 1000000
},
timeParse: function(value) {
if (value == undefined || value == null)
return null;
var result = this.regex.exec(jQuery.trim(value.toString()));
if (result[2]) {
var num = parseFloat(result[1]);
var mult = this.powers[result[2]] || 1;
return num * mult;
} else {
return value;
}
},
add: function(element, interval, label, fn, times, belay) {
var counter = 0;
if (jQuery.isFunction(label)) {
if (!times)
times = fn;
fn = label;
label = interval;
}
interval = jQuery.timer.timeParse(interval);
if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
return;
if (times && times.constructor != Number) {
belay = !!times;
times = 0;
}
times = times || 0;
belay = belay || false;
var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
if (!timers[label])
timers[label] = {};
fn.timerID = fn.timerID || this.guid++;
var handler = function() {
if (belay && this.inProgress)
return;
this.inProgress = true;
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
jQuery.timer.remove(element, label, fn);
this.inProgress = false;
};
handler.timerID = fn.timerID;
if (!timers[label][fn.timerID])
timers[label][fn.timerID] = window.setInterval(handler,interval);
this.global.push( element );
},
remove: function(element, label, fn) {
var timers = jQuery.data(element, this.dataKey), ret;
if ( timers ) {
if (!label) {
for ( label in timers )
this.remove(element, label, fn);
} else if ( timers[label] ) {
if ( fn ) {
if ( fn.timerID ) {
window.clearInterval(timers[label][fn.timerID]);
delete timers[label][fn.timerID];
}
} else {
for ( var fn in timers[label] ) {
window.clearInterval(timers[label][fn]);
delete timers[label][fn];
}
}
for ( ret in timers[label] ) break;
if ( !ret ) {
ret = null;
delete timers[label];
}
}
for ( ret in timers ) break;
if ( !ret )
jQuery.removeData(element, this.dataKey);
}
}
}
});
jQuery(window).bind("unload", function() {
jQuery.each(jQuery.timer.global, function(index, item) {
jQuery.timer.remove(item);
});
});
/**
* jQuery.ScrollTo - Easy element scrolling using jQuery.
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 3/9/2009
* @author Ariel Flesler
* @version 1.4.1
*
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
*/
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
/**
* LavaLamp - A menu plugin for jQuery with cool hover effects.
* @requires jQuery v1.2.x or higher
*
* http://nixbox.com/lavalamp.php
*
* Copyright (c) 2008, 2009 Jolyon Terwilliger, jolyon@nixbox.com
* Original code Copyright (c) 2007, 2008
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* credits to Guillermo Rauch and Ganeshji Marwaha (gmarwaha.com) for previous editions
*
* Version: 1.0 - adapted for jQuery 1.2.x series
* Version: 1.1 - added linum parameter
* Version: 1.2 - modified to support vertical resizing of elements
* Version: 1.3 - enhanced automatic
item hi-lighting - will attempt to
* lock onto li > a element with href closest to selected
* window.location
* - click always returns 'true' by default, for standard link follow through.
*
* Version: 1.3.1 - verified for use with jQuery 1.3 - should still work with 1.2.x series
* - changed linum parameter to startItem for clarity
* - improved slide-in accuracy for .back elements with borders
* - changed .current class to .selectedLava for clarity and improved
* support
* - appended 'Lava' to all internal class names to avoid conflicts
* - fixed bug applying selectedLava class to elements with matching
* location.hash
* - now supports jquery.compat plugin for cross-library support
* - performance improvements
* - added new options:
* autoReturn: true - if set to false, hover will not return to last selected
* item upon list mouseout.
* returnDelay: 0 - if set, will delay auto-return feature specified # of
* milliseconds.
* setOnClick: true - if set to false, hover will return to default element
* regardless of click event.
* homeLeft: 0, homeTop: 0 - if either set to non zero value, absolute
* positioned li element with class .homeLava is
* prepended to list for homing feature.
* homeWidth: 0, homeHeight: 0 - if set, are used for creation of li.homeLava
* element.
* returnHome: false - if set along with homeLeft or homeTop, lavalamp hover
* will always return to li.home after click.
*
* Version: 1.3.2 - fixed stray $ references inside the plugin to work with
* jQuery.noConflict() properly - thanks Colin.
*
* Creates a menu with an unordered list of menu-items. You can either use the CSS
* that comes with the plugin, or write your own styles
*
* The HTML markup used to build the menu can be as simple as...
*
*
*
* Once you have included the style sheet that comes with the plugin, you will have to include
* a reference to the jQuery library, easing plugin (optional) and the LavaLamp(this) plugin.
*
* Use the following snippet to initialize the menu using jQuery easing library::
* Easing Library 1.3 available here: http://plugins.jquery.com/project/Easing
*
* $(function() { $(".lavaLamp").lavaLamp({ fx: "easeOutBack", speed: 700}) });
*
* @param Object - You can specify all the options shown below as object variables:
*
* @option fx - default is "swing"
* @example
* $(".lavaLamp").lavaLamp({ fx: "easeOutElastic" });
* @desc Creates a menu with "Elastic" easing effect. You need to include the easing plugin for this to work.
*
* @option speed - default is 500 ms
* @example
* $(".lavaLamp").lavaLamp({ speed: 500 });
* @desc Creates a menu with an animation speed of 500 ms.
*
* @option click - no defaults
* @example
* $(".lavaLamp").lavaLamp({ click: function(event, menuItem) { return false; } });
* @desc You can supply a callback to be executed when the menu item is clicked.
* The event object and the menu-item that was clicked will be passed in as arguments.
*
* @option startItem - default is 'no'
* @example
* jQuery(".lavaLamp").lavaLamp({ startItem: 2 });
* @desc startItem specifies the li element to default to, beginning with 0 for the first li element
* within the parent UL or OL used to initialize lavaLamp. This can be used to set default
* lavaLamp hilight on page reloads.
*/
(function(jQuery) {
jQuery.fn.lavaLamp = function(o) {
o = jQuery.extend({ fx: 'swing',
speed: 500,
click: function(){return true},
startItem: 'no',
autoReturn: true,
returnDelay: 0,
setOnClick: true,
homeTop:0,
homeLeft:0,
homeWidth:0,
homeHeight:0,
returnHome:false
},
o || {});
return this.each(function() {
var path = location.pathname + location.search + location.hash;
var $selected = new Object;
var delayTimer;
var $back;
var $home;
var ce;
//
// create homeLava element if origin and dimensions set and startItem == off
if (o.homeTop || o.homeLeft) {
$home = jQuery('').css({ left:o.homeLeft, top:o.homeTop, width:o.homeWidth, height:o.homeHeight, position:'absolute' });
jQuery(this).prepend($home);
}
var $li = jQuery('li', this);
// check for complete path match, if so flag element into $selected
if ( o.startItem == 'no' )
$selected = jQuery('li a[href$="' + path + '"]', this).parent('li');
// double check, this may be just an anchor match
if ($selected.length == 0 && o.startItem == 'no' && location.hash)
$selected = jQuery('li a[href$="' + location.hash + '"]', this).parent('li');
// no default selected element matches worked,
// or the user specified an index via startItem
if ($selected.length == 0 || o.startItem != 'no') {
// always default to first item, if no startItem specified.
if (o.startItem == 'no') o.startItem = 0;
$selected = jQuery($li[o.startItem]);
}
// set up raw element - this allows user override by class .selectedLava on load
ce = jQuery('li.selectedLava', this)[0] || jQuery($selected).addClass('selectedLava')[0];
// add mouseover event for every sub element
$li.mouseover(function() {
mouseoverFunction(this);
});
$back = jQuery('').appendTo(this);
// after we leave the container element, move back to default/last clicked element
jQuery(this).mouseout( function() {
mouseoutFunction();
});
$li.click(function(e) {
clickFunction(e, this);
});
// set the starting position for the lavalamp hover element: .back
if (o.homeTop || o.homeLeft)
$back.css({ left:o.homeLeft, top:o.homeTop, width:o.homeWidth, height:o.homeHeight });
else
$back.css({ left: ce.offsetLeft, top: ce.offsetTop, width: ce.offsetWidth, height: ce.offsetHeight });
function mouseoverFunction(el) {
if (jQuery(el).hasClass('homeLava')) {
ce = jQuery(el)[0];
}
move(el);
}
function mouseoutFunction() {
if (o.autoReturn) {
if (o.returnHome && $home) {
move($home[0]);
}
else if (o.returnDelay) {
if(delayTimer) clearTimeout(delayTimer);
delayTimer = setTimeout(move,o.returnDelay + o.speed);
}
else {
move();
}
}
}
function clickFunction(e, el) {
if (o.setOnClick) {
jQuery(ce).removeClass('selectedLava');
jQuery(el).addClass('selectedLava');
ce = el;
}
return o.click.apply(el, [e, el]);
}
function move(el) {
if (!el) el = ce;
// .backLava element border check and animation fix
var bx=0, by=0;
if (!jQuery.browser.msie) {
bx = ($back.outerWidth() - $back.innerWidth())/2;
by = ($back.outerHeight() - $back.innerHeight())/2;
}
$back.stop()
.animate({
left: el.offsetLeft-bx,
top: el.offsetTop-by,
width: el.offsetWidth,
height: el.offsetHeight
}, o.speed, o.fx);
};
});
};
})(jQuery);
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});
/*
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/******
Story Rotator Plugin
******/
(function($){
$.fn.extend({
storyrotator: function(options) {
var defaults = {
navType: 'numbers',
story_duration: 1000,
overlay_duration: 1500
}
var options = $.extend(defaults, options);
return this.each(function() {
var o = options;
var rotator = null;
var navigationNumbers = null;
var navigationTitles = null;
var selectedIndex = 1;
var numStories = 0;
var timer = 0;
function switchStory(which) {
oldIndex = selectedIndex;
selectedIndex = which;
if(o.navType == 'numbers' || o.navType == 'both') {
$('li#' + oldIndex, navigationNumbers).removeClass('selected');
$('li#' + selectedIndex, navigationNumbers).addClass('selected');
}
if(o.navType == "titles" || o.navType == 'both') {
$('li#' + selectedIndex, navigationTitles).triggerHandler("mouseover");
$('li#' + selectedIndex, navigationTitles).triggerHandler("click");
}
$('div#overlays', rotator).scrollTo('div#overlay_' + selectedIndex, {
queue:true,
duration: o.overlay_duration
});
$('div#stories', rotator).scrollTo("div#story_" + selectedIndex, {
duration: o.story_duration
});
}
function nextStory(clearTimer) {
var newIndex = 0;
if(selectedIndex < numStories)
newIndex = selectedIndex + 1;
else
newIndex = 1;
switchStory(newIndex);
if(clearTimer) {
stopTimer();
startTimer();
}
}
function startTimer() {
$(document).everyTime(6000, function() { nextStory() });
//timer = setInterval(function() {
// nextStory();
//}, 6000);
}
function stopTimer() {
$(document).stopTime();
}
rotator = $(this);
$('div#stories', rotator).scrollTo(0);
$('div#overlays', rotator).scrollTo(0);
rotator.addClass(o.navType);
var stories = $('div#stories > div.story', rotator);
selectedIndex = 1;
$(rotator).mouseenter(function() {
stopTimer();
}).mouseleave(function() {
//var t = setTimeout(function() { nextStory(true); }, 2000);
$(document).oneTime(2000, function() { nextStory(true); } );
});
numStories = stories.get().length;
//Set the background images for the stories
for(i = 1; i <= numStories; i++) {
//Get and set bg
img = $("div#story_" + i + " img.story_image");
$("div#story_" + i).css('background-image', 'url("' + img.attr('src') + '")');
}
if(o.navType == 'numbers' || o.navType == 'both') {
//Create the navigation amd set the bg images
navigationNumbers = $('');
for(i = 1; i <= numStories; i++) {
var li = $('' + i + '');
$("a", li).click(function() {
this.blur();
switchStory(parseInt($(this).parent().get(0).id));
});
if(o.navType == 'both') {
$("a", li).mouseover(function() {
$('li#' + $(this).parent().get(0).id, navigationTitles).triggerHandler("mouseover");
});
}
if(i == 1) li.addClass('selected');
$('ul', navigationNumbers).append(li);
}
if(o.navType == 'both') {
$(navigationNumbers).mouseout(function() {
$('div#nav.titles ul.lavaLamp', rotator).triggerHandler("mouseout");
});
}
rotator.append(navigationNumbers);
}
if (o.navType == 'titles' || o.navType == 'both') {
navigationTitles = $('');
for(i = 1; i <= numStories; i++) {
var li = $('' + $('div#overlay_' + i + ' h1.story-title > a').attr('title') + '');
$("a", li).click(function() {
this.blur();
switchStory(parseInt($(this).parent().get(0).id));
});
if(i == 1) li.addClass('selectedLava');
$('ul', navigationTitles).append(li);
}
rotator.append(navigationTitles);
$('ul', navigationTitles).lavaLamp({
fx: 'easeInOutSine',
speed: 500
});
}
startTimer();
});
}
});
})(jQuery);