/*!
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *   http://billwscott.com/carousel/
 */

(function($){
    $.fn.jcarousel=function(o){
        if(typeof o=='string'){
            var instance=$(this).data('jcarousel'),args=Array.prototype.slice.call(arguments,1);
            return instance[o].apply(instance,args);
        }else
            return this.each(function(){
                $(this).data('jcarousel',new $jc(this,o));
            });
    };

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

    $.jcarousel=function(e,o){
        this.options=$.extend({},defaults,o||{});
        this.locked=false;
        this.container=null;
        this.clip=null;
        this.list=null;
        this.buttonNext=null;
        this.buttonPrev=null;
        this.wh=!this.options.vertical?'width':'height';
        this.lt=!this.options.vertical?'left':'top';
        var skin='',split=e.className.split(' ');
        for(var i=0;i<split.length;i++){
            if(split[i].indexOf('jcarousel-skin')!=-1){
                $(e).removeClass(split[i]);
                skin=split[i];
                break;
            }
        }
        if(e.nodeName=='UL'||e.nodeName=='OL'){
            this.list=$(e);
            this.container=this.list.parent();
            if(this.container.hasClass('jcarousel-clip')){
                if(!this.container.parent().hasClass('jcarousel-container'))this.container=this.container.wrap('<div></div>');
                this.container=this.container.parent();
            }else if(!this.container.hasClass('jcarousel-container'))this.container=this.list.wrap('<div></div>').parent();
        }else{
            this.container=$(e);
            this.list=this.container.find('ul,ol').eq(0);
        }
        if(skin!=''&&this.container.parent()[0].className.indexOf('jcarousel-skin')==-1)this.container.wrap('<div class=" '+skin+'"></div>');
        this.clip=this.list.parent();
        if(!this.clip.length||!this.clip.hasClass('jcarousel-clip'))this.clip=this.list.wrap('<div></div>').parent();
        this.buttonNext=$('.jcarousel-next',this.container);
        if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null)this.buttonNext=this.clip.after(this.options.buttonNextHTML).next();
        this.buttonNext.addClass(this.className('jcarousel-next'));
        this.buttonPrev=$('.jcarousel-prev',this.container);
        if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null)this.buttonPrev=this.clip.after(this.options.buttonPrevHTML).next();
        this.buttonPrev.addClass(this.className('jcarousel-prev'));
        this.clip.addClass(this.className('jcarousel-clip')).css({
            overflow:'hidden',
            position:'relative'
        });
        this.list.addClass(this.className('jcarousel-list')).css({
            overflow:'hidden',
            position:'relative',
            top:0,
            left:0,
            margin:0,
            padding:0
        });
        this.container.addClass(this.className('jcarousel-container')).css({
            position:'relative'
        });
        var di=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;
        var li=this.list.children('li');
        var self=this;
        if(li.size()>0){
            var wh=0,i=this.options.offset;
            li.each(function(){
                self.format(this,i++);
                wh+=self.dimension(this,di);
            });
            this.list.css(this.wh,wh+'px');
            if(!o||o.size===undefined)this.options.size=li.size();
        }
        this.container.css('display','block');
        this.buttonNext.css('display','block');
        this.buttonPrev.css('display','block');
        this.funcNext=function(){
            self.next();
        };

        this.funcPrev=function(){
            self.prev();
        };

        this.funcResize=function(){
            self.reload();
        };

        if(this.options.initCallback!=null)this.options.initCallback(this,'init');
        if($.browser.safari){
            this.buttons(false,false);
            $(window).bind('load.jcarousel',function(){
                self.setup();
            });
        }else
            this.setup();
    };

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

    $jc.fn.extend=$jc.extend=$.extend;
    $jc.fn.extend({
        setup:function(){
            this.first=null;
            this.last=null;
            this.prevFirst=null;
            this.prevLast=null;
            this.animating=false;
            this.timer=null;
            this.tail=null;
            this.inTail=false;
            if(this.locked)return;
            this.list.css(this.lt,this.pos(this.options.offset)+'px');
            var p=this.pos(this.options.start);
            this.prevFirst=this.prevLast=null;
            this.animate(p,false);
            $(window).unbind('resize.jcarousel',this.funcResize).bind('resize.jcarousel',this.funcResize);
        },
        reset:function(){
            this.list.empty();
            this.list.css(this.lt,'0px');
            this.list.css(this.wh,'10px');
            if(this.options.initCallback!=null)this.options.initCallback(this,'reset');
            this.setup();
        },
        reload:function(){
            if(this.tail!=null&&this.inTail)this.list.css(this.lt,$jc.intval(this.list.css(this.lt))+this.tail);
            this.tail=null;
            this.inTail=false;
            if(this.options.reloadCallback!=null)this.options.reloadCallback(this);
            if(this.options.visible!=null){
                var self=this;
                var di=Math.ceil(this.clipping()/this.options.visible),wh=0,lt=0;
                $('li',this.list).each(function(i){
                    wh+=self.dimension(this,di);
                    if(i+1<self.first)lt=wh;
                });
                this.list.css(this.wh,wh+'px');
                this.list.css(this.lt,-lt+'px');
            }
            this.scroll(this.first,false);
        },
        lock:function(){
            this.locked=true;
            this.buttons();
        },
        unlock:function(){
            this.locked=false;
            this.buttons();
        },
        size:function(s){
            if(s!=undefined){
                this.options.size=s;
                if(!this.locked)this.buttons();
            }
            return this.options.size;
        },
        has:function(i,i2){
            if(i2==undefined||!i2)i2=i;
            if(this.options.size!==null&&i2>this.options.size)i2=this.options.size;
            for(var j=i;j<=i2;j++){
                var e=this.get(j);
                if(!e.length||e.hasClass('jcarousel-item-placeholder'))return false;
            }
            return true;
        },
        get:function(i){
            return $('.jcarousel-item-'+i,this.list);
        },
        add:function(i,s){
            var e=this.get(i),old=0,add=0;
            if(e.length==0){
                var c,e=this.create(i),j=$jc.intval(i);
                while(c=this.get(--j)){
                    if(j<=0||c.length){
                        j<=0?this.list.prepend(e):c.after(e);
                        break;
                    }
                }
            }else
                old=this.dimension(e);
            e.removeClass(this.className('jcarousel-item-placeholder'));
            typeof s=='string'?e.html(s):e.empty().append(s);
            var di=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;
            var wh=this.dimension(e,di)-old;
            if(i>0&&i<this.first)this.list.css(this.lt,$jc.intval(this.list.css(this.lt))-wh+'px');
            this.list.css(this.wh,$jc.intval(this.list.css(this.wh))+wh+'px');
            return e;
        },
        remove:function(i){
            var e=this.get(i);
            if(!e.length||(i>=this.first&&i<=this.last))return;
            var d=this.dimension(e);
            if(i<this.first)this.list.css(this.lt,$jc.intval(this.list.css(this.lt))+d+'px');
            e.remove();
            this.list.css(this.wh,$jc.intval(this.list.css(this.wh))-d+'px');
        },
        next:function(){
            this.stopAuto();
            if(this.tail!=null&&!this.inTail)this.scrollTail(false);else
                this.scroll(((this.options.wrap=='both'||this.options.wrap=='last')&&this.options.size!=null&&this.last==this.options.size)?1:this.first+this.options.scroll);
        },
        prev:function(){
            this.stopAuto();
            if(this.tail!=null&&this.inTail)this.scrollTail(true);else
                this.scroll(((this.options.wrap=='both'||this.options.wrap=='first')&&this.options.size!=null&&this.first==1)?this.options.size:this.first-this.options.scroll);
        },
        scrollTail:function(b){
            if(this.locked||this.animating||!this.tail)return;
            var pos=$jc.intval(this.list.css(this.lt));
            !b?pos-=this.tail:pos+=this.tail;
            this.inTail=!b;
            this.prevFirst=this.first;
            this.prevLast=this.last;
            this.animate(pos);
        },
        scroll:function(i,a){
            if(this.locked||this.animating)return;
            this.animate(this.pos(i),a);
        },
        pos:function(i){
            var pos=$jc.intval(this.list.css(this.lt));
            if(this.locked||this.animating)return pos;
            if(this.options.wrap!='circular')i=i<1?1:(this.options.size&&i>this.options.size?this.options.size:i);
            var back=this.first>i;
            var f=this.options.wrap!='circular'&&this.first<=1?1:this.first;
            var c=back?this.get(f):this.get(this.last);
            var j=back?f:f-1;
            var e=null,l=0,p=false,d=0,g;
            while(back?--j>=i:++j<i){
                e=this.get(j);
                p=!e.length;
                if(e.length==0){
                    e=this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    c[back?'before':'after'](e);
                    if(this.first!=null&&this.options.wrap=='circular'&&this.options.size!==null&&(j<=0||j>this.options.size)){
                        g=this.get(this.index(j));
                        if(g.length)this.add(j,g.children().clone(true));
                    }
                }
                c=e;
                d=this.dimension(e);
                if(p)l+=d;
                if(this.first!=null&&(this.options.wrap=='circular'||(j>=1&&(this.options.size==null||j<=this.options.size))))pos=back?pos+d:pos-d;
            }
            var clipping=this.clipping();
            var cache=[];
            var visible=0,j=i,v=0;
            var c=this.get(i-1);
            while(++visible){
                e=this.get(j);
                p=!e.length;
                if(e.length==0){
                    e=this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    c.length==0?this.list.prepend(e):c[back?'before':'after'](e);
                    if(this.first!=null&&this.options.wrap=='circular'&&this.options.size!==null&&(j<=0||j>this.options.size)){
                        g=this.get(this.index(j));
                        if(g.length)this.add(j,g.find('>*').clone(true));
                    }
                }
                c=e;
                var d=this.dimension(e);
                if(d==0){
                    alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
                    return 0;
                }
                if(this.options.wrap!='circular'&&this.options.size!==null&&j>this.options.size)cache.push(e);
                else if(p)l+=d;
                v+=d;
                if(v>=clipping)break;
                j++;
            }
            for(var x=0;x<cache.length;x++)cache[x].remove();
            if(l>0){
                this.list.css(this.wh,this.dimension(this.list)+l+'px');
                if(back){
                    pos-=l;
                    this.list.css(this.lt,$jc.intval(this.list.css(this.lt))-l+'px');
                }
            }
            var last=i+visible-1;
            if(this.options.wrap!='circular'&&this.options.size&&last>this.options.size)last=this.options.size;
            if(j>last){
                visible=0,j=last,v=0;
                while(++visible){
                    var e=this.get(j--);
                    if(!e.length)break;
                    v+=this.dimension(e);
                    if(v>=clipping)break;
                }
            }
            var first=last-visible+1;
            if(this.options.wrap!='circular'&&first<1)first=1;
            if(this.inTail&&back){
                pos+=this.tail;
                this.inTail=false;
            }
            this.tail=null;
            if(this.options.wrap!='circular'&&last==this.options.size&&(last-visible+1)>=1){
                var m=$jc.margin(this.get(last),!this.options.vertical?'marginRight':'marginBottom');
                if((v-m)>clipping)this.tail=v-clipping-m;
            }while(i-->first)pos+=this.dimension(this.get(i));
            this.prevFirst=this.first;
            this.prevLast=this.last;
            this.first=first;
            this.last=last;
            return pos;
        },
        animate:function(p,a){
            if(this.locked||this.animating)return;
            this.animating=true;
            var self=this;
            var scrolled=function(){
                self.animating=false;
                if(p==0)self.list.css(self.lt,0);
                if(self.options.wrap=='circular'||self.options.wrap=='both'||self.options.wrap=='last'||self.options.size==null||self.last<self.options.size)self.startAuto();
                self.buttons();
                self.notify('onAfterAnimation');
            };

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

                this.list.animate(o,this.options.animation,this.options.easing,scrolled);
            }
        },
        startAuto:function(s){
            if(s!=undefined)this.options.auto=s;
            if(this.options.auto==0)return this.stopAuto();
            if(this.timer!=null)return;
            var self=this;
            this.timer=setTimeout(function(){
                self.next();
            },this.options.auto*1000);
        },
        stopAuto:function(){
            if(this.timer==null)return;
            clearTimeout(this.timer);
            this.timer=null;
        },
        buttons:function(n,p){
            if(n==undefined||n==null){
                var n=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!='first')||this.options.size==null||this.last<this.options.size);
                if(!this.locked&&(!this.options.wrap||this.options.wrap=='first')&&this.options.size!=null&&this.last>=this.options.size)n=this.tail!=null&&!this.inTail;
            }
            if(p==undefined||p==null){
                var p=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!='last')||this.first>1);
                if(!this.locked&&(!this.options.wrap||this.options.wrap=='last')&&this.options.size!=null&&this.first==1)p=this.tail!=null&&this.inTail;
            }
            var self=this;
            this.buttonNext[n?'bind':'unbind'](this.options.buttonNextEvent+'.jcarousel',this.funcNext)[n?'removeClass':'addClass'](this.className('jcarousel-next-disabled')).attr('disabled',n?false:true);
            this.buttonPrev[p?'bind':'unbind'](this.options.buttonPrevEvent+'.jcarousel',this.funcPrev)[p?'removeClass':'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled',p?false:true);
            if(this.buttonNext.length>0&&(this.buttonNext[0].jcarouselstate==undefined||this.buttonNext[0].jcarouselstate!=n)&&this.options.buttonNextCallback!=null){
                this.buttonNext.each(function(){
                    self.options.buttonNextCallback(self,this,n);
                });
                this.buttonNext[0].jcarouselstate=n;
            }
            if(this.buttonPrev.length>0&&(this.buttonPrev[0].jcarouselstate==undefined||this.buttonPrev[0].jcarouselstate!=p)&&this.options.buttonPrevCallback!=null){
                this.buttonPrev.each(function(){
                    self.options.buttonPrevCallback(self,this,p);
                });
                this.buttonPrev[0].jcarouselstate=p;
            }
        },
        notify:function(evt){
            var state=this.prevFirst==null?'init':(this.prevFirst<this.first?'next':'prev');
            this.callback('itemLoadCallback',evt,state);
            if(this.prevFirst!==this.first){
                this.callback('itemFirstInCallback',evt,state,this.first);
                this.callback('itemFirstOutCallback',evt,state,this.prevFirst);
            }
            if(this.prevLast!==this.last){
                this.callback('itemLastInCallback',evt,state,this.last);
                this.callback('itemLastOutCallback',evt,state,this.prevLast);
            }
            this.callback('itemVisibleInCallback',evt,state,this.first,this.last,this.prevFirst,this.prevLast);
            this.callback('itemVisibleOutCallback',evt,state,this.prevFirst,this.prevLast,this.first,this.last);
        },
        callback:function(cb,evt,state,i1,i2,i3,i4){
            if(this.options[cb]==undefined||(typeof this.options[cb]!='object'&&evt!='onAfterAnimation'))return;
            var callback=typeof this.options[cb]=='object'?this.options[cb][evt]:this.options[cb];
            if(!$.isFunction(callback))return;
            var self=this;
            if(i1===undefined)callback(self,state,evt);
            else if(i2===undefined)this.get(i1).each(function(){
                callback(self,this,i1,state,evt);
            });
            else{
                for(var i=i1;i<=i2;i++)if(i!==null&&!(i>=i3&&i<=i4))this.get(i).each(function(){
                    callback(self,this,i,state,evt);
                });
            }
        },
        create:function(i){
            return this.format('<li></li>',i);
        },
        format:function(e,i){
            var $e=$(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-'+i)).css({
                'float':'left',
                'list-style':'none'
            });
            $e.attr('jcarouselindex',i);
            return $e;
        },
        className:function(c){
            return c+' '+c+(!this.options.vertical?'-horizontal':'-vertical');
        },
        dimension:function(e,d){
            var el=e.jquery!=undefined?e[0]:e;
            var old=!this.options.vertical?el.offsetWidth+$jc.margin(el,'marginLeft')+$jc.margin(el,'marginRight'):el.offsetHeight+$jc.margin(el,'marginTop')+$jc.margin(el,'marginBottom');
            if(d==undefined||old==d)return old;
            var w=!this.options.vertical?d-$jc.margin(el,'marginLeft')-$jc.margin(el,'marginRight'):d-$jc.margin(el,'marginTop')-$jc.margin(el,'marginBottom');
            $(el).css(this.wh,w+'px');
            return this.dimension(el);
        },
        clipping:function(){
            return!this.options.vertical?this.clip[0].offsetWidth-$jc.intval(this.clip.css('borderLeftWidth'))-$jc.intval(this.clip.css('borderRightWidth')):this.clip[0].offsetHeight-$jc.intval(this.clip.css('borderTopWidth'))-$jc.intval(this.clip.css('borderBottomWidth'));
        },
        index:function(i,s){
            if(s==undefined)s=this.options.size;
            return Math.round((((i-1)/s)-Math.floor((i-1)/s))*s)+1;
        }
    });
    $jc.extend({
        defaults:function(d){
            return $.extend(defaults,d||{});
        },
        margin:function(e,p){
            if(!e)return 0;
            var el=e.jquery!=undefined?e[0]:e;
            if(p=='marginRight'&&$.browser.safari){
                var old={
                    'display':'block',
                    'float':'none',
                    'width':'auto'
                },oWidth,oWidth2;
                $.swap(el,old,function(){
                    oWidth=el.offsetWidth;
                });
                old['marginRight']=0;
                $.swap(el,old,function(){
                    oWidth2=el.offsetWidth;
                });
                return oWidth2-oWidth;
            }
            return $jc.intval($.css(el,p));
        },
        intval:function(v){
            v=parseInt(v);
            return isNaN(v)?0:v;
        }
    });
})(jQuery);


