(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)
