/**
 * 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/10/16
 *
 * @author Blair Mitchelmore
 * @version 1.2
 *
 **/

jQuery.fn.extend({everyTime: function(interval, label, fn, times) {return this.each(function() {jQuery.timer.add(this, interval, label, fn, times);});},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.extend({timer: {global: [],guid: 1,dataKey: "jQuery.timer",regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers: {'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) {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 (typeof times != 'number' || isNaN(times) || times < 0) times = 0;times = times || 0;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 ((++counter > times && times !== 0) || fn.call(element, counter) === false)jQuery.timer.remove(element, label, fn);};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);});});


$(document).ready(function () {

  function lwnext(n) {
    if(!n) { n = 5000; }
    $(document).stopTime("works_auto").everyTime(n, "works_auto", function() {
      $("#next").click();
    });
  }

  lwnext();

  $("#carousel ul, #prev, #next").hover(
    function() {
      $(document).stopTime("works_auto");
    }, function() {
      lwnext();
    }
  );
});
