/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;
(function(d){
    var k=d.scrollTo=function(a,i,e){
        d(window).scrollTo(a,i,e)
    };
        
    k.defaults={
        axis:'xy',
        duration:parseFloat(d.fn.jquery)>=1.3?0:1
    };
        
    k.window=function(a){
        return d(window)._scrollable()
    };
        
    d.fn._scrollable=function(){
        return this.map(function(){
            var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;
            if(!i)return a;
            var e=(a.contentWindow||a).document||a.ownerDocument||a;
            return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement
        })
    };
        
    d.fn.scrollTo=function(n,j,b){
        if(typeof j=='object'){
            b=j;
            j=0
        }
        if(typeof b=='function')b={
            onAfter:b
        };
        
        if(n=='max')n=9e9;
        b=d.extend({},k.defaults,b);
        j=j||b.speed||b.duration;
        b.queue=b.queue&&b.axis.length>1;
        if(b.queue)j/=2;
        b.offset=p(b.offset);
        b.over=p(b.over);
        return this._scrollable().each(function(){
            var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');
            switch(typeof f){
                case'number':case'string':
                    if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){
                        f=p(f);
                        break
                    }
                    f=d(f,this);
                case'object':
                    if(f.is||f.style)s=(f=d(f)).offset()
            }
            d.each(b.axis.split(''),function(a,i){
                var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);
                if(s){
                    g[c]=s[h]+(u?0:l-r.offset()[h]);
                    if(b.margin){
                        g[c]-=parseInt(f.css('margin'+e))||0;
                        g[c]-=parseInt(f.css('border'+e+'Width'))||0
                    }
                    g[c]+=b.offset[h]||0;
                    if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]
                }else{
                    var o=f[h];
                    g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o
                }
                if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);
                if(!a&&b.queue){
                    if(l!=g[c])t(b.onAfterFirst);
                    delete g[c]
                }
            });
            t(b.onAfter);
            function t(a){
                r.animate(g,j,b.easing,a&&function(){
                    a.call(this,n,b)
                })
            }
        }).end()
    };
    
    k.max=function(a,i){
        var e=i=='x'?'Width':'Height',h='scroll'+e;
        if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();
        var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;
        return Math.max(l[h],m[h])-Math.min(l[c],m[c])
    };
    
    function p(a){
        return typeof a=='object'?a:{
            top:a,
            left:a
        }
    }
})(jQuery);
/*!
 * jQuery.SerialScroll
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 06/14/2009
 *
 * @projectDescription Animated scrolling of series.
 * @author Ariel Flesler
 * @version 1.2.2
 *
 * @id jQuery.serialScroll
 * @id jQuery.fn.serialScroll
 * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.
 * @return {jQuery} Returns the same jQuery object, for chaining.
 *
 * @link {http://flesler.blogspot.com/2008/02/jqueryserialscroll.html Homepage}
 *
 * Notes:
 *	- The plugin requires jQuery.ScrollTo.
 *	- The hash of settings, is passed to jQuery.ScrollTo, so its settings can be used as well.
 */
;
(function( $ ){

    var $serialScroll = $.serialScroll = function( settings ){
        return $(window).serialScroll( settings );
    };

    // Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.
    // @link {http://demos.flesler.com/jquery/scrollTo/ ScrollTo's Demo}
    $serialScroll.defaults = {// the defaults are public and can be overriden.
        duration:1000, // how long to animate.
        axis:'x', // which of top and left should be scrolled
        event:'click', // on which event to react.
        start:0, // first element (zero-based index)
        step:1, // how many elements to scroll on each action
        lock:true,// ignore events if already animating
        cycle:true, // cycle endlessly ( constant velocity )
        constant:true // use contant speed ?
    /*
		navigation:null,// if specified, it's a selector a collection of items to navigate the container
		target:window, // if specified, it's a selector to the element to be scrolled.
		interval:0, // it's the number of milliseconds to automatically go to the next
		lazy:false,// go find the elements each time (allows AJAX or JS content, or reordering)
		stop:false, // stop any previous animations to avoid queueing
		force:false,// force the scroll to the first element on start ?
		jump: false,// if true, when the event is triggered on an element, the pane scrolls to it
		items:null, // selector to the items (relative to the matched elements)
		prev:null, // selector to the 'prev' button
		next:null, // selector to the 'next' button
		onBefore: function(){}, // function called before scrolling, if it returns false, the event is ignored
		exclude:0 // exclude the last x elements, so we cannot scroll past the end
		*/
    };

    $.fn.serialScroll = function( options ){

        return this.each(function(){
            var 
            settings = $.extend( {}, $serialScroll.defaults, options ),
            event = settings.event, // this one is just to get shorter code when compressed
            step = settings.step, // ditto
            lazy = settings.lazy, // ditto
            context = settings.target ? this : document, // if a target is specified, then everything's relative to 'this'.
            $pane = $(settings.target || this, context),// the element to be scrolled (will carry all the events)
            pane = $pane[0], // will be reused, save it into a variable
            items = settings.items, // will hold a lazy list of elements
            active = settings.start, // active index
            auto = settings.interval, // boolean, do auto or not
            nav = settings.navigation, // save it now to make the code shorter
            timer; // holds the interval id

            if( !lazy )// if not lazy, save the items now
                items = getItems();

            if( settings.force )
                jump( {}, active );// generate an initial call

            // Button binding, optional
            $(settings.prev||[], context).bind( event, -step, move );
            $(settings.next||[], context).bind( event, step, move );

            // Custom events bound to the container
            if( !pane.ssbound )// don't bind more than once
                $pane
                .bind('prev.serialScroll', -step, move ) // you can trigger with just 'prev'
                .bind('next.serialScroll', step, move ) // f.e: $(container).trigger('next');
                .bind('goto.serialScroll', jump ); // f.e: $(container).trigger('goto', 4 );

            if( auto )
                $pane
                .bind('start.serialScroll', function(e){
                    if( !auto ){
                        clear();
                        auto = true;
                        next();
                    }
                })
                .bind('stop.serialScroll', function(){// stop a current animation
                    clear();
                    auto = false;
                });

            $pane.bind('notify.serialScroll', function(e, elem){// let serialScroll know that the index changed externally
                var i = index(elem);
                if( i > -1 )
                    active = i;
            });

            pane.ssbound = true;// avoid many bindings

            if( settings.jump )// can't use jump if using lazy items and a non-bubbling event
                (lazy ? $pane : getItems()).bind( event, function( e ){
                    jump( e, index(e.target) );
                });

            if( nav )
                nav = $(nav, context).bind(event, function( e ){
                    e.data = Math.round(getItems().length / nav.length) * nav.index(this);
                    jump( e, this );
                });

            function move( e ){
                e.data += active;
                jump( e, this );
            };
            function jump( e, button ){
                if( !isNaN(button) ){// initial or special call from the outside $(container).trigger('goto',[index]);
                    e.data = button;
                    button = pane;
                }

                var
                pos = e.data, n,
                real = e.type, // is a real event triggering ?
                $items = settings.exclude ? getItems().slice(0,-settings.exclude) : getItems(),// handle a possible exclude
                limit = $items.length,
                elem = $items[pos],
                duration = settings.duration;

                if( real )// real event object
                    e.preventDefault();

                if( auto ){
                    clear();// clear any possible automatic scrolling.
                    timer = setTimeout( next, settings.interval ); 
                }

                if( !elem ){ // exceeded the limits
                    n = pos < 0 ? 0 : limit - 1;
                    if( active != n )// we exceeded for the first time
                        pos = n;
                    else if( !settings.cycle )// this is a bad case
                        return;
                    else
                        pos = limit - n - 1;// invert, go to the other side
                    elem = $items[pos];
                }

                if( !elem || settings.lock && $pane.is(':animated') || // no animations while busy
                    real && settings.onBefore &&
                    settings.onBefore(e, elem, $pane, getItems(), pos) === false ) return;

                if( settings.stop )
                    $pane.queue('fx',[]).stop();// remove all its animations

                if( settings.constant )
                    duration = Math.abs(duration/step * (active - pos ));// keep constant velocity

                $pane
                .scrollTo( elem, duration, settings )// do scroll
                .trigger('notify.serialScroll',[pos]);// in case serialScroll was called on this elem more than once.
            };

            function next(){// I'll use the namespace to avoid conflicts
                $pane.trigger('next.serialScroll');
            };

            function clear(){
                clearTimeout(timer);
            };

            function getItems(){
                return $( items, pane );
            };

            function index( elem ){
                if( !isNaN(elem) ) return elem;// number
                var $items = getItems(), i;
                while(( i = $items.index(elem)) == -1 && elem != pane )// see if it matches or one of its ancestors
                    elem = elem.parentNode;
                return i;
            };
        });
    };

})( jQuery );

/*
 * jQuery Nivo Slider v2.5.1
 * http://nivo.dev7studios.com
 *
 * Copyright 2011, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * March 2010
 */

