if(typeof (Incors)=="undefined"){var Incors={}}var IE_VERSION=parseFloat(navigator.appVersion.split("MSIE")[1]);Event.observe(window,"load",function(){$("icon_search").show();$("i_icon_search").setOpacity(0.8);if(AJAX_DB){var A=new Incors.AjaxDb()}else{var A=new Incors.FileDb()}iconSearch=new Incors.IconSearch(A);new Incors.ExceptionHandler()});Incors.IconSearch=Class.create();Incors.IconSearch.prototype={initialize:function(A){this.db=A;this.imageLoader=new Incors.ImageLoader();this.resultIconsBind=this.resultIcons.bind(this);this.keywordResultHandlerBind=this.keywordResultHandler.bind(this);this.nameResultHandlerBind=this.nameResultHandler.bind(this);this.onClickResultsBind=this.onClickResults.bindAsEventListener(this);this.onSearchTypeChangedBind=this.onSearchTypeChanged.bindAsEventListener(this);this.onShadowTrueBind=this.onShadowTrue.bindAsEventListener(this);this.onShadowFalseBind=this.onShadowFalse.bindAsEventListener(this);new Incors.InputObserver("i_icon_search",this.resultIconsBind);Event.observe("results","click",this.onClickResultsBind);Event.observe("search_type_icon_names","click",this.onSearchTypeChangedBind);Event.observe("search_type_keywords","click",this.onSearchTypeChangedBind);$("i_icon_search").focus();this.cssHelper=new Incors.CssHelper();this.cssHelper.addVertFillElem("results",0);this.cssHelper.addVertFillElem("details",0);this.shadow=true},resultIcons:function(B,A,C){this.imageLoader.reset();$("i_icon_search").setStyle({backgroundColor:"#e6e9ea",color:"#bbb"});window.setTimeout(function(){this.resultIconsDelayed(B,A,C)}.bind(this),50)},resultIconsDelayed:function(E,D,F){var F=(F==null)?false:F;if($F("search_type_icon_names")==null){this.value=Incors.StringNormalizer.normalizeKeyword(E)}else{this.value=Incors.StringNormalizer.normalizeName(E)}$("details").update();if(this.value==""||this.value==null){var C=$("results_row_more");if(C){C.remove();this.cssHelper.adjustVertFillElems()}if(!AJAX_DB){var A=$("collections_enabled");var B=$("results");if(A.parentNode!=B){$("results").update(A);A.setStyle({display:"block"})}}else{$("results").update()}$("i_icon_search").setStyle({backgroundColor:"#fff",color:"#000"});D();return }if($F("search_type_icon_names")==null){this.db.searchKeyword(this.value,F,function(G,H){if(G!=null){this.keywordResultHandlerBind(G,F,H)}$("i_icon_search").setStyle({backgroundColor:"#fff",color:"#000"});D()}.bind(this))}else{this.db.searchName(this.value,true,function(G,H){if(G!=null){this.nameResultHandlerBind(G,H)}$("i_icon_search").setStyle({backgroundColor:"#fff",color:"#000"});D()}.bind(this))}},keywordResultHandler:function(A,O,N){if(!AJAX_DB){var C=$("collections_enabled");C.setStyle({display:"none"});$("abs_cont").insert(C)}var S=N.total_count;var H=N.value;H.sort(function(W,V){aL=W[0].toLowerCase();bL=V[0].toLowerCase();return(aL<bL)?-1:(aL>bL)?1:0});var M=[];if(!O&&S>=MAX_RESULT_SIZE){var J=$("results_row_more");if(!J){$("search").insert({after:Incors.Template.resultRowMoreTmpl({maxSize:MAX_RESULT_SIZE})});this.cssHelper.adjustVertFillElems()}}else{var J=$("results_row_more");if(J){J.remove();this.cssHelper.adjustVertFillElems()}}for(var Q=0;Q<H.length&&(O||Q<MAX_RESULT_SIZE);Q++){if(this.value!=A){return }var B=H[Q];var T=[];var I=B[1];for(var P=0;P<I.length;P++){var L=I[P];var D=L[0];var U=L[1];var E=L[2];T.push(Incors.Template.resultListImgTmpl({iconName:D,collectionName:U,folder:E}))}var F=Q%2==0?"odd":"even";var R=this.highlightKeyword(B[0],A);M.push(Incors.Template.resultRowTmpl({keyword:R,resultListImgs:T.join(""),oddOrEven:F}))}var G=Incors.Template.resultTmpl({resultRows:M.join("")});$("results").update(G);$("results").scrollTop=0;var K=$("results").select("img");for(var Q=K.length-1;Q>=0;--Q){this.imageLoader.insertLast(K[Q])}this.imageLoader.loadImages()},nameResultHandler:function(B,K){if(!AJAX_DB){var A=$("collections_enabled");A.setStyle({display:"none"});$("abs_cont").insert(A)}var E=$("results_row_more");if(E){E.remove();this.cssHelper.adjustVertFillElems()}var L=K.total_count;var I=K.value;var F="";for(var H=0;H<I.length;H++){var J=I[H][0];var G=I[H][1];var D=I[H][2];var C=J.replace(new RegExp("((\\s+)|(^))("+B+")","g"),'$1<span style="font-weight:bold;">$4</span>');F+=Incors.Template.resultListImg2Tmpl({iconName:J,iconNameHighlight:C,collectionName:G,folder:D})}$("results").update(F)},highlightKeyword:function(G,B){var H=B.length;var A=G.length;if(H<=0||H>A){return G}var I=[];for(var F=0;F<G.length;++F){var E=F;for(var C=0;C<B.length;++C){var D=G.charAt(E++);while(D==" "||D=="_"||D=="-"){if(E==G.length){return I.push(G.slice(F,F+E))}D=G.charAt(E++)}if(D.toLowerCase()==B.charAt(C)){if(C==B.length-1){I.push('<span style="font-weight:bold;">'+G.slice(F,E)+"</span>");F=E-1}}else{I.push(G.charAt(F));while(G.charAt(F+1)!=" "&&F<G.length){I.push(G.charAt(++F))}break}}}return I.join("")},addTooltips:function(){if(AJAX_DB){return }var A=new Date().getTime();Tips.tips.each(function(F){Tips.remove(F.element)});var D=navigator.userAgent.indexOf("Windows")>-1?"":" (Mac: Ctrl & Click)";var E=$("details").getElementsByTagName("img");for(var C=0;C<E.length;++C){var B=$(E[C]);new Tip(B,"right click to save image "+D,{delay:0,className:"details_tip",effect:"appear",absCont:"abs_cont"})}},onClickResults:function(E){var D=Event.element(E);var C=$(D.parentNode);while(C.id!="results"&&typeof (C.hasClassName)!="undefined"){if(C.hasClassName("detail_link")){if(this.lastClickImage!=null){this.lastClickImage.setStyle({margin:"3px",border:"none"})}var B=D.parentNode.select("img")[0];this.lastClickImage=B;B.setStyle({border:"solid 2px #adad1b",margin:"1px"});this.iconName=B.readAttribute("name");this.collectionName=B.readAttribute("collection");this.folder=B.readAttribute("folder");if(this.shadow){var A=Incors.Template.detailsShadowTmpl({name:this.iconName,collection:this.collectionName,folder:this.folder});$("details").update(A);Event.observe("shadow_false","click",this.onShadowFalseBind)}else{var A=Incors.Template.detailsTmpl({name:this.iconName,collection:this.collectionName,folder:this.folder});$("details").update(A);Event.observe("shadow_true","click",this.onShadowTrueBind)}this.addTooltips();break}C=$(C.parentNode)}},onSearchTypeChanged:function(A){this.resultIcons($F("i_icon_search"),function(){})},onShadowTrue:function(B){Event.stopObserving("shadow_true","click",this.onShadowTrueBind);var A=Incors.Template.detailsShadowTmpl({name:this.iconName,collection:this.collectionName,folder:this.folder});$("details").update(A);Event.observe("shadow_false","click",this.onShadowFalseBind);this.addTooltips();this.shadow=true},onShadowFalse:function(B){Event.stopObserving("shadow_false","click",this.onShadowFalseBind);var A=Incors.Template.detailsTmpl({name:this.iconName,collection:this.collectionName,folder:this.folder});$("details").update(A);Event.observe("shadow_true","click",this.onShadowTrueBind);this.addTooltips();this.shadow=false}};Incors.CssHelper=Class.create();Incors.CssHelper.prototype={initialize:function(){this.onWindowResizeBind=this.onWindowResize.bind(this);Event.observe(window,"resize",this.onWindowResizeBind);this.vertFillElems=[]},addVertFillElem:function(A,B){this.vertFillElems.push([$(A),B]);this.adjustVertFillElems()},adjustVertFillElems:function(){this.vertFillElems.each(function(A){var B=A[0];var C=A[1];size=document.viewport.getHeight()-B.cumulativeOffset()[1]-C-1;B.setStyle({height:size+"px"})})},onWindowResize:function(A){this.adjustVertFillElems()}};Incors.InputObserver=Class.create();Incors.InputObserver.prototype={initialize:function(A,B){this.inputElem=$(A);this.action=B;this.onUpdateBind=this.onUpdate.bind(this);this.callBackBind=this.callBack.bind(this);this.value=this.inputElem.value.toLowerCase();Event.observe(this.inputElem,"keyup",this.onUpdateBind)},searchCall:function(A){var B=this.inputElem.value.toLowerCase();if(A==B){if(!this.isInCall){this.isInCall=true;this.searchCall2(B)}else{this.isUpdated=B}}},searchCall2:function(A){if(A!=null&&A!=this.value){this.value=A;this.action(A,this.callBackBind)}else{this.callBack()}},callBack:function(){if(this.isUpdated){var A=this.isUpdated;this.isUpdated=false;this.searchCall2(A)}else{this.isInCall=false}},onUpdate:function(B){var A=this.inputElem.value.toLowerCase();window.setTimeout(function(){this.searchCall(A)}.bind(this),300)}};Incors.StringNormalizer={normalizeKeyword:function(A){A=A.replace(/é/g,"e");A=A.replace(/[- _]/g,"");return A},normalizeName:function(A){A=A.replace(/^\s*/,"").replace(/\s*$/,"");A=A.replace(/é/g,"e");A=A.replace(/[ ]/g,"_");return A}};Incors.ExceptionHandler=Class.create();Incors.ExceptionHandler.prototype={initialize:function(){this.registerGlobalExceptions();if(AJAX_DB){this.registerResponderExceptions()}},registerGlobalExceptions:function(){window.onerror=function(D,C,A){var B=D+"\n at "+C+": "+A;this.log("message: "+D+",\nuri: "+C+",\nline: "+A+",\n",function(F,E){if(F){this.userErrorMessage("Unexpected Exception:\r\n\r\nUnfortunately there was an unexpected exception while executing the Iconexperience Search.\r\nWe have been notified about this issue and apologize for any inconvenience.\r\nYou might have to reload the page to restart the search.")}else{if(AJAX_DB){this.userErrorMessage("Unexpected Exception:\r\n\r\nUnfortunately there was an unexpected exception while executing the Iconexperience Search.\r\nWe apologize for any inconvenience.\r\nYou might have to reload the page to restart the search.")}else{this.userErrorMessage("Unexpected Exception:\r\n\r\nUnfortunately there was an unexpected exception while executing the Iconexperience Search.\r\nWe apologize for any inconvenience.\r\nYou might have to reload the page to restart the search.\r\n\r\details:\r\n"+E)}}}.bind(this))}.bind(this)},registerResponderExceptions:function(){Ajax.Responders.register({onException:function(C,B,A){if(typeof B=="string"){B=new Error(B)}if(B.name=="NS_ERROR_NOT_AVAILABLE"){return }this.log("responseText: "+C.transport.responseText+",\nmessage: "+B.message+",\nfileName: "+B.fileName+",\nlineNumber: "+B.lineNumber+",\nstack: "+B.stack+",\n",function(D,E){if(D){this.userErrorMessage("Unexpected Exception:\r\n\r\nUnfortunately there was an unexpected exception while executing the Iconexperience Search.\r\nWe have been notified about this issue and apologize for any inconvenience.\r\nYou might have to reload the page to restart the search.")}else{this.userErrorMessage("Unexpected Network Error:\r\n\r\nUnfortunately there was an unexpected network error while executing the Iconexperience Search.\r\nPlease make sure your network connection is active and try again.\r\nIf your network connection is active we might experience some difficulties on the server. You might have to try later to access the search.\r\nWe apologize for any inconvenience.")}}.bind(this))}.bind(this)})},log:function(A,B){if(AJAX_DB&&!this.sendLogRemote){A+="appName: "+navigator.appName+",\nappVersion: "+navigator.appVersion+",\ncookieEnabled: "+navigator.cookieEnabled+",\nlanguage: "+navigator.language+",\nplatform: "+navigator.platform+",\nuserAgent: "+navigator.userAgent+",\n";new Ajax.Request("index.php",{method:"post",parameters:{action:"exception",error_message:A},onFailure:function(){B(false,A);this.sendLogRemote=true}.bind(this),onException:function(C,D){B(false,A);this.sendLogRemote=true}.bind(this),onSuccess:function(C){B(true,A);this.sendLogRemote=true}.bind(this)})}else{B(false,A)}},userErrorMessage:function(A){alert(A)}};Incors.Image={imgPlainPath:function(A,C,B){return[IMG_PATH,"/",C,"/",B,"x",B,"/plain/",A,".png"].join("")},imgShadowPath:function(A,C,B){return[IMG_PATH,"/",C,"/",B,"x",B,"/shadow/",A,".png"].join("")}};Incors.ImageLoader=Class.create();Incors.ImageLoader.prototype={initialize:function(){this.imageQueue=[];this.onImageLoadBind=this.onImageLoad.bindAsEventListener(this);this.loadNextImageBind=this.loadNextImage.bind(this);this.imageLoadMap=$H()},loadImages:function(){if(AJAX_DB){for(var A=0;A<CONCURRENT_IMAGE_LOADS;++A){this.loadNextImage()}}else{return }},reset:function(){this.imageQueue=[];var A="";this.imageLoadMap.each(function(B){B.value.writeAttribute("src",null)});this.imageLoadMap=$H()},loadNextImage:function(){var A=this.imageQueue.pop();if(!A){return }Event.observe(A,"load",this.onImageLoad.bindAsEventListener(this,A));var B=A.readAttribute("name");var C=A.readAttribute("folder");this.imageLoadMap.set(B,A);A.writeAttribute("src",Incors.Image.imgPlainPath(B,C,24))},insertFirst:function(A){this.imageQueue.splice(0,0,A)},insertLast:function(A){this.imageQueue.push(A)},onImageLoad:function(C,A){var B=A.readAttribute("name");if(!this.imageLoadMap.get(B)){return }this.imageLoadMap.unset(B);C.stop();Event.stopObserving(A,"load",this.onImageLoadBind);window.setTimeout(this.loadNextImageBind,10)}};if(typeof (Incors.Template)=="undefined"){Incors.Template={}}Incors.Template.resultTmpl=function(A){return['<table id="results_table"><colgroup><col width="150px" /><col width="100%" /></colgroup>',A.resultRows,"</table>"].join("")};Incors.Template.resultRowTmpl=function(A){return['<tr class="results_row_',A.oddOrEven,'"><td class="results_col_left">',A.keyword,'</td><td class="results_col_right"><ul class="icon_list_1">',A.resultListImgs,"</ul></td></tr>"].join("")};Incors.Template.resultRowMoreTmpl=function(A){return['<div id="results_row_more">more than ',A.maxSize,' keywords found <a id="show_all" href="#" onclick="iconSearch.resultIcons($F(\'i_icon_search\'), function(){}, true); return false;">(show all results)</a></div>'].join("")};Incors.Template.resultListImg2Tmpl=function(A){return['<div class="icon_result_name"><div class="detail_link"><a href="#" onClick="return false;"><img src="',Incors.Image.imgPlainPath(A.iconName,A.folder,24),'" name="',A.iconName,'" title="',A.iconName,'" collection="',A.collectionName,'" folder="',A.folder,'" style="width: 24px; height: 24px;"></a></div><div>',A.iconNameHighlight,"</div></div>"].join("")};Incors.Template.detailsTmpl=function(A){return['<div id="details_content">','<div id="details_icon_name">',A.name,"</div>",'<div id="details_icon_collection"><b>Collection:</b> ',A.collection,"</div>",'<div id="details_shadows"><b>shadow:</b> <input id="shadow_true" type="radio" name="shadow" value="true" />&nbsp;yes <input id="shadow_false" type="radio" name="shadow" value="false" checked />&nbsp;no</div>','<div class="details_size">16x16 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,16),'"></div>','<div class="details_size">24x24 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,24),'"></div>','<div class="details_size">32x32 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,32),'"></div>','<div class="details_size">48x48 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,48),'"></div>','<div class="details_size">64x64 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,64),'"></div>','<div class="details_size">128x128 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,128),'"></div>','<div class="details_size">256x256 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,256),'"></div>',"</div>"].join("")};Incors.Template.detailsShadowTmpl=function(A){return['<div id="details_content">','<div id="details_icon_name">',A.name,"</div>",'<div id="details_icon_collection"><b>Collection:</b> ',A.collection,"</div>",'<div id="details_shadows"><b>shadow:</b> <input id="shadow_true" type="radio" name="shadow" value="true" checked />&nbsp;yes <input id="shadow_false" type="radio" name="shadow" value="false" />&nbsp;no</div>','<div class="details_size">16x16 <span class="details_description">(',A.name,".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,16),'"></div>','<div class="details_size">24x24 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgPlainPath(A.name,A.folder,24),'"></div>','<div class="details_size">32x32 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgShadowPath(A.name,A.folder,32),'"></div>','<div class="details_size">48x48 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgShadowPath(A.name,A.folder,48),'"></div>','<div class="details_size">64x64 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgShadowPath(A.name,A.folder,64),'"></div>','<div class="details_size">128x128 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgShadowPath(A.name,A.folder,128),'"></div>','<div class="details_size">256x256 <span class="details_description">('+A.name+".png)</span></div>",'<div class="details_icon"><img class="detail_img" src="',Incors.Image.imgShadowPath(A.name,A.folder,256),'"></div>',"</div>"].join("")};