function quickSearchController(){var n=this,t="",i,r,u,f,e,o,s,h,c,l,a;this.init=function(t,i,r,u,f){n.parentControl=t,n.moduleID=i,n.searchKeyword=$(t).find(".searchInput"),n.dynamicResults=$(t).find(".dynamic-results"),n.dynamicResultsMask=$(t).find(".dynamic-results-mask"),n.dynamicResultsInner=$(t).find(".dynamic-results-inner"),n.dynamicResultsLinks=$(t).find(".dynamic-results-links"),n.searchDelay=u,n.minCharInput=r,n.maxItems=f,n.initPageEvents()},this.keyup=function(t){(t.keyCode>="48"&&t.keyCode<="90"||t.keyCode=="8"||t.keyCode=="46"||t.keyCode=="13")&&(window.clearTimeout(n.timer),n.searchKeyword.val().length>=n.minCharInput&&t.keyCode!="13"&&n.startTimer())},this.startTimer=function(){n.timer=window.setTimeout(function(){n.loadResults()},n.searchDelay)},this.initPageEvents=function(){n.searchKeyword.bind("keyup",n.keyup),$(n.parentControl).find("#close-results").bind("click",n.hideResults)},this.getSearchData=function(){return{moduleID:n.moduleID,keywords:n.searchKeyword.val(),maxItems:n.maxItems}},this.loadResults=function(){var t="/WebServices/InternalLookupServices.asmx/GetModuleSearchResult",i=n.getSearchData();n.dynamicResultsInner.hide(),n.dynamicResultsInner.css("height","auto"),n.dynamicResultsInner.html(""),n.dynamicResults.show(),n.dynamicResultsMask.show(),validation.callValidatingJsonReturnValueService(t,"GET",i,n.presentData,n.displayInfo,null,n.displayError)},this.presentData=function(t){var u=t,i,r,f,e;if(n.dynamicResultsMask.hide(),u.Results.length==0)n.dynamicResultsInner.html("<p>No results found<\/p>"),n.dynamicResultsInner.show();else{for(i="<ol>",r=0,f=u.Results.length;r<f;r++)e=u.Results[r],i+=n.formatResult(e);i+="<\/ol>",n.dynamicResultsInner.html(i),n.dynamicResults.animate({height:"295px"},200,function(){n.dynamicResultsInner.css("height","270px"),n.dynamicResultsInner.show()})}},this.formatResult=function(n){var t="",i="";return n.OpenInNewWindow==!0&&(i=" target='_blank' "),t+="<li>",t+=n.OnCLick>""?'<a href="'+n.UserFriendlyURL+'" onclick="" + result.OnCLick + """ + target + ">'+n.Heading+" - "+n.PublicName:'<a href="'+n.UserFriendlyURL+'"'+i+">"+n.Heading+" - "+n.PublicName,t+="<\/a>",t+="<\/li>"},this.hideResults=function(){n.dynamicResults.animate({height:"0px"},200,function(){n.dynamicResultsInner.html(""),n.dynamicResults.hide()})},this.displayInfo=function(t){n.dynamicResultsMask.hide(),n.dynamicResultsInner.html("<p>Info: "+t+"<\/p>"),n.dynamicResultsInner.show()},this.displayError=function(t){n.dynamicResultsMask.hide(),n.dynamicResultsInner.html("<p>Error: "+t+"<\/p>"),n.dynamicResultsInner.show()}}var validation={resetValidation:function(){$("[data-validation-key]").removeClass("invalid"),$("[data-validation-message]").removeClass("validationMessageVisible").addClass("validationMessageHidden")},presentValidationErrors:function(n){if(validation.resetValidation(),n){var t=n.getUniqueArrayFromProperty("Key");$(t).each(function(t,i){$('[data-validation-key="'+i+'"]').addClass("invalid");var u=n.where(function(n){return n.Key==i}).select(function(n){return n}),r="<ul>";$(u).each(function(){r+="<li>"+this.Value+"<\/li>"}),r+="<\/ul>",$('[data-validation-message="'+i+'"]').html(r).addClass("validationMessageVisible")})}},callValidatingJsonReturnValueService:function(n,t,i,r,u,f,e){$.ajax({cache:!1,url:n,timeout:45e3,type:t,dataType:"text",contentType:"application/json; charset=utf-8",data:{val:JSON.stringify(i)},dataFilter:function(n){return n.replace(/"\\\/(Date\(.*?\))\\\/"/gi,"new $1")},success:function(result){try{result.length>0&&(result=eval("("+result+")"))}catch(e){e&&e("An error occured whilst evaluating the server response.");return}if(result&&result.d&&result.d.IsSuccessful){var data=result.d.Data;data?r&&r(data):u&&u(result.d.Message)}else result&&result.d?result.d.HasValidationErrors?f&&f(result.d.ValidationErrors):e&&e(result.d.Message):result.length>0&&e&&e("An error occured on the server whilst trying to process your request.")},error:function(){e&&e("An error occured while contacting the server.")}})}};this.JSON||(this.JSON={}),function(){function i(n){return n<10?"0"+n:n}function o(n){return e.lastIndex=0,e.test(n)?'"'+n.replace(e,function(n){var t=s[n];return typeof t=="string"?t:"\\u"+("0000"+n.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+n+'"'}function u(i,f){var c,l,s,a,v=n,h,e=f[i];e&&typeof e=="object"&&typeof e.toJSON=="function"&&(e=e.toJSON(i)),typeof t=="function"&&(e=t.call(f,i,e));switch(typeof e){case"string":return o(e);case"number":return isFinite(e)?String(e):"null";case"boolean":case"null":return String(e);case"object":if(!e)return"null";if(n+=r,h=[],Object.prototype.toString.apply(e)==="[object Array]"){for(a=e.length,c=0;c<a;c+=1)h[c]=u(c,e)||"null";return s=h.length===0?"[]":n?"[\n"+n+h.join(",\n"+n)+"\n"+v+"]":"["+h.join(",")+"]",n=v,s}if(t&&typeof t=="object")for(a=t.length,c=0;c<a;c+=1)l=t[c],typeof l=="string"&&(s=u(l,e),s&&h.push(o(l)+(n?": ":":")+s));else for(l in e)Object.hasOwnProperty.call(e,l)&&(s=u(l,e),s&&h.push(o(l)+(n?": ":":")+s));return s=h.length===0?"{}":n?"{\n"+n+h.join(",\n"+n)+"\n"+v+"}":"{"+h.join(",")+"}",n=v,s}}typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+i(this.getUTCMonth()+1)+"-"+i(this.getUTCDate())+"T"+i(this.getUTCHours())+":"+i(this.getUTCMinutes())+":"+i(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var f=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n,r,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},t;typeof JSON.stringify!="function"&&(JSON.stringify=function(i,f,e){var o;if(n="",r="",typeof e=="number")for(o=0;o<e;o+=1)r+=" ";else typeof e=="string"&&(r=e);if(t=f,f&&typeof f!="function"&&(typeof f!="object"||typeof f.length!="number"))throw new Error("JSON.stringify");return u("",{"":i})}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(n,t){var r,u,i=n[t];if(i&&typeof i=="object")for(r in i)Object.hasOwnProperty.call(i,r)&&(u=walk(i,r),u!==undefined?i[r]=u:delete i[r]);return reviver.call(n,t,i)}var j;if(text=String(text),f.lastIndex=0,f.test(text)&&(text=text.replace(f,function(n){return"\\u"+("0000"+n.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),typeof reviver=="function"?walk({"":j},""):j;throw new SyntaxError("JSON.parse");})}()