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