/** * 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);