$(function(){

    var commentsScrollSettings = {
        scrollbarWidth:4,
        dragMinHeight:40,
        dragMaxHeight:40
    };
	
	$('#sneak-peek').dxSlider();
	
	// smooth hover effect based on animated opacity
	// 01/09/09
	jQuery.fn.RX_smoothHover = function() {
		return this.each(function() {
			$(this).hover(
				function() { $(this).animate({opacity:1}, 'fast'); },
				function() { $(this).animate({opacity:0}, 79); }
			);
		});
	}
	// 	
	
	$('#searchtop').find('input[type=text]').labelify();

	//$('#contact').find('input[type=text]').labelify();
	
	$('#contact label').inFieldLabels();

    $("a[rel=external]").attr('target', '_blank');
	
	$('.image-preview div').click(function() {
			$(this).parent().parent().parent().find('a.toggle').trigger('click');
	});
	
	$('.rx-smhover a img').RX_smoothHover();
	
    $('.info-comments .list').jScrollPane(commentsScrollSettings);

    $('.add-comment').click(function(){
			if ( $(this).parents().hasClass('open-post') ) {
				$(this).parents().find('.comment-n-share').scrollTo();
				return false;
			} else {
				$(this).parent().parent().parent().parent().find('a.toggle').trigger('click');
				$(this).parent().parent().find('.comment-n-share').scrollTo();
				return false;
			}
    });
	
   //var _post = $('#post');
    var _posts = $('div.post');

    var _post = $('#post');
	
	//$('#post').parents().find('a.toggle').trigger('click');

    var init_multi_posts = function() {
        _posts.find('a.toggle').click(function(e, isComment){
            e.preventDefault();

            var fn = $(this);
            var post = fn.parents('div.post');
            var more = post.find('div.more');

            function _init_more() {
                more.slideDown(400, function(){
                    post.find('.comments .list').jScrollPane({
                        scrollbarWidth:4,
                        dragMinHeight:31,
                        dragMaxHeight:31
                    });

                    if (isComment) {
                        post.find('div.postmeta').scrollTo();
                    } else {
                        post.scrollTo();
                    }
                });
            }

            if (more.is(':visible')) {
                more.hide();
                post.removeClass('open-post');
				post.find('.opener').html('open post');
            } else {
                // close other posts
                post.addClass('open-post')
                    .siblings('.open-post').find('a.toggle').trigger('click');
                // load post into more
                if (!post.hasClass('content-loaded')) {
                    var loading = post.find('div.loading');
                    fn.hide();
                    loading.show();
                    more.load(_template_dir + '/load-post.php?id=' + fn.attr('rel'), function(){
                        post.addClass('content-loaded');
                        _init_more();
                        _init_comment_form(more.find('form'));
                        loading.hide();
                        fn.show();
                    });
                } else {
                    _init_more();
                }
				post.find('.opener').html('close post');
            }
        });

        /*_posts.find('.obertka').click(function(){
			alert('test');
            $(this).parent().find('a.toggle').trigger('click');
        });*/
    }

    function init_single_post()
    {
        _posts.find('.comments .list').jScrollPane({
            scrollbarWidth:7,
            dragMinHeight:31,
            dragMaxHeight:31
        });		
    }
    if (_post.length) {
        //init_single_post();
        init_multi_posts();
		_post.find('a.toggle').trigger('click');
    } else if (_posts.length) {
        init_multi_posts();
    }

    if (_posts.length) {
        _posts.find('.meta .buttons a.comment').live('click', function(){
            var fn = $(this);
            var meta = fn.parents('div.meta');
            var comment = meta.find('form.comment-form');
            comment.slideToggle();
            return false;
        });

        _posts.find('.open-comments a').click(function(){
            var fn = $(this);
            var post = fn.parents('div.post');
            var meta = post.find('div.postmeta');
            if (!post.find('.more').is(':visible')) {
                post.find('div a.toggle').trigger('click', [true]);
            } else {
                meta.scrollTo();
            }
            return false;
        });

        // validate comment forms
        var validateOptions = {
            rules:{
                author:{required:true, minlength:2},
                email:{required:true, email:true},
                comment:{required:true}
            },
            messages:{
                author:{required:'Please provide your name'},
                email:{required:'Please provide your correct email address'},
                comment:{required:'Please provide your message'}
            },
            ignoreTitle: true,
            onkeyup: false,
            onfocusout: false,
            showErrors:function(errorMap, errorList){
                $.each(errorList, function(key, elm){
                    $(elm.element)
                       .animate( {opacity: 0.2}, 175 )
                       .animate( {opacity: 1}, 150 )
                       .animate( {opacity: 0.2}, 150 )
                       .animate( {opacity: 1}, 150 )
                       .animate( {opacity: 0.2}, 150 )
                       .animate( {opacity: 1}, 150 );
                });
            },
            submitHandler:function(form){
				var form = $(form);
				var post = form.parents('div.post');
				var comments = post.find('div.comments div.list ul');
				var messages = post.find('div.messages');
				var loading = messages.find('div.loading');
				var post_id = form.find('input[name=comment_post_ID]').val();
				var link = form.attr('action');
				var loadLink = link.replace('wp-comments-post.php', 'wp-content/themes/thomas/comments-ajax.php?id=' + post_id + '&type=comments')
				//loading.show();
				form.ajaxSubmit({
					success:function(){
						if (!comments.length) {
							messages.before('<div class="comments"><div class="list"><ul></ul></div></div>');
							post.find('div.comments').show();
							comments = post.find('div.comments div.list ul');
						}
						messages.hide().html('Thank you for commenting!').slideDown('fast');
						loading.hide();
						window.setTimeout(function(){messages.html('<div class="loading"></div>')}, 10000);
	
						form.clearForm();
						form.find('div.say').show();
	
						$('div.post form').find('input[type=text], textarea').labelify();
						$('div.post form').find('input[name=url]').val('http://');
	
						//comments.load(loadLink);
						comments.load(loadLink, {}, function(){
							if (!comments.is(':visible')) {
								comments.show();
							}
							var commentsList = comments.parent();
							commentsList.jScrollPane(commentsScrollSettings);
							comments.scrollTo();
						});
	
					},
					error:function(request){
						var error = request.responseText.match(/<p>([^<]+)<\/p>/)[1];
						error = error.split(";");
						messages.hide().html("&nbsp;"+error[0]+"!").slideDown('fast');
						window.setTimeout(function(){messages.html('<div class="loading"></div>')}, 10000);
						form.find('div.say').show();
					}				
				});
			},
            invalidHandler: function(form) {
                $(form.currentTarget).find("input[type=text], textarea").blur();
            }			
		};

        function _init_comment_form(form) {
            $(form).find('input[type=text], textarea').labelify();
            $(form).validate(validateOptions);
        }

        $('div.post form.comment-form').each(function(key, form){
            _init_comment_form(form);
        });


        // image voting
        /*var voteForImage = function() {
            var fn = $(this);
            var link = fn.attr('href');
            var votesHandler = fn.parent().find('.votes em');
            fn.remove();
            $.get(link, {}, function(data){
                if (data != 'error') {
                    votesHandler.text(data);
                }
            });
            return false;
        }
        $('div.post .vote-image a').live('click', voteForImage);*/
    }

    /**** ARCHIVES*/
    function initArchives()
    {
        var archives = $('#archives');
        var arrows = archives.find('a.up, a.down');
        var years = archives.find('div.years > ul');

        years.filter(':last').show();

        arrows.click(function(){

            var fn = $(this);
            var o = years.filter(':visible');
            var n;

            if (fn.hasClass('up')) {
                n = o.next();
            } else {
                n = o.prev();
            }

            if (n.length) {
                o.hide();
                n.show();
            }

            return false;
        });
    }

    initArchives();
 
    /***** /MENU *****/
	$('#menu li ul').hide();
	$('#menu li.categories').hover(
      function(){		  
            $('ul.categories').show();
        },
        function(){
            $('ul.categories').hide();
        }	
	);

	$('#menu li.links').hover(
      function(){		  
            $('ul.links').show();
        },
        function(){
            $('ul.links').hide();
        }	
	);


    $('.search').hover(
        function(){
            $('#search').fadeIn('fast');
        },
        function(){
            $('#search').fadeOut('fast');
        }
    );

});


