(function($){
$(document).ready(function(){
////////////////////////////////////////////////////
$(".suggest").each(function(){
var _alt = this.alt;
var _options = $(this).metadata();
if(_alt.length > 0){
$(this).autocomplete(_alt, _options);
}
});
////////////////////////////////////////////////////
$(".suggest_az").each(function(){
var _id = this.id;
var _name = this.name;
if(!_name)
return;
var _alt = this.alt;
var _hidden_id = _id ? _id + "_hidden" : false;
var _hidden_name = '';
if(_name && _name.indexOf("[") !== -1 && _name.indexOf("]") !== -1){
var _cre = /\[.*\]/;
var _m = _cre.exec(_name);
var _t = _m.slice(0).toString().replace("[","").replace("]","");
_hidden_name = _name.replace(_t, ""+_t +"_hidden");
}else if(_name){
_hidden_name = _name + "_hidden";
}
//console.log(_hidden_name);
//DEBUG : var _field = $('');
var _field = $('');
if(_hidden_id)
_field.attr("id", _hidden_id);
if(_hidden_name)
_field.attr("name", _hidden_name);
$(this).after(_field);
var _options = $(this).metadata();
_options.formatItem = function(row){
return row[1];
//row[0] + " : " + row[1] + "";
};
_options.formatResult = function(row){
//_field.val(row[0]);
return row[1].replace(/(<.+?>)/gi, '');
//return row[1];
};
_options.minChars = 3;
_options.delay = 30;
/*_options.mustMatch = 1;*/
//console.log(_options);
if(_alt.length > 0){
$(this).autocomplete(_alt, _options);
//$(this).autocomplete(_alt);
}
}).result(function(event, item){
var _hidden_id = this.id + "_hidden";
$("#" + _hidden_id).val(item[0]);
});
});
// Metadata - jQuery plugin for parsing metadata from elements
$.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);
// check for empty string in single property
if ( !settings.single.length ) settings.single = 'metadata';
var data = $.data(elem, settings.single);
// returned cached data if it already exists
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;
}
}
});
// Returns the metadata object for the first member of the jQuery object.
$.fn.metadata = function( opts ){
return $.metadata.get( this[0], opts );
};
})(jQuery);