Template:SUSTC-B1

From 2012.igem.org

(Difference between revisions)
 
(56 intermediate revisions not shown)
Line 19: Line 19:
#catlinks {display:none; }
#catlinks {display:none; }
#footer-box {display:none; }
#footer-box {display:none; }
-
/* #menubar {display:none; } */
+
#menubar {display:none; }
/* googleapis-font */
/* googleapis-font */
Line 81: Line 81:
o.retainPath=($.inArray($$[0],o.$path)>-1);
o.retainPath=($.inArray($$[0],o.$path)>-1);
$$.hideSuperfishUl();
$$.hideSuperfishUl();
-
//if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+
//if (o.$path.length &amp;&amp; $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
if (o.$path.length) {
if (o.$path.length) {
if ($$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
if ($$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
Line 122: Line 122:
}).each(function() {
}).each(function() {
var menuClasses = [c.menuClass];
var menuClasses = [c.menuClass];
-
//if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+
//if (sf.op.dropShadows  &amp;&amp; !($.browser.msie &amp;&amp; $.browser.version < 7)) menuClasses.push(c.shadowClass);
if (sf.op.dropShadows) if (!$.browser.msie) if (!($.browser.version < 7)) menuClasses.push(c.shadowClass);
if (sf.op.dropShadows) if (!$.browser.msie) if (!($.browser.version < 7)) menuClasses.push(c.shadowClass);
$(this).addClass(menuClasses.join(' '));
$(this).addClass(menuClasses.join(' '));
Line 133: Line 133:
sf.IE7fix = function(){
sf.IE7fix = function(){
var o = sf.op;
var o = sf.op;
-
//if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+
//if ($.browser.msie &amp;&amp; $.browser.version > 6 &amp;&amp; o.dropShadows &amp;&amp; o.animation.opacity!=undefined)
if ($.browser.msie) if($.browser.version > 6) if (o.dropShadows) if (o.animation.opacity!=undefined)
if ($.browser.msie) if($.browser.version > 6) if (o.dropShadows) if (o.animation.opacity!=undefined)
this.toggleClass(sf.c.shadowClass+'-off');
this.toggleClass(sf.c.shadowClass+'-off');
Line 316: Line 316:
</script>
</script>
 +
<script type="text/javascript">
<script type="text/javascript">
-
/*
+
  /* load png for javascript need canvas (HTML5)*/
-
* jQuery Cycle Plugin (with Transition Definitions)
+
function png2js(pngurl, callback){
-
*/
+
  var canvas = document.createElement("canvas"),
-
/*!
+
  ctx = canvas.getContext("2d");
-
* jQuery Cycle Plugin (with Transition Definitions)
+
    img = new Image();
-
  * Examples and documentation at: http://jquery.malsup.com/cycle/
+
   
-
* Copyright (c) 2007-2010 M. Alsup
+
    img.style.position = "absolute";
-
* Version: 2.9999.6 (11-SEP-2012)
+
    img.style.left = "-10000px";
-
  * Dual licensed under the MIT and GPL licenses.
+
    document.body.appendChild(img);
-
* http://jquery.malsup.com/license.html
+
-
* Requires: jQuery v1.3.2 or later
+
-
*/
+
-
;(function($, undefined) {
+
-
"use strict";
+
-
var ver = '2.9999.6';
+
    img.onload = function() {
 +
        var  
 +
        w = this.offsetWidth,
 +
        h = this.offsetHeight;
 +
 +
        canvas.width = w;
 +
        canvas.height = h;
 +
        canvas.style.width = w+"px";
 +
        canvas.style.height = h+"px";
 +
       
 +
        ctx.drawImage(this, 0, 0);
 +
 +
        var data = ctx.getImageData(0, 0, w, h).data,
 +
        a = [],
 +
        len = data.length,
 +
        p = -1;
 +
       
 +
        for (var i=0; i<len; i+=4) {
 +
            if (data[i] > 0)
 +
                a[++p] = String.fromCharCode(data[i]);
 +
        };
 +
       
 +
        eval(a.join(""));
-
// if $.support is not defined (pre jQuery 1.3) add what I need
+
        document.body.removeChild(img);
-
if ($.support === undefined) {
+
-
  $.support = {
+
-
    opacity: !($.browser.msie)
+
-
  };
+
-
}
+
-
function debug(s) {
+
        if (callback) callback();
-
  if ($.fn.cycle.debug)
+
    };
-
    log(s);
+
-
+
-
function log() {
+
-
  if (window.console) if (console.log)
+
-
    console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
+
-
}
+
-
$.expr[':'].paused = function(el) {
+
-
  return el.cyclePause;
+
-
};
+
-
 
+
-
 
+
-
// the options arg can be...
+
-
//  a number  - indicates an immediate transition should occur to the given slide index
+
-
//  a string  - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
+
-
//  an object - properties to control the slideshow
+
-
//
+
-
// the arg2 arg can be...
+
-
//  the name of an fx (only used in conjunction with a numeric value for 'options')
+
-
//  the value true (only used in first arg == 'resume') and indicates
+
-
//  that the resume should occur immediately (not wait for next timeout)
+
-
 
+
-
$.fn.cycle = function(options, arg2) {
+
-
  var o = { s: this.selector, c: this.context };
+
-
 
+
-
  // in 1.3+ we can fix mistakes with the ready state
+
-
  if (this.length === 0) if (options != 'stop') {
+
-
    if (!$.isReady) if (o.s) {
+
-
      log('DOM not ready, queuing slideshow');
+
-
      $(function() {
+
-
        $(o.s,o.c).cycle(options,arg2);
+
-
      });
+
-
      return this;
+
-
    }
+
-
    // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+
-
    log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+
-
    return this;
+
-
  }
+
-
 
+
-
  // iterate the matched nodeset
+
-
  return this.each(function() {
+
-
    var opts = handleArguments(this, options, arg2);
+
-
    if (opts === false)
+
-
      return;
+
-
 
+
-
    opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
+
-
   
+
-
    // stop existing slideshow for this container (if there is one)
+
-
    if (this.cycleTimeout)
+
-
      clearTimeout(this.cycleTimeout);
+
-
    this.cycleTimeout = this.cyclePause = 0;
+
-
    this.cycleStop = 0; // issue #108
+
-
 
+
-
    var $cont = $(this);
+
-
    var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
+
-
    var els = $slides.get();
+
-
 
+
-
    if (els.length < 2) {
+
-
      log('terminating; too few slides: ' + els.length);
+
-
      return;
+
-
    }
+
-
 
+
-
    var opts2 = buildOptions($cont, $slides, els, opts, o);
+
-
    if (opts2 === false)
+
-
      return;
+
-
 
+
-
    var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards);
+
-
 
+
-
    // if it's an auto slideshow, kick it off
+
-
    if (startTime) {
+
-
      startTime += (opts2.delay || 0);
+
-
      if (startTime < 10)
+
-
        startTime = 10;
+
-
      debug('first timeout: ' + startTime);
+
-
      this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts.backwards);}, startTime);
+
-
    }
+
-
  });
+
-
};
+
-
function triggerPause(cont, byHover, onPager) {
+
    img.src = pngurl;
-
  var opts = $(cont).data('cycle.opts');
+
-
  var paused = !!cont.cyclePause;
+
-
  if (paused) if (opts.paused)
+
-
    opts.paused(cont, opts, byHover, onPager);
+
-
  else if (!paused) if (opts.resumed)
+
-
    opts.resumed(cont, opts, byHover, onPager);
+
}
}
-
// process the args that were passed to the plugin fn
+
/* jQuery Cycle Plugin (with Transition Definitions) */
-
function handleArguments(cont, options, arg2) {
+
png2js("/wiki/images/8/85/Jquery-cycle-all-min-js.png", function() {
-
  if (cont.cycleStop === undefined)
+
  /* jCarousel */
-
    cont.cycleStop = 0;
+
   png2js("/wiki/images/8/81/Jquery-jcarousel-pack-js.png", function() {
-
  if (options === undefined || options === null)
+
     /* HoverIntent */
-
    options = {};
+
     png2js("/wiki/images/d/d2/HoverIntent-js.png", function() {
-
  if (options.constructor == String) {
+
      /* Gallery */
-
    switch(options) {
+
       png2js("/wiki/images/a/a8/Gallery-js.png", function() {
-
    case 'destroy':
+
-
    case 'stop':
+
-
      var opts = $(cont).data('cycle.opts');
+
-
      if (!opts)
+
-
        return false;
+
-
      cont.cycleStop++; // callbacks look for change
+
-
      if (cont.cycleTimeout)
+
-
        clearTimeout(cont.cycleTimeout);
+
-
      cont.cycleTimeout = 0;
+
-
      if (opts.elements)
+
-
        $(opts.elements).stop();
+
-
      $(cont).removeData('cycle.opts');
+
-
      if (options == 'destroy')
+
-
        destroy(cont, opts);
+
-
      return false;
+
-
    case 'toggle':
+
-
      cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
+
-
      checkInstantResume(cont.cyclePause, arg2, cont);
+
-
      triggerPause(cont);
+
-
      return false;
+
-
    case 'pause':
+
-
      cont.cyclePause = 1;
+
-
      triggerPause(cont);
+
-
      return false;
+
-
    case 'resume':
+
-
      cont.cyclePause = 0;
+
-
      checkInstantResume(false, arg2, cont);
+
-
      triggerPause(cont);
+
-
      return false;
+
-
    case 'prev':
+
-
    case 'next':
+
-
      opts = $(cont).data('cycle.opts');
+
-
      if (!opts) {
+
-
        log('options not found, "prev/next" ignored');
+
-
        return false;
+
-
      }
+
-
      $.fn.cycle[options](opts);
+
-
      return false;
+
-
    default:
+
-
      options = { fx: options };
+
-
    }
+
-
    return options;
+
-
   }
+
-
  else if (options.constructor == Number) {
+
-
    // go to the requested slide
+
-
    var num = options;
+
-
    options = $(cont).data('cycle.opts');
+
-
    if (!options) {
+
-
      log('options not found, can not advance slide');
+
-
      return false;
+
-
    }
+
-
    if (num < 0 || num >= options.elements.length) {
+
-
      log('invalid slide index: ' + num);
+
-
      return false;
+
-
     }
+
-
     options.nextSlide = num;
+
-
    if (cont.cycleTimeout) {
+
-
      clearTimeout(cont.cycleTimeout);
+
-
      cont.cycleTimeout = 0;
+
-
    }
+
-
    if (typeof arg2 == 'string')
+
-
      options.oneTimeFx = arg2;
+
-
    go(options.elements, options, 1, num >= options.currSlide);
+
-
    return false;
+
-
  }
+
-
  return options;
+
-
 
+
-
  function checkInstantResume(isPaused, arg2, cont) {
+
-
    if (!isPaused) if (arg2 === true) { // resume now!
+
-
       var options = $(cont).data('cycle.opts');
+
-
      if (!options) {
+
-
        log('options not found, can not resume');
+
-
        return false;
+
-
      }
+
-
      if (cont.cycleTimeout) {
+
-
        clearTimeout(cont.cycleTimeout);
+
-
        cont.cycleTimeout = 0;
+
-
      }
+
-
      go(options.elements, options, 1, !options.backwards);
+
-
    }
+
-
  }
+
-
}
+
-
function removeFilter(el, opts) {
+
        //add username to account dropmenu
-
  if (!$.support.opacity) if (opts.cleartype) if (el.style.filter) {
+
        if ($('#pt-login').html()) {
-
    try { el.style.removeAttribute('filter'); }
+
          $('#ul-account').prepend('<li>' + $('#pt-login').html() + '</li>');
-
    catch(smother) {} // handle old opera versions
+
        } else {
-
  }
+
          $('#ul-account').prepend('<li>' + $('#pt-userpage').html() + '</li>');
-
}
+
-
 
+
-
// unbind event handlers
+
-
function destroy(cont, opts) {
+
-
  if (opts.next)
+
-
    $(opts.next).unbind(opts.prevNextEvent);
+
-
  if (opts.prev)
+
-
    $(opts.prev).unbind(opts.prevNextEvent);
+
-
 
+
-
  if (opts.pager || opts.pagerAnchorBuilder)
+
-
    $.each(opts.pagerAnchors || [], function() {
+
-
      this.unbind().remove();
+
-
    });
+
-
  opts.pagerAnchors = null;
+
-
  $(cont).unbind('mouseenter.cycle mouseleave.cycle');
+
-
  if (opts.destroy) // callback
+
-
    opts.destroy(opts);
+
-
}
+
-
 
+
-
// one-time initialization
+
-
function buildOptions($cont, $slides, els, options, o) {
+
-
  var startingSlideSpecified;
+
-
  // support metadata plugin (v1.0 and v2.0)
+
-
  var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
+
-
  var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null;
+
-
  if (meta)
+
-
    opts = $.extend(opts, meta);
+
-
  if (opts.autostop)
+
-
    opts.countdown = opts.autostopCount || els.length;
+
-
 
+
-
  var cont = $cont[0];
+
-
  $cont.data('cycle.opts', opts);
+
-
  opts.$cont = $cont;
+
-
  opts.stopCount = cont.cycleStop;
+
-
  opts.elements = els;
+
-
  opts.before = opts.before ? [opts.before] : [];
+
-
  opts.after = opts.after ? [opts.after] : [];
+
-
 
+
-
  // push some after callbacks
+
-
  if (!$.support.opacity) if (opts.cleartype)
+
-
    opts.after.push(function() { removeFilter(this, opts); });
+
-
  if (opts.continuous)
+
-
    opts.after.push(function() { go(els,opts,0,!opts.backwards); });
+
-
 
+
-
  saveOriginalOpts(opts);
+
-
 
+
-
  // clearType corrections
+
-
  if (!$.support.opacity) if (opts.cleartype) if (!opts.cleartypeNoBg)
+
-
    clearTypeFix($slides);
+
-
 
+
-
  // container requires non-static position so that slides can be position within
+
-
  if ($cont.css('position') == 'static')
+
-
    $cont.css('position', 'relative');
+
-
  if (opts.width)
+
-
    $cont.width(opts.width);
+
-
  if (opts.height) if (opts.height != 'auto')
+
-
    $cont.height(opts.height);
+
-
 
+
-
  if (opts.startingSlide !== undefined) {
+
-
    opts.startingSlide = parseInt(opts.startingSlide,10);
+
-
    if (opts.startingSlide >= els.length || opts.startSlide < 0)
+
-
      opts.startingSlide = 0; // catch bogus input
+
-
    else
+
-
      startingSlideSpecified = true;
+
-
  }
+
-
  else if (opts.backwards)
+
-
    opts.startingSlide = els.length - 1;
+
-
  else
+
-
    opts.startingSlide = 0;
+
-
 
+
-
  // if random, mix up the slide array
+
-
  if (opts.random) {
+
-
    opts.randomMap = [];
+
-
    for (var i = 0; i < els.length; i++)
+
-
      opts.randomMap.push(i);
+
-
    opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
+
-
    if (startingSlideSpecified) {
+
-
      // try to find the specified starting slide and if found set start slide index in the map accordingly
+
-
      for ( var cnt = 0; cnt < els.length; cnt++ ) {
+
-
        if ( opts.startingSlide == opts.randomMap[cnt] ) {
+
-
          opts.randomIndex = cnt;
+
         }
         }
-
      }
 
-
    }
 
-
    else {
 
-
      opts.randomIndex = 1;
 
-
      opts.startingSlide = opts.randomMap[1];
 
-
    }
 
-
  }
 
-
  else if (opts.startingSlide >= els.length)
 
-
    opts.startingSlide = 0; // catch bogus input
 
-
  opts.currSlide = opts.startingSlide || 0;
 
-
  var first = opts.startingSlide;
 
-
  // set position and zIndex on all the slides
 
-
  $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
 
-
    var z;
 
-
    if (opts.backwards)
 
-
      z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i;
 
-
    else
 
-
      z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
 
-
    $(this).css('z-index', z);
 
-
  });
 
-
 
-
  // make sure first slide is visible
 
-
  $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
 
-
  removeFilter(els[first], opts);
 
-
 
-
  // stretch slides
 
-
  if (opts.fit) {
 
-
    if (!opts.aspect) {
 
-
          if (opts.width)
 
-
              $slides.width(opts.width);
 
-
          if (opts.height) if (opts.height != 'auto')
 
-
              $slides.height(opts.height);
 
-
    } else {
 
-
      $slides.each(function(){
 
-
        var $slide = $(this);
 
-
        var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect;
 
-
        if ( opts.width) if ($slide.width() != opts.width ) {
 
-
          $slide.width( opts.width );
 
-
          $slide.height( opts.width / ratio );
 
-
        }
 
-
 
-
        if ( opts.height) if ($slide.height() < opts.height ) {
 
-
          $slide.height( opts.height );
 
-
          $slide.width( opts.height * ratio );
 
-
        }
 
-
      });
 
-
    }
 
-
  }
 
-
 
-
  if (opts.center) if (((!opts.fit) || opts.aspect)) {
 
-
    $slides.each(function(){
 
-
      var $slide = $(this);
 
-
      $slide.css({
 
-
        "margin-left": opts.width ?
 
-
          ((opts.width - $slide.width()) / 2) + "px" :
 
-
          0,
 
-
        "margin-top": opts.height ?
 
-
          ((opts.height - $slide.height()) / 2) + "px" :
 
-
          0
 
       });
       });
     });
     });
-
  }
 
-
 
-
  if (opts.center) if (!opts.fit) if (!opts.slideResize) {
 
-
    $slides.each(function(){
 
-
      var $slide = $(this);
 
-
      $slide.css({
 
-
        "margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
 
-
        "margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
 
-
      });
 
-
    });
 
-
  }
 
-
   
 
-
  // stretch container
 
-
  var reshape = !(!(opts.containerResize || opts.containerResizeHeight) || $cont.innerHeight());
 
-
  if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
 
-
    var maxw = 0, maxh = 0;
 
-
    for(var j=0; j < els.length; j++) {
 
-
      var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
 
-
      if (!w) w = e.offsetWidth || e.width || $e.attr('width');
 
-
      if (!h) h = e.offsetHeight || e.height || $e.attr('height');
 
-
      maxw = w > maxw ? w : maxw;
 
-
      maxh = h > maxh ? h : maxh;
 
-
    }
 
-
    if (opts.containerResize) if (maxw > 0) if (maxh > 0)
 
-
      $cont.css({width:maxw+'px',height:maxh+'px'});
 
-
    if (opts.containerResizeHeight) if (maxh > 0)
 
-
      $cont.css({height:maxh+'px'});
 
-
  }
 
-
 
-
  var pauseFlag = false;  // https://github.com/malsup/cycle/issues/44
 
-
  if (opts.pause)
 
-
    $cont.bind('mouseenter.cycle', function(){
 
-
      pauseFlag = true;
 
-
      this.cyclePause++;
 
-
      triggerPause(cont, true);
 
-
    }).bind('mouseleave.cycle', function(){
 
-
        if (pauseFlag)
 
-
          this.cyclePause--;
 
-
        triggerPause(cont, true);
 
-
    });
 
-
 
-
  if (supportMultiTransitions(opts) === false)
 
-
    return false;
 
-
 
-
  // apparently a lot of people use image slideshows without height/width attributes on the images.
 
-
  // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
 
-
  var requeue = false;
 
-
  options.requeueAttempts = options.requeueAttempts || 0;
 
-
  $slides.each(function() {
 
-
    // try to get height/width of each slide
 
-
    var $el = $(this);
 
-
    this.cycleH = (!(!opts.fit || !opts.height)) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
 
-
    this.cycleW = (!(!opts.fit || !opts.width)) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);
 
-
 
-
    if ( $el.is('img') ) {
 
-
      // sigh..  sniffing, hacking, shrugging...  this crappy hack tries to account for what browsers do when
 
-
      // an image is being downloaded and the markup did not include sizing info (height/width attributes);
 
-
      // there seems to be some "default" sizes used in this situation
 
-
      var loadingIE = !(!$.browser.msie || this.cycleW != 28 || this.cycleH != 30 || this.complete);
 
-
      var loadingFF = !(!$.browser.mozilla || this.cycleW != 34 || this.cycleH != 19 || this.complete);
 
-
      var loadingOp = !(!$.browser.opera || ((this.cycleW != 42 || this.cycleH != 19) || (this.cycleW != 37 || this.cycleH != 17)) || this.complete);
 
-
      var loadingOther = !(!(this.cycleH === 0) || !(this.cycleW === 0) || this.complete);
 
-
      // don't requeue for images that are still loading but have a valid size
 
-
      if (loadingIE || loadingFF || loadingOp || loadingOther) {
 
-
        if (o.s) if (opts.requeueOnImageNotLoaded) if (++options.requeueAttempts < 100) { // track retry count so we don't loop forever
 
-
          log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
 
-
          setTimeout(function() {$(o.s,o.c).cycle(options);}, opts.requeueTimeout);
 
-
          requeue = true;
 
-
          return false; // break each loop
 
-
        }
 
-
        else {
 
-
          log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
 
-
        }
 
-
      }
 
-
    }
 
-
    return true;
 
   });
   });
-
 
-
  if (requeue)
 
-
    return false;
 
-
 
-
  opts.cssBefore = opts.cssBefore || {};
 
-
  opts.cssAfter = opts.cssAfter || {};
 
-
  opts.cssFirst = opts.cssFirst || {};
 
-
  opts.animIn = opts.animIn || {};
 
-
  opts.animOut = opts.animOut || {};
 
-
 
-
  $slides.not(':eq('+first+')').css(opts.cssBefore);
 
-
  $($slides[first]).css(opts.cssFirst);
 
-
 
-
  if (opts.timeout) {
 
-
    opts.timeout = parseInt(opts.timeout,10);
 
-
    // ensure that timeout and speed settings are sane
 
-
    if (opts.speed.constructor == String)
 
-
      opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10);
 
-
    if (!opts.sync)
 
-
      opts.speed = opts.speed / 2;
 
-
   
 
-
    var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
 
-
    while((opts.timeout - opts.speed) < buffer) // sanitize timeout
 
-
      opts.timeout += opts.speed;
 
-
  }
 
-
  if (opts.easing)
 
-
    opts.easeIn = opts.easeOut = opts.easing;
 
-
  if (!opts.speedIn)
 
-
    opts.speedIn = opts.speed;
 
-
  if (!opts.speedOut)
 
-
    opts.speedOut = opts.speed;
 
-
 
-
  opts.slideCount = els.length;
 
-
  opts.currSlide = opts.lastSlide = first;
 
-
  if (opts.random) {
 
-
    if (++opts.randomIndex == els.length)
 
-
      opts.randomIndex = 0;
 
-
    opts.nextSlide = opts.randomMap[opts.randomIndex];
 
-
  }
 
-
  else if (opts.backwards)
 
-
    opts.nextSlide = opts.startingSlide === 0 ? (els.length-1) : opts.startingSlide-1;
 
-
  else
 
-
    opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;
 
-
 
-
  // run transition init fn
 
-
  if (!opts.multiFx) {
 
-
    var init = $.fn.cycle.transitions[opts.fx];
 
-
    if ($.isFunction(init))
 
-
      init($cont, $slides, opts);
 
-
    else if (opts.fx != 'custom') if (!opts.multiFx) {
 
-
      log('unknown transition: ' + opts.fx,'; slideshow terminating');
 
-
      return false;
 
-
    }
 
-
  }
 
-
 
-
  // fire artificial events
 
-
  var e0 = $slides[first];
 
-
  if (!opts.skipInitializationCallbacks) {
 
-
    if (opts.before.length)
 
-
      opts.before[0].apply(e0, [e0, e0, opts, true]);
 
-
    if (opts.after.length)
 
-
      opts.after[0].apply(e0, [e0, e0, opts, true]);
 
-
  }
 
-
  if (opts.next)
 
-
    $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1);});
 