/*
 * In-Field Label jQuery Plugin
 * http://fuelyourcoding.com/scripts/infield.html
 *
 * Copyright (c) 2009 Doug Neiner
 * Dual licensed under the MIT and GPL licenses.
 * Uses the same license as jQuery, see:
 * http://docs.jquery.com/License
 *
 * @version 0.1
 */
(function($){$.InFieldLabels=function(label,field,options){var base=this;base.$label=$(label);base.$field=$(field);base.$label.data("InFieldLabels",base);base.showing=true;base.init=function(){base.options=$.extend({},$.InFieldLabels.defaultOptions,options);base.$label.css('position','absolute');var fieldPosition=base.$field.position();base.$label.css({'left':fieldPosition.left,'top':fieldPosition.top}).addClass(base.options.labelClass);if(base.$field.val()!=""){base.$label.hide();base.showing=false;};base.$field.focus(function(){base.fadeOnFocus();}).blur(function(){base.checkForEmpty(true);}).bind('keydown.infieldlabel',function(e){base.hideOnChange(e);}).change(function(e){base.checkForEmpty();}).bind('onPropertyChange',function(){base.checkForEmpty();});};base.fadeOnFocus=function(){if(base.showing){base.setOpacity(base.options.fadeOpacity);};};base.setOpacity=function(opacity){base.$label.stop().animate({opacity:opacity},base.options.fadeDuration);base.showing=(opacity>0.0);};base.checkForEmpty=function(blur){if(base.$field.val()==""){base.prepForShow();base.setOpacity(blur?1.0:base.options.fadeOpacity);}else{base.setOpacity(0.0);};};base.prepForShow=function(e){if(!base.showing){base.$label.css({opacity:0.0}).show();base.$field.bind('keydown.infieldlabel',function(e){base.hideOnChange(e);});};};base.hideOnChange=function(e){if((e.keyCode==16)||(e.keyCode==9))return;if(base.showing){base.$label.hide();base.showing=false;};base.$field.unbind('keydown.infieldlabel');};base.init();};$.InFieldLabels.defaultOptions={fadeOpacity:0.5,fadeDuration:300,labelClass:'infield'};$.fn.inFieldLabels=function(options){return this.each(function(){var for_attr=$(this).attr('for');if(!for_attr)return;var $field=$("input#"+for_attr+"[type='text'],"+"input#"+for_attr+"[type='password'],"+"textarea#"+for_attr);if($field.length==0)return;(new $.InFieldLabels(this,$field[0],options));});};})(jQuery);

