
/**
 * Cookie plugin 1.0
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
jQuery.cookie=function(b,j,m){if(typeof j!="undefined"){m=m||{};if(j===null){j="";m.expires=-1}var e="";if(m.expires&&(typeof m.expires=="number"||m.expires.toUTCString)){var f;if(typeof m.expires=="number"){f=new Date();f.setTime(f.getTime()+(m.expires*24*60*60*1000))}else{f=m.expires}e="; expires="+f.toUTCString()}var l=m.path?"; path="+(m.path):"";var g=m.domain?"; domain="+(m.domain):"";var a=m.secure?"; secure":"";document.cookie=[b,"=",encodeURIComponent(j),e,l,g,a].join("")}else{var d=null;if(document.cookie&&document.cookie!=""){var k=document.cookie.split(";");for(var h=0;h<k.length;h++){var c=jQuery.trim(k[h]);if(c.substring(0,b.length+1)==(b+"=")){d=decodeURIComponent(c.substring(b.length+1));break}}}return d}};
;
/*!
 * jQuery Cycle Plugin (with Transition Definitions)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2010 M. Alsup
 * Version: 2.9998 (27-OCT-2011)
 * Dual licensed under the MIT and GPL licenses.
 * http://jquery.malsup.com/license.html
 * Requires: jQuery v1.3.2 or later
 */
