(function($){$.fn.jqFlick=function(options){options=$.extend({width:500,height:500,maxFetch:50,captions:false,autoAdvance:false,advancePeriod:5000,apiKey:''},options);var YQL='http://query.yahooapis.com/v1/public/yql?q={QUERY}&format=json&callback=?',query="SELECT * FROM flickr.photosets.photos({MAX}) WHERE photoset_id='{PHOTOSET}' AND api_key='{KEY}'";YQL=templateReplace(YQL,{"query":encodeURIComponent(templateReplace(query,{photoset:options.photosetID,max:options.maxFetch,key:options.apiKey}))});var flickrSRC='http://farm{FARM}.static.flickr.com/{SERVER}/{ID}_{SECRET}.jpg',flickrSlider=this;flickrSlider.trigger('jqFlickRemove');$.getJSON(YQL,function(r){if(!r||!r.query||!r.query.count){throw"There is no such photoset!";}var currentPos=1,cnt=r.query.count;var caption=$('<span>',{className:'caption'}).appendTo(flickrSlider);var ul=$('<ul>',{css:{width:options.width*r.query.count,height:options.height}});$.each(r.query.results.photo,function(){data=this;$('<li>',{css:{backgroundImage:'url('+templateReplace(flickrSRC,data)+')',width:options.width}}).appendTo(ul)});flickrSlider.addClass('flickrSliderHolder').width(options.width).height(options.height+25).append(ul);flickrSlider.bind('slide',function(e,slide){if(slide<1||slide>cnt||ul.is(':animated')){return false}ul.animate({left:-(slide-1)*options.width},{easing:'easeInOutCirc',duration:300});if(options.captions){caption.fadeOut(150,function(){caption.html(r.query.results.photo[slide-1].title)}).fadeIn(150)}currentPos=slide});var arrows=$('<div>',{className:'arrows'});var arrowPrev=$('<a>',{className:'previous',href:'#',click:function(){var toShow=currentPos-1;if(toShow<1){toShow=cnt}flickrSlider.trigger('slide',[toShow]);return false}}).appendTo(arrows);var arrowNext=$('<a>',{className:'next',href:'#',click:function(){var toShow=currentPos+1;if(toShow>cnt){toShow=1}flickrSlider.trigger('slide',[toShow]);return false}}).appendTo(arrows);arrows.appendTo(flickrSlider);flickrSlider.trigger('slide',[1]);if(options.autoAdvance){$(window).load(function(){$.fn.jqFlick.timeOut=null;arrowPrev.add(arrowNext).click(function(e,simulated){if(!simulated){clearTimeout($.fn.jqFlick.timeOut)}});(function autoAdvance(){if($.fn.jqFlick.timeOut){arrowNext.trigger('click',[true])}$.fn.jqFlick.timeOut=setTimeout(autoAdvance,options.advancePeriod)})()})}});flickrSlider.bind('jqFlickRemove',function(){if($.fn.jqFlick.timeOut){clearTimeout($.fn.jqFlick.timeOut)}flickrSlider.empty().unbind('jqFlickRemove slide')});return flickrSlider};function templateReplace(template,data){return template.replace(/{([^}]+)}/g,function(match,group){return data[group.toLowerCase()]})}$.easing.easeInOutCirc=function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b}})(jQuery);
