{"version":3,"sources":["jquery.fayt.min.js"],"names":["$","fn","fayt","options","settings","extend","single","classname","inputClassname","addButtonClassname","component","method","arguments","minLength","maxLength","optional","resultRequired","saveText","acceptPartials","saveTextFrom","placeholder","defaultLabel","noRowsLabel","outerLabel","isSelected","retain","onAdd","onSelect","onInputChange","onTest","value","this","filter","each","index","showNoRows","local","results","css","addClass","textNoRows","spinner","removeClass","showDefault","textDefault","inputFocus","remove","inputChange","evt","clearTimeout","timeout","which","trigger","input","prev","length","last","next","first","trimmed","val","trim","height","removeAttr","overflowParent","wrapper","parents","element","position","overflow","overflowY","setTimeout","add","prop","data","jQuery","search","isFunction","ajax","url","cache","dataType","error","xhr","status","err","success","listHeight","listPos","offset","top","overflowParentPos","posDifference","maxHeight","tempItem","attr","title","text","appendTo","i","result","item","id","undefined","subtitle","inputBlur","hidden","resultAdd","resultSelect","resultOver","resultOut","container","parent","insertBefore","detach","on","preventDefault","insertAfter","String","prototype","replace"],"mappings":"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","file":"jquery.fayt.min.js","sourcesContent":["/**************************************************************************\r\nName:         jquery.fayt.js\r\nDescription:  Find-as-you-type widget.\r\nDate Created: 12/19/2013 by Kyle Brickman\r\nModified:\r\n**************************************************************************/\r\n\r\n( function( $ ){\r\n\t$.fn.fayt = function( options )\r\n\t{\r\n\t\tvar settings = $.extend({\r\n\t\t\tsingle             : true,\r\n\t\t\tclassname          : '',\r\n\t\t\tinputClassname     : '',\r\n\t\t\taddButtonClassname : '',\r\n\t\t\tcomponent          : '',\r\n\t\t\tmethod             : '',\r\n\t\t\targuments          : {},\r\n\t\t\tminLength          : 1,\r\n\t\t\tmaxLength          : 20,\r\n\t\t\toptional           : false,\r\n\t\t\tresultRequired     : false,\r\n\t\t\tsaveText           : true,\r\n\t\t\tacceptPartials     : false,\r\n\t\t\tsaveTextFrom       : 'default',\r\n\t\t\tplaceholder        : 'Find As You Type',\r\n\t\t\tdefaultLabel       : 'Search for results',\r\n\t\t\tnoRowsLabel        : 'No results found',\r\n\t\t\touterLabel \t\t   : false,\r\n\t\t\tisSelected \t\t   : false,\r\n\t\t\tretain \t\t\t   : false,\r\n\t\t\tonAdd              : function( ){ },\r\n\t\t\tonSelect           : function( ){ },\r\n\t\t\tonInputChange\t   : function( ){ },\r\n\t\t\tonTest             : function( value ){ return true; }\r\n\t\t}, options );\r\n\r\n\t\treturn this.filter( 'input:not([type=\"radio\"],[type=\"checkbox\"])' ).each( function( index ){\r\n\t\t\t// Instantiate bound functions\r\n\t\t\tvar showNoRows = function( )\r\n\t\t\t{\r\n\t\t\t\tlocal.results.css(  'height', '30px' );\r\n\t\t\t\tlocal.results.addClass(     'active' );\r\n\t\t\t\tlocal.textNoRows.addClass(  'active' );\r\n\t\t\t\tlocal.spinner.removeClass( 'active' );\r\n\r\n\t\t\t\t//$( 'body' ).trigger( 'noFaytResults' );\r\n\t\t\t};\r\n\r\n\t\t\tvar showDefault = function( )\r\n\t\t\t{\r\n\t\t\t\tlocal.results.css(  'height', '30px' );\r\n\t\t\t\tlocal.results.addClass(     'active' );\r\n\t\t\t\tlocal.textDefault.addClass(  'active' );\r\n\t\t\t\tlocal.spinner.removeClass( 'active' );\r\n\t\t\t};\r\n\r\n\t\t\tvar inputFocus = function( )\r\n\t\t\t{\r\n\t\t\t\t$( 'li:not(.spinner,.textDefault,.textNoRows)', local.results ).remove( );\r\n\t\t\t\tshowDefault( )\r\n\t\t\t};\r\n\r\n\t\t\tvar inputChange = function( evt )\r\n\t\t\t{\r\n\t\t\t\tclearTimeout( local.timeout );\r\n\r\n\t\t\t\t// Enter key pressed - select highlighted result\r\n\t\t\t\tif( 13 == evt.which )\r\n\t\t\t\t{\r\n\t\t\t\t\t$( 'li.selected', local.results ).trigger( 'mousedown' );\r\n\t\t\t\t\tlocal.input.trigger( 'blur' );\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Escape key pressed - cancel input\r\n\t\t\t\tif( 27 == evt.which )\r\n\t\t\t\t{\r\n\t\t\t\t\tlocal.input.trigger( 'blur' );\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move highlighted result up one space\r\n\t\t\t\tif( 38 == evt.which )\r\n\t\t\t\t{\r\n\t\t\t\t\tif( $( 'li.selected', local.results ).prev( 'li[data-id]' ).length )\r\n\t\t\t\t\t\t$( 'li.selected', local.results ).prev( 'li[data-id]' ).trigger( 'mouseover' );\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\t$( 'li[data-id]', local.results ).last( ).trigger( 'mouseover' );\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move highlighted result down one space\r\n\t\t\t\tif( 40 == evt.which )\r\n\t\t\t\t{\r\n\t\t\t\t\tif( $( 'li.selected', local.results ).next( 'li[data-id]' ).length )\r\n\t\t\t\t\t\t$( 'li.selected', local.results ).next( 'li[data-id]' ).trigger( 'mouseover' );\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\t$( 'li[data-id]', local.results ).first( ).trigger( 'mouseover' );\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Non-input-changing key pressed - don't trigger network event\r\n\t\t\t\tif( 35 == evt.which || 36 == evt.which || 37 == evt.which || 39 == evt.which )\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tvar trimmed = local.input.val( ).trim( );\r\n\r\n\t\t\t\tif( (trimmed.length >= local.settings.minLength && trimmed.length <= local.settings.maxLength) || 31 <= local.results.height( ))\r\n\t\t\t\t{\r\n\t\t\t\t\t$( 'li', local.results ).removeClass( 'active' );\r\n\t\t\t\t\tlocal.results.removeClass(  'active' );\r\n\t\t\t\t\tlocal.results.removeAttr(    'style' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Find overflow hidden parent height\r\n\t\t\t\tvar overflowParent = local.wrapper.parents( ).filter( function( ){\r\n\t\t\t\t\tvar element   = $( this );\r\n\t\t\t\t\tvar position  = element.css( 'position' );\r\n\t\t\t\t\tvar overflow  = element.css( 'overflow' );\r\n\t\t\t\t\tvar overflowY = element.css( 'overflow-y' );\r\n\r\n\t\t\t\t\treturn ( 'absolute' == position || 'relative' == position || 'static' == position ) && ( 'hidden' == overflow || 'hidden' == overflowY );\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlocal.timeout = setTimeout( function( ){\r\n\t\t\t\t\t$( 'li[data-value]', local.results ).remove( );\r\n\t\t\t\t\tlocal.add.prop( 'disabled', true );\r\n\r\n\t\t\t\t\tif( trimmed.length >= local.settings.minLength && trimmed.length <= local.settings.maxLength )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlocal.data        = jQuery.extend( true, {}, local.settings.arguments );\r\n\t\t\t\t\t\tlocal.data.method = local.settings.method;\r\n\t\t\t\t\t\tlocal.data.search = local.input.val( ).trim( );\r\n\t\t\t\t\t\tlocal.spinner.addClass( 'active' );\r\n\r\n\t\t\t\t\t\t$.each( local.settings.arguments, function( index, value ){\r\n\t\t\t\t\t\t\tif( $.isFunction( value ))\r\n\t\t\t\t\t\t\t\tlocal.data[index] = value( );\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tlocal.add.prop( 'disabled', !local.settings.onTest( local.data.search ));\r\n\r\n\t\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\t\turl      : '/cfcs/' + local.settings.component + '.cfc',\r\n\t\t\t\t\t\t\tcache    : false,\r\n\t\t\t\t\t\t\tdataType : 'json',\r\n\t\t\t\t\t\t\tdata     : local.data,\r\n\t\t\t\t\t\t\terror    : function (xhr, status, err){\r\n\t\t\t\t\t\t\t\tvar errorMsg = err;\r\n\t\t\t\t\t\t\t\t// console.log(err);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsuccess  : function( results ){\r\n\t\t\t\t\t\t\t\tif( overflowParent.length ) {\r\n\t\t\t\t\t\t\t\t\tvar listHeight = (( results.length + ( local.settings.resultRequired ? 0 : 1 )) * 30 );\r\n\r\n\t\t\t\t\t\t\t\t\tvar listPos = local.results.offset().top;\r\n\t\t\t\t\t\t\t\t\tvar overflowParentPos = overflowParent.first( ).offset().top;\r\n\t\t\t\t\t\t\t\t\tvar posDifference = listPos - overflowParentPos;\r\n\r\n\t\t\t\t\t\t\t\t\tvar maxHeight  = overflowParent.first( ).height( ) - posDifference;\r\n\t\t\t\t\t\t\t\t\tif (maxHeight < 0)\r\n\t\t\t\t\t\t\t\t\t\tmaxHeight = 150;\r\n\r\n\t\t\t\t\t\t\t\t\tif( listHeight > maxHeight ){\r\n\t\t\t\t\t\t\t\t\t\tlocal.results.css( { 'height':maxHeight + 'px','overflowY':'visible' } )\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tlocal.results.css( 'height', listHeight + 'px' );\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tlocal.results.css( 'height', (( results.length + ( local.settings.resultRequired ? 0 : 1 )) * 30 ) + 'px' );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlocal.results.addClass(     'active' );\r\n\t\t\t\t\t\t\t\tlocal.spinner.removeClass( 'active' );\r\n\r\n\t\t\t\t\t\t\t\tif( !local.settings.resultRequired )\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvar tempItem = $( '<li />' );\r\n\t\t\t\t\t\t\t\t\ttempItem.attr( 'data-id',    0 );\r\n\t\t\t\t\t\t\t\t\ttempItem.attr( 'data-value', local.data.search );\r\n\t\t\t\t\t\t\t\t\ttempItem.attr( 'data-title', local.data.search );\r\n\r\n\t\t\t\t\t\t\t\t\tvar title = $( '<span />' );\r\n\t\t\t\t\t\t\t\t\ttitle.text( local.data.search );\r\n\t\t\t\t\t\t\t\t\ttitle.addClass( 'full' );\r\n\t\t\t\t\t\t\t\t\ttitle.appendTo( tempItem );\r\n\r\n\t\t\t\t\t\t\t\t\ttempItem.appendTo( local.results );\r\n\t\t\t\t\t\t\t\t\ttempItem.addClass( 'active selected' );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse if( !results.length )\r\n\t\t\t\t\t\t\t\t\tlocal.add.prop( 'disabled', true )\r\n\r\n\t\t\t\t\t\t\t\tif( !results.length )\r\n\t\t\t\t\t\t\t\t\treturn showNoRows( );\r\n\r\n\t\t\t\t\t\t\t\tfor( var i = 0; i < results.length; i++ )\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvar result = results[i];\r\n\r\n\t\t\t\t\t\t\t\t\tvar item = $( '<li />' );\r\n\r\n\t\t\t\t\t\t\t\t\titem.attr( 'data-id',    result.id    );\r\n\t\t\t\t\t\t\t\t\titem.attr( 'data-value', result.value );\r\n\t\t\t\t\t\t\t\t\titem.attr( 'data-title', result.title );\r\n\r\n\t\t\t\t\t\t\t\t\tvar title = $( '<span />' );\r\n\t\t\t\t\t\t\t\t\ttitle.text( result.title );\r\n\t\t\t\t\t\t\t\t\ttitle.appendTo( item );\r\n\r\n\t\t\t\t\t\t\t\t\tif( undefined != result.subtitle && result.title != result.subtitle )\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tvar subtitle = $( '<span />' );\r\n\t\t\t\t\t\t\t\t\t\tsubtitle.text( result.subtitle );\r\n\t\t\t\t\t\t\t\t\t\tsubtitle.appendTo( item );\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttitle.addClass( 'full' );\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\titem.appendTo( local.results );\r\n\t\t\t\t\t\t\t\t\titem.addClass( !i && local.settings.resultRequired ? 'active selected' : 'active' );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tshowDefault( );\r\n\t\t\t\t}, 500 );\r\n\r\n\t\t\t\tlocal.settings.onInputChange( );\r\n\t\t\t};\r\n\r\n\t\t\tvar inputBlur = function( )\r\n\t\t\t{\r\n\t\t\t\t$( 'li', local.results ).removeClass( 'active' );\r\n\t\t\t\tlocal.spinner.removeClass( 'active' );\r\n\t\t\t\tlocal.results.removeAttr( 'style' );\r\n\t\t\t\tlocal.results.removeClass( 'active' );\r\n\r\n\t\t\t\tif( local.settings.isSelected ) {\r\n\t\t\t\t\tif( !local.settings.saveText )\r\n\t\t\t\t\t\tlocal.input.val( '' );\r\n\t\t\t\t\telse if( 'title' == local.settings.saveTextFrom )\r\n\t\t\t\t\t\tlocal.input.val( local.hidden.attr( 'data-title' ))\r\n\t\t\t\t\telse if( 'id' == local.settings.saveTextFrom )\r\n\t\t\t\t\t\tlocal.input.val( local.hidden.attr( 'data-id' ))\r\n\t\t\t\t\telse if( 'value' == local.settings.saveTextFrom )\r\n\t\t\t\t\t\tlocal.input.val( local.hidden.attr( 'data-value' ))\r\n\r\n\t\t\t\t\tlocal.settings.isSelected = false;\r\n\r\n\t\t\t\t} else if( local.settings.acceptPartials )\r\n\t\t\t\t\tlocal.hidden.val( local.input.val() );\r\n\t\t\t};\r\n\r\n\t\t\tvar resultAdd = function( )\r\n\t\t\t{\r\n\t\t\t\tlocal.wrapper.removeClass( 'error' );\r\n\t\t\t};\r\n\r\n\t\t\tvar resultSelect = function( )\r\n\t\t\t{\r\n\t\t\t\tlocal.hidden.val(                $( this ).attr( 'data-value' ));\r\n\t\t\t\tlocal.hidden.attr( 'data-id',    $( this ).attr( 'data-id'    ));\r\n\t\t\t\tlocal.hidden.attr( 'data-value', $( this ).attr( 'data-value' ));\r\n\t\t\t\tlocal.hidden.attr( 'data-title', $( this ).attr( 'data-title' ));\r\n\t\t\t\tlocal.input.val(                 $( this ).attr( 'data-value' ));\r\n\r\n\t\t\t\tlocal.add.prop( 'disabled', !local.settings.onTest( local.input.val( )));\r\n\r\n\t\t\t\tlocal.settings.isSelected = true;\r\n\t\t\t};\r\n\r\n\t\t\tvar resultOver = function( )\r\n\t\t\t{\r\n\t\t\t\t$( this ).trigger( 'mouseout' );\r\n\t\t\t\t$( this ).addClass( 'selected' );\r\n\t\t\t};\r\n\r\n\t\t\tvar resultOut = function( )\r\n\t\t\t{\r\n\t\t\t\t$( 'li', local.results ).removeClass( 'selected' );\r\n\t\t\t};\r\n\r\n\t\t\t// Establish root container\r\n\t\t\tvar local = {};\r\n\r\n\t\t\t// Establish local settings\r\n\t\t\tlocal.settings = settings;\r\n\t\t\tlocal.timeout  = 0;\r\n\r\n\t\t\t// Retrieve and create DOM elements\r\n\t\t\tlocal.container   = $( this ).parent( );\r\n\t\t\tlocal.placeholder = $( '<span   />' );\r\n\t\t\tlocal.wrapper     = $( '<div    />' );\r\n\t\t\tlocal.hidden      = $( '<input  />' );\r\n\t\t\tlocal.spinner     = $( '<span   />' );\r\n\t\t\tlocal.input       = $( this );\r\n\t\t\tlocal.results     = $( '<ol     />' );\r\n\t\t\tlocal.textDefault = $( '<li     />' );\r\n\t\t\tlocal.textNoRows  = $( '<li     />' );\r\n\t\t\tlocal.add         = $( '<input  />' );\r\n\r\n\t\t\t// Insert temporary placeholder\r\n\t\t\tlocal.placeholder.insertBefore( local.input );\r\n\t\t\tlocal.input.detach( );\r\n\r\n\t\t\t// Set attributes\r\n\t\t\tlocal.hidden.attr(       'type', 'hidden' );\r\n\t\t\tlocal.hidden.attr( 'data-id',          '' );\r\n\t\t\tlocal.hidden.attr( 'data-value',       '' );\r\n\t\t\tlocal.hidden.attr( 'data-title',       '' );\r\n\t\t\tlocal.hidden.attr(       'name', undefined != local.input.attr( 'name' ) ? local.input.attr( 'name' ) : 'fayt' + index );\r\n\t\t\tlocal.hidden.attr(         'id', undefined != local.input.attr(   'id' ) ? local.input.attr(   'id' ) : local.hidden.attr( 'name' ));\r\n\r\n\t\t\tif( local.settings.retain ) local.hidden.attr( 'data-retain', true );\r\n\r\n\t\t\tlocal.input.removeAttr( 'name id class style value placeholder optional' );\r\n\r\n\t\t\tif( local.settings.optional )\r\n\t\t\t\tlocal.input.attr( 'optional', '' );\r\n\r\n\t\t\tlocal.add.attr(  'type', 'button' );\r\n\t\t\tlocal.add.attr( 'value', '+' )\r\n\t\t\tlocal.add.prop( 'disabled', true );\r\n\r\n\t\t\tlocal.input.attr( 'placeholder', local.settings.placeholder );\r\n\r\n\t\t\tlocal.textDefault.text( local.settings.defaultLabel );\r\n\t\t\tlocal.textNoRows.text(  local.settings.noRowsLabel  );\r\n\r\n\t\t\t// Set classes\r\n\t\t\tlocal.wrapper.addClass(            'fayt' );\r\n\t\t\tlocal.spinner.addClass(         'network' );\r\n\t\t\tlocal.textDefault.addClass( 'textDefault' );\r\n\t\t\tlocal.textNoRows.addClass(   'textNoRows' );\r\n\r\n\t\t\tif( local.settings.single \t  ) local.wrapper.addClass( 'single'  \t );\r\n\t\t\tif( local.settings.outerLabel ) local.wrapper.addClass( 'outerLabel' );\r\n\r\n\t\t\tlocal.wrapper.addClass( local.settings.classname );\r\n\t\t\tlocal.input.addClass( local.settings.inputClassname );\r\n\t\t\tlocal.add.addClass( local.settings.addButtonClassname );\r\n\r\n\t\t\t// Bind events\r\n\t\t\tlocal.input.on( 'keydown keypress keyup', function( evt ){ if( 13 == evt.which ) evt.preventDefault( ); });\r\n\t\t\tlocal.input.on( 'focus', inputFocus  );\r\n\t\t\tlocal.input.on( 'keyup', inputChange );\r\n\t\t\tlocal.input.on(  'blur', inputBlur   );\r\n\r\n\t\t\tlocal.add.on( 'click', resultAdd );\r\n\t\t\tlocal.results.on( 'mousedown touchend', 'li:not(.textDefault,.textNoRows)', resultSelect );\r\n\t\t\tlocal.results.on( 'mouseover', 'li:not(.textDefault,.textNoRows)', resultOver   );\r\n\t\t\tlocal.results.on( 'mouseout',  'li:not(.textDefault,.textNoRows)', resultOut    );\r\n\r\n\t\t\tlocal.add.on( 'click', local.settings.onAdd );\r\n\t\t\tlocal.results.on( 'mousedown touchend', 'li:not(.textDefault,.textNoRows)', local.settings.onSelect );\r\n\r\n\t\t\t// Append elements\r\n\t\t\tlocal.textDefault.appendTo( local.results );\r\n\t\t\tlocal.textNoRows.appendTo(  local.results );\r\n\t\t\tlocal.hidden.appendTo(      local.wrapper );\r\n\t\t\tlocal.spinner.appendTo(     local.wrapper );\r\n\t\t\tlocal.input.appendTo(       local.wrapper );\r\n\t\t\tlocal.add.appendTo(         local.wrapper );\r\n\t\t\tlocal.results.appendTo(     local.wrapper );\r\n\r\n\t\t\tlocal.wrapper.insertAfter( local.placeholder );\r\n\r\n\t\t\tlocal.placeholder.remove( );\r\n\t\t});\r\n\t};\r\n})( jQuery );\r\n\r\nif( typeof String.prototype.trim !== 'function' )\r\n\tString.prototype.trim = function( )\r\n\t{\r\n\t\treturn this.replace( /^\\s+|\\s+$/g, '' );\r\n\t}\r\n"]}