(function($){
    var NivoSlider=function(element,options){
        var settings=$.extend({},$.fn.nivoSlider.defaults,options);
        var vars={
            currentSlide:0,
            currentImage:'',
            totalSlides:0,
            randAnim:'',
            running:false,
            paused:false,
            stop:false
        };
        
        var slider=$(element);
        slider.data('nivo:vars',vars);
        slider.css('position','relative');
        slider.addClass('nivoSlider');
        var kids=slider.children();
        kids.each(function(){
            var child=$(this);
            var link='';
            if(!child.is('img')){
                if(child.is('a')){
                    child.addClass('nivo-imageLink');
                    link=child;
                }
                child=child.find('img:first');
            }
            var childWidth=child.width();
            if(childWidth==0)childWidth=child.attr('width');
            var childHeight=child.height();
            if(childHeight==0)childHeight=child.attr('height');
            if(childWidth>slider.width()){
                slider.width(childWidth);
            }
            if(childHeight>slider.height()){
                slider.height(childHeight);
            }
            if(link!=''){
                link.css('display','none');
            }
            child.css('display','none');
            vars.totalSlides++;
        });
        if(settings.startSlide>0){
            if(settings.startSlide>=vars.totalSlides)settings.startSlide=vars.totalSlides-1;
            vars.currentSlide=settings.startSlide;
        }
        if($(kids[vars.currentSlide]).is('img')){
            vars.currentImage=$(kids[vars.currentSlide]);
        }else{
            vars.currentImage=$(kids[vars.currentSlide]).find('img:first');
        }
        if($(kids[vars.currentSlide]).is('a')){
            $(kids[vars.currentSlide]).css('display','block');
        }
        slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
        slider.append($('<div class="nivo-caption"><p></p></div>').css({
            display:'none',
            opacity:settings.captionOpacity
        }));
        var processCaption=function(settings){
            var nivoCaption=$('.nivo-caption',slider);
            if(vars.currentImage.attr('title')!=''){
                var title=vars.currentImage.attr('title');
                if(title.substr(0,1)=='#')title=$(title).html();
                if(nivoCaption.css('display')=='block'){
                    nivoCaption.find('p').fadeOut(settings.animSpeed,function(){
                        $(this).html(title);
                        $(this).fadeIn(settings.animSpeed);
                    });
                }else{
                    nivoCaption.find('p').html(title);
                }
                nivoCaption.fadeIn(settings.animSpeed);
            }else{
                nivoCaption.fadeOut(settings.animSpeed);
            }
        }
        processCaption(settings);
        var timer=0;
        if(!settings.manualAdvance&&kids.length>1){
            timer=setInterval(function(){
                nivoRun(slider,kids,settings,false);
            },settings.pauseTime);
        }
        if(settings.directionNav){
            slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+settings.prevText+'</a><a class="nivo-nextNav">'+settings.nextText+'</a></div>');
            if(settings.directionNavHide){
                $('.nivo-directionNav',slider).hide();
                slider.hover(function(){
                    $('.nivo-directionNav',slider).show();
                },function(){
                    $('.nivo-directionNav',slider).hide();
                });
            }
            $('a.nivo-prevNav',slider).live('click',function(){
                if(vars.running)return false;
                clearInterval(timer);
                timer='';
                vars.currentSlide-=2;
                nivoRun(slider,kids,settings,'prev');
            });
            $('a.nivo-nextNav',slider).live('click',function(){
                if(vars.running)return false;
                clearInterval(timer);
                timer='';
                nivoRun(slider,kids,settings,'next');
            });
        }
        if(settings.controlNav){
            var nivoControl=$('<div class="nivo-controlNav"></div>');
            slider.append(nivoControl);
            for(var i=0;i<kids.length;i++){
                if(settings.controlNavThumbs){
                    var child=kids.eq(i);
                    if(!child.is('img')){
                        child=child.find('img:first');
                    }
                    if(settings.controlNavThumbsFromRel){
                        nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('rel')+'" alt="" /></a>');
                    }else{
                        nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('src').replace(settings.controlNavThumbsSearch,settings.controlNavThumbsReplace)+'" alt="" /></a>');
                    }
                }else{
                    nivoControl.append('<a class="nivo-control" rel="'+i+'">'+(i+1)+'</a>');
                }
            }
            $('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');
            $('.nivo-controlNav a',slider).live('click',function(){
                if(vars.running)return false;
                if($(this).hasClass('active'))return false;
                clearInterval(timer);
                timer='';
                slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
                vars.currentSlide=$(this).attr('rel')-1;
                nivoRun(slider,kids,settings,'control');
            });
        }
        if(settings.keyboardNav){
            $(window).keypress(function(event){
                if(event.keyCode=='37'){
                    if(vars.running)return false;
                    clearInterval(timer);
                    timer='';
                    vars.currentSlide-=2;
                    nivoRun(slider,kids,settings,'prev');
                }
                if(event.keyCode=='39'){
                    if(vars.running)return false;
                    clearInterval(timer);
                    timer='';
                    nivoRun(slider,kids,settings,'next');
                }
            });
        }
        if(settings.pauseOnHover){
            slider.hover(function(){
                vars.paused=true;
                clearInterval(timer);
                timer='';
            },function(){
                vars.paused=false;
                if(timer==''&&!settings.manualAdvance){
                    timer=setInterval(function(){
                        nivoRun(slider,kids,settings,false);
                    },settings.pauseTime);
                }
            });
        }
        slider.bind('nivo:animFinished',function(){
            vars.running=false;
            $(kids).each(function(){
                if($(this).is('a')){
                    $(this).css('display','none');
                }
            });
            if($(kids[vars.currentSlide]).is('a')){
                $(kids[vars.currentSlide]).css('display','block');
            }
            if(timer==''&&!vars.paused&&!settings.manualAdvance){
                timer=setInterval(function(){
                    nivoRun(slider,kids,settings,false);
                },settings.pauseTime);
            }
            settings.afterChange.call(this);
        });
        var createSlices=function(slider,settings,vars){
            for(var i=0;i<settings.slices;i++){
                var sliceWidth=Math.round(slider.width()/settings.slices);
                if(i==settings.slices-1){
                    slider.append($('<div class="nivo-slice"></div>').css({
                        left:(sliceWidth*i)+'px',
                        width:(slider.width()-(sliceWidth*i))+'px',
                        height:'0px',
                        opacity:'0',
                        background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((sliceWidth+(i*sliceWidth))-sliceWidth)+'px 0%'
                    }));
                }else{
                    slider.append($('<div class="nivo-slice"></div>').css({
                        left:(sliceWidth*i)+'px',
                        width:sliceWidth+'px',
                        height:'0px',
                        opacity:'0',
                        background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((sliceWidth+(i*sliceWidth))-sliceWidth)+'px 0%'
                    }));
                }
            }
        }
        var createBoxes=function(slider,settings,vars){
            var boxWidth=Math.round(slider.width()/settings.boxCols);
            var boxHeight=Math.round(slider.height()/settings.boxRows);
            for(var rows=0;rows<settings.boxRows;rows++){
                for(var cols=0;cols<settings.boxCols;cols++){
                    if(cols==settings.boxCols-1){
                        slider.append($('<div class="nivo-box"></div>').css({
                            opacity:0,
                            left:(boxWidth*cols)+'px',
                            top:(boxHeight*rows)+'px',
                            width:(slider.width()-(boxWidth*cols))+'px',
                            height:boxHeight+'px',
                            background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((boxWidth+(cols*boxWidth))-boxWidth)+'px -'+((boxHeight+(rows*boxHeight))-boxHeight)+'px'
                        }));
                    }else{
                        slider.append($('<div class="nivo-box"></div>').css({
                            opacity:0,
                            left:(boxWidth*cols)+'px',
                            top:(boxHeight*rows)+'px',
                            width:boxWidth+'px',
                            height:boxHeight+'px',
                            background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((boxWidth+(cols*boxWidth))-boxWidth)+'px -'+((boxHeight+(rows*boxHeight))-boxHeight)+'px'
                        }));
                    }
                }
            }
        }
        var nivoRun=function(slider,kids,settings,nudge){
            var vars=slider.data('nivo:vars');
            if(vars&&(vars.currentSlide==vars.totalSlides-1)){
                settings.lastSlide.call(this);
            }
            if((!vars||vars.stop)&&!nudge)return false;
            settings.beforeChange.call(this);
            if(!nudge){
                slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
            }else{
                if(nudge=='prev'){
                    slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
                }
                if(nudge=='next'){
                    slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
                }
            }
            vars.currentSlide++;
            if(vars.currentSlide==vars.totalSlides){
                vars.currentSlide=0;
                settings.slideshowEnd.call(this);
            }
            if(vars.currentSlide<0)vars.currentSlide=(vars.totalSlides-1);
            if($(kids[vars.currentSlide]).is('img')){
                vars.currentImage=$(kids[vars.currentSlide]);
            }else{
                vars.currentImage=$(kids[vars.currentSlide]).find('img:first');
            }
            if(settings.controlNav){
                $('.nivo-controlNav a',slider).removeClass('active');
                $('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');
            }
            processCaption(settings);
            $('.nivo-slice',slider).remove();
            $('.nivo-box',slider).remove();
            if(settings.effect=='random'){
                var anims=new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
                vars.randAnim=anims[Math.floor(Math.random()*(anims.length+1))];
                if(vars.randAnim==undefined)vars.randAnim='fade';
            }
            if(settings.effect.indexOf(',')!=-1){
                var anims=settings.effect.split(',');
                vars.randAnim=anims[Math.floor(Math.random()*(anims.length))];
                if(vars.randAnim==undefined)vars.randAnim='fade';
            }
            vars.running=true;
            if(settings.effect=='sliceDown'||settings.effect=='sliceDownRight'||vars.randAnim=='sliceDownRight'||settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft'){
                createSlices(slider,settings,vars);
                var timeBuff=0;
                var i=0;
                var slices=$('.nivo-slice',slider);
                if(settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft')slices=$('.nivo-slice',slider)._reverse();
                slices.each(function(){
                    var slice=$(this);
                    slice.css({
                        'top':'0px'
                    });
                    if(i==settings.slices-1){
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed,'',function(){
                                slider.trigger('nivo:animFinished');
                            });
                        },(100+timeBuff));
                    }else{
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed);
                        },(100+timeBuff));
                    }
                    timeBuff+=50;
                    i++;
                });
            }
            else if(settings.effect=='sliceUp'||settings.effect=='sliceUpRight'||vars.randAnim=='sliceUpRight'||settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft'){
                createSlices(slider,settings,vars);
                var timeBuff=0;
                var i=0;
                var slices=$('.nivo-slice',slider);
                if(settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft')slices=$('.nivo-slice',slider)._reverse();
                slices.each(function(){
                    var slice=$(this);
                    slice.css({
                        'bottom':'0px'
                    });
                    if(i==settings.slices-1){
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed,'',function(){
                                slider.trigger('nivo:animFinished');
                            });
                        },(100+timeBuff));
                    }else{
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed);
                        },(100+timeBuff));
                    }
                    timeBuff+=50;
                    i++;
                });
            }
            else if(settings.effect=='sliceUpDown'||settings.effect=='sliceUpDownRight'||vars.randAnim=='sliceUpDown'||settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft'){
                createSlices(slider,settings,vars);
                var timeBuff=0;
                var i=0;
                var v=0;
                var slices=$('.nivo-slice',slider);
                if(settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft')slices=$('.nivo-slice',slider)._reverse();
                slices.each(function(){
                    var slice=$(this);
                    if(i==0){
                        slice.css('top','0px');
                        i++;
                    }else{
                        slice.css('bottom','0px');
                        i=0;
                    }
                    if(v==settings.slices-1){
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed,'',function(){
                                slider.trigger('nivo:animFinished');
                            });
                        },(100+timeBuff));
                    }else{
                        setTimeout(function(){
                            slice.animate({
                                height:'100%',
                                opacity:'1.0'
                            },settings.animSpeed);
                        },(100+timeBuff));
                    }
                    timeBuff+=50;
                    v++;
                });
            }
            else if(settings.effect=='fold'||vars.randAnim=='fold'){
                createSlices(slider,settings,vars);
                var timeBuff=0;
                var i=0;
                $('.nivo-slice',slider).each(function(){
                    var slice=$(this);
                    var origWidth=slice.width();
                    slice.css({
                        top:'0px',
                        height:'100%',
                        width:'0px'
                    });
                    if(i==settings.slices-1){
                        setTimeout(function(){
                            slice.animate({
                                width:origWidth,
                                opacity:'1.0'
                            },settings.animSpeed,'',function(){
                                slider.trigger('nivo:animFinished');
                            });
                        },(100+timeBuff));
                    }else{
                        setTimeout(function(){
                            slice.animate({
                                width:origWidth,
                                opacity:'1.0'
                            },settings.animSpeed);
                        },(100+timeBuff));
                    }
                    timeBuff+=50;
                    i++;
                });
            }
            else if(settings.effect=='fade'||vars.randAnim=='fade'){
                createSlices(slider,settings,vars);
                var firstSlice=$('.nivo-slice:first',slider);
                firstSlice.css({
                    'height':'100%',
                    'width':slider.width()+'px'
                });
                firstSlice.animate({
                    opacity:'1.0'
                },(settings.animSpeed*2),'',function(){
                    slider.trigger('nivo:animFinished');
                });
            }
            else if(settings.effect=='slideInRight'||vars.randAnim=='slideInRight'){
                createSlices(slider,settings,vars);
                var firstSlice=$('.nivo-slice:first',slider);
                firstSlice.css({
                    'height':'100%',
                    'width':'0px',
                    'opacity':'1'
                });
                firstSlice.animate({
                    width:slider.width()+'px'
                },(settings.animSpeed*2),'',function(){
                    slider.trigger('nivo:animFinished');
                });
            }
            else if(settings.effect=='slideInLeft'||vars.randAnim=='slideInLeft'){
                createSlices(slider,settings,vars);
                var firstSlice=$('.nivo-slice:first',slider);
                firstSlice.css({
                    'height':'100%',
                    'width':'0px',
                    'opacity':'1',
                    'left':'',
                    'right':'0px'
                });
                firstSlice.animate({
                    width:slider.width()+'px'
                },(settings.animSpeed*2),'',function(){
                    firstSlice.css({
                        'left':'0px',
                        'right':''
                    });
                    slider.trigger('nivo:animFinished');
                });
            }
            else if(settings.effect=='boxRandom'||vars.randAnim=='boxRandom'){
                createBoxes(slider,settings,vars);
                var totalBoxes=settings.boxCols*settings.boxRows;
                var i=0;
                var timeBuff=0;
                var boxes=shuffle($('.nivo-box',slider));
                boxes.each(function(){
                    var box=$(this);
                    if(i==totalBoxes-1){
                        setTimeout(function(){
                            box.animate({
                                opacity:'1'
                            },settings.animSpeed,'',function(){
                                slider.trigger('nivo:animFinished');
                            });
                        },(100+timeBuff));
                    }else{
                        setTimeout(function(){
                            box.animate({
                                opacity:'1'
                            },settings.animSpeed);
                        },(100+timeBuff));
                    }
                    timeBuff+=20;
                    i++;
                });
            }
            else if(settings.effect=='boxRain'||vars.randAnim=='boxRain'||settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
                createBoxes(slider,settings,vars);
                var totalBoxes=settings.boxCols*settings.boxRows;
                var i=0;
                var timeBuff=0;
                var rowIndex=0;
                var colIndex=0;
                var box2Darr=new Array();
                box2Darr[rowIndex]=new Array();
                var boxes=$('.nivo-box',slider);
                if(settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
                    boxes=$('.nivo-box',slider)._reverse();
                }
                boxes.each(function(){
                    box2Darr[rowIndex][colIndex]=$(this);
                    colIndex++;
                    if(colIndex==settings.boxCols){
                        rowIndex++;
                        colIndex=0;
                        box2Darr[rowIndex]=new Array();
                    }
                });
                for(var cols=0;cols<(settings.boxCols*2);cols++){
                    var prevCol=cols;
                    for(var rows=0;rows<settings.boxRows;rows++){
                        if(prevCol>=0&&prevCol<settings.boxCols){
                            (function(row,col,time,i,totalBoxes){
                                var box=$(box2Darr[row][col]);
                                var w=box.width();
                                var h=box.height();
                                if(settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
                                    box.width(0).height(0);
                                }
                                if(i==totalBoxes-1){
                                    setTimeout(function(){
                                        box.animate({
                                            opacity:'1',
                                            width:w,
                                            height:h
                                        },settings.animSpeed/1.3,'',function(){
                                            slider.trigger('nivo:animFinished');
                                        });
                                    },(100+time));
                                }else{
                                    setTimeout(function(){
                                        box.animate({
                                            opacity:'1',
                                            width:w,
                                            height:h
                                        },settings.animSpeed/1.3);
                                    },(100+time));
                                }
                            })(rows,prevCol,timeBuff,i,totalBoxes);
                            i++;
                        }
                        prevCol--;
                    }
                    timeBuff+=100;
                }
            }
        }
        var shuffle=function(arr){
            for(var j,x,i=arr.length;i;j=parseInt(Math.random()*i),x=arr[--i],arr[i]=arr[j],arr[j]=x);
            return arr;
        }
        var trace=function(msg){
            if(this.console&&typeof console.log!="undefined")
                console.log(msg);
        }
        this.stop=function(){
            if(!$(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop=true;
                trace('Stop Slider');
            }
        }
        this.start=function(){
            if($(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop=false;
                trace('Start Slider');
            }
        }
        settings.afterLoad.call(this);
        return this;
    };

    $.fn.nivoSlider=function(options){
        return this.each(function(key,value){
            var element=$(this);
            if(element.data('nivoslider'))return element.data('nivoslider');
            var nivoslider=new NivoSlider(this,options);
            element.data('nivoslider',nivoslider);
        });
    };

    $.fn.nivoSlider.defaults={
        effect:'random',
        slices:15,
        boxCols:8,
        boxRows:4,
        animSpeed:500,
        pauseTime:3000,
        startSlide:0,
        directionNav:true,
        directionNavHide:true,
        controlNav:true,
        controlNavThumbs:false,
        controlNavThumbsFromRel:false,
        controlNavThumbsSearch:'.jpg',
        controlNavThumbsReplace:'_thumb.jpg',
        keyboardNav:true,
        pauseOnHover:true,
        manualAdvance:false,
        captionOpacity:0.8,
        prevText:'Anterior',
        nextText:'Siguiente',
        beforeChange:function(){},
        afterChange:function(){},
        slideshowEnd:function(){},
        lastSlide:function(){},
        afterLoad:function(){}
    };

    $.fn._reverse=[].reverse;
})(jQuery);
(function(e){
    var j=this,m=j.document,A=e(m),w=!1,o=navigator.userAgent.toLowerCase(),B=j.location.hash.replace(/#\//,""),p=function(){
        return g.TOUCH?"touchstart":"click"
    },n=function(){
        var a=3,b=m.createElement("div"),c=b.getElementsByTagName("i");
        do b.innerHTML="<\!--[if gt IE "+ ++a+"]><i></i><![endif]--\>";while(c[0]);
        return a>4?a:void 0
    }(),q=function(){
        return{
            html:m.documentElement,
            body:m.body,
            head:m.getElementsByTagName("head")[0],
            title:m.title
        }
    },C=function(){
        var a=[];
        e.each("data ready thumbnail loadstart loadfinish image play pause progress fullscreen_enter fullscreen_exit idle_enter idle_exit rescale lightbox_open lightbox_close lightbox_image".split(" "),
            function(b,c){
                a.push(c);
                /_/.test(c)&&a.push(c.replace(/_/g,""))
            });
        return a
    }(),D=function(a){
        var b;
        if(typeof a!=="object")return a;
        e.each(a,function(c,d){
            /^[a-z]+_/.test(c)&&(b="",e.each(c.split("_"),function(a,c){
                b+=a>0?c.substr(0,1).toUpperCase()+c.substr(1):c
            }),a[b]=d,delete a[c])
        });
        return a
    },x=function(a){
        if(e.inArray(a,C)>-1)return g[a.toUpperCase()];
        return a
    },r={
        trunk:{},
        add:function(a,b,c,d){
            d=d||!1;
            this.clear(a);
            if(d)var e=b,b=function(){
                e();
                r.add(a,b,c)
            };
            
            this.trunk[a]=j.setTimeout(b,c)
        },
        clear:function(a){
            var b=
            function(a){
                j.clearTimeout(this.trunk[a]);
                delete this.trunk[a]
            },c;
            if(a&&a in this.trunk)b.call(r,a);
            else if(typeof a==="undefined")for(c in this.trunk)this.trunk.hasOwnProperty(c)&&b.call(r,c)
        }
    },t=[],f=function(){
        return{
            array:function(a){
                return Array.prototype.slice.call(a)
            },
            create:function(a,b){
                var c=m.createElement(b||"div");
                c.className=a;
                return c
            },
            forceStyles:function(a,b){
                a=e(a);
                a.attr("style")&&a.data("styles",a.attr("style")).removeAttr("style");
                a.css(b)
            },
            revertStyles:function(){
                e.each(f.array(arguments),
                    function(a,b){
                        b=e(b).removeAttr("style");
                        b.data("styles")&&b.attr("style",b.data("styles")).data("styles",null)
                    })
            },
            moveOut:function(a){
                f.forceStyles(a,{
                    position:"absolute",
                    left:-1E4
                })
            },
            moveIn:function(){
                f.revertStyles.apply(f,f.array(arguments))
            },
            hide:function(a,b,c){
                a=e(a);
                a.data("opacity")||a.data("opacity",a.css("opacity"));
                var d={
                    opacity:0
                };
            
                b?a.stop().animate(d,b,c):a.css(d)
            },
            show:function(a,b,c){
                var a=e(a),d={
                    opacity:parseFloat(a.data("opacity"))||1
                };
                
                b?a.stop().animate(d,b,c):a.css(d)
            },
            addTimer:function(){
                r.add.apply(r,
                    f.array(arguments));
                return this
            },
            clearTimer:function(){
                r.clear.apply(r,f.array(arguments));
                return this
            },
            wait:function(a){
                var a=e.extend({
                    until:function(){
                        return!1
                    },
                    success:function(){},
                    error:function(){
                        g.raise("Could not complete wait function.")
                    },
                    timeout:3E3
                },a),b=f.timestamp(),c,d,i=function(){
                    d=f.timestamp();
                    c=d-b;
                    if(a.until(c))return a.success(),!1;
                    if(d>=b+a.timeout)return a.error(),!1;
                    j.setTimeout(i,2)
                };
                
                j.setTimeout(i,2)
            },
            toggleQuality:function(a,b){
                if(!(n!==7&&n!==8)&&a)typeof b==="undefined"&&
                    (b=a.style.msInterpolationMode==="nearest-neighbor"),a.style.msInterpolationMode=b?"bicubic":"nearest-neighbor"
            },
            insertStyleTag:function(a){
                var b=m.createElement("style");
                q().head.appendChild(b);
                b.styleSheet?b.styleSheet.cssText=a:(a=m.createTextNode(a),b.appendChild(a))
            },
            loadScript:function(a,b){
                var c=!1,d=e("<script>").attr({
                    src:a,
                    async:!0
                }).get(0);
                d.onload=d.onreadystatechange=function(){
                    if(!c&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete"))c=!0,d.onload=d.onreadystatechange=
                        null,typeof b==="function"&&b.call(this,this)
                };
                    
                q().head.appendChild(d)
            },
            parseValue:function(a){
                return typeof a==="number"?a:typeof a==="string"?(a=a.match(/\-?\d/g))&&a.constructor===Array?parseInt(a.join(""),10):0:0
            },
            timestamp:function(){
                return(new Date).getTime()
            },
            loadCSS:function(a,b,c){
                var d,i=!1,l;
                e("link[rel=stylesheet]").each(function(){
                    if(RegExp(a).test(this.href))return d=this,!1
                });
                typeof b==="function"&&(c=b,b=void 0);
                c=c||function(){};
            
                if(d)return c.call(d,d),d;
                l=m.styleSheets.length;
                w&&
                (a+="?"+f.timestamp());
                e("#"+b).length?(e("#"+b).attr("href",a),l--,i=!0):(d=e("<link>").attr({
                    rel:"stylesheet",
                    href:a,
                    id:b
                }).get(0),j.setTimeout(function(){
                    var a=e('link[rel="stylesheet"], style');
                    a.length?a.get(0).parentNode.insertBefore(d,a[0]):q().head.appendChild(d);
                    n?d.attachEvent("onreadystatechange",function(){
                        d.readyState==="complete"&&(i=!0)
                    }):i=!0
                },10));
                typeof c==="function"&&f.wait({
                    until:function(){
                        return i&&m.styleSheets.length>l
                    },
                    success:function(){
                        f.addTimer("css",function(){
                            c.call(d,
                                d)
                        },100)
                    },
                    error:function(){
                        g.raise("Theme CSS could not load")
                    },
                    timeout:1E4
                });
                return d
            }
        }
    }(),y={
        fade:function(a,b){
            e(a.next).css("opacity",0).show().animate({
                opacity:1
            },a.speed,b);
            a.prev&&e(a.prev).css("opacity",1).show().animate({
                opacity:0
            },a.speed)
        },
        flash:function(a,b){
            e(a.next).css("opacity",0);
            a.prev?e(a.prev).animate({
                opacity:0
            },a.speed/2,function(){
                e(a.next).animate({
                    opacity:1
                },a.speed,b)
            }):e(a.next).animate({
                opacity:1
            },a.speed,b)
        },
        pulse:function(a,b){
            a.prev&&e(a.prev).hide();
            e(a.next).css("opacity",
                0).animate({
                opacity:1
            },a.speed,b)
        },
        slide:function(a,b){
            var c=e(a.next).parent(),d=this.$("images"),f=this._stageWidth,g=this.getOptions("easing");
            c.css({
                left:f*(a.rewind?-1:1)
            });
            d.animate({
                left:f*(a.rewind?1:-1)
            },{
                duration:a.speed,
                queue:!1,
                easing:g,
                complete:function(){
                    d.css("left",0);
                    c.css("left",0);
                    b()
                }
            })
        },
        fadeslide:function(a,b){
            var c=0,d=this.getOptions("easing"),g=this.getStageWidth();
            a.prev&&(c=f.parseValue(e(a.prev).css("left")),e(a.prev).css({
                opacity:1,
                left:c
            }).animate({
                opacity:0,
                left:c+g*
                (a.rewind?1:-1)
            },{
                duration:a.speed,
                queue:!1,
                easing:d
            }));
            c=f.parseValue(e(a.next).css("left"));
            e(a.next).css({
                left:c+g*(a.rewind?-1:1),
                opacity:0
            }).animate({
                opacity:1,
                left:c
            },{
                duration:a.speed,
                complete:b,
                queue:!1,
                easing:d
            })
        }
    },g=function(){
        var a=this;
        this._theme=void 0;
        this._options={};
    
        this._playing=!1;
        this._playtime=5E3;
        this._active=null;
        this._queue={
            length:0
        };
    
        this._data=[];
        this._dom={};
    
        this._thumbnails=[];
        this._initialized=!1;
        this._stageHeight=this._stageWidth=0;
        this._target=void 0;
        this._id=Math.random();
        e.each("container stage images image-nav image-nav-left image-nav-right info info-text info-title info-description thumbnails thumbnails-list thumbnails-container thumb-nav-left thumb-nav-right loader counter tooltip".split(" "),function(b,c){
            a._dom[c]=f.create("galleria-"+c)
        });
        e.each("current total".split(" "),function(b,c){
            a._dom[c]=f.create("galleria-"+c,"span")
        });
        var b=this._keyboard={
            keys:{
                UP:38,
                DOWN:40,
                LEFT:37,
                RIGHT:39,
                RETURN:13,
                ESCAPE:27,
                BACKSPACE:8,
                SPACE:32
            },
            map:{},
            bound:!1,
            press:function(c){
                var d=
                c.keyCode||c.which;
                d in b.map&&typeof b.map[d]==="function"&&b.map[d].call(a,c)
            },
            attach:function(a){
                var c,d;
                for(c in a)a.hasOwnProperty(c)&&(d=c.toUpperCase(),d in b.keys?b.map[b.keys[d]]=a[c]:b.map[d]=a[c]);if(!b.bound)b.bound=!0,A.bind("keydown",b.press)
            },
            detach:function(){
                b.bound=!1;
                b.map={};
            
                A.unbind("keydown",b.press)
            }
        },c=this._controls={
            0:void 0,
            1:void 0,
            active:0,
            swap:function(){
                c.active=c.active?0:1
            },
            getActive:function(){
                return c[c.active]
            },
            getNext:function(){
                return c[1-c.active]
            }
        },d=this._carousel=
        {
            next:a.$("thumb-nav-right"),
            prev:a.$("thumb-nav-left"),
            width:0,
            current:0,
            max:0,
            hooks:[],
            update:function(){
                var b=0,c=0,f=[0];
                e.each(a._thumbnails,function(a,d){
                    d.ready&&(b+=d.outerWidth||e(d.container).outerWidth(!0),f[a+1]=b,c=Math.max(c,d.outerHeight||e(d.container).outerHeight(!0)))
                });
                a.$("thumbnails").css({
                    width:b,
                    height:c
                });
                d.max=b;
                d.hooks=f;
                d.width=a.$("thumbnails-list").width();
                d.setClasses();
                a.$("thumbnails-container").toggleClass("galleria-carousel",b>d.width);
                d.width=a.$("thumbnails-list").width()
            },
            bindControls:function(){
                var b;
                d.next.bind(p(),function(c){
                    c.preventDefault();
                    if(a._options.carouselSteps==="auto")for(b=d.current;b<d.hooks.length;b++){
                        if(d.hooks[b]-d.hooks[d.current]>d.width){
                            d.set(b-2);
                            break
                        }
                    }else d.set(d.current+a._options.carouselSteps)
                });
                d.prev.bind(p(),function(c){
                    c.preventDefault();
                    if(a._options.carouselSteps==="auto")for(b=d.current;b>=0;b--)if(d.hooks[d.current]-d.hooks[b]>d.width){
                        d.set(b+2);
                        break
                    }else{
                        if(b===0){
                            d.set(0);
                            break
                        }
                    }else d.set(d.current-a._options.carouselSteps)
                })
            },
            set:function(a){
                for(a=Math.max(a,0);d.hooks[a-1]+d.width>=d.max&&a>=0;)a--;
                d.current=a;
                d.animate()
            },
            getLast:function(a){
                return(a||d.current)-1
            },
            follow:function(a){
                if(a===0||a===d.hooks.length-2)d.set(a);
                else{
                    for(var b=d.current;d.hooks[b]-d.hooks[d.current]<d.width&&b<=d.hooks.length;)b++;
                    a-1<d.current?d.set(a-1):a+2>b&&d.set(a-b+d.current+2)
                }
            },
            setClasses:function(){
                d.prev.toggleClass("disabled",!d.current);
                d.next.toggleClass("disabled",d.hooks[d.current]+d.width>=d.max)
            },
            animate:function(){
                d.setClasses();
                var b=d.hooks[d.current]*-1;
                isNaN(b)||a.$("thumbnails").animate({
                    left:b
                },{
                    duration:a._options.carouselSpeed,
                    easing:a._options.easing,
                    queue:!1
                })
            }
        },i=this._tooltip={
            initialized:!1,
            open:!1,
            init:function(){
                i.initialized=!0;
                f.insertStyleTag(".galleria-tooltip{padding:3px 8px;max-width:50%;background:#ffe;color:#000;z-index:3;position:absolute;font-size:11px;line-height:1.3opacity:0;box-shadow:0 0 2px rgba(0,0,0,.4);-moz-box-shadow:0 0 2px rgba(0,0,0,.4);-webkit-box-shadow:0 0 2px rgba(0,0,0,.4);}");
                a.$("tooltip").css("opacity",
                    0.8);
                f.hide(a.get("tooltip"))
            },
            move:function(b){
                var c=a.getMousePosition(b).x,b=a.getMousePosition(b).y,d=a.$("tooltip"),e=b,f=d.outerHeight(!0)+1,g=d.outerWidth(!0),i=f+15,g=a.$("container").width()-g-2,f=a.$("container").height()-f-2;
                !isNaN(c)&&!isNaN(e)&&(c+=10,e-=30,c=Math.max(0,Math.min(g,c)),e=Math.max(0,Math.min(f,e)),b<i&&(e=i),d.css({
                    left:c,
                    top:e
                }))
            },
            bind:function(b,c){
                i.initialized||i.init();
                var d=function(b,c){
                    i.define(b,c);
                    e(b).hover(function(){
                        f.clearTimer("switch_tooltip");
                        a.$("container").unbind("mousemove",
                            i.move).bind("mousemove",i.move).trigger("mousemove");
                        i.show(b);
                        g.utils.addTimer("tooltip",function(){
                            a.$("tooltip").stop().show();
                            f.show(a.get("tooltip"),400);
                            i.open=!0
                        },i.open?0:500)
                    },function(){
                        a.$("container").unbind("mousemove",i.move);
                        f.clearTimer("tooltip");
                        a.$("tooltip").stop();
                        f.hide(a.get("tooltip"),200,function(){
                            a.$("tooltip").hide();
                            f.addTimer("switch_tooltip",function(){
                                i.open=!1
                            },1E3)
                        })
                    })
                };
            
                typeof c==="string"?d(b in a._dom?a.get(b):b,c):e.each(b,function(b,c){
                    d(a.get(b),c)
                })
            },
            show:function(b){
                var b=
                e(b in a._dom?a.get(b):b),c=b.data("tt"),d=function(a){
                    j.setTimeout(function(a){
                        return function(){
                            i.move(a)
                        }
                    }(a),10);
                    b.unbind("mouseup",d)
                };
        
                if(c=typeof c==="function"?c():c)a.$("tooltip").html(c.replace(/\s/,"&nbsp;")),b.bind("mouseup",d)
            },
            define:function(b,c){
                if(typeof c!=="function")var d=c,c=function(){
                    return d
                };
        
                b=e(b in a._dom?a.get(b):b).data("tt",c);
                i.show(b)
            }
        },l=this._fullscreen={
            scrolled:0,
            active:!1,
            keymap:a._keyboard.map,
            enter:function(b){
                l.active=!0;
                f.hide(a.getActiveImage());
                a.$("container").addClass("fullscreen");
                l.scrolled=e(j).scrollTop();
                f.forceStyles(a.get("container"),{
                    position:"fixed",
                    top:0,
                    left:0,
                    width:"100%",
                    height:"100%",
                    zIndex:1E4
                });
                var c={
                    height:"100%",
                    overflow:"hidden",
                    margin:0,
                    padding:0
                },d=a.getData();
                f.forceStyles(q().html,c);
                f.forceStyles(q().body,c);
                l.keymap=e.extend({},a._keyboard.map);
                a.attachKeyboard({
                    escape:a.exitFullscreen,
                    right:a.next,
                    left:a.prev
                });
                if(d&&d.big&&d.image!==d.big){
                    var c=new g.Picture,i=c.isCached(d.big),h=a.getIndex(),k=a._thumbnails[h];
                    a.trigger({
                        type:g.LOADSTART,
                        cached:i,
                        index:h,
                        imageTarget:a.getActiveImage(),
                        thumbTarget:k
                    });
                    c.load(d.big,function(b){
                        a._scaleImage(b,{
                            complete:function(b){
                                a.trigger({
                                    type:g.LOADFINISH,
                                    cached:i,
                                    index:h,
                                    imageTarget:b.image,
                                    thumbTarget:k
                                });
                                var c=a._controls.getActive().image;
                                c&&e(c).width(b.image.width).height(b.image.height).attr("style",e(b.image).attr("style")).attr("src",b.image.src)
                            }
                        })
                    })
                }
                a.rescale(function(){
                    f.addTimer("fullscreen_enter",function(){
                        f.show(a.getActiveImage());
                        typeof b==="function"&&b.call(a)
                    },100);
                    a.trigger(g.FULLSCREEN_ENTER)
                });
                e(j).resize(function(){
                    l.scale()
                })
            },
            scale:function(){
                a.rescale()
            },
            exit:function(b){
                l.active=!1;
                f.hide(a.getActiveImage());
                a.$("container").removeClass("fullscreen");
                f.revertStyles(a.get("container"),q().html,q().body);
                j.scrollTo(0,l.scrolled);
                a.detachKeyboard();
                a.attachKeyboard(l.keymap);
                a.rescale(function(){
                    f.addTimer("fullscreen_exit",function(){
                        f.show(a.getActiveImage());
                        typeof b==="function"&&b.call(a)
                    },50);
                    a.trigger(g.FULLSCREEN_EXIT)
                });
                e(j).unbind("resize",l.scale)
            }
        },k=this._idle={
            trunk:[],
            bound:!1,
            add:function(a,b){
                if(a){
                    k.bound||k.addEvent();
                    var a=e(a),c={},d;
                    for(d in b)b.hasOwnProperty(d)&&(c[d]=a.css(d));a.data("idle",{
                        from:c,
                        to:b,
                        complete:!0,
                        busy:!1
                    });
                    k.addTimer();
                    k.trunk.push(a)
                }
            },
            remove:function(b){
                b=jQuery(b);
                e.each(k.trunk,function(c,d){
                    d.length&&!d.not(b).length&&(a._idle.show(b),a._idle.trunk.splice(c,1))
                });
                k.trunk.length||(k.removeEvent(),f.clearTimer("idle"))
            },
            addEvent:function(){
                k.bound=!0;
                a.$("container").bind("mousemove click",k.showAll)
            },
            removeEvent:function(){
                k.bound=
                !1;
                a.$("container").unbind("mousemove click",k.showAll)
            },
            addTimer:function(){
                f.addTimer("idle",function(){
                    a._idle.hide()
                },a._options.idleTime)
            },
            hide:function(){
                a.trigger(g.IDLE_ENTER);
                e.each(k.trunk,function(b,c){
                    var d=c.data("idle");
                    if(d)c.data("idle").complete=!1,c.stop().animate(d.to,{
                        duration:a._options.idleSpeed,
                        queue:!1,
                        easing:"swing"
                    })
                })
            },
            showAll:function(){
                f.clearTimer("idle");
                e.each(a._idle.trunk,function(b,c){
                    a._idle.show(c)
                })
            },
            show:function(b){
                var c=b.data("idle");
                if(!c.busy&&!c.complete)c.busy=
                    !0,a.trigger(g.IDLE_EXIT),f.clearTimer("idle"),b.stop().animate(c.from,{
                        duration:a._options.idleSpeed/2,
                        queue:!1,
                        easing:"swing",
                        complete:function(){
                            e(this).data("idle").busy=!1;
                            e(this).data("idle").complete=!0
                        }
                    });
                k.addTimer()
            }
        },h=this._lightbox={
            width:0,
            height:0,
            initialized:!1,
            active:null,
            image:null,
            elems:{},
            init:function(){
                a.trigger(g.LIGHTBOX_OPEN);
                if(!h.initialized){
                    h.initialized=!0;
                    var b={},c=a._options,d="",c={
                        overlay:"position:fixed;display:none;opacity:"+c.overlayOpacity+";filter:alpha(opacity="+
                        c.overlayOpacity*100+");top:0;left:0;width:100%;height:100%;background:"+c.overlayBackground+";z-index:99990",
                        box:"position:fixed;display:none;width:400px;height:400px;top:50%;left:50%;margin-top:-200px;margin-left:-200px;z-index:99991",
                        shadow:"position:absolute;background:#000;width:100%;height:100%;",
                        content:"position:absolute;background-color:#fff;top:10px;left:10px;right:10px;bottom:10px;overflow:hidden",
                        info:"position:absolute;bottom:10px;left:10px;right:10px;color:#444;font:11px/13px arial,sans-serif;height:13px",
                        close:"position:absolute;top:10px;right:10px;height:20px;width:20px;background:#fff;text-align:center;cursor:pointer;color:#444;font:16px/22px arial,sans-serif;z-index:99999",
                        image:"position:absolute;top:10px;left:10px;right:10px;bottom:30px;overflow:hidden;display:block;",
                        prevholder:"position:absolute;width:50%;top:0;bottom:40px;cursor:pointer;",
                        nextholder:"position:absolute;width:50%;top:0;bottom:40px;right:-1px;cursor:pointer;",
                        prev:"position:absolute;top:50%;margin-top:-20px;height:40px;width:30px;background:#fff;left:20px;display:none;text-align:center;color:#000;font:bold 16px/36px arial,sans-serif",
                        next:"position:absolute;top:50%;margin-top:-20px;height:40px;width:30px;background:#fff;right:20px;left:auto;display:none;font:bold 16px/36px arial,sans-serif;text-align:center;color:#000",
                        title:"float:left",
                        counter:"float:right;margin-left:8px;"
                    },i={};
            
                    n===8&&(c.nextholder+="background:#000;filter:alpha(opacity=0);",c.prevholder+="background:#000;filter:alpha(opacity=0);");
                    e.each(c,function(a,b){
                        d+=".galleria-lightbox-"+a+"{"+b+"}"
                    });
                    f.insertStyleTag(d);
                    e.each("overlay box content shadow title info close prevholder prev nextholder next counter image".split(" "),
                        function(c,d){
                            a.addElement("lightbox-"+d);
                            b[d]=h.elems[d]=a.get("lightbox-"+d)
                        });
                    h.image=new g.Picture;
                    e.each({
                        box:"shadow content close prevholder nextholder",
                        info:"title counter",
                        content:"info image",
                        prevholder:"prev",
                        nextholder:"next"
                    },function(a,b){
                        var c=[];
                        e.each(b.split(" "),function(a,b){
                            c.push("lightbox-"+b)
                        });
                        i["lightbox-"+a]=c
                    });
                    a.append(i);
                    e(b.image).append(h.image.container);
                    e(q().body).append(b.overlay,b.box);
                    (function(a){
                        return a.hover(function(){
                            e(this).css("color","#bbb")
                        },function(){
                            e(this).css("color",
                                "#444")
                        })
                    })(e(b.close).bind(p(),h.hide).html("&#215;"));
                    e.each(["Prev","Next"],function(a,c){
                        var d=e(b[c.toLowerCase()]).html(/v/.test(c)?"&#8249;&nbsp;":"&nbsp;&#8250;"),f=e(b[c.toLowerCase()+"holder"]);
                        f.bind(p(),function(){
                            h["show"+c]()
                        });
                        n<8?d.show():f.hover(function(){
                            d.show()
                        },function(){
                            d.stop().fadeOut(200)
                        })
                    });
                    e(b.overlay).bind(p(),h.hide)
                }
            },
            rescale:function(b){
                var c=Math.min(e(j).width()-40,h.width),d=Math.min(e(j).height()-60,h.height),d=Math.min(c/h.width,d/h.height),c=h.width*d+40,d=
                h.height*d+60,c={
                    width:c,
                    height:d,
                    marginTop:Math.ceil(d/2)*-1,
                    marginLeft:Math.ceil(c/2)*-1
                };
        
                b?e(h.elems.box).css(c):e(h.elems.box).animate(c,a._options.lightboxTransitionSpeed,a._options.easing,function(){
                    var b=h.image,c=a._options.lightboxFadeSpeed;
                    a.trigger({
                        type:g.LIGHTBOX_IMAGE,
                        imageTarget:b.image
                    });
                    e(b.container).show();
                    f.show(b.image,c);
                    f.show(h.elems.info,c)
                })
            },
            hide:function(){
                h.image.image=null;
                e(j).unbind("resize",h.rescale);
                e(h.elems.box).hide();
                f.hide(h.elems.info);
                f.hide(h.elems.overlay,
                    200,function(){
                        e(this).hide().css("opacity",a._options.overlayOpacity);
                        a.trigger(g.LIGHTBOX_CLOSE)
                    })
            },
            showNext:function(){
                h.show(a.getNext(h.active))
            },
            showPrev:function(){
                h.show(a.getPrev(h.active))
            },
            show:function(b){
                h.active=b=typeof b==="number"?b:a.getIndex();
                h.initialized||h.init();
                e(j).unbind("resize",h.rescale);
                var c=a.getData(b),d=a.getDataLength();
                f.hide(h.elems.info);
                h.image.load(c.image,function(a){
                    h.width=a.original.width;
                    h.height=a.original.height;
                    e(a.image).css({
                        width:"100.5%",
                        height:"100.5%",
                        top:0,
                        zIndex:99998
                    });
                    f.hide(a.image);
                    h.elems.title.innerHTML=c.title;
                    h.elems.counter.innerHTML=b+1+" / "+d;
                    e(j).resize(h.rescale);
                    h.rescale()
                });
                e(h.elems.overlay).show();
                e(h.elems.box).show()
            }
        };

        return this
    };

    g.prototype={
        constructor:g,
        init:function(a,b){
            var c=this,b=D(b);
            t.push(this);
            this._original={
                target:a,
                options:b,
                data:null
            };
            (this._target=this._dom.target=a.nodeName?a:e(a).get(0))?(this._options={
                autoplay:!1,
                carousel:!0,
                carouselFollow:!0,
                carouselSpeed:400,
                carouselSteps:"auto",
                clicknext:!1,
                dataConfig:function(){
                    return{}
                },
                dataSelector:"img",
                dataSource:this._target,
                debug:void 0,
                easing:"galleria",
                extend:function(){},
                height:"auto",
                idleTime:3E3,
                idleSpeed:200,
                imageCrop:!1,
                imageMargin:0,
                imagePan:!1,
                imagePanSmoothness:12,
                imagePosition:"50%",
                keepSource:!1,
                lightbox:!1,
                lightboxFadeSpeed:200,
                lightboxTransitionSpeed:400,
                linkSourceTmages:!0,
                maxScaleRatio:void 0,
                minScaleRatio:void 0,
                overlayOpacity:0.85,
                overlayBackground:"#0b0b0b",
                pauseOnInteraction:!0,
                popupLinks:!1,
                preload:2,
                queue:!0,
                show:0,
                showInfo:!0,
                showCounter:!0,
                showImagenav:!0,
                thumbCrop:!0,
                thumbEventType:p(),
                thumbFit:!0,
                thumbMargin:0,
                thumbQuality:"auto",
                thumbnails:!0,
                transition:"fade",
                transitionInitial:void 0,
                transitionSpeed:400,
                width:"auto"
            },b&&b.debug===!0&&(w=!0),e(this._target).children().hide(),typeof g.theme==="object"?this._init():f.wait({
                until:function(){
                    return typeof g.theme==="object"
                },
                success:function(){
                    c._init.call(c)
                },
                error:function(){
                    g.raise("No theme found.",!0)
                },
                timeout:5E3
            })):g.raise("Target not found.")
        },
        _init:function(){
            var a=this;
            if(this._initialized)return g.raise("Init failed: Gallery instance already initialized."),
                this;
            this._initialized=!0;
            if(!g.theme)return g.raise("Init failed: No theme found."),this;
            e.extend(!0,this._options,g.theme.defaults,this._original.options);
            this.bind(g.DATA,function(){
                this._original.data=this._data;
                this.get("total").innerHTML=this.getDataLength();
                var b=this.$("container"),c={
                    width:0,
                    height:0
                },d=f.create("galleria-image");
                f.wait({
                    until:function(){
                        e.each(["width","height"],function(d,e){
                            c[e]=a._options[e]&&typeof a._options[e]==="number"?a._options[e]:Math.max(f.parseValue(b.css(e)),
                                f.parseValue(a.$("target").css(e)),b[e](),a.$("target")[e]())
                        });
                        var g=function(){
                            return!0
                        };
                    
                        a._options.thumbnails&&(a.$("thumbnails").append(d),g=function(){
                            return!!e(d).height()
                        });
                        return g()&&c.width&&c.height>10
                    },
                    success:function(){
                        e(d).remove();
                        b.width(c.width);
                        b.height(c.height);
                        g.WEBKIT?j.setTimeout(function(){
                            a._run()
                        },1):a._run()
                    },
                    error:function(){
                        g.raise("Width & Height not found.",!0)
                    },
                    timeout:2E3
                })
            });
            this.bind(g.READY,function(b){
                return function(){
                    f.show(this.get("counter"));
                    this._options.carousel&&
                    this._carousel.bindControls();
                    if(this._options.autoplay){
                        this.pause();
                        if(typeof this._options.autoplay==="number")this._playtime=this._options.autoplay;
                        this.trigger(g.PLAY);
                        this._playing=!0
                    }
                    b?typeof this._options.show==="number"&&this.show(this._options.show):(b=!0,this._options.clicknext&&(e.each(this._data,function(a,b){
                        delete b.link
                    }),this.$("stage").css({
                        cursor:"pointer"
                    }).bind(p(),function(){
                        a._options.pauseOnInteraction&&a.pause();
                        a.next()
                    })),g.History&&g.History.change(function(b){
                        b=parseInt(b.value.replace(/\//,
                            ""),10);
                        isNaN(b)?j.history.go(-1):a.show(b,void 0,!0)
                    }),g.theme.init.call(this,this._options),this._options.extend.call(this,this._options),/^[0-9]{1,4}$/.test(B)&&g.History?this.show(B,void 0,!0):this._data[this._options.show]&&this.show(this._options.show))
                }
            }(!1));
            this.append({
                "info-text":["info-title","info-description"],
                info:["info-text"],
                "image-nav":["image-nav-right","image-nav-left"],
                stage:["images","loader","counter","image-nav"],
                "thumbnails-list":["thumbnails"],
                "thumbnails-container":["thumb-nav-left",
                "thumbnails-list","thumb-nav-right"],
                container:["stage","thumbnails-container","info","tooltip"]
            });
            f.hide(this.$("counter").append(this.get("current")," / ",this.get("total")));
            this.setCounter("&#8211;");
            f.hide(a.get("tooltip"));
            e.each(Array(2),function(b){
                var c=new g.Picture;
                e(c.container).css({
                    position:"absolute",
                    top:0,
                    left:0
                });
                a.$("images").append(c.container);
                a._controls[b]=c
            });
            this.$("images").css({
                position:"relative",
                top:0,
                left:0,
                width:"100%",
                height:"100%"
            });
            this.$("thumbnails, thumbnails-list").css({
                overflow:"hidden",
                position:"relative"
            });
            this.$("image-nav-right, image-nav-left").bind(p(),function(b){
                a._options.clicknext&&b.stopPropagation();
                a._options.pauseOnInteraction&&a.pause();
                b=/right/.test(this.className)?"next":"prev";
                a[b]()
            });
            e.each(["info","counter","image-nav"],function(b,c){
                a._options["show"+c.substr(0,1).toUpperCase()+c.substr(1).replace(/-/,"")]===!1&&f.moveOut(a.get(c.toLowerCase()))
            });
            this.load();
            if(!this._options.keep_source&&!n)this._target.innerHTML="";
            this.$("target").append(this.get("container"));
            this._options.carousel&&this.bind(g.THUMBNAIL,function(){
                this.updateCarousel()
            });
            return this
        },
        _createThumbnails:function(){
            this.get("total").innerHTML=this.getDataLength();
            var a,b,c,d,i,l=this,k=this._options,h=function(){
                var a=l.$("thumbnails").find(".active");
                if(!a.length)return!1;
                return a.find("img").attr("src")
            }(),z=typeof k.thumbnails==="string"?k.thumbnails.toLowerCase():null,n=function(a){
                return m.defaultView&&m.defaultView.getComputedStyle?m.defaultView.getComputedStyle(c.container,null)[a]:
                i.css(a)
            },v=function(a,b,c){
                return function(){
                    e(c).append(a);
                    l.trigger({
                        type:g.THUMBNAIL,
                        thumbTarget:a,
                        index:b
                    })
                }
            },s=function(a){
                k.pauseOnInteraction&&l.pause();
                var b=e(a.currentTarget).data("index");
                l.getIndex()!==b&&l.show(b);
                a.preventDefault()
            },u=function(a){
                a.scale({
                    width:a.data.width,
                    height:a.data.height,
                    crop:k.thumbCrop,
                    margin:k.thumbMargin,
                    complete:function(a){
                        var b=["left","top"],c,d;
                        e.each(["Width","Height"],function(f,g){
                            c=g.toLowerCase();
                            if((k.thumbCrop!==!0||k.thumbCrop===c)&&k.thumbFit)d=

                            {},d[c]=a[c],e(a.container).css(d),d={},d[b[f]]=0,e(a.image).css(d);
                            a["outer"+g]=e(a.container)["outer"+g](!0)
                        });
                        f.toggleQuality(a.image,k.thumbQuality===!0||k.thumbQuality==="auto"&&a.original.width<a.width*3);
                        l.trigger({
                            type:g.THUMBNAIL,
                            thumbTarget:a.image,
                            index:a.data.order
                        })
                    }
                })
            };

            this._thumbnails=[];
            this.$("thumbnails").empty();
            for(a=0;this._data[a];a++)d=this._data[a],k.thumbnails===!0?(c=new g.Picture(a),b=d.thumb||d.image,this.$("thumbnails").append(c.container),i=e(c.container),c.data={
                width:f.parseValue(n("width")),
                height:f.parseValue(n("height")),
                order:a
            },k.thumbFit&&k.thumbCrop!==!0?i.css({
                width:0,
                height:0
            }):i.css({
                width:c.data.width,
                height:c.data.height
            }),c.load(b,u),k.preload==="all"&&c.add(d.image)):z==="empty"||z==="numbers"?(c={
                container:f.create("galleria-image"),
                image:f.create("img","span"),
                ready:!0
            },z==="numbers"&&e(c.image).text(a+1),this.$("thumbnails").append(c.container),j.setTimeout(v(c.image,a,c.container),50+a*20)):c={
                container:null,
                image:null
            },e(c.container).add(k.keepSource&&k.linkSourceImages?
                d.original:null).data("index",a).bind(k.thumbEventType,s),h===b&&e(c.container).addClass("active"),this._thumbnails.push(c)
        },
        _run:function(){
            var a=this;
            a._createThumbnails();
            f.wait({
                until:function(){
                    g.OPERA&&a.$("stage").css("display","inline-block");
                    a._stageWidth=a.$("stage").width();
                    a._stageHeight=a.$("stage").height();
                    return a._stageWidth&&a._stageHeight>50
                },
                success:function(){
                    a.trigger(g.READY)
                },
                error:function(){
                    g.raise("Stage measures not found",!0)
                }
            })
        },
        load:function(a,b,c){
            var d=this;
            this._data=
            [];
            this._thumbnails=[];
            this.$("thumbnails").empty();
            typeof b==="function"&&(c=b,b=null);
            a=a||this._options.dataSource;
            b=b||this._options.dataSelector;
            c=c||this._options.dataConfig;
            if(a.constructor===Array)return this.validate(a)?(this._data=a,this._parseData().trigger(g.DATA)):g.raise("Load failed: JSON Array not valid."),this;
            e(a).find(b).each(function(a,b){
                var b=e(b),f={},g=b.parent().attr("href");
                if(/\.(png|gif|jpg|jpeg)(\?.*)?$/i.test(g))f.image=f.big=g;
                else if(g)f.link=g;
                d._data.push(e.extend({
                    title:b.attr("title"),
                    thumb:b.attr("src"),
                    image:b.attr("src"),
                    big:b.attr("src"),
                    description:b.attr("alt"),
                    link:b.attr("longdesc"),
                    original:b.get(0)
                },f,c(b)))
            });
            this.getDataLength()?this.trigger(g.DATA):g.raise("Load failed: no data found.");
            return this
        },
        _parseData:function(){
            var a=this;
            e.each(this._data,function(b,c){
                if("thumb"in c===!1)a._data[b].thumb=c.image;
                if(!1 in c)a._data[b].big=c.image
            });
            return this
        },
        splice:function(){
            Array.prototype.splice.apply(this._data,f.array(arguments));
            return this._parseData()._createThumbnails()
        },
        push:function(){
            Array.prototype.push.apply(this._data,f.array(arguments));
            return this._parseData()._createThumbnails()
        },
        _getActive:function(){
            return this._controls.getActive()
        },
        validate:function(){
            return!0
        },
        bind:function(a,b){
            a=x(a);
            this.$("container").bind(a,this.proxy(b));
            return this
        },
        unbind:function(a){
            a=x(a);
            this.$("container").unbind(a);
            return this
        },
        trigger:function(a){
            a=typeof a==="object"?e.extend(a,{
                scope:this
            }):{
                type:x(a),
                scope:this
            };
    
            this.$("container").trigger(a);
            return this
        },
        addIdleState:function(){
            this._idle.add.apply(this._idle,
                f.array(arguments));
            return this
        },
        removeIdleState:function(){
            this._idle.remove.apply(this._idle,f.array(arguments));
            return this
        },
        enterIdleMode:function(){
            this._idle.hide();
            return this
        },
        exitIdleMode:function(){
            this._idle.showAll();
            return this
        },
        enterFullscreen:function(){
            this._fullscreen.enter.apply(this,f.array(arguments));
            return this
        },
        exitFullscreen:function(){
            this._fullscreen.exit.apply(this,f.array(arguments));
            return this
        },
        toggleFullscreen:function(){
            this._fullscreen[this.isFullscreen()?"exit":"enter"].apply(this,
                f.array(arguments));
            return this
        },
        bindTooltip:function(){
            this._tooltip.bind.apply(this._tooltip,f.array(arguments));
            return this
        },
        defineTooltip:function(){
            this._tooltip.define.apply(this._tooltip,f.array(arguments));
            return this
        },
        refreshTooltip:function(){
            this._tooltip.show.apply(this._tooltip,f.array(arguments));
            return this
        },
        openLightbox:function(){
            this._lightbox.show.apply(this._lightbox,f.array(arguments));
            return this
        },
        closeLightbox:function(){
            this._lightbox.hide.apply(this._lightbox,f.array(arguments));
            return this
        },
        getActiveImage:function(){
            return this._getActive().image||void 0
        },
        getActiveThumb:function(){
            return this._thumbnails[this._active].image||void 0
        },
        getMousePosition:function(a){
            return{
                x:a.pageX-this.$("container").offset().left,
                y:a.pageY-this.$("container").offset().top
            }
        },
        addPan:function(a){
            if(this._options.imageCrop!==!1){
                var a=e(a||this.getActiveImage()),b=this,c=a.width()/2,d=a.height()/2,g=parseInt(a.css("left"),10),l=parseInt(a.css("top"),10),k=g||0,h=l||0,j=0,m=0,v=!1,s=f.timestamp(),
                u=0,o=0,E=function(b,c,d){
                    if(b>0&&(o=Math.round(Math.max(b*-1,Math.min(0,c))),u!==o))if(u=o,n===8)a.parent()["scroll"+d](o*-1);else b={},b[d.toLowerCase()]=o,a.css(b)
                },p=function(a){
                    if(!(f.timestamp()-s<50))v=!0,c=b.getMousePosition(a).x,d=b.getMousePosition(a).y
                };
                
                n===8&&(a.parent().scrollTop(h*-1).scrollLeft(k*-1),a.css({
                    top:0,
                    left:0
                }));
                this.$("stage").unbind("mousemove",p).bind("mousemove",p);
                f.addTimer("pan",function(){
                    v&&(j=a.width()-b._stageWidth,m=a.height()-b._stageHeight,g=c/b._stageWidth*
                        j*-1,l=d/b._stageHeight*m*-1,k+=(g-k)/b._options.imagePanSmoothness,h+=(l-h)/b._options.imagePanSmoothness,E(m,h,"Top"),E(j,k,"Left"))
                },50,!0);
                return this
            }
        },
        proxy:function(a,b){
            if(typeof a!=="function")return function(){};
        
            b=b||this;
            return function(){
                return a.apply(b,f.array(arguments))
            }
        },
        removePan:function(){
            this.$("stage").unbind("mousemove");
            f.clearTimer("pan");
            return this
        },
        addElement:function(){
            var a=this._dom;
            e.each(f.array(arguments),function(b,c){
                a[c]=f.create("galleria-"+c)
            });
            return this
        },
        attachKeyboard:function(){
            this._keyboard.attach.apply(this._keyboard,f.array(arguments));
            return this
        },
        detachKeyboard:function(){
            this._keyboard.detach.apply(this._keyboard,f.array(arguments));
            return this
        },
        appendChild:function(a,b){
            this.$(a).append(this.get(b)||b);
            return this
        },
        prependChild:function(a,b){
            this.$(a).prepend(this.get(b)||b);
            return this
        },
        remove:function(){
            this.$(f.array(arguments).join(",")).remove();
            return this
        },
        append:function(a){
            var b,c;
            for(b in a)if(a.hasOwnProperty(b))if(a[b].constructor===
                Array)for(c=0;a[b][c];c++)this.appendChild(b,a[b][c]);else this.appendChild(b,a[b]);return this
        },
        _scaleImage:function(a,b){
            b=e.extend({
                width:this._stageWidth,
                height:this._stageHeight,
                crop:this._options.imageCrop,
                max:this._options.maxScaleRatio,
                min:this._options.minScaleRatio,
                margin:this._options.imageMargin,
                position:this._options.imagePosition
            },b);
            (a||this._controls.getActive()).scale(b);
            return this
        },
        updateCarousel:function(){
            this._carousel.update();
            return this
        },
        rescale:function(a,b,c){
            var d=this;
            typeof a==="function"&&(c=a,a=void 0);
            var e=function(){
                d._stageWidth=a||d.$("stage").width();
                d._stageHeight=b||d.$("stage").height();
                d._scaleImage();
                d._options.carousel&&d.updateCarousel();
                d.trigger(g.RESCALE);
                typeof c==="function"&&c.call(d)
            };
        
            g.WEBKIT&&!a&&!b?f.addTimer("scale",e,5):e.call(d);
            return this
        },
        refreshImage:function(){
            this._scaleImage();
            this._options.imagePan&&this.addPan();
            return this
        },
        show:function(a,b,c){
            if(!(a===!1||!this._options.queue&&this._queue.stalled))if(a=Math.max(0,Math.min(parseInt(a,
                10),this.getDataLength()-1)),b=typeof b!=="undefined"?!!b:a<this.getIndex(),!c&&g.History)g.History.value(a.toString());else return this._active=a,Array.prototype.push.call(this._queue,{
                index:a,
                rewind:b
            }),this._queue.stalled||this._show(),this
        },
        _show:function(){
            var a=this,b=this._queue[0],c=this.getData(b.index);
            if(c){
                var d=this.isFullscreen()&&"big"in c?c.big:c.image,i=this._controls.getActive(),l=this._controls.getNext(),k=l.isCached(d),h=this._thumbnails[b.index],m=function(){
                    a._queue.stalled=
                    !1;
                    f.toggleQuality(l.image,a._options.imageQuality);
                    e(i.container).css({
                        zIndex:0,
                        opacity:0
                    });
                    e(l.container).css({
                        zIndex:1,
                        opacity:1
                    });
                    a._controls.swap();

                    a._options.imagePan&&a.addPan(l.image);
                    (c.link||a._options.lightbox)&&e(l.image).css({
                        cursor:"pointer"
                    }).bind(p(),function(){
                        c.link?a._options.popupLinks?j.open(c.link,"_blank"):j.location.href=c.link:a.openLightbox()
                    });
                    Array.prototype.shift.call(a._queue);
                    a._queue.length&&a._show();
                    a._playCheck();
                    a.trigger({
                        type:g.IMAGE,
                        index:b.index,
                        imageTarget:l.image,
                        thumbTarget:h.image
                    })
                };
            
                this._options.carousel&&this._options.carouselFollow&&this._carousel.follow(b.index);
                if(this._options.preload){
                    var n,o,s=this.getNext();
                    try{
                        for(o=this._options.preload;o>0;o--)n=new g.Picture,c=a.getData(s),n.add(this.isFullscreen()&&"big"in c?c.big:c.image),s=a.getNext(s)
                    }catch(u){}
                }
                f.show(l.container);
                e(a._thumbnails[b.index].container).addClass("active").siblings(".active").removeClass("active");
                a.trigger({
                    type:g.LOADSTART,
                    cached:k,
                    index:b.index,
                    imageTarget:l.image,
                    thumbTarget:h.image
                });
                l.load(d,function(c){
                    a._scaleImage(c,{
                        complete:function(c){
                            f.show(c.container);
                            "image"in i&&f.toggleQuality(i.image,!1);
                            f.toggleQuality(c.image,!1);
                            a._queue.stalled=!0;
                            a.removePan();
                            a.setInfo(b.index);
                            a.setCounter(b.index);
                            a.trigger({
                                type:g.LOADFINISH,
                                cached:k,
                                index:b.index,
                                imageTarget:c.image,
                                thumbTarget:a._thumbnails[b.index].image
                            });
                            var d=i.image===null&&a._options.transitionInitial?a._options.transitionInitial:a._options.transition;
                            d in y===!1?m():y[d].call(a,{
                                prev:i.image,
                                next:c.image,
                                rewind:b.rewind,
                                speed:a._options.transitionSpeed||400
                            },m)
                        }
                    })
                })
            }
        },
        getNext:function(a){
            a=typeof a==="number"?a:this.getIndex();
            return a===this.getDataLength()-1?0:a+1
        },
        getPrev:function(a){
            a=typeof a==="number"?a:this.getIndex();
            return a===0?this.getDataLength()-1:a-1
        },
        next:function(){
            this.getDataLength()>1&&this.show(this.getNext(),!1);
            return this
        },
        prev:function(){
            this.getDataLength()>1&&this.show(this.getPrev(),!0);
            return this
        },
        get:function(a){
            return a in this._dom?this._dom[a]:null
        },
        getData:function(a){
            return a in
            this._data?this._data[a]:this._data[this._active]
        },
        getDataLength:function(){
            return this._data.length
        },
        getIndex:function(){
            return typeof this._active==="number"?this._active:!1
        },
        getStageHeight:function(){
            return this._stageHeight
        },
        getStageWidth:function(){
            return this._stageWidth
        },
        getOptions:function(a){
            return typeof a==="undefined"?this._options:this._options[a]
        },
        setOptions:function(a,b){
            typeof a==="object"?e.extend(this._options,a):this._options[a]=b;
            return this
        },
        play:function(a){
            this._playing=!0;
            this._playtime=a||this._playtime;
            this._playCheck();
            this.trigger(g.PLAY);
            return this
        },
        pause:function(){
            this._playing=!1;
            this.trigger(g.PAUSE);
            return this
        },
        playToggle:function(a){
            return this._playing?this.pause():this.play(a)
        },
        isPlaying:function(){
            return this._playing
        },
        isFullscreen:function(){
            return this._fullscreen.active
        },
        _playCheck:function(){
            var a=this,b=0,c=f.timestamp(),d="play"+this._id;
            if(this._playing){
                f.clearTimer(d);
                var e=function(){
                    b=f.timestamp()-c;
                    b>=a._playtime&&a._playing?(f.clearTimer(d),
                        a.next()):a._playing&&(a.trigger({
                        type:g.PROGRESS,
                        percent:Math.ceil(b/a._playtime*100),
                        seconds:Math.floor(b/1E3),
                        milliseconds:b
                    }),f.addTimer(d,e,20))
                };
            
                f.addTimer(d,e,20)
            }
        },
        setIndex:function(a){
            this._active=a;
            return this
        },
        setCounter:function(a){
            typeof a==="number"?a++:typeof a==="undefined"&&(a=this.getIndex()+1);
            this.get("current").innerHTML=a;
            if(n){
                var a=this.$("counter"),b=a.css("opacity"),c=a.attr("style");
                c&&parseInt(b,10)===1?a.attr("style",c.replace(/filter[^\;]+\;/i,"")):this.$("counter").css("opacity",
                    b)
            }
            return this
        },
        setInfo:function(a){
            var b=this,c=this.getData(a);
            e.each(["title","description"],function(a,e){
                var f=b.$("info-"+e);
                c[e]?f[c[e].length?"show":"hide"]().html(c[e]):f.empty().hide()
            });
            return this
        },
        hasInfo:function(a){
            var b="title description".split(" "),c;
            for(c=0;b[c];c++)if(this.getData(a)[b[c]])return!0;return!1
        },
        jQuery:function(a){
            var b=this,c=[];
            e.each(a.split(","),function(a,d){
                d=e.trim(d);
                b.get(d)&&c.push(d)
            });
            var d=e(b.get(c.shift()));
            e.each(c,function(a,c){
                d=d.add(b.get(c))
            });
            return d
        },
        $:function(){
            return this.jQuery.apply(this,f.array(arguments))
        }
    };

    e.each(C,function(a,b){
        var c=/_/.test(b)?b.replace(/_/g,""):b;
        g[b.toUpperCase()]="galleria."+c
    });
    e.extend(g,{
        IE9:n===9,
        IE8:n===8,
        IE7:n===7,
        IE6:n===6,
        IE:!!n,
        WEBKIT:/webkit/.test(o),
        SAFARI:/safari/.test(o),
        CHROME:/chrome/.test(o),
        QUIRK:n&&m.compatMode&&m.compatMode==="BackCompat",
        MAC:/mac/.test(navigator.platform.toLowerCase()),
        OPERA:!!j.opera,
        IPHONE:/iphone/.test(o),
        IPAD:/ipad/.test(o),
        ANDROID:/android/.test(o),
        TOUCH:!(!/iphone/.test(o)&&
            !/ipad/.test(o)&&!/android/.test(o))
    });
    g.addTheme=function(a){
        a.name||g.raise("No theme name specified");
        a.defaults=typeof a.defaults!=="object"?{}:D(a.defaults);
        var b=!1,c;
        typeof a.css==="string"?(e("link").each(function(d,e){
            c=RegExp(a.css);
            if(c.test(e.href))return b=!0,g.theme=a,!1
        }),b||e("script").each(function(d,e){
            c=RegExp("galleria\\."+a.name.toLowerCase()+"\\.");
            c.test(e.src)&&(b=e.src.replace(/[^\/]*$/,"")+a.css,f.addTimer("css",function(){
                f.loadCSS(b,"galleria-theme",function(){
                    g.theme=
                    a
                })
            },1))
        }),b||g.raise("No theme CSS loaded")):g.theme=a;
        return a
    };
    
    g.loadTheme=function(a,b){
        var c=!1,d=t.length;
        g.theme=void 0;
        f.loadScript(a,function(){
            c=!0
        });
        f.wait({
            until:function(){
                return c
            },
            error:function(){
                g.raise("Theme at "+a+" could not load, check theme path.",!0)
            },
            success:function(){
                if(d){
                    var a=[];
                    e.each(g.get(),function(c,d){
                        var f=e.extend(d._original.options,{
                            data_source:d._data
                        },b);
                        d.$("container").remove();
                        var j=new g;
                        j._id=d._id;
                        j.init(d._original.target,f);
                        a.push(j)
                    });
                    t=a
                }
            },
            timeout:2E3
        })
    };
    g.get=function(a){
        if(t[a])return t[a];
        else if(typeof a!=="number")return t;else g.raise("Gallery index "+a+" not found")
    };
        
    g.addTransition=function(a,b){
        y[a]=b
    };
    
    g.utils=f;
    g.log=function(){
        try{
            j.console.log.apply(j.console,f.array(arguments))
        }catch(a){
            try{
                j.opera.postError.apply(j.opera,arguments)
            }catch(b){
                j.alert(f.array(arguments).split(", "))
            }
        }
    };

    g.raise=function(a,b){
        if(w||b)throw Error((b?"Fatal error":"Error")+": "+a);
    };

    g.Picture=function(a){
        this.id=a||null;
        this.image=null;
        this.container=f.create("galleria-image");
        e(this.container).css({
            overflow:"hidden",
            position:"relative"
        });
        this.original={
            width:0,
            height:0
        };
    
        this.loaded=this.ready=!1
    };
    
    g.Picture.prototype={
        cache:{},
        add:function(a){
            var b=0,c=this,d=new Image,f=function(){
                if((!this.width||!this.height)&&b<1E3)b++,e(d).load(f).attr("src",a+"?"+(new Date).getTime());
                c.original={
                    height:this.height,
                    width:this.width
                };
                
                c.cache[a]=a;
                c.loaded=!0
            };
            
            e(d).css("display","block");
            if(c.cache[a])return d.src=a,f.call(d),d;
            e(d).load(f).attr("src",a);
            return d
        },
        show:function(){
            f.show(this.image)
        },
        hide:function(){
            f.moveOut(this.image)
        },
        clear:function(){
            this.image=null
        },
        isCached:function(a){
            return!!this.cache[a]
        },
        load:function(a,b){
            var c=this;
            e(this.container).empty(!0);
            this.image=this.add(a);
            f.hide(this.image);
            e(this.container).append(this.image);
            f.wait({
                until:function(){
                    return c.loaded&&c.image.complete&&c.original.width&&c.image.width
                },
                success:function(){
                    j.setTimeout(function(){
                        b.call(c,c)
                    },50)
                },
                error:function(){
                    j.setTimeout(function(){
                        b.call(c,c)
                    },50);
                    g.raise("image not loaded in 30 seconds: "+
                        a)
                },
                timeout:3E4
            });
            return this.container
        },
        scale:function(a){
            a=e.extend({
                width:0,
                height:0,
                min:void 0,
                max:void 0,
                margin:0,
                complete:function(){},
                position:"center",
                crop:!1
            },a);
            if(!this.image)return this.container;
            var b,c,d=this,i=e(d.container);
            f.wait({
                until:function(){
                    b=a.width||i.width()||f.parseValue(i.css("width"));
                    c=a.height||i.height()||f.parseValue(i.css("height"));
                    return b&&c
                },
                success:function(){
                    var g=(b-a.margin*2)/d.original.width,i=(c-a.margin*2)/d.original.height,h={
                        "true":Math.max(g,i),
                        width:g,
                        height:i,
                        "false":Math.min(g,i)
                    }
                    [a.crop.toString()];
                    a.max&&(h=Math.min(a.max,h));
                    a.min&&(h=Math.max(a.min,h));
                    e(d.container).width(b).height(c);
                    e.each(["width","height"],function(a,b){
                        e(d.image)[b](d.image[b]=d[b]=Math.round(d.original[b]*h))
                    });
                    var j={},m={},g=function(a,b,c){
                        var g=0;
                        /\%/.test(a)?(a=parseInt(a,10)/100,b=d.image[b]||e(d.image)[b](),g=Math.ceil(b*-1*a+c*a)):g=f.parseValue(a);
                        return g
                    },n={
                        top:{
                            top:0
                        },
                        left:{
                            left:0
                        },
                        right:{
                            left:"100%"
                        },
                        bottom:{
                            top:"100%"
                        }
                    };
                
                    e.each(a.position.toLowerCase().split(" "),
                        function(a,b){
                            b==="center"&&(b="50%");
                            j[a?"top":"left"]=b
                        });
                    e.each(j,function(a,b){
                        n.hasOwnProperty(b)&&e.extend(m,n[b])
                    });
                    j=j.top?e.extend(j,m):m;
                    j=e.extend({
                        top:"50%",
                        left:"50%"
                    },j);
                    e(d.image).css({
                        position:"relative",
                        top:g(j.top,"height",c),
                        left:g(j.left,"width",b)
                    });
                    d.show();
                    d.ready=!0;
                    a.complete.call(d,d)
                },
                error:function(){
                    g.raise("Could not scale image: "+d.image.src)
                },
                timeout:1E3
            });
            return this
        }
    };

    e.extend(e.easing,{
        galleria:function(a,b,c,d,e){
            if((b/=e/2)<1)return d/2*b*b*b*b+c;
            return-d/2*((b-=
                2)*b*b*b-2)+c
        },
        galleriaIn:function(a,b,c,d,e){
            return d*(b/=e)*b*b*b+c
        },
        galleriaOut:function(a,b,c,d,e){
            return-d*((b=b/e-1)*b*b*b-1)+c
        }
    });
    e.fn.galleria=function(a){
        return this.each(function(){
            (new g).init(this,a)
        })
    };
    
    j.Galleria=g
})(jQuery);
(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);
(function(a){a.uniform={options:{selectClass:"selector",radioClass:"radio",checkboxClass:"checker",fileClass:"uploader",filenameClass:"filename",fileBtnClass:"action",fileDefaultText:"No hay archivo",fileBtnText:"Seleccionar Archivo",checkedClass:"checked",focusClass:"focus",disabledClass:"disabled",buttonClass:"button",activeClass:"active",hoverClass:"hover",useID:true,idPrefix:"uniform",resetSelector:false,autoHide:true},elements:[]};if(a.browser.msie&&a.browser.version<7){a.support.selectOpacity=false}else{a.support.selectOpacity=true}a.fn.uniform=function(k){k=a.extend(a.uniform.options,k);var d=this;if(k.resetSelector!=false){a(k.resetSelector).mouseup(function(){function l(){a.uniform.update(d)}setTimeout(l,10)})}function j(l){$el=a(l);$el.addClass($el.attr("type"));b(l)}function g(l){a(l).addClass("uniform");b(l)}function i(o){var m=a(o);var p=a("<div>"),l=a("<span>");p.addClass(k.buttonClass);if(k.useID&&m.attr("id")!=""){p.attr("id",k.idPrefix+"-"+m.attr("id"))}var n;if(m.is("a")||m.is("button")){n=m.text()}else{if(m.is(":submit")||m.is(":reset")||m.is("input[type=button]")){n=m.attr("value")}}n=n==""?m.is(":reset")?"Reset":"Submit":n;l.html(n);m.css("opacity",0);m.wrap(p);m.wrap(l);p=m.closest("div");l=m.closest("span");if(m.is(":disabled")){p.addClass(k.disabledClass)}p.bind({"mouseenter.uniform":function(){p.addClass(k.hoverClass)},"mouseleave.uniform":function(){p.removeClass(k.hoverClass);p.removeClass(k.activeClass)},"mousedown.uniform touchbegin.uniform":function(){p.addClass(k.activeClass)},"mouseup.uniform touchend.uniform":function(){p.removeClass(k.activeClass)},"click.uniform touchend.uniform":function(r){if(a(r.target).is("span")||a(r.target).is("div")){if(o[0].dispatchEvent){var q=document.createEvent("MouseEvents");q.initEvent("click",true,true);o[0].dispatchEvent(q)}else{o[0].click()}}}});o.bind({"focus.uniform":function(){p.addClass(k.focusClass)},"blur.uniform":function(){p.removeClass(k.focusClass)}});a.uniform.noSelect(p);b(o)}function e(o){var m=a(o);var p=a("<div />"),l=a("<span />");if(!m.css("display")=="none"&&k.autoHide){p.hide()}p.addClass(k.selectClass);if(k.useID&&o.attr("id")!=""){p.attr("id",k.idPrefix+"-"+o.attr("id"))}var n=o.find(":selected:first");if(n.length==0){n=o.find("option:first")}l.html(n.html());o.css("opacity",0);o.wrap(p);o.before(l);p=o.parent("div");l=o.siblings("span");o.bind({"change.uniform":function(){l.text(o.find(":selected").html());p.removeClass(k.activeClass)},"focus.uniform":function(){p.addClass(k.focusClass)},"blur.uniform":function(){p.removeClass(k.focusClass);p.removeClass(k.activeClass)},"mousedown.uniform touchbegin.uniform":function(){p.addClass(k.activeClass)},"mouseup.uniform touchend.uniform":function(){p.removeClass(k.activeClass)},"click.uniform touchend.uniform":function(){p.removeClass(k.activeClass)},"mouseenter.uniform":function(){p.addClass(k.hoverClass)},"mouseleave.uniform":function(){p.removeClass(k.hoverClass);p.removeClass(k.activeClass)},"keyup.uniform":function(){l.text(o.find(":selected").html())}});if(a(o).attr("disabled")){p.addClass(k.disabledClass)}a.uniform.noSelect(l);b(o)}function f(n){var m=a(n);var o=a("<div />"),l=a("<span />");if(!m.css("display")=="none"&&k.autoHide){o.hide()}o.addClass(k.checkboxClass);if(k.useID&&n.attr("id")!=""){o.attr("id",k.idPrefix+"-"+n.attr("id"))}a(n).wrap(o);a(n).wrap(l);l=n.parent();o=l.parent();a(n).css("opacity",0).bind({"focus.uniform":function(){o.addClass(k.focusClass)},"blur.uniform":function(){o.removeClass(k.focusClass)},"click.uniform touchend.uniform":function(){if(!a(n).attr("checked")){l.removeClass(k.checkedClass)}else{l.addClass(k.checkedClass)}},"mousedown.uniform touchbegin.uniform":function(){o.addClass(k.activeClass)},"mouseup.uniform touchend.uniform":function(){o.removeClass(k.activeClass)},"mouseenter.uniform":function(){o.addClass(k.hoverClass)},"mouseleave.uniform":function(){o.removeClass(k.hoverClass);o.removeClass(k.activeClass)}});if(a(n).attr("checked")){l.addClass(k.checkedClass)}if(a(n).attr("disabled")){o.addClass(k.disabledClass)}b(n)}function c(n){var m=a(n);var o=a("<div />"),l=a("<span />");if(!m.css("display")=="none"&&k.autoHide){o.hide()}o.addClass(k.radioClass);if(k.useID&&n.attr("id")!=""){o.attr("id",k.idPrefix+"-"+n.attr("id"))}a(n).wrap(o);a(n).wrap(l);l=n.parent();o=l.parent();a(n).css("opacity",0).bind({"focus.uniform":function(){o.addClass(k.focusClass)},"blur.uniform":function(){o.removeClass(k.focusClass)},"click.uniform touchend.uniform":function(){if(!a(n).attr("checked")){l.removeClass(k.checkedClass)}else{var p=k.radioClass.split(" ")[0];a("."+p+" span."+k.checkedClass+":has([name='"+a(n).attr("name")+"'])").removeClass(k.checkedClass);l.addClass(k.checkedClass)}},"mousedown.uniform touchend.uniform":function(){if(!a(n).is(":disabled")){o.addClass(k.activeClass)}},"mouseup.uniform touchbegin.uniform":function(){o.removeClass(k.activeClass)},"mouseenter.uniform touchend.uniform":function(){o.addClass(k.hoverClass)},"mouseleave.uniform":function(){o.removeClass(k.hoverClass);o.removeClass(k.activeClass)}});if(a(n).attr("checked")){l.addClass(k.checkedClass)}if(a(n).attr("disabled")){o.addClass(k.disabledClass)}b(n)}function h(q){var o=a(q);var r=a("<div />"),p=a("<span>"+k.fileDefaultText+"</span>"),m=a("<span>"+k.fileBtnText+"</span>");if(!o.css("display")=="none"&&k.autoHide){r.hide()}r.addClass(k.fileClass);p.addClass(k.filenameClass);m.addClass(k.fileBtnClass);if(k.useID&&o.attr("id")!=""){r.attr("id",k.idPrefix+"-"+o.attr("id"))}o.wrap(r);o.after(m);o.after(p);r=o.closest("div");p=o.siblings("."+k.filenameClass);m=o.siblings("."+k.fileBtnClass);if(!o.attr("size")){var l=r.width();o.attr("size",l/10)}var n=function(){var s=o.val();if(s===""){s=k.fileDefaultText}else{s=s.split(/[\/\\]+/);s=s[(s.length-1)]}p.text(s)};n();o.css("opacity",0).bind({"focus.uniform":function(){r.addClass(k.focusClass)},"blur.uniform":function(){r.removeClass(k.focusClass)},"mousedown.uniform":function(){if(!a(q).is(":disabled")){r.addClass(k.activeClass)}},"mouseup.uniform":function(){r.removeClass(k.activeClass)},"mouseenter.uniform":function(){r.addClass(k.hoverClass)},"mouseleave.uniform":function(){r.removeClass(k.hoverClass);r.removeClass(k.activeClass)}});if(a.browser.msie){o.bind("click.uniform.ie7",function(){setTimeout(n,0)})}else{o.bind("change.uniform",n)}if(o.attr("disabled")){r.addClass(k.disabledClass)}a.uniform.noSelect(p);a.uniform.noSelect(m);b(q)}a.uniform.restore=function(l){if(l==undefined){l=a(a.uniform.elements)}a(l).each(function(){if(a(this).is(":checkbox")){a(this).unwrap().unwrap()}else{if(a(this).is("select")){a(this).siblings("span").remove();a(this).unwrap()}else{if(a(this).is(":radio")){a(this).unwrap().unwrap()}else{if(a(this).is(":file")){a(this).siblings("span").remove();a(this).unwrap()}else{if(a(this).is("button, :submit, :reset, a, input[type='button']")){a(this).unwrap().unwrap()}}}}}a(this).unbind(".uniform");a(this).css("opacity","1");var m=a.inArray(a(l),a.uniform.elements);a.uniform.elements.splice(m,1)})};function b(l){l=a(l).get();if(l.length>1){a.each(l,function(m,n){a.uniform.elements.push(n)})}else{a.uniform.elements.push(l)}}a.uniform.noSelect=function(l){function m(){return false}a(l).each(function(){this.onselectstart=this.ondragstart=m;a(this).mousedown(m).css({MozUserSelect:"none"})})};a.uniform.update=function(l){if(l==undefined){l=a(a.uniform.elements)}l=a(l);l.each(function(){var n=a(this);if(n.is("select")){var m=n.siblings("span");var p=n.parent("div");p.removeClass(k.hoverClass+" "+k.focusClass+" "+k.activeClass);m.html(n.find(":selected").html());if(n.is(":disabled")){p.addClass(k.disabledClass)}else{p.removeClass(k.disabledClass)}}else{if(n.is(":checkbox")){var m=n.closest("span");var p=n.closest("div");p.removeClass(k.hoverClass+" "+k.focusClass+" "+k.activeClass);m.removeClass(k.checkedClass);if(n.is(":checked")){m.addClass(k.checkedClass)}if(n.is(":disabled")){p.addClass(k.disabledClass)}else{p.removeClass(k.disabledClass)}}else{if(n.is(":radio")){var m=n.closest("span");var p=n.closest("div");p.removeClass(k.hoverClass+" "+k.focusClass+" "+k.activeClass);m.removeClass(k.checkedClass);if(n.is(":checked")){m.addClass(k.checkedClass)}if(n.is(":disabled")){p.addClass(k.disabledClass)}else{p.removeClass(k.disabledClass)}}else{if(n.is(":file")){var p=n.parent("div");var o=n.siblings(k.filenameClass);btnTag=n.siblings(k.fileBtnClass);p.removeClass(k.hoverClass+" "+k.focusClass+" "+k.activeClass);o.text(n.val());if(n.is(":disabled")){p.addClass(k.disabledClass)}else{p.removeClass(k.disabledClass)}}else{if(n.is(":submit")||n.is(":reset")||n.is("button")||n.is("a")||l.is("input[type=button]")){var p=n.closest("div");p.removeClass(k.hoverClass+" "+k.focusClass+" "+k.activeClass);if(n.is(":disabled")){p.addClass(k.disabledClass)}else{p.removeClass(k.disabledClass)}}}}}}})};return this.each(function(){if(a.support.selectOpacity){var l=a(this);if(l.is("select")){if(l.attr("multiple")!=true){if(l.attr("size")==undefined||l.attr("size")<=1){e(l)}}}else{if(l.is(":checkbox")){f(l)}else{if(l.is(":radio")){c(l)}else{if(l.is(":file")){h(l)}else{if(l.is(":text, :password, input[type='email']")){j(l)}else{if(l.is("textarea")){g(l)}else{if(l.is("a")||l.is(":submit")||l.is(":reset")||l.is("button")||l.is("input[type=button]")){i(l)}}}}}}}}})}})(jQuery);
(function($) {

$.extend({
	metadata : {
		defaults : {
			type: 'class',
			name: 'metadata',
			cre: /({.*})/,
			single: 'metadata'
		},
		setType: function( type, name ){
			this.defaults.type = type;
			this.defaults.name = name;
		},
		get: function( elem, opts ){
			var settings = $.extend({},this.defaults,opts);
			// check for empty string in single property
			if ( !settings.single.length ) settings.single = 'metadata';
			
			var data = $.data(elem, settings.single);
			// returned cached data if it already exists
			if ( data ) return data;
			
			data = "{}";
			
			if ( settings.type == "class" ) {
				var m = settings.cre.exec( elem.className );
				if ( m )
					data = m[1];
			} else if ( settings.type == "elem" ) {
				if( !elem.getElementsByTagName )
					return undefined;
				var e = elem.getElementsByTagName(settings.name);
				if ( e.length )
					data = $.trim(e[0].innerHTML);
			} else if ( elem.getAttribute != undefined ) {
				var attr = elem.getAttribute( settings.name );
				if ( attr )
					data = attr;
			}
			
			if ( data.indexOf( '{' ) <0 )
			data = "{" + data + "}";
			
			data = eval("(" + data + ")");
			
			$.data( elem, settings.single, data );
			return data;
		}
	}
});

/**
 * Returns the metadata object for the first member of the jQuery object.
 *
 * @name metadata
 * @descr Returns element's metadata object
 * @param Object opts An object contianing settings to override the defaults
 * @type jQuery
 * @cat Plugins/Metadata
 */
$.fn.metadata = function( opts ){
	return $.metadata.get( this[0], opts );
};

})(jQuery);
/*
 * jQuery Form Plugin
 * version: 2.36 (07-NOV-2009)
 * @requires jQuery v1.2.6 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
;(function($) {

/*
	Usage Note:
	-----------
	Do not use both ajaxSubmit and ajaxForm on the same form.  These
	functions are intended to be exclusive.  Use ajaxSubmit if you want
	to bind your own submit handler to the form.  For example,

	$(document).ready(function() {
		$('#myForm').bind('submit', function() {
			$(this).ajaxSubmit({
				target: '#output'
			});
			return false; // <-- important!
		});
	});

	Use ajaxForm when you want the plugin to manage all the event binding
	for you.  For example,

	$(document).ready(function() {
		$('#myForm').ajaxForm({
			target: '#output'
		});
	});

	When using ajaxForm, the ajaxSubmit function will be invoked for you
	at the appropriate time.
*/

/**
 * ajaxSubmit() provides a mechanism for immediately submitting
 * an HTML form using AJAX.
 */
$.fn.ajaxSubmit = function(options) {
	// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
	if (!this.length) {
		log('ajaxSubmit: skipping submit process - no element selected');
		return this;
	}

	if (typeof options == 'function')
		options = { success: options };

	var url = $.trim(this.attr('action'));
	if (url) {
		// clean url (don't include hash vaue)
		url = (url.match(/^([^#]+)/)||[])[1];
   	}
   	url = url || window.location.href || '';

	options = $.extend({
		url:  url,
		type: this.attr('method') || 'GET',
		iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
	}, options || {});

	// hook for manipulating the form data before it is extracted;
	// convenient for use with rich editors like tinyMCE or FCKEditor
	var veto = {};
	this.trigger('form-pre-serialize', [this, options, veto]);
	if (veto.veto) {
		log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
		return this;
	}

	// provide opportunity to alter form data before it is serialized
	if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
		log('ajaxSubmit: submit aborted via beforeSerialize callback');
		return this;
	}

	var a = this.formToArray(options.semantic);
	if (options.data) {
		options.extraData = options.data;
		for (var n in options.data) {
		  if(options.data[n] instanceof Array) {
			for (var k in options.data[n])
			  a.push( { name: n, value: options.data[n][k] } );
		  }
		  else
			 a.push( { name: n, value: options.data[n] } );
		}
	}

	// give pre-submit callback an opportunity to abort the submit
	if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
		log('ajaxSubmit: submit aborted via beforeSubmit callback');
		return this;
	}

	// fire vetoable 'validate' event
	this.trigger('form-submit-validate', [a, this, options, veto]);
	if (veto.veto) {
		log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
		return this;
	}

	var q = $.param(a);

	if (options.type.toUpperCase() == 'GET') {
		options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
		options.data = null;  // data is null for 'get'
	}
	else
		options.data = q; // data is the query string for 'post'

	var $form = this, callbacks = [];
	if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
	if (options.clearForm) callbacks.push(function() { $form.clearForm(); });

	// perform a load on the target only if dataType is not provided
	if (!options.dataType && options.target) {
		var oldSuccess = options.success || function(){};
		callbacks.push(function(data) {
			$(options.target).html(data).each(oldSuccess, arguments);
		});
	}
	else if (options.success)
		callbacks.push(options.success);

	options.success = function(data, status) {
		for (var i=0, max=callbacks.length; i < max; i++)
			callbacks[i].apply(options, [data, status, $form]);
	};

	// are there files to upload?
	var files = $('input:file', this).fieldValue();
	var found = false;
	for (var j=0; j < files.length; j++)
		if (files[j])
			found = true;

	var multipart = false;
//	var mp = 'multipart/form-data';
//	multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);

	// options.iframe allows user to force iframe mode
	// 06-NOV-09: now defaulting to iframe mode if file input is detected
   if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {
	   // hack to fix Safari hang (thanks to Tim Molendijk for this)
	   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
	   if (options.closeKeepAlive)
		   $.get(options.closeKeepAlive, fileUpload);
	   else
		   fileUpload();
	   }
   else
	   $.ajax(options);

	// fire 'notify' event
	this.trigger('form-submit-notify', [this, options]);
	return this;


	// private function for handling file uploads (hat tip to YAHOO!)
	function fileUpload() {
		var form = $form[0];

		if ($(':input[name=submit]', form).length) {
			alert('Error: Form elements must not be named "submit".');
			return;
		}

		var opts = $.extend({}, $.ajaxSettings, options);
		var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);

		var id = 'jqFormIO' + (new Date().getTime());
		var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');
		var io = $io[0];

		$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });

		var xhr = { // mock object
			aborted: 0,
			responseText: null,
			responseXML: null,
			status: 0,
			statusText: 'n/a',
			getAllResponseHeaders: function() {},
			getResponseHeader: function() {},
			setRequestHeader: function() {},
			abort: function() {
				this.aborted = 1;
				$io.attr('src', opts.iframeSrc); // abort op in progress
			}
		};

		var g = opts.global;
		// trigger ajax global events so that activity/block indicators work like normal
		if (g && ! $.active++) $.event.trigger("ajaxStart");
		if (g) $.event.trigger("ajaxSend", [xhr, opts]);

		if (s.beforeSend && s.beforeSend(xhr, s) === false) {
			s.global && $.active--;
			return;
		}
		if (xhr.aborted)
			return;

		var cbInvoked = 0;
		var timedOut = 0;

		// add submitting element to data if we know it
		var sub = form.clk;
		if (sub) {
			var n = sub.name;
			if (n && !sub.disabled) {
				options.extraData = options.extraData || {};
				options.extraData[n] = sub.value;
				if (sub.type == "image") {
					options.extraData[name+'.x'] = form.clk_x;
					options.extraData[name+'.y'] = form.clk_y;
				}
			}
		}

		// take a breath so that pending repaints get some cpu time before the upload starts
		setTimeout(function() {
			// make sure form attrs are set
			var t = $form.attr('target'), a = $form.attr('action');

			// update form attrs in IE friendly way
			form.setAttribute('target',id);
			if (form.getAttribute('method') != 'POST')
				form.setAttribute('method', 'POST');
			if (form.getAttribute('action') != opts.url)
				form.setAttribute('action', opts.url);

			// ie borks in some cases when setting encoding
			if (! options.skipEncodingOverride) {
				$form.attr({
					encoding: 'multipart/form-data',
					enctype:  'multipart/form-data'
				});
			}

			// support timout
			if (opts.timeout)
				setTimeout(function() { timedOut = true; cb(); }, opts.timeout);

			// add "extra" data to form if provided in options
			var extraInputs = [];
			try {
				if (options.extraData)
					for (var n in options.extraData)
						extraInputs.push(
							$('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
								.appendTo(form)[0]);

				// add iframe to doc and submit the form
				$io.appendTo('body');
				io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
				form.submit();
			}
			finally {
				// reset attrs and remove "extra" input elements
				form.setAttribute('action',a);
				t ? form.setAttribute('target', t) : $form.removeAttr('target');
				$(extraInputs).remove();
			}
		}, 10);

		var domCheckCount = 50;

		function cb() {
			if (cbInvoked++) return;

			io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);

			var ok = true;
			try {
				if (timedOut) throw 'timeout';
				// extract the server response from the iframe
				var data, doc;

				doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
				
				var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
				log('isXml='+isXml);
				if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
				 	if (--domCheckCount) {
						// in some browsers (Opera) the iframe DOM is not always traversable when
						// the onload callback fires, so we loop a bit to accommodate
						cbInvoked = 0;
						setTimeout(cb, 100);
						return;
					}
					log('Could not access iframe DOM after 50 tries.');
					return;
				}

				xhr.responseText = doc.body ? doc.body.innerHTML : null;
				xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
				xhr.getResponseHeader = function(header){
					var headers = {'content-type': opts.dataType};
					return headers[header];
				};

				if (opts.dataType == 'json' || opts.dataType == 'script') {
					// see if user embedded response in textarea
					var ta = doc.getElementsByTagName('textarea')[0];
					if (ta)
						xhr.responseText = ta.value;
					else {
						// account for browsers injecting pre around json response
						var pre = doc.getElementsByTagName('pre')[0];
						if (pre)
							xhr.responseText = pre.innerHTML;
					}			  
				}
				else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
					xhr.responseXML = toXml(xhr.responseText);
				}
				data = $.httpData(xhr, opts.dataType);
			}
			catch(e){
				ok = false;
				$.handleError(opts, xhr, 'error', e);
			}

			// ordering of these callbacks/triggers is odd, but that's how $.ajax does it
			if (ok) {
				opts.success(data, 'success');
				if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
			}
			if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
			if (g && ! --$.active) $.event.trigger("ajaxStop");
			if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');

			// clean up
			setTimeout(function() {
				$io.remove();
				xhr.responseXML = null;
			}, 100);
		};

		function toXml(s, doc) {
			if (window.ActiveXObject) {
				doc = new ActiveXObject('Microsoft.XMLDOM');
				doc.async = 'false';
				doc.loadXML(s);
			}
			else
				doc = (new DOMParser()).parseFromString(s, 'text/xml');
			return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
		};
	};
};

