/*
 * nyroModal v2.0.0
 * 
 * Embedly filter
 * 
 * Depends:
 * - filters.link
 * 
 * Before: filters.iframeForm
 */ 
jQuery(function($, undefined) {
	$.nmFilters({
		embedly: {
			is: function(nm) {
				// Regex from http://embed.ly/tools/generator
				var embedlyReg = nm.embedly.urlRegex ? nm.embedly.urlRegex : /((http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|youtu\.be\/.*|.*\.youtube\.com\/user\/.*|.*\.youtube\.com\/.*#.*\/.*|m\.youtube\.com\/watch.*|m\.youtube\.com\/index.*|.*\.youtube\.com\/profile.*|.*\.youtube\.com\/view_play_list.*|.*\.youtube\.com\/playlist.*))|(https:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*)))/i
				var ret = nm._hasFilter('link') && nm.opener.attr('href') && nm.opener.attr('href').match(embedlyReg) !== null;
				if (ret)
					nm._delFilter('iframe');
				return ret;
			},
			init: function(nm) {
				nm.loadFilter = 'embedly';
				nm.store.embedly = {};
			},
			load: function(nm) {
			  
			  data = {};
			  $.each(nm.embedly, function(n,v){ (nm.embedly[n] !== undefined && n != 'urlRegex')? data[n]=v :null});
			  data['url'] = nm.opener.attr('href');

				$.ajax({
					url: 'http://api.embed.ly/1/oembed',
					dataType: 'jsonp',
					data: data,
					success: function(data) {
					  // The url 404'ed or another issue with the URL
						if (data.type == 'error')
							nm._error();
						//photo is an imge. 
						else if (data.type == 'photo') {
							nm.filters.push('image');
							$('<img />')
								.load(function() {
									nm.elts.cont.addClass('nyroModalImg');
									nm.elts.hidden.addClass('nyroModalImg');
									nm._setCont(this);
								}).error(function() {
									nm._error();
								})
								.attr('src', data.url);
						// Rich and Video behave the same way.
						} else if (data.type in {'rich':'', 'video' : ''}){
							nm.store.embedly.w = data.width;
							nm.store.embedly.h = data.height;
							nm._setCont('<div>'+data.html+'</div>');
						}
						//Note there is also a `link` type here that can be ignored.
					}
				});
			},
			size: function(nm) {
				if (nm.store.embedly.w && !nm.sizes.h) {
					nm.sizes.w = nm.store.embedly.w;
					nm.sizes.h = nm.store.embedly.h;
				}
			}
		}
	});
});
