NewIconDialog=new Class({_extends:Dialog,name:"new-icon",_init:function(){this._init_super();this.api_call=0;this.auto_complete_timer_id=null;this.selection=null;this.auto_count=0;this.url_count=0;this.new_icon_template='<div class="new-icon" title="{{ url }}"><img src="/media/images/icon-load-throbber.gif" /><div class="url-label">{{ url }}</div></div>';this.new_icons=[];this.first_show=true;this.auto_complete_cache={};this.lookup_cache={};this.on_char_urls={}},on_post_show:function(){var a=this;function b(){a.$dialog.find("#new-icon-url").focus()}setTimeout(b,50)},on_pre_show:function(){dynamic_preload("/media/iconsets/crystal_project/48x48/devices/Globe2.png");dynamic_preload("/media/images/icon-load-throbber.gif");var b=this.$dialog.find("#new-icon-url");b.val("");if(!this.first_show){return}this.first_show=false;var a=this;var c=this.owner;b.attr("autocomplete","off");$(window).click(function(){a.hide_auto_complete()});if(!this.one_char_urls){c.api("get_one_char_lookups",{},function(d){a.one_char_urls=d.response.one_char_urls})}this.$dialog.find(".dialog-dismiss").click(function(){a.dismiss()});this.$dialog.find("input[name=url]").focus();a.$dialog.keydown(function(g){if(g.keyCode==KEY_DOWN||g.keyCode==KEY_UP){return}a.selection=null;var f=a.$dialog.find("ul.autocomplete:first");var j=f.find("li");j.removeClass("selected");var h=b.val();if(g.keyCode>=32){h+=String.fromCharCode(g.keyCode)}function d(e){var l=a.lookup_cache[h];if(l!==undefined){var k=l.response.urls;a.auto_complete_urls=k.slice(0);a.search_url=l.response.search_url;a.looking_up_url=null;a.update_auto_complete();return}else{var k=e.response.urls}a.lookup_cache[h]=e;if(k!==undefined&&e.call_id==a.call_id){a.auto_complete_urls=k.slice(0);a.search_url=e.response.search_url;a.looking_up_url=null;a.update_auto_complete()}}if(h==a.previous_url){return}if(h){function i(){var e=b.val();if(a.looking_up_url==e){return}if(!e){a.clear_auto_complete();return}a.looking_up_url=e;var l=a.lookup_cache[h];h=h.toLowerCase();if(h.length==1&&a.one_char_urls&&a.one_char_urls[h]!==undefined){var k=a.one_char_urls[h];a.auto_complete_urls=k.slice(0);a.search_url=e;a.looking_up_url=null;a.update_auto_complete()}else{if(l!==undefined){d(l)}else{a.call_id=c.api("lookup_url",{url:e},d)}}}if(a.auto_complete_timer_id){clearTimeout(a.auto_complete_timer_id)}a.auto_complete_timer_id=setTimeout(i,AUTO_COMPLETE_DELAY)}else{a.auto_complete_urls=[];a.call_id=null;a.update_auto_complete()}a.previous_url=h}).keydown(function(h){if(h.keyCode==KEY_RETURN){a.retrieve_icon();return false}if(h.keyCode==KEY_ESCAPE){a.hide_auto_complete()}if(h.keyCode==KEY_DOWN||h.keyCode==KEY_UP){if(!a.auto_count){return true}if(a.selection==null){a.original_url=b.val()}if(h.keyCode==KEY_DOWN){if(a.selection==null){a.selection=0}else{a.selection+=1}a.selection%=a.auto_count}else{if(a.selection==null){a.selection=a.auto_count-1}else{a.selection-=1}if(a.selection<0){a.selection=a.auto_count-1}}var f=a.$dialog.find("ul.autocomplete:first");var i=f.find("li");var d=f.find("#auto-"+a.selection);i.removeClass("selected");d.addClass("selected");var g=a.$dialog.find("#autourl-"+a.selection).val();b.val(g);a.previous_url=g;h.stopPropagation();return false}return true});this.$dialog.find(".new-icons-button.ok").click(function(){a.$dialog.fadeOut("fast");var e=$("#loading-dialog");e.fadeIn();e.center();var f=[];a.$dialog.find(".new-icon").not(".disabled").each(function(){var g=$(this).find(".url-label").html();f.push(g)});a.$dialog.find("table.new-icons").empty();a.url_count=0;a.new_urls=[];a.check_buttons();function d(g){e.hide();a.$dialog.find(".new-icon").remove();a.dismiss();a.owner.on_new_icons(g.response.icons);a.$dialog.find(".eg").show()}c.api("add_icons",{urls:f.join("|")},d)})},update_section:function(){var b=this;var c=b.$dialog.find("ul.autocomplete:first");var d=c.find("li");var a=c.find("#auto-"+b.selection);d.removeClass("selected");a.addClass("selected")},retrieve_icon:function(e){this.$dialog.find(".eg").hide();var b=this;this.clear_auto_complete();var d=this.$dialog.find("input[name=url]");d.focus();var c=e||d.val();if(!c){return}this.url_count++;d.val("");var a=this.new_icon_template.f({url:c});var h=b.$dialog.find(".new-icons:first");var f=$(a);h.append(f);var g=this.$dialog.find(".new-icons-container:first");f.show();f.click(function(){f.fadeOut(function(){f.remove();if(!$(".new-icon").length){$(".new-icons-button-container").hide()}b.$dialog.center(true)})});desktop.api("get_favicon",{url:c,size:"48"},function(k){if(k.response.result=="found"){var i=k.response.icon_url;dynamic_preload(i,function(){f.find("img").attr({src:i})});var j=i.replace("icon16","icon48");dynamic_preload(j)}else{f.find("img").attr({src:"/media/iconsets/crystal_project/48x48/devices/Globe2.png"})}});g[0].scrollTop=g[0].scrollHeight;this.check_buttons();this.$dialog.center(true)},check_buttons:function(){if(this.url_count){$(".new-icons-button-container").show();this.$dialog.find(".new-icons-container:first").show()}else{$(".new-icons-button-container").hide();this.$dialog.find(".new-icons-container:first").hide()}},clear_auto_complete:function(){var a=this;var b=this.$dialog.find("ul.autocomplete:first");b.hide();a.selection=null;this.auto_count=0;b.html("")},hide_auto_complete:function(){this.$dialog.find("ul.autocomplete:first").fadeOut("fast");this.selection=null;this.auto_count=0;this.clear_auto_complete()},update_auto_complete:function(){var a=this;var d='<li id="auto-{{ i }}">{{ display_url }}</li>\n<input id="autourl-{{ i }}" value="{{ url }}" type="hidden">';var c=this.$dialog.find("ul.autocomplete:first");var b="";this.auto_count=this.auto_complete_urls.length;if(this.auto_count){$.each(this.auto_complete_urls,function(f,e){var g=e.replace(a.search_url,'<span class="auto-highlight">'+a.search_url+"</span>");b+=d.f({url:e,display_url:g,i:f})});c.html(b);c.show()}else{c.hide()}c.find("li").mousemove(function(){var f=$(this);var e=parseInt(f.attr("id").split("-")[1]);a.selection=e;a.update_section()}).click(function(){var g=a.$dialog.find("input[name=url]");var h=$(this);var f=parseInt(h.attr("id").split("-")[1]);var e=a.$dialog.find("#autourl-"+f).val();a.previous_url=e;a.retrieve_icon(e)});a.selection=null;this.$dialog.center(true)}});new_icon_dialog=new NewIconDialog();