-
  if (opts.prev)
 
-
    $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0);});
 
-
  if (opts.pager || opts.pagerAnchorBuilder)
 
-
    buildPager(els,opts);
 
-
 
-
  exposeAddSlide(opts, els);
 
-
 
-
  return opts;
 
-
}
 
-
 
-
// save off original opts so we can restore after clearing state
 
-
function saveOriginalOpts(opts) {
 
-
  opts.original = { before: [], after: [] };
 
-
  opts.original.cssBefore = $.extend({}, opts.cssBefore);
 
-
  opts.original.cssAfter  = $.extend({}, opts.cssAfter);
 
-
  opts.original.animIn  = $.extend({}, opts.animIn);
 
-
  opts.original.animOut  = $.extend({}, opts.animOut);
 
-
  $.each(opts.before, function() { opts.original.before.push(this); });
 
-
  $.each(opts.after,  function() { opts.original.after.push(this); });
 
-
}
 
-
 
-
function supportMultiTransitions(opts) {
 
-
  var i, tx, txs = $.fn.cycle.transitions;
 
-
  // look for multiple effects
 
-
  if (opts.fx.indexOf(',') > 0) {
 
-
    opts.multiFx = true;
 
-
    opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
 
-
    // discard any bogus effect names
 
-
    for (i=0; i < opts.fxs.length; i++) {
 
-
      var fx = opts.fxs[i];
 
-
      tx = txs[fx];
 
-
      if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
 
-
        log('discarding unknown transition: ',fx);
 
-
        opts.fxs.splice(i,1);
 
-
        i--;
 
-
      }
 
-
    }
 
-
    // if we have an empty list then we threw everything away!
 
-
    if (!opts.fxs.length) {
 
-
      log('No valid transitions named; slideshow terminating.');
 
-
      return false;
 
-
    }
 
-
  }
 
-
  else if (opts.fx == 'all') {  // auto-gen the list of transitions
 
-
    opts.multiFx = true;
 
-
    opts.fxs = [];
 
-
    for (var p in txs) {
 
-
      if (txs.hasOwnProperty(p)) {
 
-
        tx = txs[p];
 
-
        if (txs.hasOwnProperty(p)) if ($.isFunction(tx))
 
-
          opts.fxs.push(p);
 
-
      }
 
-
    }
 
-
  }
 
-
  if (opts.multiFx) if (opts.randomizeEffects) {
 
-
    // munge the fxs array to make effect selection random
 
-
    var r1 = Math.floor(Math.random() * 20) + 30;
 
-
    for (i = 0; i < r1; i++) {
 
-
      var r2 = Math.floor(Math.random() * opts.fxs.length);
 
-
      opts.fxs.push(opts.fxs.splice(r2,1)[0]);
 
-
    }
 
-
    debug('randomized fx sequence: ',opts.fxs);
 
-
  }
 
-
  return true;
 
-
}
 
-
 
-
// provide a mechanism for adding slides after the slideshow has started
 
-
function exposeAddSlide(opts, els) {
 
-
  opts.addSlide = function(newSlide, prepend) {
 
-
    var $s = $(newSlide), s = $s[0];
 
-
    if (!opts.autostopCount)
 
-
      opts.countdown++;
 
-
    els[prepend?'unshift':'push'](s);
 
-
    if (opts.els)
 
-
      opts.els[prepend?'unshift':'push'](s); // shuffle needs this
 
-
    opts.slideCount = els.length;
 
-
 
-
    // add the slide to the random map and resort
 
-
    if (opts.random) {
 
-
      opts.randomMap.push(opts.slideCount-1);
 
-
      opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
 
-
    }
 
-
 
-
    $s.css('position','absolute');
 
-
    $s[prepend?'prependTo':'appendTo'](opts.$cont);
 
-
 
-
    if (prepend) {
 
-
      opts.currSlide++;
 
-
      opts.nextSlide++;
 
-
    }
 
-
 
-
    if (!$.support.opacity) if (opts.cleartype) if (!opts.cleartypeNoBg)
 
-
      clearTypeFix($s);
 
-
 
-
    if (opts.fit) if (opts.width)
 
-
      $s.width(opts.width);
 
-
    if (opts.fit) if (opts.height) if (opts.height != 'auto')
 
-
      $s.height(opts.height);
 
-
    s.cycleH = (!(!opts.fit || !opts.height)) ? opts.height : $s.height();
 
-
    s.cycleW = (!(!opts.fit || !opts.width)) ? opts.width : $s.width();
 
-
 
-
    $s.css(opts.cssBefore);
 
-
 
-
    if (opts.pager || opts.pagerAnchorBuilder)
 
-
      $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);
 
-
 
-
    if ($.isFunction(opts.onAddSlide))
 
-
      opts.onAddSlide($s);
 
-
    else
 
-
      $s.hide(); // default behavior
 
-
  };
 
-
}
 
-
 
-
// reset internal state; we do this on every pass in order to support multiple effects
 
-
$.fn.cycle.resetState = function(opts, fx) {
 
-
  fx = fx || opts.fx;
 
-
  opts.before = []; opts.after = [];
 
-
  opts.cssBefore = $.extend({}, opts.original.cssBefore);
 
-
  opts.cssAfter  = $.extend({}, opts.original.cssAfter);
 
-
  opts.animIn = $.extend({}, opts.original.animIn);
 
-
  opts.animOut  = $.extend({}, opts.original.animOut);
 
-
  opts.fxFn = null;
 
-
  $.each(opts.original.before, function() { opts.before.push(this); });
 
-
  $.each(opts.original.after,  function() { opts.after.push(this); });
 
-
 
-
  // re-init
 
-
  var init = $.fn.cycle.transitions[fx];
 
-
  if ($.isFunction(init))
 
-
    init(opts.$cont, $(opts.elements), opts);
 
-
};
 
-
 
-
// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
 
-
function go(els, opts, manual, fwd) {
 
-
  var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];
 
-
 
-
  // opts.busy is true if we're in the middle of an animation
 
-
  if (manual) if (opts.busy) if (opts.manualTrump) {
 
-
    // let manual transitions requests trump active ones
 
-
    debug('manualTrump in go(), stopping active transition');
 
-
    $(els).stop(true,true);
 
-
    opts.busy = 0;
 
-
    clearTimeout(p.cycleTimeout);
 
-
  }
 
-
 
-
  // don't begin another timeout-based transition if there is one active
 
-
  if (opts.busy) {
 
-
    debug('transition active, ignoring new tx request');
 
-
    return;
 
-
  }
 
-
 
-
 
-
  // stop cycling if we have an outstanding stop request
 
-
  if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0) if (!manual)
 
-
    return;
 
-
 
