
/* - jquery.ui.widget.js - */
// http://www.tecnoteca.com/portal_javascripts/jquery.ui.widget.js?original=1
(function(jq,undefined){if(jq.cleanData){var _cleanData=jq.cleanData;jq.cleanData=function(elems){for(var i=0,elem;(elem=elems[i])!=null;i++){jq(elem).triggerHandler("remove")}
_cleanData(elems)}} else{var _remove=jq.fn.remove;jq.fn.remove=function(selector,keepData){return this.each(function(){if(!keepData){if(!selector||jq.filter(selector,[this]).length){jq("*",this).add([this]).each(function(){jq(this).triggerHandler("remove")})}}
return _remove.call(jq(this),selector,keepData)})}}
jq.widget=function(name,base,prototype){var namespace=name.split(".")[0],fullName;name=name.split(".")[1];fullName=namespace+"-"+name;if(!prototype){prototype=base;base=jq.Widget}
jq.expr[":"][fullName]=function(elem){return!!jq.data(elem,name)};jq[namespace]=jq[namespace]||{};jq[namespace][name]=function(options,element){if(arguments.length){this._createWidget(options,element)}};var basePrototype=new base();basePrototype.options=jq.extend(true,{},basePrototype.options);jq[namespace][name].prototype=jq.extend(true,basePrototype,{namespace:namespace,widgetName:name,widgetEventPrefix:jq[namespace][name].prototype.widgetEventPrefix||name,widgetBaseClass:fullName},prototype);jq.widget.bridge(name,jq[namespace][name])};jq.widget.bridge=function(name,object){jq.fn[name]=function(options){var isMethodCall=typeof options==="string",args=Array.prototype.slice.call(arguments,1),returnValue=this;options=!isMethodCall&&args.length?jq.extend.apply(null,[true,options].concat(args)):options;if(isMethodCall&&options.charAt(0)==="_"){return returnValue}
if(isMethodCall){this.each(function(){var instance=jq.data(this,name),methodValue=instance&&jq.isFunction(instance[options])?instance[options].apply(instance,args):instance;if(methodValue!==instance&&methodValue!==undefined){returnValue=methodValue;return false}})} else{this.each(function(){var instance=jq.data(this,name);if(instance){instance.option(options||{})._init()} else{jq.data(this,name,new object(options,this))}})}
return returnValue}};jq.Widget=function(options,element){if(arguments.length){this._createWidget(options,element)}};jq.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget: function(options,element){jq.data(element,this.widgetName,this);this.element=jq(element);this.options=jq.extend(true,{},this.options,this._getCreateOptions(),options);var self=this;this.element.bind("remove."+this.widgetName, function(){self.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions: function(){return jq.metadata&&jq.metadata.get(this.element[0])[this.widgetName]},_create: function(){},_init: function(){},destroy: function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget: function(){return this.element},option: function(key,value){var options=key;if(arguments.length===0){return jq.extend({},this.options)}
if(typeof key==="string"){if(value===undefined){return this.options[key]}
options={};options[key]=value}
this._setOptions(options);return this},_setOptions: function(options){var self=this;jq.each(options, function(key,value){self._setOption(key,value)});return this},_setOption: function(key,value){this.options[key]=value;if(key==="disabled"){this.widget()
[value?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",value)}
return this},enable: function(){return this._setOption("disabled",false)},disable: function(){return this._setOption("disabled",true)},_trigger: function(type,event,data){var callback=this.options[type];event=jq.Event(event);event.type=(type===this.widgetEventPrefix?type:this.widgetEventPrefix+type).toLowerCase();data=data||{};if(event.originalEvent){for(var i=jq.event.props.length,prop;i;){prop=jq.event.props[--i];event[prop]=event.originalEvent[prop]}}
this.element.trigger(event,data);return!(jq.isFunction(callback)&&callback.call(this.element[0],event,data)===false||event.isDefaultPrevented())}}})(jQuery);

