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("

No results found<\/p>"),n.dynamicResultsInner.show();else{for(i="

    ",r=0,f=u.Results.length;r",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="";return t+="
  1. ",t+=''+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("

    Info: "+t+"<\/p>"),n.dynamicResultsInner.show()},this.displayError=function(t){n.dynamicResultsMask.hide(),n.dynamicResultsInner.html("

    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="

      ";$(u).each(function(){r+="
    • "+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,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