// 

(function ($) {

    var plugin = Echo.createPlugin({
        "name": "SwitchArktanImage",
        "applications": ["Stream"],
        "init": function (plugin, application) {
            plugin.extendRenderer("Item", "body", plugin.renderers.body(application), "SwitchArktanImage");
			
        }
    });
	
	plugin.getDataSrcRegEx = function(attr){
		return new RegExp(attr + "=[\"\'](\\S+)[\"\']", "i");
	};
	
	plugin.cssClassRegEx = /(<img[^>]+class=[\"\'])(metadata_image)([\"\'])/i;
	plugin.tumblrRegEx = /(?!<img[^>]+media\.tumblr\.com\S+_)250/g;
	plugin.imgAttributes = {
		src: "src",
		full: "data-src-full",
		web: "data-src-web",
		mobile: "data-src-mobile",
		preview: "data-src-preview"
	};
	
    plugin.renderers = {};

    plugin.renderers.body = function (application) {
        return function (element, dom) {
            var item = this;
			//TODO: Device Detection
			var imgSize = plugin.imgAttributes.web;
			if (item.depth == 0){
				//Find the Web sized Arktan image Url img url
				var newSrc, oldSrc, cssClass, groups, cssGroups;
				groups = plugin.getDataSrcRegEx(imgSize).exec(item.data.object.content);
				newSrc = (groups != null && groups.length > 1)? groups[1]: null;
				groups = plugin.getDataSrcRegEx(plugin.imgAttributes.src).exec(item.data.object.content);
				oldSrc = (groups != null && groups.length > 1)? groups[1]: null;
				var updateCss = false;
				if(newSrc != null && oldSrc != null && newSrc != oldSrc){
					for(var i=0;item.data.object.content.indexOf(oldSrc) > -1 && i<5; i++)
						item.data.object.content = item.data.object.content.replace(oldSrc, newSrc);//Replace the source url
					updateCss = true;
				}else if(item.data.object.content.match(plugin.tumblrRegEx)){ //Replace Tumblr Images
					item.data.object.content = item.data.object.content.replace(plugin.tumblrRegEx, "500");
					updateCss = true;
				}
				//Replace CSS Class
				if(updateCss){
					cssGroups = plugin.cssClassRegEx.exec(item.data.object.content);
					cssClass = (cssGroups != null && cssGroups.length > 3)? cssGroups[2]: null;
					if(cssClass != null){
						item.data.object.content = item.data.object.content.replace(cssGroups[0], cssGroups[1]+cssClass+"_"+imgSize.substr(imgSize.lastIndexOf("-")+1)+cssGroups[3]);
					}
				}
			}
            item.parentRenderer("body", arguments);
        };
    };
	
})(jQuery);