/*
 * .tabSwitch
 * Version: 1.0
 * http://www.hieu.co.uk/blog/index.php/tabswitch/
 * Date: 14/04/2009
 */
(function($){
    $.fn.tabSwitch=function(command,Arguements,EndFunction){
        var defaults={
            type:"slide",
            cols:2,
            toggle:"fade",
            ease:40,
            easeType:"linear",
            loopback:1,
            width:400,
            height:400,
            index:0,
            speed:500,
            interval:5000,
            step:1,
            wrapperClass:"",
            viewportClass:""
        };

        var Args=$.extend(defaults,Arguements);
        var Obj=this;
        var jFirstObj=Obj.eq(1);
        var DOMFirstObj=Obj.eq(1).get(0);
        if(!$.isFunction(EndFunction)){
            var Callback=function(){
                $.data(DOMFirstObj,"index",Args.index)
            }
        }else{
            var Callback=function(){
                $.data(DOMFirstObj,"index",Args.index);
                EndFunction()
            }
        }
        StoreToCache=function(){
            $.data(DOMFirstObj,"type",Args.type);
            $.data(DOMFirstObj,"toggle",Args.toggle);
            $.data(DOMFirstObj,"cols",Args.cols);
            $.data(DOMFirstObj,"ease",Args.ease);
            $.data(DOMFirstObj,"easeType",Args.easeType);
            $.data(DOMFirstObj,"index",Args.index);
            $.data(DOMFirstObj,"loopback",Args.loopback);
            if(jFirstObj.attr("style")){
                $.data(DOMFirstObj,"orgAttr",jFirstObj.attr("style"))
            }else{
                $.data(DOMFirstObj,"orgAttr","")
            }
        };

        backFromCache=function(){
            Obj.attr("style",$.data(DOMFirstObj,"orgAttr"));
            var ViewPortObj=$("#ViewPort"+$.data(DOMFirstObj));
            ViewPortObj.replaceWith(Obj);
            stopAuto();
            $.removeData(DOMFirstObj)
        };

        var createTab=function(){
            StoreToCache();
            if(Args.width){
                Obj.width(Args.width)
            }
            if(Args.height){
                Obj.height(Args.height)
            }
            var WraperSelector="WideDiv"+$.data(DOMFirstObj);
            Obj.wrapAll("<div id='"+WraperSelector+"'></div>");
            var WraperObj=$("#"+WraperSelector);
            WraperObj.addClass(Args.wraperClass);
            WraperObj.css({
                position:"relative"
            });
            WraperObj.wrap("<div id='"+WraperSelector.replace("WideDiv","ViewPort")+"'></div>");
            var ViewPortObj=$("#"+WraperSelector.replace("WideDiv","ViewPort"));
            ViewPortObj.width(Args.width);
            ViewPortObj.height(Args.height);
            ViewPortObj.css({
                display:"block",
                overflow:"hidden",
                position:"relative"
            });
            ViewPortObj.addClass(Args.viewportClass);
            switch(Args.type){
                case"slide":
                    Obj.css({
                        "float":"left"
                    });
                    WraperObj.width((Args.width+2)*Obj.length);
                    break;
                case"scroll":
                    WraperObj.width(Args.width);
                    WraperObj.height((Args.height+2)*Obj.length);
                    break;
                case"toggle":
                    WraperObj.width(Args.width);
                    WraperObj.height(Args.height);
                    Obj.css({
                        position:"absolute",
                        left:"-999px"
                    });
                    Obj.eq(Args.index).css({
                        left:"0px",
                        top:"0px"
                    });
                    Obj.eq(Args.index).css("opacity",1);
                    break;
                case"table":
                    WraperObj.width(Args.width*Args.cols);
                    Obj.css("float","left")
            }
            moveTo()
        };

        var moveTo=function(){
            var ease=0;
            if(!Args.easeType){
                Args.easeType=(DOMFirstObj,"easeType")
            }
            if(Args.index>Obj.length-1){
                if($.data(DOMFirstObj,"loopback")!=0){
                    Args.index=0;
                    ease=-$.data(DOMFirstObj,"ease")
                }else{
                    return
                }
            }
            if(Args.index<0){
                if($.data(DOMFirstObj,"loopback")!=0){
                    Args.index=Obj.length-1;
                    ease=$.data(DOMFirstObj,"ease")
                }else{
                    return
                }
            }
            var WraperSelector="WideDiv"+$.data(DOMFirstObj);
            var WraperObj=$("#"+WraperSelector);
            switch($.data(DOMFirstObj,"type")){
                case"slide":
                    if(ease!=0){
                        var easeLevel=(parseInt(WraperObj.css("left").replace("px",""))+ease);
                        WraperObj.animate({
                            left:easeLevel+"px"
                        },Args.speed,function(){
                            WraperObj.animate({
                                left:-(Obj.outerWidth(true)*Args.index)+"px"
                            },Args.speed,Args.easeType,Callback())
                        })
                    }else{
                        WraperObj.animate({
                            left:-(Obj.outerWidth(true)*Args.index)+"px"
                        },Args.speed,Args.easeType,Callback())
                    }
                    break;
                case"scroll":
                    if(ease!=0){
                        var easeLevel=(parseInt(WraperObj.css("top").replace("px",""))+ease);
                        WraperObj.animate({
                            top:easeLevel+"px"
                        },Args.speed,function(){
                            WraperObj.animate({
                                top:-(Obj.outerHeight(true)*Args.index)+"px"
                            },Args.speed,Args.easeType,Callback())
                        })
                    }else{
                        WraperObj.animate({
                            top:-(Obj.outerHeight(true)*Args.index)+"px"
                        },Args.speed,Args.easeType,Callback())
                    }
                    break;
                case"toggle":
                    Obj.eq(Args.index).css({
                        left:"0px",
                        top:"0px"
                    });
                    switch($.data(DOMFirstObj,"toggle")){
                        case"fade":
                            Obj.eq(Args.index).css({
                                opacity:0
                            });
                            Obj.eq(Args.index).animate({
                                opacity:1
                            },Args.speed);
                            if($.data(DOMFirstObj,"index")!=Args.index){
                                Obj.eq($.data(DOMFirstObj,"index")).animate({
                                    opacity:0
                                },Args.speed,function(){
                                    $(this).css("left",-999);
                                    Callback()
                                })
                            }
                            break;
                        case"toggle":
                            if($.data(DOMFirstObj,"index")!=Args.index){
                                Obj.eq(Args.index).css({
                                    display:"none"
                                });
                                Obj.eq($.data(DOMFirstObj,"index")).slideUp(Args.speed,function(){
                                    Obj.eq(Args.index).slideDown(Args.speed,function(){
                                        Callback()
                                    });
                                    $(this).css("left",-999)
                                })
                            }
                            break;
                        case"show":
                            if($.data(DOMFirstObj,"index")!=Args.index){
                                Obj.eq(Args.index).css({
                                    display:"none"
                                });
                                Obj.eq($.data(DOMFirstObj,"index")).hide(Args.speed,function(){
                                    Obj.eq(Args.index).show(Args.speed,function(){
                                        Callback()
                                    });
                                    $(this).css("left",-999)
                                })
                            }
                            break;
                        case"noeffect":
                            if($.data(DOMFirstObj,"index")!=Args.index){
                                Obj.eq($.data(DOMFirstObj,"index")).css("left",-999);
                                Callback()
                            }
                            break
                    }
                    break;
                case"table":
                    var cols=$.data(DOMFirstObj,"cols");
                    var nextX=-(Args.index%cols)*Obj.width();
                    var nextY=-Math.floor(Args.index/cols)*Obj.height();
                    WraperObj.animate({
                        left:nextX
                    },Args.speed,Args.easeType,function(){
                        WraperObj.animate({
                            top:nextY
                        },Args.speed,Args.easeType,Callback())
                    });
                    break;
                default:
                    $("html,body").animate({
                        scrollTop:Obj.eq(Args.index).offset().top
                    },Args.speed);
                    break
            }
        };

        moveStep=function(){
            var currentIdx=$.data(DOMFirstObj,"index");
            Args.index=parseInt(currentIdx)+parseInt(Args.step);
            moveTo()
        };

        startAuto=function(){
            $.data(DOMFirstObj,"AutoSwitch",setInterval(moveStep,Args.interval))
        };

        stopAuto=function(){
            clearInterval($.data(DOMFirstObj,"AutoSwitch"));
            $.removeData(DOMFirstObj,"AutoSwitch")
        };

        toggleAuto=function(){
            if(isAuto()){
                stopAuto()
            }else{
                startAuto()
            }
        };

        isAuto=function(){
            if($.data(DOMFirstObj,"AutoSwitch")){
                return true
            }else{
                return false
            }
        };

        if(!command){
            command=""
        }
        switch(command.toLowerCase()){
            case"index":
                if($.data(DOMFirstObj,"index")){
                    return $.data(DOMFirstObj,"index")
                }else{
                    return 0
                }
                break;
            case"moveto":
                moveTo();
                break;
            case"movestep":
                moveStep();
                break;
            case"destroy":
                backFromCache();
                break;
            case"create":
                createTab();
                break;
            case"isauto":
                return isAuto();
                break;
            case"toggleauto":
                toggleAuto();
                break;
            case"startauto":
                startAuto();
                break;
            case"stopauto":
                stopAuto();
                break
        }
    }
})(jQuery);


