
(function($){var FLASH_VERSION_REQUIRED="9.0.0";var defaultOptions={maxwidth:800,maxheight:800};function getDimensions(width,height,maxwidth,maxheight){if(width<maxwidth&&height<maxheight){return[width,height];}
else if(width>height){return[width*maxwidth/width,height*maxwidth/width];}
else return[width*maxheight/height,height*maxheight/height];}
function extend(SuperCon,SubCon){SubCon.prototype=new SuperCon();}
function log(){if(window.console&&navigator.userAgent.match(/Firefox/)!==null){console.log.apply(this,arguments);}
else if(arguments[0]&&window.console){console.log(arguments[0].toString());}}
log();function Provider(id,urlSchemeStart){this.id=id;this.urlSchemeStart=urlSchemeStart;this.apiEndPoint='http://oohembed.com/oohembed/';}
Provider.prototype.handlesUrl=function(url){return url.indexOf(this.urlSchemeStart)===0;};Provider.prototype.embedLink=function(anchor,newOptions){var options=$.extend({},defaultOptions,newOptions);var url=this.apiEndPoint+'?url='+escape(anchor.attr('href'))+'&format=json'+'&maxwidth='+options.maxwidth+'&maxheight='+options.maxheight+'&callback=?';var provider=this;$.getJSON(url,function(data){provider.onJson(data,anchor,options);});};Provider.prototype.parseData=function(data){var parsedData={};parsedData.width=parseInt(data.width,10);parsedData.height=parseInt(data.height,10);return parsedData;};Provider.prototype.validateData=function(parsedData,options){for(var property in parsedData){if(parsedData.hasOwnProperty(property)){var value=parsedData[property];if((typeof value==="number"&&isNaN(value))||typeof value==="undefined"){return false;}}}
var dimensions=getDimensions(parsedData.width,parsedData.height,options.maxwidth,options.maxheight);parsedData.width=dimensions[0];parsedData.height=dimensions[1];if(options.controlerHeight){parsedData.height+=options.controlerHeight;}
return true;};Provider.prototype.onJson=function(data,anchor,options){var parsedData=this.parseData(data);if(this.validateData(parsedData,options)){this.render(parsedData,anchor,data,options);}
return parsedData;};Provider.prototype.render=function(parsedData,anchor,data,options){};function Flickr(id,urlSchemeStart){Provider.call(this,id,urlSchemeStart);}
extend(Provider,Flickr);Flickr.prototype.parseData=function(data){var parsedData=Provider.prototype.parseData.call(this,data);parsedData.url=data.url;return parsedData;};Flickr.prototype.render=function(parsedData,anchor,data,options){anchor.replaceWith('<img width="'+parsedData.width+'" height="'+parsedData.height+'" src="'+parsedData.url+'"/>');};function VideoProvider(id,urlSchemeStart){Provider.call(this,id,urlSchemeStart);}
extend(Provider,VideoProvider);VideoProvider.prototype.parseData=function(data){var parsedData=Provider.prototype.parseData.call(this,data);parsedData.flashSrc=undefined;if(data.html&&data.html.match(/^<(?:object|embed).*?type=(?:\"|')application\/x-shockwave-flash(?:\"|')/i)!==null){parsedData.flashSrc=data.html.match(/^<(?:object|embed).*?(?:src|data)=(?:"|')([^'"]*?)(?:"|')/i)[1];}
return parsedData;};VideoProvider.prototype.render=function(parsedData,anchor,data,options){if(swfobject&&swfobject.hasFlashPlayerVersion(FLASH_VERSION_REQUIRED)){var uid=anchor.attr('id')===''?Math.random().toString().replace(/^0\./,'jquery_embedlinks_'):anchor.attr('id');anchor.attr('id',uid);var extractedParams={};var paramTags=data.html.match(/<param name=(?:'|").*?(?:'|")\s+?value=(?:'|").*?(?:'|")/gi);if(paramTags!==null){$.each(paramTags,function(i,paramTag){var matchedParamTag=paramTag.match(/<param name=(?:'|")(.*?)(?:'|")\s+?value=(?:'|")(.*?)(?:'|")/i);extractedParams[matchedParamTag[1]]=matchedParamTag[2];});}
extractedParams.allowFullScreen="true";var qsObj=options[this.id+"_querystring"];var flashSrc=parsedData.flashSrc;if(qsObj!==undefined){flashSrc+=(flashSrc.match(/\?/)===null)?"?":"&";$.each(qsObj,function(name,value){flashSrc+=name+"="+value+"&";});flashSrc=flashSrc.replace(/&$/,'');}
swfobject.embedSWF(flashSrc,uid,parsedData.width+'',parsedData.height+'',FLASH_VERSION_REQUIRED,null,null,extractedParams,{id:uid+'_id'});}};function YouTubeProvider(id,urlSchemeStart){VideoProvider.call(this,id,urlSchemeStart);}
extend(VideoProvider,YouTubeProvider);YouTubeProvider.prototype.onJson=function(data,anchor,options){data.width=640;data.height=360;VideoProvider.prototype.onJson(data,anchor,options);}
var providers=[new YouTubeProvider('youtube','http://www.youtube.com/watch?v='),new VideoProvider('vimeo','http://vimeo.com/'),new Flickr('flickr','http://www.flickr.com/photos/'),new VideoProvider('qik','http://qik.com/')];var getProvider=function(url){for(var i=0;i<providers.length;i++){if(providers[i].handlesUrl(url)){return providers[i];}}
return null;};$.fn.embedLinks=function(options){if(navigator.appVersion.match(/MSIE 6/)!=null){return;}
return this.each(function(){if(this.nodeName==='A'){var anchor=$(this);var provider=getProvider(anchor.attr('href'));if(provider!==null){provider.embedLink(anchor,options);}}});};$.embedLinks=function(options){var cssPath='';$.each(providers,function(i,provider){cssPath+='a[href^='+provider.urlSchemeStart+']';if(i<providers.length-1){cssPath+=',';}});$(cssPath).embedLinks(options);};})(jQuery);