/* load flash movie */
function loadFlashMovie()
    {
      var args = loadFlashMovie.arguments;
      var argc = args.length;
      if( argc>0 )
      {
            var flash = eval('(' + args[0] + ')');
      }
      else
      {
        var flash = {"movie":
                [
                      {
                            "name": "logo",
                            "filename": "http://www.tomsandersonphotography.com/logo.swf",
                            "path": "",
                            "width": "400",
                            "height": "160",
                            "bgcolor": "#000000",
                            "menu": "false",
                            "play": "true",
                            "loop": "true",
                            "quality": "best",
                            "allowScriptAccess": "sameDomain",
                            "type": "application/x-shockwave-flash",
                            "codebase":"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab",
                            "pluginspage": "http://www.macromedia.com/go/getflashplayer",
                            "flashVars": "",
                            "pCaption": ""
                      }
                ]
              };
      }

      var movnum = flash.movie.length;

      for (var i = 0; i < movnum; i++ )
      {

              var html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
                    + 'width="' + flash.movie[i].width + '" height="' + flash.movie[i].height + '"'
                    + 'codebase="' + flash.movie[i].codebase + '">'
                    + '<param name="wmode" value="transparent">'
                    + '<param name="movie" value="' + flash.movie[i].path + flash.movie[i].filename + '" />'
                    + '<param name="menu" value="' + flash.movie[i].menu + '" />'
                    + '<param name="quality" value="' + flash.movie[i].quality +'" />'
                    + '<param name="bgcolor" value="' + flash.movie[i].bgcolor + '" />';

              if(flash.movie[i].flashVars.length>0)
                    {
                            html = html + '<param name="FlashVars" VALUE="' + flash.movie[i].flashVars + '" />';
                    }

              html = html + '<embed src="' + flash.movie[i].path + flash.movie[i].filename + '" ';

              if(flash.movie[i].flashVars.length>0)
                    {
                            html = html + 'FlashVars="' + flash.movie[i].flashVars + '"';
                    }

              html = html + '" menu="' + flash.movie[i].menu + '" quality="' + flash.movie[i].quality + '" bgcolor="' + flash.movie[i].bgcolor + '" '
                    + 'width="' + flash.movie[i].width + '" height="' + flash.movie[i].height + '" name="' + flash.movie[i].name + '" align="top"'
                    + 'play="' + flash.movie[i].play + '"'
                    + 'loop="' + flash.movie[i].loop + '"'
                    + 'quality="' + flash.movie[i].quality + '"'
                    + 'allowScriptAccess="' + flash.movie[i].allowScriptAccess + '"'
                    + 'type="' + flash.movie[i].type + '"'
                    + 'wmode="transparent"'
                    + 'pluginspage="' + flash.movie[i].pluginspage + '">'
                    + '<\/embed>'
                    + '<\/object>'
                    //+ '<p>'+ flash.movie[i].pCaption +'.<\/p>';

              document.getElementById(flash.movie[i].name).innerHTML = html;

       } //for

} //loadFlashMovie()

