/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 9/11/2008
 * @author Ariel Flesler
 * @version 1.4
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
// Easing equation, borrowed from jQuery easing plugin
// http://gsgd.co.uk/sandbox/jquery/easing/
jQuery.easing.easeOutQuart = function (x, t, b, c, d) {
 return -c * ((t=t/d-1)*t*t*t - 1) + b;
};

jQuery(function( $ ){
 /**
 * Most jQuery.serialScroll's settings, actually belong to jQuery.ScrollTo, check it's demo for an example of each option.
 * @see http://flesler.demos.com/jquery/scrollTo/
 * You can use EVERY single setting of jQuery.ScrollTo, in the settings hash you send to jQuery.serialScroll.
 */
 
 /**
 * The plugin binds 6 events to the container to allow external manipulation.
 * prev, next, goto, start, stop and notify
 * You use them like this: $(your_container).trigger('next'), $(your_container).trigger('goto', [5]) (0-based index).
 * If for some odd reason, the element already has any of these events bound, trigger it with the namespace.
 */ 
 
 /**
 * IMPORTANT: this call to the plugin specifies ALL the settings (plus some of jQuery.ScrollTo)
 * This is done so you can see them. You DON'T need to specify the commented ones.
 * A 'target' is specified, that means that #screen is the context for target, prev, next and navigation.
 */
 $('#screen').serialScroll({
 target:'#sections',
 items:'li', // Selector to the items ( relative to the matched elements, '#sections' in this case )
 prev:'img.prev',// Selector to the 'prev' button (absolute!, meaning it's relative to the document)
 next:'img.next',// Selector to the 'next' button (absolute too)
 axis:'xy',// The default is 'y' scroll on both ways
 navigation:'#navigation li a',
 duration:700,// Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
 force:true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
 
 //queue:false,// We scroll on both axes, scroll both at the same time.
 //event:'click',// On which event to react (click is the default, you probably won't need to specify it)
 //stop:false,// Each click will stop any previous animations of the target. (false by default)
 //lock:true, // Ignore events if already animating (true by default) 
 //start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case ) 
 //cycle:true,// Cycle endlessly ( constant velocity, true is the default )
 //step:1, // How many items to scroll each time ( 1 is the default, no need to specify )
 //jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
 //lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
 //interval:1000, // It's the number of milliseconds to automatically go to the next
 //constant:true, // constant speed
 
 onBefore:function( e, elem, $pane, $items, pos ){
 /**
 * 'this' is the triggered element 
 * e is the event object
 * elem is the element we'll be scrolling to
 * $pane is the element being scrolled
 * $items is the items collection at this moment
 * pos is the position of elem in the collection
 * if it returns false, the event will be ignored
 */
 //those arguments with a $ are jqueryfied, elem isn't.
 e.preventDefault();
 if( this.blur )
 this.blur();
 },
 onAfter:function( elem ){
 //'this' is the element being scrolled ($pane) not jqueryfied
 }
 });
 
 /**
 * No need to have only one element in view, you can use it for slideshows or similar.
 * In this case, clicking the images, scrolls to them.
 * No target in this case, so the selectors are absolute.
 */
 
 $('.holder').serialScroll({
 items:'li',
 prev:'.sliderGaleria a.prev',
 next:'.sliderGaleria a.next',
 offset:-265, //when scrolling to photo, stop 230 before reaching it (from the left)
 start:1, //as we are centering it, start at the 2nd
 duration:1200,
 force:true,
 stop:true,
 lock:false,
 step:5,
 cycle:false, //don't pull back once you reach the end
 easing:'easeOutQuart', //use this easing equation for a funny effect
 jump: true //click on the images to scroll to them
 });
 
 /**
 * The call below, is just to show that you are not restricted to prev/next buttons
 * In this case, the plugin will react to a custom event on the container
 * You can trigger the event from the outside.
 */
 
 var $news = $('#news-ticker');//we'll re use it a lot, so better save it to a var.
 $news.serialScroll({
 items:'div',
 duration:2000,
 force:true,
 axis:'y',
 easing:'linear',
 lazy:true,// NOTE: it's set to true, meaning you can add/remove/reorder items and the changes are taken into account.
 interval:1, // yeah! I now added auto-scrolling
 step:2 // scroll 2 news each time
 }); 
 
 /**
 * The following you don't need to see, is just for the "Add 2 Items" and "Shuffle"" buttons
 * These exemplify the use of the option 'lazy'.
 */
 $('#add-news').click(function(){
 var 
 $items = $news.find('div'),
 num = $items.length + 1;
 
 $items.slice(-2).clone().find('h4').each(function(i){
 $(this).text( 'News ' + (num + i) );
 }).end().appendTo($news);
 });
 $('#shuffle-news').click(function(){//don't shuffle the first, don't wanna deal with css
 var shuffled = $news.find('div').get().slice(1).sort(function(){
 return Math.round(Math.random())-0.5;//just a random number between -0.5 and 0.5
 });
 $(shuffled).appendTo($news);//add them all reordered
 });
});
/*
 * jQuery UI Accordion 1.6
 * 
 * Copyright (c) 2007 Jörn Zaefferer
 *
 * http://docs.jquery.com/UI/Accordion
 *
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.accordion.js 4876 2008-03-08 11:49:04Z joern.zaefferer $
 *
 */

;(function($) {
 
// If the UI scope is not available, add it
$.ui = $.ui || {};

$.fn.extend({
 accordion: function(options, data) {
 var args = Array.prototype.slice.call(arguments, 1);

 return this.each(function() {
 if (typeof options == "string") {
 var accordion = $.data(this, "ui-accordion");
 accordion[options].apply(accordion, args);
 // INIT with optional options
 } else if (!$(this).is(".ui-accordion"))
 $.data(this, "ui-accordion", new $.ui.accordion(this, options));
 });
 },
 // deprecated, use accordion("activate", index) instead
 activate: function(index) {
 return this.accordion("activate", index);
 }
});

$.ui.accordion = function(container, options) {
 
 // setup configuration
 this.options = options = $.extend({}, $.ui.accordion.defaults, options);
 this.element = container;
 
 $(container).addClass("ui-accordion");
 
 if ( options.navigation ) {
 var current = $(container).find("a").filter(options.navigationFilter);
 if ( current.length ) {
 if ( current.filter(options.header).length ) {
 options.active = current;
 } else {
 options.active = current.parent().parent().prev();
 current.addClass("current");
 }
 }
 }
 
 // calculate active if not specified, using the first header
 options.headers = $(container).find(options.header);
 options.active = findActive(options.headers, options.active);

 if ( options.fillSpace ) {
 var maxHeight = $(container).parent().height();
 options.headers.each(function() {
 maxHeight -= $(this).outerHeight();
 });
 var maxPadding = 0;
 options.headers.next().each(function() {
 maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
 }).height(maxHeight - maxPadding);
 } else if ( options.autoheight ) {
 var maxHeight = 0;
 options.headers.next().each(function() {
 maxHeight = Math.max(maxHeight, $(this).outerHeight());
 }).height(maxHeight);
 }

 options.headers
 .not(options.active || "")
 .next()
 .hide();
 options.active.parent().andSelf().addClass(options.selectedClass);
 
 if (options.event)
 $(container).bind((options.event) + ".ui-accordion", clickHandler);
};

$.ui.accordion.prototype = {
 activate: function(index) {
 // call clickHandler with custom event
 clickHandler.call(this.element, {
 target: findActive( this.options.headers, index )[0]
 });
 },
 
 enable: function() {
 this.options.disabled = false;
 },
 disable: function() {
 this.options.disabled = true;
 },
 destroy: function() {
 this.options.headers.next().css("display", "");
 if ( this.options.fillSpace || this.options.autoheight ) {
 this.options.headers.next().css("height", "");
 }
 $.removeData(this.element, "ui-accordion");
 $(this.element).removeClass("ui-accordion").unbind(".ui-accordion");
 }
}

function scopeCallback(callback, scope) {
 return function() {
 return callback.apply(scope, arguments);
 };
}

function completed(cancel) {
 // if removed while animated data can be empty
 if (!$.data(this, "ui-accordion"))
 return;
 var instance = $.data(this, "ui-accordion");
 var options = instance.options;
 options.running = cancel ? 0 : --options.running;
 if ( options.running )
 return;
 if ( options.clearStyle ) {
 options.toShow.add(options.toHide).css({
 height: "",
 overflow: ""
 });
 }
 $(this).triggerHandler("change.ui-accordion", [options.data], options.change);
}

function toggle(toShow, toHide, data, clickedActive, down) {
 var options = $.data(this, "ui-accordion").options;
 options.toShow = toShow;
 options.toHide = toHide;
 options.data = data;
 var complete = scopeCallback(completed, this);
 
 // count elements to animate
 options.running = toHide.size() == 0 ? toShow.size() : toHide.size();
 
 if ( options.animated ) {
 if ( !options.alwaysOpen && clickedActive ) {
 $.ui.accordion.animations[options.animated]({
 toShow: jQuery([]),
 toHide: toHide,
 complete: complete,
 down: down,
 autoheight: options.autoheight
 });
 } else {
 $.ui.accordion.animations[options.animated]({
 toShow: toShow,
 toHide: toHide,
 complete: complete,
 down: down,
 autoheight: options.autoheight
 });
 }
 } else {
 if ( !options.alwaysOpen && clickedActive ) {
 toShow.toggle();
 } else {
 toHide.hide();
 toShow.show();
 }
 complete(true);
 }
}

function clickHandler(event) {
 var options = $.data(this, "ui-accordion").options;
 if (options.disabled)
 return false;
 
 // called only when using activate(false) to close all parts programmatically
 if ( !event.target && !options.alwaysOpen ) {
 options.active.parent().andSelf().toggleClass(options.selectedClass);
 var toHide = options.active.next(),
 data = {
 instance: this,
 options: options,
 newHeader: jQuery([]),
 oldHeader: options.active,
 newContent: jQuery([]),
 oldContent: toHide
 },
 toShow = options.active = $([]);
 toggle.call(this, toShow, toHide, data );
 return false;
 }
 // get the click target
 var clicked = $(event.target);
 
 // due to the event delegation model, we have to check if one
 // of the parent elements is our actual header, and find that
 if ( clicked.parents(options.header).length )
 while ( !clicked.is(options.header) )
 clicked = clicked.parent();
 
 var clickedActive = clicked[0] == options.active[0];
 
 // if animations are still active, or the active header is the target, ignore click
 if (options.running || (options.alwaysOpen && clickedActive))
 return false;
 if (!clicked.is(options.header))
 return;

 // switch classes
 options.active.parent().andSelf().toggleClass(options.selectedClass);
 if ( !clickedActive ) {
 clicked.parent().andSelf().addClass(options.selectedClass);
 }

 // find elements to show and hide
 var toShow = clicked.next(),
 toHide = options.active.next(),
 //data = [clicked, options.active, toShow, toHide],
 data = {
 instance: this,
 options: options,
 newHeader: clicked,
 oldHeader: options.active,
 newContent: toShow,
 oldContent: toHide
 },
 down = options.headers.index( options.active[0] ) > options.headers.index( clicked[0] );
 
 options.active = clickedActive ? $([]) : clicked;
 toggle.call(this, toShow, toHide, data, clickedActive, down );

 return false;
};

function findActive(headers, selector) {
 return selector != undefined
 ? typeof selector == "number"
 ? headers.filter(":eq(" + selector + ")")
 : headers.not(headers.not(selector))
 : selector === false
 ? $([])
 : headers.filter(":eq(0)");
}

$.extend($.ui.accordion, {
 defaults: {
 selectedClass: "selected",
 alwaysOpen: true,
 animated: 'slide',
 event: "click",
 header: "a.titulo",
 autoheight: true,
 running: 0,
 navigationFilter: function() {
 return this.href.toLowerCase() == location.href.toLowerCase();
 }
 },
 animations: {
 slide: function(options, additions) {
 options = $.extend({
 easing: "swing",
 duration: 300
 }, options, additions);
 if ( !options.toHide.size() ) {
 options.toShow.animate({height: "show"}, options);
 return;
 }
 var hideHeight = options.toHide.height(),
 showHeight = options.toShow.height(),
 difference = showHeight / hideHeight;
 options.toShow.css({ height: 0, overflow: 'hidden' }).show();
 options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate({height:"hide"},{
 step: function(now) {
 var current = (hideHeight - now) * difference;
 if ($.browser.msie || $.browser.opera) {
 current = Math.ceil(current);
 }
 options.toShow.height( current );
 },
 duration: options.duration,
 easing: options.easing,
 complete: function() {
 if ( !options.autoheight ) {
 options.toShow.css("height", "auto");
 }
 options.complete();
 }
 });
 },
 bounceslide: function(options) {
 this.slide(options, {
 easing: options.down ? "bounceout" : "swing",
 duration: options.down ? 1000 : 200
 });
 },
 easeslide: function(options) {
 this.slide(options, {
 easing: "easeinout",
 duration: 700
 })
 }
 }
});

})(jQuery);

