/*
MARKUP
*/
$.fn.uaString = function(options)
{
options = $.extend({
bMandatory: true ,
bToolTip: true , //true, TYPE_OPTIONAL, TYPE_IGNORE
bDisabled: false ,
bReadOnly: false ,
iMinChars: 10 , //min number of characters
iMaxChars: 100 , //max number f characters
defaultValue: '' ,
hint: '' ,
msg: ''
}, options);
$.fn.extend(this,this.uaBaseObject({
bMandatory: options.bMandatory, //true, TYPE_OPTIONAL, TYPE_IGNORE
bDisabled: options.bDisabled,
bReadOnly: options.bReadOnly,
defaultValue: options.defaultValue,
iMinChars: options.iMinChars,
bToolTip: options.bToolTip,
hint: options.hint,
msg: options.msg
}));
$(this).
attr("maxLength",options.iMaxChars).
trigger(EV_INIT);
this.
off(EV_CLEAR).
off(EV_SET).
on(EV_CLEAR,function(ev)
{
ev.stopImmediatePropagation();
$(this).val('').trigger(EV_CLEAR_ERRORS);
}).
on(EV_SET,function(ev)
{
ev.stopImmediatePropagation();
$(this).val(ev.uaData.data.label);
$(this).data("id",JSON.stringify(!ev.uaData.data.id? null : ev.uaData.data.id));
}).
on(EV_SET_DEFAULT,function(ev)
{
ev.stopImmediatePropagation();
if(options.bDisabled)
{
$(this).addClass('uaDisabled');
}
else
{
$(this).removeClass('uaDisabled');
}
$(this).attr({placeholder : options.hint});
$(this).val(options.defaultValue);
}).
on(EV_CHECK_SPECIFIC_ERRORS, function(ev)
{//check text length
ev.stopImmediatePropagation();
if($(this).hasClass('text-danger') || !$(this).val().length) return;
//this field is optional
if($(this).val().length !==0 && $(this).val().length < options.iMinChars)
{
$(this).addClass('border-danger').trigger($.Event(EV_SET_ERROR_MSG,{uaData:{data:{msg:options.msg || "This field is optional.
You may leave it blank or you MUST enter a minimum of " + options.iMinChars + " characters" }}}));
};
});
this.getSelection = function()
{//select value & id
return {
label: $(this).val(),
id: JSON.parse($(this).data("id"))
};
};//this.getSelection = function()
return this;
};//uaString