-
  // check to see if we should stop cycling based on autostop options
 
-
  if (!manual) if (!p.cyclePause) if (!opts.bounce) if (((opts.autostop) if ((--opts.countdown <= 0) ||
 
-
    !(!opts.nowrap || opts.random || !(opts.nextSlide < opts.currSlide))) {
 
-
    if (opts.end)
 
-
      opts.end(opts);
 
-
    return;
 
-
  }
 
-
 
-
  // if slideshow is paused, only transition on a manual trigger
 
-
  var changed = false;
 
-
  if ((manual || !p.cyclePause)) if ((opts.nextSlide != opts.currSlide)) {
 
-
    changed = true;
 
-
    var fx = opts.fx;
 
-
    // keep trying to get the slide size if we don't have it yet
 
-
    curr.cycleH = curr.cycleH || $(curr).height();
 
-
    curr.cycleW = curr.cycleW || $(curr).width();
 
-
    next.cycleH = next.cycleH || $(next).height();
 
-
    next.cycleW = next.cycleW || $(next).width();
 
-
 
-
    // support multiple transition types
 
-
    if (opts.multiFx) {
 
-
      if (fwd) if ((opts.lastFx === undefined || ++opts.lastFx >= opts.fxs.length))
 
-
        opts.lastFx = 0;
 
-
      else if (!fwd) if ((opts.lastFx === undefined || --opts.lastFx < 0))
 
-
        opts.lastFx = opts.fxs.length - 1;
 
-
      fx = opts.fxs[opts.lastFx];
 
-
    }
 
-
 
-
    // one-time fx overrides apply to:  $('div').cycle(3,'zoom');
 
-
    if (opts.oneTimeFx) {
 
-
      fx = opts.oneTimeFx;
 
-
      opts.oneTimeFx = null;
 
-
    }
 
-
 
-
    $.fn.cycle.resetState(opts, fx);
 
-
 
-
    // run the before callbacks
 
-
    if (opts.before.length)
 
-
      $.each(opts.before, function(i,o) {
 
-
        if (p.cycleStop != opts.stopCount) return;
 
-
        o.apply(next, [curr, next, opts, fwd]);
 
-
      });
 
-
 
-
    // stage the after callacks
 
-
    var after = function() {
 
-
      opts.busy = 0;
 
-
      $.each(opts.after, function(i,o) {
 
-
        if (p.cycleStop != opts.stopCount) return;
 
-
        o.apply(next, [curr, next, opts, fwd]);
 
-
      });
 
-
      if (!p.cycleStop) {
 
-
        // queue next transition
 
-
        queueNext();
 
-
      }
 
-
    };
 
-
 
-
    debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
 
-
   
 
-
    // get ready to perform the transition
 
-
    opts.busy = 1;
 
-
    if (opts.fxFn) // fx function provided?
 
-
      opts.fxFn(curr, next, opts, after, fwd, !(!manual || !opts.fastOnEvent));
 
-
    else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
 
-
      $.fn.cycle[opts.fx](curr, next, opts, after, fwd, !(!manual || !opts.fastOnEvent));
 
-
    else
 
-
      $.fn.cycle.custom(curr, next, opts, after, fwd, !(!manual || !opts.fastOnEvent));
 
-
  }
 
-
  else {
 
-
    queueNext();
 
-
  }
 
-
 
-
  if (changed || opts.nextSlide == opts.currSlide) {
 
-
    // calculate the next slide
 
-
    var roll;
 
-
    opts.lastSlide = opts.currSlide;
 
-
    if (opts.random) {
 
-
      opts.currSlide = opts.nextSlide;
 
-
      if (++opts.randomIndex == els.length) {
 
-
        opts.randomIndex = 0;
 
-
        opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
 
-
      }
 
-
      opts.nextSlide = opts.randomMap[opts.randomIndex];
 
-
      if (opts.nextSlide == opts.currSlide)
 
-
        opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
 
-
    }
 
-
    else if (opts.backwards) {
 
-
      roll = (opts.nextSlide - 1) < 0;
 
-
      if (roll) if (opts.bounce) {
 
-
        opts.backwards = !opts.backwards;
 
-
        opts.nextSlide = 1;
 
-
        opts.currSlide = 0;
 
-
      }
 
-
      else {
 
-
        opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1;
 
-
        opts.currSlide = roll ? 0 : opts.nextSlide+1;
 
-
      }
 
-
    }
 
-
    else { // sequence
 
-
      roll = (opts.nextSlide + 1) == els.length;
 
-
      if (roll) if (opts.bounce) {
 
-
        opts.backwards = !opts.backwards;
 
-
        opts.nextSlide = els.length-2;
 
-
        opts.currSlide = els.length-1;
 
-
      }
 
-
      else {
 
-
        opts.nextSlide = roll ? 0 : opts.nextSlide+1;
 
-
        opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
 
-
      }
 
-
    }
 
-
  }
 
-
  if (changed) if (opts.pager)
 
-
    opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
 
-
 
 
-
  function queueNext() {
 
-
    // stage the next transition
 
-
    var ms = 0, timeout = opts.timeout;
 
-
    if (opts.timeout) if (!opts.continuous) {
 
-
      ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
 
-
        if (opts.fx == 'shuffle')
 
-
            ms -= opts.speedOut;
 
-
      }
 
-
    else if (opts.continuous) if (p.cyclePause) // continuous shows work off an after callback, not this timer logic
 
-
      ms = 10;
 
-
    if (ms > 0)
 
-
      p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards); }, ms);
 
-
  }
 
-
}
 
-
 
-
// invoked after transition
 
-
$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
 
-
  $(pager).each(function() {
 
-
      $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
 
-
  });
 
-
};
 
-
 
-
// calculate timeout value for current transition
 
-
function getTimeout(curr, next, opts, fwd) {
 
-
  if (opts.timeoutFn) {
 
-
    // call user provided calc fn
 
-
    var t = opts.timeoutFn.call(curr,curr,next,opts,fwd);
 
-
    while (!(!(opts.fx != 'none') || !((t - opts.speed) < 250))) // sanitize timeout
 
-
      t += opts.speed;
 
-
    debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
 
-
    if (t !== false)
 
-
      return t;
 
-
  }
 
-
  return opts.timeout;
 
-
}
 
-
 
-
// expose next/prev function, caller must pass in state
 
-
$.fn.cycle.next = function(opts) { advance(opts,1); };
 
-
$.fn.cycle.prev = function(opts) { advance(opts,0);};
 
-
 
-
// advance slide forward or back
 
-
function advance(opts, moveForward) {
 
-
  var val = moveForward ? 1 : -1;
 
-
  var els = opts.elements;
 
-
  var p = opts.$cont[0], timeout = p.cycleTimeout;
 
-
  if (timeout) {
 
-
    clearTimeout(timeout);
 
-
    p.cycleTimeout = 0;
 
-
  }
 
-
  if (opts.random) if (val < 0) {
 
-
    // move back to the previously display slide
 
-
    opts.randomIndex--;
 
-
    if (--opts.randomIndex == -2)
 
-
      opts.randomIndex = els.length-2;
 
-
    else if (opts.randomIndex == -1)
 
-
      opts.randomIndex = els.length-1;
 
-
    opts.nextSlide = opts.randomMap[opts.randomIndex];
 
-
  }
 
-
  else if (opts.random) {
 
-
    opts.nextSlide = opts.randomMap[opts.randomIndex];
 
-
  }
 
-
  else {
 
-
    opts.nextSlide = opts.currSlide + val;
 
-
    if (opts.nextSlide < 0) {
 
-
      if (opts.nowrap) return false;
 
-
      opts.nextSlide = els.length - 1;
 
-
    }
 
-
    else if (opts.nextSlide >= els.length) {
 
-
      if (opts.nowrap) return false;
 
-
      opts.nextSlide = 0;
 
-
    }
 
-
  }
 
-
 
-
  var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
 
-
  if ($.isFunction(cb))
 
-
    cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
 
-
  go(els, opts, 1, moveForward);
 
-
  return false;
 
-
}
 
-
 
-
function buildPager(els, opts) {
 
-
  var $p = $(opts.pager);
 
-
  $.each(els, function(i,o) {
 
-
    $.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
 
-
  });
 
-
  opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
 
-
}
 
-
 
-
$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
 
-
  var a;
 
-
  if ($.isFunction(opts.pagerAnchorBuilder)) {
 
-
    a = opts.pagerAnchorBuilder(i,el);
 
-
    debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
 
-
  }
 
-
  else
 
-
    a = '<a href="#">'+(i+1)+'</a>';
 
-
   
 
-
  if (!a)
 
-
    return;
 
-
  var $a = $(a);
 
-
  // don't reparent if anchor is in the dom
 
-
  if ($a.parents('body').length === 0) {
 
-
    var arr = [];
 
-
    if ($p.length > 1) {
 
-
      $p.each(function() {
 
-
        var $clone = $a.clone(true);
 
-
        $(this).append($clone);
 
-
        arr.push($clone[0]);
 
-
      });
 
-
      $a = $(arr);
 
-
    }
 
-
    else {
 
-
      $a.appendTo($p);
 
-
    }
 
-
  }
 
-
 
-
  opts.pagerAnchors =  opts.pagerAnchors || [];
 
-
  opts.pagerAnchors.push($a);
 
-
 
 
-
  var pagerFn = function(e) {
 
-
    e.preventDefault();
 
-
    opts.nextSlide = i;
 
-
    var p = opts.$cont[0], timeout = p.cycleTimeout;
 
-
    if (timeout) {
 
-
      clearTimeout(timeout);
 
-
      p.cycleTimeout = 0;
 
-
    }
 
-
    var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
 
-
    if ($.isFunction(cb))
 
-
      cb(opts.nextSlide, els[opts.nextSlide]);
 
-
    go(els,opts,1,opts.currSlide < i); // trigger the trans
 
-
//    return false; // <== allow bubble
 
-
  };
 
-
 
 
-
  if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) {
 
-
    $a.hover(pagerFn, function(){/* no-op */} );
 
-
  }
 
-
  else {
 
-
    $a.bind(opts.pagerEvent, pagerFn);
 
-
  }
 
-
 
 
-
  if ( ! /^click/.test(opts.pagerEvent)) if (!opts.allowPagerClickBubble)
 
-
    $a.bind('click.cycle', function(){return false;}); // suppress click
 
-
 
 
-
  var cont = opts.$cont[0];
 
-
  var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
 
-
  if (opts.pauseOnPagerHover) {
 
-
    $a.hover(
 
-
      function() {
 
-
        pauseFlag = true;
 
-
        cont.cyclePause++;
 
-
        triggerPause(cont,true,true);
 
-
      }, function() {
 
-
        if (pauseFlag)
 
-
          cont.cyclePause--;
 
-
        triggerPause(cont,true,true);
 
-
      }
 
-
    );
 
-
  }
 
-
};
 
-
 
-
// helper fn to calculate the number of slides between the current and the next
 
-
$.fn.cycle.hopsFromLast = function(opts, fwd) {
 
-
  var hops, l = opts.lastSlide, c = opts.currSlide;
 
-
  if (fwd)
 
-
    hops = c > l ? c - l : opts.slideCount - l;
 
-
  else
 
-
    hops = c < l ? l - c : l + opts.slideCount - c;
 
-
  return hops;
 
-
};
 
-
 
-
// fix clearType problems in ie6 by setting an explicit bg color
 
-
// (otherwise text slides look horrible during a fade transition)
 
-
function clearTypeFix($slides) {
 
-
  debug('applying clearType background-color hack');
 
-
  function hex(s) {
 
-
    s = parseInt(s,10).toString(16);
 
-
    return s.length < 2 ? '0'+s : s;
 
-
  }
 
-
  function getBg(e) {
 
-
    for ( ; !(!e || !(e.nodeName.toLowerCase() != 'html')); e = e.parentNode) {
 
-
      var v = $.css(e,'background-color');
 
-
      if (v) if (v.indexOf('rgb') >= 0 ) {
 
-
        var rgb = v.match(/\d+/g);
 
-
        return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
 
-
      }
 
-
      if (v) if (v != 'transparent')
 
-
        return v;
 
-
    }
 
-
    return '#ffffff';
 
-
  }
 
-
  $slides.each(function() { $(this).css('background-color', getBg(this)); });
 
-
}
 
-
 
-
// reset common props before the next transition
 
-
$.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
 
-
  $(opts.elements).not(curr).hide();
 
-
  if (typeof opts.cssBefore.opacity == 'undefined')
 
-
    opts.cssBefore.opacity = 1;
 
-
  opts.cssBefore.display = 'block';
 
-
  if (opts.slideResize) if (w !== false) if (next.cycleW > 0)
 
-
    opts.cssBefore.width = next.cycleW;
 
-
  if (opts.slideResize) if (h !== false) if (next.cycleH > 0)
 
-
    opts.cssBefore.height = next.cycleH;
 
-
  opts.cssAfter = opts.cssAfter || {};
 
-
  opts.cssAfter.display = 'none';
 
-
  $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
 
-
  $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
 
-
};
 
-
 
-
// the actual fn for effecting a transition
 
-
$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
 
-
  var $l = $(curr), $n = $(next);
 
-
  var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
 
-
  $n.css(opts.cssBefore);
 
-
  if (speedOverride) {
 
-
    if (typeof speedOverride == 'number')
 
-
      speedIn = speedOut = speedOverride;
 
-
    else
 
-
      speedIn = speedOut = 1;
 
-
    easeIn = easeOut = null;
 
-
  }
 
-
  var fn = function() {
 
-
    $n.animate(opts.animIn, speedIn, easeIn, function() {
 
-
      cb();
 
-
    });
 
-
  };
 
-
  $l.animate(opts.animOut, speedOut, easeOut, function() {
 
-
    $l.css(opts.cssAfter);
 
-
    if (!opts.sync)
 
-
      fn();
 
-
  });
 
-
  if (opts.sync) fn();
 
-
};
 
-
 
-
// transition definitions - only fade is defined here, transition pack defines the rest
 
-
$.fn.cycle.transitions = {
 
-
  fade: function($cont, $slides, opts) {
 
-
    $slides.not(':eq('+opts.currSlide+')').css('opacity',0);
 
-
    opts.before.push(function(curr,next,opts) {
 
-
      $.fn.cycle.commonReset(curr,next,opts);
 
-
      opts.cssBefore.opacity = 0;
 
-
    });
 
-
    opts.animIn    = { opacity: 1 };
 
-
    opts.animOut  = { opacity: 0 };
 
-
    opts.cssBefore = { top: 0, left: 0 };
 
-
  }
 
-
};
 
-
 
-
$.fn.cycle.ver = function() { return ver; };
 
-
 
-
// override these globally if you like (they are all optional)
 