/**
 * ajaxForm() provides a mechanism for fully automating form submission.
 *
 * The advantages of using this method instead of ajaxSubmit() are:
 *
 * 1: This method will include coordinates for <input type="image" /> elements (if the element
 *	is used to submit the form).
 * 2. This method will include the submit element's name/value data (for the element that was
 *	used to submit the form).
 * 3. This method binds the submit() method to the form for you.
 *
 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
 * passes the options argument along after properly binding events for submit elements and
 * the form itself.
 */
$.fn.ajaxForm = function(options) {
	return this.ajaxFormUnbind().bind('submit.form-plugin', function() {
		$(this).ajaxSubmit(options);
		return false;
	}).bind('click.form-plugin', function(e) {
		var target = e.target;
		var $el = $(target);
		if (!($el.is(":submit,input:image"))) {
			// is this a child element of the submit el?  (ex: a span within a button)
			var t = $el.closest(':submit');
			if (t.length == 0)
				return;
			target = t[0];
		}
		var form = this;
		form.clk = target;
		if (target.type == 'image') {
			if (e.offsetX != undefined) {
				form.clk_x = e.offsetX;
				form.clk_y = e.offsetY;
			} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
				var offset = $el.offset();
				form.clk_x = e.pageX - offset.left;
				form.clk_y = e.pageY - offset.top;
			} else {
				form.clk_x = e.pageX - target.offsetLeft;
				form.clk_y = e.pageY - target.offsetTop;
			}
		}
		// clear form vars
		setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
	});
};

// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
$.fn.ajaxFormUnbind = function() {
	return this.unbind('submit.form-plugin click.form-plugin');
};

/**
 * formToArray() gathers form element data into an array of objects that can
 * be passed to any of the following ajax functions: $.get, $.post, or load.
 * Each object in the array has both a 'name' and 'value' property.  An example of
 * an array for a simple login form might be:
 *
 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 *
 * It is this array that is passed to pre-submit callback functions provided to the
 * ajaxSubmit() and ajaxForm() methods.
 */
$.fn.formToArray = function(semantic) {
	var a = [];
	if (this.length == 0) return a;

	var form = this[0];
	var els = semantic ? form.getElementsByTagName('*') : form.elements;
	if (!els) return a;
	for(var i=0, max=els.length; i < max; i++) {
		var el = els[i];
		var n = el.name;
		if (!n) continue;

		if (semantic && form.clk && el.type == "image") {
			// handle image inputs on the fly when semantic == true
			if(!el.disabled && form.clk == el) {
				a.push({name: n, value: $(el).val()});
				a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
			}
			continue;
		}

		var v = $.fieldValue(el, true);
		if (v && v.constructor == Array) {
			for(var j=0, jmax=v.length; j < jmax; j++)
				a.push({name: n, value: v[j]});
		}
		else if (v !== null && typeof v != 'undefined')
			a.push({name: n, value: v});
	}

	if (!semantic && form.clk) {
		// input type=='image' are not found in elements array! handle it here
		var $input = $(form.clk), input = $input[0], n = input.name;
		if (n && !input.disabled && input.type == 'image') {
			a.push({name: n, value: $input.val()});
			a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
		}
	}
	return a;
};