/* ------------------------------------------------- :) -----------------------------------------------------------------*/
jQuery(document).ready (function() {

    /* Abre links com rel="external" em outro janela do navegador */
    jQuery('a[rel=external], .comment a[rel=nofollow]').attr('target','_blank');
	
    // Tabela zebra
    $(".musica tbody tr:odd").addClass("corUm");
    $(".musica tbody tr:even").addClass("corDois");

    // jCaroussel
    jQuery('.photo .slider').jcarousel({
        scroll: 1
    });
    jQuery('.agenda ul').jcarousel({
        scroll: 1
    });
    jQuery('.videosRelacionados .slider').jcarousel({
        scroll: 6
    });
    jQuery('.fotoSlide .slider').jcarousel();
    jQuery(".agenda li:last").addClass('last');
		
    // Forms
    jQuery('input.txtfield, .comentar').prev("label").css('display' , 'none');
    jQuery("input.txtfield, .comentar").each(function(e) {
        jQuery(this).attr("value", jQuery(this).prev("label").text());
        jQuery(this).focus(function() {
            if( jQuery(this).prev("label").text() == jQuery(this).attr("value") ) {
                jQuery(this).attr("value", "");
            }
        });
        jQuery(this).blur(function() {
            if( jQuery(this).attr("value") == "" )
                jQuery(this).attr("value", jQuery(this).prev("label").text());
        });
    });			
});