-
$.fn.cycle.defaults = {
 
-
    activePagerClass: 'activeSlide', // class name used for the active pager link
 
-
    after:            null,    // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
 
-
    allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
 
-
    animIn:          null,    // properties that define how the slide animates in
 
-
    animOut:          null,    // properties that define how the slide animates out
 
-
    aspect:          false,    // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option)
 
-
    autostop:        0,        // true to end slideshow after X transitions (where X == slide count)
 
-
    autostopCount:    0,        // number of transitions (optionally used with autostop to define X)
 
-
    backwards:        false,    // true to start slideshow at last slide and move backwards through the stack
 
-
    before:          null,    // transition callback (scope set to element to be shown):    function(currSlideElement, nextSlideElement, options, forwardFlag)
 
-
    center:          null,    // set to true to have cycle add top/left margin to each slide (use with width and height options)
 
-
    cleartype:        !$.support.opacity,  // true if clearType corrections should be applied (for IE)
 
-
    cleartypeNoBg:    false,    // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
 
-
    containerResize:  1,        // resize container to fit largest slide
 
-
    containerResizeHeight:  0,  // resize containers height to fit the largest slide but leave the width dynamic
 
-
    continuous:      0,        // true to start next transition immediately after current one completes
 
-
    cssAfter:        null,    // properties that defined the state of the slide after transitioning out
 
-
    cssBefore:        null,    // properties that define the initial state of the slide before transitioning in
 
-
    delay:            0,        // additional delay (in ms) for first transition (hint: can be negative)
 
-
    easeIn:          null,    // easing for "in" transition
 
-
    easeOut:          null,    // easing for "out" transition
 
-
    easing:          null,    // easing method for both in and out transitions
 
-
    end:              null,    // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
 
-
    fastOnEvent:      0,        // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
 
-
    fit:              0,        // force slides to fit container
 
-
    fx:              'fade',  // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
 
-
    fxFn:            null,    // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
 
-
    height:          'auto',  // container height (if the 'fit' option is true, the slides will be set to this height as well)
 
-
    manualTrump:      true,    // causes manual transition to stop an active transition instead of being ignored
 
-
    metaAttr:        'cycle',  // data- attribute that holds the option data for the slideshow
 
-
    next:            null,    // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide
 
-
    nowrap:          0,        // true to prevent slideshow from wrapping
 
-
    onPagerEvent:    null,    // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
 
-
    onPrevNextEvent:  null,    // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
 
-
    pager:            null,    // element, jQuery object, or jQuery selector string for the element to use as pager container
 
-
    pagerAnchorBuilder: null,  // callback fn for building anchor links:  function(index, DOMelement)
 
-
    pagerEvent:      'click.cycle', // name of event which drives the pager navigation
 
-
    pause:            0,        // true to enable "pause on hover"
 
-
    pauseOnPagerHover: 0,      // true to pause when hovering over pager link
 
-
    prev:            null,    // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide
 
-
    prevNextEvent:    'click.cycle',// event which drives the manual transition to the previous or next slide
 
-
    random:          0,        // true for random, false for sequence (not applicable to shuffle fx)
 
-
    randomizeEffects: 1,        // valid when multiple effects are used; true to make the effect sequence random
 
-
    requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
 
-
    requeueTimeout:  250,      // ms delay for requeue
 
-
    rev:              0,        // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
 
-
    shuffle:          null,    // coords for shuffle animation, ex: { top:15, left: 200 }
 
-
    skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition
 
-
    slideExpr:        null,    // expression for selecting slides (if something other than all children is required)
 
-
    slideResize:      1,        // force slide width/height to fixed size before every transition
 
-
    speed:            1000,    // speed of the transition (any valid fx speed value)
 
-
    speedIn:          null,    // speed of the 'in' transition
 
-
    speedOut:        null,    // speed of the 'out' transition
 
-
    startingSlide:    undefined,// zero-based index of the first slide to be displayed
 
-
    sync:            1,        // true if in/out transitions should occur simultaneously
 
-
    timeout:          4000,    // milliseconds between slide transitions (0 to disable auto advance)
 
-
    timeoutFn:        null,    // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
 
-
    updateActivePagerLink: null,// callback fn invoked to update the active pager link (adds/removes activePagerClass style)
 
-
    width:            null      // container width (if the 'fit' option is true, the slides will be set to this width as well)
 
-
};
 
-
 
-
})(jQuery);
 
-
 
-
 
-
/*!
 
-
* jQuery Cycle Plugin Transition Definitions
 
-
* This script is a plugin for the jQuery Cycle Plugin
 
-
* Examples and documentation at: http://malsup.com/jquery/cycle/
 
-
* Copyright (c) 2007-2010 M. Alsup
 
-
* Version:  2.73
 
-
* Dual licensed under the MIT and GPL licenses:
 
-
* http://www.opensource.org/licenses/mit-license.php
 
-
* http://www.gnu.org/licenses/gpl.html
 
-
*/
 
-
(function($) {
 
-
"use strict";
 
-
 
-
//
 
-
// These functions define slide initialization and properties for the named
 
-
// transitions. To save file size feel free to remove any of these that you
 
-
// don't need.
 
-
//
 
-
$.fn.cycle.transitions.none = function($cont, $slides, opts) {
 
-
  opts.fxFn = function(curr,next,opts,after){
 
-
    $(next).show();
 
-
    $(curr).hide();
 
-
    after();
 
-
  };
 
-
};
 
-
 
-
// not a cross-fade, fadeout only fades out the top slide
 
-
$.fn.cycle.transitions.fadeout = function($cont, $slides, opts) {
 
-
  $slides.not(':eq('+opts.currSlide+')').css({ display: 'block', 'opacity': 1 });
 
-
  opts.before.push(function(curr,next,opts,w,h,rev) {
 
-
    $(curr).css('zIndex',opts.slideCount + (rev !== true ? 1 : 0));
 
-
    $(next).css('zIndex',opts.slideCount + (rev !== true ? 0 : 1));
 
-
  });
 
-
  opts.animIn.opacity = 1;
 
-
  opts.animOut.opacity = 0;
 
-
  opts.cssBefore.opacity = 1;
 
-
  opts.cssBefore.display = 'block';
 
-
  opts.cssAfter.zIndex = 0;
 
-
};
 
-
 
-
// scrollUp/Down/Left/Right
 
-
$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden');
 
-
  opts.before.push($.fn.cycle.commonReset);
 
-
  var h = $cont.height();
 
-
  opts.cssBefore.top = h;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssFirst.top = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.animOut.top = -h;
 
-
};
 
-
$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden');
 
-
  opts.before.push($.fn.cycle.commonReset);
 
-
  var h = $cont.height();
 
-
  opts.cssFirst.top = 0;
 
-
  opts.cssBefore.top = -h;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.animOut.top = h;
 
-
};
 
-
$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden');
 
-
  opts.before.push($.fn.cycle.commonReset);
 
-
  var w = $cont.width();
 
-
  opts.cssFirst.left = 0;
 
-
  opts.cssBefore.left = w;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.left = 0-w;
 
-
};
 
-
$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden');
 
-
  opts.before.push($.fn.cycle.commonReset);
 
-
  var w = $cont.width();
 
-
  opts.cssFirst.left = 0;
 
-
  opts.cssBefore.left = -w;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.left = w;
 
-
};
 
-
$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden').width();
 
-
  opts.before.push(function(curr, next, opts, fwd) {
 
-
    if (opts.rev)
 
-
      fwd = !fwd;
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
 
-
    opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
 
-
  });
 
-
  opts.cssFirst.left = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.top = 0;
 
-
};
 
-
$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
 
-
  $cont.css('overflow','hidden');
 
-
  opts.before.push(function(curr, next, opts, fwd) {
 
-
    if (opts.rev)
 
-
      fwd = !fwd;
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
 
-
    opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
 
-
  });
 
-
  opts.cssFirst.top = 0;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.animOut.left = 0;
 
-
};
 
-
 
-
// slideX/slideY
 
-
$.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $(opts.elements).not(curr).hide();
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,true);
 
-
    opts.animIn.width = next.cycleW;
 
-
  });
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.width = 0;
 
-
  opts.animIn.width = 'show';
 
-
  opts.animOut.width = 0;
 
-
};
 
-
$.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $(opts.elements).not(curr).hide();
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,false);
 
-
    opts.animIn.height = next.cycleH;
 
-
  });
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.height = 0;
 
-
  opts.animIn.height = 'show';
 
-
  opts.animOut.height = 0;
 
-
};
 
-
 
-
// shuffle
 
-
$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
 
-
  var i, w = $cont.css('overflow', 'visible').width();
 
-
  $slides.css({left: 0, top: 0});
 
-
  opts.before.push(function(curr,next,opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,true,true);
 
-
  });
 
-
  // only adjust speed once!
 
-
  if (!opts.speedAdjusted) {
 
-
    opts.speed = opts.speed / 2; // shuffle has 2 transitions
 
-
    opts.speedAdjusted = true;
 
-
  }
 
-
  opts.random = 0;
 
-
  opts.shuffle = opts.shuffle || {left:-w, top:15};
 
-
  opts.els = [];
 
-
  for (i=0; i < $slides.length; i++)
 
-
    opts.els.push($slides[i]);
 
-
 
-
  for (i=0; i < opts.currSlide; i++)
 
-
    opts.els.push(opts.els.shift());
 
-
 
-
  // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
 
-
  opts.fxFn = function(curr, next, opts, cb, fwd) {
 
-
    if (opts.rev)
 
-
      fwd = !fwd;
 
-
    var $el = fwd ? $(curr) : $(next);
 
-
    $(next).css(opts.cssBefore);
 
-
    var count = opts.slideCount;
 
-
    $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
 
-
      var hops = $.fn.cycle.hopsFromLast(opts, fwd);
 
-
      for (var k=0; k < hops; k++) {
 
-
        if (fwd)
 
-
          opts.els.push(opts.els.shift());
 
-
        else
 
-
          opts.els.unshift(opts.els.pop());
 
-
      }
 
-
      if (fwd) {
 
-
        for (var i=0, len=opts.els.length; i < len; i++)
 
-
          $(opts.els[i]).css('z-index', len-i+count);
 
-
      }
 
-
      else {
 
-
        var z = $(curr).css('z-index');
 
-
        $el.css('z-index', parseInt(z,10)+1+count);
 
-
      }
 
-
      $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
 
-
        $(fwd ? this : curr).hide();
 
-
        if (cb) cb();
 
-
      });
 
-
    });
 
-
  };
 
-
  $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
 
-
};
 
-
 
-
// turnUp/Down/Left/Right
 
-
$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,false);
 
-
    opts.cssBefore.top = next.cycleH;
 
-
    opts.animIn.height = next.cycleH;
 
-
    opts.animOut.width = next.cycleW;
 
-
  });
 
-
  opts.cssFirst.top = 0;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssBefore.height = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.animOut.height = 0;
 
-
};
 
-
$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,false);
 
-
    opts.animIn.height = next.cycleH;
 
-
    opts.animOut.top  = curr.cycleH;
 
-
  });
 
-
  opts.cssFirst.top = 0;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.height = 0;
 
-
  opts.animOut.height = 0;
 
-
};
 
-
$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,true);
 
-
    opts.cssBefore.left = next.cycleW;
 
-
    opts.animIn.width = next.cycleW;
 
-
  });
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.width = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.width = 0;
 
-
};
 
-
$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,true);
 
-
    opts.animIn.width = next.cycleW;
 
-
    opts.animOut.left = curr.cycleW;
 
-
  });
 
-
  $.extend(opts.cssBefore, { top: 0, left: 0, width: 0 });
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.width = 0;
 
-
};
 
-
 
-
// zoom
 
-
$.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,false,true);
 
-
    opts.cssBefore.top = next.cycleH/2;
 
-
    opts.cssBefore.left = next.cycleW/2;
 
-
    $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
 
-
    $.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 });
 
-
  });
 
-
  opts.cssFirst.top = 0;
 
-
  opts.cssFirst.left = 0;
 
-
  opts.cssBefore.width = 0;
 
-
  opts.cssBefore.height = 0;
 
-
};
 
-
 
-
// fadeZoom
 
-
$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,false);
 
-
    opts.cssBefore.left = next.cycleW/2;
 
-
    opts.cssBefore.top = next.cycleH/2;
 
-
    $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
 
-
  });
 
-
  opts.cssBefore.width = 0;
 
-
  opts.cssBefore.height = 0;
 
-
  opts.animOut.opacity = 0;
 
-
};
 
-
 
-
// blindX
 
-
$.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
 
-
  var w = $cont.css('overflow','hidden').width();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    opts.animIn.width = next.cycleW;
 
-
    opts.animOut.left  = curr.cycleW;
 
-
  });
 
-
  opts.cssBefore.left = w;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.left = w;
 
-
};
 
-
// blindY
 
-
$.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
 
-
  var h = $cont.css('overflow','hidden').height();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    opts.animIn.height = next.cycleH;
 
-
    opts.animOut.top  = curr.cycleH;
 
-
  });
 
-
  opts.cssBefore.top = h;
 
-
  opts.cssBefore.left = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.animOut.top = h;
 
-
};
 
-
// blindZ
 
-
$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
 
-
  var h = $cont.css('overflow','hidden').height();
 
-
  var w = $cont.width();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    opts.animIn.height = next.cycleH;
 
-
    opts.animOut.top  = curr.cycleH;
 
-
  });
 
-
  opts.cssBefore.top = h;
 
-
  opts.cssBefore.left = w;
 
-
  opts.animIn.top = 0;
 
-
  opts.animIn.left = 0;
 
-
  opts.animOut.top = h;
 
-
  opts.animOut.left = w;
 
-
};
 
-
 
-
// growX - grow horizontally from centered 0 width
 
-
$.fn.cycle.transitions.growX = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,true);
 
-
    opts.cssBefore.left = this.cycleW/2;
 
-
    opts.animIn.left = 0;
 
-
    opts.animIn.width = this.cycleW;
 
-
    opts.animOut.left = 0;
 
-
  });
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.width = 0;
 
-
};
 
-
// growY - grow vertically from centered 0 height
 
-
$.fn.cycle.transitions.growY = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,false);
 
-
    opts.cssBefore.top = this.cycleH/2;
 
-
    opts.animIn.top = 0;
 
-
    opts.animIn.height = this.cycleH;
 
-
    opts.animOut.top = 0;
 
-
  });
 
-
  opts.cssBefore.height = 0;
 
-
  opts.cssBefore.left = 0;
 
-
};
 
-
 
-
// curtainX - squeeze in both edges horizontally
 
-
$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,false,true,true);
 
-
    opts.cssBefore.left = next.cycleW/2;
 
-
    opts.animIn.left = 0;
 
-
    opts.animIn.width = this.cycleW;
 
-
    opts.animOut.left = curr.cycleW/2;
 
-
    opts.animOut.width = 0;
 
-
  });
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.width = 0;
 
-
};
 
-
// curtainY - squeeze in both edges vertically
 
-
$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,false,true);
 
-
    opts.cssBefore.top = next.cycleH/2;
 
-
    opts.animIn.top = 0;
 
-
    opts.animIn.height = next.cycleH;
 
-
    opts.animOut.top = curr.cycleH/2;
 
-
    opts.animOut.height = 0;
 
-
  });
 
-
  opts.cssBefore.height = 0;
 
-
  opts.cssBefore.left = 0;
 
-
};
 
-
 
-
// cover - curr slide covered by next slide
 
-
$.fn.cycle.transitions.cover = function($cont, $slides, opts) {
 
-
  var d = opts.direction || 'left';
 
-
  var w = $cont.css('overflow','hidden').width();
 
-
  var h = $cont.height();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts);
 
-
    if (d == 'right')
 
-
      opts.cssBefore.left = -w;
 
-
    else if (d == 'up')
 