/**
 * Flash (http://jquery.lukelutman.com/plugins/flash)
 * A jQuery plugin for embedding Flash movies.
 * 
 * Version 1.0
 * November 9th, 2006
 *
 * Copyright (c) 2006 Luke Lutman (http://www.lukelutman.com)
 * Dual licensed under the MIT and GPL licenses.
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.opensource.org/licenses/gpl-license.php
 * 
 * Inspired by:
 * SWFObject (http://blog.deconcept.com/swfobject/)
 * UFO (http://www.bobbyvandersluis.com/ufo/)
 * sIFR (http://www.mikeindustries.com/sifr/)
 * 
 * IMPORTANT: 
 * The packed version of jQuery breaks ActiveX control
 * activation in Internet Explorer. Use JSMin to minifiy
 * jQuery (see: http://jquery.lukelutman.com/plugins/flash#activex).
 *
 **/ 
;(function(){
 
var $$;

/**
 * 
 * @desc Replace matching elements with a flash movie.
 * @author Luke Lutman
 * @version 1.0.1
 *
 * @name flash
 * @param Hash htmlOptions Options for the embed/object tag.
 * @param Hash pluginOptions Options for detecting/updating the Flash plugin (optional).
 * @param Function replace Custom block called for each matched element if flash is installed (optional).
 * @param Function update Custom block called for each matched if flash isn't installed (optional).
 * @type jQuery
 *
 * @cat plugins/flash
 * 
 * @example $('#hello').flash({ src: 'hello.swf' });
 * @desc Embed a Flash movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { version: 8 });
 * @desc Embed a Flash 8 movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { expressInstall: true });
 * @desc Embed a Flash movie using Express Install if flash isn't installed.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { update: false });
 * @desc Embed a Flash movie, don't show an update message if Flash isn't installed.
 *
**/
$$ = jQuery.fn.flash = function(htmlOptions, pluginOptions, replace, update) {
 
 // Set the default block.
 var block = replace || $$.replace;
 
 // Merge the default and passed plugin options.
 pluginOptions = $$.copy($$.pluginOptions, pluginOptions);
 
 // Detect Flash.
 if(!$$.hasFlash(pluginOptions.version)) {
 // Use Express Install (if specified and Flash plugin 6,0,65 or higher is installed).
 if(pluginOptions.expressInstall && $$.hasFlash(6,0,65)) {
 // Add the necessary flashvars (merged later).
 var expressInstallOptions = {
 flashvars: { 
 MMredirectURL: location,
 MMplayerType: 'PlugIn',
 MMdoctitle: jQuery('title').text() 
 } 
 };
 // Ask the user to update (if specified).
 } else if (pluginOptions.update) {
 // Change the block to insert the update message instead of the flash movie.
 block = update || $$.update;
 // Fail
 } else {
 // The required version of flash isn't installed.
 // Express Install is turned off, or flash 6,0,65 isn't installed.
 // Update is turned off.
 // Return without doing anything.
 return this;
 }
 }
 
 // Merge the default, express install and passed html options.
 htmlOptions = $$.copy($$.htmlOptions, expressInstallOptions, htmlOptions);
 
 // Invoke $block (with a copy of the merged html options) for each element.
 return this.each(function(){
 block.call(this, $$.copy(htmlOptions));
 });
 
};
/**
 *
 * @name flash.copy
 * @desc Copy an arbitrary number of objects into a new object.
 * @type Object
 * 
 * @example $$.copy({ foo: 1 }, { bar: 2 });
 * @result { foo: 1, bar: 2 };
 *
**/
$$.copy = function() {
 var options = {}, flashvars = {};
 for(var i = 0; i < arguments.length; i++) {
 var arg = arguments[i];
 if(arg == undefined) continue;
 jQuery.extend(options, arg);
 // don't clobber one flash vars object with another
 // merge them instead
 if(arg.flashvars == undefined) continue;
 jQuery.extend(flashvars, arg.flashvars);
 }
 options.flashvars = flashvars;
 return options;
};
/*
 * @name flash.hasFlash
 * @desc Check if a specific version of the Flash plugin is installed
 * @type Boolean
 *
**/
$$.hasFlash = function() {
 // look for a flag in the query string to bypass flash detection
 if(/hasFlash\=true/.test(location)) return true;
 if(/hasFlash\=false/.test(location)) return false;
 var pv = $$.hasFlash.playerVersion().match(/\d+/g);
 var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || String($$.pluginOptions.version).match(/\d+/g);
 for(var i = 0; i < 3; i++) {
 pv[i] = parseInt(pv[i] || 0);
 rv[i] = parseInt(rv[i] || 0);
 // player is less than required
 if(pv[i] < rv[i]) return false;
 // player is greater than required
 if(pv[i] > rv[i]) return true;
 }
 // major version, minor version and revision match exactly
 return true;
};
/**
 *
 * @name flash.hasFlash.playerVersion
 * @desc Get the version of the installed Flash plugin.
 * @type String
 *
**/
$$.hasFlash.playerVersion = function() {
 // ie
 try {
 try {
 // avoid fp6 minor version lookup issues
 // see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
 var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
 try { axo.AllowScriptAccess = 'always'; } 
 catch(e) { return '6,0,0'; } 
 } catch(e) {}
 return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
 // other browsers
 } catch(e) {
 try {
 if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
 return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
 }
 } catch(e) {} 
 }
 return '0,0,0';
};
/**
 *
 * @name flash.htmlOptions
 * @desc The default set of options for the object or embed tag.
 *
**/
$$.htmlOptions = {
 height: 240,
 flashvars: {},
 pluginspage: 'http://www.adobe.com/go/getflashplayer',
 src: '#',
 type: 'application/x-shockwave-flash',
 width: 320 
};
/**
 *
 * @name flash.pluginOptions
 * @desc The default set of options for checking/updating the flash Plugin.
 *
**/
$$.pluginOptions = {
 expressInstall: false,
 update: true,
 version: '6.0.65'
};
/**
 *
 * @name flash.replace
 * @desc The default method for replacing an element with a Flash movie.
 *
**/
$$.replace = function(htmlOptions) {
 this.innerHTML = '<div class="alt">'+this.innerHTML+'</div>';
 jQuery(this)
 .addClass('flash-replaced')
 .prepend($$.transform(htmlOptions));
};
/**
 *
 * @name flash.update
 * @desc The default method for replacing an element with an update message.
 *
**/
$$.update = function(htmlOptions) {
 var url = String(location).split('?');
 url.splice(1,0,'?hasFlash=true&');
 url = url.join('');
 var msg = '<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="'+url+'">Click here.</a></p>';
 this.innerHTML = '<span class="alt">'+this.innerHTML+'</span>';
 jQuery(this)
 .addClass('flash-update')
 .prepend(msg);
};
/**
 *
 * @desc Convert a hash of html options to a string of attributes, using Function.apply(). 
 * @example toAttributeString.apply(htmlOptions)
 * @result foo="bar" foo="bar"
 *
**/
function toAttributeString() {
 var s = '';
 for(var key in this)
 if(typeof this[key] != 'function')
 s += key+'="'+this[key]+'" ';
 return s; 
};
/**
 *
 * @desc Convert a hash of flashvars to a url-encoded string, using Function.apply(). 
 * @example toFlashvarsString.apply(flashvarsObject)
 * @result foo=bar&foo=bar
 *
**/
function toFlashvarsString() {
 var s = '';
 for(var key in this)
 if(typeof this[key] != 'function')
 s += key+'='+encodeURIComponent(this[key])+'&';
 return s.replace(/&$/, ''); 
};
/**
 *
 * @name flash.transform
 * @desc Transform a set of html options into an embed tag.
 * @type String 
 *
 * @example $$.transform(htmlOptions)
 * @result <embed src="foo.swf" ... />
 *
 * Note: The embed tag is NOT standards-compliant, but it 
 * works in all current browsers. flash.transform can be
 * overwritten with a custom function to generate more 
 * standards-compliant markup.
 *
**/
$$.transform = function(htmlOptions) {
 htmlOptions.toString = toAttributeString;
 if(htmlOptions.flashvars) htmlOptions.flashvars.toString = toFlashvarsString;
 return '<embed ' + String(htmlOptions) + '/>'; 
};

/**
 *
 * Flash Player 9 Fix (http://blog.deconcept.com/2006/07/28/swfobject-143-released/)
 *
**/
if (window.attachEvent) {
 window.attachEvent("onbeforeunload", function(){
 __flash_unloadHandler = function() {};
 __flash_savedUnloadHandler = function() {};
 });
}
 
})();
/**
 * jCarousel - Riding carousels with jQuery
 * http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Built on top of the jQuery library
 * http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 * http://billwscott.com/carousel/
 */

