(function($){
$.fn.UIMyTokenizer = function(options) {
var settings = $.extend({
type: 'POST',
url : '',
border: '1px solid #BDC7D8',
background: '#E2E8F6',
width: 300,
padding: 5,
img: '',
onSuccess: function(){},
onCancel: function(){},
}, options);
var td = $(this);
td.css({'border' : settings.border, 'background' : settings.background, 'width': settings.width + 'px', 'padding' : settings.padding + 'px', 'min-height' : '20px', 'margin-top' : '5px' });
var controller = true;
$(this).click(function(){
if(td.children('input').length == 0){
var val = td.children('span').html();
td.html('<input type="text" />');
$(this).children('input').val(val);
$(this).children('input').css({'border': 'none', 'background' : settings.background, 'width' : (td.innerWidth() - (settings.padding * 2 ))+ 'px'});
$(this).children('input').keyup(function(){
settings.onCancel(td, $(this));
$.ajax({
type: settings.type,
url: settings.url,
data: "q=" + $(this).val(),
dataType: 'json',
success: function(data){
$('.UIMyTokenizerResult').remove();
var UIContent = '<div style="position:absolute;" class="UIMyTokenizerResult">';
jQuery.each(data, function(i, item){
UIContent += '<div style="border-top:1px solid gray; cursor:pointer;" item.id="'+item.id+'" item.name="'+item.name+'" item.img="'+item.img+'" onmouseout="jQuery(this).css('+"'background'"+', '+"'white'"+');" onmouseover="jQuery(this).css('+"'background'"+', '+"'gray'"+');">'+item.name+'</div>';
});
td.after(UIContent+'</div>');
$('.UIMyTokenizerResult').children('div').click(function(){
controller = false;
var img = $(this).attr('item.img');
if(img == 'undefined'){
var img = settings.img;
}
td.html('<img src="'+img+'" height="15" /><span tokenizer.id="'+$(this).attr('item.id')+'" style="margin-left:5px;">'+$(this).attr('item.name')+'</span>');
$('.UIMyTokenizerResult').remove();
settings.onSuccess(td);
});
$('.UIMyTokenizerResult').css({'width': settings.width + 'px', 'background' : '#fff', 'border' : '1px solid gray', 'padding' : settings.padding + 'px'});
td.children('input').blur(function(){
//this function shall not be fired, if you click somewhere inside the div
alert(controller);
});
}
});
});
td.children('input').focus();
}else{
return;
}
});
}
})(jQuery);