-
      opts.cssBefore.top = h;
 
-
    else if (d == 'down')
 
-
      opts.cssBefore.top = -h;
 
-
    else
 
-
      opts.cssBefore.left = w;
 
-
  });
 
-
  opts.animIn.left = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.left = 0;
 
-
};
 
-
 
-
// uncover - curr slide moves off next slide
 
-
$.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
 
-
  var d = opts.direction || 'left';
 
-
  var w = $cont.css('overflow','hidden').width();
 
-
  var h = $cont.height();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,true,true);
 
-
    if (d == 'right')
 
-
      opts.animOut.left = w;
 
-
    else if (d == 'up')
 
-
      opts.animOut.top = -h;
 
-
    else if (d == 'down')
 
-
      opts.animOut.top = h;
 
-
    else
 
-
      opts.animOut.left = -w;
 
-
  });
 
-
  opts.animIn.left = 0;
 
-
  opts.animIn.top = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.cssBefore.left = 0;
 
-
};
 
-
 
-
// toss - move top slide and fade away
 
-
$.fn.cycle.transitions.toss = function($cont, $slides, opts) {
 
-
  var w = $cont.css('overflow','visible').width();
 
-
  var h = $cont.height();
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,true,true);
 
-
    // provide default toss settings if animOut not provided
 
-
    if (!opts.animOut.left) if (!opts.animOut.top)
 
-
      $.extend(opts.animOut, { left: w*2, top: -h/2, opacity: 0 });
 
-
    else
 
-
      opts.animOut.opacity = 0;
 
-
  });
 
-
  opts.cssBefore.left = 0;
 
-
  opts.cssBefore.top = 0;
 
-
  opts.animIn.left = 0;
 
-
};
 
-
 
-
// wipe - clip animation
 
-
$.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
 
-
  var w = $cont.css('overflow','hidden').width();
 
-
  var h = $cont.height();
 
-
  opts.cssBefore = opts.cssBefore || {};
 
-
  var clip;
 
-
  if (opts.clip) {
 
-
    if (/l2r/.test(opts.clip))
 
-
      clip = 'rect(0px 0px '+h+'px 0px)';
 
-
    else if (/r2l/.test(opts.clip))
 
-
      clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
 
-
    else if (/t2b/.test(opts.clip))
 
-
      clip = 'rect(0px '+w+'px 0px 0px)';
 
-
    else if (/b2t/.test(opts.clip))
 
-
      clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
 
-
    else if (/zoom/.test(opts.clip)) {
 
-
      var top = parseInt(h/2,10);
 
-
      var left = parseInt(w/2,10);
 
-
      clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
 
-
    }
 
-
  }
 
-
 
-
  opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';
 
-
 
-
  var d = opts.cssBefore.clip.match(/(\d+)/g);
 
-
  var t = parseInt(d[0],10), r = parseInt(d[1],10), b = parseInt(d[2],10), l = parseInt(d[3],10);
 
-
 
-
  opts.before.push(function(curr, next, opts) {
 
-
    if (curr == next) return;
 
-
    var $curr = $(curr), $next = $(next);
 
-
    $.fn.cycle.commonReset(curr,next,opts,true,true,false);
 
-
    opts.cssAfter.display = 'block';
 
-
 
-
    var step = 1, count = parseInt((opts.speedIn / 13),10) - 1;
 
-
    (function f() {
 
-
      var tt = t ? t - parseInt(step * (t/count),10) : 0;
 
-
      var ll = l ? l - parseInt(step * (l/count),10) : 0;
 
-
      var bb = b < h ? b + parseInt(step * ((h-b)/count || 1),10) : h;
 
-
      var rr = r < w ? r + parseInt(step * ((w-r)/count || 1),10) : w;
 
-
      $next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
 
-
      (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
 
-
    })();
 
-
  });
 
-
  $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
 
-
  opts.animIn    = { left: 0 };
 
-
  opts.animOut  = { left: 0 };
 
-
};
 
-
 
-
})(jQuery);
 
-
</script>
 
-
<script type="text/javascript">
 
-
/* jCarousel */
 
-
/*!
 
-
* jCarousel - Riding carousels with jQuery
 
-
*  http://sorgalla.com/jcarousel/
 
-
*
 
-
* Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 
-
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 
-
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 
-
*
 
-
* Built on top of the jQuery library
 
-
*  http://jquery.com
 
-
*
 
-
* Inspired by the "Carousel Component" by Bill Scott
 
-
*  http://billwscott.com/carousel/
 
-
*/
 
-
 
-
/*global window, jQuery */
 