;(function($, undefined) {

var ver = '2.9998';

// if $.support is not defined (pre jQuery 1.3) add what I need
if ($.support == undefined) {
	$.support = {
		opacity: !($.browser.msie)
	};
}

function debug(s) {
	$.fn.cycle.debug && log(s);
}		
function log() {
	window.console && 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 && options != 'stop') {
		if (!$.isReady && 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;

		var $cont = $(this);
		var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
		var els = $slides.get();

		var opts2 = buildOptions($cont, $slides, els, opts, o);
		if (opts2 === false)
			return;

		if (els.length < 2) {
			log('terminating; too few slides: ' + els.length);
			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) {
	var opts = $(cont).data('cycle.opts');
	var paused = !!cont.cyclePause;
	if (paused && opts.paused)
		opts.paused(cont, opts, byHover, onPager);
	else if (!paused && opts.resumed)
		opts.resumed(cont, opts, byHover, onPager);
}

// process the args that were passed to the plugin fn
function handleArguments(cont, options, arg2) {
	if (cont.cycleStop == undefined)
		cont.cycleStop = 0;
	if (options === undefined || options === null)
		options = {};
	if (options.constructor == String) {
		switch(options) {
		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;
			opts.elements && $(opts.elements).stop();
			$(cont).removeData('cycle.opts');
			if (options == 'destroy')
				destroy(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':
			var 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 && 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) {
	if (!$.support.opacity && opts.cleartype && el.style.filter) {
		try { el.style.removeAttribute('filter'); }
		catch(smother) {} // handle old opera versions
	}
};

// unbind event handlers
function destroy(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;
	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 && 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 && opts.cleartype && !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 && 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 && 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 && $slide.width() != opts.width ) {
					$slide.width( opts.width );
					$slide.height( opts.width / ratio );
				}

				if( opts.height && $slide.height() < opts.height ) {
					$slide.height( opts.height );
					$slide.width( opts.height * ratio );
				}
			});
		}
	}

	if (opts.center && ((!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 && !opts.fit && !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 && !$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 (maxw > 0 && maxh > 0)
			$cont.css({width:maxw+'px',height:maxh+'px'});
	}

	var pauseFlag = false;  // https://github.com/malsup/cycle/issues/44
	if (opts.pause)
		$cont.hover(
			function(){
				pauseFlag = true;
				this.cyclePause++;
				triggerPause(cont, true);
			},
			function(){
				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 && opts.requeueOnImageNotLoaded && ++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' && !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 (p in txs) {
			tx = txs[p];
			if (txs.hasOwnProperty(p) && $.isFunction(tx))
				opts.fxs.push(p);
		}
	}
	if (opts.multiFx && 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 && opts.cleartype && !opts.cleartypeNoBg)
			clearTypeFix($s);

		if (opts.fit && opts.width)
			$s.width(opts.width);
		if (opts.fit && opts.height && 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) {
	// opts.busy is true if we're in the middle of an animation
	if (manual && opts.busy && opts.manualTrump) {
		// let manual transitions requests trump active ones
		debug('manualTrump in go(), stopping active transition');
		$(els).stop(true,true);
		opts.busy = 0;
	}
	// don't begin another timeout-based transition if there is one active
	if (opts.busy) {
		debug('transition active, ignoring new tx request');
		return;
	}

	var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

	// stop cycling if we have an outstanding stop request
	if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
		return;

	// check to see if we should stop cycling based on autostop options
	if (!manual && !p.cyclePause && !opts.bounce &&
		((opts.autostop && (--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) && (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 && (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length))
				opts.lastFx = 0;
			else if (!fwd && (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
		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) {
			var roll = (opts.nextSlide - 1) < 0;
			if (roll && 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
			var roll = (opts.nextSlide + 1) == els.length;
			if (roll && 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 && 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 && !opts.continuous) {
			ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
         if (opts.fx == 'shuffle')
            ms -= opts.speedOut;
      }
		else if (opts.continuous && 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 && 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) && !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() { 
				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 && v.indexOf('rgb') >= 0 ) {
				var rgb = v.match(/\d+/g);
				return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
			}
			if (v && 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 && w !== false && next.cycleW > 0)
		opts.cssBefore.width = next.cycleW;
	if (opts.slideResize && h !== false && 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
	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: 0,	  // 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($) {

//
// 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++)
				fwd ? opts.els.push(opts.els.shift()) : 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 && !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);
;
/*!
 * tn3 v1.1.0.30
 * http://tn3gallery.com/
 *
 * License
 * http://tn3gallery.com/license
 *
 * Date: 06 Sep, 2011 11:34:12 +0300
 */
(function(f){function e(h){var j=h.skinDir+"/"+h.skin,l=n[j];if(l)l.loaded?a.call(this,h,l.html):l.queue.push({c:this,s:h});else{n[j]={loaded:false,queue:[{c:this,s:h}]};f.ajax({url:j+".html",dataType:"text",success:function(m){var p=n[j];p.loaded=true;p.html=m;for(m=0;m<p.queue.length;m++)a.call(p.queue[m].c,p.queue[m].s,p.html)},dataFilter:function(m){return m=m.substring(m.indexOf("<body>")+6,m.lastIndexOf("</body>"))},error:function(){if(h.error){var m=f.Event("tn3_error");m.description="tn3 skin load error";
h.error(m)}}})}return this}function a(h,j){this.each(function(){for(var l=f(this),m,p,q=j.indexOf("<img src=");q!=-1;){q+=10;p=j.indexOf('"',q);m=h.skinDir+"/"+j.substring(q,p);j=j.substr(0,q)+m+j.substr(p);q=j.indexOf("<img src=",q)}l.append(j);l.data("tn3").init(l,h.fullOnly)})}function c(h){var j=[],l=h.children(".tn3.album"),m,p;if(l.length>0)l.each(function(q){m=f(this);j[q]={title:m.find(":header").html()};f.extend(j[q],b(m));if(p=d(m)){j[q].imgs=p;if(!j[q].thumb)j[q].thumb=j[q].imgs[0].thumb}});
else if(p=d(h))j[0]={imgs:p};return j}function d(h){var j=[],l,m,p;l=h.find("li");if(l.length>0)l.each(function(q){m=f(this);p=m.find(":header");j[q]={title:p.html(),img:m.find("a").attr("href"),thumb:m.find("a img").attr("src")};if(!j[q].img)j[q].img=m.find("img").attr("src");f.extend(j[q],b(m))});else{l=h.find("img");l.each(function(q){m=f(this);$at=m.parent("a");j[q]=$at.length==0?{title:m.attr("title"),img:m.attr("src")}:{title:m.attr("title"),img:$at.attr("href"),thumb:m.attr("src")}})}if(j.length==
0)return null;return j}function b(h){var j={};h=h.children(".tn3");var l;f.each(h,function(){l=f(this);j[l.attr("class").substr(4)]=l.html()});return j}function g(h){f('a[href^="#tn3-'+h+'"]').click(function(j){var l=k[h];j=f(j.currentTarget).attr("href");j=j.substr(j.indexOf("-",5)+1);j=j.split("-");switch(j[0]){case "next":l.cAlbum!=null&&l.show("next",j[1]=="fs");break;case "prev":l.cAlbum!=null&&l.show("prev",j[1]=="fs");break;default:l.cAlbum!=parseInt(j[0])?l.showAlbum(parseInt(j[0]),parseInt(j[1]),
j[2]=="fs"):l.show(parseInt(j[1]),j[2]=="fs")}})}function i(){if(k.length==0){var h=f(".tn3gallery");h.length>0&&h.tn3({})}}if(/1\.(0|1|2|3|4)\.(0|1)/.test(f.fn.jquery)||/^1.1/.test(f.fn.jquery)||/^1.2/.test(f.fn.jquery)||/^1.3/.test(f.fn.jquery))alert("tn3gallery requires jQuery v1.4.2 or later!  You are using v"+f.fn.jquery);else{var n={},k=[];f.fn.tn3=function(h){f.each(["skin","startWithAlbums","external"],function(l,m){var p=m.split(".");if(p.length>1&&h[p[0]])delete h[p[0]][p[1]];else delete h[m]});
h=f.extend(true,{},f.fn.tn3.config,h);if(h.skin!=null)if(typeof h.skin=="object"){h.skinDir+="/"+h.skin[0];if(h.cssID==null)h.cssID=h.skin[0];h.skin=h.skin[1]}else h.skinDir+="/"+h.skin;else{h.skin="tn3";h.skinDir+="/tn3";var j=true}if(h.cssID==null)h.cssID=h.skin==null?"tn3":h.skin;this.each(function(){var l=f(this);h.fullOnly?l.hide():l.css("visibility","hidden");var m=h.data?h.data:c(l);m=k.push(new f.fn.tn3.Gallery(m,h))-1;l.data("tn3",k[m]);for(var p=0;p<f.fn.tn3.plugins.length;p++)f.fn.tn3.plugins[p].init(l,
h);l.empty();g(m)});j?a.call(this,h,h.skinDefault):e.call(this,h);return this};f.fn.tn3.plugins=[];f.fn.tn3.plugIn=function(h,j){f.fn.tn3.plugins.push({id:h,init:j})};f.fn.tn3.version="1.1.0.30";f.fn.tn3.config={data:null,skin:null,skinDir:"skins",skinDefault:'<div class="tn3-gallery"><div class="tn3-image"><div class="tn3-text-bg"><div class="tn3-image-title"></div><div class="tn3-image-description"></div></div><div class="tn3-next tn3_v tn3_o"></div><div class="tn3-prev tn3_v tn3_o"></div><div class="tn3-preloader tn3_h tn3_v"><img src="preload.gif"/></div><div class="tn3-timer"></div></div><div class="tn3-controls-bg tn3_rh"><div class="tn3-sep1"></div><div class="tn3-sep2"></div><div class="tn3-sep3"></div></div><div class="tn3-thumbs"></div><div class="tn3-fullscreen"></div><div class="tn3-show-albums"></div><div class="tn3-next-page"></div><div class="tn3-prev-page"></div><div class="tn3-play"></div><div class="tn3-count"></div><div class="tn3-albums"><div class="tn3-inalbums"><div class="tn3-album"></div></div><div class="tn3-albums-next"></div><div class="tn3-albums-prev"></div><div class="tn3-albums-close"></div></div></div>',
cssID:null};f.fn.tn3.translations={};f.fn.tn3.translate=function(h,j){if(j)f.fn.tn3.translations[h]=j;else{var l=f.fn.tn3.translations[h];return l?l:h}};f(function(){setTimeout(i,1)})}})(jQuery);
(function(f){f.fn.tn3utils=U={};U.shuffle=function(e){var a,c,d=e.length;if(d)for(;--d;){c=Math.floor(Math.random()*(d+1));a=e[c];e[c]=e[d];e[d]=a}};f.extend(f.easing,{def:"easeOutQuad",swing:function(e,a,c,d,b){return f.easing[f.easing.def](e,a,c,d,b)},linear:function(e,a,c,d,b){return d*a/b+c},easeInQuad:function(e,a,c,d,b){return d*(a/=b)*a+c},easeOutQuad:function(e,a,c,d,b){return-d*(a/=b)*(a-2)+c},easeInOutQuad:function(e,a,c,d,b){if((a/=b/2)<1)return d/2*a*a+c;return-d/2*(--a*(a-2)-1)+c},easeInCubic:function(e,
a,c,d,b){return d*(a/=b)*a*a+c},easeOutCubic:function(e,a,c,d,b){return d*((a=a/b-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,d,b){if((a/=b/2)<1)return d/2*a*a*a+c;return d/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,d,b){return d*(a/=b)*a*a*a+c},easeOutQuart:function(e,a,c,d,b){return-d*((a=a/b-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,d,b){if((a/=b/2)<1)return d/2*a*a*a*a+c;return-d/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,d,b){return d*(a/=b)*a*a*a*a+c},easeOutQuint:function(e,a,c,
d,b){return d*((a=a/b-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,d,b){if((a/=b/2)<1)return d/2*a*a*a*a*a+c;return d/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,a,c,d,b){return-d*Math.cos(a/b*(Math.PI/2))+d+c},easeOutSine:function(e,a,c,d,b){return d*Math.sin(a/b*(Math.PI/2))+c},easeInOutSine:function(e,a,c,d,b){return-d/2*(Math.cos(Math.PI*a/b)-1)+c},easeInExpo:function(e,a,c,d,b){return a==0?c:d*Math.pow(2,10*(a/b-1))+c},easeOutExpo:function(e,a,c,d,b){return a==b?c+d:d*(-Math.pow(2,-10*a/
b)+1)+c},easeInOutExpo:function(e,a,c,d,b){if(a==0)return c;if(a==b)return c+d;if((a/=b/2)<1)return d/2*Math.pow(2,10*(a-1))+c;return d/2*(-Math.pow(2,-10*--a)+2)+c},easeInCirc:function(e,a,c,d,b){return-d*(Math.sqrt(1-(a/=b)*a)-1)+c},easeOutCirc:function(e,a,c,d,b){return d*Math.sqrt(1-(a=a/b-1)*a)+c},easeInOutCirc:function(e,a,c,d,b){if((a/=b/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+c;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,d,b){e=1.70158;var g=0,i=d;if(a==0)return c;if((a/=
b)==1)return c+d;g||(g=b*0.3);if(i<Math.abs(d)){i=d;e=g/4}else e=g/(2*Math.PI)*Math.asin(d/i);return-(i*Math.pow(2,10*(a-=1))*Math.sin((a*b-e)*2*Math.PI/g))+c},easeOutElastic:function(e,a,c,d,b){e=1.70158;var g=0,i=d;if(a==0)return c;if((a/=b)==1)return c+d;g||(g=b*0.3);if(i<Math.abs(d)){i=d;e=g/4}else e=g/(2*Math.PI)*Math.asin(d/i);return i*Math.pow(2,-10*a)*Math.sin((a*b-e)*2*Math.PI/g)+d+c},easeInOutElastic:function(e,a,c,d,b){e=1.70158;var g=0,i=d;if(a==0)return c;if((a/=b/2)==2)return c+d;g||
(g=b*0.3*1.5);if(i<Math.abs(d)){i=d;e=g/4}else e=g/(2*Math.PI)*Math.asin(d/i);if(a<1)return-0.5*i*Math.pow(2,10*(a-=1))*Math.sin((a*b-e)*2*Math.PI/g)+c;return i*Math.pow(2,-10*(a-=1))*Math.sin((a*b-e)*2*Math.PI/g)*0.5+d+c},easeInBack:function(e,a,c,d,b,g){if(g==undefined)g=1.70158;return d*(a/=b)*a*((g+1)*a-g)+c},easeOutBack:function(e,a,c,d,b,g){if(g==undefined)g=1.70158;return d*((a=a/b-1)*a*((g+1)*a+g)+1)+c},easeInOutBack:function(e,a,c,d,b,g){if(g==undefined)g=1.70158;if((a/=b/2)<1)return d/2*
a*a*(((g*=1.525)+1)*a-g)+c;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+c},easeInBounce:function(e,a,c,d,b){return d-f.easing.easeOutBounce(e,b-a,0,d,b)+c},easeOutBounce:function(e,a,c,d,b){return(a/=b)<1/2.75?d*7.5625*a*a+c:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+c:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+c:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+c},easeInOutBounce:function(e,a,c,d,b){if(a<b/2)return f.easing.easeInBounce(e,a*2,0,d,b)*0.5+c;return f.easing.easeOutBounce(e,a*2-b,0,d,b)*0.5+d*
0.5+c}})})(jQuery);
(function(f){f.fn.tn3.Gallery=function(a,c){this.data=a;this.config=f.extend(true,{},f.fn.tn3.Gallery.config,c);this.initialized=false;this.t=f.fn.tn3.translate;this.loader=new f.fn.tn3.External(c.external,this)};f.fn.tn3.Gallery.config={cssID:"tn3",active:[],iniAlbum:0,iniImage:0,imageClick:"next",startWithAlbums:false,autoplay:false,delay:7E3,timerMode:"bar",timerSteps:500,timerStepChar:"&#8226;",isFullScreen:false,fullOnly:false,width:null,height:null,mouseWheel:true,image:{},thumbnailer:{}};var e;
f.fn.tn3.Gallery.prototype={config:null,$c:null,$tn3:null,data:null,thumbnailer:null,imager:null,cAlbum:null,timer:null,items:null,initialized:null,n:null,albums:null,loader:null,fso:null,timerSize:null,special:null,areHidden:false,$inImage:null,init:function(a,c){this.$c=a;if(!(this.loader.reqs>0||this.data.length==0||c)){this.trigger("init_start");this.config.fullOnly&&this.$c.show();this.$c.css("visibility","visible");this.$tn3=this.$c.find("."+this.config.cssID+"-gallery");var d=this.config.initValues=
{width:this.$tn3.width(),height:this.$tn3.height()};this.$tn3.css("float","left");d.wDif=this.$tn3.outerWidth(true)-d.width;d.hDif=this.$tn3.outerHeight(true)-d.height;this.replaceMenu("tn3gallery.com","http://tn3gallery.com");var b=this;this.timer=new f.fn.tn3.Timer(this.$c,this.config.delay,this.config.timerSteps);this.$c.bind("timer_end",function(){b.show("next")});this.special={rv:[],rh:[],v:[],h:[],o:[]};this.parseLayout();this.center();f.each(this.items,function(g,i){switch(g){case "next":i.click(function(k){b.show("next");
k.stopPropagation()});i.attr("title",b.t("Next Image"));break;case "prev":i.click(function(k){b.show("prev");k.stopPropagation()});i.attr("title",b.t("Previous Image"));break;case "next-page":i.click(function(){b.items.thumbs&&b.thumbnailer.next(true)});i.attr("title",b.t("Next Page"));break;case "prev-page":i.click(function(){b.items.thumbs&&b.thumbnailer.prev(true)});i.attr("title",b.t("Previous Page"));break;case "thumbs":b.config.thumbnailer.cssID=b.config.cssID;b.config.thumbnailer.initValues=
{width:i.width(),height:i.height()};b.config.thumbnailer.initValues.vertical=i.width()<=i.height();i.bind("tn_click",function(k){b.show(k.n)}).bind("tn_over",function(){b.timer.pause(true)}).bind("tn_out",function(){b.timer.pause(false)}).bind("tn_error",function(k){b.trigger("error",k)});break;case "image":b.config.image.cssID=b.config.cssID;b.config.image.initValues={width:i.width(),height:i.height()};i.bind("img_click",function(k){switch(b.config.imageClick){case "next":b.show("next");break;case "fullscreen":b.fullscreen();
break;case "url":if(k=b.data[b.cAlbum].imgs[k.n].url)window.location=k}}).bind("img_load_start",function(){b.items.preloader&&b.items.preloader.show()}).bind("img_load_end",function(k){b.n=k.n;b.items.thumbs&&b.thumbnailer.thumbClick(k.n);b.items.preloader&&b.items.preloader.hide();b.items.timer&&b.items.timer.hide();b.$inImage&&b.$inImage.hide()}).bind("img_transition",function(){b.setTextValues(false,"image");b.$inImage&&b.$inImage.fadeIn(300);b.items.count&&b.items.count.text(b.n+1+"/"+b.data[b.cAlbum].imgs.length);
b.config.autoplay&&b.timer.start();b.special.o.length>0&&b.hideElements()}).bind("img_enter",function(){b.items.timer&&b.timer.pause(true);b.special.o.length>0&&b.showElements(300)}).bind("img_leave",function(){b.items.timer&&b.timer.pause(false);b.special.o.length>0&&b.hideElements(300)}).bind("img_resize",function(k){if(b.$inImage){b.$inImage.width(k.w).height(k.h).css("left",k.left).css("top",k.top);b.center();b.imager.bindMouseEvents(b.$inImage)}}).bind("img_error",function(k){b.trigger("error",
k)});break;case "preloader":i.hide();break;case "timer":var n=i.width()>i.height()?"width":"height";b.$c.bind("timer_tick",function(k){if(b.config.timerMode=="char"){for(var h=b.config.timerStepChar;--k.tick;)h+=b.config.timerStepChar;b.items.timer.html(h)}else b.items.timer[n](b.timerSize/k.totalTicks*k.tick);b.trigger(k.type,k)}).bind("timer_start",function(k){b.timerSize=b.$inImage[n]();b.items.timer.fadeIn(300);b.trigger(k.type,k)}).bind("timer_end timer_stop",function(){b.items.timer.hide()});
i.hide();break;case "play":i.click(function(k){if(b.timer.runs){b.timer.stop();b.config.autoplay=false;i.removeClass(b.config.cssID+"-play-active");i.attr("title",b.t("Start Slideshow"))}else{b.timer.start();b.config.autoplay=true;i.addClass(b.config.cssID+"-play-active");i.attr("title",b.t("Stop Slideshow"))}k.stopPropagation()});i.attr("title",b.t("Start Slideshow"));b.config.autoplay&&i.click();break;case "albums":b.albums=new f.fn.tn3.Albums(b.data,i,b.config.cssID);i.hide();i.bind("albums_binit",
function(k){b.trigger(k.type,k)}).bind("albums_click",function(k){b.showAlbum(k.n);b.trigger(k.type,k)}).bind("albums_init",function(k){b.timer.pause(true);b.trigger(k.type,k)}).bind("albums_error",function(k){b.trigger("error",k)}).bind("albums_close",function(){b.timer.pause(false)});break;case "albums-next":b.albums&&b.albums.setControl("next",i);i.attr("title",b.t("Next Album Page"));break;case "albums-prev":b.albums&&b.albums.setControl("prev",i);i.attr("title",b.t("Previous Album Page"));break;
case "albums-close":b.albums&&b.albums.setControl("close",i);i.attr("title",b.t("Close"));break;case "show-albums":i.click(function(k){b.items.albums&&b.albums.show(0,b.cAlbum,false,true);k.stopPropagation()});i.attr("title",b.t("Album List"));break;case "fullscreen":i.click(function(k){b.fullscreen();k.stopPropagation()});i.attr("title",b.t("Maximize"))}});if(this.config.width!==null||this.config.height!==null){if(this.config.width==null)this.config.width=this.config.initValues.width;if(this.config.height==
null)this.config.height=this.config.initValues.height;this.resize(this.config.width,this.config.height)}d=Math.min(this.config.iniAlbum,this.data.length-1);this.initialized=true;this.config.startWithAlbums&&this.data.length>1&&this.items.albums?this.albums.show():this.showAlbum(d,this.config.iniImage);this.config.isFullScreen&&this.onFullResize(f(window).width(),f(window).height());this.trigger("init")}},parseLayout:function(){var a=this.items={},c=this.config,d=c.active,b=c.cssID.length+1,g=this,
i,n;this.$c.find("div[class^='"+c.cssID+"-']").each(function(){i=f(this);n=i.attr("class").split(" ")[0].substr(b);if(d.length==0||f.inArray(n,d)!=-1)a[n]=i;else n!="gallery"&&i.remove();if(i.parent().hasClass(c.cssID+"-image")){if(!g.$inImage){g.$inImage=i.parent().append('<div class="tn3-in-image"></div>').find(":last");if(f.browser.msie){var h=f("<div />");h.css("background-color","#fff").css("opacity",0).css("width","100%").css("height","100%");h.appendTo(g.$inImage)}g.$inImage.css("position",
"absolute").width(a.image.width()).height(a.image.height())}i.appendTo(g.$inImage)}this.className.indexOf("tn3_")!=-1&&g.addSpecial(n,this.className)});$cm=this.$c;f.each(["albums","album","album-next","album-prev","show-albums","timer"],function(h,j){delete a[j];$cm.find("."+c.cssID+"-"+j).remove()});var k=f('<div title="Powered by TN3 Gallery"></div>');k.css("position","absolute").css("background-image","url('"+this.config.skinDir+"/tn3.png')").css("background-position","-258px -7px").css("bottom",
"14px").css("right","53px").css("cursor","pointer").width(40).height(18);k.appendTo(this.$c.find("."+c.cssID+"-gallery"));k.click(function(){window.location="http://tn3gallery.com"}).hover(function(){f(this).css("background-position","-258px -45px")},function(){f(this).css("background-position","-258px -7px")})},addSpecial:function(a,c){for(var d=c.split(" "),b,g=0;g<d.length;g++){b=d[g].split("_");if(b[0]=="tn3"){this.special[b[1]].push(a);if(b[1]=="rh"||b[1]=="rv")this.config.initValues[a]={w:this.items[a].width(),
h:this.items[a].height()}}}},initHover:function(a,c){var d=this;a.hover(function(){a.addClass(d.config.cssID+"-"+c+"-over")},function(){a.removeClass(d.config.cssID+"-"+c+"-over")})},setTextValues:function(a,c){var d,b,g,i=c+"-";for(g in this.items)if(g.indexOf(i)==0){d=g.substr(i.length);if(d!="info"&&d!="prev"&&d!="next"){b=c=="image"?this.data[this.cAlbum].imgs[this.n]:this.data[this.cAlbum];if(!(!b||b[d]==undefined)){b[d]=f.trim(b[d]);d={field:d,text:b[d],data:b};this.trigger("set_text",d);if(a||
d.text==undefined||d.text.length==0){this.items[g].html("");this.items[g].hide()}else{this.items[g].html(d.text);this.items[g].show()}}}}},show:function(a,c){this.timer.stop();this.imager&&this.imager.show(a);c&&this.fullscreen()},setAlbumData:function(a,c){if(c)this.trigger("error",{description:c});else{for(var d=0,b=a.length;d<b;d++)this.data.push(a[d]);this.$c&&this.init(this.$c,this.config.fullOnly)}},setImageData:function(a,c,d){if(d)this.trigger("error",{description:d});else{a={data:a};this.trigger("image_data",
a);this.data[c].imgs=a.data;this.cAlbum==c&&this.rebuild(a.data)}},showAlbum:function(a,c,d){if(this.initialized){if(a>this.data.length)return;this.timer.stop();this.cAlbum=a;if(this.data[this.cAlbum].imgs===undefined)this.loader?this.loader.getImages(this.data[this.cAlbum].adata,this.cAlbum):this.trigger("error",{description:"Wrong album id"});else this.rebuild(this.data[this.cAlbum].imgs,c);this.albums&&this.albums.hide();this.items.preloader&&this.items.preloader.show()}else{this.config.iniAlbum=
a;this.config.iniImage=c;this.init(this.$c,false)}d&&this.fullscreen()},rebuild:function(a,c){if(this.items.thumbs)if(this.thumbnailer)this.thumbnailer.rebuild(a);else this.thumbnailer=new f.fn.tn3.Thumbnailer(this.items.thumbs,a,this.config.thumbnailer);if(this.items.image)if(this.imager)this.imager.rebuild(a);else this.imager=new f.fn.tn3.Imager(this.items.image,a,this.config.image);this.setTextValues(true,"image");this.setTextValues(false,"album");this.show(c==null?0:c);this.trigger("rebuild",
{album:this.cAlbum})},showElements:function(a){if(this.areHidden){var c=this,d;f.each(this.special.o,function(b,g){d=c.items[g];d.show();if(a&&f.support.opacity){d.stop(true);d.css("opacity",0);d.animate({opacity:1},{duration:a,queue:false})}});this.areHidden=false}},hideElements:function(a){if(!this.areHidden){var c=this,d;f.each(this.special.o,function(b,g){d=c.items[g];if(a&&f.support.opacity){d.stop(true);d.animate({opacity:0},{duration:a,complete:function(){d.hide()},queue:false})}else d.hide()});
this.areHidden=true}},setData:function(a){if(this.items.thumbs)this.thumbnailer.data=a;if(this.items.imager)this.imager.data=a},fullscreen:function(){if(this.config.isFullScreen){f(window).unbind("resize",this.onFullResize);f.tn3unblock();this.config.width!==null||this.config.height!==null?this.resize(this.config.width,this.config.height):this.resize(this.config.initValues.width,this.config.initValues.height);if(this.items.fullscreen){this.items.fullscreen.removeClass(this.config.cssID+"-fullscreen-active");
this.items.fullscreen.attr("title",this.t("Maximize"))}this.config.fullOnly&&this.$c.hide();this.config.isFullScreen=false;this.trigger("fullscreen",{fullscreen:false});f(document).unbind("keyup",this.onEscape)}else{f.tn3block({message:this.$tn3,cssID:this.config.cssID});f(window).bind("resize",f.proxy(this.onFullResize,this));this.config.fullOnly&&this.$c.show();this.config.isFullScreen=true;if(this.items.fullscreen){this.items.fullscreen.addClass(this.config.cssID+"-fullscreen-active");this.items.fullscreen.attr("title",
this.t("Minimize"))}this.onFullResize();e=this;this.trigger("fullscreen",{fullscreen:true})}},onEscape:function(a){a.keyCode==27&&e.fullscreen();a.keyCode==39&&e.show("next");a.keyCode==37&&e.show("prev");a.keyCode==38&&e.items.albums&&e.albums.show(0,e.cAlbum,false,true);a.keyCode==40&&e.albums.hide()},onFullResize:function(){var a=f(window),c=a.width();a=a.height();c-=this.config.initValues.wDif;a-=this.config.initValues.hDif;this.resize(c,a)},resize:function(a,c){this.$tn3.width(a).height(c);var d=
a-this.config.initValues.width,b=c-this.config.initValues.height,g,i,n=this;if(this.items.image){g=this.config.image.initValues.width+d;i=this.config.image.initValues.height+b;if(this.imager)this.imager.setSize(g,i);else{this.items.image.width(g).height(i);this.$inImage.width(g).height(i)}}if(this.items.thumbs){g=this.config.thumbnailer.initValues.width+d;i=this.config.thumbnailer.initValues.height+b;if(this.thumbnailer)this.thumbnailer.setSize(g,i);else this.config.thumbnailer.initValues.vertical?
this.items.thumbs.height(i):this.items.thumbs.width(g)}if(this.items.albums){g=this.albums.initValues.width+d;i=this.albums.initValues.height+b;this.albums.changeSize(d,b)}f.each(this.special.rh,function(k,h){n.items[h].width(n.config.initValues[h].w+d)});f.each(this.special.rv,function(k,h){n.items[h].height(n.config.initValues[h].h+b)});this.center()},center:function(){var a,c=this;f.each(this.special.v,function(d,b){a=c.items[b];a.css("top",(a.parent().height()-a.height())/2)});f.each(this.special.h,
function(d,b){a=c.items[b];a.css("left",(a.parent().width()-a.width())/2)})},trigger:function(a,c){var d=f.Event("tn3_"+a),b;for(b in c)d[b]=c[b];if(c&&c.type!=undefined)d.type="tn3_"+a;d.source=this;this.$c.trigger(d);this.config[a]&&this.config[a].call(this,d);for(b in c)c[b]=d[b]},initMouseWheel:function(){var a=this,c=function(d){a.show((d.detail?-d.detail:d.wheelDelta)>0?"prev":"next");d.preventDefault()};this.$tn3.bind("mousewheel",c);this.$tn3.bind("DOMMouseScroll",c)},replaceMenu:function(a,
c){var d='<div style="position:absolute;background-color:#fff;color: #000;padding:0px 4px 0px 4px;z-index:1010;font-family:sans-serif;font-size:12px;">&copy; <a href="'+c+'">'+a+"</a></div>";this.$tn3.bind("contextmenu",function(b){b.preventDefault()}).bind("mousedown",function(b){if(b.which==3){var g=f("body").append(d).find("div:last");g.css("left",b.pageX).css("top",b.pageY);g.find("a").mouseup(function(i){window.location=c;g.unbind(i)});f("body").mouseup(function(i){g.remove();f("body").unbind(i)})}})}}})(jQuery);
(function(f){f.fn.tn3.Imager=function(e,a,c){this.$c=e;this.data=a;c.crop=false;this.config=f.extend(true,{},f.fn.tn3.Imager.config,c);this.init()};f.fn.tn3.Imager.config={transitions:null,defaultTransition:{type:"slide"},random:false,cssID:"tn3",maxZoom:1.4,crop:false,clickEvent:"click",idleDelay:3E3,dif:0};f.fn.tn3.Imager.prototype={config:null,$c:false,data:false,cached:null,active:-1,$active:false,$buffer:false,isInTransition:false,ts:null,cDim:null,qid:null,currentlyLoading:null,side:null,$ic:null,
$binder:null,infoID:null,lastEnter:false,mouseCoor:{x:0,y:0},mouseIsOver:false,init:function(){this.$c.css("overflow","hidden");this.$c.css("position","relative");this.bindMouseEvents(this.$c);this.cached=[];this.ts=new f.fn.tn3.Transitions(this.config.transitions,this.config.defaultTransition,this.config.random,this,"onTransitionEnd")},bindMouseEvents:function(e){this.unbindMouseEvents();var a=this;e.hover(function(){a.mouseIsOver=true;a.enterLeave("enter");a.startIdle();f(document).mousemove(f.proxy(a.onMouseMove,
a))},function(){a.mouseIsOver=false;a.enterLeave("leave");a.stopIdle();f(document).unbind("mousemove",a.onMouseMove)});e[this.config.clickEvent](function(c){a.active==-1||a.isInTransition||c.target.tagName.toUpperCase()!="A"&&a.trigger("click",{n:a.active})});this.$binder=e},unbindMouseEvents:function(){this.$binder&&this.$binder.unbind("mouseenter mouseleave "+this.config.clickEvent);f(document).unbind("mousemove",this.onMouseMove);this.stopIdle()},startIdle:function(){this.stopIdle();var e=this;
if(this.config.idleDelay>0)this.infoID=setTimeout(function(){e.enterLeave("leave");e.stopIdle()},this.config.idleDelay)},onMouseMove:function(e){this.mouseCoor={x:e.pageX,y:e.pageY};if(!this.isInTransition){this.infoID||this.enterLeave("enter");this.startIdle()}},stopIdle:function(){clearTimeout(this.infoID);this.infoID=null},enterLeave:function(e){this.lastEnter!=e&&this.trigger(e);this.lastEnter=e},show:function(e){if(this.isInTransition)this.qid=e;else{this.qid=null;if(e=="next"){e=this.active+
1<this.data.length?this.active+1:0;this.side="left"}else if(e=="prev"){e=this.active>0?this.active-1:this.data.length-1;this.side="right"}else this.side=this.active>e?"right":"left";this.trigger("load_start",{n:e});this.$buffer=this.$c.prepend('<div class="'+this.config.cssID+'-image-in" style="position:absolute;overflow:hidden;"></div>').find(":first");if(this.cached[this.currentlyLoading]!=undefined)this.cached[this.currentlyLoading].init=false;if(this.cached[e]!=undefined)if(this.cached[e].status==
"loaded")this.initImage(this.cached[e].loader.$img,e);else{this.cached[e].init=true;this.currentlyLoading=e}else{this.cached[e]={status:"loading",init:true};this.currentlyLoading=e;this.cached[e].loader=new f.fn.tn3.ImageLoader(this.data[e].img,this,this.onCacheLoad,[e])}}},onCacheLoad:function(e,a,c){this.cached[a].status="loaded";c&&this.trigger("error",{description:c,n:a});this.cached[a].init&&this.initImage(e,a)},initImage:function(e,a){this.currentlyLoading=null;this.active=a;if(!this.cDim)this.cDim=
{w:this.$c.width(),h:this.$c.height()};this.$buffer.width(this.cDim.w).height(this.cDim.h);var c=f('<div class="'+this.config.cssID+'-full-image" style="position:absolute"></div>');e.appendTo(c);this.$buffer.append(c);this.$buffer.data("ic",c);this.$buffer.data("img",e);this.resize(this.$buffer);this.trigger("load_end",{n:a});if(this.$active!=false){this.isInTransition=true;this.unbindMouseEvents();if(this.mouseIsOver)f(document).mousemove(f.proxy(this.onMouseMove,this));else this.mouseCoor={x:0,
y:0};this.lastEnter="leave";this.ts.start(this.$active,this.$buffer,this.side)}else{this.$active=this.$buffer;this.trigger("transition",{n:this.active})}if(this.cached[a+1]==undefined&&this.data[a+1]!=undefined){this.cached[a+1]={status:"loading",init:false};this.cached[a+1].loader=new f.fn.tn3.ImageLoader(this.data[a+1].img,this,this.onCacheLoad,[a+1])}},setSize:function(e,a){this.isInTransition&&this.ts.stop(this.$active,this.$buffer,this.ts.config);this.$c.width(e).height(a);this.cDim={w:this.$c.width(),
h:this.$c.height()};if(this.$active){this.$active.width(e).height(a);this.resize(this.$active)}},resize:function(e){$img=e.data("img");if($img==undefined)this.trigger("resize",{w:this.cDim.w,h:this.cDim.h,left:0,top:0});else{$ic=e.data("ic");$img.width("").height("");e.data("scaled",false);var a=$img.width(),c=$img.height(),d=0,b=0,g={w:a,h:c,left:0,top:0};if(a!=this.cDim.w||c!=this.cDim.h){d=this.cDim.w/a;b=this.cDim.h/c;d=this.config.crop?Math.max(d,b):Math.min(d,b);d=Math.min(this.config.maxZoom,
d);a=g.w=Math.round(a*d)-this.config.dif;c=g.h=Math.round(c*d)-this.config.dif;if(this.cDim.w>=a)d=g.left=(this.cDim.w-a)/2;else{d=-(a-this.cDim.w)*0.5;g.w=this.cDim.w}if(this.cDim.h>c)b=g.top=(this.cDim.h-c)/2;else{b=-(c-this.cDim.h)*0.5;g.h=this.cDim.h}$img.width(a).height(c);$ic.width(a).height(c);e.data("scaled",true)}$ic.css("left",d).css("top",b);this.bindMouseEvents($ic);this.trigger("resize",g)}},onTransitionEnd:function(){this.$active.remove();this.$active=this.$buffer;this.isInTransition=
false;this.trigger("transition",{n:this.active});this.bindMouseEvents(this.$binder);var e=this.$binder.offset();this.mouseIsOver=false;if(this.mouseCoor.x>=e.left&&this.mouseCoor.x<=e.left+this.$binder.width())if(this.mouseCoor.y>=e.top&&this.mouseCoor.y<=e.top+this.$binder.height()){this.lastEnter="leave";this.enterLeave("enter");this.startIdle();this.mouseIsOver=true;f(document).mousemove(f.proxy(this.onMouseMove,this))}this.qid!=null&&this.show(this.qid)},trigger:function(e,a){var c=f.Event("img_"+
e),d;for(d in a)c[d]=a[d];c.source=this;this.$c.trigger(c);this.config[e]&&this.config[e].call(this,c)},destroy:function(){this.isInTransition&&this.ts.stop(this.$active,this.$buffer);this.$active&&this.$active.remove();this.$buffer.remove()},rebuild:function(e){this.quid=null;this.isInTransition&&this.ts.stop(this.$active,this.$buffer);this.$buffer.remove();this.cached=[];this.data=e;this.loader&&this.loader.cancel()}}})(jQuery);
(function(f){f.fn.tn3.Thumbnailer=function(e,a,c){this.$c=e;this.data=a;this.config=f.extend({},f.fn.tn3.Thumbnailer.config,c);this.init()};f.fn.tn3.Thumbnailer.config={overMove:true,buffer:20,speed:8,slowdown:50,shaderColor:"#000000",shaderOpacity:0.5,shaderDuration:300,shaderOut:300,useTitle:false,seqLoad:true,align:1,mode:"thumbs",cssID:"tn3"};f.fn.tn3.Thumbnailer.prototype={config:null,$c:null,$oc:null,$ul:null,data:null,active:-1,listSize:0,containerSize:0,containerPadding:0,noBufSize:0,containerOffset:0,
mcoor:"mouseX",edge:"left",size:"width",outerSize:"outerWidth",mouseX:0,mouseY:0,intID:false,pos:0,difference:0,cnt:1,thumbCount:-1,initialized:false,clickWhenReady:-1,loaders:null,lis:null,isVertical:null,marginDif:0,nloaded:0,init:function(){this.$c.css("position","absolute").css("cursor","progress");this.lis=[];this.loaders=[];this.initialized=false;this.$oc=f("<div />");this.$ul=f("<ul />");this.$oc.appendTo(this.$c);this.$oc.css("position","absolute").css("overflow","hidden").width(this.$c.width()).height(this.$c.height());
this.$ul.appendTo(this.$oc);this.$ul.css("position","relative").css("margin","0px").css("padding","0px").css("border-width","0px").css("width","12000px").css("list-style","none");if(this.isVertical==null){this.isVertical=this.$c.width()<this.$c.height();if(this.isVertical=false){this.mcoor="mouseY";this.edge="top";this.size="height";this.outerSize="outerHeight"}else{this.mcoor="mouseX";this.edge="left";this.size="width";this.outerSize="outerWidth"}this.containerSize=this.$oc[this.size]();this.noBufSize=
this.containerSize-2*this.config.buffer;this.containerOffset=this.$oc.offset()[this.edge];this.containerPadding=parseInt(this.$c.css("padding-"+this.edge))}this.listSize=0;if(navigator.userAgent.indexOf("MSIE")!=-1)this.config.seqLoad=false;this.loadNextThumb()},loadNextThumb:function(){this.thumbCount++;var e=this.$ul.append("<li></li>").find(":last");if(this.config.mode=="thumbs"){var a=this.data[this.thumbCount].thumb;if(a){this.loaders.push(new f.fn.tn3.ImageLoader(a,this,this.onLoadThumb,[e,
this.thumbCount]));!this.config.seqLoad&&this.thumbCount<this.data.length-1&&this.loadNextThumb();return}else this.config.mode="bullets"}this.config.mode=="numbers"&&e.text(this.thumbCount+1);this.onLoadThumb(null,e,this.thumbCount)},onLoadThumb:function(e,a,c,d){this.lis[c]={li:a};a.addClass(this.config.cssID+"-thumb");a.css("float",this.isVertical?"none":"left");if(e){var b=this.lis[c].thumb=a.append(e).find(":last");this.lis[c].pos=a.position()[this.edge]}this.config.useTitle&&a.attr("title",this.data[c].title);
if(this.config.mode=="thumbs"){this.lis[c].shade=a.prepend("<div/>").find(":first");this.lis[c].shade.css("background-color",this.config.shaderColor).css("width",b.width()).css("height",b.height()).css("position","absolute")}this.initThumb(c);a.css("opacity",0);a.animate({opacity:1},1E3);this.listSize+=a[this.outerSize](true);if(!this.initialized){this.initialized=true;this.initMouse(true)}d&&this.trigger("error",{description:d,n:c});this.trigger("thumbLoad",{n:c});this.nloaded++;if(this.nloaded<
this.data.length){if(this.config.seqLoad||this.config.mode!="thumbs")this.loadNextThumb()}else{if(e)this.loaders=null;if(!this.config.seqLoad)for(e=0;e<this.lis.length;e++)this.lis[e].pos=this.lis[e].li.position()[this.edge];this.thumbsLoaded()}if(this.clickWhenReady==c){this.clickWhenReady=-1;this.thumbClick(c)}},initThumb:function(e){var a=this.lis[e];if(a.li){a.li.removeClass().addClass(this.config.cssID+"-thumb");if(a.shade){a.shade.stop();a.shade.css("opacity",this.config.shaderOpacity)}var c=
this;a.li.click(function(){c.thumbClick(e);c.trigger("click",{n:e});return false});this.config.mode!="thumbs"&&a.li.hover(function(){c.mouseOver(e)},function(){c.mouseOver(-1)})}},lastOver:-1,mouseOver:function(e){if(e!=this.lastOver){if(this.lastOver!=-1&&this.lastOver!=this.active){a=this.lis[this.lastOver];a.li.removeClass(this.config.cssID+"-thumb-over");if(a.shade){a.shade.stop();a.shade.animate({opacity:this.config.shaderOpacity},{duration:this.config.shaderOut,easing:"easeOutCubic",queue:false})}this.trigger("thumbOut",
{n:e})}this.lastOver=e;if(!(e==-1||e==this.active)){var a=this.lis[e];a.li.addClass(this.config.cssID+"-thumb-over");if(a.shade){a.shade.stop();a.shade.animate({opacity:0},{duration:this.config.shaderDuration,easing:"easeOutCubic",queue:false})}this.trigger("thumbOver",{n:e})}}},next:function(e){if(e)this.listSize>this.containerSize&&this.move(this.$ul.position()[this.edge]-this.containerSize);else{e=this.active+1;if(this.active==-1||this.active+1==this.data.length)e=0;this.thumbClick(e)}},prev:function(e){if(e)this.listSize>
this.containerSize&&this.move(this.$ul.position()[this.edge]+this.containerSize);else{e=this.active-1;if(this.active==-1||this.active==0)e=this.data.length-1;this.thumbClick(e)}},move:function(e){var a={};a[this.edge]=Math.min(0,Math.max(e,-(this.listSize-this.containerSize)));this.$ul.stop();this.$ul.animate(a,300)},thumbClick:function(e){if(this.active==-1){if(this.thumbCount<=e||this.lis.length<=e){this.clickWhenReady=e;return}}else if(e==this.active)return;else this.initThumb(this.active);if(e==
"next")e=this.active+1<this.data.length?this.active+1:0;else if(e=="prev")e=this.active>0?this.active-1:this.data.length-1;var a=this.lis[e];a.li.addClass(this.config.cssID+"-thumb-selected").unbind("click mouseenter mouseleave");a.shade&&a.shade.animate({opacity:0},this.config.shaderDuration);this.active=e;this.centerActive()},centerActive:function(e){if(this.active!=-1){var a=this.lis[this.active].li,c=this.$ul.position()[this.edge]+a.position()[this.edge],d=a[this.outerSize]()/2;if(c+d>this.containerSize||
c+d<0){a=10-a.position()[this.edge]+this.containerSize/2-d;a=Math.min(0,a);a=Math.max(a,-this.listSize+this.containerSize);c={};c[this.edge]=a;e?this.$ul.css(c):this.$ul.animate(c,200)}}},thumbsLoaded:function(){this.$c.css("cursor","auto");this.$ul.css("width",this.listSize+"px");this.centerList();this.trigger("load")},centerList:function(e){if(this.listSize<this.containerSize){var a={};a[this.edge]=this.config.align?this.config.align==1?(this.containerSize-this.listSize)/2:this.containerSize-this.listSize:
0;e||this.config.mode!="thumbs"?this.$ul.css(a):this.$ul.animate(a,300)}else{this.centerActive(e);if(this.$ul.position()[this.edge]>0)this.$ul.css(this.edge,0);else this.$ul.position()[this.edge]+this.listSize<this.containerSize&&this.$ul.css(this.edge,-(this.listSize-this.containerSize))}},initMouse:function(e){if(this.config.mode=="thumbs"){e=e?"bind":"unbind";this.$oc[e]("mouseenter",f.proxy(this.mouseenter,this));this.$oc[e]("mouseleave",f.proxy(this.mouseleave,this))}},mouseenter:function(){this.trigger("over");
clearInterval(this.intID);var e=this;this.$ul.stop();this.$c.mousemove(this.mcoor=="mouseX"?function(a){e.mouseX=a.pageX-e.containerOffset}:function(a){e.mouseY=a.pageY-e.containerOffset});this.marginDif=parseInt(this.lis[0].li.css("margin-"+this.edge));if(isNaN(this.marginDif))this.marginDif=0;e.intID=this.listSize>this.containerSize&&this.config.overMove?setInterval(function(){e.slide.call(e)},10):setInterval(function(){e.mouseTrack.call(e)},10)},mouseleave:function(){this.trigger("out");this.$c.unbind("mousemove");
clearInterval(this.intID);var e=this;this.intID=setInterval(function(){e.slideOut.call(e)},10);this.mouseOver(-1)},slide:function(){this.cnt=1;var e=this[this.mcoor];if(e<=this.config.buffer)this.pos=0;else if(e>=this.containerSize-this.config.buffer)this.pos=this.containerSize-this.listSize-1;else{var a=this.containerSize*(e-this.config.buffer);a/=this.noBufSize;this.pos=a*(1-this.listSize/this.containerSize)}for(a=this.lis.length-1;a>-1;a--){var c=e-this.prevdx;if(c>=this.lis[a].pos&&c<this.lis[a].pos+
this.lis[a].li.width()){this.mouseOver(a);break}}e=this.prevdx-this.marginDif;this.difference=e-this.pos;e=Math.round(e-this.difference/this.config.speed);if(this.prevdx!=e){this.$ul.css(this.edge,e);this.prevdx=e}},prevdx:0,mouseTrack:function(){for(var e=this[this.mcoor],a=this.lis.length-1;a>-1;a--){var c=e-this.$ul.position()[this.edge];if(c>=this.lis[a].pos&&c<this.lis[a].pos+this.lis[a].li.width()){this.mouseOver(a);break}}},slideOut:function(){if(this.config.slowdown!=0&&this.difference!=0){var e=
this.$ul.position()[this.edge];this.difference=e-this.pos;this.$ul.css(this.edge,e-this.difference/(this.config.speed*this.cnt));this.cnt*=1+4/this.config.slowdown;if(this.cnt>=40){this.difference=0;this.cnt=1}}else{clearInterval(this.intID);this.intID=null}},trigger:function(e,a){var c=f.Event("tn_"+e),d;for(d in a)c[d]=a[d];c.source=this;this.$c.trigger(c);this.config[e]&&this.config[e].call(this,c)},destroy:function(){clearInterval(this.intID);this.$c.empty()},rebuild:function(e){clearInterval(this.intID);
this.$c.empty();this.data=e;this.active=this.thumbCount=-1;this.nloaded=0;this.initMouse(false);this.loaders!==null&&f.each(this.loaders,function(a,c){c.cancel()});this.init()},setSize:function(e,a){this.isVertical?this.$c.height(a):this.$c.width(e);this.$oc.width(this.$c.width()).height(this.$c.height());this.containerSize=this.$oc[this.size]();this.noBufSize=this.containerSize-2*this.config.buffer;this.containerOffset=this.$oc.offset()[this.edge];this.initMouse(true);this.loaders===null&&this.centerList(true)}}})(jQuery);
(function(f){f.fn.tn3.altLink=null;f.fn.tn3.ImageLoader=function(e,a,c,d){this.$img=f(new Image);d.unshift(this.$img);this.altLink=f.fn.tn3.altLink;a={url:e,context:a,callback:c,args:d};this.$img.bind("load",a,this.load);this.$img.bind("error",a,f.proxy(this.error,this));this.$img.attr("src",e)};f.fn.tn3.ImageLoader.prototype={$img:null,altLink:null,load:function(e){e.data.callback.apply(e.data.context,e.data.args);e.data.args[0].unbind("load").unbind("error")},error:function(e){if(this.altLink){this.altLink=
null;this.$img.attr("src",f.fn.tn3.altLink+"?u="+e.data.url)}else{e.data.args.push("image loading error: "+e.data.url);e.data.callback.apply(e.data.context,e.data.args);this.$img.unbind("load").unbind("error")}},cancel:function(){this.$img.unbind("load").unbind("error")}}})(jQuery);
(function(f){f.fn.tn3.Timer=function(e,a,c){this.$target=e;this.duration=a;this.tickint=c};f.fn.tn3.Timer.prototype={$target:null,duration:null,id:null,runs:false,counter:null,countDuration:null,tickid:null,ticks:null,tickint:500,start:function(){if(!this.runs){this.runs=true;this.startCount(this.duration);this.trigger("timer_start")}},startCount:function(e){this.clean();this.countDuration=e;this.counter=+new Date;var a=this;this.id=setTimeout(function(){a.clean.call(a);a.runs=false;a.trigger.call(a,
"timer_end")},e);var c=this.duration/this.tickint;this.ticks=Math.round(e/c);this.tickid=setInterval(function(){a.ticks=Math.ceil((e-new Date+a.counter)/c);a.ticks>0&&a.trigger.call(a,"timer_tick",{tick:a.ticks,totalTicks:a.tickint})},c);this.trigger("timer_tick",{tick:this.ticks,totalTicks:this.tickint})},stop:function(){this.clean();this.runs=false;this.trigger("timer_stop")},clean:function(){clearTimeout(this.id);this.id=null;clearInterval(this.tickid);this.elapsed=this.tickid=null},elapsed:null,
pause:function(e){if(this.runs)if(e){this.clean();e=this.duration/this.tickint;this.elapsed=Math.floor((+new Date-this.counter)/e)*e}else if(this.elapsed!=null){this.startCount(this.countDuration-this.elapsed);this.elapsed=null}},trigger:function(e,a){var c=f.Event(e),d;for(d in a)c[d]=a[d];this.$target.trigger(c)}}})(jQuery);
(function(f){var e=f.fn.tn3.Transitions=function(c,d,b,g,i){this.ts=c;this.def=f.extend(true,{},this[d.type+"Config"],d);if(!c)this.ts=[this.def];for(var n in this.ts)this.ts[n]=f.extend(true,{},this[this.ts[n].type+"Config"],this.ts[n]);this.random=b;this.end=f.proxy(g,i)},a=e.prototype={ts:null,def:{type:"slide"},random:false,gs:[],end:null,ct:null,counter:-1,setTransition:function(){if(this.ts.length==1)this.ct=this.ts[0];else{this.counter++;if(this.counter==this.ts.length)this.counter=0;this.random&&
this.counter==0&&f.fn.tn3utils.shuffle(this.ts);this.ct=this.ts[this.counter]}},start:function(c,d,b){this.setTransition();if(this[this.ct.type+"Condition"]!==undefined&&!this[this.ct.type+"Condition"](c,d,this.ct))this.ct=this.def;this[this.ct.type](c,d,this.ct,b)},stop:function(c,d){this[this.ct.type+"Stop"](c,d,this.ct)},makeGrid:function(c,d,b){var g=c.width(),i=Math.round(g/d);g=g-i*d;var n=c.height(),k=Math.round(n/b);n=n-k*b;var h,j,l,m,p,q=0,r=0,t="url("+c.find("img").attr("src")+") no-repeat scroll -";
for(h=0;h<d;h++){this.gs[h]=[];m=g>h?i+1:i;for(j=0;j<b;j++){l=c.append("<div></div>").find(":last");p=n>j?k+1:k;l.width(m).height(p).css("background",t+q+"px -"+r+"px").css("left",q).css("top",r).css("position","absolute");this.gs[h].push(l);r+=p}q+=m;r=0}c.find("img").remove()},stopGrid:function(){for(var c=0;c<this.gs.length;c++)for(var d=0;d<this.gs[c].length;d++){this.gs[c][d].clearQueue();this.gs[c][d].remove()}this.gs=[]},flatSort:function(c){for(var d=[],b=0;b<this.gs.length;b++)for(var g=
0;g<this.gs[b].length;g++)d.push(this.gs[b][g]);c&&d.reverse();return d},randomSort:function(){var c=this.flatSort();f.fn.tn3utils.shuffle(c);return c},diagonalSort:function(c,d){for(var b=[],g=c>0?this.gs.length-1:0,i=d>0?0:this.gs[0].length-1;this.gs[g];){b.push(this.addDiagonal([],g,i,c,d));g-=c}g+=c;for(i+=d;this.gs[g][i];){b.push(this.addDiagonal([],g,i,c,d));i+=d}return b},addDiagonal:function(c,d,b,g,i){c.push(this.gs[d][b]);return this.gs[d+g]&&this.gs[d+g][b+i]?this.addDiagonal(c,d+g,b+i,
g,i):c},circleSort:function(c){var d=[],b=this.gs.length,g=this.gs[0].length,i=[Math.floor(b/2),Math.floor(g/2)];b=b*g;g=[[1,0],[0,1],[-1,0],[0,-1]];var n=0,k=0,h;for(d.push(this.gs[i[0]][i[1]]);d.length<b;){for(h=0;h<=n;h++)this.addGridPiece(d,i,g[k]);if(k==g.length-1)k=0;else k++;n+=0.5}c&&d.reverse();return d},addGridPiece:function(c,d,b){d[0]+=b[0];d[1]+=b[1];this.gs[d[0]]&&this.gs[d[0]][d[1]]&&c.push(this.gs[d[0]][d[1]])},getSlidePositions:function(c,d){var b={dir:d};switch(d){case "left":b.pos=
c.outerWidth(true);break;case "right":b.pos=-c.outerWidth(true);b.dir="left";break;case "top":b.pos=-c.outerHeight(true);break;case "bottom":b.pos=c.outerHeight(true);b.dir="top"}return b},animateGrid:function(c,d,b,g,i,n,k){var h={duration:g,easing:b,complete:function(){f(this).remove()}};for(b=0;b<c.length;b++){g=f.easing[i](0,b,0,n,c.length);if(b==c.length-1){var j=this;h.complete=function(){f(this).remove();k.call(j)}}if(f.isArray(c[b]))for(var l in c[b])c[b][l].delay(g).animate(d[b],h);else c[b].delay(g).animate(d[b],
h)}},getValueArray:function(c,d,b){var g=[],i=f.isArray(d),n=f.isArray(b),k;for(k=0;k<c;k++){o={};o[i?d[k%d.length]:d]=n?b[k%b.length]:b;g.push(o)}return g}};e.defined=[];e.define=function(c){for(var d in c)switch(d){case "type":e.defined.push(c.type);break;case "config":a[c.type+"Config"]=c.config;break;case "f":a[c.type]=c.f;break;case "stop":a[c.type+"Stop"]=c.stop;break;case "condition":a[c.type+"Condition"]=c.condition;break;default:a[d]=c[d]}};e.define({type:"none",config:{},f:function(){this.end()},
stop:function(){this.end()}});e.define({type:"fade",config:{duration:300,easing:"easeInQuad"},f:function(c,d,b){var g=this;c.animate({opacity:0},b.duration,b.easing,function(){g.end()})},stop:function(c){c.stop();this.end()}});e.define({type:"slide",config:{duration:300,direction:"auto",easing:"easeInOutCirc"},f:function(c,d,b,g){g=this.getSlidePositions(d,b.direction=="auto"?g:b.direction);var i={},n={};d.css(g.dir,g.pos);i[g.dir]=0;d.animate(i,b.duration,b.easing,this.end);n[g.dir]=-g.pos;c.animate(n,
b.duration,b.easing)},stop:function(c,d){d.stop();c.stop();c.css("left",0).css("top",0);d.css("left",0).css("top",0);this.end()}});e.define({type:"blinds",config:{duration:240,easing:"easeInQuad",direction:"vertical",parts:12,partDuration:100,partEasing:"easeInQuad",method:"fade",partDirection:"auto",cross:true},f:function(c,d,b,g){b.direction=="horizontal"?this.makeGrid(c,1,b.parts):this.makeGrid(c,b.parts,1);g=b.partDirection=="auto"?g:b.partDirection;c=this.flatSort(g=="left"||g=="top");var i;
switch(b.method){case "fade":i=this.getValueArray(c.length,"opacity",0);break;case "scale":i=this.getValueArray(c.length,g=="left"?"width":"height","1px");break;case "slide":d=this.getSlidePositions(d,g);i=this.getValueArray(c.length,d.dir,b.cross?[d.pos,-d.pos]:d.pos)}this.animateGrid(c,i,b.partEasing,b.partDuration,b.easing,b.duration,this.blindsStop)},stop:function(){this.stopGrid();this.end()},condition:function(c,d){return!c.data("scaled")||!d.data("scaled")}});e.define({type:"grid",config:{duration:260,
easing:"easeInQuad",gridX:7,gridY:5,sort:"diagonal",sortReverse:false,diagonalStart:"bl",method:"fade",partDuration:300,partEasing:"easeOutSine",partDirection:"left"},f:function(c,d,b,g){this.makeGrid(c,b.gridX,b.gridY);c=b.partDirection=="auto"?g:b.partDirection;var i,n;if(b.sort=="diagonal")switch(b.diagonalStart){case "tr":i=this.diagonalSort(1,1);break;case "tl":i=this.diagonalSort(-1,1);break;case "br":i=this.diagonalSort(1,-1);break;case "bl":i=this.diagonalSort(-1,-1)}else i=this[b.sort+"Sort"](b.sortReverse);
switch(b.method){case "fade":n=this.getValueArray(i.length,"opacity",0);break;case "scale":n=this.getValueArray(i.length,c=="left"?"width":"height","1px")}this.animateGrid(i,n,b.partEasing,b.partDuration,b.easing,b.duration,this.gridStop)},stop:function(){this.stopGrid();this.end()},condition:function(c,d){return!c.data("scaled")||!d.data("scaled")}})})(jQuery);
(function(f){function e(h){var j=h&&h.message!==undefined?h.message:undefined;h=f.extend({},f.tn3block.defaults,h||{});j=j===undefined?h.message:j;k&&a({});var l=h.baseZ,m=f.browser.msie||h.forceIframe?f('<iframe class="blockUI" style="z-index:'+l++ +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+h.iframeSrc+'"></iframe>'):f('<div class="blockUI" style="display:none"></div>'),p=f('<div class="blockUI '+h.cssID+'-overlay" style="z-index:'+
l++ +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');l=f('<div class="blockUI '+h.blockMsgClass+' blockPage" style="z-index:'+l+';display:none;position:fixed"></div>');l.css("left","0px").css("top","0px");if(!h.applyPlatformOpacityRules||!(f.browser.mozilla&&/Linux/.test(navigator.platform)))p.css(h.overlayCSS);p.css("position","fixed");if(f.browser.msie||h.forceIframe)m.css("opacity",0);var q=[m,p,l],r=f("body");f.each(q,function(){this.appendTo(r)});q=
i&&(!f.boxModel||f("object,embed",null).length>0);if(n||q){h.allowBodyStretch&&f.boxModel&&f("html,body").css("height","100%");f.each([m,p,l],function(t,u){var s=u[0].style;s.position="absolute";if(t<2){s.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight)- (jQuery.boxModel?0:"+h.quirksmodeOffsetHack+') + "px"');s.setExpression("width",'jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')}else if(h.centerY){s.setExpression("top",
'(document.documentElement.clientHeight || document.body.clientHeight) / 2- (this.offsetHeight / 2)+ (blah = document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop)+ "px"');s.marginTop=0}else h.centerY||s.setExpression("top",'(document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"')})}if(j){j.data("blockUI.parent",j.parent());l.append(j);if(j.jquery||j.nodeType)f(j).show()}if((f.browser.msie||h.forceIframe)&&
h.showOverlay)m.show();h.showOverlay&&p.show();j&&l.show();h.onBlock&&h.onBlock();d(1,h);k=j}function a(h){h=f.extend({},f.tn3block.defaults,h||{});d(0,h);var j=f("body").children().filter(".blockUI").add("body > .blockUI");c(j,h)}function c(h,j){h.each(function(){this.parentNode&&this.parentNode.removeChild(this)});k.data("blockUI.parent").append(k);k=null;typeof j.onUnblock=="function"&&j.onUnblock.call(j.con)}function d(h,j){if(h||k)!j.bindEvents||h&&!j.showOverlay||(h?f(document).bind("mousedown mouseup keydown keypress",
j,b):f(document).unbind("mousedown mouseup keydown keypress",b))}function b(h){var j=h.data;if(f(h.target).parents("div."+j.blockMsgClass).length>0)return true;return f(h.target).parents().children().filter("div.blockUI").length==0}var g=document.documentMode||0,i=f.browser.msie&&(f.browser.version<8&&!g||g<8),n=f.browser.msie&&/MSIE 6.0/.test(navigator.userAgent)&&!g;f.tn3block=function(h){e(h)};f.tn3unblock=function(h){a(h)};var k=undefined;f.tn3block.defaults={message:"<h1>Please wait...</h1>",
overlayCSS:{},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:false,baseZ:1E3,allowBodyStretch:true,bindEvents:true,showOverlay:true,applyPlatformOpacityRules:true,onBlock:null,onUnblock:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",cssID:"tn3"}})(jQuery);
(function(f){(f.fn.tn3.External=function(e,a){if(e){this.context=a;this.reqs=e.length;for(var c=0;c<e.length;c++)new f.fn.tn3.External[e[c].origin](e[c],this)}}).prototype={context:null,reqs:0,getImages:function(e,a){e.origin.getImages(e,a)},setAlbumData:function(e,a){this.reqs--;this.context.setAlbumData.call(this.context,e,a)},setImageData:function(e,a,c){this.context.setImageData.call(this.context,e,a,c)}}})(jQuery);
;
/*!
 * 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/
 */

(function(g){var q={vertical:!1,rtl:!1,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},m=!1;g(window).bind("load.jcarousel",function(){m=!0});g.jcarousel=function(a,c){this.options=g.extend({},q,c||{});this.autoStopped=this.locked=!1;this.buttonPrevState=this.buttonNextState=this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===void 0)this.options.rtl=(g(a).attr("dir")||g("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical? this.options.rtl?"right":"left":"top";for(var b="",d=a.className.split(" "),f=0;f<d.length;f++)if(d[f].indexOf("jcarousel-skin")!=-1){g(a).removeClass(d[f]);b=d[f];break}a.nodeName.toUpperCase()=="UL"||a.nodeName.toUpperCase()=="OL"?(this.list=g(a),this.clip=this.list.parents(".jcarousel-clip"),this.container=this.list.parents(".jcarousel-container")):(this.container=g(a),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();b!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+b+'"></div>');this.buttonPrev=g(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null)this.buttonPrev=g(this.options.buttonPrevHTML).appendTo(this.container);this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext= g(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null)this.buttonNext=g(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"}); !this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var j=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null,b=this.list.children("li"),e=this;if(b.size()>0){var h=0,i=this.options.offset;b.each(function(){e.format(this,i++);h+=e.dimension(this,j)});this.list.css(this.wh,h+100+"px");if(!c||c.size===void 0)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display", "block");this.funcNext=function(){e.next()};this.funcPrev=function(){e.prev()};this.funcResize=function(){e.resizeTimer&&clearTimeout(e.resizeTimer);e.resizeTimer=setTimeout(function(){e.reload()},100)};this.options.initCallback!==null&&this.options.initCallback(this,"init");!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):this.setup()};var f=g.jcarousel;f.fn=f.prototype={jcarousel:"0.2.8"};f.fn.extend=f.extend=g.extend;f.fn.extend({setup:function(){this.prevLast= this.prevFirst=this.last=this.first=null;this.animating=!1;this.tail=this.resizeTimer=this.timer=null;this.inTail=!1;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start,!0);this.prevFirst=this.prevLast=null;this.animate(a,!1);g(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize);this.options.setupCallback!==null&&this.options.setupCallback(this)}},reset:function(){this.list.empty();this.list.css(this.lt, "0px");this.list.css(this.wh,"10px");this.options.initCallback!==null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!==null&&this.inTail&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=!1;this.options.reloadCallback!==null&&this.options.reloadCallback(this);if(this.options.visible!==null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0;this.list.children("li").each(function(f){b+=a.dimension(this, c);f+1<a.first&&(d=b)});this.list.css(this.wh,b+"px");this.list.css(this.lt,-d+"px")}this.scroll(this.first,!1)},lock:function(){this.locked=!0;this.buttons()},unlock:function(){this.locked=!1;this.buttons()},size:function(a){if(a!==void 0)this.options.size=a,this.locked||this.buttons();return this.options.size},has:function(a,c){if(c===void 0||!c)c=a;if(this.options.size!==null&&c>this.options.size)c=this.options.size;for(var b=a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return!1}return!0}, get:function(a){return g(">.jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,p=g(c);if(b.length===0)for(var j,e=f.intval(a),b=this.create(a);;){if(j=this.get(--e),e<=0||j.length){e<=0?this.list.prepend(b):j.after(b);break}}else d=this.dimension(b);p.get(0).nodeName.toUpperCase()=="LI"?(b.replaceWith(p),b=p):b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")),a);p=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible): null;d=this.dimension(b,p)-d;a>0&&a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))-d+"px");this.list.css(this.wh,f.intval(this.list.css(this.wh))+d+"px");return b},remove:function(a){var c=this.get(a);if(c.length&&!(a>=this.first&&a<=this.last)){var b=this.dimension(c);a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+b+"px");c.remove();this.list.css(this.wh,f.intval(this.list.css(this.wh))-b+"px")}},next:function(){this.tail!==null&&!this.inTail?this.scrollTail(!1): 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)},prev:function(){this.tail!==null&&this.inTail?this.scrollTail(!0):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)},scrollTail:function(a){if(!this.locked&&!this.animating&&this.tail){this.pauseAuto();var c=f.intval(this.list.css(this.lt)), c=!a?c-this.tail:c+this.tail;this.inTail=!a;this.prevFirst=this.first;this.prevLast=this.last;this.animate(c)}},scroll:function(a,c){!this.locked&&!this.animating&&(this.pauseAuto(),this.animate(this.pos(a),c))},pos:function(a,c){var b=f.intval(this.list.css(this.lt));if(this.locked||this.animating)return b;this.options.wrap!="circular"&&(a=a<1?1:this.options.size&&a>this.options.size?this.options.size:a);for(var d=this.first>a,g=this.options.wrap!="circular"&&this.first<=1?1:this.first,j=d?this.get(g): this.get(this.last),e=d?g:g-1,h=null,i=0,k=!1,l=0;d?--e>=a:++e<a;){h=this.get(e);k=!h.length;if(h.length===0&&(h=this.create(e).addClass(this.className("jcarousel-item-placeholder")),j[d?"before":"after"](h),this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size)))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)));j=h;l=this.dimension(h);k&&(i+=l);if(this.first!==null&&(this.options.wrap=="circular"||e>=1&&(this.options.size===null||e<= this.options.size)))b=d?b+l:b-l}for(var g=this.clipping(),m=[],o=0,n=0,j=this.get(a-1),e=a;++o;){h=this.get(e);k=!h.length;if(h.length===0){h=this.create(e).addClass(this.className("jcarousel-item-placeholder"));if(j.length===0)this.list.prepend(h);else j[d?"before":"after"](h);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)))}j=h;l=this.dimension(h);if(l===0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting..."); this.options.wrap!="circular"&&this.options.size!==null&&e>this.options.size?m.push(h):k&&(i+=l);n+=l;if(n>=g)break;e++}for(h=0;h<m.length;h++)m[h].remove();i>0&&(this.list.css(this.wh,this.dimension(this.list)+i+"px"),d&&(b-=i,this.list.css(this.lt,f.intval(this.list.css(this.lt))-i+"px")));i=a+o-1;if(this.options.wrap!="circular"&&this.options.size&&i>this.options.size)i=this.options.size;if(e>i){o=0;e=i;for(n=0;++o;){h=this.get(e--);if(!h.length)break;n+=this.dimension(h);if(n>=g)break}}e=i-o+ 1;this.options.wrap!="circular"&&e<1&&(e=1);if(this.inTail&&d)b+=this.tail,this.inTail=!1;this.tail=null;if(this.options.wrap!="circular"&&i==this.options.size&&i-o+1>=1&&(d=f.intval(this.get(i).css(!this.options.vertical?"marginRight":"marginBottom")),n-d>g))this.tail=n-g-d;if(c&&a===this.options.size&&this.tail)b-=this.tail,this.inTail=!0;for(;a-- >e;)b+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=e;this.last=i;return b},animate:function(a,c){if(!this.locked&& !this.animating){this.animating=!0;var b=this,d=function(){b.animating=!1;a===0&&b.list.css(b.lt,0);!b.autoStopped&&(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size===null||b.last<b.options.size||b.last==b.options.size&&b.tail!==null&&!b.inTail)&&b.startAuto();b.buttons();b.notify("onAfterAnimation");if(b.options.wrap=="circular"&&b.options.size!==null)for(var c=b.prevFirst;c<=b.prevLast;c++)c!==null&&!(c>=b.first&&c<=b.last)&&(c<1||c>b.options.size)&&b.remove(c)}; this.notify("onBeforeAnimation");if(!this.options.animation||c===!1)this.list.css(this.lt,a+"px"),d();else{var f=!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},d={duration:this.options.animation,easing:this.options.easing,complete:d};if(g.isFunction(this.options.animationStepCallback))d.step=this.options.animationStepCallback;this.list.animate(f,d)}}},startAuto:function(a){if(a!==void 0)this.options.auto=a;if(this.options.auto===0)return this.stopAuto();if(this.timer===null){this.autoStopped= !1;var c=this;this.timer=window.setTimeout(function(){c.next()},this.options.auto*1E3)}},stopAuto:function(){this.pauseAuto();this.autoStopped=!0},pauseAuto:function(){if(this.timer!==null)window.clearTimeout(this.timer),this.timer=null},buttons:function(a,c){if(a==null&&(a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size===null||this.last<this.options.size),!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!==null&& this.last>=this.options.size))a=this.tail!==null&&!this.inTail;if(c==null&&(c=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1),!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1))c=this.tail!==null&&this.inTail;var b=this;this.buttonNext.size()>0?(this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext),a&&this.buttonNext.bind(this.options.buttonNextEvent+".jcarousel",this.funcNext), this.buttonNext[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?!1:!0),this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a)):this.options.buttonNextCallback!==null&&this.buttonNextState!=a&&this.options.buttonNextCallback(b,null,a);this.buttonPrev.size()>0?(this.buttonPrev.unbind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev), c&&this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev),this.buttonPrev[c?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?!1:!0),this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)):this.options.buttonPrevCallback!==null&&this.buttonPrevState!=c&&this.options.buttonPrevCallback(b,null,c);this.buttonNextState= a;this.buttonPrevState=c},notify:function(a){var c=this.prevFirst===null?"init":this.prevFirst<this.first?"next":"prev";this.callback("itemLoadCallback",a,c);this.prevFirst!==this.first&&(this.callback("itemFirstInCallback",a,c,this.first),this.callback("itemFirstOutCallback",a,c,this.prevFirst));this.prevLast!==this.last&&(this.callback("itemLastInCallback",a,c,this.last),this.callback("itemLastOutCallback",a,c,this.prevLast));this.callback("itemVisibleInCallback",a,c,this.first,this.last,this.prevFirst, this.prevLast);this.callback("itemVisibleOutCallback",a,c,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(a,c,b,d,f,j,e){if(!(this.options[a]==null||typeof this.options[a]!="object"&&c!="onAfterAnimation")){var h=typeof this.options[a]=="object"?this.options[a][c]:this.options[a];if(g.isFunction(h)){var i=this;if(d===void 0)h(i,b,c);else if(f===void 0)this.get(d).each(function(){h(i,this,d,b,c)});else for(var a=function(a){i.get(a).each(function(){h(i,this,a,b,c)})},k=d;k<=f;k++)k!== null&&!(k>=j&&k<=e)&&a(k)}}},create:function(a){return this.format("<li></li>",a)},format:function(a,c){for(var a=g(a),b=a.get(0).className.split(" "),d=0;d<b.length;d++)b[d].indexOf("jcarousel-")!=-1&&a.removeClass(b[d]);a.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+c)).css({"float":this.options.rtl?"right":"left","list-style":"none"}).attr("jcarouselindex",c);return a},className:function(a){return a+" "+a+(!this.options.vertical?"-horizontal":"-vertical")}, dimension:function(a,c){var b=g(a);if(c==null)return!this.options.vertical?b.outerWidth(!0)||f.intval(this.options.itemFallbackDimension):b.outerHeight(!0)||f.intval(this.options.itemFallbackDimension);else{var d=!this.options.vertical?c-f.intval(b.css("marginLeft"))-f.intval(b.css("marginRight")):c-f.intval(b.css("marginTop"))-f.intval(b.css("marginBottom"));g(b).css(this.wh,d+"px");return this.dimension(b)}},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-f.intval(this.clip.css("borderLeftWidth"))- f.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-f.intval(this.clip.css("borderTopWidth"))-f.intval(this.clip.css("borderBottomWidth"))},index:function(a,c){if(c==null)c=this.options.size;return Math.round(((a-1)/c-Math.floor((a-1)/c))*c)+1}});f.extend({defaults:function(a){return g.extend(q,a||{})},intval:function(a){a=parseInt(a,10);return isNaN(a)?0:a},windowLoaded:function(){m=!0}});g.fn.jcarousel=function(a){if(typeof a=="string"){var c=g(this).data("jcarousel"),b=Array.prototype.slice.call(arguments, 1);return c[a].apply(c,b)}else return this.each(function(){var b=g(this).data("jcarousel");b?(a&&g.extend(b.options,a),b.reload()):g(this).data("jcarousel",new f(this,a))})}})(jQuery);
;
// ColorBox v1.3.18 - a full featured, light-weight, customizable lightbox based on jQuery 1.3+
// Copyright (c) 2011 Jack Moore - jack@colorpowered.com
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php

(function ($, document, window) {
    var
    // Default settings object.	
    // See http://jacklmoore.com/colorbox for details.
    defaults = {
        transition: "elastic",
        speed: 300,
        width: false,
        initialWidth: "600",
        innerWidth: false,
        maxWidth: false,
        height: false,
        initialHeight: "450",
        innerHeight: false,
        maxHeight: false,
        scalePhotos: true,
        scrolling: true,
        inline: false,
        html: false,
        iframe: false,
        fastIframe: true,
        photo: false,
        href: false,
        title: false,
        rel: false,
        opacity: 0.9,
        preloading: true,
        current: "image {current} of {total}",
        previous: "previous",
        next: "next",
        close: "close",
        open: false,
        returnFocus: true,
        loop: true,
        slideshow: false,
        slideshowAuto: true,
        slideshowSpeed: 2500,
        slideshowStart: "start slideshow",
        slideshowStop: "stop slideshow",
        onOpen: false,
        onLoad: false,
        onComplete: false,
        onCleanup: false,
        onClosed: false,
        overlayClose: true,		
        escKey: true,
        arrowKey: true,
        top: false,
        bottom: false,
        left: false,
        right: false,
        fixed: false,
        data: undefined
    },
	
    // Abstracting the HTML and event identifiers for easy rebranding
    colorbox = 'colorbox',
    prefix = 'cbox',
    boxElement = prefix + 'Element',
    
    // Events	
    event_open = prefix + '_open',
    event_load = prefix + '_load',
    event_complete = prefix + '_complete',
    event_cleanup = prefix + '_cleanup',
    event_closed = prefix + '_closed',
    event_purge = prefix + '_purge',
    
    // Special Handling for IE
    isIE = $.browser.msie && !$.support.opacity, // Detects IE6,7,8.  IE9 supports opacity.  Feature detection alone gave a false positive on at least one phone browser and on some development versions of Chrome, hence the user-agent test.
    isIE6 = isIE && $.browser.version < 7,
    event_ie6 = prefix + '_IE6',
    
    // Cached jQuery Object Variables
    $overlay,
    $box,
    $wrap,
    $content,
    $topBorder,
    $leftBorder,
    $rightBorder,
    $bottomBorder,
    $related,
    $window,
    $loaded,
    $loadingBay,
    $loadingOverlay,
    $title,
    $current,
    $slideshow,
    $next,
    $prev,
    $close,
    $groupControls,
    
    // Variables for cached values or use across multiple functions
    settings,
    interfaceHeight,
    interfaceWidth,
    loadedHeight,
    loadedWidth,
    element,
    index,
    photo,
    open,
    active,
    closing,
    loadingTimer,
    publicMethod,
    div = "div";

	// ****************
	// HELPER FUNCTIONS
	// ****************
    
	// Convience function for creating new jQuery objects
    function $tag(tag, id, css) {
        var element = document.createElement(tag);
        
        if (id) {
            element.id = prefix + id;
        }
        
        if (css) {
            element.style.cssText = css;
        }
        
        return $(element);
    }

	// Determine the next and previous members in a group.
	function getIndex(increment) {
		var 
		max = $related.length, 
		newIndex = (index + increment) % max;
		
		return (newIndex < 0) ? max + newIndex : newIndex;
	}

	// Convert '%' and 'px' values to integers
	function setSize(size, dimension) {
		return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
	}
	
	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
	function isImage(url) {
		return settings.photo || /\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(url);
	}
	
	// Assigns function results to their respective properties
	function makeSettings() {
        var i;
        settings = $.extend({}, $.data(element, colorbox));
        
		for (i in settings) {
			if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
			    settings[i] = settings[i].call(element);
			}
		}
        
		settings.rel = settings.rel || element.rel || 'nofollow';
		settings.href = settings.href || $(element).attr('href');
		settings.title = settings.title || element.title;
        
        if (typeof settings.href === "string") {
            settings.href = $.trim(settings.href);
        }
	}

	function trigger(event, callback) {
		$.event.trigger(event);
		if (callback) {
			callback.call(element);
		}
	}

	// Slideshow functionality
	function slideshow() {
		var
		timeOut,
		className = prefix + "Slideshow_",
		click = "click." + prefix,
		start,
		stop,
		clear;
		
		if (settings.slideshow && $related[1]) {
			start = function () {
				$slideshow
					.text(settings.slideshowStop)
					.unbind(click)
					.bind(event_complete, function () {
						if (index < $related.length - 1 || settings.loop) {
							timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
						}
					})
					.bind(event_load, function () {
						clearTimeout(timeOut);
					})
					.one(click + ' ' + event_cleanup, stop);
				$box.removeClass(className + "off").addClass(className + "on");
				timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
			};
			
			stop = function () {
				clearTimeout(timeOut);
				$slideshow
					.text(settings.slideshowStart)
					.unbind([event_complete, event_load, event_cleanup, click].join(' '))
					.one(click, function () {
						publicMethod.next();
						start();
					});
				$box.removeClass(className + "on").addClass(className + "off");
			};
			
			if (settings.slideshowAuto) {
				start();
			} else {
				stop();
			}
		} else {
            $box.removeClass(className + "off " + className + "on");
        }
	}

	function launch(target) {
		if (!closing) {
			
			element = target;
			
			makeSettings();
			
			$related = $(element);
			
			index = 0;
			
			if (settings.rel !== 'nofollow') {
				$related = $('.' + boxElement).filter(function () {
					var relRelated = $.data(this, colorbox).rel || this.rel;
					return (relRelated === settings.rel);
				});
				index = $related.index(element);
				
				// Check direct calls to ColorBox.
				if (index === -1) {
					$related = $related.add(element);
					index = $related.length - 1;
				}
			}
			
			if (!open) {
				open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
				
				$box.show();
				
				if (settings.returnFocus) {
					try {
						element.blur();
						$(element).one(event_closed, function () {
							try {
								this.focus();
							} catch (e) {
								// do nothing
							}
						});
					} catch (e) {
						// do nothing
					}
				}
				
				// +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
				$overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
				
				// Opens inital empty ColorBox prior to content being loaded.
				settings.w = setSize(settings.initialWidth, 'x');
				settings.h = setSize(settings.initialHeight, 'y');
				publicMethod.position();
				
				if (isIE6) {
					$window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
						$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
					}).trigger('resize.' + event_ie6);
				}
				
				trigger(event_open, settings.onOpen);
				
				$groupControls.add($title).hide();
				
				$close.html(settings.close).show();
			}
			
			publicMethod.load(true);
		}
	}

	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.fn.colorbox.close();
	// Usage from within an iframe: parent.$.fn.colorbox.close();
	// ****************
	
	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
		var $this = this;
		
        options = options || {};
        
		publicMethod.init();
		
		if (!$this[0]) {
			if ($this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
                return $this;
            }
            // if no selector was given (ie. $.colorbox()), create a temporary element to work with
			$this = $('<a/>');
			options.open = true; // assume an immediate open
		}
		
		if (callback) {
			options.onComplete = callback;
		}
		
		$this.each(function () {
			$.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
			$(this).addClass(boxElement);
		});
		
        if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
			launch($this[0]);
		}
        
		return $this;
	};

	// Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
	// This preps ColorBox for a speedy open when clicked, and minimizes the burdon on the browser by only
	// having to run once, instead of each time colorbox is opened.
	publicMethod.init = function () {
		if (!$box) {
			
			// If the body is not present yet, wait for DOM ready
			if (!$('body')[0]) {
				$(publicMethod.init);
				return;
			}
			
			// Create the markup and append to BODY
			$window = $(window);
			$box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''});
			$overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
			$wrap = $tag(div, "Wrapper");
			$content = $tag(div, "Content").append(
				$loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),
				$loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),
				$title = $tag(div, "Title"),
				$current = $tag(div, "Current"),
				$next = $tag(div, "Next"),
				$prev = $tag(div, "Previous"),
				$slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),
				$close = $tag(div, "Close")
			);
			
			$wrap.append( // The 3x3 Grid that makes up ColorBox
				$tag(div).append(
					$tag(div, "TopLeft"),
					$topBorder = $tag(div, "TopCenter"),
					$tag(div, "TopRight")
				),
				$tag(div, false, 'clear:left').append(
					$leftBorder = $tag(div, "MiddleLeft"),
					$content,
					$rightBorder = $tag(div, "MiddleRight")
				),
				$tag(div, false, 'clear:left').append(
					$tag(div, "BottomLeft"),
					$bottomBorder = $tag(div, "BottomCenter"),
					$tag(div, "BottomRight")
				)
			).find('div div').css({'float': 'left'});
			
			$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
			
			$('body').prepend($overlay, $box.append($wrap, $loadingBay));
			
			// Cache values needed for size calculations
			interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
			interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
			loadedHeight = $loaded.outerHeight(true);
			loadedWidth = $loaded.outerWidth(true);
			
			// Setting padding to remove the need to do size conversions during the animation step.
			$box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
			
			// Setup button events.
			// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
			$next.click(function () {
				publicMethod.next();
			});
			$prev.click(function () {
				publicMethod.prev();
			});
			$close.click(function () {
				publicMethod.close();
			});
			
			$groupControls = $next.add($prev).add($current).add($slideshow);
			
			$overlay.click(function () {
				if (settings.overlayClose) {
					publicMethod.close();
				}
			});
			
			// Set Navigation Key Bindings
			$(document).bind('keydown.' + prefix, function (e) {
				var key = e.keyCode;
				if (open && settings.escKey && key === 27) {
					e.preventDefault();
					publicMethod.close();
				}
				if (open && settings.arrowKey && $related[1]) {
					if (key === 37) {
						e.preventDefault();
						$prev.click();
					} else if (key === 39) {
						e.preventDefault();
						$next.click();
					}
				}
			});
		}
	};
	
	publicMethod.remove = function () {
		$box.add($overlay).remove();
		$box = null;
		$('.' + boxElement).removeData(colorbox).removeClass(boxElement);
	};

	publicMethod.position = function (speed, loadedCallback) {
        var top = 0, left = 0, offset = $box.offset();
        
        $window.unbind('resize.' + prefix);

        // remove the modal so that it doesn't influence the document width/height        
        $box.css({top: -99999, left: -99999});

        if (settings.fixed && !isIE6) {
            $box.css({position: 'fixed'});
        } else {
            top = $window.scrollTop();
            left = $window.scrollLeft();
            $box.css({position: 'absolute'});
        }

		// keeps the top and left positions within the browser's viewport.
        if (settings.right !== false) {
            left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
        } else if (settings.left !== false) {
            left += setSize(settings.left, 'x');
        } else {
            left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
        }
        
        if (settings.bottom !== false) {
            top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
        } else if (settings.top !== false) {
            top += setSize(settings.top, 'y');
        } else {
            top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
        }
        
        $box.css({top: offset.top, left: offset.left});
        
		// setting the speed to 0 to reduce the delay between same-sized content.
		speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
        
		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";
		
		function modalDimensions(that) {
			// loading overlay height has to be explicitly set for IE6.
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
			$loadingOverlay[0].style.height = $loadingOverlay[1].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
		}
		
		$box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: top, left: left}, {
			duration: speed,
			complete: function () {
				modalDimensions(this);
				
				active = false;
				
				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
				
				if (loadedCallback) {
					loadedCallback();
				}
                
                setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
                    $window.bind('resize.' + prefix, publicMethod.position);
                }, 1);
			},
			step: function () {
				modalDimensions(this);
			}
		});
	};

	publicMethod.resize = function (options) {
		if (open) {
			options = options || {};
			
			if (options.width) {
				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
			}
			if (options.innerWidth) {
				settings.w = setSize(options.innerWidth, 'x');
			}
			$loaded.css({width: settings.w});
			
			if (options.height) {
				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
			}
			if (options.innerHeight) {
				settings.h = setSize(options.innerHeight, 'y');
			}
			if (!options.innerHeight && !options.height) {
				$loaded.css({height: "auto"});
				settings.h = $loaded.height();
			}
			$loaded.css({height: settings.h});
			
			publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
		}
	};

	publicMethod.prep = function (object) {
		if (!open) {
			return;
		}
		
		var callback, speed = settings.transition === "none" ? 0 : settings.speed;
		
		$loaded.remove();
		$loaded = $tag(div, 'LoadedContent').append(object);
		
		function getWidth() {
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight() {
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}
		
		$loaded.hide()
		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
		.css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);
		
		$loadingBay.hide();
		
		// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
		//$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
		
        $(photo).css({'float': 'none'});
        
		// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
		if (isIE6) {
			$('select').not($box.find('select')).filter(function () {
				return this.style.visibility !== 'hidden';
			}).css({'visibility': 'hidden'}).one(event_cleanup, function () {
				this.style.visibility = 'inherit';
			});
		}
		
		callback = function () {
            var preload, i, total = $related.length, iframe, frameBorder = 'frameBorder', allowTransparency = 'allowTransparency', complete, src, img;
            
            if (!open) {
                return;
            }
            
            function removeFilter() {
                if (isIE) {
                    $box[0].style.removeAttribute('filter');
                }
            }
            
            complete = function () {
                clearTimeout(loadingTimer);
                $loadingOverlay.hide();
                trigger(event_complete, settings.onComplete);
            };
            
            if (isIE) {
                //This fadeIn helps the bicubic resampling to kick-in.
                if (photo) {
                    $loaded.fadeIn(100);
                }
            }
            
            $title.html(settings.title).add($loaded).show();
            
            if (total > 1) { // handle grouping
                if (typeof settings.current === "string") {
                    $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
                }
                
                $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
                $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
				
                if (settings.slideshow) {
                    $slideshow.show();
                }
				
                // Preloads images within a rel group
                if (settings.preloading) {
					preload = [
						getIndex(-1),
						getIndex(1)
					];
					while ((i = $related[preload.pop()])) {
						src = $.data(i, colorbox).href || i.href;
						if ($.isFunction(src)) {
							src = src.call(i);
						}
						if (isImage(src)) {
							img = new Image();
							img.src = src;
						}
					}
                }
            } else {
                $groupControls.hide();
            }
            
            if (settings.iframe) {
                iframe = $tag('iframe')[0];
                
                if (frameBorder in iframe) {
                    iframe[frameBorder] = 0;
                }
                if (allowTransparency in iframe) {
                    iframe[allowTransparency] = "true";
                }
                // give the iframe a unique name to prevent caching
                iframe.name = prefix + (+new Date());
                if (settings.fastIframe) {
                    complete();
                } else {
                    $(iframe).one('load', complete);
                }
                iframe.src = settings.href;
                if (!settings.scrolling) {
                    iframe.scrolling = "no";
                }
                $(iframe).addClass(prefix + 'Iframe').appendTo($loaded).one(event_purge, function () {
                    iframe.src = "//about:blank";
                });
            } else {
                complete();
            }
            
            if (settings.transition === 'fade') {
                $box.fadeTo(speed, 1, removeFilter);
            } else {
                removeFilter();
            }
		};
		
		if (settings.transition === 'fade') {
			$box.fadeTo(speed, 0, function () {
				publicMethod.position(0, callback);
			});
		} else {
			publicMethod.position(speed, callback);
		}
	};

	publicMethod.load = function (launched) {
		var href, setResize, prep = publicMethod.prep;
		
		active = true;
		
		photo = false;
		
		element = $related[index];
		
		if (!launched) {
			makeSettings();
		}
		
		trigger(event_purge);
		
		trigger(event_load, settings.onLoad);
		
		settings.h = settings.height ?
				setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
				settings.innerHeight && setSize(settings.innerHeight, 'y');
		
		settings.w = settings.width ?
				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
				settings.innerWidth && setSize(settings.innerWidth, 'x');
		
		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;
		
		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if (settings.maxWidth) {
			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if (settings.maxHeight) {
			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}
		
		href = settings.href;
		
        loadingTimer = setTimeout(function () {
            $loadingOverlay.show();
        }, 100);
        
		if (settings.inline) {
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when ColorBox closes or loads new content.
			$tag(div).hide().insertBefore($(href)[0]).one(event_purge, function () {
				$(this).replaceWith($loaded.children());
			});
			prep($(href));
		} else if (settings.iframe) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			prep(" ");
		} else if (settings.html) {
			prep(settings.html);
		} else if (isImage(href)) {
			$(photo = new Image())
			.addClass(prefix + 'Photo')
			.error(function () {
				settings.title = false;
				prep($tag(div, 'Error').text('This image could not be loaded'));
			})
			.load(function () {
				var percent;
				photo.onload = null; //stops animated gifs from firing the onload repeatedly.
				
				if (settings.scalePhotos) {
					setResize = function () {
						photo.height -= photo.height * percent;
						photo.width -= photo.width * percent;	
					};
					if (settings.mw && photo.width > settings.mw) {
						percent = (photo.width - settings.mw) / photo.width;
						setResize();
					}
					if (settings.mh && photo.height > settings.mh) {
						percent = (photo.height - settings.mh) / photo.height;
						setResize();
					}
				}
				
				if (settings.h) {
					photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';
				}
				
				if ($related[1] && (index < $related.length - 1 || settings.loop)) {
					photo.style.cursor = 'pointer';
					photo.onclick = function () {
                        publicMethod.next();
                    };
				}
				
				if (isIE) {
					photo.style.msInterpolationMode = 'bicubic';
				}
				
				setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
					prep(photo);
				}, 1);
			});
			
			setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
				photo.src = href;
			}, 1);
		} else if (href) {
			$loadingBay.load(href, settings.data, function (data, status, xhr) {
				prep(status === 'error' ? $tag(div, 'Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());
			});
		}
	};
        
	// Navigates to the next page/image in a set.
	publicMethod.next = function () {
		if (!active && $related[1] && (index < $related.length - 1 || settings.loop)) {
			index = getIndex(1);
			publicMethod.load();
		}
	};
	
	publicMethod.prev = function () {
		if (!active && $related[1] && (index || settings.loop)) {
			index = getIndex(-1);
			publicMethod.load();
		}
	};

	// Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
	publicMethod.close = function () {
		if (open && !closing) {
			
			closing = true;
			
			open = false;
			
			trigger(event_cleanup, settings.onCleanup);
			
			$window.unbind('.' + prefix + ' .' + event_ie6);
			
			$overlay.fadeTo(200, 0);
			
			$box.stop().fadeTo(300, 0, function () {
                 
				$box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
				
				trigger(event_purge);
				
				$loaded.remove();
				
				setTimeout(function () {
					closing = false;
					trigger(event_closed, settings.onClosed);
				}, 1);
			});
		}
	};

	// A method for fetching the current element ColorBox is referencing.
	// returns a jQuery object.
	publicMethod.element = function () {
		return $(element);
	};

	publicMethod.settings = defaults;
    
	// Bind the live event before DOM-ready for maximum performance in IE6 & 7.
	$('.' + boxElement, document).live('click', function (e) {
        // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
        // See: http://jacklmoore.com/notes/click-events/
        if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
            e.preventDefault();
            launch(this);
        }
    });

	// Setup ColorBox
	publicMethod.init();

}(jQuery, document, this));;
// JavaScript Document
(function($) {
		

})(jQuery);

jQuery(document).ready(function() {
		jQuery('#slideshow a.enlarge').click(function(){ 
			var goPhoto = jQuery(this).attr('href'); 
			goPhoto = parseFloat(goPhoto.replace("/photo-",""));
			goPhoto--;
			cycleHolder.cycle(goPhoto);
			return false; 
		});
		
		var cycleHolder = jQuery('#block-views-block__homepage_feature-1 .view-content').cycle({
			fx: 'fade', 
			speed:    600, 
			timeout:  6000,
			next:   '#next', 
			prev:   '#prev',
		    cleartypeNoBg:true,
			after: onAfter
		});
		
		function onAfter(curr, next, opts) {

			var index = opts.currSlide;
			var html = jQuery("#block-views-block__homepage_feature-1 .view-content .views-row").eq(index).find('.caption').html();
			jQuery("#block-views-block__homepage_feature-2 .view-header").html(html);
		
		}
		
		jQuery("a.renovations").colorbox({href:jQuery("a.renovations").attr("href")});
		jQuery("body.node-type-home #main_sidebar .view--home-pages-gallery a").colorbox({rel:'group1'});

		jQuery('.below_content .view-content').cycle({
			fx: 'fade', 
			speed:    800, 
			timeout:  11000,
		    cleartypeNoBg:true
		});
		
});


//adds classes to html and body for browser/version & os
(function($){$.browserTest=function(a,z){var u='unknown',x='X',m=function(r,h){for(var i=0;i<h.length;i=i+1){r=r.replace(h[i][0],h[i][1]);}return r;},c=function(i,a,b,c){var r={name:m((a.exec(i)||[u,u])[1],b)};r[r.name]=true;r.version=(c.exec(i)||[x,x,x,x])[3];if(r.name.match(/safari/)&&r.version>400){r.version='2.0';}if(r.name==='presto'){r.version=($.browser.version>9.27)?'futhark':'linear_b';}r.versionNumber=parseFloat(r.version,10)||0;r.versionX=(r.version!==x)?(r.version+'').substr(0,1):x;r.className=r.name+r.versionX;return r;};a=(a.match(/Opera|Navigator|Minefield|KHTML|Chrome/)?m(a,[[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/,''],['Chrome Safari','Chrome'],['KHTML','Konqueror'],['Minefield','Firefox'],['Navigator','Netscape']]):a).toLowerCase();$.browser=$.extend((!z)?$.browser:{},c(a,/(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/,[],/(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));$.layout=c(a,/(gecko|konqueror|msie|opera|webkit)/,[['konqueror','khtml'],['msie','trident'],['opera','presto']],/(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);$.os={name:(/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase())||[u])[0].replace('sunos','solaris')};if(!z){$('html').addClass([$.os.name,$.browser.name,$.browser.className,$.layout.name,$.layout.className].join(' '));}};$.browserTest(navigator.userAgent);})(jQuery);
browser = function(){

            var OSName="Unknown OS";
            var browser = "";
            if (navigator.appVersion.indexOf("Mac")!=-1) OSName="Mac";
            if (navigator.appVersion.indexOf("Win")!=-1) OSName="PC";
            bodyClass = $.browser.className+OSName
            $("body").addClass(bodyClass);
//
};