(function($) {
 /**
 * Creates a carousel for all matched elements.
 *
 * @example $("#mycarousel").jcarousel();
 * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>
 * @result
 *
 * <div class="jcarousel-skin-name">
 * <div class="jcarousel-container">
 * <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
 * <div class="jcarousel-next"></div>
 * <div class="jcarousel-clip">
 * <ul class="jcarousel-list">
 * <li class="jcarousel-item-1">First item</li>
 * <li class="jcarousel-item-2">Second item</li>
 * </ul>
 * </div>
 * </div>
 * </div>
 *
 * @name jcarousel
 * @type jQuery
 * @param Hash o A set of key/value pairs to set as configuration properties.
 * @cat Plugins/jCarousel
 */
 $.fn.jcarousel = function(o) {
 return this.each(function() {
 new $jc(this, o);
 });
 };

 // Default configuration properties.
 var defaults = {
 vertical: false,
 start: 1,
 offset: 1,
 size: null,
 scroll: 3,
 visible: null,
 animation: 'normal',
 easing: 'swing',
 auto: 0,
 wrap: null,
 initCallback: null,
 reloadCallback: null,
 itemLoadCallback: null,
 itemFirstInCallback: null,
 itemFirstOutCallback: null,
 itemLastInCallback: null,
 itemLastOutCallback: null,
 itemVisibleInCallback: null,
 itemVisibleOutCallback: null,
 buttonNextHTML: '<div></div>',
 buttonPrevHTML: '<div></div>',
 buttonNextEvent: 'click',
 buttonPrevEvent: 'click',
 buttonNextCallback: null,
 buttonPrevCallback: null
 };

 /**
 * The jCarousel object.
 *
 * @constructor
 * @name $.jcarousel
 * @param Object e The element to create the carousel for.
 * @param Hash o A set of key/value pairs to set as configuration properties.
 * @cat Plugins/jCarousel
 */
 $.jcarousel = function(e, o) {
 this.options = $.extend({}, defaults, o || {});

 this.locked = false;

 this.container = null;
 this.clip = null;
 this.list = null;
 this.buttonNext = null;
 this.buttonPrev = null;

 this.wh = !this.options.vertical ? 'width' : 'height';
 this.lt = !this.options.vertical ? 'left' : 'top';

 // Extract skin class
 var skin = '', split = e.className.split(' ');

 for (var i = 0; i < split.length; i++) {
 if (split[i].indexOf('jcarousel-skin') != -1) {
 $(e).removeClass(split[i]);
 var skin = split[i];
 break;
 }
 }

 if (e.nodeName == 'UL' || e.nodeName == 'OL') {
 this.list = $(e);
 this.container = this.list.parent();

 if (this.container.hasClass('jcarousel-clip')) {
 if (!this.container.parent().hasClass('jcarousel-container'))
 this.container = this.container.wrap('<div></div>');

 this.container = this.container.parent();
 } else if (!this.container.hasClass('jcarousel-container'))
 this.container = this.list.wrap('<div></div>').parent();
 } else {
 this.container = $(e);
 this.list = $(e).find('>ul,>ol,div>ul,div>ol');
 }

 if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
 this.container.wrap('<div class=" '+ skin + '"></div>');

 this.clip = this.list.parent();

 if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
 this.clip = this.list.wrap('<div></div>').parent();

 this.buttonPrev = $('.jcarousel-prev', this.container);

 if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
 this.buttonPrev = this.clip.before(this.options.buttonPrevHTML).prev();

 this.buttonPrev.addClass(this.className('jcarousel-prev'));

 this.buttonNext = $('.jcarousel-next', this.container);

 if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
 this.buttonNext = this.clip.before(this.options.buttonNextHTML).prev();

 this.buttonNext.addClass(this.className('jcarousel-next'));

 this.clip.addClass(this.className('jcarousel-clip'));
 this.list.addClass(this.className('jcarousel-list'));
 this.container.addClass(this.className('jcarousel-container'));

 var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
 var li = this.list.children('li');

 var self = this;

 if (li.size() > 0) {
 var wh = 0, i = this.options.offset;
 li.each(function() {
 self.format(this, i++);
 wh += self.dimension(this, di);
 });

 this.list.css(this.wh, wh + 'px');

 // Only set if not explicitly passed as option
 if (!o || o.size === undefined)
 this.options.size = li.size();
 }

 // For whatever reason, .show() does not work in Safari...
 this.container.css('display', 'block');
 this.buttonNext.css('display', 'block');
 this.buttonPrev.css('display', 'block');

 this.funcNext = function() { self.next(); };
 this.funcPrev = function() { self.prev(); };
 this.funcResize = function() { self.reload(); };

 if (this.options.initCallback != null)
 this.options.initCallback(this, 'init');

 if ($.browser.safari) {
 this.buttons(false, false);
 $(window).bind('load', function() { self.setup(); });
 } else
 this.setup();
 };

 // Create shortcut for internal use
 var $jc = $.jcarousel;

 $jc.fn = $jc.prototype = {
 jcarousel: '0.2.3'
 };

 $jc.fn.extend = $jc.extend = $.extend;

 $jc.fn.extend({
 /**
 * Setups the carousel.
 *
 * @name setup
 * @type undefined
 * @cat Plugins/jCarousel
 */
 setup: function() {
 this.first = null;
 this.last = null;
 this.prevFirst = null;
 this.prevLast = null;
 this.animating = false;
 this.timer = null;
 this.tail = null;
 this.inTail = false;

 if (this.locked)
 return;

 this.list.css(this.lt, this.pos(this.options.offset) + 'px');
 var p = this.pos(this.options.start);
 this.prevFirst = this.prevLast = null;
 this.animate(p, false);

 $(window).unbind('resize', this.funcResize).bind('resize', this.funcResize);
 },

 /**
 * Clears the list and resets the carousel.
 *
 * @name reset
 * @type undefined
 * @cat Plugins/jCarousel
 */
 reset: function() {
 this.list.empty();

 this.list.css(this.lt, '0px');
 this.list.css(this.wh, '10px');

 if (this.options.initCallback != null)
 this.options.initCallback(this, 'reset');

 this.setup();
 },

 /**
 * Reloads the carousel and adjusts positions.
 *
 * @name reload
 * @type undefined
 * @cat Plugins/jCarousel
 */
 reload: function() {
 if (this.tail != null && this.inTail)
 this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);

 this.tail = null;
 this.inTail = false;

 if (this.options.reloadCallback != null)
 this.options.reloadCallback(this);

 if (this.options.visible != null) {
 var self = this;
 var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
 $('li', this.list).each(function(i) {
 wh += self.dimension(this, di);
 if (i + 1 < self.first)
 lt = wh;
 });

 this.list.css(this.wh, wh + 'px');
 this.list.css(this.lt, -lt + 'px');
 }

 this.scroll(this.first, false);
 },

 /**
 * Locks the carousel.
 *
 * @name lock
 * @type undefined
 * @cat Plugins/jCarousel
 */
 lock: function() {
 this.locked = true;
 this.buttons();
 },

 /**
 * Unlocks the carousel.
 *
 * @name unlock
 * @type undefined
 * @cat Plugins/jCarousel
 */
 unlock: function() {
 this.locked = false;
 this.buttons();
 },

 /**
 * Sets the size of the carousel.
 *
 * @name size
 * @type undefined
 * @param Number s The size of the carousel.
 * @cat Plugins/jCarousel
 */
 size: function(s) {
 if (s != undefined) {
 this.options.size = s;
 if (!this.locked)
 this.buttons();
 }

 return this.options.size;
 },

 /**
 * Checks whether a list element exists for the given index (or index range).
 *
 * @name get
 * @type bool
 * @param Number i The index of the (first) element.
 * @param Number i2 The index of the last element.
 * @cat Plugins/jCarousel
 */
 has: function(i, i2) {
 if (i2 == undefined || !i2)
 i2 = i;

 if (this.options.size !== null && i2 > this.options.size)
 i2 = this.options.size;

 for (var j = i; j <= i2; j++) {
 var e = this.get(j);
 if (!e.length || e.hasClass('jcarousel-item-placeholder'))
 return false;
 }

 return true;
 },

 /**
 * Returns a jQuery object with list element for the given index.
 *
 * @name get
 * @type jQuery
 * @param Number i The index of the element.
 * @cat Plugins/jCarousel
 */
 get: function(i) {
 return $('.jcarousel-item-' + i, this.list);
 },

 /**
 * Adds an element for the given index to the list.
 * If the element already exists, it updates the inner html.
 * Returns the created element as jQuery object.
 *
 * @name add
 * @type jQuery
 * @param Number i The index of the element.
 * @param String s The innerHTML of the element.
 * @cat Plugins/jCarousel
 */
 add: function(i, s) {
 var e = this.get(i), old = 0, add = 0;

 if (e.length == 0) {
 var c, e = this.create(i), j = $jc.intval(i);
 while (c = this.get(--j)) {
 if (j <= 0 || c.length) {
 j <= 0 ? this.list.prepend(e) : c.after(e);
 break;
 }
 }
 } else
 old = this.dimension(e);

 e.removeClass(this.className('jcarousel-item-placeholder'));
 typeof s == 'string' ? e.html(s) : e.empty().append(s);

 var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
 var wh = this.dimension(e, di) - old;

 if (i > 0 && i < this.first)
 this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');

 this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');

 return e;
 },

 /**
 * Removes an element for the given index from the list.
 *
 * @name remove
 * @type undefined
 * @param Number i The index of the element.
 * @cat Plugins/jCarousel
 */
 remove: function(i) {
 var e = this.get(i);

 // Check if item exists and is not currently visible
 if (!e.length || (i >= this.first && i <= this.last))
 return;

 var d = this.dimension(e);

 if (i < this.first)
 this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');

 e.remove();

 this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
 },

 /**
 * Moves the carousel forwards.
 *
 * @name next
 * @type undefined
 * @cat Plugins/jCarousel
 */
 next: function() {
 this.stopAuto();

 if (this.tail != null && !this.inTail)
 this.scrollTail(false);
 else
 this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
 },

 /**
 * Moves the carousel backwards.
 *
 * @name prev
 * @type undefined
 * @cat Plugins/jCarousel
 */
 prev: function() {
 this.stopAuto();

 if (this.tail != null && this.inTail)
 this.scrollTail(true);
 else
 this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
 },

 /**
 * Scrolls the tail of the carousel.
 *
 * @name scrollTail
 * @type undefined
 * @param Bool b Whether scroll the tail back or forward.
 * @cat Plugins/jCarousel
 */
 scrollTail: function(b) {
 if (this.locked || this.animating || !this.tail)
 return;

 var pos = $jc.intval(this.list.css(this.lt));

 !b ? pos -= this.tail : pos += this.tail;
 this.inTail = !b;

 // Save for callbacks
 this.prevFirst = this.first;
 this.prevLast = this.last;

 this.animate(pos);
 },

 /**
 * Scrolls the carousel to a certain position.
 *
 * @name scroll
 * @type undefined
 * @param Number i The index of the element to scoll to.
 * @param Bool a Flag indicating whether to perform animation.
 * @cat Plugins/jCarousel
 */
 scroll: function(i, a) {
 if (this.locked || this.animating)
 return;

 this.animate(this.pos(i), a);
 },

 /**
 * Prepares the carousel and return the position for a certian index.
 *
 * @name pos
 * @type Number
 * @param Number i The index of the element to scoll to.
 * @cat Plugins/jCarousel
 */
 pos: function(i) {
 if (this.locked || this.animating)
 return;

 i = $jc.intval(i);
 if (this.options.wrap != 'circular')
 i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);

 var back = this.first > i;
 var pos = $jc.intval(this.list.css(this.lt));

 // Create placeholders, new list width/height
 // and new list position
 var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
 var c = back ? this.get(f) : this.get(this.last);
 var j = back ? f : f - 1;
 var e = null, l = 0, p = false, d = 0;

 while (back ? --j >= i : ++j < i) {
 e = this.get(j);
 p = !e.length;
 if (e.length == 0) {
 e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
 c[back ? 'before' : 'after' ](e);
 }

 c = e;
 d = this.dimension(e);

 if (p)
 l += d;

 if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
 pos = back ? pos + d : pos - d;
 }

 // Calculate visible items
 var clipping = this.clipping();
 var cache = [];
 var visible = 0, j = i, v = 0;
 var c = this.get(i - 1);

 while (++visible) {
 e = this.get(j);
 p = !e.length;
 if (e.length == 0) {
 e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
 // This should only happen on a next scroll
 c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
 }

 c = e;
 var d = this.dimension(e);
 if (d == 0) {
 alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
 return 0;
 }

 if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
 cache.push(e);
 else if (p)
 l += d;

 v += d;

 if (v >= clipping)
 break;

 j++;
 }

 // Remove out-of-range placeholders
 for (var x = 0; x < cache.length; x++)
 cache[x].remove();

 // Resize list
 if (l > 0) {
 this.list.css(this.wh, this.dimension(this.list) + l + 'px');

 if (back) {
 pos -= l;
 this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
 }
 }

 // Calculate first and last item
 var last = i + visible - 1;
 if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
 last = this.options.size;

 if (j > last) {
 visible = 0, j = last, v = 0;
 while (++visible) {
 var e = this.get(j--);
 if (!e.length)
 break;
 v += this.dimension(e);
 if (v >= clipping)
 break;
 }
 }

 var first = last - visible + 1;
 if (this.options.wrap != 'circular' && first < 1)
 first = 1;

 if (this.inTail && back) {
 pos += this.tail;
 this.inTail = false;
 }

 this.tail = null;
 if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
 var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
 if ((v - m) > clipping)
 this.tail = v - clipping - m;
 }

 // Adjust position
 while (i-- > first)
 pos += this.dimension(this.get(i));

 // Save visible item range
 this.prevFirst = this.first;
 this.prevLast = this.last;
 this.first = first;
 this.last = last;

 return pos;
 },

 /**
 * Animates the carousel to a certain position.
 *
 * @name animate
 * @type undefined
 * @param mixed p Position to scroll to.
 * @param Bool a Flag indicating whether to perform animation.
 * @cat Plugins/jCarousel
 */
 animate: function(p, a) {
 if (this.locked || this.animating)
 return;

 this.animating = true;

 var self = this;
 var scrolled = function() {
 self.animating = false;

 if (p == 0)
 self.list.css(self.lt, 0);

 if (self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
 self.startAuto();

 self.buttons();
 self.notify('onAfterAnimation');
 };

 this.notify('onBeforeAnimation');

 // Animate
 if (!this.options.animation || a == false) {
 this.list.css(this.lt, p + 'px');
 scrolled();
 } else {
 var o = !this.options.vertical ? {'left': p} : {'top': p};
 this.list.animate(o, this.options.animation, this.options.easing, scrolled);
 }
 },

 /**
 * Starts autoscrolling.
 *
 * @name auto
 * @type undefined
 * @param Number s Seconds to periodically autoscroll the content.
 * @cat Plugins/jCarousel
 */
 startAuto: function(s) {
 if (s != undefined)
 this.options.auto = s;

 if (this.options.auto == 0)
 return this.stopAuto();

 if (this.timer != null)
 return;

 var self = this;
 this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
 },

 /**
 * Stops autoscrolling.
 *
 * @name stopAuto
 * @type undefined
 * @cat Plugins/jCarousel
 */
 stopAuto: function() {
 if (this.timer == null)
 return;

 clearTimeout(this.timer);
 this.timer = null;
 },

 /**
 * Sets the states of the prev/next buttons.
 *
 * @name buttons
 * @type undefined
 * @cat Plugins/jCarousel
 */
 buttons: function(n, p) {
 if (n == undefined || n == null) {
 var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
 if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
 n = this.tail != null && !this.inTail;
 }

 if (p == undefined || p == null) {
 var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
 if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
 p = this.tail != null && this.inTail;
 }

 var self = this;

 this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent, this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
 this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent, this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);

 if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
 this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
 this.buttonNext[0].jcarouselstate = n;
 }

 if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
 this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
 this.buttonPrev[0].jcarouselstate = p;
 }
 },

 notify: function(evt) {
 var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');

 // Load items
 this.callback('itemLoadCallback', evt, state);

 if (this.prevFirst !== this.first) {
 this.callback('itemFirstInCallback', evt, state, this.first);
 this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
 }

 if (this.prevLast !== this.last) {
 this.callback('itemLastInCallback', evt, state, this.last);
 this.callback('itemLastOutCallback', evt, state, this.prevLast);
 }

 this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
 this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
 },

 callback: function(cb, evt, state, i1, i2, i3, i4) {
 if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
 return;

 var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];

 if (!$.isFunction(callback))
 return;

 var self = this;

 if (i1 === undefined)
 callback(self, state, evt);
 else if (i2 === undefined)
 this.get(i1).each(function() { callback(self, this, i1, state, evt); });
 else {
 for (var i = i1; i <= i2; i++)
 if (i !== null && !(i >= i3 && i <= i4))
 this.get(i).each(function() { callback(self, this, i, state, evt); });
 }
 },

 create: function(i) {
 return this.format('<li></li>', i);
 },

 format: function(e, i) {
 var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i));
 $e.attr('jcarouselindex', i);
 return $e;
 },

 className: function(c) {
 return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
 },

 dimension: function(e, d) {
 var el = e.jquery != undefined ? e[0] : e;

 var old = !this.options.vertical ?
 el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
 el.offsetHeight + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');

 if (d == undefined || old == d)
 return old;

 var w = !this.options.vertical ?
 d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
 d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');

 $(el).css(this.wh, w + 'px');

 return this.dimension(el);
 },

 clipping: function() {
 return !this.options.vertical ?
 this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
 this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
 },

 index: function(i, s) {
 if (s == undefined)
 s = this.options.size;

 return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
 }
 });

 $jc.extend({
 /**
 * Gets/Sets the global default configuration properties.
 *
 * @name defaults
 * @descr Gets/Sets the global default configuration properties.
 * @type Hash
 * @param Hash d A set of key/value pairs to set as configuration properties.
 * @cat Plugins/jCarousel
 */
 defaults: function(d) {
 return $.extend(defaults, d || {});
 },

 margin: function(e, p) {
 if (!e)
 return 0;

 var el = e.jquery != undefined ? e[0] : e;

 if (p == 'marginRight' && $.browser.safari) {
 var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

 $.swap(el, old, function() { oWidth = el.offsetWidth; });

 old['marginRight'] = 0;
 $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

 return oWidth2 - oWidth;
 }

 return $jc.intval($.css(el, p));
 },

 intval: function(v) {
 v = parseInt(v);
 return isNaN(v) ? 0 : v;
 }
 });

})(jQuery);