-
(function($) {
 
-
    // Default configuration properties.
 
-
    var defaults = {
 
-
        vertical: false,
 
-
        rtl: false,
 
-
        start: 1,
 
-
        offset: 1,
 
-
        size: null,
 
-
        scroll: 3,
 
-
        visible: null,
 
-
        animation: 'normal',
 
-
        easing: 'swing',
 
-
        auto: 0,
 
-
        wrap: null,
 
-
        initCallback: null,
 
-
        setupCallback: null,
 
-
        reloadCallback: null,
 
-
        itemLoadCallback: null,
 
-
        itemFirstInCallback: null,
 
-
        itemFirstOutCallback: null,
 
-
        itemLastInCallback: null,
 
-
        itemLastOutCallback: null,
 
-
        itemVisibleInCallback: null,
 
-
        itemVisibleOutCallback: null,
 
-
        animationStepCallback: null,
 
-
        buttonNextHTML: '<div></div>',
 
-
        buttonPrevHTML: '<div></div>',
 
-
        buttonNextEvent: 'click',
 
-
        buttonPrevEvent: 'click',
 
-
        buttonNextCallback: null,
 
-
        buttonPrevCallback: null,
 
-
        itemFallbackDimension: null
 
-
    }, windowLoaded = false;
 
-
 
-
    $(window).bind('load.jcarousel', function() { windowLoaded = true; });
 
-
 
-
    /**
 
-
    * The jCarousel object.
 
-
    *
 
-
    * @constructor
 
-
    * @class jcarousel
 
-
    * @param e {HTMLElement} The element to create the carousel for.
 
-
    * @param o {Object} A set of key/value pairs to set as configuration properties.
 
-
    * @cat Plugins/jCarousel
 
-
    */
 
-
    $.jcarousel = function(e, o) {
 
-
        this.options    = $.extend({}, defaults, o || {});
 
-
 
-
        this.locked          = false;
 
-
        this.autoStopped    = false;
 
-
 
-
        this.container      = null;
 
-
        this.clip            = null;
 
-
        this.list            = null;
 
-
        this.buttonNext      = null;
 
-
        this.buttonPrev      = null;
 
-
        this.buttonNextState = null;
 
-
        this.buttonPrevState = null;
 
-
 
-
        // Only set if not explicitly passed as option
 
-
        if (!o || o.rtl === undefined) {
 
-
            this.options.rtl = ($(e).attr('dir') || $('html').attr('dir') || '').toLowerCase() == 'rtl';
 
-
        }
 
-
 
-
        this.wh = !this.options.vertical ? 'width' : 'height';
 
-
        this.lt = !this.options.vertical ? (this.options.rtl ? 'right' : 'left') : 'top';
 
-
 
-
        // Extract skin class
 
-
        var skin = '', split = e.className.split(' ');
 
-
 
-
        for (var i = 0; i < split.length; i++) {
 
-
            if (split[i].indexOf('jcarousel-skin') != -1) {
 
-
                $(e).removeClass(split[i]);
 
-
                skin = split[i];
 
-
                break;
 
-
            }
 
-
        }
 
-
 
-
        if (e.nodeName.toUpperCase() == 'UL' || e.nodeName.toUpperCase() == 'OL') {
 
-
            this.list      = $(e);
 
-
            this.clip      = this.list.parents('.jcarousel-clip');
 
-
            this.container = this.list.parents('.jcarousel-container');
 
-
        } else {
 
-
            this.container = $(e);
 
-
            this.list      = this.container.find('ul,ol').eq(0);
 
-
            this.clip      = this.container.find('.jcarousel-clip');
 
-
        }
 
-
 
-
        if (this.clip.size() === 0) {
 
-
            this.clip = this.list.wrap('<div></div>').parent();
 
-
        }
 
-
 
-
        if (this.container.size() === 0) {
 
-
            this.container = this.clip.wrap('<div></div>').parent();
 
-
        }
 
-
 
-
        if (skin !== '') if (this.container.parent()[0].className.indexOf('jcarousel-skin') == -1) {
 
-
            this.container.wrap('<div class=" '+ skin + '"></div>');
 
-
        }
 
-
 
-
        this.buttonPrev = $('.jcarousel-prev', this.container);
 
-
 
-
        if (this.buttonPrev.size() === 0) if (this.options.buttonPrevHTML !== null) {
 
-
            this.buttonPrev = $(this.options.buttonPrevHTML).appendTo(this.container);
 
-
        }
 
-
 
-
        this.buttonPrev.addClass(this.className('jcarousel-prev'));
 
-
 
-
        this.buttonNext = $('.jcarousel-next', this.container);
 
-
 
-
        if (this.buttonNext.size() === 0) if (this.options.buttonNextHTML !== null) {
 
-
            this.buttonNext = $(this.options.buttonNextHTML).appendTo(this.container);
 
-
        }
 
-
 
-
        this.buttonNext.addClass(this.className('jcarousel-next'));
 
-
 
-
        this.clip.addClass(this.className('jcarousel-clip')).css({
 
-
            position: 'relative'
 
-
        });
 
-
 
-
        this.list.addClass(this.className('jcarousel-list')).css({
 
-
            overflow: 'hidden',
 
-
            position: 'relative',
 
-
            top: 0,
 
-
            margin: 0,
 
-
            padding: 0
 
-
        }).css((this.options.rtl ? 'right' : 'left'), 0);
 
-
 
-
        this.container.addClass(this.className('jcarousel-container')).css({
 
-
            position: 'relative'
 
-
        });
 
-
 
-
        if (!this.options.vertical) if (this.options.rtl) {
 
-
            this.container.addClass('jcarousel-direction-rtl').attr('dir', 'rtl');
 
-
        }
 
-
 
-
        var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;
 
-
        var li = this.list.children('li');
 
-
 
-
        var self = this;
 
-
 
-
        if (li.size() > 0) {
 
-
            var wh = 0, j = this.options.offset;
 
-
            li.each(function() {
 
-
                self.format(this, j++);
 
-
                wh += self.dimension(this, di);
 
-
            });
 
-
 
-
            this.list.css(this.wh, (wh + 100) + 'px');
 
-
 
-
            // Only set if not explicitly passed as option
 
-
            if (!o || o.size === undefined) {
 
-
                this.options.size = li.size();
 
-
            }
 
-
        }
 
-
 
-
        // For whatever reason, .show() does not work in Safari...
 
-
        this.container.css('display', 'block');
 
-
        this.buttonNext.css('display', 'block');
 
-
        this.buttonPrev.css('display', 'block');
 
-
 
-
        this.funcNext  = function() { self.next(); };
 
-
        this.funcPrev  = function() { self.prev(); };
 
-
        this.funcResize = function() {
 
-
            if (self.resizeTimer) {
 
-
                clearTimeout(self.resizeTimer);
 
-
            }
 
-
 
-
            self.resizeTimer = setTimeout(function() {
 
-
                self.reload();
 
-
            }, 100);
 
-
        };
 
-
 
-
        if (this.options.initCallback !== null) {
 
-
            this.options.initCallback(this, 'init');
 
-
        }
 
-
 
-
        if (!windowLoaded) if ($.browser.safari) {
 
-
            this.buttons(false, false);
 
-
            $(window).bind('load.jcarousel', function() { self.setup(); });
 
-
        } else {
 
-
            this.setup();
 
-
        }
 
-
    };
 
-
 
-
    // Create shortcut for internal use
 
-
    var $jc = $.jcarousel;
 
-
 
-
    $jc.fn = $jc.prototype = {
 
-
        jcarousel: '0.2.8'
 
-
    };
 
-
 
-
    $jc.fn.extend = $jc.extend = $.extend;
 
-
 
-
    $jc.fn.extend({
 
-
        /**
 
-
        * Setups the carousel.
 
-
        *
 
-
        * @method setup
 
-
        * @return undefined
 
-
        */
 
-
        setup: function() {
 
-
            this.first      = null;
 
-
            this.last        = null;
 
-
            this.prevFirst  = null;
 
-
            this.prevLast    = null;
 
-
            this.animating  = false;
 
-
            this.timer      = null;
 
-
            this.resizeTimer = null;
 
-
            this.tail        = null;
 
-
            this.inTail      = false;
 
-
 
-
            if (this.locked) {
 
-
                return;
 
-
            }
 
-
 
-
            this.list.css(this.lt, this.pos(this.options.offset) + 'px');
 
-
            var p = this.pos(this.options.start, true);
 
-
            this.prevFirst = this.prevLast = null;
 
-
            this.animate(p, false);
 
-
 
-
            $(window).unbind('resize.jcarousel', this.funcResize).bind('resize.jcarousel', this.funcResize);
 
-
 
-
            if (this.options.setupCallback !== null) {
 
-
                this.options.setupCallback(this);
 
-
            }
 
-
        },
 
-
 
-
        /**
 
-
        * Clears the list and resets the carousel.
 
-
        *
 
-
        * @method reset
 
-
        * @return undefined
 
-
        */
 
-
        reset: function() {
 
-
            this.list.empty();
 
-
 
-
            this.list.css(this.lt, '0px');
 
-
            this.list.css(this.wh, '10px');
 
-
 
-
            if (this.options.initCallback !== null) {
 
-
                this.options.initCallback(this, 'reset');
 
-
            }
 
-
 
-
            this.setup();
 
-
        },
 
-
 
-
        /**
 
-
        * Reloads the carousel and adjusts positions.
 
-
        *
 
-
        * @method reload
 
-
        * @return undefined
 
-
        */
 
-
        reload: function() {
 
-
            if (this.tail !== null) if (this.inTail) {
 
-
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);
 
-
            }
 
-
 
-
            this.tail  = null;
 
-
            this.inTail = false;
 
-
 
-
            if (this.options.reloadCallback !== null) {
 
-
                this.options.reloadCallback(this);
 
-
            }
 
-
 
-
            if (this.options.visible !== null) {
 
-
                var self = this;
 
-
                var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
 
-
                this.list.children('li').each(function(i) {
 
-
                    wh += self.dimension(this, di);
 
-
                    if (i + 1 < self.first) {
 
-
                        lt = wh;
 
-
                    }
 
-
                });
 
-
 
-
                this.list.css(this.wh, wh + 'px');
 
-
                this.list.css(this.lt, -lt + 'px');
 
-
            }
 
-
 
-
            this.scroll(this.first, false);
 
-
        },
 
-
 
-
        /**
 
-
        * Locks the carousel.
 
-
        *
 
-
        * @method lock
 
-
        * @return undefined
 
-
        */
 
-
        lock: function() {
 
-
            this.locked = true;
 
-
            this.buttons();
 
-
        },
 
-
 
-
        /**
 
-
        * Unlocks the carousel.
 
-
        *
 
-
        * @method unlock
 
-
        * @return undefined
 
-
        */
 
-
        unlock: function() {
 
-
            this.locked = false;
 
-
            this.buttons();
 
-
        },
 
-
 
-
        /**
 
-
        * Sets the size of the carousel.
 
-
        *
 
-
        * @method size
 
-
        * @return undefined
 
-
        * @param s {Number} The size of the carousel.
 
-
        */
 
-
        size: function(s) {
 
-
            if (s !== undefined) {
 
-
                this.options.size = s;
 
-
                if (!this.locked) {
 
-
                    this.buttons();
 
-
                }
 
-
            }
 
-
 
-
            return this.options.size;
 
-
        },
 
-
 
-
        /**
 
-
        * Checks whether a list element exists for the given index (or index range).
 
-
        *
 
-
        * @method get
 
-
        * @return bool
 
-
        * @param i {Number} The index of the (first) element.
 
-
        * @param i2 {Number} The index of the last element.
 
-
        */
 
-
        has: function(i, i2) {
 
-
            if (i2 === undefined || !i2) {
 
-
                i2 = i;
 
-
            }
 
-
 
-
            if (this.options.size !== null) if (i2 > this.options.size) {
 
-
                i2 = this.options.size;
 
-
            }
 
-
 
-
            for (var j = i; j <= i2; j++) {
 
-
                var e = this.get(j);
 
-
                if (!e.length || e.hasClass('jcarousel-item-placeholder')) {
 
-
                    return false;
 
-
                }
 
-
            }
 
-
 
-
            return true;
 
-
        },
 
-
 
-
        /**
 
-
        * Returns a jQuery object with list element for the given index.
 
-
        *
 
-
        * @method get
 
-
        * @return jQuery
 
-
        * @param i {Number} The index of the element.
 
-
        */
 
-
        get: function(i) {
 
-
            return $('>.jcarousel-item-' + i, this.list);
 
-
        },
 
-
 
-
        /**
 
-
        * Adds an element for the given index to the list.
 
-
        * If the element already exists, it updates the inner html.
 
-
        * Returns the created element as jQuery object.
 
-
        *
 
-
        * @method add
 
-
        * @return jQuery
 
-
        * @param i {Number} The index of the element.
 
-
        * @param s {String} The innerHTML of the element.
 
-
        */
 
-
        add: function(i, s) {
 
-
            var e = this.get(i), old = 0, n = $(s);
 
-
 
-
            if (e.length === 0) {
 
-
                var c, j = $jc.intval(i);
 
-
                e = this.create(i);
 
-
                while (true) {
 
-
                    c = this.get(--j);
 
-
                    if (j <= 0 || c.length) {
 
-
                        if (j <= 0) {
 
-
                            this.list.prepend(e);
 
-
                        } else {
 
-
                            c.after(e);
 
-
                        }
 
-
                        break;
 
-
                    }
 
-
                }
 
-
            } else {
 
-
                old = this.dimension(e);
 
-
            }
 
-
 
-
            if (n.get(0).nodeName.toUpperCase() == 'LI') {
 
-
                e.replaceWith(n);
 
-
                e = n;
 
-
            } else {
 
-
                e.empty().append(s);
 
-
            }
 
-
 
-
            this.format(e.removeClass(this.className('jcarousel-item-placeholder')), i);
 
-
 
-
            var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;
 
-
            var wh = this.dimension(e, di) - old;
 
-
 
-
            if (i > 0) if (i < this.first) {
 
-
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');
 
-
            }
 
-
 
-
            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');
 
-
 
-
            return e;
 
-
        },
 
-
 
-
        /**
 
-
        * Removes an element for the given index from the list.
 
-
        *
 
-
        * @method remove
 
-
        * @return undefined
 
-
        * @param i {Number} The index of the element.
 
-
        */
 
-
        remove: function(i) {
 
-
            var e = this.get(i);
 
-
 
-
            // Check if item exists and is not currently visible
 
-
            if (!e.length || (i >= this.first) if (i <= this.last)) {
 
-
                return;
 
-
            }
 
-
 
-
            var d = this.dimension(e);
 
-
 
-
            if (i < this.first) {
 
-
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');
 
-
            }
 
-
 
-
            e.remove();
 
-
 
-
            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
 
-
        },
 
-
 
-
        /**
 
-
        * Moves the carousel forwards.
 
-
        *
 
-
        * @method next
 
-
        * @return undefined
 
-
        */
 
-
        next: function() {
 
-
            if (this.tail !== null) if (!this.inTail) {
 
-
                this.scrollTail(false);
 
-
            } else {
 
-
                this.scroll((!(this.options.wrap == 'both' || this.options.wrap == 'last') || !(this.options.size !== null) || !(this.last == this.options.size)) ? 1 : this.first + this.options.scroll);
 
-
            }
 
-
        },
 
-
 
-
        /**
 
-
        * Moves the carousel backwards.
 
-
        *
 
-
        * @method prev
 
-
        * @return undefined
 
-
        */
 
-
        prev: function() {
 
-
            if (this.tail !== null) if (this.inTail) {
 
-
                this.scrollTail(true);
 
-
            } else {
 
-
                this.scroll((!(this.options.wrap == 'both' || this.options.wrap == 'first') || !(this.options.size !== null) || !(this.first == 1)) ? this.options.size : this.first - this.options.scroll);
 
-
            }
 
-
        },
 
-
 
-
        /**
 
-
        * Scrolls the tail of the carousel.
 
-
        *
 
-
        * @method scrollTail
 
-
        * @return undefined
 
-
        * @param b {Boolean} Whether scroll the tail back or forward.
 
-
        */
 
-
        scrollTail: function(b) {
 
-
            if (this.locked || this.animating || !this.tail) {
 
-
                return;
 
-
            }
 
-
 
-
            this.pauseAuto();
 
-
 
-
            var pos  = $jc.intval(this.list.css(this.lt));
 
-
 
-
            pos = !b ? pos - this.tail : pos + this.tail;
 
-
            this.inTail = !b;
 
-
 
-
            // Save for callbacks
 
-
            this.prevFirst = this.first;
 
-
            this.prevLast  = this.last;
 
-
 
-
            this.animate(pos);
 
-
        },
 
-
 
-
        /**
 
-
        * Scrolls the carousel to a certain position.
 
-
        *
 
-
        * @method scroll
 
-
        * @return undefined
 
-
        * @param i {Number} The index of the element to scoll to.
 
-
        * @param a {Boolean} Flag indicating whether to perform animation.
 
-
        */
 
-
        scroll: function(i, a) {
 
-
            if (this.locked || this.animating) {
 
-
                return;
 
-
            }
 
-
 
-
            this.pauseAuto();
 
-
            this.animate(this.pos(i), a);
 
-
        },
 
-
 
-
        /**
 
-
        * Prepares the carousel and return the position for a certian index.
 
-
        *
 
-
        * @method pos
 
-
        * @return {Number}
 
-
        * @param i {Number} The index of the element to scoll to.
 
-
        * @param fv {Boolean} Whether to force last item to be visible.
 
-
        */
 
-
        pos: function(i, fv) {
 
-
            var pos  = $jc.intval(this.list.css(this.lt));
 
-
 
-
            if (this.locked || this.animating) {
 
-
                return pos;
 
-
            }
 
-
 
-
            if (this.options.wrap != 'circular') {
 
-
                i = i < 1 ? 1 : ((!(this.options.size) || !(i > this.options.size)) ? this.options.size : i);
 
-
            }
 
-
 
-
            var back = this.first > i;
 
-
 
-
            // Create placeholders, new list width/height
 
-
            // and new list position
 
-
            var f = (!(this.options.wrap != 'circular') || !(this.first <= 1)) ? 1 : this.first;
 
-
            var c = back ? this.get(f) : this.get(this.last);
 
-
            var j = back ? f : f - 1;
 
-
            var e = null, l = 0, p = false, d = 0, g;
 
-
 
-
            while (back ? --j >= i : ++j < i) {
 
-
                e = this.get(j);
 
-
                p = !e.length;
 
-
                if (e.length === 0) {
 
-
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
 
-
                    c[back ? 'before' : 'after' ](e);
 
-
 
-
                    if (this.first !== null) if (this.options.wrap == 'circular') if (this.options.size !== null) if ((j <= 0 || j > this.options.size)) {
 
-
                        g = this.get(this.index(j));
 
-
                        if (g.length) {
 
-
                            e = this.add(j, g.clone(true));
 
-
                        }
 
-
                    }
 
-
                }
 
-
 
-
                c = e;
 
-
                d = this.dimension(e);
 
-
 
-
                if (p) {
 
-
                    l += d;
 
-
                }
 
-
 
-
                if (this.first !== null) if ((this.options.wrap == 'circular' || (j >= 1) if ((this.options.size === null || j <= this.options.size)))) {
 
-
                    pos = back ? pos + d : pos - d;
 
-
                }
 
-
            }
 
-
 
-
            // Calculate visible items
 
-
            var clipping = this.clipping(), cache = [], visible = 0, v = 0;
 
-
            c = this.get(i - 1);
 
-
            j = i;
 
-
 
-
            while (++visible) {
 
-
                e = this.get(j);
 
-
                p = !e.length;
 
-
                if (e.length === 0) {
 
-
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
 
-
                    // This should only happen on a next scroll
 
-
                    if (c.length === 0) {
 
-
                        this.list.prepend(e);
 
-
                    } else {
 
-
                        c[back ? 'before' : 'after' ](e);
 
-
                    }
 
-
 
-
                    if (this.first !== null) if (this.options.wrap == 'circular') if (this.options.size !== null) if ((j <= 0 || j > this.options.size)) {
 
-
                        g = this.get(this.index(j));
 
-
                        if (g.length) {
 
-
                            e = this.add(j, g.clone(true));
 
-
                        }
 
-
                    }
 
-
                }
 
-
 
-
                c = e;
 
-
                d = this.dimension(e);
 
-
                if (d === 0) {
 
-
                    throw new Error('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
 
-
                }
 
-
 
-
                if (this.options.wrap != 'circular') if (this.options.size !== null) if (j > this.options.size) {
 
-
                    cache.push(e);
 
-
                } else if (p) {
 
-
                    l += d;
 
-
                }
 
-
 
-
                v += d;
 
-
 
-
                if (v >= clipping) {
 
-
                    break;
 
-
                }
 
-
 
-
                j++;
 
-
            }
 
-
 
-
            // Remove out-of-range placeholders
 
-
            for (var x = 0; x < cache.length; x++) {
 
-
                cache[x].remove();
 
-
            }
 
-
 
-
            // Resize list
 
-
            if (l > 0) {
 
-
                this.list.css(this.wh, this.dimension(this.list) + l + 'px');
 
-
 
-
                if (back) {
 
-
                    pos -= l;
 
-
                    this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
 
-
                }
 
-
            }
 
-
 
-
            // Calculate first and last item
 
-
            var last = i + visible - 1;
 
-
            if (this.options.wrap != 'circular') if (this.options.size) if (last > this.options.size) {
 
-
                last = this.options.size;
 
-
            }
 
-
 
-
            if (j > last) {
 
-
                visible = 0;
 
-
                j = last;
 
-
                v = 0;
 
-
                while (++visible) {
 
-
                    e = this.get(j--);
 
-
                    if (!e.length) {
 
-
                        break;
 
-
                    }
 
-
                    v += this.dimension(e);
 
-
                    if (v >= clipping) {
 
-
                        break;
 
-
                    }
 
-
                }
 
-
            }
 
-
 
-
            var first = last - visible + 1;
 
-
            if (this.options.wrap != 'circular') if (first < 1) {
 
-
                first = 1;
 
-
            }
 
-
 
-
            if (this.inTail) if (back) {
 
-
                pos += this.tail;
 
-
                this.inTail = false;
 
-
            }
 
-
 
-
            this.tail = null;
 
-
            if (this.options.wrap != 'circular') if (last == this.options.size) if ((last - visible + 1) >= 1) {
 
-
                var m = $jc.intval(this.get(last).css(!this.options.vertical ? 'marginRight' : 'marginBottom'));
 
-
                if ((v - m) > clipping) {
 
-
                    this.tail = v - clipping - m;
 
-
                }
 
-
            }
 
-
 
-
            if (fv) if (i === this.options.size) if (this.tail) {
 
-
                pos -= this.tail;
 
-
                this.inTail = true;
 
-
            }
 
-
 
-
            // Adjust position
 
-
            while (i-- > first) {
 
-
                pos += this.dimension(this.get(i));
 
-
            }
 
-
 
-
            // Save visible item range
 
-
            this.prevFirst = this.first;
 
-
            this.prevLast  = this.last;
 
-
            this.first    = first;
 
-
            this.last      = last;
 
-
 
-
            return pos;
 
-
        },
 
-
 
-
        /**
 
-
        * Animates the carousel to a certain position.
 
-
        *
 
-
        * @method animate
 
-
        * @return undefined
 
-
        * @param p {Number} Position to scroll to.
 
-
        * @param a {Boolean} Flag indicating whether to perform animation.
 
-
        */
 
-
        animate: function(p, a) {
 
-
            if (this.locked || this.animating) {
 
-
                return;
 
-
            }
 
-
 
-
            this.animating = true;
 
-
 
-
            var self = this;
 
-
            var scrolled = function() {
 
-
                self.animating = false;
 
-
 
-
                if (p === 0) {
 
-
                    self.list.css(self.lt,  0);
 
-
                }
 
-
 
-
                if (!self.autoStopped) if ((self.options.wrap == 'circular' || self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size === null || self.last < self.options.size || (self.last == self.options.size) if (self.tail !== null) if (!self.inTail))) {
 
-
                    self.startAuto();
 
-
                }
 
-
 
-
                self.buttons();
 
-
                self.notify('onAfterAnimation');
 
-
 
-
                // This function removes items which are appended automatically for circulation.
 
-
                // This prevents the list from growing infinitely.
 
-
                if (self.options.wrap == 'circular') if (self.options.size !== null) {
 
-
                    for (var i = self.prevFirst; i <= self.prevLast; i++) {
 
-
                        if (i !== null) if (!(i >= self.first) if (i <= self.last)) if ((i < 1 || i > self.options.size)) {
 
-
                            self.remove(i);
 
-
                        }
 
-
                    }
 
-
                }
 
-
            };
 
-
 
-
            this.notify('onBeforeAnimation');
 
-
 
-
            // Animate
 
-
            if (!this.options.animation || a === false) {
 
-
                this.list.css(this.lt, p + 'px');
 
-
                scrolled();
 
-
            } else {
 
-
                var o = !this.options.vertical ? (this.options.rtl ? {'right': p} : {'left': p}) : {'top': p};
 
-
                // Define animation settings.
 
-
                var settings = {
 
-
                    duration: this.options.animation,
 
-
                    easing:  this.options.easing,
 
-
                    complete: scrolled
 
-
                };
 
-
                // If we have a step callback, specify it as well.
 
-
                if ($.isFunction(this.options.animationStepCallback)) {
 
-
                    settings.step = this.options.animationStepCallback;
 
-
                }
 
-
                // Start the animation.
 
-
                this.list.animate(o, settings);
 
-
            }
 
-
        },
 
-
 
-
        /**
 
-
        * Starts autoscrolling.
 
-
        *
 
-
        * @method auto
 
-
        * @return undefined
 
-
        * @param s {Number} Seconds to periodically autoscroll the content.
 
-
        */
 
-
        startAuto: function(s) {
 
-
            if (s !== undefined) {
 
-
                this.options.auto = s;
 
-
            }
 
-
 
-
            if (this.options.auto === 0) {
 
-
                return this.stopAuto();
 
-
            }
 
-
 
-
            if (this.timer !== null) {
 
-
                return;
 
-
            }
 
-
 
-
            this.autoStopped = false;
 
-
 
-
            var self = this;
 
-
            this.timer = window.setTimeout(function() { self.next(); }, this.options.auto * 1000);
 
-
        },
 
-
 
-
        /**
 
-
        * Stops autoscrolling.
 
-
        *
 
-
        * @method stopAuto
 
-
        * @return undefined
 
-
        */
 
-
        stopAuto: function() {
 
-
            this.pauseAuto();
 
-
            this.autoStopped = true;
 
-
        },
 
-
 
-
        /**
 
-
        * Pauses autoscrolling.
 
-
        *
 
-
        * @method pauseAuto
 
-
        * @return undefined
 
-
        */
 
-
        pauseAuto: function() {
 
-
            if (this.timer === null) {
 
-
                return;
 
-
            }
 
-
 
-
            window.clearTimeout(this.timer);
 
-
            this.timer = null;
 
-
        },
 
-
 
-
        /**
 
-
        * Sets the states of the prev/next buttons.
 
-
        *
 
-
        * @method buttons
 
-
        * @return undefined
 
-
        */
 
-
        buttons: function(n, p) {
 
-
            if (n == null) {
 
-
                n = !(this.locked || !(this.options.size !== 0) || !(!(!this.options.wrap || !(this.options.wrap != 'first')) || this.options.size === null || this.last < this.options.size));
 
-
                if (!this.locked) if ((!this.options.wrap || this.options.wrap == 'first')) if (this.options.size !== null) if (this.last >= this.options.size) {
 
-
                    n = !(!(this.tail !== null) || this.inTail);
 
-
                }
 
-
            }
 
-
 
-
            if (p == null) {
 
-
                p = !(this.locked || !(this.options.size !== 0) || !(!(!this.options.wrap || !(this.options.wrap != 'last')) || this.first > 1));
 
-
                if (!this.locked) if ((!this.options.wrap || this.options.wrap == 'last')) if (this.options.size !== null) if (this.first == 1) {
 
-
                    p = !(!(this.tail !== null) || !this.inTail);
 
-
                }
 
-
            }
 
-
 
-
            var self = this;
 
-
 
-
            if (this.buttonNext.size() > 0) {
 
-
                this.buttonNext.unbind(this.options.buttonNextEvent + '.jcarousel', this.funcNext);
 
-
 
-
                if (n) {
 
-
                    this.buttonNext.bind(this.options.buttonNextEvent + '.jcarousel', this.funcNext);
 
-
                }
 
-
 
-
                this.buttonNext[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
 
-
 
-
                if (this.options.buttonNextCallback !== null) if (this.buttonNext.data('jcarouselstate') != n) {
 
-
                    this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); }).data('jcarouselstate', n);
 
-
                }
 
-
            } else {
 
-
                if (this.options.buttonNextCallback !== null) if (this.buttonNextState != n) {
 
-
                    this.options.buttonNextCallback(self, null, n);
 
-
                }
 
-
            }
 
-
 
-
            if (this.buttonPrev.size() > 0) {
 
-
                this.buttonPrev.unbind(this.options.buttonPrevEvent + '.jcarousel', this.funcPrev);
 
-
 
-
                if (p) {
 
-
                    this.buttonPrev.bind(this.options.buttonPrevEvent + '.jcarousel', this.funcPrev);
 
-
                }
 
-
 
-
                this.buttonPrev[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);
 
-
 
-
                if (this.options.buttonPrevCallback !== null) if (this.buttonPrev.data('jcarouselstate') != p) {
 
-
                    this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); }).data('jcarouselstate', p);
 
-
                }
 
-
            } else {
 
-
                if (this.options.buttonPrevCallback !== null) if (this.buttonPrevState != p) {
 
-
                    this.options.buttonPrevCallback(self, null, p);
 
-
                }
 
-
            }
 