/**
 * Serializes form data into a 'submittable' string. This method will return a string
 * in the format: name1=value1&amp;name2=value2
 */
$.fn.formSerialize = function(semantic) {
	//hand off to jQuery.param for proper encoding
	return $.param(this.formToArray(semantic));
};

/**
 * Serializes all field elements in the jQuery object into a query string.
 * This method will return a string in the format: name1=value1&amp;name2=value2
 */
$.fn.fieldSerialize = function(successful) {
	var a = [];
	this.each(function() {
		var n = this.name;
		if (!n) return;
		var v = $.fieldValue(this, successful);
		if (v && v.constructor == Array) {
			for (var i=0,max=v.length; i < max; i++)
				a.push({name: n, value: v[i]});
		}
		else if (v !== null && typeof v != 'undefined')
			a.push({name: this.name, value: v});
	});
	//hand off to jQuery.param for proper encoding
	return $.param(a);
};

/**
 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
 *
 *  <form><fieldset>
 *	  <input name="A" type="text" />
 *	  <input name="A" type="text" />
 *	  <input name="B" type="checkbox" value="B1" />
 *	  <input name="B" type="checkbox" value="B2"/>
 *	  <input name="C" type="radio" value="C1" />
 *	  <input name="C" type="radio" value="C2" />
 *  </fieldset></form>
 *
 *  var v = $(':text').fieldValue();
 *  // if no values are entered into the text inputs
 *  v == ['','']
 *  // if values entered into the text inputs are 'foo' and 'bar'
 *  v == ['foo','bar']
 *
 *  var v = $(':checkbox').fieldValue();
 *  // if neither checkbox is checked
 *  v === undefined
 *  // if both checkboxes are checked
 *  v == ['B1', 'B2']
 *
 *  var v = $(':radio').fieldValue();
 *  // if neither radio is checked
 *  v === undefined
 *  // if first radio is checked
 *  v == ['C1']
 *
 * The successful argument controls whether or not the field element must be 'successful'
 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.  If this value is false the value(s)
 * for each element is returned.
 *
 * Note: This method *always* returns an array.  If no valid value can be determined the
 *	   array will be empty, otherwise it will contain one or more values.
 */
$.fn.fieldValue = function(successful) {
	for (var val=[], i=0, max=this.length; i < max; i++) {
		var el = this[i];
		var v = $.fieldValue(el, successful);
		if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
			continue;
		v.constructor == Array ? $.merge(val, v) : val.push(v);
	}
	return val;
};

/**
 * Returns the value of the field element.
 */
$.fieldValue = function(el, successful) {
	var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
	if (typeof successful == 'undefined') successful = true;

	if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
		(t == 'checkbox' || t == 'radio') && !el.checked ||
		(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
		tag == 'select' && el.selectedIndex == -1))
			return null;

	if (tag == 'select') {
		var index = el.selectedIndex;
		if (index < 0) return null;
		var a = [], ops = el.options;
		var one = (t == 'select-one');
		var max = (one ? index+1 : ops.length);
		for(var i=(one ? index : 0); i < max; i++) {
			var op = ops[i];
			if (op.selected) {
				var v = op.value;
				if (!v) // extra pain for IE...
					v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
				if (one) return v;
				a.push(v);
			}
		}
		return a;
	}
	return el.value;
};

/**
 * Clears the form data.  Takes the following actions on the form's input fields:
 *  - input text fields will have their 'value' property set to the empty string
 *  - select elements will have their 'selectedIndex' property set to -1
 *  - checkbox and radio inputs will have their 'checked' property set to false
 *  - inputs of type submit, button, reset, and hidden will *not* be effected
 *  - button elements will *not* be effected
 */
$.fn.clearForm = function() {
	return this.each(function() {
		$('input,select,textarea', this).clearFields();
	});
};

/**
 * Clears the selected form elements.
 */
$.fn.clearFields = $.fn.clearInputs = function() {
	return this.each(function() {
		var t = this.type, tag = this.tagName.toLowerCase();
		if (t == 'text' || t == 'password' || tag == 'textarea')
			this.value = '';
		else if (t == 'checkbox' || t == 'radio')
			this.checked = false;
		else if (tag == 'select')
			this.selectedIndex = -1;
	});
};

/**
 * Resets the form data.  Causes all form elements to be reset to their original value.
 */
$.fn.resetForm = function() {
	return this.each(function() {
		// guard against an input with the name of 'reset'
		// note that IE reports the reset function as an 'object'
		if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
			this.reset();
	});
};

/**
 * Enables or disables any matching elements.
 */
$.fn.enable = function(b) {
	if (b == undefined) b = true;
	return this.each(function() {
		this.disabled = !b;
	});
};

/**
 * Checks/unchecks any matching checkboxes or radio buttons and
 * selects/deselects and matching option elements.
 */
$.fn.selected = function(select) {
	if (select == undefined) select = true;
	return this.each(function() {
		var t = this.type;
		if (t == 'checkbox' || t == 'radio')
			this.checked = select;
		else if (this.tagName.toLowerCase() == 'option') {
			var $sel = $(this).parent('select');
			if (select && $sel[0] && $sel[0].type == 'select-one') {
				// deselect all other options
				$sel.find('option').selected(false);
			}
			this.selected = select;
		}
	});
};

// helper fn for console logging
// set $.fn.ajaxSubmit.debug to true to enable debug logging
function log() {
	if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
		window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
};

})(jQuery);

/*
 * jQuery validation plug-in 1.7
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2008 J�rn Zaefferer
 *
 * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}var validator=$.data(this[0],'validator');if(validator){return validator;}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);}validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton){hidden.remove();}return false;}return true;}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle();}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false;}return handle();}else{validator.focusInvalid();return false;}});}return validator;},valid:function(){if($(this[0]).is('form')){return this.validate().form();}else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this);});return valid;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,'validator').settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages);break;case"remove":if(!argument){delete staticRules[element.name];return existingRules;}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method];});return filtered;}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(""+a.value);},filled:function(a){return!!$.trim(""+a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);this.currentForm=form;this.init();};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,args);};if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1);}if(params.constructor!=Array){params=[params];}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n);});return source;};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide();}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element);}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element);}},onclick:function(element){if(element.name in this.submitted)this.element(element);else if(element.parentNode.name in this.submitted)this.element(element.parentNode);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},setDefaults:function(settings){$.extend($.validator.defaults,settings);},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key;});});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value);});function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");validator.settings[eventType]&&validator.settings[eventType].call(validator,this[0]);}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid();},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i]);}return this.valid();},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name];}else{this.invalid[element.name]=true;}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}this.successList=$.grep(this.successList,function(element){return!(element.name in errors);});}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors();},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass);},numberOfInvalids:function(){return this.objectLength(this.invalid);},objectLength:function(obj){var count=0;for(var i in obj)count++;return count;},hideErrors:function(){this.addWrapper(this.toHide).hide();},valid:function(){return this.size()==0;},size:function(){return this.errorList.length;},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin");}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name;}).length==1&&lastActive;},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true;});},clean:function(selector){return $(selector)[0];},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext);},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.currentElements=$([]);},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers);},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element);},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0];}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue;}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return;}if(!result){this.formatAndAdd(element,rule);return false;}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id
+", check the '"+rule.method+"' method",e);throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},findDefined:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined)return arguments[i];}return undefined;},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>");},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;if(typeof message=="function"){message=message.call(this,rule.parameters,element);}else if(theregex.test(message)){message=jQuery.format(message.replace(theregex,'{$1}'),rule.parameters);}this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message;},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle;},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message);}if(this.errorList.length){this.toShow=this.toShow.add(this.containers);}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i]);}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show();},validElements:function(){return this.currentElements.not(this.invalidElements());},invalidElements:function(){return $(this.errorList).map(function(){return this.element;});},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element);}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label);}this.toShow=this.toShow.add(label);},errorsFor:function(element){var name=this.idOrName(element);return this.errors().filter(function(){return $(this).attr('for')==name;});},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name);},checkable:function(element){return/radio|checkbox/i.test(element.type);},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null;});},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length;}return value.length;},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true;},dependTypes:{"boolean":function(param,element){return param;},"string":function(param,element){return!!$(param,element.form).length;},"function":function(param,element){return param(element);}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch";},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true;}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();this.formSubmitted=false;}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false;}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")});}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className);},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this]);}});return rules;},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value;}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength;}return rules;},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata();},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};}return rules;},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return;}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break;}if(keepRule){rules[prop]=val.param!==undefined?val.param:true;}else{delete rules[prop];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this]);}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])];}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max;}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength;}}if(rules.messages){delete rules.messages;}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var val=$(element).val();return val&&val.length>0;case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};previous.originalMessage=this.settings.messages[element.name].remote;this.settings.messages[element.name].remote=previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors();}else{var errors={};var message=(previous.message=response||validator.defaultMessage(element,"remote"));errors[element.name]=$.isFunction(message)?message(value):message;validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9;}nCheck+=nDigit;bEven=!bEven;}return(nCheck%10)==0;},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,'|'):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"));},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(element).valid();});return value==target.val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort();}return(pendingRequests[port]=ajax.apply(this,arguments));}return ajax.apply(this,arguments);};})(jQuery);;(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true);},teardown:function(){this.removeEventListener(original,handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};function handler(e){e=$.event.fix(e);e.type=fix;return $.event.handle.call(this,e);}});};$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});}});})(jQuery);
                    /*
 * Translated default messages for the jQuery validation plugin.
 * Locale: ES
 */
jQuery.extend(jQuery.validator.messages, {
  required: "Este campo es obligatorio.",
  remote: "Por favor, rellena este campo.",
  email: "Por favor, escribe una direcci�n de correo v�lida",
  url: "Por favor, escribe una URL v�lida.",
  date: "Por favor, escribe una fecha v�lida.",
  dateISO: "Por favor, escribe una fecha (ISO) v�lida.",
  number: "Por favor, escribe un n�mero entero v�lido.",
  digits: "Por favor, escribe s�lo d�gitos.",
  creditcard: "Por favor, escribe un n�mero de tarjeta v�lido.",
  equalTo: "Por favor, escribe el mismo valor de nuevo.",
  accept: "Por favor, escribe un valor con una extensi�n aceptada.",
  maxlength: jQuery.validator.format("Por favor, no escribas m�s de {0} caracteres."),
  minlength: jQuery.validator.format("Por favor, no escribas menos de {0} caracteres."),
  rangelength: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
  range: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1}."),
  max: jQuery.validator.format("Por favor, escribe un valor menor o igual a {0}."),
  min: jQuery.validator.format("Por favor, escribe un valor mayor o igual a {0}.")
});(function() {
	
	function stripHtml(value) {
		// remove html tags and space chars
		return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')
		// remove numbers and punctuation
		.replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g,'');
	}
	jQuery.validator.addMethod("maxWords", function(value, element, params) { 
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length < params; 
	}, jQuery.validator.format("Please enter {0} words or less.")); 
	 
	jQuery.validator.addMethod("minWords", function(value, element, params) { 
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; 
	}, jQuery.validator.format("Please enter at least {0} words.")); 
	 
	jQuery.validator.addMethod("rangeWords", function(value, element, params) { 
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1]; 
	}, jQuery.validator.format("Please enter between {0} and {1} words."));

})();

jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "No white space please"); 

jQuery.validator.addMethod("ziprange", function(value, element) {
	return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");

jQuery.validator.addMethod("integer", function(value, element) {
	return this.optional(element) || /^-?\d+$/.test(value);
}, "A positive or negative non-decimal number please");

/**
* Return true, if the value is a valid vehicle identification number (VIN).
*
* Works with all kind of text inputs.
*
* @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
* @desc Declares a required input element whose value must be a valid vehicle identification number.
*
* @name jQuery.validator.methods.vinUS
* @type Boolean
* @cat Plugins/Validate/Methods
*/ 
jQuery.validator.addMethod(
	"vinUS",
	function(v){
		if (v.length != 17)
			return false;
		var i, n, d, f, cd, cdv;
		var LL    = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
		var VL    = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
		var FL    = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
		var rs    = 0;
		for(i = 0; i < 17; i++){
		    f = FL[i];
		    d = v.slice(i,i+1);
		    if(i == 8){
		        cdv = d;
		    }
		    if(!isNaN(d)){
		        d *= f;
		    }
		    else{
		        for(n = 0; n < LL.length; n++){
		            if(d.toUpperCase() === LL[n]){
		                d = VL[n];
		                d *= f;
		                if(isNaN(cdv) && n == 8){
		                    cdv = LL[n];
		                }
		                break;
		            }
		        }
		    }
		    rs += d;
		}
		cd = rs % 11;
		if(cd == 10){cd = "X";}
		if(cd == cdv){return true;}
		return false; 
	},
	"The specified vehicle identification number (VIN) is invalid."
);

/**
  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
  *
  * @example jQuery.validator.methods.date("01/01/1900")
  * @result true
  *
  * @example jQuery.validator.methods.date("01/13/1990")
  * @result false
  *
  * @example jQuery.validator.methods.date("01.01.1900")
  * @result false
  *
  * @example <input name="pippo" class="{dateITA:true}" />
  * @desc Declares an optional input element whose value must be a valid date.
  *
  * @name jQuery.validator.methods.dateITA
  * @type Boolean
  * @cat Plugins/Validate/Methods
  */
jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
		if( re.test(value)){
			var adata = value.split('/');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Please enter a correct date"
);

jQuery.validator.addMethod("dateNL", function(value, element) {
		return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
	}, "Vul hier een geldige datum in."
);

jQuery.validator.addMethod("time", function(value, element) {
		return this.optional(element) || /^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(value);
	}, "Please enter a valid time, between 00:00 and 23:59"
);

/**
 * matches US phone number format 
 * 
 * where the area code may not start with 1 and the prefix may not start with 1 
 * allows '-' or ' ' as a separator and allows parens around area code 
 * some people may want to put a '1' in front of their number 
 * 
 * 1(212)-999-2345
 * or
 * 212 999 2344
 * or
 * 212-999-0983
 * 
 * but not
 * 111-123-5434
 * and not
 * 212 123 4567
 */
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
	return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

jQuery.validator.addMethod('phoneUK', function(phone_number, element) {
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/);
}, 'Please specify a valid phone number');

jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^((0|\+44)7(5|6|7|8|9){1}\d{2}\s?\d{6})$/);
}, 'Please specify a valid mobile number');

