/**
 * The Flowerpot
 *
 * A jQuery plugin to overlay images, inline content, and more.
 * Dual-licensed under the MIT and GPL (v2 or later) licenses.
 *
 * Copyright (c) 2010, Matthew Riley MacPherson
 * Dual-licensed under the MIT and GPL (v2 or later) licenses.
 * http://github.com/tofumatt/jquery.flowerpot/
 */
// HTML plants in an overlayed pot!
(function(b){b.the_flowerpot=new function(){this.l={ajax_error:"An error occurred during the request.",close:"Close",loading:'Loading... "Esc" to close',next:"Next \u2192",previous:"\u2190 Previous"};this.p={ajax:false,desc:false,dom_img:0,gal_i:0,gal_s:false,gal_size:0,old_set:false,overlay:false,ready:false,rel:"",size:{},slow_anim:false,speed:0,src:false,type:"image"};this.s={anim_speed:500,anim_multiplier:3,aux_opacity:0.75,detect_type:true,gallery_thumbnails:false,overlay_opacity:0.5,thumbnail_height:40}};
var a=b.the_flowerpot;a.close=function(){a.p.ready=false;a.p.dom_img=0;var d=b("#flowerpotjs-contents"),f=b(".flowerpotjs-gallery-link,.flowerpotjs-gallery-link-bg,.flowerpotjs-gallery-index-link"),g=b("object,embed"),c=b("#flowerpotjs-overlay");a.p.speed=a.p.slow_anim?a.s.anim_speed*a.s.anim_multiplier:a.s.anim_speed;a.p.gal_size=0;if(a.p.type=="div")a.p.ajax?b("#flowerpotjs-div-inline").empty():b(a.p.src).swap("#flowerpotjs-div-swap");b("#flowerpotjs-media").empty();b.browser.msie&&b.browser.version<
8&&g.css("visibility","visible");d.fadeOut(a.p.speed);f.dequeue();f.fadeOut(a.p.speed);d.queue(function(){d.dequeue();b("#flowerpotjs-contents").empty();b("#flowerpotjs-controls").remove();c.fadeOut(a.p.speed)});c.queue(function(){c.dequeue();if(b.browser.msie&&b.browser.version<8||b.browser.opera)g.css("visibility","visible");b("body").removeClass("flowerpot-active");if(a.p.old_set){b.extend(a.s,a.p.old_set);a.p.old_set=false}a.p.overlay=false})};a.detect_type=function(d,f){var g="image";if(a.s.detect_type)g=
d.match(/\.(png|jpg|jpeg|gif|bmp)/i)?"image":!d.match(/^.*:\/\/.*/i)||d.match(window.location.host)?"div":d.match(/vimeo\.com/i)?"vimeo":d.match(/youtube\.com/i)?"youtube":"iframe";if(f.match(/image/i))g="image";else if(f.match(/div/i))g="div";else if(f.match(/iframe/i))g="iframe";else if(f.match(/vimeo/i))g="vimeo";else if(f.match(/youtube/i))g="youtube";return g};a.ie6_resize_overlay=function(){var d=b("#flowerpotjs-overlay");d.css("height",b().height());d.css("width",b(window).width())};a.image=
function(){a.p.dom_img=new Image;b(a.p.dom_img).load(function(){a.resize("#flowerpotjs-image")});a.p.dom_img.src=b("#flowerpotjs-image").attr("src")};a.init=function(d,f){b.extend(a.l,f);b.extend(a.s,d);var g='<div id="flowerpotjs-overlay" style="display:none;"><span style="display:none;">'+a.l.loading+'</span></div><div id="flowerpotjs-contents" style="display:none;"></div>';b("body").append(g);b("#flowerpotjs-overlay").css({opacity:0});b("#flowerpotjs-overlay span").css({"-moz-border-radius":"3px",
"-webkit-border-radius":"2px"});b("#flowerpotjs-close,#flowerpotjs-overlay").live("click",function(c){if(c.shiftKey)a.p.slow_anim=true;if(c.button==0&&a.p.ready){a.close();b(this).trigger("blur");c.preventDefault()}a.p.slow_anim=false});b(".flowerpot").live("click",function(c){if(!a.p.overlay){if(c.shiftKey)a.p.slow_anim=true;if(c.button==0){a.p.rel=b(this).attr("rel");if(a.p.rel.match(/gallery\[([^ ]*)\]/i)){var i=a.p.rel.replace(/.*(gallery\[([^ ]*)\]).*/i,"$1");a.p.gal_s=b('.flowerpot[rel*="'+
i+'"]');a.p.gal_i=a.p.gal_s.index(this);a.p.gal_size=a.p.gal_s.length}b(this).flowerpot();b(this).trigger("blur");c.preventDefault()}a.p.slow_anim=false}});b("#flowerpotjs-prev-link").live("click",function(c){if(c.shiftKey)a.p.slow_anim=true;a.p.rel=b(this).attr("rel");a.p.ready&&a.p.gal_size>0&&c.button==0&&a.gallery_move("prev");a.p.slow_anim=false;b(this).trigger("blur");c.preventDefault()});b("#flowerpotjs-next-link").live("click",function(c){if(c.shiftKey)a.p.slow_anim=true;a.p.rel=b(this).attr("rel");
a.p.ready&&a.p.gal_size>0&&c.button==0&&a.gallery_move("next");a.p.slow_anim=false;b(this).trigger("blur");c.preventDefault()});b(".flowerpotjs-gallery-index-link").live("click",function(c){if(c.shiftKey)a.p.slow_anim=true;a.p.rel=b(this).attr("rel");a.p.ready&&a.p.gal_size>0&&c.button==0&&a.gallery_move(a.p.rel.replace(/.*gid\[(\d*)\].*/i,"$1"));a.p.slow_anim=false;b(this).trigger("blur");c.preventDefault()});b().keydown(function(c){var i=false;if(c.shiftKey)a.p.slow_anim=true;switch(c.keyCode){case 27:if(a.p.ready||
a.p.overlay){a.close();i=true}break;case 35:if(a.p.ready&&a.p.gal_size>0){a.gallery_move(a.p.gal_size-1);i=true}break;case 36:if(a.p.ready&&a.p.gal_size>0){a.gallery_move(0);i=true}break;case 37:if(a.p.ready&&a.p.gal_size>0){a.gallery_move("prev");i=true}break;case 39:if(a.p.ready&&a.p.gal_size>0){a.gallery_move("next");i=true}break}i&&c.preventDefault();a.p.slow_anim=false});b(window).resize(function(c){if(a.p.ready){if(a.p.type=="image")a.resize("#flowerpotjs-image");else if(a.p.type=="div")a.resize("#flowerpotjs-div-inline");
else a.p.type=="iframe"&&a.resize("#flowerpotjs-iframe-inline");b.browser.msie&&b.browser.version<7&&a.ie6_resize_overlay();c.preventDefault()}})};a.gallery_move=function(d){if(d===a.p.gal_i)return false;b("#flowerpotjs-contents").hide();a.p.ready=false;switch(d){case "prev":a.p.gal_i--;if(a.p.gal_i<0)a.p.gal_i=a.p.gal_size-1;break;case "next":a.p.gal_i++;if(a.p.gal_i>=a.p.gal_size)a.p.gal_i=0;break;default:a.p.gal_i=d;break}a.p.src&&!a.p.ajax&&a.p.type=="div"&&b(a.p.src).swap("#flowerpotjs-div-swap");
a.p.gal_size>1&&a.s.gallery_thumbnails&&b("#flowerpotjs-controls-images li").removeClass("flowerpotjs-thumbnail-active").eq(a.p.gal_i).addClass("flowerpotjs-thumbnail-active");a.p.gal_s.eq(a.p.gal_i).flowerpot()};a.locale=function(d){b.extend(a.l,d)};a.resize=function(d,f){var g=b("#flowerpotjs-contents"),c=b("#flowerpotjs-description"),i=b("#flowerpotjs-controls-images"),e,l=b(d),h;e=b(window).height();var m=b(window).width();f||(f=a.p.size);var j=e-e/5,k=m-m/5;e=a.p.dom_img.height?a.p.dom_img.height:
j;h=a.p.dom_img.width?a.p.dom_img.width:k;e=f.height?f.height:e;h=f.width?f.width:h;if(a.p.dom_img.width&&f.width&&!f.height)e=a.p.dom_img.height/(a.p.dom_img.width/f.width);if(a.p.dom_img.height&&f.height&&!f.width)h=a.p.dom_img.width/(a.p.dom_img.height/f.height);if(h>k){e*=k/h;h=k;if(e>j){h*=j/e;e=j}}else if(e>j){h*=j/e;e=j;if(h>k){e*=k/h;h=k}}if(a.p.type=="iframe"){e-=10;h-=10}e=Math.round(e);h=Math.round(h);l.height(e+"px");l.width(h+"px");g.css({height:e+"px",width:h+"px"});b.browser.msie&&
b.browser.version<7?a.ie6_resize_overlay():g.css({"margin-top":"-"+e/2+"px","margin-left":"-"+h/2+"px"});if(a.p.desc){b("#flowerpotjs-description-bg").css({height:c.height()});b("#flowerpotjs-description,#flowerpotjs-description-bg").css({bottom:"-"+parseInt(c.height()+3)+"px"})}if(a.s.gallery_thumbnails&&a.p.gal_size>1)for(;i.width()>m;){i.height*=2;i.height+=2}};a.settings=function(d){b.extend(a.s,d)};a.show=function(){if(a.p.overlay){var d=b("#flowerpotjs-contents"),f=b("#flowerpotjs-close"),g=
b("#flowerpotjs-description"),c=b("#flowerpotjs-overlay span");if(b.browser.msie&&b.browser.version<8){b("object,embed").css("visibility","hidden");b("#flowerpotjs-contents object,#flowerpotjs-contents embed").css("visibility","visible")}c.fadeOut(a.p.speed);d.fadeIn(a.p.speed);b("#flowerpotjs-description,#flowerpotjs-description-bg").css({bottom:"-"+parseInt(g.height()+3)+"px"});f.css({right:"-"+parseInt(f.width()+15)+"px"});a.p.gal_size>1&&a.s.gallery_thumbnails&&b("#flowerpotjs-controls-images").css({display:"block",
opacity:a.s.aux_opacity}).children("li").eq(a.p.gal_i).addClass("flowerpotjs-thumbnail-active");g.length>0&&!(b.browser.msie&&b.browser.version==6)&&d.css({"margin-top":parseInt(d.css("margin-top"))-parseInt(g.height()*0.25+3)});b("#flowerpotjs-description-bg").css({height:parseInt(g.height())});d.queue(function(){d.dequeue();c.dequeue();c.hide()});a.p.ready=true}};b.fn.flowerpot=function(d,f){b.extend(true,a.p,{desc:false,dom_img:0,overlay:false,ready:false,rel:b(this).attr("rel"),size:{},src:false,
type:"image"});b.extend(true,a.p,f);a.p.src||(a.p.src=a.p.rel.match(/src\[([^ ]*)\]/i)?a.p.rel.replace(/.*src\[([^ ]*)\].*/i,"$1"):b(this).attr("href"));if(a.p.src&&a.p.src!="#"){a.p.old_set=!a.p.old_set&&d?b.extend(a.p.old_set,a.s):a.p.old_set;b.extend(a.s,d);a.p.type=a.detect_type(a.p.src,a.p.rel);var g={};if(a.p.rel.match(/height\[([^ ]*)\]/i))g.height=a.p.rel.replace(/.*height\[([^ ]*)\].*/i,"$1");if(a.p.rel.match(/width\[([^ ]*)\]/i))g.width=a.p.rel.replace(/.*width\[([^ ]*)\].*/i,"$1");b.extend(a.p,
{size:g});var c=b("#flowerpotjs-contents");g=b("#flowerpotjs-controls");b(".flowerpotjs-gallery-link,.flowerpotjs-gallery-link-bg");b("object,embed");var i=b("#flowerpotjs-overlay"),e="",l="",h,m,j,k,n;a.p.speed=a.p.slow_anim?a.s.anim_speed*a.s.anim_multiplier:a.s.anim_speed;if(!a.p.desc){a.p.desc=b("#"+b(this).attr("id")+"-flowerpot-description");a.p.desc=a.p.desc.length>0?a.p.desc.html():b(this).attr("title");if(a.p.desc.length==0&&a.p.type=="div")a.p.desc=b(a.p.src+"-flowerpot-description").html()}i.css({opacity:a.s.overlay_opacity});
i.fadeIn(parseInt(a.p.speed/2));i.queue(function(){i.dequeue();b("#flowerpotjs-overlay span").animate({opacity:1},a.p.speed).fadeIn(a.p.speed/5);b("body").addClass("flowerpot-active")});a.p.overlay=true;switch(a.p.type){case "div":e=a.p.src;if(e.substr(0,1)=="#"){e=e.substr(1,e.length-1);a.p.ajax=false}else a.p.ajax=true;e='<div id="flowerpotjs-div-inline"><div id="flowerpotjs-div-swap" style="display:none;"></div></div>';break;case "iframe":e='<iframe id="flowerpotjs-iframe-inline" src="'+a.p.src+
'"></iframe>';break;case "image":e='<img alt="Image overlay" src="'+a.p.src+'" id="flowerpotjs-image" />';break;case "vimeo":h=b.extend({width:400,height:300},a.p.size);a.p.src=a.p.src.replace(/https?:\/\/(www\.)?vimeo\.com\/(\d*)/i,"$2");e='<div id="flowerpotjs-media"><object id="flowerpotjs-media-vimeo" name="flowerpotjs-media-vimeo" width="'+h.width+'" height="'+h.height+'"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id='+
a.p.src+'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id='+a.p.src+'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+h.width+'" height="'+h.height+'"></embed></object></div>';break;case "youtube":h=b.extend({width:480,height:385},a.p.size);a.p.src=a.p.src.replace(/watch\?v=/i,
"v/");e='<div id="flowerpotjs-media"><object id="flowerpotjs-media-youtube" name="flowerpotjs-media-youtube" width="'+h.width+'" height="'+h.height+'"><param name="movie" value="'+a.p.src+'&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="'+a.p.src+'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="'+h.width+'" height="'+h.height+'"></embed></object></div>';break}if(g.length==
0&&a.p.gal_size>1){l='<div id="flowerpotjs-controls"><span id="flowerpotjs-prev-link-bg" class="flowerpotjs-gallery-link-bg"></span><a href="#prev" id="flowerpotjs-prev-link" class="flowerpotjs-gallery-link" rel="'+a.p.rel+'">'+a.l.previous+'</a><span id="flowerpotjs-next-link-bg" class="flowerpotjs-gallery-link-bg"></span><a href="#next" id="flowerpotjs-next-link" class="flowerpotjs-gallery-link" rel="'+a.p.rel+'">'+a.l.next+"</a>";if(a.s.gallery_thumbnails){l+='<ul id="flowerpotjs-controls-images">';
for(k=0;k<a.p.gal_size;k++){m=a.p.gal_s.eq(k);n=m.attr("rel");j=n.match(/src\[([^ ]*)\]/i)?n.replace(/.*src\[([^ ]*)\].*/i,"$1"):m.attr("href");switch(a.detect_type(j,n)){case "image":j='<img src="'+j+'" height="'+a.s.thumbnail_height+'" />';break;case "youtube":j='<img src="http://img.youtube.com/vi/'+j.replace(/.*v(=|\/)([^&#]*).*/i,"$2")+'/3.jpg" height="'+a.s.thumbnail_height+'" />';break;default:j='<span style="height:'+Math.round(a.s.thumbnail_height*0.75)+"px;padding-top:"+Math.round(a.s.thumbnail_height*
0.25)+'px;">'+parseInt(k+1)+"</span>";break}l+='<li><a href="'+m.attr("href")+'" rel="'+n+" gid["+k+']" class="flowerpotjs-gallery-index-link">'+j+"</a></li>"}l+="</ul>"}l+="</div>"}if(a.p.desc)e+='<div id="flowerpotjs-description-bg"><div class="flowerpot-description-inner"></div></div><div id="flowerpotjs-description"><div class="flowerpot-description-inner">'+a.p.desc+"</div></div>";e+='<a href="#close" id="flowerpotjs-close">'+a.l.close+"</a>";g.length==0&&a.p.gal_size>1&&c.after(l);if(b.browser.msie&&
b.browser.version<8){b("object,embed").css("visibility","hidden");b("#flowerpotjs-contents object,#flowerpotjs-contents embed").css("visibility","visible")}c.html(e).css({"-moz-border-radius":"2px","-webkit-border-radius":"1px"});b("#flowerpotjs-description-bg,.flowerpotjs-gallery-link-bg").css({opacity:a.s.aux_opacity});b("#flowerpotjs-close,#flowerpotjs-description,#flowerpotjs-description-bg").css({"-moz-border-radius":"3px","-webkit-border-radius":"2px"});b(".flowerpotjs-gallery-link,.flowerpotjs-gallery-link-bg").css({"-moz-border-radius":"3px",
"-webkit-border-radius":"2px"}).fadeIn(a.p.speed);switch(a.p.type){case "div":a.resize("#flowerpotjs-div-inline");a.p.ajax?b.ajax({type:"GET",async:false,url:a.p.src,dataType:"text",success:function(o){b("#flowerpotjs-div-inline").html(o)},error:function(){b("#flowerpotjs-div-inline").html(a.l.ajax_error)}}):b(a.p.src).swap("#flowerpotjs-div-swap");a.show();break;case "iframe":a.resize("#flowerpotjs-iframe-inline");a.show();break;case "image":if(b.browser.opera){a.image();a.show()}else b("#flowerpotjs-image").load(function(){a.p.type==
"image"&&a.image();b.browser.msie&&b.browser.version<=8?a.show():b(a.p.dom_img).load(function(){a.show()})});break;case "vimeo":a.resize("#flowerpotjs-media",h);a.show();break;case "youtube":a.resize("#flowerpotjs-media",h);a.show();break}c.queue(function(){c.dequeue();i.show()})}else{a.p.gal_size=0;a.p.type="image";a.close();throw"Attempted to load an overlay using The Flowerpot, but the src value was invalid or null.";}return this};b.fn.swap=function(d){d=b(d)[0];var f=this[0],g=f.parentNode.insertBefore(document.createTextNode(""),
f);d.parentNode.insertBefore(f,d);g.parentNode.insertBefore(d,g);g.parentNode.removeChild(g);return this};b().ready(function(){a.init()})})(jQuery);