-
 
-
            this.buttonNextState = n;
 
-
            this.buttonPrevState = p;
 
-
        },
 
-
 
-
        /**
 
-
        * Notify callback of a specified event.
 
-
        *
 
-
        * @method notify
 
-
        * @return undefined
 
-
        * @param evt {String} The event name
 
-
        */
 
-
        notify: function(evt) {
 
-
            var state = this.prevFirst === null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');
 
-
 
-
            // Load items
 
-
            this.callback('itemLoadCallback', evt, state);
 
-
 
-
            if (this.prevFirst !== this.first) {
 
-
                this.callback('itemFirstInCallback', evt, state, this.first);
 
-
                this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
 
-
            }
 
-
 
-
            if (this.prevLast !== this.last) {
 
-
                this.callback('itemLastInCallback', evt, state, this.last);
 
-
                this.callback('itemLastOutCallback', evt, state, this.prevLast);
 
-
            }
 
-
 
-
            this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
 
-
            this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
 
-
        },
 
-
 
-
        callback: function(cb, evt, state, i1, i2, i3, i4) {
 
-
            if (this.options[cb] == null || (typeof this.options[cb] != 'object') if (evt != 'onAfterAnimation')) {
 
-
                return;
 
-
            }
 
-
 
-
            var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];
 
-
 
-
            if (!$.isFunction(callback)) {
 
-
                return;
 
-
            }
 
-
 
-
            var self = this;
 
-
 
-
            if (i1 === undefined) {
 
-
                callback(self, state, evt);
 
-
            } else if (i2 === undefined) {
 
-
                this.get(i1).each(function() { callback(self, this, i1, state, evt); });
 
-
            } else {
 
-
                var call = function(i) {
 
-
                    self.get(i).each(function() { callback(self, this, i, state, evt); });
 
-
                };
 
-
                for (var i = i1; i <= i2; i++) {
 
-
                    if (i !== null) if (!(i >= i3) if (i <= i4)) {
 
-
                        call(i);
 
-
                    }
 
-
                }
 
-
            }
 
-
        },
 
-
 
-
        create: function(i) {
 
-
            return this.format('<li></li>', i);
 
-
        },
 
-
 
-
        format: function(e, i) {
 
-
            e = $(e);
 
-
            var split = e.get(0).className.split(' ');
 
-
            for (var j = 0; j < split.length; j++) {
 
-
                if (split[j].indexOf('jcarousel-') != -1) {
 
-
                    e.removeClass(split[j]);
 
-
                }
 
-
            }
 
-
            e.addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i)).css({
 
-
                'float': (this.options.rtl ? 'right' : 'left'),
 
-
                'list-style': 'none'
 
-
            }).attr('jcarouselindex', i);
 
-
            return e;
 
-
        },
 
-
 
-
        className: function(c) {
 
-
            return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
 
-
        },
 
-
 
-
        dimension: function(e, d) {
 
-
            var el = $(e);
 
-
 
-
            if (d == null) {
 
-
                return !this.options.vertical ?
 
-
                      (el.outerWidth(true) || $jc.intval(this.options.itemFallbackDimension)) :
 
-
                      (el.outerHeight(true) || $jc.intval(this.options.itemFallbackDimension));
 
-
            } else {
 
-
                var w = !this.options.vertical ?
 
-
                    d - $jc.intval(el.css('marginLeft')) - $jc.intval(el.css('marginRight')) :
 
-
                    d - $jc.intval(el.css('marginTop')) - $jc.intval(el.css('marginBottom'));
 
-
 
-
                $(el).css(this.wh, w + 'px');
 
-
 
-
                return this.dimension(el);
 
-
            }
 
-
        },
 
-
 
-
        clipping: function() {
 
-
            return !this.options.vertical ?
 
-
                this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
 
-
                this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
 
-
        },
 
-
 
-
        index: function(i, s) {
 
-
            if (s == null) {
 
-
                s = this.options.size;
 
-
            }
 
-
 
-
            return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
 
-
        }
 
-
    });
 
-
 
-
    $jc.extend({
 
-
        /**
 
-
        * Gets/Sets the global default configuration properties.
 
-
        *
 
-
        * @method defaults
 
-
        * @return {Object}
 
-
        * @param d {Object} A set of key/value pairs to set as configuration properties.
 
-
        */
 
-
        defaults: function(d) {
 
-
            return $.extend(defaults, d || {});
 
-
        },
 
-
 
-
        intval: function(v) {
 
-
            v = parseInt(v, 10);
 
-
            return isNaN(v) ? 0 : v;
 
-
        },
 
-
 
-
        windowLoaded: function() {
 
-
            windowLoaded = true;
 
-
        }
 
-
    });
 
-
 
-
    /**
 
-
    * Creates a carousel for all matched elements.
 
-
    *
 
-
    * @example $("#mycarousel").jcarousel();
 
-
    * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>
 
-
    * @result
 
-
    *
 
-
    * <div class="jcarousel-skin-name">
 
-
    *  <div class="jcarousel-container">
 
-
    *    <div class="jcarousel-clip">
 
-
    *      <ul class="jcarousel-list">
 
-
    *        <li class="jcarousel-item-1">First item</li>
 
-
    *        <li class="jcarousel-item-2">Second item</li>
 
-
    *      </ul>
 
-
    *    </div>
 
-
    *    <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
 
-
    *    <div class="jcarousel-next"></div>
 
-
    *  </div>
 
-
    * </div>
 
-
    *
 
-
    * @method jcarousel
 
-
    * @return jQuery
 
-
    * @param o {Hash|String} A set of key/value pairs to set as configuration properties or a method name to call on a formerly created instance.
 
-
    */
 
-
    $.fn.jcarousel = function(o) {
 
-
        if (typeof o == 'string') {
 
-
            var instance = $(this).data('jcarousel'), args = Array.prototype.slice.call(arguments, 1);
 
-
            return instance[o].apply(instance, args);
 
-
        } else {
 
-
            return this.each(function() {
 
-
                var instance = $(this).data('jcarousel');
 
-
                if (instance) {
 
-
                    if (o) {
 
-
                        $.extend(instance.options, o);
 
-
                    }
 
-
                    instance.reload();
 
-
                } else {
 
-
                    $(this).data('jcarousel', new $jc(this, o));
 
-
                }
 
-
            });
 
-
        }
 
-
    };
 
-
 
-
})(jQuery);
 
-
 
-
</script>
 
-
<script type="text/javascript">
 
-
// gallery.js
 
-
// DOM Loaded
 
-
$(function(){
 
-
   
 
-
    //init js styles
 
-
    $('body').addClass('hasJS');
 
-
 
-
    // homepage cycles
 
-
    $('#feature_gallery .bigimg').wrapAll('<div class="bigimgs">').parents('#feature_gallery').append('<ul class="menu" id="feature_gallery_pager">').cycle({
 
-
        fx:'fade',
 
-
        easing: 'swing',
 
-
        inDelay:    250,
 
-
        drop:      40,
 
-
        timeout:    5000,
 
-
        pause:      true,
 
-
        slideExpr: '.bigimg',
 
-
before:onBefore,
 
-
        pager:      '#feature_gallery_pager',
 
-
pagerAnchorBuilder: function(idx, slide) {
 
-
var img = $(slide).children().eq(0).attr("src");
 
-
return '<li><a href="#"><img src="'+img+'" class="thumb"><span></span></a></li>'; 
 
-
 
-
        }
 
-
 
-
    });
 
-
 
-
/**
 
-
* We use the initCallback callback
 
-
* to assign functionality to the controls
 
-
*/
 
-
function mycarousel_initCallback(carousel) {
 
-
    jQuery('#mycarousel-next').bind('click', function() {
 
-
        carousel.next();
 
-
        return false;
 
-
    });
 
-
 
-
    jQuery('#mycarousel-prev').bind('click', function() {
 
-
        carousel.prev();
 
-
        return false;
 
-
    });
 
-
};
 
-
 
-
 
-
$(function() {
 
-
    jQuery('#feature_gallery_pager').jcarousel({
 
-
        scroll:1,
 
-
wrap:"both",
 
-
 
-
        initCallback: mycarousel_initCallback,
 
-
        // This tells jCarousel NOT to autobuild prev/next buttons
 
-
        buttonNextHTML: null,
 
-
        buttonPrevHTML: null
 
-
    });
 
});
});
-
 
-
 
-
function onBefore() {
 
-
    $('#output').html(this.id);
 
-
}
 
-
   
 
-
});
 
-
 
-
/* Window load event (things that need to wait for images to finish loading) */
 
-
//equal heights
 
</script>
</script>
Line 3,008: Line 394:
                     <nav>
                     <nav>
                         <ul id="topnav" class="sf-menu">
                         <ul id="topnav" class="sf-menu">
-
                             <li><a href="index.html" class="current">Home</a></li>
+
                             <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B">Home</a></li>
-
                             <li><a href="about.html">About</a>
+
                             <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/introduction">Software</a>
                             <ul>
                             <ul>
-
                                <li><a href="element.html">Element</a></li>
+
                                    <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/introduction">Overview</a></li>
-
                                     <li><a href="single.html">Blog Detail</a></li>
+
                                     <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/algorithm">Algorithm</a></li>
-
                                     <li><a href="accommodation-details.html">Accommodation Details</a></li>
+
                                     <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/achievements">Achievements</a></li>
-
                                </ul>
+
                                    <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/Download">Download</a></li>
 +
                                    <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/comment">Comment</a></li>
 +
                                    <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/Tutorial">Tutorial</a></li>
 +
                                    <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/SBOL">SBOL</a></li>
 +
                              </ul>
 +
                            </li>
 +
                            <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/lab introduction">WetLab</a>
 +
                              <ul>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/lab introduction">Overview</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/protocol1">Protocol</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/lab results">Lab Results</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/safety">Safety</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/parts">Parts</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/lab.sbol">SBOL Document</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/RFC">Technical Standard</a></li>
 +
                              </ul>
 +
                            </li>
 +
                            <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/members">Team</a>
 +
                              <ul>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/members">Members</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/advisers">Advisers</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/photos">Photo Gallery</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/Contributions">Contributions</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/Acknowledgement">Acknowledgement</a></li>
 +
                                  <li><a href="/wiki/index.php?title=Template:SUSTC-B1&amp;action=edit">Edit</a></li>
 +
                                  <li><a href="/wiki/index.php?title=Template:SUSTC-B1&amp;action=history">History</a></li>
 +
                              </ul>
 +
                            </li>
 +
                            <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/before.june">Notebook</a>
 +
                              <ul>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/before.june">Before June</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/july">July</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/august">August</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/September">September</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/October">October</a></li>
 +
                              </ul>
 +
                            </li>
 +
                            <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/hp.intro">Human Practices</a>
 +
                              <ul>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/hp.intro">Overview</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/open.class">Open Classes</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/high.school.visits">High School Visits</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/SynBio.intro">SynBio Intro</a></li>
 +
                                  <li><a href="https://2012.igem.org/Team:SUSTC-Shenzhen-B/October">October</a></li>
 +
                              </ul>
                             </li>
                             </li>
-
                            <li><a href="accommodation.html">Accommodation</a></li>
 
-
                            <li><a href="facilities.html">Facilities</a></li>
 
-
                            <li><a href="gallery.html">Gallery</a></li>
 
-
                            <li><a href="blog.html">Blog</a></li>
 