// TODO check if value starts with <, otherwise don't try stripping anything
jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
	return jQuery(value).text().length >= param;
}, jQuery.validator.format("Please enter at least {0} characters"));

// same as email, but TLD is optional
jQuery.validator.addMethod("email2", function(value, element, param) {
	return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); 
}, jQuery.validator.messages.email);

// same as url, but TLD is optional
jQuery.validator.addMethod("url2", function(value, element, param) {
	return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); 
}, jQuery.validator.messages.url);

// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {

	if (/[^0-9-]+/.test(value)) 
		return false;
	
	value = value.replace(/\D/g, "");
	
	var validTypes = 0x0000;
	
	if (param.mastercard) 
		validTypes |= 0x0001;
	if (param.visa) 
		validTypes |= 0x0002;
	if (param.amex) 
		validTypes |= 0x0004;
	if (param.dinersclub) 
		validTypes |= 0x0008;
	if (param.enroute) 
		validTypes |= 0x0010;
	if (param.discover) 
		validTypes |= 0x0020;
	if (param.jcb) 
		validTypes |= 0x0040;
	if (param.unknown) 
		validTypes |= 0x0080;
	if (param.all) 
		validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
	
	if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard
		return value.length == 16;
	}
	if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
		return value.length == 16;
	}
	if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex
		return value.length == 15;
	}
	if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub
		return value.length == 14;
	}
	if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute
		return value.length == 15;
	}
	if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
		return value.length == 16;
	}
	if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
		return value.length == 16;
	}
	if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
		return value.length == 15;
	}
	if (validTypes & 0x0080) { //unknown
		return true;
	}
	return false;
}, "Please enter a valid credit card number.");

/*
jQuery Url Plugin
	* Version 1.0
	* 2009-03-22 19:30:05
	* URL: http://ajaxcssblog.com/jquery/url-read-get-variables/
	* Description: jQuery Url Plugin gives the ability to read GET parameters from the actual URL
	* Author: Matthias J�ggli
	* Copyright: Copyright (c) 2009 Matthias J�ggli under dual MIT/GPL license.
*/
(function ($) {
    $.url = {};
    $.extend($.url, {
        _params: {},
        init: function(){
            var paramsRaw = "";
            try{
                paramsRaw =
                (document.location.href.split("?", 2)[1] || "").split("#")[0].split("&") || [];
                for(var i = 0; i< paramsRaw.length; i++){
                    var single = paramsRaw[i].split("=");
                    if(single[0])
                        this._params[single[0]] = unescape(single[1]);
                }
            }
            catch(e){
                alert(e);
            }
        },
        param: function(name){
            return this._params[name] || "";
        },
        paramAll: function(){
            return this._params;
        }
    });
    $.url.init();
})(jQuery);
/*!
 * jQuery Lightbox Evolution - for jQuery 1.3+
 * http://codecanyon.net/item/jquery-lightbox-evolution/115655?ref=aeroalquimia
 *
 * Copyright 2010, Eduardo Daniel Sada
 * http://codecanyon.net/wiki/buying/howto-buying/licensing/
 *
 * Version: 1.4.5 (May 12 2011)
 *
 * Includes jQuery Easing v1.3
 * http://gsgd.co.uk/sandbox/jquery/easing/
 * Copyright (c) 2008 George McGinley Smith
 * Released under the BSD License.
 */

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}('(B($){E p=($.1C.2x&&1D($.1C.2y,10)<7&&1D($.1C.2y,10)>4);r($.I===1R){$.1g({I:B(a,b){r(a){I=B(){O a.3C(b||8,4L)}};O I}})};r($.2Y===1R){$.1g({2Y:B(a){3D(E b 4M a){O P}O L}})};$.1g($.2z.4N,{4O:B(){r(8.u.2A){8.u.2A.4P(8.4Q,8.4R,8)}(2h.2z.2A[8.4S]||2h.2z.2A.4T)(8)}});$.1g($.2Z,{24:B(x,t,b,c,d,s){r(s==1R)s=1.4U;O c*((t=t/d-1)*t*((s+1)*t+s)+1)+b}});$.1g({2i:{3E:{D:\'31-S\',1h:4V,A:4W,C:4X,U:\'#4Y\',2B:P,1i:{\'1E\':0.6},2C:3F,2D:4Z,51:3G,52:3G,53:\'24\',54:\'24\',55:\'24\',56:\'24\',25:{\'3H\':10,\'2E\':26,\'1F\':\'24\',\'3I\':2},1G:{\'A\':57,\'C\':58},3J:\'1d\'},u:{},1S:{},X:{},1b:{},q:{S:[],F:{1j:[],1T:[],18:[],1U:[]},U:[],V:[]},1a:P,1u:P,1H:\'1b\',3K:{1v:{12:/[^\\.]\\.(1v)\\s*$/i},2G:{12:/2G\\.J\\/3L/i,N:\'=\',11:1,1e:1,Y:"13://1m.2G.J/v/%Q%&H;1n=1&H;3M=1&H;2j=0",Y:"13://1m.2G.J/2k/%Q%?1n=1&H;3M=1&H;2j=0"},32:{12:/32\\.J\\/3L/i,N:\'/\',11:4,Y:"13://1m.32.J/59/%Q%/.1v?5a=5b=5c"},33:{12:/33\\.J\\/1w/i,N:\'/\',11:4,Y:"13://1m.33.J/1v/1w/%Q%?5d=0&H;5e=1"},1I:{12:/1I\\.J\\/5f/i,N:\'=\',11:1,Y:"13://1w.1I.J/5g.1v?1n=1&H;5h=5i&H;5j=%Q%"},2l:{12:/2l\\.J/i,N:\'/\',11:3,1e:1,Y:"13://2l.J/2m.1v?34=%Q%&H;5k=2l.J&H;1n=1&H;3N=1&H;3O=1&H;3P=0&H;3Q=&H;2H=1",Y:"13://35.2l.J/1w/%Q%?1n=1&H;3N=1&H;3O=1&H;3P=0&H;3Q=&H;2H=1"},36:{12:/36.J/i,N:\'=\',11:1,Y:"13://1m.36.J/v/%Q%"},38:{12:/38.J/i,N:\'/\',11:5,Y:"13://1m.38.J/5l.5m?5n=%Q%"},5o:{12:/2n.J\\/1w\\//i,N:\'1w/\',11:1,Y:"13://1m.2n.J/2m/2m.5p.1v?2I=L&H;2H=1&H;5q=L&H;34=%Q%"},2n:{12:/2n.J\\/1w:/i,N:\'1w:\',11:1,Y:"13://1m.2n.J/2m/2m.1v?1n=L&H;2H=1&H;34=%Q%"},3a:{12:/3a.3R/i,N:\'/\',11:4,Y:"13://1m.3a.3R/1G/1w/%Q%?5r=%2F&H;1n=L&H;5s=%Q%&H;5t=L&H;5u=0.5v&H;5w=0.5x&H;5y=5z"},3b:{12:/3b.J/i,N:\'/\',11:3,Y:"13://1m.3b.J/35/%Q%"},3S:{12:/v.3S.J/i,N:\'/\',11:3,Y:"13://5A.5B.J/35.1v?5C=%Q%&H;v=1.5D"},3c:{12:/3c.J\\/5E/i,N:\'/\',11:4,Y:"13://5F.3c.J/%Q%.5G?1n=L&H;1J=1K"}},3T:{3d:{12:/3d.J\\/28/i,N:\'?\',11:1,Y:"13://1m.3d.J/28/2k/?5H=5I-5J-5K-5L-5M&H;w=%A%&H;h=%C%&H;%Q%"},5N:{12:/28.1I.J(.*)5O=c/i,N:\'?\',11:1,Y:"13://28.1I.J/?3U=5P&H;%Q%"},1I:{12:/28.1I.J/i,N:\'?\',11:1,Y:"13://28.1I.J/?3U=2k&H;%Q%"}},3e:/\\.(5Q|5R|5S|5T|5U|5V)(.*)?$/i,1i:{2J:B(b){8.u=b;8.W=$(\'<G Q="\'+2o 3f().3g()+\'" T="\'+8.u.D+\'-1i"></G>\');8.W.K($.1g({},{\'1r\':\'5W\',\'1d\':0,\'15\':0,\'1E\':0,\'1x\':\'1K\',\'z-11\':8.u.1h},8.u.1y));8.W.1o($.I(B(a){r(8.u.2K){r($.1L(8.u.1M)){8.u.1M()}M{8.1s()}}a.1V()},8));8.2p=L;8.3V();O 8},3V:B(){8.2L=$(2M.3h);8.2L.29(8.W);r(p){8.W.K({\'1r\':\'2q\'});E a=1D(8.W.K(\'1h\'));r(!a){a=1;E b=8.W.K(\'1r\');r(b==\'3W\'||!b){8.W.K({\'1r\':\'5X\'})}8.W.K({\'1h\':a})}a=(!!(8.u.1h||8.u.1h===0)&&a>8.u.1h)?8.u.1h:a-1;r(a<0){a=1}8.1k=$(\'<1e Q="3X\'+2o 3f().3g()+\'" 5Y="5Z" 3Y=0 1W=""></1e>\');8.1k.K({1h:a,1r:\'2q\',1d:0,15:0,1J:\'1K\',A:0,C:0,1E:0});8.1k.60(8.W);$(\'V, 3h\').K({\'C\':\'26%\',\'A\':\'26%\',\'2r-15\':0,\'2r-2a\':0})}},16:B(x,y){8.W.K({\'C\':0,\'A\':0});r(8.1k){8.1k.K({\'C\':0,\'A\':0})};E a={x:$(2M).A(),y:$(2M).C()};8.W.K({\'A\':\'26%\',\'C\':y?y:a.y});r(8.1k){8.1k.K({\'C\':0,\'A\':0});8.1k.K({\'1r\':\'2q\',\'15\':0,\'1d\':0,\'A\':8.W.A(),\'C\':y?y:a.y})}O 8},Z:B(a){r(!8.2p){O 8};r(8.1F){8.1F.1X()};r(8.1k){8.1k.K({\'1x\':\'3i\'})};8.W.K({\'1x\':\'3i\',\'1E\':0});8.2L.1f(\'16\',$.I(8.16,8));8.16();8.2p=P;8.1F=8.W.3Z(8.u.2C,8.u.1y.1E,$.I(B(){r(8.u.1y.1E){8.W.K(8.u.1y)};8.W.3j(\'Z\');r($.1L(a)){a()}},8));O 8},1s:B(a){r(8.2p){O 8};r(8.1F){8.1F.1X()};r(8.1k){8.1k.K({\'1x\':\'1K\'})};8.2L.2b(\'16\');8.2p=L;8.1F=8.W.3Z(8.u.2D,0,$.I(B(){8.W.3j(\'1s\');r($.1L(a)){a()};8.W.K({\'C\':0,\'A\':0,\'1x\':\'1K\'})},8));O 8}},2J:B(a){8.u=$.1g(L,8.3E,a);8.1i.2J({D:8.u.D,1y:8.u.1i,2K:!8.u.2B,1h:8.u.1h-1,1M:$.I(8.1j,8),2C:8.u.2C,2D:8.u.2D});8.q.S=$(\'<G T="\'+8.u.D+\' \'+8.u.D+\'-1H-1b"><G T="\'+8.u.D+\'-1J-1d-15"></G><G T="\'+8.u.D+\'-1J-1d-41"></G><G T="\'+8.u.D+\'-1J-1d-2a"></G><a T="\'+8.u.D+\'-19-1j" 1z="#1j"><1l>61</1l></a><G T="\'+8.u.D+\'-1Y"><a T="\'+8.u.D+\'-19-15" 1z="#"><1l>42</1l></a><a T="\'+8.u.D+\'-19-2a" 1z="#"><1l>43</1l></a></G><G T="\'+8.u.D+\'-F"><G T="\'+8.u.D+\'-F-62"></G><a T="\'+8.u.D+\'-19-15" 1z="#"><1l>42</1l></a><a T="\'+8.u.D+\'-19-18" 1z="#"><1l>63</1l></a><G T="\'+8.u.D+\'-F-1N"></G><a T="\'+8.u.D+\'-19-2a" 1z="#"><1l>43</1l></a><G T="\'+8.u.D+\'-F-64"></G></G><G T="\'+8.u.D+\'-U"></G><G T="\'+8.u.D+\'-V"></G><G T="\'+8.u.D+\'-1J-2N-15"></G><G T="\'+8.u.D+\'-1J-2N-41"></G><G T="\'+8.u.D+\'-1J-2N-2a"></G></G>\');8.q.1Y=$(\'.\'+8.u.D+\'-1Y\',8.q.S);8.q.F.G=$(\'.\'+8.u.D+\'-F\',8.q.S);8.q.F.1j=$(\'.\'+8.u.D+\'-19-1j\',8.q.S);8.q.F.1T=$(\'.\'+8.u.D+\'-19-15\',8.q.S);8.q.F.18=$(\'.\'+8.u.D+\'-19-18\',8.q.S);8.q.F.1U=$(\'.\'+8.u.D+\'-19-2a\',8.q.S);8.q.F.1N=$(\'.\'+8.u.D+\'-F-1N\',8.q.S);8.q.U=$(\'.\'+8.u.D+\'-U\',8.q.S);8.q.V=$(\'.\'+8.u.D+\'-V\',8.q.S);8.q.R=$(\'<G T="\'+8.u.D+\'-R"></G>\').29(8.q.S);8.q.R.K({\'1r\':\'2q\',\'z-11\':8.u.1h,\'1d\':-44,\'15\':-44});$(\'3h\').29(8.q.R);8.45();O 8.q.S},45:B(){8.q.F.1j.1f(\'1o\',$.I(B(a){8.1j();a.1V()},8));$(1c).1f(\'16\',$.I(B(){r(8.1a){8.1i.16();r(!8.1u){8.1Z()}}},8));$(1c).1f(\'65\',$.I(B(){r(8.1a&&!8.1u){8.1Z()}},8));$(2M).1f(\'66\',$.I(B(a){r(8.1a){r(a.3k==27&&8.1i.u.2K){8.1j()}r(8.X.2s>1){r(a.3k==37){8.q.F.1T.2O(\'1o\',a)}r(a.3k==39){8.q.F.1U.2O(\'1o\',a)}}}},8));8.q.F.18.1f(\'1o\',$.I(B(a){8.46();a.1V()},8));8.1i.W.1f(\'Z\',$.I(B(){$(8).2O(\'Z\')},8));8.1i.W.1f(\'1s\',$.I(B(){$(8).2O(\'1j\')},8))},47:B(b){r($.2P(b)&&b.2c>1&&b[0].1O(8.3e)){8.X.3l=b;8.X.1p=0;8.X.2s=b.2c;b=b[0];8.q.F.1T.2b(\'1o\');8.q.F.1U.2b(\'1o\');8.q.F.1T.1f(\'1o\',$.I(B(a){r(8.X.1p-1<0){8.X.1p=8.X.2s-1}M{8.X.1p=8.X.1p-1}8.Z(8.X.3l[8.X.1p]);a.1V()},8));8.q.F.1U.1f(\'1o\',$.I(B(a){r(8.X.1p+1>=8.X.2s){8.X.1p=0}M{8.X.1p=8.X.1p+1}8.Z(8.X.3l[8.X.1p]);a.1V()},8))}r(8.X.2s>1){r(8.q.1Y.K("1x")=="1K"){8.q.F.G.Z()}8.q.F.1T.Z();8.q.F.1U.Z()}M{8.q.F.1T.1s();8.q.F.1U.1s()}},48:B(b,c){$.1P(b,$.I(B(i,a){8.q.F.1N.29($(\'<a 1z="#" T="\'+a[\'T\']+\'">\'+a.V+\'</a>\').1f(\'1o\',$.I(B(e){r($.1L(a.1M)){a.1M(8.1b.1W,8,c)}e.1V()},8)))},8));8.q.F.G.Z()},Z:B(b,c,d,f){E g=\'\';E h=P;r(($.2P(b)&&b.2c<=1)||b==\'\'){O P};8.21();h=8.1a;8.49();r(!h){8.1Z()};8.47(b,c);r($.2P(b)&&b.2c>1){b=b[0]}E j=b.N("%4a%");E b=j[0];E k=j[1]||\'\';c=$.1g(L,{\'A\':0,\'C\':0,\'2B\':0,\'3m\':\'\',\'22\':k,\'3n\':L,\'R\':-1,\'1e\':P,\'2Q\':\'\',\'2R\':L,\'2S\':B(){},\'2T\':B(){}},c||{});8.u.2S=c.2S;8.u.2T=c.2T;8.u.2R=c.2R;3o=8.4b(b);r(!$.2Y(3o)){c=$.1g({},c,3o)}E l={x:$(1c).A(),y:$(1c).C()};r(c.A&&(c.A+\'\').23("p")>0){c.A=(l.x-20)*c.A.4c(0,c.A.23("p"))/26}r(c.C&&(c.C+\'\').23("p")>0){c.C=(l.y-20)*c.C.4c(0,c.C.23("p"))/26}8.q.U.2b(\'1A\');8.1i.u.2K=!c.2B;8.q.F.18.2d(8.u.D+\'-19-3p\');8.q.F.18.2t(8.u.D+\'-19-18\');8.1u=!(c.R>0||(c.R==-1&&c.3n));r($.2P(c.F)){8.48(c.F,f)}r(!8.q.F.1N.4d(":1q")){8.q.F.G.Z()}r(c.3m!=\'\'){g=c.3m}M r(c.1e){g=\'1e\'}M r(b.1O(8.3e)){g=\'1b\'}M{$.1P(8.3K,$.I(B(i,e){r(b.N(\'?\')[0].1O(e.12)){r(e.N){4e=b.N(e.N)[e.11].N(\'?\')[0].N(\'&\')[0];b=e.Y.2e("%Q%",4e)}g=e.1e?\'1e\':\'1G\';c.A=c.A?c.A:8.u.1G.A;c.C=c.C?c.C:8.u.1G.C;O P}},8));$.1P(8.3T,B(i,e){r(b.1O(e.12)){g=\'1e\';r(e.N){Q=b.N(e.N)[e.11];b=e.Y.2e("%Q%",Q).2e("%A%",c.A).2e("%C%",c.C)}}});r(g==\'\'){r(b.1O(/#/)){3q=b.67(b.23("#"));r($(3q).2c>0){g=\'3r\';b=3q}M{g=\'1Q\'}}M{g=\'1Q\'}}}r(g==\'1b\'){8.q.F.18.1s();E m=2o 68();m.4f=$.I(B(){m.4f=B(){};r(!8.1a){O P};8.1b={A:m.A,C:m.C,1W:m.1W};r(c.A){A=1D(c.A);C=1D(c.C)}M{r(c.3n){E a=8.3s(m.A,m.C);A=a.A;C=a.C;r(m.A!=A||m.C!=C){8.q.F.G.Z();8.q.F.18.Z()}}M{A=m.A;C=m.C}}8.16(A,C);8.q.U.1f(\'1A\',$.I(B(){r(!8.1a){O P};8.2U(\'1b\');8.q.U.1q();8.q.V.1q();r(c.22!=\'\'){8.q.U.29($(\'<G T="\'+8.u.D+\'-22"></G>\').V(c.22))}$(m).1s();8.q.U.29(m);$(m).1X().69(3F,$.I(B(){8.q.U.2d(8.u.D+\'-21\')},8))},8))},8);m.6a=$.I(B(){8.2f("3t 4g 1b 4h 4i 3u. 4j 4k 4l 4m.")},8);m.1W=b}M r(g==\'1G\'||g==\'3r\'||g==\'1Q\'){r(g==\'3r\'){8.2u($(b).6b(L).Z(),c.A>0?c.A:$(b).4n(L),c.C>0?c.C:$(b).4o(L),\'V\')}M r(g==\'1Q\'){r(c.A){A=c.A;C=c.C}M{8.2f("4p 4q 4r 4s 2V 4t 4u 2V S.");O P}r(8.1S.1Q){8.1S.1Q.6c()};8.1S.1Q=$.1Q({Y:b,4v:"6d",6e:P,6f:"V",2f:$.I(B(){8.2f("3t 4g 6g 4h 4i 3u. 4j 4k 4l 4m.")},8),6h:$.I(B(a){8.2u($(a),A,C,\'V\')},8)})}M r(g==\'1G\'){E n=8.4w(b,c.A,c.C,c.2Q);8.2u($(n),c.A,c.C,\'V\')}}M r(g==\'1e\'){r(c.A){A=c.A;C=c.C}M{8.2f("4p 4q 4r 4s 2V 4t 4u 2V S.");O P}8.2u($(\'<1e Q="3X\'+(2o 3f().3g())+\'" 3Y="0" 1W="\'+b+\'" 1y="2r:0; 3v:0;"></1e>\').K(c),c.A,c.C,\'V\')}8.1M=$.1L(d)?d:B(e){}},4w:B(a,b,c,d){r(2W d==\'1R\'||d==\'\')d=\'2I=1&1n=1&6i=1\';E e=\'<4x A="\'+b+\'" C="\'+c+\'" 6j="6k:6l-6m-6n-6o-6p"><17 D="6q" 1B="\'+a+\'" 1y="2r:0; 3v:0;"></17>\';e+=\'<17 D="6r" 1B="L"></17><17 D="4y" 1B="4z"></17><17 D="4A" 1B="4B"></17>\';e+=\'<17 D="2I" 1B="L"></17><17 D="1n" 1B="L"></17><17 D="2Q" 1B="\'+d+\'"></17>\';e+=\'<17 D="A" 1B="\'+b+\'"></17><17 D="C" 1B="\'+c+\'"></17>\';e+=\'<2k 1W="\'+a+\'" 4v="6s/x-6t-1G" 4y="4z" 6u="L" 2I="L" 1n="L" 2Q="\'+d+\'" 4A="4B" A="\'+b+\'" C="\'+c+\'" 1y="2r:0; 3v:0;"></2k></4x>\';O e},2u:B(a,b,c,d){r(2W d!==\'1R\'){8.2U(d)}8.16(b+30,c+20);8.q.U.1f(\'1A\',$.I(B(){8.q.U.2d(8.u.D+\'-21\');8.q.V.V(a);8.q.V.V(a);8.q.U.2b(\'1A\');r(8.u.2R&&2W 4C!==\'1R\'){4C.6v()}8.u.2S()},8))},1Z:B(w,h){E a={x:$(1c).A(),y:$(1c).C()};E b={x:$(1c).4D(),y:$(1c).4E()};E c=h!=2X?h:8.q.S.4o();E d=w!=2X?w:8.q.S.4n();E y=0;E x=0;x=b.x+((a.x-d)/2);r(8.1a){y=b.y+(a.y-c)/2}M r(8.u.3J=="2N"){y=(b.y+a.y+14)}M{y=(b.y-c)-14}r(8.1a){r(!8.1S.R){8.1t(8.q.R,{\'15\':x},\'R\')}8.1t(8.q.R,{\'1d\':y},\'R\')}M{8.q.R.K({\'15\':x,\'1d\':y})}},1t:B(d,f,g,h,i){r(3w($.3x.31)<1.6){E j=$.6w({2v:i||P,2E:8.u[g+\'4F\'],2Z:8.u[g+\'4G\'],1A:($.1L(h)?$.I(h,8):2X)});O d[j.2v===P?"1P":"2v"](B(){E c=$.1g({},j),4H=8;c.6x=$.1g({},f);$.1P(f,B(a,b){E e=2o $.2z(4H,c,a);e.1N(e.6y(L)||0,b,"6z")});O L})}M{d.2g(f,{2v:i||P,2E:8.u[g+\'4F\'],2Z:8.u[g+\'4G\'],1A:($.1L(h)?$.I(h,8):2X)})}},16:B(x,y){r(8.1a){E a={x:$(1c).A(),y:$(1c).C()};E b={x:$(1c).4D(),y:$(1c).4E()};E c=(b.x+(a.x-(x+14))/2);E d=(b.y+(a.y-(y+14))/2);r($.1C.2x||($.1C.6A&&(3w($.1C.2y)<1.9))){y+=4}8.1S.R=L;8.1t(8.q.R.1X(),{\'15\':(8.1u&&c<0)?0:c,\'1d\':(8.1u&&(y+14)>a.y)?b.y:d},\'R\',$.I(B(){8.R=P},8.1S));8.1t(8.q.V,{\'C\':y-20},\'16\');8.1t(8.q.S.1X(),{\'A\':(x+14),\'C\':y-20},\'16\',{},L);8.1t(8.q.F.G,{\'A\':x,\'C\':y},\'16\');8.1t(8.q.1Y,{\'A\':x},\'16\');8.1t(8.q.1Y,{\'1d\':(y-4I)/2},\'R\');8.1t(8.q.U.1X(),{\'A\':x,\'C\':y},\'16\',B(){$(8.q.U).3j(\'1A\')})}M{8.q.V.K({\'C\':y-20});8.q.S.K({\'A\':x+14,\'C\':y-20});8.q.U.K({\'A\':x,\'C\':y});8.q.F.G.K({\'A\':x,\'C\':y});8.q.1Y.K({\'A\':x,\'C\':4I})}},1j:B(a){8.1a=P;8.X={};8.u.2T();r($.1C.2x){8.q.U.1q();8.q.V.1q();8.q.F.1N.1q();8.q.R.K({\'1x\':\'1K\'});8.1Z()}M{8.q.R.2g({\'1E\':0,\'1d\':\'-=40\'},{2v:P,1A:($.I(B(){8.q.U.1q();8.q.V.1q();8.q.F.1N.1q();8.1Z();8.q.R.K({\'1x\':\'1K\',\'1E\':1,\'3y\':\'1a\'})},8))})}8.1i.1s($.I(B(){r($.1L(8.1M)){8.1M.3C(8,$.6B(a))}},8));8.q.U.1X(L,P);8.q.U.2b(\'1A\')},49:B(){8.1a=L;r($.1C.2x){8.q.R.6C(0).1y.6D(\'6E\');8.q.F.G.K({\'1r\':\'3W\'}).K({\'1r\':\'2q\'})}8.q.R.K({\'1x\':\'3i\',\'3y\':\'1a\'}).Z();8.1i.Z()},25:B(){E x=8.u.25.3H;E d=8.u.25.2E;E t=8.u.25.1F;E o=8.u.25.3I;E l=8.q.R.1r().15;E e=8.q.R;3D(i=0;i<o;i++){e.2g({15:l+x},d,t);e.2g({15:l-x},d,t)};e.2g({15:l+x},d,t);e.2g({15:l},d,t)},2U:B(a){r(a!=8.1H){8.q.S.2d(8.u.D+\'-1H-\'+8.1H);8.1H=a;8.q.S.2t(8.u.D+\'-1H-\'+8.1H)}8.q.R.K({\'3y\':\'1a\'})},2f:B(a){6F(a);8.1j()},4b:B(d){E e=/S\\[(.*)?\\]$/i;E f={};r(d.1O(/#/)){d=d.4J(0,d.23("#"))}d=d.4J(d.23(\'?\')+1).N("&");$.1P(d,B(){E a=8.N("=");E b=a[0];E c=a[1];r(b.1O(e)){r(6G(c)){c=1D(c)}M r(c.4K()=="L"){c=L}M r(c.4K()=="P"){c=P}f[b.1O(e)[1]]=c}});O f},3s:B(x,y){E a=$(1c).A()-50;E b=$(1c).C()-50;r(x>a){y=y*(a/x);x=a;r(y>b){x=x*(b/y);y=b}}M r(y>b){x=x*(b/y);y=b;r(x>a){y=y*(a/x);x=a}}O{A:1D(x),C:1D(y)}},21:B(){8.2U(\'1b\');8.q.U.1q();8.q.V.1q();8.q.U.2t(8.u.D+\'-21\');8.q.F.G.1s();8.1Z(8.u.A,8.u.C);8.16(8.u.A,8.u.C)},46:B(){r(8.1u){8.1u=P;8.q.F.18.2d(8.u.D+\'-19-3p\');8.q.F.18.2t(8.u.D+\'-19-18\');E a=8.3s(8.1b.A,8.1b.C);8.21();8.q.F.G.Z();8.16(a.A,a.C)}M{8.1u=L;8.q.F.18.2d(8.u.D+\'-19-18\');8.q.F.18.2t(8.u.D+\'-19-3p\');8.21();8.q.F.G.Z();8.16(8.1b.A,8.1b.C)}}},S:B(a,b,c){r(2W a!==\'1R\'){O $.2i.Z(a,b,c)}M{O $.2i}}});$.3x.S=B(k,l){O $(8).6H(\'1o\',B(e){e.1V();$(8).6I();E b=[];E c=$.3z($(8).2w(\'2j\'))||\'\';E d=$.3z($(8).2w(\'22\'))||\'\';c=c.2e(\'[\',\'\\\\\\\\[\');c=c.2e(\']\',\'\\\\\\\\]\');r(!c||c==\'\'||c===\'6J\'){b=$(8).2w(\'1z\');3A=(d||d!=\'\')?$.1g({},k,{\'22\':d}):k}M{E f=[];E g=[];E h=[];E j=P;$("a[2j="+c+"], 6K[2j="+c+"]").1P($.I(B(i,a){r(8==a){g.6L(a);j=L}M r(j==P){h.3B(a)}M{g.3B(a)}},8));f=g.6M(h);$.1P(f,B(){E a=$.3z($(8).2w(\'22\'))||\'\';a=a?"%4a%"+a:\'\';b.3B($(8).2w(\'1z\')+a)});r(b.2c==1){b=b[0]}3A=k}$.2i.Z(b,3A,l,8)})};$(B(){r(3w($.3x.31)>1.2){$.2i.2J()}M{6N"3t 2h 2y 6O 6P 3u 4d 6Q 6R. 6S 6T 6U 2h 1.3+";}})})(2h);',62,429,'||||||||this||||||||||||||||||esqueleto|if|||options||||||width|function|height|name|var|buttons|div|amp|proxy|com|css|true|else|split|return|false|id|move|lightbox|class|background|html|element|gallery|url|show||index|reg|http||left|resize|param|max|button|visible|image|window|top|iframe|bind|extend|zIndex|overlay|close|shim|span|www|autoplay|click|current|empty|position|hide|morph|maximized|swf|video|display|style|href|complete|value|browser|parseInt|opacity|transition|flash|mode|google|border|none|isFunction|callback|custom|match|each|ajax|undefined|animations|prev|next|preventDefault|src|stop|navigator|movebox||loading|title|indexOf|easeOutBack|shake|100||maps|append|right|unbind|length|removeClass|replace|error|animate|jQuery|LightBoxObject|rel|embed|vimeo|moogaloop|collegehumor|new|hidden|absolute|margin|total|addClass|appendhtml|queue|attr|msie|version|fx|step|modal|showDuration|closeDuration|duration||youtube|fullscreen|autostart|create|hideOnClick|target|document|bottom|triggerHandler|isArray|flashvars|cufon|onOpen|onClose|changemode|the|typeof|null|isEmptyObject|easing||jquery|metacafe|dailymotion|clip_id|player|megavideo||gametrailers||ustream|twitvid|vzaar|bing|imgsreg|Date|getTime|body|block|trigger|keyCode|images|force|autoresize|urloptions|min|obj|inline|calculate|The|loaded|padding|parseFloat|fn|overflow|trim|copy_options|push|apply|for|defaults|400|1000|distance|loops|emergefrom|videoregs|watch|fs|show_title|show_byline|show_portrait|color|tv|wordpress|mapsreg|output|inject|static|IF_|frameborder|fadeTo||middle|Previous|Next|999|addevents|maximinimize|create_gallery|custombuttons|open|LIGHTBOX|unserialize|substring|is|videoid|onload|requested|cannot|be|Please|try|again|later|outerWidth|outerHeight|You|need|to|specify|size|of|type|swf2html|object|allowscriptaccess|always|wmode|transparent|Cufon|scrollLeft|scrollTop|Duration|Transition|self|90|slice|toLowerCase|arguments|in|prototype|update|call|elem|now|prop|_default|70158|7000|470|280|FFFFFF|200||moveDuration|resizeDuration|showTransition|closeTransition|moveTransition|resizeTransition|640|360|fplayer|playerVars|autoPlay|yes|additionalInfos|autoStart|videoplay|googleplayer|hl|en|docId|server|remote_wrap|php|mid|collegehumornew|jukebox|use_node_id|loc|vid|disabledComment|beginPercent|5331|endPercent|6292|locale|en_US|s0|videopress|guid|01|videos|view|flashplayer|emid|3ede2bc8|227d|8fec|d84a|00b6ff19b1cb|streetview|layer|svembed|jpg|jpeg|gif|png|bmp|tiff|fixed|relative|scrolling|no|insertAfter|Close|init|Maximize|end|scroll|keydown|substr|Image|fadeIn|onerror|clone|abort|GET|cache|dataType|content|success|fullscreenbutton|classid|clsid|D27CDB6E|AE6D|11cf|96B8|444553540000|movie|allowFullScreen|application|shockwave|allowfullscreen|refresh|speed|curAnim|cur|px|mozilla|makeArray|get|removeAttribute|filter|alert|isFinite|live|blur|nofollow|area|unshift|concat|throw|that|was|too|old|Lightbox|Evolution|requires'.split('|'),0,{}));

