(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="{}";
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 undefined;
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;
}
if(data.indexOf('{')<0)
data="{"+data+"}";
data=eval("("+data+")");
$.data(elem,settings.single,data);
return data;
}
}
});
$.fn.metadata=function(opts){
return $.metadata.get(this[0],opts);
};
})(jQuery);