function preencheIdMusica(idMusica){
    $('#idMusica').val(idMusica);
}

function enviarIndicacao(idMusica){
    if($('#seuNome').val() != 'Seu nome' && $('#seuEmail').val() != 'Seu e-mail' && $('#nomeAmigo').val() != 'Nome do(a) amigo(a)' && $('#emailAmigo').val() != 'E-mail do(a) amigo(a)'){
        jQuery.post(LINK_BASE+'musicas/ajaxindicacao', {
            'idMusica':$('#idMusica').val(),
            'seuNome':$('#seuNome').val(),
            'seuEmail':$('#seuEmail').val(),
            'nomeAmigo':$('#nomeAmigo').val(),
            'emailAmigo':$('#emailAmigo').val()
        }, function(data) {
            if(data != 'erro'){
                $('#retorno').html('Indicação enviada com sucesso!');
                return true;
            }else{
                $('#retorno').html('Tente novamente mais tarde');
                return false;
            }
        });
    } else {
        return false;
    }
}

function enviarCarteirinha(){

    jQuery.post(LINK_BASE+'index/ajax.carteirinha', {
        'nome':$('#nome').val(),
        'mail':$('#mail').val(),
        'cidade':$('#cidade').val(),
        'date':$('#date').val(),
        'check':$('#check').val()
    }, function(data) {
        if(data != 'erro'){
            $('#retorno').html('Indicação enviada com sucesso!');
        }else{
            $('#retorno').html('Tente novamente mais tarde');
        }
    });
}
function enviarEmail(){
    jQuery.post(LINK_BASE+'contato/ajax.envia', {
        'nome':$('#nome').val(),
        'email':$('#email').val(),
        'cidade':$('#cidade').val(),
        'telefone':$('#telefone').val(),
        'mensagem':$('#mensagem').val()
    }, function(data) {
        if(data != 'erro'){
            $('#retorno').html('Indicação enviada com sucesso!');
        }else{
            $('#retorno').html('Tente novamente mais tarde');
        }
    });
}