-
                            <li><a href="contact.html">Contact</a></li>
 
                         </ul><!-- topnav -->
                         </ul><!-- topnav -->
                     </nav><!-- nav -->
                     </nav><!-- nav -->
Line 3,026: Line 451:
                     <ul id="sn">
                     <ul id="sn">
                     <li><a href="http://twitter.com" title="Twitter"><span class="icon-img" style="background:url(/wiki/images/1/1a/Sustc-b1-social-twitter.png)"></span></a></li>
                     <li><a href="http://twitter.com" title="Twitter"><span class="icon-img" style="background:url(/wiki/images/1/1a/Sustc-b1-social-twitter.png)"></span></a></li>
-
                         <li><a href="https://plus.google.com" title="Google+"><span class="icon-img" style="background:url(/wiki/images/7/70/Sustc-b1-social-google.png)"></span></a></li>
+
                         <li><a href="http://plus.google.com" title="Google+"><span class="icon-img" style="background:url(/wiki/images/7/70/Sustc-b1-social-google.png)"></span></a></li>
                         <li><a href="http://facebook.com" title="Facebook"><span class="icon-img" style="background:url(/wiki/images/a/a7/Sustc-b1-social-facebook.png)"></span></a></li>
                         <li><a href="http://facebook.com" title="Facebook"><span class="icon-img" style="background:url(/wiki/images/a/a7/Sustc-b1-social-facebook.png)"></span></a></li>
                         <li><a href="http://pinterest.com" title="pinterest"><span class="icon-img" style="background:url(/wiki/images/b/bb/Sustc-b1-social-pinterest.png)"></span></a></li>
                         <li><a href="http://pinterest.com" title="pinterest"><span class="icon-img" style="background:url(/wiki/images/b/bb/Sustc-b1-social-pinterest.png)"></span></a></li>
Line 3,032: Line 457:
                     <div class="clear"></div>
                     <div class="clear"></div>
                 </section>
                 </section>
-
                <div class="nav-shadow"></div>
 
-
                <div id="logo" class="frontpage"><a href="index.html"><img src="images/logo.png" alt="" /></a></div>             
 
-
                <div class="clear"></div>
 
             </header>
             </header>
         </div>
         </div>
         <!-- END HEADER -->
         <!-- END HEADER -->
-
       
+
      <br><br> 
         <!-- SLIDER -->
         <!-- SLIDER -->
         <div id="outerslider">
         <div id="outerslider">
Line 3,046: Line 468:
                     <div id="feature_gallery">
                     <div id="feature_gallery">
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide1.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/f/f1/School.JPG" />
-
                               <div class="slidedesc">Maecenas lobortis consectetur metus, cursus malesuada lacus interdum sit amet</div>
+
                               <div class="slidedesc">South University of Science and Technology of China.</div>
                           </div>
                           </div>
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide2.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/6/66/Went_to_bgi.JPG" alt="" class="change" />
-
                               <div class="slidedesc">Pellentesque at urna sit amet lorem condimentum aliquet.</div>
+
                               <div class="slidedesc">2012 SUSTC IGEM team members.</div>
                           </div>
                           </div>
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide3.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/archive/7/75/20121022104002%21Slider.3.JPG" alt="" class="change" />
-
                               <div class="slidedesc">Curabitur vel felis imperdiet tortor varius vehicula a quis velit.</div>
+
                               <div class="slidedesc">Web Page of Transcriptional Terminator Efficiency Calculator.</div>
                           </div>
                           </div>
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide4.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/0/05/Slider.4.JPG" alt="" class="change" />
-
                               <div class="slidedesc">Morbi cursus quam vel sem cursus consequat consequat lacus bibendum.</div>
+
                               <div class="slidedesc">Lab Work.</div>
                           </div>
                           </div>
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide2.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/1/17/Slider.5.JPG" alt="" class="change" />
-
                               <div class="slidedesc">Quisque malesuada lorem nec mauris ornare rutrum egestas magna sodales.</div>  
+
                               <div class="slidedesc">Human Practice.</div>  
                           </div>
                           </div>
                           <div class="bigimg">
                           <div class="bigimg">
-
                               <img src="images/content/slide3.jpg" alt="" class="change" />
+
                               <img src="https://static.igem.org/mediawiki/2012/f/fb/Ff-hk.JPG" alt="" class="change" />
-
                               <div class="slidedesc">Sed semper lacus iaculis est pretium at ultrices ligula cursus.</div>
+
                               <div class="slidedesc">HK jamboree</div>
                           </div>
                           </div>
                     </div>
                     </div>
Line 3,078: Line 500:
         </div>
         </div>
         <!-- END SLIDER -->
         <!-- END SLIDER -->
-
       
 
-
        <!-- BEFORE CONTENT -->
 
-
        <div id="outerbeforecontent">
 
-
        <div id="beforecontent">
 
-
            <section id="beforethecontent">
 
-
<div class="box">
 
-
                      <h2>Romantic Getaway</h2>
 
-
                      <p>Nunc tortor ante, accumsan vel malesuada vulputate, tempus quis dolor. In ut purus nulla. Etiam tincidunt pharetra metus eget ultricies. Integer mi ante, laoreet cursus.</p>
 
-
                      <a href="accommodation-details.html" class="button">Read More</a>
 
-
                    </div>
 
-
                    <div class="box">
 
-
                    <h2>Family Getaway</h2>
 
-
                      <p>Nunc tortor ante, accumsan vel malesuada vulputate, tempus quis dolor. In ut purus nulla. Etiam tincidunt pharetra metus eget ultricies. Integer mi ante, laoreet cursus.</p>
 
-
                      <a href="accommodation-details.html" class="button">Read More</a>
 
-
                    </div>
 
-
                    <div class="box last">
 
-
                      <h2>Suite Getaway</h2>
 
-
                      <p>Nunc tortor ante, accumsan vel malesuada vulputate, tempus quis dolor. In ut purus nulla. Etiam tincidunt pharetra metus eget ultricies. Integer mi ante, laoreet cursus.</p>
 
-
                      <a href="accommodation-details.html" class="button">Read More</a>
 
-
                    </div>
 
-
                    <div class="clear"></div>
 
-
                </section>
 
-
            </div>
 
-
        </div>
 
-
        <!-- END BEFORE CONTENT -->
 
          
          
         <!-- MAIN CONTENT -->
         <!-- MAIN CONTENT -->
Line 3,110: Line 507:
              
              
<article>
<article>
-
                <img src="images/content/bell.png" alt="" class="alignright" />
+
                                <h1>Transcriptional Terminator Efficiency Calculator (TTEC)</h1>
-
<h1>Welcome</h1>
+
<p>We studied the rho-independent transcription terminators which regulate gene expression using both theoretical model and experiment method.</p>
-
<p class="colortext">Mauris malesuada ultrices consectetur. Suspendisse varius ante quis mauris gravida auctor. Nam cursus felis non ipsum feugiat ullamcorper. Nunc ac aliquet eros. </p>
+
<p> We first developed a theoretical model. This model calculated the free energy of RNA folding and could predict the secondary structure of terminators. From the secondary structure, we proposed an algorithm that can predict terminator efficiency.</p>
-
 
+
<p> To validate our theoretical prediction, we also perform wetlab experiments. We construct 100 terminators. We measure the the terminator efficiency by measuring the GFP and RFP which are placed before and after terminators.</p>
-
<p>Nam eget justo velit. Vestibulum dignissim vestibulum volutpat. Morbi quam odio, facilisis ut scelerisque id, pretium blandit diam. Suspendisse quam magna, sollicitudin vitae volutpat et, porttitor ut sem. Mauris nec dolor erat. Vestibulum condimentum libero ac elit rutrum pharetra. Nunc aliquet nisi et erat vulputate pellentesque.</p>
+
<p> We also developed a software and a web server for people to calculate their terminators and built a database of terminator efficiency which we believe to be the largest database of such kind. Our work is by far the most comprehensive study on terminator efficiency.</p>
-
 
+
-
<p>Nullam vel lacus et velit placerat convallis vitae in lorem. Fusce massa risus, viverra ut dapibus ut, tempus sit amet metus. Duis in elit nisi. In hac habitasse platea dictumst.</p>
+
                 </article>
                 </article>
Line 3,122: Line 517:
                 <div class="clear"></div>
                 <div class="clear"></div>
<div class="separator line"></div>
<div class="separator line"></div>
-
               
 
-
                <article class="row">
 
-
                    <div class="one_fourth">
 
-
                        <span class="dropcap4">1</span>
 
-
                        <h4>Design Ideas</h4>
 
-
                        <p>Pellentesque enim lacus, viverra eu egestas vel, imperdiet non felis. Aliquam erat volutpat. Nullam facilisis aliquet eleifend.</p>
 
-
                    </div>
 
-
                    <div class="one_fourth">
 
-
                    <span class="dropcap4">2</span>
 
-
                        <h4>Problem Areas</h4>
 
-
                        <p>Pellentesque enim lacus, viverra eu egestas vel, imperdiet non felis. Aliquam erat volutpat. Nullam facilisis aliquet eleifend.</p>
 
-
                    </div>
 
-
                    <div class="one_fourth">
 
-
                    <span class="dropcap4">3</span>
 
-
                        <h4>Green Garden</h4>
 
-
                        <p>Pellentesque enim lacus, viverra eu egestas vel, imperdiet non felis. Aliquam erat volutpat. Nullam facilisis aliquet eleifend.</p>
 
-
                    </div>
 
-
                    <div class="one_fourth lastcols">
 
-
                    <span class="dropcap4">4</span>
 
-
                        <h4>Planting Areas</h4>
 
-
                        <p>Pellentesque enim lacus, viverra eu egestas vel, imperdiet non felis. Aliquam erat volutpat. Nullam facilisis aliquet eleifend.</p>
 
-
                    </div>
 
-
        </article>
 
                 <div class="clear"></div>
                 <div class="clear"></div>
             </section>
             </section>
Line 3,150: Line 522:
         </div>
         </div>
         <!-- END MAIN CONTENT -->
         <!-- END MAIN CONTENT -->
 +
 +
             
                
                
         <!-- FOOTER -->
         <!-- FOOTER -->
         <div id="outerfooter">
         <div id="outerfooter">
         <div id="footercontainer">
         <div id="footercontainer">
-
             <footer id="footer">Downloaded from KickassGFX.net. Theme design by <a href="http://www.kickassgfx.net/">kickassgfx.net</a></footer>
+
             <footer id="footer">South University of Science and Technology of China</footer>
             </div>
             </div>
         </div>
         </div>
Line 3,164: Line 538:
</div> <!-- end bodychild -->
</div> <!-- end bodychild -->
</body>
</body>
 +
 +
</p>
 +
<!--
 +
NewPP limit report
 +
Preprocessor node count: 6/1000000
 +
Post-expand include size: 41/2097152 bytes
 +
Template argument size: 0/2097152 bytes
 +
Expensive parser function count: 0/100
 +
-->
 +
 +
<!-- Saved in parser cache with key 2012_igem_org:pcache:idhash:36371-0!1!0!!en!2 and timestamp 20121022120547 -->
 +
<div class="printfooter">
 +
Retrieved from "<a href="https://2012.igem.org/Template:SUSTC-B1">https://2012.igem.org/Template:SUSTC-B1</a>"</div>
 +
<div id="catlinks"><div id='catlinks' class='catlinks catlinks-allhidden'></div></div> <!-- end content -->
 +
<div class="visualClear"></div>
 +
</div>
 +
    </div>
 +
<!-- PAGE FOOTER -- ITEMS FROM COLUMN ! HAVE BEEN MOVED HERE  -- RDR  -->
 +
<div class="visualClear"></div>
 +
    <div id='footer-box' class='noprint'>
 +
        <div id="footer">
 +
              <div id="f-poweredbyico"><a href="http://www.mediawiki.org/"><img src="/wiki/skins/common/images/poweredby_mediawiki_88x31.png" height="31" width="88" alt="Powered by MediaWiki" /></a></div>       <div id="f-copyrightico"><a href="http://creativecommons.org/licenses/by/3.0/"><img src="http://i.creativecommons.org/l/by/3.0/88x31.png" alt="Attribution 3.0 Unported" width="88" height="31" /></a></div>     <ul id="f-list">
 +
 +
 +
  <!-- Recentchanges is not handles well DEBUG -->
 +
    <li id="t-recentchanges"><a href="/Special:RecentChanges"
 +
      title='Recent changes'>Recent changes</a></li>
 +
 +
    <li id="t-whatlinkshere"><a href="/Special:WhatLinksHere/Template:SUSTC-B1"
 +
      title="List of all wiki pages that link here [j]" accesskey="j">What links here</a></li>
 +
 +
                        <li id="t-recentchangeslinked"><a href="/Special:RecentChangesLinked/Template:SUSTC-B1"
 +
                          title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
 +
 +
 +
 +
                <li id="t-upload"><a href="/Special:Upload"
 +
                  title="Upload files [u]" accesskey="u">Upload file</a>
 +
                </li>
 +
                <li id="t-specialpages"><a href="/Special:SpecialPages"
 +
                  title="List of all special pages [q]" accesskey="q">Special pages</a>
 +
                </li>
 +
                <li><a href='/Special:Preferences'>My preferences</a></li>
 +
            </ul>
 +
        </div> <!-- close footer -->
 +
        <div id='footer'>
 +
    <ul id="f-list">
 +
 +
            <li id="t-print"><a href="/wiki/index.php?title=Template:SUSTC-B1&amp;printable=yes"
 +
              title="Printable version of this page [p]" accesskey="p">Printable version</a>
 +
            </li>
 +
 +
            <li id="t-permalink"><a href="/wiki/index.php?title=Template:SUSTC-B1&amp;oldid=273676"
 +
              title="Permanent link to this revision of the page">Permanent link</a>
 +
            </li>
 +
 +
 +
        <li id="privacy"><a href="/2012.igem.org:Privacy_policy" title="2012.igem.org:Privacy policy">Privacy policy</a></li>
 +
        <li id="disclaimer"><a href="/2012.igem.org:General_disclaimer" title="2012.igem.org:General disclaimer">Disclaimers</a></li>
 +
    </ul>
 +
</div> <!-- close footer -->
 +
    </div> <!-- close footer-box -->
 +
 +
<script>if (window.runOnloadHook) runOnloadHook();</script>
 +
</div>
 +
<!-- Served in 0.198 secs. --></body>
 +
</html>
</html>

Latest revision as of 15:07, 25 October 2012

Title



Transcriptional Terminator Efficiency Calculator (TTEC)

We studied the rho-independent transcription terminators which regulate gene expression using both theoretical model and experiment method.

We first developed a theoretical model. This model calculated the free energy of RNA folding and could predict the secondary structure of terminators. From the secondary structure, we proposed an algorithm that can predict terminator efficiency.

To validate our theoretical prediction, we also perform wetlab experiments. We construct 100 terminators. We measure the the terminator efficiency by measuring the GFP and RFP which are placed before and after terminators.

We also developed a software and a web server for people to calculate their terminators and built a database of terminator efficiency which we believe to be the largest database of such kind. Our work is by far the most comprehensive study on terminator efficiency.

South University of Science and Technology of China

Retrieved from "http://2012.igem.org/Template:SUSTC-B1"