/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */
"use strict";!function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b(require("angular")):"function"==typeof define&&define.amd?define(["angular"],b):b(a.angular)}(window,function(a){a.module("angucomplete-alt",[]).directive("angucompleteAlt",["$q","$parse","$http","$sce","$timeout","$templateCache",function(a,b,c,d,e,f){var g=40,h=39,i=38,j=37,k=27,l=13,m=9,n=3,o=524288,p=500,q=200,r="autocomplete-required",s="Searching...",t="No results found",u="/angucomplete-alt/index.html";return f.put(u,'
{{ result.title }}
{{result.description}}
'),{restrict:"EA",require:"^?form",scope:{selectedObject:"=",disableInput:"=",initialValue:"@",localData:"=",remoteUrlRequestFormatter:"=",remoteUrlRequestWithCredentials:"@",remoteUrlResponseFormatter:"=",remoteUrlErrorCallback:"=",id:"@",type:"@",placeholder:"@",remoteUrl:"@",remoteUrlDataField:"@",titleField:"@",descriptionField:"@",imageField:"@",inputClass:"@",pause:"@",searchFields:"@",minlength:"@",matchClass:"@",clearSelected:"@",overrideSuggestions:"@",fieldRequired:"@",fieldRequiredClass:"@",inputChanged:"=",autoMatch:"@",focusOut:"&",focusIn:"&"},templateUrl:function(a,b){return b.templateUrl||u},link:function(b,f,u,v){function w(a){return a.which?a.which:a.keyCode}function x(a){"function"==typeof b.selectedObject?b.selectedObject(a):b.selectedObject=a,D(a?!0:!1)}function y(a){return function(c){return b[a]?b[a](c):c}}function z(a){x({originalObject:a}),b.clearSelected&&(b.searchStr=null),R()}function A(a){return b.titleField.split(",").map(function(b){return B(a,b)}).join(" ")}function B(a,b){var c,d;return b?(c=b.split("."),d=a,c.forEach(function(a){d=d[a]})):d=a,d}function C(a,c){var e,f,g;return g=new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i"),a?(f=a.match(g),e=f?a.replace(g,''+f[0]+""):a,d.trustAsHtml(e)):void 0}function D(a){db=b.searchStr,b.fieldRequired&&v&&v.$setValidity(cb,a)}function E(a){var c=w(a);if(c!==j&&c!==h)if(c===i||c===l)a.preventDefault();else if(c===g)a.preventDefault(),!b.showDropdown&&b.searchStr&&b.searchStr.length>=ab&&(S(),b.searching=!0,V(b.searchStr));else if(c===k)R(),b.$apply(function(){_.val(b.searchStr)});else{if(0===ab&&!b.searchStr)return;b.searchStr&&""!==b.searchStr?b.searchStr.length>=ab&&(S(),bb&&e.cancel(bb),b.searching=!0,bb=e(function(){V(b.searchStr)},b.pause)):b.showDropdown=!1,db&&db!==b.searchStr&&!b.clearSelected&&x(void 0)}}function F(a){!b.overrideSuggestions||b.selectedObject&&b.selectedObject.originalObject===b.searchStr||(a&&a.preventDefault(),z(b.searchStr))}function G(a){var b=getComputedStyle(a);return a.offsetHeight+parseInt(b.marginTop,10)+parseInt(b.marginBottom,10)}function H(){return fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).maxHeight,10)}function I(){return f[0].querySelectorAll(".angucomplete-row")[b.currentIndex]}function J(){return I().getBoundingClientRect().top-(fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).paddingTop,10))}function K(a){fb.scrollTop=fb.scrollTop+a}function L(){var a=b.results[b.currentIndex];_.val(b.matchClass?A(a.originalObject):a.title)}function M(a){var c=w(a),d=null,e=null;c===l&&b.results?(b.currentIndex>=0&&b.currentIndex=1?(b.$apply(function(){b.currentIndex--,L()}),gb&&(e=J(),0>e&&K(e-1))):0===b.currentIndex&&b.$apply(function(){b.currentIndex=-1,_.val(b.searchStr)})):c===m&&(b.results&&b.results.length>0&&b.showDropdown?-1===b.currentIndex&&b.overrideSuggestions?F():(-1===b.currentIndex&&(b.currentIndex=0),b.selectResult(b.results[b.currentIndex]),b.$digest()):b.searchStr&&b.searchStr.length>0&&F())}function N(a){return function(c){b.searching=!1,W(B(Z(c),b.remoteUrlDataField),a)}}function O(a,c,d,e){0!==c&&(b.remoteUrlErrorCallback?b.remoteUrlErrorCallback(a,c,d,e):console&&console.error&&console.error("http error"))}function P(){eb&&eb.resolve()}function Q(d){var e={},f=b.remoteUrl+encodeURIComponent(d);b.remoteUrlRequestFormatter&&(e={params:b.remoteUrlRequestFormatter(d)},f=b.remoteUrl),b.remoteUrlRequestWithCredentials&&(e.withCredentials=!0),P(),eb=a.defer(),e.timeout=eb.promise,c.get(f,e).success(N(d)).error(O)}function R(){b.showDropdown=!1,b.results=[],fb&&(fb.scrollTop=0)}function S(){b.showDropdown=!0,b.currentIndex=-1,b.results=[]}function T(a){var c,d,e,f,g=b.searchFields.split(","),h=[];for(c=0;c=0;d&&(h[h.length]=b.localData[c])}b.searching=!1,W(h,a)}function U(a,c,d){for(var e in c)if(c[e].toLowerCase()===d.toLowerCase())return void b.selectResult(a)}function V(a){!a||a.length0)for(b.results=[],d=0;d0&&(b.searchStr=b.initialValue,D(!0),$())}),b.$on("angucomplete-alt:clearInput",function(a,c){c?b.id===c&&(b.searchStr=null,R()):(b.searchStr=null,R())}),b.onFocusHandler=function(){b.focusIn&&b.focusIn(),0!==ab||b.searchStr&&0!==b.searchStr.length||(b.showDropdown=!0,X())},b.hideResults=function(){hb===b.id+"_dropdown"?hb=null:(Y=e(function(){R(),b.$apply(function(){b.searchStr&&b.searchStr.length>0&&_.val(b.searchStr)})},q),P(),b.focusOut&&b.focusOut(),b.overrideSuggestions&&b.searchStr&&b.searchStr.length>0&&-1===b.currentIndex&&F())},b.resetHideResults=function(){Y&&e.cancel(Y)},b.hoverRow=function(a){b.currentIndex=a},b.selectResult=function(a){b.matchClass&&(a.title=A(a.originalObject),a.description=B(a.originalObject,b.descriptionField)),b.searchStr=b.clearSelected?null:a.title,x(a),R()},b.inputChangeHandler=function(a){return a.length