/* onFocus('this.id','http:/* '); */
function onFocus(name,valorF) {
    var id = document.getElementById(name);
    if (id.value == '')	{
        id.value = valorF;
    }
}

/* onBlur('this.id','http:/* '); */
function onBlur(name,valorF) {
    var id = document.getElementById(name);
    if (id.value == valorF) {
        id.value = '';
    }
}

var formatoData = 'd/m/Y';
var mensagemErro = "Campos em destaque contém valores inválidos ou sem preenchimento";
var mensagemErroEmail = "E-mail inválido";

/* Validacao de formulario de contato entre outros */
(function($) {
    $.fn.validate = function(args) {
        var options = $.extend({}, $.fn.validate.defaults, args);
        var jQ = jQuery;
        return this.each(function() {
            jQ(this).submit(function() {
                var valid=true;
                var validEmail=true;
                jQ(this).find(".validate").each(function() {
                    el = jQ(this);
                    var filtro = false;
                    if('filtro_' == el[0].name.substr(0, 7)) {
                        filtro = true;
                    }
                    el[0].setAttribute("style", "color: #999999");
                    if(el.hasClass("email")) {
                        if(el.val() == el.prev("label").text()) {
                            add_error(el,filtro);
                            valid=false;
                        }else{
                            if(!valid_email(el.val())) {
                                add_error(el,filtro);
                                validEmail=false;
                                valid=false;
                            }
                        }
                    }
                    if(el.hasClass("date")) {
                        if(!valid_required(el.val())) {
                            add_error(el,filtro);
                            valid=false;
                        }else{
                            if(!valid_date(el.val(), formatoData)) {
                                add_error(el,filtro);
                                valid=false;
                            }
                        }
                    }
                    if(el.hasClass("number")) {
                        if(!valid_required(el.val())) {
                            add_error(el,filtro);
                            valid=false;
                        }else{
                            if(!valid_number(el.val())) {
                                add_error(el,filtro);
                                valid=false;
                            }
                        }
                    }
                    if(el.hasClass("required")) {
                        if(!valid_required(el.val())) {
                            add_error(el,filtro);
                            valid=false;
                        }else{
                            if(el.val() == el.prev("label").text()) {
                                add_error(el,filtro);
                                valid=false;
                            }
                        }
                    }
                });
                if(valid == false) {
                    if(validEmail == false) {
                        $("#mensagem_erro").html(mensagemErroEmail);
                        $("#mensagem_erro").attr("style", "color:#FFF000; display: block");
                    }else{
                        $("#mensagem_erro").html(mensagemErro);
                        $("#mensagem_erro").attr("style", "color:#FFF000; display: block");
                    }
                    $('html, body').animate({
                        scrollTop: $(".error").offset().top
                    }, 1500);
                }
                return valid;
            });
        });
    };
    /* Destaca campo com erro */
    function add_error(el,filtro) {
        if(!filtro) {
            el[0].setAttribute("style", "color: #CE0506");
        }
    }
    function valid_email(email) {
        var email_pattern  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if(email.match(email_pattern)) return true;
        if(email == '') {
            return false;
        }
        return false;
    }
    function valid_number(number) {
        var number_pattern = /^([0-9\s])+$/;
        if(number.match(number_pattern)) {
            return true;
        }
        if(number == '') {
            return true;
        }
        return false;
    }
    function valid_required(val) {
        if(val.length>0) {
            return true;
        }else{
            return false;
        }
    }
    function valid_date(date_passed, date_format) {
        var date_pattern = null;
        if(date_format == "m/d/Y") date_pattern  = /(0[1-9]|1[012])+\/(0[1-9]|[12][0-9]|3[01])+\/(19|20)\d\d/;
        if(date_format == "m-d-Y") date_pattern  = /(0[1-9]|1[012])+\/(0[1-9]|[12][0-9]|3[01])+\/(19|20)\d\d/;
        if(date_format == "d/m/Y") date_pattern  = /(0[1-9]|[12][0-9]|3[01])+\/(0[1-9]|1[012])+\/(19|20)\d\d/;
        if(date_format == "d-m-Y") date_pattern  = /(0[1-9]|[12][0-9]|3[01])+\/(0[1-9]|1[012])+\/(19|20)\d\d/;
        if(date_passed.match(date_pattern)) return true;
        if(date_passed == '') {
            return true;
        }
        return false;
    }
})(jQuery);

jQuery(document).ready (function() {
    //jQuery("form.validate").validate();
});