jQuery.fn.extend({
	everyTime: function(interval, label, fn, times, belay) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times, belay);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		guid: 1,
		global: {},
		regex: /^([0-9]+)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseInt(result[1], 10);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times, belay) {
			var counter = 0;

			if (jQuery.isFunction(label)) {
				if (!times)
					times = fn;
				fn = label;
				label = interval;
			}

			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}

			times = times || 0;
			belay = belay || false;

			if (!element.$timers)
				element.$timers = {};

			if (!element.$timers[label])
				element.$timers[label] = {};

			fn.$timerID = fn.$timerID || this.guid++;

			var handler = function() {
				if (belay && this.inProgress)
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};

			handler.$timerID = fn.$timerID;

			if (!element.$timers[label][fn.$timerID])
				element.$timers[label][fn.$timerID] = window.setInterval(handler,interval);

			if ( !this.global[label] )
				this.global[label] = [];
			this.global[label].push( element );

		},
		remove: function(element, label, fn) {
			var timers = element.$timers, ret;

			if ( timers ) {

				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.$timerID ) {
							window.clearInterval(timers[label][fn.$timerID]);
							delete timers[label][fn.$timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}

					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}

				for ( ret in timers ) break;
				if ( !ret )
					element.$timers = null;
			}
		}
	}
});

if (jQuery.browser.msie)
	jQuery(window).one("unload", function() {
		var global = jQuery.timer.global;
		for ( var label in global ) {
			var els = global[label], i = els.length;
			while ( --i )
				jQuery.timer.remove(els[i], label);
		}
	});


/*!
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */

(function($){$.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);