/**
 * jCarousel - Riding carousels with jQuery
 * http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Built on top of the jQuery library
 * http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 * http://billwscott.com/carousel/
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(9($){$.1s.A=9(o){z 4.14(9(){2H r(4,o)})};8 q={W:F,23:1,1G:1,u:7,15:3,16:7,1H:\'2I\',24:\'2J\',1i:0,B:7,1j:7,1I:7,25:7,26:7,27:7,28:7,29:7,2a:7,2b:7,1J:\'<N></N>\',1K:\'<N></N>\',2c:\'2d\',2e:\'2d\',1L:7,1M:7};$.A=9(e,o){4.5=$.17({},q,o||{});4.Q=F;4.D=7;4.H=7;4.t=7;4.R=7;4.S=7;4.O=!4.5.W?\'1N\':\'2f\';4.E=!4.5.W?\'2g\':\'2h\';8 a=\'\',1d=e.J.1d(\' \');1k(8 i=0;i<1d.K;i++){6(1d[i].2i(\'A-2j\')!=-1){$(e).1t(1d[i]);8 a=1d[i];1l}}6(e.2k==\'2K\'||e.2k==\'2L\'){4.t=$(e);4.D=4.t.18();6(4.D.1m(\'A-H\')){6(!4.D.18().1m(\'A-D\'))4.D=4.D.B(\'<N></N>\');4.D=4.D.18()}X 6(!4.D.1m(\'A-D\'))4.D=4.t.B(\'<N></N>\').18()}X{4.D=$(e);4.t=$(e).2M(\'>2l,>2m,N>2l,N>2m\')}6(a!=\'\'&&4.D.18()[0].J.2i(\'A-2j\')==-1)4.D.B(\'<N 2N=" \'+a+\'"></N>\');4.H=4.t.18();6(!4.H.K||!4.H.1m(\'A-H\'))4.H=4.t.B(\'<N></N>\').18();4.S=$(\'.A-11\',4.D);6(4.S.u()==0&&4.5.1K!=7)4.S=4.H.1u(4.5.1K).11();4.S.V(4.J(\'A-11\'));4.R=$(\'.A-19\',4.D);6(4.R.u()==0&&4.5.1J!=7)4.R=4.H.1u(4.5.1J).11();4.R.V(4.J(\'A-19\'));4.H.V(4.J(\'A-H\'));4.t.V(4.J(\'A-t\'));4.D.V(4.J(\'A-D\'));8 b=4.5.16!=7?1n.1O(4.1o()/4.5.16):7;8 c=4.t.2O(\'1v\');8 d=4;6(c.u()>0){8 f=0,i=4.5.1G;c.14(9(){d.1P(4,i++);f+=d.T(4,b)});4.t.y(4.O,f+\'U\');6(!o||o.u===L)4.5.u=c.u()}4.D.y(\'1w\',\'1x\');4.R.y(\'1w\',\'1x\');4.S.y(\'1w\',\'1x\');4.2n=9(){d.19()};4.2o=9(){d.11()};4.1Q=9(){d.2p()};6(4.5.1j!=7)4.5.1j(4,\'2q\');6($.2r.2s){4.1e(F,F);$(2t).1y(\'2P\',9(){d.1z()})}X 4.1z()};8 r=$.A;r.1s=r.2Q={A:\'0.2.3\'};r.1s.17=r.17=$.17;r.1s.17({1z:9(){4.C=7;4.G=7;4.Y=7;4.12=7;4.1a=F;4.1f=7;4.P=7;4.Z=F;6(4.Q)z;4.t.y(4.E,4.1A(4.5.1G)+\'U\');8 p=4.1A(4.5.23);4.Y=4.12=7;4.1p(p,F);$(2t).1R(\'2u\',4.1Q).1y(\'2u\',4.1Q)},2v:9(){4.t.2w();4.t.y(4.E,\'2R\');4.t.y(4.O,\'2S\');6(4.5.1j!=7)4.5.1j(4,\'2v\');4.1z()},2p:9(){6(4.P!=7&&4.Z)4.t.y(4.E,r.I(4.t.y(4.E))+4.P);4.P=7;4.Z=F;6(4.5.1I!=7)4.5.1I(4);6(4.5.16!=7){8 a=4;8 b=1n.1O(4.1o()/4.5.16),O=0,E=0;$(\'1v\',4.t).14(9(i){O+=a.T(4,b);6(i+1<a.C)E=O});4.t.y(4.O,O+\'U\');4.t.y(4.E,-E+\'U\')}4.15(4.C,F)},2T:9(){4.Q=1g;4.1e()},2U:9(){4.Q=F;4.1e()},u:9(s){6(s!=L){4.5.u=s;6(!4.Q)4.1e()}z 4.5.u},2V:9(i,a){6(a==L||!a)a=i;6(4.5.u!==7&&a>4.5.u)a=4.5.u;1k(8 j=i;j<=a;j++){8 e=4.M(j);6(!e.K||e.1m(\'A-1b-1B\'))z F}z 1g},M:9(i){z $(\'.A-1b-\'+i,4.t)},2x:9(i,s){8 e=4.M(i),1S=0,2x=0;6(e.K==0){8 c,e=4.1C(i),j=r.I(i);1q(c=4.M(--j)){6(j<=0||c.K){j<=0?4.t.2y(e):c.1T(e);1l}}}X 1S=4.T(e);e.1t(4.J(\'A-1b-1B\'));1U s==\'2W\'?e.2X(s):e.2w().2Y(s);8 a=4.5.16!=7?1n.1O(4.1o()/4.5.16):7;8 b=4.T(e,a)-1S;6(i>0&&i<4.C)4.t.y(4.E,r.I(4.t.y(4.E))-b+\'U\');4.t.y(4.O,r.I(4.t.y(4.O))+b+\'U\');z e},1V:9(i){8 e=4.M(i);6(!e.K||(i>=4.C&&i<=4.G))z;8 d=4.T(e);6(i<4.C)4.t.y(4.E,r.I(4.t.y(4.E))+d+\'U\');e.1V();4.t.y(4.O,r.I(4.t.y(4.O))-d+\'U\')},19:9(){4.1D();6(4.P!=7&&!4.Z)4.1W(F);X 4.15(((4.5.B==\'1X\'||4.5.B==\'G\')&&4.5.u!=7&&4.G==4.5.u)?1:4.C+4.5.15)},11:9(){4.1D();6(4.P!=7&&4.Z)4.1W(1g);X 4.15(((4.5.B==\'1X\'||4.5.B==\'C\')&&4.5.u!=7&&4.C==1)?4.5.u:4.C-4.5.15)},1W:9(b){6(4.Q||4.1a||!4.P)z;8 a=r.I(4.t.y(4.E));!b?a-=4.P:a+=4.P;4.Z=!b;4.Y=4.C;4.12=4.G;4.1p(a)},15:9(i,a){6(4.Q||4.1a)z;4.1p(4.1A(i),a)},1A:9(i){6(4.Q||4.1a)z;i=r.I(i);6(4.5.B!=\'1c\')i=i<1?1:(4.5.u&&i>4.5.u?4.5.u:i);8 a=4.C>i;8 b=r.I(4.t.y(4.E));8 f=4.5.B!=\'1c\'&&4.C<=1?1:4.C;8 c=a?4.M(f):4.M(4.G);8 j=a?f:f-1;8 e=7,l=0,p=F,d=0;1q(a?--j>=i:++j<i){e=4.M(j);p=!e.K;6(e.K==0){e=4.1C(j).V(4.J(\'A-1b-1B\'));c[a?\'1u\':\'1T\'](e)}c=e;d=4.T(e);6(p)l+=d;6(4.C!=7&&(4.5.B==\'1c\'||(j>=1&&(4.5.u==7||j<=4.5.u))))b=a?b+d:b-d}8 g=4.1o();8 h=[];8 k=0,j=i,v=0;8 c=4.M(i-1);1q(++k){e=4.M(j);p=!e.K;6(e.K==0){e=4.1C(j).V(4.J(\'A-1b-1B\'));c.K==0?4.t.2y(e):c[a?\'1u\':\'1T\'](e)}c=e;8 d=4.T(e);6(d==0){2Z(\'30: 31 1N/2f 32 1k 33. 34 35 36 37 38 39. 3a...\');z 0}6(4.5.B!=\'1c\'&&4.5.u!==7&&j>4.5.u)h.3b(e);X 6(p)l+=d;v+=d;6(v>=g)1l;j++}1k(8 x=0;x<h.K;x++)h[x].1V();6(l>0){4.t.y(4.O,4.T(4.t)+l+\'U\');6(a){b-=l;4.t.y(4.E,r.I(4.t.y(4.E))-l+\'U\')}}8 n=i+k-1;6(4.5.B!=\'1c\'&&4.5.u&&n>4.5.u)n=4.5.u;6(j>n){k=0,j=n,v=0;1q(++k){8 e=4.M(j--);6(!e.K)1l;v+=4.T(e);6(v>=g)1l}}8 o=n-k+1;6(4.5.B!=\'1c\'&&o<1)o=1;6(4.Z&&a){b+=4.P;4.Z=F}4.P=7;6(4.5.B!=\'1c\'&&n==4.5.u&&(n-k+1)>=1){8 m=r.10(4.M(n),!4.5.W?\'1r\':\'1Y\');6((v-m)>g)4.P=v-g-m}1q(i-->o)b+=4.T(4.M(i));4.Y=4.C;4.12=4.G;4.C=o;4.G=n;z b},1p:9(p,a){6(4.Q||4.1a)z;4.1a=1g;8 b=4;8 c=9(){b.1a=F;6(p==0)b.t.y(b.E,0);6(b.5.B==\'1X\'||b.5.B==\'G\'||b.5.u==7||b.G<b.5.u)b.2z();b.1e();b.1Z(\'2A\')};4.1Z(\'3c\');6(!4.5.1H||a==F){4.t.y(4.E,p+\'U\');c()}X{8 o=!4.5.W?{\'2g\':p}:{\'2h\':p};4.t.1p(o,4.5.1H,4.5.24,c)}},2z:9(s){6(s!=L)4.5.1i=s;6(4.5.1i==0)z 4.1D();6(4.1f!=7)z;8 a=4;4.1f=3d(9(){a.19()},4.5.1i*3e)},1D:9(){6(4.1f==7)z;3f(4.1f);4.1f=7},1e:9(n,p){6(n==L||n==7){8 n=!4.Q&&4.5.u!==0&&((4.5.B&&4.5.B!=\'C\')||4.5.u==7||4.G<4.5.u);6(!4.Q&&(!4.5.B||4.5.B==\'C\')&&4.5.u!=7&&4.G>=4.5.u)n=4.P!=7&&!4.Z}6(p==L||p==7){8 p=!4.Q&&4.5.u!==0&&((4.5.B&&4.5.B!=\'G\')||4.C>1);6(!4.Q&&(!4.5.B||4.5.B==\'G\')&&4.5.u!=7&&4.C==1)p=4.P!=7&&4.Z}8 a=4;4.R[n?\'1y\':\'1R\'](4.5.2c,4.2n)[n?\'1t\':\'V\'](4.J(\'A-19-1E\')).20(\'1E\',n?F:1g);4.S[p?\'1y\':\'1R\'](4.5.2e,4.2o)[p?\'1t\':\'V\'](4.J(\'A-11-1E\')).20(\'1E\',p?F:1g);6(4.R.K>0&&(4.R[0].1h==L||4.R[0].1h!=n)&&4.5.1L!=7){4.R.14(9(){a.5.1L(a,4,n)});4.R[0].1h=n}6(4.S.K>0&&(4.S[0].1h==L||4.S[0].1h!=p)&&4.5.1M!=7){4.S.14(9(){a.5.1M(a,4,p)});4.S[0].1h=p}},1Z:9(a){8 b=4.Y==7?\'2q\':(4.Y<4.C?\'19\':\'11\');4.13(\'25\',a,b);6(4.Y!==4.C){4.13(\'26\',a,b,4.C);4.13(\'27\',a,b,4.Y)}6(4.12!==4.G){4.13(\'28\',a,b,4.G);4.13(\'29\',a,b,4.12)}4.13(\'2a\',a,b,4.C,4.G,4.Y,4.12);4.13(\'2b\',a,b,4.Y,4.12,4.C,4.G)},13:9(a,b,c,d,e,f,g){6(4.5[a]==L||(1U 4.5[a]!=\'2B\'&&b!=\'2A\'))z;8 h=1U 4.5[a]==\'2B\'?4.5[a][b]:4.5[a];6(!$.3g(h))z;8 j=4;6(d===L)h(j,c,b);X 6(e===L)4.M(d).14(9(){h(j,4,d,c,b)});X{1k(8 i=d;i<=e;i++)6(i!==7&&!(i>=f&&i<=g))4.M(i).14(9(){h(j,4,i,c,b)})}},1C:9(i){z 4.1P(\'<1v></1v>\',i)},1P:9(e,i){8 a=$(e).V(4.J(\'A-1b\')).V(4.J(\'A-1b-\'+i));a.20(\'3h\',i);z a},J:9(c){z c+\' \'+c+(!4.5.W?\'-3i\':\'-W\')},T:9(e,d){8 a=e.2C!=L?e[0]:e;8 b=!4.5.W?a.1F+r.10(a,\'2D\')+r.10(a,\'1r\'):a.2E+r.10(a,\'2F\')+r.10(a,\'1Y\');6(d==L||b==d)z b;8 w=!4.5.W?d-r.10(a,\'2D\')-r.10(a,\'1r\'):d-r.10(a,\'2F\')-r.10(a,\'1Y\');$(a).y(4.O,w+\'U\');z 4.T(a)},1o:9(){z!4.5.W?4.H[0].1F-r.I(4.H.y(\'3j\'))-r.I(4.H.y(\'3k\')):4.H[0].2E-r.I(4.H.y(\'3l\'))-r.I(4.H.y(\'3m\'))},3n:9(i,s){6(s==L)s=4.5.u;z 1n.3o((((i-1)/s)-1n.3p((i-1)/s))*s)+1}});r.17({3q:9(d){z $.17(q,d||{})},10:9(e,p){6(!e)z 0;8 a=e.2C!=L?e[0]:e;6(p==\'1r\'&&$.2r.2s){8 b={\'1w\':\'1x\',\'3r\':\'3s\',\'1N\':\'1i\'},21,22;$.2G(a,b,9(){21=a.1F});b[\'1r\']=0;$.2G(a,b,9(){22=a.1F});z 22-21}z r.I($.y(a,p))},I:9(v){v=3t(v);z 3u(v)?0:v}})})(3v);',62,218,'||||this|options|if|null|var|function||||||||||||||||||||list|size||||css|return|jcarousel|wrap|first|container|lt|false|last|clip|intval|className|length|undefined|get|div|wh|tail|locked|buttonNext|buttonPrev|dimension|px|addClass|vertical|else|prevFirst|inTail|margin|prev|prevLast|callback|each|scroll|visible|extend|parent|next|animating|item|circular|split|buttons|timer|true|jcarouselstate|auto|initCallback|for|break|hasClass|Math|clipping|animate|while|marginRight|fn|removeClass|before|li|display|block|bind|setup|pos|placeholder|create|stopAuto|disabled|offsetWidth|offset|animation|reloadCallback|buttonNextHTML|buttonPrevHTML|buttonNextCallback|buttonPrevCallback|width|ceil|format|funcResize|unbind|old|after|typeof|remove|scrollTail|both|marginBottom|notify|attr|oWidth|oWidth2|start|easing|itemLoadCallback|itemFirstInCallback|itemFirstOutCallback|itemLastInCallback|itemLastOutCallback|itemVisibleInCallback|itemVisibleOutCallback|buttonNextEvent|click|buttonPrevEvent|height|left|top|indexOf|skin|nodeName|ul|ol|funcNext|funcPrev|reload|init|browser|safari|window|resize|reset|empty|add|prepend|startAuto|onAfterAnimation|object|jquery|marginLeft|offsetHeight|marginTop|swap|new|normal|swing|UL|OL|find|class|children|load|prototype|0px|10px|lock|unlock|has|string|html|append|alert|jCarousel|No|set|items|This|will|cause|an|infinite|loop|Aborting|push|onBeforeAnimation|setTimeout|1000|clearTimeout|isFunction|jcarouselindex|horizontal|borderLeftWidth|borderRightWidth|borderTopWidth|borderBottomWidth|index|round|floor|defaults|float|none|parseInt|isNaN|jQuery'.split('|'),0,{}))

/**
 * Tabs - jQuery plugin for accessible, unobtrusive tabs
 * @requires jQuery v1.1.1
 *
 * http://stilbuero.de/tabs/
 *
 * 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
 *
 * Version: 2.7.4
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(4($){$.2l({z:{2k:0}});$.1P.z=4(x,w){3(O x==\'2Y\')w=x;w=$.2l({K:(x&&O x==\'1Z\'&&x>0)?--x:0,12:C,J:$.1f?2h:T,18:T,1r:\'2X&#2Q;\',21:\'18-2F-\',1m:C,1u:C,1l:C,1F:C,1x:\'2u\',2r:C,2p:C,2m:T,2i:C,1d:C,1c:C,1j:\'z-1M\',H:\'z-2b\',14:\'z-12\',16:\'z-26\',1q:\'z-1H\',1L:\'z-2L\',2j:\'10\'},w||{});$.8.1D=$.8.U&&($.8.1Y&&$.8.1Y<7||/2A 6.0/.2y(2x.2w));4 1w(){1V(0,0)}F 5.Y(4(){2 p=5;2 r=$(\'13.\'+w.1j,p);r=r.V()&&r||$(\'>13:9(0)\',p);2 j=$(\'a\',r);3(w.18){j.Y(4(){2 c=w.21+(++$.z.2k),B=\'#\'+c,2f=5.1O;5.1O=B;$(\'<10 S="\'+c+\'" 34="\'+w.16+\'"></10>\').2c(p);$(5).19(\'1B\',4(e,a){2 b=$(5).I(w.1L),X=$(\'X\',5)[0],27=X.1J;3(w.1r){X.1J=\'<24>\'+w.1r+\'</24>\'}1p(4(){$(B).2T(2f,4(){3(w.1r){X.1J=27}b.17(w.1L);a&&a()})},0)})})}2 n=$(\'10.\'+w.16,p);n=n.V()&&n||$(\'>\'+w.2j,p);r.P(\'.\'+w.1j)||r.I(w.1j);n.Y(4(){2 a=$(5);a.P(\'.\'+w.16)||a.I(w.16)});2 s=$(\'A\',r).20($(\'A.\'+w.H,r)[0]);3(s>=0){w.K=s}3(1e.B){j.Y(4(i){3(5.B==1e.B){w.K=i;3(($.8.U||$.8.2E)&&!w.18){2 a=$(1e.B);2 b=a.15(\'S\');a.15(\'S\',\'\');1p(4(){a.15(\'S\',b)},2D)}1w();F T}})}3($.8.U){1w()}n.1a(\':9(\'+w.K+\')\').1C().1n().2C(\':9(\'+w.K+\')\').I(w.1q);$(\'A\',r).17(w.H).9(w.K).I(w.H);j.9(w.K).N(\'1B\').1n();3(w.2m){2 l=4(d){2 c=$.2B(n.1t(),4(a){2 h,1A=$(a);3(d){3($.8.1D){a.Z.2z(\'1X\');a.Z.G=\'\';a.1k=C}h=1A.L({\'1h-G\':\'\'}).G()}E{h=1A.G()}F h}).2v(4(a,b){F b-a});3($.8.1D){n.Y(4(){5.1k=c[0]+\'1W\';5.Z.2t(\'1X\',\'5.Z.G = 5.1k ? 5.1k : "2s"\')})}E{n.L({\'1h-G\':c[0]+\'1W\'})}};l();2 q=p.1U;2 m=p.1v;2 v=$(\'#z-2q-2o-V\').1t(0)||$(\'<X S="z-2q-2o-V">M</X>\').L({1T:\'2n\',3a:\'39\',38:\'37\'}).2c(Q.1S).1t(0);2 o=v.1v;36(4(){2 b=p.1U;2 a=p.1v;2 c=v.1v;3(a>m||b!=q||c!=o){l((b>q||c<o));q=b;m=a;o=c}},35)}2 u={},11={},1R=w.2r||w.1x,1Q=w.2p||w.1x;3(w.1u||w.1m){3(w.1u){u[\'G\']=\'1C\';11[\'G\']=\'1H\'}3(w.1m){u[\'W\']=\'1C\';11[\'W\']=\'1H\'}}E{3(w.1l){u=w.1l}E{u[\'1h-2g\']=0;1R=1}3(w.1F){11=w.1F}E{11[\'1h-2g\']=0;1Q=1}}2 t=w.2i,1d=w.1d,1c=w.1c;j.19(\'2e\',4(){2 c=$(5).1g(\'A:9(0)\');3(p.1i||c.P(\'.\'+w.H)||c.P(\'.\'+w.14)){F T}2 a=5.B;3($.8.U){$(5).N(\'1b\');3(w.J){$.1f.1N(a);1e.B=a.1z(\'#\',\'\')}}E 3($.8.1y){2 b=$(\'<2d 33="\'+a+\'"><10><32 31="2a" 30="h" /></10></2d>\').1t(0);b.2a();$(5).N(\'1b\');3(w.J){$.1f.1N(a)}}E{3(w.J){1e.B=a.1z(\'#\',\'\')}E{$(5).N(\'1b\')}}});j.19(\'1E\',4(){2 a=$(5).1g(\'A:9(0)\');3($.8.1y){a.1o({W:0},1,4(){a.L({W:\'\'})})}a.I(w.14)});3(w.12&&w.12.1K){29(2 i=0,k=w.12.1K;i<k;i++){j.9(--w.12[i]).N(\'1E\').1n()}};j.19(\'28\',4(){2 a=$(5).1g(\'A:9(0)\');a.17(w.14);3($.8.1y){a.1o({W:1},1,4(){a.L({W:\'\'})})}});j.19(\'1b\',4(e){2 g=e.2Z;2 d=5,A=$(5).1g(\'A:9(0)\'),D=$(5.B),R=n.1a(\':2W\');3(p[\'1i\']||A.P(\'.\'+w.H)||A.P(\'.\'+w.14)||O t==\'4\'&&t(5,D[0],R[0])===T){5.25();F T}p[\'1i\']=2h;3(D.V()){3($.8.U&&w.J){2 c=5.B.1z(\'#\',\'\');D.15(\'S\',\'\');1p(4(){D.15(\'S\',c)},0)}2 f={1T:\'\',2V:\'\',G:\'\'};3(!$.8.U){f[\'W\']=\'\'}4 1I(){3(w.J&&g){$.1f.1N(d.B)}R.1o(11,1Q,4(){$(d).1g(\'A:9(0)\').I(w.H).2U().17(w.H);R.I(w.1q).L(f);3(O 1d==\'4\'){1d(d,D[0],R[0])}3(!(w.1u||w.1m||w.1l)){D.L(\'1T\',\'2n\')}D.1o(u,1R,4(){D.17(w.1q).L(f);3($.8.U){R[0].Z.1a=\'\';D[0].Z.1a=\'\'}3(O 1c==\'4\'){1c(d,D[0],R[0])}p[\'1i\']=C})})}3(!w.18){1I()}E{$(d).N(\'1B\',[1I])}}E{2S(\'2R P 2P 2O 26.\')}2 a=1G.2N||Q.1s&&Q.1s.23||Q.1S.23||0;2 b=1G.2M||Q.1s&&Q.1s.22||Q.1S.22||0;1p(4(){1G.1V(a,b)},0);5.25();F w.J&&!!g});3(w.J){$.1f.2K(4(){j.9(w.K).N(\'1b\').1n()})}})};2 y=[\'2e\',\'1E\',\'28\'];29(2 i=0;i<y.1K;i++){$.1P[y[i]]=(4(d){F 4(c){F 5.Y(4(){2 b=$(\'13.z-1M\',5);b=b.V()&&b||$(\'>13:9(0)\',5);2 a;3(!c||O c==\'1Z\'){a=$(\'A a\',b).9((c&&c>0&&c-1||0))}E 3(O c==\'2J\'){a=$(\'A a[@1O$="#\'+c+\'"]\',b)}a.N(d)})}})(y[i])}$.1P.2I=4(){2 c=[];5.Y(4(){2 a=$(\'13.z-1M\',5);a=a.V()&&a||$(\'>13:9(0)\',5);2 b=$(\'A\',a);c.2H(b.20(b.1a(\'.z-2b\')[0])+1)});F c[0]}})(2G);',62,197,'||var|if|function|this|||browser|eq||||||||||||||||||||||||||tabs|li|hash|null|toShow|else|return|height|selectedClass|addClass|bookmarkable|initial|css||trigger|typeof|is|document|toHide|id|false|msie|size|opacity|span|each|style|div|hideAnim|disabled|ul|disabledClass|attr|containerClass|removeClass|remote|bind|filter|click|onShow|onHide|location|ajaxHistory|parents|min|locked|navClass|minHeight|fxShow|fxFade|end|animate|setTimeout|hideClass|spinner|documentElement|get|fxSlide|offsetHeight|unFocus|fxSpeed|safari|replace|jq|loadRemoteTab|show|msie6|disableTab|fxHide|window|hide|switchTab|innerHTML|length|loadingClass|nav|update|href|fn|hideSpeed|showSpeed|body|display|offsetWidth|scrollTo|px|behaviour|version|number|index|hashPrefix|scrollTop|scrollLeft|em|blur|container|tabTitle|enableTab|for|submit|selected|appendTo|form|triggerTab|url|width|true|onClick|tabStruct|remoteCount|extend|fxAutoHeight|block|font|fxHideSpeed|watch|fxShowSpeed|1px|setExpression|normal|sort|userAgent|navigator|test|removeExpression|MSIE|map|not|500|opera|tab|jQuery|push|activeTab|string|initialize|loading|pageYOffset|pageXOffset|such|no|8230|There|alert|load|siblings|overflow|visible|Loading|object|clientX|value|type|input|action|class|50|setInterval|hidden|visibility|absolute|position'.split('|'),0,{}))
/* sIFR v2.0.7
 Copyright 2004 - 2008 Mark Wubben and Mike Davidson. Prior contributions by Shaun Inman and Tomas Jogin.
 
 This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

var hasFlash=function(){var a=6;if(navigator.appVersion.indexOf("MSIE")!=-1&&navigator.appVersion.indexOf("Windows")>-1){document.write('<script language="VBScript"\> \non error resume next \nhasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & '+a+'))) \n</script\> \n');if(window.hasFlash!=null)return window.hasFlash}if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){var b=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description;return parseInt(b.substr(b.indexOf(".")-2,2),10)>=a}return false}();String.prototype.normalize=function(){return this.replace(/\s+/g," ")};if(Array.prototype.push==null){Array.prototype.push=function(){var i=0,a=this.length,b=arguments.length;while(i<b){this[a++]=arguments[i++]}return this.length}}if(!Function.prototype.apply){Function.prototype.apply=function(a,b){var c=[];var d,e;if(!a)a=window;if(!b)b=[];for(var i=0;i<b.length;i++){c[i]="b["+i+"]"}e="a.__applyTemp__("+c.join(",")+");";a.__applyTemp__=this;d=eval(e);a.__applyTemp__=null;return d}}function named(a){return new named.Arguments(a)}named.Arguments=function(a){this.oArgs=a};named.Arguments.prototype.constructor=named.Arguments;named.extract=function(a,b){var c,d;var i=a.length;while(i--){d=a[i];if(d!=null&&d.constructor!=null&&d.constructor==named.Arguments){c=a[i].oArgs;break}}if(c==null)return;for(e in c)if(b[e]!=null)b[e](c[e]);return};var parseSelector=function(){var a=/^([^#.>`]*)(#|\.|\>|\`)(.+)$/;function r(s,t){var u=s.split(/\s*\,\s*/);var v=[];for(var i=0;i<u.length;i++)v=v.concat(b(u[i],t));return v}function b(c,d,e){c=c.normalize().replace(" ","`");var f=c.match(a);var g,h,i,j,k,n;var l=[];if(f==null)f=[c,c];if(f[1]=="")f[1]="*";if(e==null)e="`";if(d==null)d=document;switch(f[2]){case "#":k=f[3].match(a);if(k==null)k=[null,f[3]];g=document.getElementById(k[1]);if(g==null||(f[1]!="*"&&!o(g,f[1])))return l;if(k.length==2){l.push(g);return l}return b(k[3],g,k[2]);case ".":if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;k=f[3].match(a);if(k!=null){if(g.className==null||g.className.match("(\\s|^)"+k[1]+"(\\s|$)")==null)continue;j=b(k[3],g,k[2]);l=l.concat(j)}else if(g.className!=null&&g.className.match("(\\s|^)"+f[3]+"(\\s|$)")!=null)l.push(g)}return l;case ">":if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;if(!o(g,f[1]))continue;j=b(f[3],g,">");l=l.concat(j)}return l;case "`":h=m(d,f[1]);for(i=0,n=h.length;i<n;i++){g=h[i];j=b(f[3],g,"`");l=l.concat(j)}return l;default:if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;if(!o(g,f[1]))continue;l.push(g)}return l}}function m(d,o){if(o=="*"&&d.all!=null)return d.all;return d.getElementsByTagName(o)}function o(p,q){return q=="*"?true:p.nodeName.toLowerCase().replace("html:", "")==q.toLowerCase()}return r}();var sIFR=function(){var a="http://www.w3.org/1999/xhtml";var b=false;var c=false;var d;var ah=[];var al=document;var ak=al.documentElement;var am=window;var au=al.addEventListener;var av=am.addEventListener;var f=function(){var g=navigator.userAgent.toLowerCase();var f={a:g.indexOf("applewebkit")>-1,b:g.indexOf("safari")>-1,c:navigator.product!=null&&navigator.product.toLowerCase().indexOf("konqueror")>-1,d:g.indexOf("opera")>-1,e:al.contentType!=null&&al.contentType.indexOf("xml")>-1,f:true,g:true,h:null,i:null,j:null,k:null};f.l=f.a||f.c;f.m=!f.a&&navigator.product!=null&&navigator.product.toLowerCase()=="gecko";if(f.m&&g.match(/.*gecko\/(\d{8}).*/))f.j=new Number(g.match(/.*gecko\/(\d{8}).*/)[1]);f.n=g.indexOf("msie")>-1&&!f.d&&!f.l&&!f.m;f.o=f.n&&g.match(/.*mac.*/)!=null;if(f.d&&g.match(/.*opera(\s|\/)(\d+\.\d+)/))f.i=new Number(g.match(/.*opera(\s|\/)(\d+\.\d+)/)[2]);if(f.n||(f.d&&f.i<7.6))f.g=false;if(f.a&&g.match(/.*applewebkit\/(\d+).*/))f.k=new Number(g.match(/.*applewebkit\/(\d+).*/)[1]);if(am.hasFlash&&(!f.n||f.o)){var aj=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description;f.h=parseInt(aj.substr(aj.indexOf(".")-2,2),10)}if(g.match(/.*(windows|mac).*/)==null||f.o||f.c||(f.d&&(g.match(/.*mac.*/)!=null||f.i<7.6))||(f.b&&f.h<7)||(!f.b&&f.a&&f.k<312)||(f.m&&f.j<20020523))f.f=false;if(!f.o&&!f.m&&al.createElementNS)try{al.createElementNS(a,"i").innerHTML=""}catch(e){f.e=true}f.p=f.c||(f.a&&f.k<312);return f}();function at(){return{bIsWebKit:f.a,bIsSafari:f.b,bIsKonq:f.c,bIsOpera:f.d,bIsXML:f.e,bHasTransparencySupport:f.f,bUseDOM:f.g,nFlashVersion:f.h,nOperaVersion:f.i,nGeckoBuildDate:f.j,nWebKitVersion:f.k,bIsKHTML:f.l,bIsGecko:f.m,bIsIE:f.n,bIsIEMac:f.o,bUseInnerHTMLHack:f.p}}if(am.hasFlash==false||!al.getElementsByTagName||!al.getElementById||(f.e&&(f.p||f.n)))return{UA:at()};function af(e){if((!k.bAutoInit&&(am.event||e)!=null)||!l(e))return;b=true;for(var i=0,h=ah.length;i<h;i++)j.apply(null,ah[i]);ah=[]}var k=af;function l(e){if(c==false||k.bIsDisabled==true||((f.e&&f.m||f.l)&&e==null&&b==false)||al.getElementsByTagName("body").length==0)return false;return true}function m(n){if(f.n)return n.replace(new RegExp("%\d{0}","g"),"%25");return n.replace(new RegExp("%(?!\d)","g"),"%25")}function as(p,q){return q=="*"?true:p.nodeName.toLowerCase().replace("html:", "")==q.toLowerCase()}function o(p,q,r,s,t){var u="";var v=p.firstChild;var w,x,y,z;if(s==null)s=0;if(t==null)t="";while(v){if(v.nodeType==3){z=v.nodeValue.replace("<","&lt;");switch(r){case "lower":u+=z.toLowerCase();break;case "upper":u+=z.toUpperCase();break;default:u+=z}}else if(v.nodeType==1){if(as(v,"a")&&!v.getAttribute("href")==false){if(v.getAttribute("target"))t+="&sifr_url_"+s+"_target="+v.getAttribute("target");t+="&sifr_url_"+s+"="+m(v.getAttribute("href")).replace(/&/g,"%26");u+='<a href="asfunction:_root.launchURL,'+s+'">';s++}else if(as(v,"br"))u+="<br/>";if(v.hasChildNodes()){y=o(v,null,r,s,t);u+=y.u;s=y.s;t=y.t}if(as(v,"a"))u+="</a>"}w=v;v=v.nextSibling;if(q!=null){x=w.parentNode.removeChild(w);q.appendChild(x)}}return{"u":u,"s":s,"t":t}}function A(B){if(al.createElementNS&&f.g)return al.createElementNS(a,B);return al.createElement(B)}function C(D,E,z){var p=A("param");p.setAttribute("name",E);p.setAttribute("value",z);D.appendChild(p)}function F(p,G){var H=p.className;if(H==null)H=G;else H=H.normalize()+(H==""?"":" ")+G;p.className=H}function aq(ar){var a=ak;if(k.bHideBrowserText==false)a=al.getElementsByTagName("body")[0];if((k.bHideBrowserText==false||ar)&&a)if(a.className==null||a.className.match(/\bsIFR\-hasFlash\b/)==null)F(a, "sIFR-hasFlash")}function j(I,J,K,L,M,N,O,P,Q,R,S,r,T){if(!l())return ah.push(arguments);aq();named.extract(arguments,{sSelector:function(ap){I=ap},sFlashSrc:function(ap){J=ap},sColor:function(ap){K=ap},sLinkColor:function(ap){L=ap},sHoverColor:function(ap){M=ap},sBgColor:function(ap){N=ap},nPaddingTop:function(ap){O=ap},nPaddingRight:function(ap){P=ap},nPaddingBottom:function(ap){Q=ap},nPaddingLeft:function(ap){R=ap},sFlashVars:function(ap){S=ap},sCase:function(ap){r=ap},sWmode:function(ap){T=ap}});var U=parseSelector(I);if(U.length==0)return false;if(S!=null)S="&"+S.normalize();else S="";if(K!=null)S+="&textcolor="+K;if(M!=null)S+="&hovercolor="+M;if(M!=null||L!=null)S+="&linkcolor="+(L||K);if(O==null)O=0;if(P==null)P=0;if(Q==null)Q=0;if(R==null)R=0;if(N==null)N="#FFFFFF";if(T=="transparent")if(!f.f)T="opaque";else N="transparent";if(T==null)T="";var p,V,W,X,Y,Z,aa,ab,ac;var ad=null;for(var i=0,h=U.length;i<h;i++){p=U[i];if(p.className!=null&&p.className.match(/\bsIFR\-replaced\b/)!=null)continue;V=p.offsetWidth-R-P;W=p.offsetHeight-O-Q;aa=A("span");aa.className="sIFR-alternate";ac=o(p,aa,r);Z="txt="+m(ac.u).replace(/\+/g,"%2B").replace(/&/g,"%26").replace(/\"/g, "%22").normalize() + S + "&w=" + V + "&h=" + W + ac.t;F(p,"sIFR-replaced");if(ad==null||!f.g){if(!f.g){if(!f.n)p.innerHTML=['<embed class="sIFR-flash" type="application/x-shockwave-flash" src="',J,'" quality="best" wmode="',T,'" bgcolor="',N,'" flashvars="',Z,'" width="',V,'" height="',W,'" sifr="true"></embed>'].join("");else p.innerHTML=['<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" sifr="true" width="',V,'" height="',W,'" class="sIFR-flash"><param name="movie" value="',J,'"></param><param name="flashvars" value="',Z,'"></param><param name="quality" value="best"></param><param name="wmode" value="',T,'"></param><param name="bgcolor" value="',N,'"></param> </object>'].join('')}else{if(f.d){ab=A("object");ab.setAttribute("data",J);C(ab,"quality","best");C(ab,"wmode",T);C(ab,"bgcolor",N)}else{ab=A("embed");ab.setAttribute("src",J);ab.setAttribute("quality","best");ab.setAttribute("flashvars",Z);ab.setAttribute("wmode",T);ab.setAttribute("bgcolor",N)}ab.setAttribute("sifr","true");ab.setAttribute("type","application/x-shockwave-flash");ab.className="sIFR-flash";if(!f.l||!f.e)ad=ab.cloneNode(true)}}else ab=ad.cloneNode(true);if(f.g){if(f.d)C(ab,"flashvars",Z);else ab.setAttribute("flashvars",Z);ab.setAttribute("width",V);ab.setAttribute("height",W);ab.style.width=V+"px";ab.style.height=W+"px";p.appendChild(ab)}p.appendChild(aa);if(f.p)p.innerHTML+=""}if(f.n&&k.bFixFragIdBug)setTimeout(function(){al.title=d},0)}function ai(){d=al.title}function ae(){if(k.bIsDisabled==true)return;c=true;if(k.bHideBrowserText)aq(true);if(am.attachEvent)am.attachEvent("onload",af);else if(!f.c&&(al.addEventListener||am.addEventListener)){if(f.a&&f.k>=132&&am.addEventListener)am.addEventListener("load",function(){setTimeout("sIFR({})",1)},false);else{if(al.addEventListener)al.addEventListener("load",af,false);if(am.addEventListener)am.addEventListener("load",af,false)}}else if(typeof am.onload=="function"){var ag=am.onload;am.onload=function(){ag();af()}}else am.onload=af;if(!f.n||am.location.hash=="")k.bFixFragIdBug=false;else ai()}k.UA=at();k.bAutoInit=true;k.bFixFragIdBug=true;k.replaceElement=j;k.updateDocumentTitle=ai;k.appendToClassName=F;k.setup=ae;k.debug=function(){aq(true)};k.debug.replaceNow=function(){ae();k()};k.bIsDisabled=false;k.bHideBrowserText=true;return k}();

if(typeof sIFR == "function" && !sIFR.UA.bIsIEMac && (!sIFR.UA.bIsWebKit || sIFR.UA.nWebKitVersion >= 100)){
 sIFR.setup();
};
