(function($){$.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/({.*})/,single:"metadata"},settype:function(type,name){this.defaults.type=type;this.defaults.name=name},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length){settings.single="metadata"}var data=$.data(elem,settings.single);if(data){return data}data="{}";var getdata=function(data){if(typeof data!="string"){return data}if(data.indexof("{")<0){data=eval("("+data+")")}};var getobject=function(data){if(typeof data!="string"){return data}data=eval("("+data+")");return data};if(settings.type=="html5"){var object={};$(elem.attributes).each(function(){var name=this.nodename;if(name.match(/^data-/)){name=name.replace(/^data-/,"")}else{return true}object[name]=getobject(this.nodevalue)})}else{if(settings.type=="class"){var m=settings.cre.exec(elem.classname);if(m){data=m[1]}}else{if(settings.type=="elem"){if(!elem.getelementsbytagname){return}var e=elem.getelementsbytagname(settings.name);if(e.length){data=$.trim(e[0].innerhtml)}}else{if(elem.getattribute!=undefined){var attr=elem.getattribute(settings.name);if(attr){data=attr}}}}object=getobject(data.indexof("{")<0?"{"+data+"}":data)}$.data(elem,settings.single,object);return object}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts)}})(jquery);