/**
 * Copyright (c) 2010 Anders Ekdahl (http://coffeescripter.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.
 *
 * Version: 1.2.4
 *
 * Demo and documentation: http://coffeescripter.com/code/ad-gallery/
 */
(function($) {
  $.fn.adGallery = function(options) {
    var defaults = { loader_image: '/l/i/loader.gif',
                     start_at_index: 0,
                     description_wrapper: false,
                     thumb_opacity: 0.7,
                     animate_first_image: false,
                     animation_speed: 400,
                     width: false,
                     height: false,
                     display_next_and_prev: true,
                     display_back_and_forward: true,
                     scroll_jump: 0, // If 0, it jumps the width of the container
                     slideshow: {
                       enable: true,
                       autostart: false,
                       speed: 5000,
                       start_label: 'Iniciar',
                       stop_label: 'Detener',
                       stop_on_scroll: true,
                       countdown_prefix: '(',
                       countdown_sufix: ')',
                       onStart: false,
                       onStop: false
                     },
                     effect: 'slide-hori', // or 'slide-vert', 'fade', or 'resize', 'none'
                     enable_keyboard_move: true,
                     cycle: true,
                     callbacks: {
                       init: false,
                       afterImageVisible: false,
                       beforeImageVisible: false
                     }
    };
    var settings = $.extend(false, defaults, options);
    if(options && options.slideshow) {
      settings.slideshow = $.extend(false, defaults.slideshow, options.slideshow);
    };
    if(!settings.slideshow.enable) {
      settings.slideshow.autostart = false;
    };
    var galleries = [];
    $(this).each(function() {
      var gallery = new AdGallery(this, settings);
      galleries[galleries.length] = gallery;
    });
    // Sorry, breaking the jQuery chain because the gallery instances
    // are returned so you can fiddle with them
    return galleries;
  };

  function VerticalSlideAnimation(img_container, direction, desc) {
    var current_top = parseInt(img_container.css('top'), 10);
    if(direction == 'left') {
      var old_image_top = '-'+ this.image_wrapper_height +'px';
      img_container.css('top', this.image_wrapper_height +'px');
    } else {
      var old_image_top = this.image_wrapper_height +'px';
      img_container.css('top', '-'+ this.image_wrapper_height +'px');
    };
    if(desc) {
      desc.css('bottom', '-'+ desc[0].offsetHeight +'px');
      desc.animate({bottom: 0}, this.settings.animation_speed * 2);
    };
    if(this.current_description) {
      this.current_description.animate({bottom: '-'+ this.current_description[0].offsetHeight +'px'}, this.settings.animation_speed * 2);
    };
    return {old_image: {top: old_image_top},
            new_image: {top: current_top}};
  };

  function HorizontalSlideAnimation(img_container, direction, desc) {
    var current_left = parseInt(img_container.css('left'), 10);
    if(direction == 'left') {
      var old_image_left = '-'+ this.image_wrapper_width +'px';
      img_container.css('left',this.image_wrapper_width +'px');
    } else {
      var old_image_left = this.image_wrapper_width +'px';
      img_container.css('left','-'+ this.image_wrapper_width +'px');
    };
    if(desc) {
      desc.css('bottom', '-'+ desc[0].offsetHeight +'px');
      desc.animate({bottom: 0}, this.settings.animation_speed * 2);
    };
    if(this.current_description) {
      this.current_description.animate({bottom: '-'+ this.current_description[0].offsetHeight +'px'}, this.settings.animation_speed * 2);
    };
    return {old_image: {left: old_image_left},
            new_image: {left: current_left}};
  };

  function ResizeAnimation(img_container, direction, desc) {
    var image_width = img_container.width();
    var image_height = img_container.height();
    var current_left = parseInt(img_container.css('left'), 10);
    var current_top = parseInt(img_container.css('top'), 10);
    img_container.css({width: 0, height: 0, top: this.image_wrapper_height / 2, left: this.image_wrapper_width / 2});
    return {old_image: {width: 0,
                        height: 0,
                        top: this.image_wrapper_height / 2,
                        left: this.image_wrapper_width / 2},
            new_image: {width: image_width,
                        height: image_height,
                        top: current_top,
                        left: current_left}};
  };

  function FadeAnimation(img_container, direction, desc) {
    img_container.css('opacity', 0);
    return {old_image: {opacity: 0},
            new_image: {opacity: 1}};
  };

  // Sort of a hack, will clean this up... eventually
  function NoneAnimation(img_container, direction, desc) {
    img_container.css('opacity', 0);
    return {old_image: {opacity: 0},
            new_image: {opacity: 1},
            speed: 0};
  };

  function AdGallery(wrapper, settings) {
    this.init(wrapper, settings);
  };
  AdGallery.prototype = {
    // Elements
    wrapper: false,
    image_wrapper: false,
    gallery_info: false,
    nav: false,
    loader: false,
    preloads: false,
    thumbs_wrapper: false,
    scroll_back: false,
    scroll_forward: false,
    next_link: false,
    prev_link: false,

    slideshow: false,
    image_wrapper_width: 0,
    image_wrapper_height: 0,
    current_index: 0,
    current_image: false,
    current_description: false,
    nav_display_width: 0,
    settings: false,
    images: false,
    in_transition: false,
    animations: false,
    init: function(wrapper, settings) {
      var context = this;
      this.wrapper = $(wrapper);
      this.settings = settings;
      this.setupElements();
      this.setupAnimations();
      if(this.settings.width) {
        this.image_wrapper_width = this.settings.width;
        this.image_wrapper.width(this.settings.width);
        this.wrapper.width(this.settings.width);
      } else {
        this.image_wrapper_width = this.image_wrapper.width();
      };
      if(this.settings.height) {
        this.image_wrapper_height = this.settings.height;
        this.image_wrapper.height(this.settings.height);
      } else {
        this.image_wrapper_height = this.image_wrapper.height();
      };
      this.nav_display_width = this.nav.width();
      this.current_index = 0;
      this.current_image = false;
      this.current_description = false;
      this.in_transition = false;
      this.findImages();
      if(this.settings.display_next_and_prev) {
        this.initNextAndPrev();
      };
      // The slideshow needs a callback to trigger the next image to be shown
      // but we don't want to give it access to the whole gallery instance
      var nextimage_callback = function(callback) {
        return context.nextImage(callback);
      };
      this.slideshow = new AdGallerySlideshow(nextimage_callback, this.settings.slideshow);
      this.controls.append(this.slideshow.create());
      if(this.settings.slideshow.enable) {
        this.slideshow.enable();
      } else {
        this.slideshow.disable();
      };
      if(this.settings.display_back_and_forward) {
        this.initBackAndForward();
      };
      if(this.settings.enable_keyboard_move) {
        this.initKeyEvents();
      };
      var start_at = parseInt(this.settings.start_at_index, 10);
      if(window.location.hash && window.location.hash.indexOf('#ad-image') === 0) {
        start_at = window.location.hash.replace(/[^0-9]+/g, '');
        // Check if it's a number
        if((start_at * 1) != start_at) {
          start_at = this.settings.start_at_index;
        };
      };

      this.loading(true);
      this.showImage(start_at,
        function() {
          // We don't want to start the slideshow before the image has been
          // displayed
          if(context.settings.slideshow.autostart) {
            context.preloadImage(start_at + 1);
            context.slideshow.start();
          };
        }
      );
      this.fireCallback(this.settings.callbacks.init);
    },
    setupAnimations: function() {
      this.animations = {
        'slide-vert': VerticalSlideAnimation,
        'slide-hori': HorizontalSlideAnimation,
        'resize': ResizeAnimation,
        'fade': FadeAnimation,
        'none': NoneAnimation
      };
    },
    setupElements: function() {
      this.controls = this.wrapper.find('.arribagal');
      this.gallery_info = $('<p class="ad-info"></p>');
      this.controls.append(this.gallery_info);
      this.image_wrapper = this.wrapper.find('.ad-image-wrapper');
      this.image_wrapper.empty();
      this.nav = this.wrapper.find('.ad-nav');
      this.thumbs_wrapper = this.nav.find('.ad-thumbs');
      this.preloads = $('<div class="ad-preloads"></div>');
      this.loader = $('<img class="ad-loader" src="'+ this.settings.loader_image +'">');
      this.image_wrapper.append(this.loader);
      this.loader.hide();
      $(document.body).append(this.preloads);
    },
    loading: function(bool) {
      if(bool) {
        this.loader.show();
      } else {
        this.loader.hide();
      };
    },
    addAnimation: function(name, fn) {
      if($.isFunction(fn)) {
        this.animations[name] = fn;
      };
    },
    findImages: function() {
      var context = this;
      this.images = [];
      var thumb_wrapper_width = 0;
      var thumbs_loaded = 0;
      var thumbs = this.thumbs_wrapper.find('a');
      var thumb_count = thumbs.length;
      if(this.settings.thumb_opacity < 1) {
        thumbs.find('img').css('opacity', this.settings.thumb_opacity);
      };
      thumbs.each(
        function(i) {
          var link = $(this);
          var image_src = link.attr('href');
          var thumb = link.find('img');
          // Check if the thumb has already loaded
          if(!context.isImageLoaded(thumb[0])) {
            thumb.load(
              function() {
                thumb_wrapper_width += this.parentNode.parentNode.offsetWidth;
                thumbs_loaded++;
              }
            );
          } else{
            thumb_wrapper_width += thumb[0].parentNode.parentNode.offsetWidth;
            thumbs_loaded++;
          };
          link.addClass('ad-thumb'+ i);
          link.click(
            function() {
              context.showImage(i);
              context.slideshow.stop();
              return false;
            }
          ).hover(
            function() {
              if(!$(this).is('.ad-active') && context.settings.thumb_opacity < 1) {
                $(this).find('img').fadeTo(300, 1);
              };
              context.preloadImage(i);
            },
            function() {
              if(!$(this).is('.ad-active') && context.settings.thumb_opacity < 1) {
                $(this).find('img').fadeTo(300, context.settings.thumb_opacity);
              };
            }
          );
          var link = false;
          if(thumb.data('ad-link')) {
            link = thumb.data('ad-link');
          } else if(thumb.attr('longdesc') && thumb.attr('longdesc').length) {
            link = thumb.attr('longdesc');
          };
          var desc = false;
          if(thumb.data('ad-desc')) {
            desc = thumb.data('ad-desc');
          } else if(thumb.attr('alt') && thumb.attr('alt').length) {
            desc = thumb.attr('alt');
          };
          var title = false;
          if(thumb.data('ad-title')) {
            title = thumb.data('ad-title');
          } else if(thumb.attr('title') && thumb.attr('title').length) {
            title = thumb.attr('title');
          };
          context.images[i] = { thumb: thumb.attr('src'), image: image_src, error: false,
                                preloaded: false, desc: desc, title: title, size: false,
                                link: link };
        }
      );
      // Wait until all thumbs are loaded, and then set the width of the ul
      var inter = setInterval(
        function() {
          if(thumb_count == thumbs_loaded) {
            thumb_wrapper_width -= 100;
            var list = context.nav.find('.ad-thumb-list');
            list.css('width', thumb_wrapper_width +'px');
            var i = 1;
            var last_height = list.height();
            while(i < 201) {
              list.css('width', (thumb_wrapper_width + i) +'px');
              if(last_height != list.height()) {
                break;
              }
              last_height = list.height();
              i++;
            }
            clearInterval(inter);
          };
        },
        100
      );
    },
    initKeyEvents: function() {
      var context = this;
      $(document).keydown(
        function(e) {
          if(e.keyCode == 39) {
            // right arrow
            context.nextImage();
            context.slideshow.stop();
          } else if(e.keyCode == 37) {
            // left arrow
            context.prevImage();
            context.slideshow.stop();
          };
        }
      );
    },
    initNextAndPrev: function() {
      this.next_link = $('.ad-next-image');
      this.prev_link = $('.ad-prev-image');
      //this.image_wrapper.append(this.next_link);
      //this.image_wrapper.append(this.prev_link);
      var context = this;
      this.prev_link.add(this.next_link).click(
        function() {
          if($(this).is('.ad-next-image')) {
            context.nextImage();
            context.slideshow.stop();
          } else {
            context.prevImage();
            context.slideshow.stop();
          };
        }
      ).find('div').css('opacity', 0.7);
    },
    initBackAndForward: function() {
      var context = this;
      this.scroll_forward = $('<div class="ad-forward"></div>');
      this.scroll_back = $('<div class="ad-back"></div>');
      this.nav.append(this.scroll_forward);
      this.nav.prepend(this.scroll_back);
      var has_scrolled = 0;
      var thumbs_scroll_interval = false;
      $(this.scroll_back).add(this.scroll_forward).click(
        function() {
          // We don't want to jump the whole width, since an image
          // might be cut at the edge
          var width = context.nav_display_width - 50;
          if(context.settings.scroll_jump > 0) {
            var width = context.settings.scroll_jump;
          };
          if($(this).is('.ad-forward')) {
            var left = context.thumbs_wrapper.scrollLeft() + width;
          } else {
            var left = context.thumbs_wrapper.scrollLeft() - width;
          };
          if(context.settings.slideshow.stop_on_scroll) {
            context.slideshow.stop();
          };
          context.thumbs_wrapper.animate({scrollLeft: left +'px'});
          return false;
        }
      ).css('opacity', 0.6).hover(
        function() {
          var direction = 'left';
          if($(this).is('.ad-forward')) {
            direction = 'right';
          };
          thumbs_scroll_interval = setInterval(
            function() {
              has_scrolled++;
              // Don't want to stop the slideshow just because we scrolled a pixel or two
              if(has_scrolled > 30 && context.settings.slideshow.stop_on_scroll) {
                context.slideshow.stop();
              };
              var left = context.thumbs_wrapper.scrollLeft() + 1;
              if(direction == 'left') {
                left = context.thumbs_wrapper.scrollLeft() - 1;
              };
              context.thumbs_wrapper.scrollLeft(left);
            },
            10
          );
          $(this).css('opacity', 1);
        },
        function() {
          has_scrolled = 0;
          clearInterval(thumbs_scroll_interval);
          $(this).css('opacity', 0.6);
        }
      );
    },
    _afterShow: function() {
      this.gallery_info.html((this.current_index + 1) +'/'+ this.images.length);
      if(!this.settings.cycle) {
        // Needed for IE
        //this.prev_link.show().css('height', this.image_wrapper_height);
        //this.next_link.show().css('height', this.image_wrapper_height);
        if(this.current_index == (this.images.length - 1)) {
          this.next_link.hide();
        };
        if(this.current_index == 0) {
          this.prev_link.hide();
        };
      };
      this.fireCallback(this.settings.callbacks.afterImageVisible);
    },
    /**
     * Checks if the image is small enough to fit inside the container
     * If it's not, shrink it proportionally
     */
    _getContainedImageSize: function(image_width, image_height) {
      if(image_height > this.image_wrapper_height) {
        var ratio = image_width / image_height;
        image_height = this.image_wrapper_height;
        image_width = this.image_wrapper_height * ratio;
      };
      if(image_width > this.image_wrapper_width) {
  	    var ratio = image_height / image_width;
  	    image_width = this.image_wrapper_width;
  	    image_height = this.image_wrapper_width * ratio;
  	  };
      return {width: image_width, height: image_height};
    },
    /**
     * If the image dimensions are smaller than the wrapper, we position
     * it in the middle anyway
     */
    _centerImage: function(img_container, image_width, image_height) {
      img_container.css('top', '0px');
      if(image_height < this.image_wrapper_height) {
        var dif = this.image_wrapper_height - image_height;
        img_container.css('top', (dif / 2) +'px');
      };
      img_container.css('left', '0px');
      if(image_width < this.image_wrapper_width) {
        var dif = this.image_wrapper_width - image_width;
        img_container.css('left', (dif / 2) +'px');
      };
    },
    _getDescription: function(image) {
      var desc = false;
      if(image.desc.length || image.title.length) {
        var title = '';
        if(image.title.length) {
          title = '<strong class="ad-description-title">'+ image.title +'</strong>';
        };
        var desc = '';
        if(image.desc.length) {
          desc = '<span>'+ image.desc +'</span>';
        };
        desc = $('<p class="ad-image-description">'+ title  +'</p>');
      };
      return desc;
    },
    /**
     * @param function callback Gets fired when the image has loaded, is displaying
     *                          and it's animation has finished
     */
    showImage: function(index, callback) {
      if(this.images[index] && !this.in_transition) {
        var context = this;
        var image = this.images[index];
        this.in_transition = true;
        if(!image.preloaded) {
          this.loading(true);
          this.preloadImage(index, function() {
            context.loading(false);
            context._showWhenLoaded(index, callback);
          });
        } else {
          this._showWhenLoaded(index, callback);
        };
      };
    },
    /**
     * @param function callback Gets fired when the image has loaded, is displaying
     *                          and it's animation has finished
     */
    _showWhenLoaded: function(index, callback) {
      if(this.images[index]) {
        var context = this;
        var image = this.images[index];
        var img_container = $(document.createElement('div')).addClass('ad-image');
        var img = $(new Image()).attr('src', image.image);
        if(image.link) {
          var link = $('<a href="'+ image.link +'" target="_blank"></a>');
          link.append(img);
          img_container.append(link);
        } else {
          img_container.append(img);
        }
        this.image_wrapper.prepend(img_container);
        var size = this._getContainedImageSize(image.size.width, image.size.height);
        img.attr('width', 634);
        img.attr('height', 517);
        img_container.css({width: '634px', height: '517px'});
        this._centerImage(img_container, size.width, size.height);
        var desc = this._getDescription(image, img_container);
        if(desc) {
          if(!this.settings.description_wrapper) {
            img_container.append(desc);
            var width = size.width - parseInt(desc.css('padding-left'), 10) - parseInt(desc.css('padding-right'), 10);
            desc.css('width', width +'px');
          } else {
            this.settings.description_wrapper.append(desc);
          }
        };
        this.highLightThumb(this.nav.find('.ad-thumb'+ index));

        var direction = 'right';
        if(this.current_index < index) {
          direction = 'left';
        };
        this.fireCallback(this.settings.callbacks.beforeImageVisible);
        if(this.current_image || this.settings.animate_first_image) {
          var animation_speed = this.settings.animation_speed;
          var easing = 'swing';
          var animation = this.animations[this.settings.effect].call(this, img_container, direction, desc);
          if(typeof animation.speed != 'undefined') {
            animation_speed = animation.speed;
          };
          if(typeof animation.easing != 'undefined') {
            easing = animation.easing;
          };
          if(this.current_image) {
            var old_image = this.current_image;
            var old_description = this.current_description;
            old_image.animate(animation.old_image, animation_speed, easing,
              function() {
                old_image.remove();
                if(old_description) old_description.remove();
              }
            );
          };
          img_container.animate(animation.new_image, animation_speed, easing,
            function() {
              context.current_index = index;
              context.current_image = img_container;
              context.current_description = desc;
              context.in_transition = false;
              context._afterShow();
              context.fireCallback(callback);
            }
          );
        } else {
          this.current_index = index;
          this.current_image = img_container;
          context.current_description = desc;
          this.in_transition = false;
          context._afterShow();
          this.fireCallback(callback);
        };
      };
    },
    nextIndex: function() {
      if(this.current_index == (this.images.length - 1)) {
        if(!this.settings.cycle) {
          return false;
        };
        var next = 0;
      } else {
        var next = this.current_index + 1;
      };
      return next;
    },
    nextImage: function(callback) {
      var next = this.nextIndex();
      if(next === false) return false;
      this.preloadImage(next + 1);
      this.showImage(next, callback);
      return true;
    },
    prevIndex: function() {
      if(this.current_index == 0) {
        if(!this.settings.cycle) {
          return false;
        };
        var prev = this.images.length - 1;
      } else {
        var prev = this.current_index - 1;
      };
      return prev;
    },
    prevImage: function(callback) {
      var prev = this.prevIndex();
      if(prev === false) return false;
      this.preloadImage(prev - 1);
      this.showImage(prev, callback);
      return true;
    },
    preloadAll: function() {
      var context = this;
      var i = 0;
      function preloadNext() {
        if(i < context.images.length) {
          i++;
          context.preloadImage(i, preloadNext);
        };
      };
      context.preloadImage(i, preloadNext);
    },
    preloadImage: function(index, callback) {
      if(this.images[index]) {
        var image = this.images[index];
        if(!this.images[index].preloaded) {
          var img = $(new Image());
          img.attr('src', image.image);
          if(!this.isImageLoaded(img[0])) {
            this.preloads.append(img);
            var context = this;
            img.load(
              function() {
                image.preloaded = true;
                image.size = { width: this.width, height: this.height };
                context.fireCallback(callback);
              }
            ).error(
              function() {
                image.error = true;
                image.preloaded = false;
                image.size = false;
              }
            );
          } else {
            image.preloaded = true;
            image.size = { width: img[0].width, height: img[0].height };
            this.fireCallback(callback);
          };
        } else {
          this.fireCallback(callback);
        };
      };
    },
    isImageLoaded: function(img) {
      if(typeof img.complete != 'undefined' && !img.complete) {
        return false;
      };
      if(typeof img.naturalWidth != 'undefined' && img.naturalWidth == 0) {
        return false;
      };
      return true;
    },
    highLightThumb: function(thumb) {
      this.thumbs_wrapper.find('.ad-active').removeClass('ad-active');
      thumb.addClass('ad-active');
      if(this.settings.thumb_opacity < 1) {
        this.thumbs_wrapper.find('a:not(.ad-active) img').fadeTo(300, this.settings.thumb_opacity);
        thumb.find('img').fadeTo(300, 1);
      };
      var left = thumb[0].parentNode.offsetLeft;
      left -= (this.nav_display_width / 2) - (thumb[0].offsetWidth / 2);
      this.thumbs_wrapper.animate({scrollLeft: left +'px'});
    },
    fireCallback: function(fn) {
      if($.isFunction(fn)) {
        fn.call(this);
      };
    }
  };

  function AdGallerySlideshow(nextimage_callback, settings) {
    this.init(nextimage_callback, settings);
  };
  AdGallerySlideshow.prototype = {
    start_link: false,
    stop_link: false,
    countdown: false,
    controls: false,

    settings: false,
    nextimage_callback: false,
    enabled: false,
    running: false,
    countdown_interval: false,
    init: function(nextimage_callback, settings) {
      var context = this;
      this.nextimage_callback = nextimage_callback;
      this.settings = settings;
    },
    create: function() {
      this.start_link = $('<span class="ad-slideshow-start">'+ this.settings.start_label +'</span>');
      this.stop_link = $('<span class="ad-slideshow-stop">'+ this.settings.stop_label +'</span>');
      this.countdown = $('<span class="ad-slideshow-countdown"></span>');
      this.controls = $('<div class="ad-slideshow-controls"></div>');
      //this.controls.append(this.start_link).append(this.stop_link).append(this.countdown);
      this.countdown.hide();

      var context = this;
      this.start_link.click(
        function() {
          context.start();
        }
      );
      this.stop_link.click(
        function() {
          context.stop();
        }
      );
      $(document).keydown(
        function(e) {
          if(e.keyCode == 83) {
            // 's'
            if(context.running) {
              context.stop();
            } else {
              context.start();
            };
          };
        }
      );
      return this.controls;
    },
    disable: function() {
      this.enabled = false;
      this.stop();
      this.controls.hide();
    },
    enable: function() {
      this.enabled = true;
      this.controls.show();
    },
    toggle: function() {
      if(this.enabled) {
        this.disable();
      } else {
        this.enable();
      };
    },
    start: function() {
      if(this.running || !this.enabled) return false;
      var context = this;
      this.running = true;
      this.controls.addClass('ad-slideshow-running');
      this._next();
      this.fireCallback(this.settings.onStart);
      return true;
    },
    stop: function() {
      if(!this.running) return false;
      this.running = false;
      this.countdown.hide();
      this.controls.removeClass('ad-slideshow-running');
      clearInterval(this.countdown_interval);
      this.fireCallback(this.settings.onStop);
      return true;
    },
    _next: function() {
      var context = this;
      var pre = this.settings.countdown_prefix;
      var su = this.settings.countdown_sufix;
      clearInterval(context.countdown_interval);
      this.countdown.show().html(pre + (this.settings.speed / 1000) + su);
      var slide_timer = 0;
      this.countdown_interval = setInterval(
        function() {
          slide_timer += 1000;
          if(slide_timer >= context.settings.speed) {
            var whenNextIsShown = function() {
              // A check so the user hasn't stoped the slideshow during the
              // animation
              if(context.running) {
                context._next();
              };
              slide_timer = 0;
            };
            if(!context.nextimage_callback(whenNextIsShown)) {
              context.stop();
            };
            slide_timer = 0;
          };
          var sec = parseInt(context.countdown.text().replace(/[^0-9]/g, ''), 10);
          sec--;
          if(sec > 0) {
            context.countdown.html(pre + sec + su);
          };
        },
        1000
      );
    },
    fireCallback: function(fn) {
      if($.isFunction(fn)) {
        fn.call(this);
      };
    }
  };
})(jQuery);
/**
 * jQuery jqGalViewII Plugin
 * Examples and documentation at: http://benjaminsterling.com/jquery-jqgalviewii-photo-gallery/
 *
 * @author: Benjamin Sterling
 * @version: 1.0
 * @copyright (c) 2007 Benjamin Sterling, KenzoMedia
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *   
 * @requires jQuery v1.2.1 or later
 * 
 * 
 * @name jqGalViewII
 * @example $('ul').jqGalViewII();
 * 
 * @Semantic requirements:
 * 				The structure fairly simple and should be unobtrusive, you
 * 				basically only need a parent container with a list of imgs
 * 
 * 	<ul>
 *		<li><img src="common/img/dsc_0003.thumbnail.JPG"/></li>
 *		<li><img src="common/img/dsc_0012.thumbnail.JPG"/></li>
 *	</ul>
 *
 *  -: or :-
 * 
 * <div>
 * 		<img src="common/img/dsc_0003.thumbnail.JPG"/>
 * 		<img src="common/img/dsc_0012.thumbnail.JPG"/>
 * </div>
 * 
 * @param Integer getUrlBy
 * 					By default, it is set to 0 (zero) and the plugin will
 * 					get the url of the full size img from the images 
 * 					parent A tag, or you can set it to 1 will and provide
 * 					the fullSizePath param with the path to the full size
 * 					images.  Finally, you can set it to 2 and provide text
 * 					to prefix param and have that prefix removed from the
 * 					src tag of the thumbnail to create the path to the
 * 					full sized image
 * 
 * @example $('#gallery').jqGalViewII({getUrlBy:1,fullSizePath:'fullPath/to/fullsize/folder'});
 * 
 * @example $('#gallery').jqGalViewII({getUrlBy:2, prefix:'.tn'});
 * 					".tn" gets removed from the src attribute of your image
 * 
 * @param String fullSizePath
 * 					Set to null by default, but if you are going to set
 * 					getUrlBy param to 1, you need to provide the full path
 * 					to the full size image.
 * 
 * @example $('#gallery').jqGalViewII({getUrlBy:1,fullSizePath:'fullPath/to/fullsize/folder'});
 * 
 * @param String prefix
 * 					Set to null by default, but if you are going to set
 * 					getUrlBy param to 2, you need to provide text you
 * 					want to remove from the src attribute of the thumbnail
 * 					to get create the full size image name
 * 
 * @example $('ul').jqGalViewII({getUrlBy:2, prefix:'.tn'});
 * 					".tn" gets removed from the src attribute of your image
 * 
 * @styleClasses
 * 		gvIIContainer:  overall holder of thumbnails and gvIIHolder div, the
 * 						gvIILoader div and the gvIIImgContainer div
 * 		gvIIHolder: contains the thumbnails divs
 *		gvIIItem: contains the thumbnail img, the gvLoaderMini div and the gvOpen div
 *		gvIILoaderMini :empty but styled with a loader images as background image.
 * 		gvIIImgContainer: the full size image container and the gvDescText div
 * 		gvIILoader: empty but styled with a loader images as background image.
 * 
 * 
 * changes:
 *
 */
(function($){
	$.fn.jqGalViewII = function(options){
		return this.each(function(i){
			var el = this;
			el.jqthis = $(this);
			el.jqchildren = el.jqthis.find('img');
			el.opts = $.extend({}, jqGalViewII.defaults, options);
			el.index = i;
			el.totalChildren = el.jqchildren.size();
			el.jqjqviewii = jqGalViewII.swapOut(el);
			
			el.container = $('<div class="gvIIContainer">').appendTo(el.jqjqviewii);

			el.mainImgContainer = $('<div class="gvIIImgContainer">').appendTo(el.container);
			el.link = $('<a href="#" class="lightbox" rel="group1"/>').appendTo(el.mainImgContainer);
			el.image = $('<img style="display:none;"/>').appendTo(el.link);
			el.loader = $('<div class="gvIILoader"/>').appendTo(el.mainImgContainer);
			el.altTextBox = $('<div class="gvIIAltText"/>').appendTo(el.mainImgContainer);
			el.holder = $('<div class="gvIIHolder"/>').appendTo(el.container);
			
			
			el.jqthis.after(el.jqjqviewii).remove();
			

			el.imgCw = el.mainImgContainer.width();
			el.imgCh = el.mainImgContainer.height();

			el.jqchildren.each(function(j){
				var jqimage = $(this);
				var tmpimage = this;
				
				tmpimage.index = j;

				var jqdiv = $('<div id="gvIIID'+j+'" class="gvIIItem">')
				.appendTo(el.holder)
				.append('<div class="gvIILoaderMini">');// end : $div
				
				if(el.opts.getUrlBy == 0){
					tmpimage.altImg = jqimage.parent().attr('href');
				}
				else if(el.opts.getUrlBy == 1){
					tmpimage.altImg = el.opts.fullSizePath + tmpimage.src.split('/').pop();
				}
				else if(el.opts.getUrlBy == 2){
					tmpimage.altImg = tmpimage.src.replace(el.opts.prefix,'');
				};
				
				
				this.altTxt = jqimage.attr('alt');
				
				var image = new Image();
				image.onload = function(){
					image.onload = null;
					jqdiv.empty().append(jqimage);
					
					var margins = jqGalViewII.center({"w":jqdiv.width(),"h":jqdiv.height()},{"w":image.width,"h":image.height});

					jqimage.css({marginLeft:margins.l,marginTop:margins.t});
					var largeImage = new Image();
					largeImage.onload = function(){
						largeImage.onload = null;

						$('<div class="gvIIFlash">').appendTo(jqdiv).css({opacity:".01"})
						.mouseover(
							function(){
								var $f = $(this);
								$f.css({opacity:".75"}).stop().animate({opacity:".01"},500);
							}
						)
						.click(function(){
								jqimage.trigger('click');
						}).trigger('mouseover');

						jqimage.click(function(){
							jqGalViewII.view(this,el);		   
						})
						.css({marginLeft:margins.l,marginTop:margins.t});

						if( tmpimage.index  == 0 ){
							jqimage.trigger('click');
							jqimage.siblings().trigger('mouseover');
						};
					};  // end : largeImage.onload 
					largeImage.src = tmpimage.altImg;
				};// end : image.onload 
				image.src = tmpimage.src;
			});
		});
	};

	jqGalViewII = {
		//pDem parent deminsions
		//iDem img deminsions
		resize : function(pDem,iDem){
			if (iDem.w > pDem.w) {
				iDem.h = iDem.h * (pDem.w / iDem.w); 
				iDem.w = pDem.w; 
				if (iDem.h > pDem.w) { 
					iDem.w = iDem.w * (pDem.h / iDem.h); 
					iDem.h = pDem.h; 
				};
			} else if (iDem.h > pDem.h) { 
				iDem.w = iDem.w * (pDem.h / iDem.h); 
				iDem.h = pDem.h; 
				if (iDem.w > pDem.w) { 
					iDem.h = iDem.h * (pDem.w /iDem.w); 
					iDem.w = pDem.w;
				};
			};
			
			return iDem;
		},
		center : function(pDem,iDem){
			return { "l":(pDem.w-iDem.w)*.5, "t": (pDem.h-iDem.h)*.5 };
		},
		swapOut : function(el){
			return $('<div id="jqgvii'+el.index+'">');
		},
		view : function(img, el){
			if(typeof img.altImg == 'undefined') return false;
			var url = img.altImg;
			if(/picasa/.test(url)){
				url = /\?/.test(img.altImg) ? '&imgmax=800' : '?imgmax=800';
			};
			
			el.loader.show();		

			
			image = new Image();
			image.onload = function(){
				image.onload = null;
				dem = {};
				dem.w = $wOrg = image.width;
				dem.h = $hOrg = image.height;
				dem = jqGalViewII.resize({"w":el.imgCw,"h":el.imgCh},{"w":dem.w,"h":dem.h});

				var margins = jqGalViewII.center({"w":el.imgCw,"h":el.imgCh},{"w":dem.w,"h":dem.h});
	
				el.image.css({width:dem.w,height:dem.h, marginLeft:margins.l,marginTop:margins.t});
				el.loader.fadeOut('fast');
				el.altTextBox.fadeTo('fast', 0.1);
				el.image.fadeOut('fast',function(){
					el.image.attr('src',url).fadeIn();
					el.link.attr('title',img.altTxt);
					el.link.attr('href',url);
					if(typeof img.altTxt != 'undefined'){
						el.altTextBox.fadeTo("fast",el.opts.titleOpacity).text(img.altTxt);
					};
				});
				/*
				el.image.click(function(){
					var src = img.altImg;

					// thickbox execution code
					
				});
				*/
			};
			image.src = url;
		},
		defaults : {
			getUrlBy : 0, // 0 == from parent A tag | 1 == the full size resides in another folder
			fullSizePath : null,
			prefix: 'thumbnail.',
			titleOpacity : .60
		}
	};
})(jQuery);

// Inline Search - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)

;(function($){
  
  /**
   * Search _elements_ for _keywords_ using _filter_
   * and _lookup_ function.
   *
   * @param  {jQuery} elements
   * @param  {string} keywords
   * @param  {string, function} filter
   * @param  {function} lookup
   * @return {jQuery}
   * @api private
   */
  
  $.search = function(elements, keywords, filter, lookup) {
    keywords = $.trim(keywords)
    lookup = $.search.lookups[lookup] || lookup || function(){return this}
    filter = $.search.filters[filter] || filter || $.search.filters['by substring']
    if (!keywords.length) filter = function(){return false}
    return elements.each(function() {
      lookup.call($(this))[filter.call($(this), keywords) ? 'hide' : 'show']()
    })
  }
  
  /**
   * Search for _keywords_ using _filter_.
   *
   * @param  {string} keywords
   * @param  {string, function} filter
   * @param  {hash} options
   * @return {jQuery}
   * @api public
   */
  
  $.fn.search = function(keywords, filter, options) {
    options = options || {}
    return $.search(this, keywords, filter, options.remove)
  }
  
  // --- Filters
  
  $.search.filters = {
    'by substring': function(search) {
      return ! LimpiarAcentos(this.text().toLowerCase()).match(LimpiarAcentos(search.toLowerCase()))
    },
    
    'by keyword': function(search) {
      var words = LimpiarAcentos(this.text().toLowerCase().split(' '))
      var keywords = search.toLowerCase().split(' ')
      for (var i = 0, len = keywords.length; i < len; ++i)
        if (words.indexOf(keywords[i]) != -1)
          return false
      return true
    }
  }
  
  // --- Lookups
  
  $.search.lookups = {
    parent: function() {
      return this.parent()
    }
  }
  
  // --- Version
  
  $.search.version = '1.0.0'
  
})(jQuery)
function LimpiarAcentos(cadena)
{
    return cadena.replace('�', 'a').replace('�', 'e').replace('�', 'i').replace('�', 'o').replace('�', 'o').replace('�', 'u');
}
/**Funciones**/
var visible = 1;
var camina = 0;
jQuery(function() {
    jQuery(".uni input, .uni textarea, .uni select, .uni button, .unib input, .unib textarea, .unib select, .unib button").uniform();
    jQuery.easing.backout = function(x, t, b, c, d){
        var s=1.70158;
        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
    };
    if(jQuery.browser.name=='msie')
    {
        jQuery("head").append("<link>");
        css = jQuery("head").children(":last");
        css.attr({
            rel:  "stylesheet",
            type: "text/css",
            href: "http://www.biobiochile.cl/l/css/ie.css"
        });
        if(jQuery.browser.versionNumber<="6")
        {
            jQuery(".cnt").prepend("<div class='IE'><b>IMPORTANTE:</b> Est�s utilizando una versi�n Obsoleta de Internet Explorer, podr�as observar algunas diferencias respecto a otros navegadores.<br/>Te recomendamos actualizar a <a href='http://www.microsoft.com/downloads/es-es/details.aspx?familyid=341C2AD5-8C3D-4347-8C03-08CDECD8852B&displaylang=es' target='_blank'>Internet Explorer 8</a>, o instalar <a href='http://www.google.com/chrome?hl=es' target='_blank'>Chrome</a>, <a href='http://www.opera.com/' target='_blank'>Opera</a> o <a href='http://www.mozilla.com/es-CL/firefox/?from=biobiochile' target='_blank'>Firefox</a>.</div>");
            jQuery("head").append("<link>");
            css = jQuery("head").children(":last");
            css.attr({
                rel:  "stylesheet",
                type: "text/css",
                href: "http://www.biobiochile.cl/l/css/ie6.css"
            });
        }
    }
    else if(jQuery.browser.name=="opera")
    {
        jQuery(".NDest").css({
            "margin-bottom":"24px"
        }
        );
    }
    jQuery('#slideshow').serialScroll({
        items:'li',
        prev:'#byeI',
        next:'#byeD',
        offset:-230,
        start:1,
        duration:1200,
        force:true,
        stop:true,
        lock:false,
        cycle:true,
        easing:'easeOutQuart',
        jump: false
    });
    jQuery('#galeriaBS').show().jqGalViewII();
    jQuery('.galeriaBS').show().jqGalViewII();
    jQuery('#CargandoGaleria').hide();
    jQuery('.CargandoGaleria').hide();
    jQuery('.lightbox').lightbox();
    jQuery('#sliderFC').nivoSlider({
        effect:'fade', 
        pauseTime:5000,
        controlNav:false
    });
    jQuery(".NDBc").click(
        function()
        {
            var a = jQuery(this).attr("id").replace("B","");
            jQuery(".NDItem").removeClass("muestra");
            jQuery("#"+a).addClass("muestra");
            jQuery(".NDBc").removeClass("dot").removeClass("dotNormal").addClass("dotNormal");
            jQuery(this).removeClass("dotNormal").addClass("dot");
            visible = jQuery(this).attr("id").replace("Bslide-","");
            camina = 1;
            setTimeout("SlideHome()", 10000);
        }
        );
    if(window.location =="http://www.biobiochile.cl/"){
        jQuery("#regiones").organicTabs({
            "speed": 200
        });
    
        setTimeout("SlideHome()", 8000);
        setTimeout('document.location.reload()', 600000);
    }
    jQuery("#emisora").change(function(){
        if (jQuery(this).val()!="#") {
            window.open(jQuery(this).val(), 'popup1', 'width=330,height=480,menubar=no,toolbar=no');
            return false
        }
    });

});

jQuery.noConflict();
jQuery(window).resize(function() {
    tamanio();
});
function tamanio()
{
    if ((document.width<1025)) {
        jQuery(".banenrlateral").hide();
    }
    else
    {
        jQuery(".banenrlateral").show();
    }
}
function SlideHome()
{
    if(camina==0)
    {
        visible++;
        if(visible>5)
            visible=1;
        var item = "#Bslide-"+visible.toString();
        var a = jQuery(item).attr("id").replace("B","");
        jQuery(".NDItem").removeClass("muestra");
        jQuery("#"+a).addClass("muestra");
        jQuery(".NDBc").removeClass("dot").removeClass("dotNormal").addClass("dotNormal");
        jQuery(item).removeClass("dotNormal").addClass("dot");
        visible = jQuery(item).attr("id").replace("Bslide-","");
        setTimeout("SlideHome()", 8000);
    }
}
var bb_timeout = 1000;
var bb_closetimer = 0;
var bb_elements = [];

function bb_open()
{
	bb_canceltimer();
	bb_close();
}
function bb_close()
{
	for(var i in bb_elements)
	{
		jQuery(bb_elements[i]).fadeTo(0, 1);
	}
}
function bb_timer() { bb_closetimer = window.setTimeout(bb_close, bb_timeout); }
function bb_canceltimer()
{
	if(bb_closetimer)
	{
		window.clearTimeout(bb_closetimer);
		bb_closetimer = null;
	}
}

function setBlackbox(banner_div_id)
{
	bb_elements.push(banner_div_id);
	
	jQuery(banner_div_id).mouseover(function(){
		bb_open();
		
		jQuery.each(jQuery(banner_div_id).parent().children('div'), function(i, v)
		{
			if(jQuery(v).attr("id") != jQuery(banner_div_id).attr("id"))	
				jQuery(v).fadeTo(0, 0.1);

		});
	});
	jQuery(banner_div_id).mouseleave(bb_timer);
}
var $ = jQuery.noConflict();
