SIMPLE_ALPHA=!jQuery.support.opacity;AUTO_COMPLETE_DELAY=350;AUTO_COMPLETE_DELAY=1;KEY_DOWN=40;KEY_UP=38;KEY_RETURN=13;KEY_ESCAPE=27;DEFAULT_ICON_SIZE=48;function Class(b){var a=b;if(b._extends!==undefined){$.each(b._extends.prototype,function(e,d){if(a[e]===undefined){a[e]=d}else{a[e+"_super"]=d}})}var c=b._init;if(c===undefined){c=function(){if(this.prototype("_init_super")){this._init_super()}}}c.prototype=a;return c}A=new Class({_init:function(a){this.m=a},say:function(){console.log(this.m+" from A")}});B=new Class({_extends:A,_init:function(a){this.m=a;this._init_super(a)},say:function(){console.log(this.m+" from B");this.say_super()}});$window=$(window);api_call_id=0;preload_id=0;icon_template='<div class="icon {{ icon_id }}" id="{{ icon_id }}" style="width:{{ icon_width }}px;"><div class="inner"><div class="handle" id="handle-{{ icon_id }}"style="margin:0 auto;width:{{ icon_size }}px;height:{{ icon_size }}px;"><img src="{{ img_url }}" style="padding:0px;margin:0px;width:100%;height:100%;" /></div><div class="icon-label"><span class="text">{{ name }}</span></div><div class="size-labels" ><div class="size-change size-up" id="up_{{ icon_id }}"></div><div class="size-change size-down" id="down_{{ icon_id }}"></div></div><div class="search-box"><input name="search-{{ icon_id }}"></div></div></div>';stack_template='<div id="{{ stack_id }}" class="icon stack"><div class="stack-item"></div></div>';stack_item_template='<div class="stack-item"><img width="{{ icon_size }}" height="{{ icon_size }}" src="{{ img_url }}" /></div>';test_state=undefined;check_state_timeout=null;function clock(){var b=new Date();var a=b.getTime()/1000;return a}function show_menu(a){$("#menu_"+a).toggle();return false}dialogs={};function App(){var a=this;a.dragging=false;a.desktop=null}app=new App();Point=new Class({_init:function(a,b){this.x=a||0;this.y=b||0},clone:function(){return new Point(this.x,this.y)},css:function(){return{left:Math.round(this.x)+"px",top:Math.round(this.y)+"px"}},css_restrict:function(){var a=this.get_restrict().round();return{left:a.x+"px",top:a.y+"px"}},set:function(a,b){this.x=a;this.y=b;return this},set_point:function(a){this.x=a.x;this.y=a.y;return this},restrict:function(a,b){this.x=Math.max(this.x,0);this.y=Math.max(this.y,0);return this},minus:function(a){return new Point(this.x-a.x,this.y-a.y)},subtract:function(a){this.x-=a.x;this.y-=a.y;return this},plus:function(a){return new Point(this.x+a.x,this.y+a.y)},add:function(a){this.x+=a.x;this.y+=a.y;return this},scalar_mul:function(a){return new Point(this.x*a,this.y*a)},vector_mul:function(a){return new Point(this.x*a.x,this.y*a.y)},scalar_div:function(a){return new Point(this.x/a,this.y/a)},half:function(){this.x*=0.5;this.y*=0.5;return this},halved:function(){return new Point(this.x*0.5,this.y*0.5)},vector_div:function(a){return new Point(this.x/a.x,this.y/a.y)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},get_min:function(a){return new Point(Math.min(this.x,a.x),Math.min(this.y,a.y))},get_max:function(a){return new Point(Math.max(this.x,a.x),Math.max(this.y,a.y))},get_distance:function(a){var b=this.minus(a);return Math.sqrt(b.x*b.x+b.y*b.y)},get_length:function(a){return Math.sqrt(this.x*this.x+this.y*this.y)},restrict:function(){this.x=Math.max(this.x,0);this.y=Math.max(this.y,0);return this},get_restrict:function(){return new Point(Math.max(this.x,0),Math.max(this.y,0))},get_rounded:function(){return new Point(Math.round(this.x),Math.round(this.y))},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},log:function(){if(console){console.log("({{ x }}, {{ y }})".f(this))}}});OffsetPoint=new Class({_extends:Point,_init:function(a){var b=a.offset();this.x=b.left;this.y=b.top}});DimensionsPoint=new Class({_extends:Point,_init:function(a){this.x=a.width();this.y=a.height()}});Rect=new Class({_init:function(b,a){this.p1=b.get_min(a);this.p2=b.get_max(a);this.update()},clone:function(){return new Rect(this.p1.clone(),this.p2.clone())},set:function(b,a){this.p1.set_point(b.get_min(a));this.p2.set_point(b.get_max(a));this.update();return this},css:function(){return{left:Math.round(this.p1.x)+"px",top:Math.round(this.p1.y)+"px",width:Math.round(this.w)+"px",height:Math.round(this.h)+"px"}},contains_point:function(a){return(a.x>=this.p1.x&&a.x<this.p2.x&&a.y>=this.p1.y&&a.y<this.p2.y)},get_center:function(){return new Point(this.p1.x+this.w/2,this.p1.y+this.h/2)},get_dimensions:function(){return new Point(this.w,this.h)},expand:function(a,b){p=new Point(a,b);this.p1.min(p);this.p2.max(p);this.update();return this},expand_rect:function(a){this.p1.min(a.p1);this.p2.max(a.p2);this.update();return this},grow:function(a,b){this.p1.x-=a;this.p1.y-=b;this.p2.x+=a;this.p2.y+=b;this.update();return this},update:function(a){this.w=this.p2.x-this.p1.x;this.h=this.p2.y-this.p1.y}});ElementRect=new Class({_extends:Rect,_init:function(a){var b=a.getBoundingClientRect();this.p1=new Point(b.left,b.top);this.p2=new Point(b.right,b.bottom);this.update()}});DesktopItem=new Class({on_start_drag:function(){},on_end_drag:function(){},on_click:function(a){},on_double_click:function(){},on_drop:function(){},on_select:function(){}});Icon=new Class({_extends:DesktopItem,_init:function(e,a,d,b,c){this.desktop=e;this.name=d;this.icon_id=a;this.type="icon";this.$icon=b;this.$icon_inner=b.find(".inner:first");this.$handle=b.find(".handle:first");this.pos=new Point(0,0);this.stack_pos=new Point(0,0);this.visible=false;this.title="An Icon";this.selected=false;this.icon_img=c;this.stack=null;this.update();this.total_mickies=new Point(0,0);this.animating=false;this.img_url_template="";this.icon_size=undefined;this.icon_sizes=undefined;this.favicon_sizes=undefined;this.favicon_img_url_template="";this.has_favicon=false;this.use_favicon=false;this.dragging=false},issame:function(a){return(this.pos.x==a.pos.x&&this.pos.y==a.pos.y&&this.stack_pos.x==a.stack_pos.x&&this.stack_pos.y==a.stack_pos.y&&this.icon_img==a.icon_img&&this.icon_size==a.icon_size&&this.img_url_template==a.img_url_template&&this.selected==a.selected&&this.title==a.title&&this.visible==a.visible&&this.title==a.title&&this.favicon_img_url_template==a.favicon_img_url_template&&this.has_favicon==a.has_favicon&&this.use_favicon==a.use_favicon&&this.url==a.url)},get_img_url_template:function(){if(this.use_favicon&&this.has_favicon&&this.favicon_img_url_template){return this.favicon_img_url_template}else{return this.img_url_template}},get_icon_sizes:function(){if(this.use_favicon&&this.has_favicon){return this.favicon_sizes}else{return this.icon_sizes}},set_new_icon:function(d,c){var a=this;this.icon_key=c;this.img_url_template=d.img_url;this.icon_sizes=d.sizes.slice();var b=false;$.each(a.get_icon_sizes(),function(f,e){if(e==a.icon_size){b=true;return false}return true});if(!b){this.icon_size=32}this.change_size(0);this.update()},get_dimensions:function(){return new Point(this.$icon[0].clientWidth,this.$icon[0].clientHeight)},on_hover_icon:function(){},on_start_drag:function(){if(this.animating){return}this.move_to_top();this.desktop.hide_guides();this.total_mickies.set(0,0);this.original_drag_pos=this.pos.clone();this.dragging=true;if(this.selected){$.each(this.desktop.icons,function(a,b){if(b.selected){b.dragging=true;b.original_drag_pos=b.pos.clone();b.move_to_top()}})}},drag:function(a){this.total_mickies.add(a);if(this.selected){$.each(this.desktop.icons,function(b,c){if(c.selected){c.move(a)}})}else{this.move(a)}this.desktop.highlight_hover()},on_end_drag:function(){if(this.selected){$.each(this.desktop.icons,function(c,d){if(d.selected){d.pos.restrict();d.dragging=false;d.update()}})}else{this.dragging=false;this.pos.restrict();this.update()}if(this.total_mickies.get_length()){this.desktop.undo_step()}this.desktop.remove_hover_highlights();var a=this.pos.plus(this.handle_offset);var b=this.desktop.get_hover_icon(a.x,a.y);if(b){b.on_drop(this)}this.desktop.show_guides()},move:function(a){this.pos.add(a);this.$icon.css(this.pos.css_restrict())},move_to:function(a,b){this.pos.set(a,b);this.$icon.css(this.pos.css_restrict())},move_visual_to:function(a,c){var b=new Point(a,c);this.$icon.css(b.css_restrict())},animate_to_simple:function(b,g,e,f){var c=this;var a=new Point(b,g);a.restrict();this.pos.set_point(a);function d(){c.animating=false;if(f){f()}c.update()}this.animating=true;return this.$icon.animate(a.css(),e||200,"swing",d)},animate_to:function(b,h,g){var c=this;var a=new Point(b,h);a.restrict();var f=this.pos.get_distance(a)*1.2;this.pos.set_point(a);function e(){c.animating=false;if(g){g()}c.update()}this.animating=true;return this.$icon.animate(a.css(),f,"swing",e)},toggle_select:function(a){if(this.selected){this.$icon.removeClass("selected");this.$icon.find(".highlight").hide();this.selected=false}else{this.$icon.addClass("selected");if(a===undefined){this.$icon.find(".highlight").show()}else{this.$icon.find(".highlight").fadeIn(a)}this.selected=true;this.on_select()}return this},select:function(a){this.$icon.addClass("selected");if(a===undefined){this.$icon.find(".highlight").show()}else{this.$icon.find(".highlight").fadeIn(a)}this.selected=true;this.on_select();this.desktop.state_change();return this},unselect:function(){this.selected=false;this.$icon.removeClass("selected");this.$icon.find(".highlight").hide();this.desktop.state_change();return this},setselect:function(a){if(a){this.select()}else{this.unselect()}},on_click:function(a){if(this.animating){return this}this.toggle_select();return this},move_to_top:function(){this.desktop.$desktop.find(".icon-layer:first").append(this.$icon);this.update();return this},update:function(){if(this.dragging||this.animating){return}var c=new OffsetPoint(this.$icon);var a=new OffsetPoint(this.$handle);var b=new DimensionsPoint(this.$handle);this.handle_offset=a.minus(c).plus(b.scalar_div(2));this.handle_rect=new Rect(a,a.plus(b));this.icon_inner_size=new DimensionsPoint(this.$icon_inner)},change_size:function(d,g){if(d==0){g=true}var k=this;var l=this.get_icon_sizes().slice();var c=l.slice();l.push(16,32,48,64,96,128);l.sort(function(o,n){return o-n});l.unique();var h=this.get_icon_sizes().slice();var b=0;for(var m=0;m<l.length;m++){if(l[m]==this.icon_size){break}b++}this.$icon.find(".size-down,.size-up").removeClass("disabled");b=Math.max(0,b+d);b=Math.min(b,l.length-1);if(b==0){this.$icon.find(".size-down").addClass("disabled")}else{if(b==l.length-1){this.$icon.find(".size-up").addClass("disabled")}}if(d!=0&&this.icon_size==l[b]){this.update();return}this.icon_size=l[b];var e=Math.min(this.icon_size*0.5,32);var j=Math.max(this.icon_size+e,96);var i=c[0];for(var m=0;m<c.length;m++){if(c[m]==this.icon_size){i=c[m];break}if(c[m]>this.icon_size){break}i=c[m]}var f=this.get_img_url_template().replace(/\[SIZE\]/g,i);this.img_url=pathjoin([MEDIA_URL,f]);var a=this.$icon.find(".handle");if(g){this.$icon.css({width:j});a.find("img").attr("src",k.img_url);a.css({width:this.icon_size,height:this.icon_size})}else{this.$icon.animate({width:j},150,"swing",function(){k.update();k.desktop.update_guides()});dynamic_preload(this.img_url,function(){a.find("img").attr("src",k.img_url)});a.animate({width:this.icon_size,height:this.icon_size},150,"swing",function(){k.update();k.desktop.update_guides()})}if(!k.visible){k.$icon.hide()}this.update()},get_size:function(){return this.icon_inner_size},calculate_handle_rect:function(){var c=this.$icon.find(".handle:first");var b=new OffsetPoint(c);var a=new DimensionsPoint(c);this.handle_rect=new Rect(b,b.plus(a))},get_handle_rect:function(){return this.handle_rect},state_vars:["type","name","icon_id","icon_img","icon_key","visible","title","selected","stack","pos","stack_pos","stacked","url","search_url","description","notes","img_url_template","icon_size","icon_sizes","has_favicon","use_favicon","favicon_img_url_template","favicon_sizes",],get_state:function(){var a=this;var b={};$.each(this.state_vars,function(d,c){if(a[c]&&a[c].clone){b[c]=a[c].clone()}else{b[c]=a[c]}});return b},set_state:function(b){var a=this;this.pos=new Point(0,0);this.icon_size=32;this.icon_sizes=[32];$.each(this.state_vars,function(d,c){if(b[c]!==undefined){a[c]=b[c]}if(b[c]&&(c=="pos"||c=="stack_pos")){a[c]=new Point(b[c].x,b[c].y)}});this.set_name(b.name);this.$icon.find(".search-box")[b.search_url?"show":"hide"]();if(this.visible){this.$icon.show()}else{this.$icon.hide()}this.$icon.find(".icon-label .text").html(this.name);if(this.selected){this.select()}this.update();return this},set_name:function(a){this.name=a;this.$icon.find(".icon-label .text").html(this.name)},make_invisible:function(a){if(a===undefined){this.$icon.hide()}else{this.$icon.fadeOut(a)}this.visible=false;return this},make_visible:function(a){if(a===undefined){this.$icon.show()}else{this.$icon.fadeIn(a)}this.visible=true;this.update();return this},hide_label:function(){this.$icon.find(".icon-label:first,.search-box").hide()},show_label:function(){this.$icon.find(".icon-label:first").show();if(this.search_url){this.$icon.find(".search-box").show()}},delete_icon:function(){this.$icon.fadeOut("fast",function(){$(this).remove()})}});Stack=new Class({_extends:Icon,_init:function(e,a,d,b,c){this._init_super(e,a,d,b,c);this.type="stack";this.stacked=false},is_animating:function(){var b=this;if(this.animating){return true}var a=false;$.each(this.desktop.icons,function(c,d){if(d.stack==b.icon_id){if(d.animating){a=true;return false}}return true});return a},get_animate_pos:function(c){this.$icon.offset();var e=this.$icon.find(".handle").offset();var a=new Point(e.left,e.top);var b=new Point(this.icon_size,this.icon_size);a.add(b.scalar_div(2));var d=new Point(c.$icon.width(),c.$icon.height());a.subtract(d.scalar_div(2));a.round();return a},build:function(c){var b=this;var a=c.length;var d=0;$.each(c,function(e,f){f.unselect();if(f.type=="stack"){return true}f.stack=b.icon_id;f.stack_pos=f.pos.clone();f.hide_label();f.visible=false;var g=b.get_animate_pos(f);f.animate_to(g.x,g.y,function(){f.hide_label();f.make_invisible();if(e==0){b.make_visible("fast")}if(++d==a){b.select()}});return true});this.stacked=true},unstack:function(){if(!this.stacked){return false}var a=this;var b=[];$.each(this.desktop.icons,function(e,f){if(f.stack==a.icon_id){var d=f.stack_pos.clone();b.push([f,d])}});if(!b.length){return false}this.stacked=false;var c=b[0][1].clone();$.each(b,function(e,d){c.set_point(c.get_min(d[1]))});a.desktop.unselect_all();$.each(b,function(e,d){var f=d[0];var h=a.get_animate_pos(f);var g=h;var g=d[1];if(c.x<0){g.x-=c.x}if(c.y<0){g.y-=c.y}f.move_to(h.x,h.y);f.visible=true;f.make_visible();f.hide_label();f.move_to_top();f.unselect();f.animate_to_simple(g.x,g.y,"normal",function(){f.show_label();f.update();f.select()})});return true},on_double_click:function(){if(this.is_animating()){return}if(this.stacked){if(this.unstack()){this.desktop.undo_step()}}else{if(this.restack()){this.desktop.undo_step()}}this.desktop.state_change()},restack:function(){var a=this;this.stacked=true;var b=0;$.each(this.desktop.icons,function(c,d){if(d.visible&&d.stack==a.icon_id&&d!==a){b++;d.stack_pos=d.pos.clone();d.hide_label();d.visible=false;var e=a.get_animate_pos(d);d.animate_to(e.x,e.y,function(){d.make_invisible()})}});return b},add_icons:function(b){var a=this;$.each(b,function(c,d){if(d.visible&&d!==a&&d.type!="stack"){d.stack=a.icon_id;d.stack_pos=d.original_drag_pos.clone();d.visible=false;d.animate_to(a.pos.x,a.pos.y,function(){d.make_invisible("fast")})}})},on_drop:function(b){if(this.is_animating()){return}if(b.selected){var a=this.desktop.get_selected_icons()}else{var a=[b]}this.new_icons(a)},new_icons:function(b){var a=this;if(this.stacked){this.add_icons(b)}else{$.each(b,function(c,d){if(d.type!="stack"){d.unselect();d.selected=true;d.stack=a.icon_id;d.pos=d.original_drag_pos.clone()}});this.restack()}},contains_icons:function(){var a=this;var b=false;$.each(this.desktop.icons,function(c,d){if(d.stack==a.icon_id){b=true;return false}return true});return b},on_select:function(a){if(this.is_animating()){return}if(!this.contains_icons()){this.stacked=true}},delete_icon:function(){var a=this;this.unstack();this.delete_icon_super();$.each(this.desktop.icons,function(b,c){if(c.stack==a.icon_id){c.stack=""}})}});RectSelection=new Class({_extends:DesktopItem,_init:function(c,b){var a=this;this.desktop=c;this.down_pos=b.clone();this.end_pos=b.clone();this.$selection_layer=this.desktop.$desktop.find(".selection-layer:first");this.$rect=this.$selection_layer.find(".rect-selection:first");this.update_rect();this.$rect.show()},drag:function(a){this.end_pos=this.end_pos.plus(a);this.update_rect()},on_end_drag:function(d){var a=this;var f=this.down_pos;var c=this.end_pos;var b=new Rect(f,c);this.$rect.hide();if(!d.ctrlKey&&!d.shiftKey){a.desktop.unselect_all()}$.each(this.desktop.icons,function(e,g){g.$icon_inner.removeClass("pre-selected");if(b.contains_point(g.pos.plus(g.handle_offset))){g.toggle_select()}})},update_rect:function(){var a=new Rect(this.down_pos,this.end_pos);this.$rect.css(a.css());$.each(this.desktop.icons,function(b,c){if(a.contains_point(c.pos.plus(c.handle_offset))){c.$icon_inner.addClass("pre-selected")}else{c.$icon_inner.removeClass("pre-selected")}})}});Guide=new Class({_extends:DesktopItem,_init:function(g,c,d,a,f){this.desktop=g;this.name=c;this.pos=new Point(0,0);this.mul=new Point(d,a);this.cursor=f;this.offset=new Point();this.offset.x-=10;this.offset.y-=10;var b=["top","center","bottom"][a*2];var e=["left","center","right"][d*2];this.$guide=$('<div id="guide-{{ name }}" class="guide dir-{{ yname }}-{{ xname }}"> </div>'.f({name:c,xname:e,yname:b}));g.$guide_layer.append(this.$guide);g.guides[c]=this},show:function(){this.$guide.show()},hide:function(){this.$guide.hide()},update:function(a){var b=a.clone().grow(10,10);this.pos.set_point(b.p1);this.pos.add(b.get_dimensions().vector_mul(this.mul));var c=this.pos.plus(this.offset).restrict();this.$guide.css(c.css())},on_start_drag:function(){},drag:function(c){var a=c.clone();if(this.mul.x==0.5){a.x=0}if(this.mul.y==0.5){a.y=0}if(this.mul.x==0){this.desktop.drag_bounds.p1.x+=a.x}else{this.desktop.drag_bounds.p2.x+=a.x}if(this.mul.y==0){this.desktop.drag_bounds.p1.y+=a.y}else{this.desktop.drag_bounds.p2.y+=a.y}this.desktop.drag_bounds.update();var b=this.desktop.fit_selection_to_bounds(this.desktop.drag_bounds);this.desktop.update_guides(b);this.$guide.addClass("active")},on_end_drag:function(b){var a=this.desktop.fit_selection_to_bounds(this.desktop.drag_bounds,true);this.desktop.update_guides(a);this.$guide.removeClass("active")}});Desktop=new Class({_init:function(e){var d=this;this.username=$("#username").val();this.name=$("#desktop_slug").val();this.api_url="/api/";this.$desktop=$("body");this.guides={};this.icons={};this.icon_index=1;this.mouse_down_pos=new Point(0,0);this.last_mouse_pos=new Point(0,0);this.drag_object=null;this.drag_window=false;this.rect_selection=null;this.icon_physical_size=new Point(110,80);this.icon_size=new Point(120,80);this.undo_stack=[];this.undo_position=-1;this.active_dialog="";this.$top=$(document);this.$body=$("body");this.$icon_layer=$(".icon-layer:first");this.$guide_layer=$(".guide-layer:first");this.undo_step_level=0;this.save_position=0;this.update_position=0;var g=this;$(".options-link").click(function(){$(".options").toggle()});function c(j){if(g.drag_object!==null){j.stopPropagation();var i=new Point(j.pageX,j.pageY);var h=i.minus(g.last_mouse_pos);g.drag_object.drag(h);g.last_mouse_pos=i.clone();return false}return true}this.$top.mousemove(c);function b(k){var i=clock()-g.mouse_down_time;var j=new Point(k.pageX,k.pageY);var m=false;var l=null;if(g.drag_object){if(g.mouse_down_pos.get_distance(j)<3&&i<0.5){if(!k.ctrlKey&&!k.shiftKey){g.unselect_all(g.drag_object);$(".menu").fadeOut("fast")}var h=clock();if(g.drag_object.last_click_time&&h-g.drag_object.last_click_time<0.5){g.drag_object.last_click_time=clock();l=g.drag_object;m=true}else{g.drag_object.last_click_time=clock();g.drag_object.on_click(k)}}}g.end_drag(k);if(m&&l){l.on_double_click()}g.mouse_down_time=null;g.drag_object=null;g.state_change();return false}this.$top.mouseup(b);function f(h){if(d.active_dialog){dialogs[d.active_dialog].$dialog.center(true)}}$(window).resize(f);function a(l){if(l.target.tagName!="A"&&l.target.tagName!="UL"){$(".menu").fadeOut("fast")}if(l.target.tagName=="HTML"){var j=new Point(l.clientX,l.clientY);var k=$("#edgemarker")[0];var h=k.getBoundingClientRect();if(j.x>h.left||j.y>h.top){return true}l.stopPropagation();g.mouse_down_time=clock();var i=new Point(l.pageX,l.pageY);g.mouse_down_pos=i.clone();g.last_mouse_pos=i.clone();g.start_drag_desktop(i);g.drag_window=true;return false}return true}this.$top.mousedown(a);$buttons_layer=$(".buttons-layer:first");$buttons_layer.find(".button-new").click(function(){d.show_dialog("new-icon")});$buttons_layer.find(".button-new-stack").click(function(){d.stack()});$buttons_layer.find(".button-info").click(function(){d.show_dialog("edit-icon")});$buttons_layer.find(".button-arrange-square").click(function(){d.arrange_grid(true)});$buttons_layer.find(".button-arrange-grid").click(function(){d.arrange_grid(false)});$buttons_layer.find(".button-arrange-circle").click(function(){d.arrange_circle()});$buttons_layer.find(".button-arrange-horizontal").click(function(){d.arrange_horizontal()});$buttons_layer.find(".button-arrange-vertical").click(function(){d.arrange_vertical()});$buttons_layer.find(".button-undo").click(function(){d.undo()});$buttons_layer.find(".button-redo").click(function(){d.redo()});$buttons_layer.find(".button-delete").click(function(){d.delete_icon()});$buttons_layer.find(".button-create-stack").click(function(){d.instack()});$buttons_layer.find(".button-unstack").click(function(){d.outstack()});$(".save-desktop:first").click(function(){if(NEW_DESKTOP){var h=JSON.stringify(g.get_state());g.api("set_new_desktop",{definition:h});show_signup=function(){g.show_dialog("signup")};popup("new_desktop",{label:"Create a free account",callback:function(){setTimeout(show_signup,100);return true}},{label:"Cancel"});return false}if(d.is_saved()||confirm("Save changes to this desktop?")){d.finish_editing()}return false});$(".discard-desktop:first").click(function(){if(d.save_position==d.update_position||confirm("Discard your changes to this desktop?")){var h=$("#view_url").val();allow_exit=true;window.location=h}return false});$(".options-menu:first").click(function(){return show_menu("options")});$(".refresh-icons").click(function(){var i=d;function h(){var j="";$.each(i.icons,function(k,l){if(l.url){j+=l.url+"|"}});d.api("refresh_icons",{urls:j},function(m){var k=m.response.favicons;var l=0;i.unselect_all();$.each(i.icons,function(n,q){if(k[q.url]){var o=k[q.url];if(q.favicon_img_url_template!=o.favicon_img_url_template){q.favicon_img_url_template=o.favicon_img_url_template;q.favicon_sizes=o.favicon_sizes.slice();q.has_favicon=true;q.use_favicon=true;q.change_size(0,true);q.select();l++}}});if(!l){desktop_alert("Refresh icons","No new icons to update.")}else{if(l==1){i.undo_step();desktop_alert("Refresh icons","1 icon was updated.")}else{i.undo_step();desktop_alert("Refresh icons","{{ count }} icons were updated.".f({count:l}))}}});return true}popup("alert",{label:"Refresh icons",callback:h},{},{title:"Refresh Icons",message:"This will replace the icons with newer versions (if available)"});return false});allow_exit=false;window.onbeforeunload=function(h){if(allow_exit){return undefined}if(d.save_position!=d.update_position){return"You have un-saved changes to your desktop."}return undefined}},is_blank:function(){for(var a in this.icons){return false}return true},api:function(d,b,c){api_call_id++;var a=this.api_url+d+"/";b.call_id=api_call_id;$.post(a,b,c,"json");return api_call_id},finish_editing:function(){var a=this;this.save(function(){var b=$("#view_url").val();window.location=b})},save_desktop:function(b){var a=this;this.save(b||function(){alert("TODO: Saved!")})},discard_changes:function(){var a=$("#view_url").val();window.location=a},state_change:function(){if(check_state_timeout!=null){window.clearTimeout(check_state_timeout)}var b=this;function a(){b.check_selected();b.place_guides()}check_state_timeout=setTimeout(a,50)},raise_button:function(b,a){var c={duration:250,easing:"swing",queue:false};if(a){$("."+b).animate({top:"-68px"},c)}else{$("."+b).animate({top:"0px"},c)}},get_selected_stack:function(){for(var b in this.icons){var a=this.icons[b];if(a.selected&&a.type=="stack"){return a}}return null},check_selected:function(){if(this.active_dialog){var a=this;var d=["new","delete","new-stack","info","create-stack","unstack","undo","redo","arrange-horizontal","arrange-vertical","arrange-square","arrange-grid","arrange-circle"];$.each(d,function(f,g){a.raise_button("button-"+g,false)});return}var c=this.count_selected();this.raise_button("button-new",true);this.raise_button("button-delete",c);this.raise_button("button-info",c==1);this.raise_button("button-new-stack",this.any_selected("icon"));var b=this.any_stacks_selected();var e=this.get_selected_stack();if(e&&!e.contains_icons()){this.raise_button("button-create-stack",false);this.raise_button("button-unstack",false)}else{this.raise_button("button-create-stack",b&&!e.stacked);this.raise_button("button-unstack",b&&e.stacked)}this.raise_button("button-undo",this.undo_position>0);this.raise_button("button-redo",this.undo_position<this.undo_stack.length-1);this.raise_button("button-arrange-horizontal",c>1);this.raise_button("button-arrange-vertical",c>1);this.raise_button("button-arrange-square",c>2);this.raise_button("button-arrange-grid",c>2);this.raise_button("button-arrange-circle",c>2)},start_drag:function(b,a){this.mouse_down_pos=b.clone();this.last_mouse_pos=b.clone();this.drag_object=a;this.mouse_down_time=clock();if(this.drag_object){this.drag_object.on_start_drag()}},end_drag:function(a){if(this.drag_object){this.drag_object.on_end_drag(a)}this.drag_window=false;this.mouse_down_pos=null;this.drag_object=null},start_drag_desktop:function(a){this.mouse_down_pos=a.clone();this.last_mouse_pos=a.clone();this.rect_selection=new RectSelection(this,a);this.drag_object=this.rect_selection},rebind:function(){var a=this;this.$icon_layer.find(".handle").unbind().mousedown(function(f){var d=$(this);var b=d.attr("id").remainder("-");var c=a.icons[b];a.start_drag(new Point(f.pageX,f.pageY),c);return false});this.$icon_layer.find(".icon-label").unbind().mousedown(function(f){var d=$(this).parent();var b=d.attr("id").remainder("-");var c=a.icons[b];a.start_drag(new Point(f.pageX,f.pageY),c);return false});this.$icon_layer.find(".size-change").unbind("click").click(function(g){$this=$(this);var h=$this.attr("id");var f=h.split("_");var c=0;if(f[0]=="up"){c=+1}else{c=-1}var d=a.icons[f[1]];var b=a.get_selected_icons();if(false&&d.selected){$(b).each(function(i,e){e.change_size(c)});a.undo_step()}else{d.change_size(c);a.undo_step()}});this.state_change()},bind_guides:function(){var a=this;this.$guide_layer.find(".guide").unbind().mousedown(function(f){var d=$(this);var c=d.attr("id").split("-")[1];var b=a.guides[c];a.start_drag(new Point(f.pageX,f.pageY),b);return false})},new_icon_id:function(b){var a=b+"-"+(++this.icon_index);if(this.icons[a]){var c=1;$.each(this.icons,function(d,e){c=Math.max(c,parseInt(e.icon_id.split("-")[1]))});return b+"-"+(++c)}return a},new_icon:function(r,i){var e="icon";var q=Icon;if(r.type=="stack"){q=Stack}var a=r.icon_id;if(!a){a=this.new_icon_id(e)}r.icon_id=a;var m=get_icon_sizes(r).slice();var n=m[0];for(var t=0;t<m.length;t++){if(m[t]==r.icon_size){n=m[t]}n=m[t];if(m[t]>=r.icon_size){break}}var h=get_img_template(r).replace(/\[SIZE\]/g,n);h=pathjoin([MEDIA_URL,h]);var o=Math.max(r.icon_size*1.5,96);var b={icon_id:a,img_url:h,icon_size:n,icon_width:o,name:r.name};for(var c in r){b[c]=r[c]}var d=icon_template.f(b);this.$icon_layer.append(d);var g=$("."+a);var l=r.pos;if(!l){l=new Point()}var j=new q(this,a,"",g,h);if(l){j.move_to(l.x,l.y)}if(!i){j.set_state(r)}j.update();if(j.search_url){j.$icon.find(".search-box").show()}if(r.visible){j.make_visible()}var f=Math.min(r.icon_size*0.5,32);var o=Math.max(r.icon_size+f,96);g.css({width:o});this.icons[a]=j;this.rebind();return j},add_icon:function(l,k,f,c,n,g,o){var b=new Point(l,k);n=n||Icon;g=g||"icon";var a=this.new_icon_id(g);var m=Math.max(DEFAULT_ICON_SIZE*1.5,96);var i=f.replace(/\[SIZE\]/g,DEFAULT_ICON_SIZE);i=pathjoin([MEDIA_URL,i]);var d={icon_id:a,img_url:i,icon_width:m,icon_size:DEFAULT_ICON_SIZE};var e=icon_template.f(d);this.$icon_layer.append(e);var h=$("."+a);h.css(b.css());var j=new n(this,a,"",h,i);j.icon_size=DEFAULT_ICON_SIZE;j.move_to(b.x,b.y);j.img_url_template=f;j.update();if(!c){j.make_visible()}this.icons[a]=j;this.rebind();return j},make_stack:function(x,y){var new_stack=this.add_icon(x,y,DEFAULT_STACK_URL,true,Stack,"stack");new_stack.icon_sizes=eval($("#stack_icon_sizes").val());new_stack.icon_key=$("#stack_icon_key").val();new_stack.set_name("New Stack");return new_stack},stack:function(){var c=[];$.each(this.get_selected_icons(),function(d,e){if(e.type=="icon"){c.push(e)}});if(!c.length){return false}var b=this.get_icon_centroid();var a=this.make_stack();a.visible=true;a.move_to(b.x,b.y);a.$icon.fadeIn();a.build(c);this.undo_step();this.state_change();return true},unstack:function(){var a=0;$.each(this.get_selected_icons(),function(b,c){if(c.type=="stack"){if(c.unstack()){a++}}});if(a){this.undo_step()}this.state_change()},instack:function(){var a=0;$.each(this.get_selected_icons(),function(b,c){if(c.type=="stack"){if(c.restack()){a++}}});if(a){this.undo_step()}this.state_change()},outstack:function(){var a=0;$.each(this.get_selected_icons(),function(b,c){if(c.type=="stack"){if(c.unstack()){a++}}});if(a){this.undo_step()}this.state_change()},delete_icon:function(){var a=this;$.each(this.get_selected_icons(),function(b,c){delete a.icons[c.icon_id];c.delete_icon()});this.undo_step();this.state_change()},unselect_all:function(a){$.each(this.icons,function(b,c){if(c!==a){c.unselect()}});this.state_change()},count_selected:function(){var a=0;$.each(this.icons,function(b,c){if(c.selected&&c.visible){a++}});return a},any_selected:function(b){if(b===undefined){for(var a in this.icons){var c=this.icons[a];if(c.selected&&c.visible){return true}}}else{for(var a in this.icons){var c=this.icons[a];if(c.selected&&c.visible&&c.type==b){return true}}}return false},any_stacks_selected:function(){for(var a in this.icons){var b=this.icons[a];if(b.selected&&b.visible&&b.type=="stack"){return true}}return false},any_icons_selected:function(){for(var a in this.icons){var b=this.icons[a];if(b.selected&&b.visible&&b.type=="icon"){return true}}return false},any_two_selected:function(){var c=0;for(var a in this.icons){var b=this.icons[a];if(b.selected&&b.visible){c++}if(c==2){return true}}return false},get_max_icon_size:function(a){if(a==undefined){a=this.get_selected_icons()}max_size=new Point(0,0);$.each(a,function(b,c){max_size.max(c.get_size())});return max_size},get_total_radius:function(a){if(a==undefined){a=this.get_selected_icons()}total_radius=0;$.each(a,function(d,f){var c=f.get_size();var b=c.x;var e=c.y;total_radius+=Math.sqrt(b*b+e*e)});return total_radius},arrange_horizontal:function(){var a=this.get_selection_handle_bound();var b=a.get_center();var g=this.count_selected();var f=this.get_max_icon_size();var j=f.x;var d=f.y;if(g<=1){return false}var c=[];var e=new Point(b.x-((g-1)*j)/2,b.y);for(var i=0;i<g;i++){c.push(new Point(e.x+i*j,e.y))}this.arrange(c);return true},arrange_vertical:function(){var a=this.get_selection_handle_bound();var b=a.get_center();var g=this.count_selected();var f=this.get_max_icon_size();var j=f.x;var d=f.y;if(g<=1){return false}var c=[];var e=new Point(b.x,b.y-((g-1)*d)/2);for(var i=0;i<g;i++){c.push(new Point(e.x,e.y+i*d))}this.arrange(c);return true},arrange_grid:function(s,e,d){var r=this.get_selected_icons();var k=this.count_selected();if(k<=1){return false}var c=this.get_icon_center();if(d){var q=$window.width();var i=$window.height();var b=new Rect(new Point(32,32),new Point(q-128,i-128))}else{var b=this.get_selection_handle_bound()}var t=this.get_max_icon_size();if(s){var o=Math.ceil(Math.sqrt(k))}else{var o=Math.round(b.w/t.x)+1}var g=new Point(o,Math.ceil(k/o));var j=b.p1.clone();var f=[];for(var m=0;m<g.y;m++){for(var n=0;n<g.x;n++){var l=new Point(j.x+n*t.x,j.y+m*t.y);f.push(l);if(f.length>=r.length){break}}if(f.length>=r.length){break}}this.arrange(f,e);return true},center_icons:function(){var e=$(window);var c=new Point(e.width(),e.height());var b=this.get_selection_points_bound();var a=b.get_dimensions();var d=c.minus(a).scalar_div(2).minus(b.p1);$.each(this.get_selected_icons(),function(f,g){g.move(d)})},offset_icons:function(a){$.each(this.get_selected_icons(),function(b,c){c.move(a)})},arrange_circle:function(){var z=this.get_selected_icons();if(z.length<=2){return false}var g=this.get_selection_handle_bound();var v=g.get_center();var j=[];var f=this.get_total_radius();var n=f/z.length;var c=(2*Math.PI)/z.length;var t=(n*z.length-1)/Math.PI;var o=t/2;var b=this.get_max_icon_size();var m=b.x;var s=b.y;var u=m/2;var e=s/2;for(var q=0;q<z.length;q++){var C=q*c;var D=C+Math.PI;var l=Math.sin(D)*o;var k=Math.cos(D)*o;j.push(new Point(v.x+l,v.y+k))}this.arrange(j);return true},arrange_explode:function(s){var q=this.get_selected_icons();if(q.length<2){return false}var e=this.get_selection_bound();var f=e.get_center();var i=[];var m=100;var h=(2*Math.PI)/q.length;var k=(m*q.length)/Math.PI;var c=k/2;var j=this.icon_size.x/2;var g=this.icon_size.y/2;for(var o=0;o<Math.PI*2;o+=h){var c=50+Math.random()*(c);var b=Math.random()*2*Math.PI;var n=Math.sin(b)*c;var l=Math.cos(b)*c;i.push(new Point(f.x+n-j,f.y+l-g))}this.arrange(i);return true},restrict_positions:function(a){var c=new Point();$.each(a,function(d,e){if(e.x<0){c.x=Math.min(c.x,e.x)}if(e.y<0){c.y=Math.min(c.y,e.y)}});var b=[];$.each(a,function(d,e){b.push(e.minus(c).round())});return b},arrange:function(f,b){var j=this.get_selected_icons();var h=0;var g=[];f=f.slice();var a=new Point();for(var e=0;e<f.length;e++){a.add(f[e])}a=a.scalar_div(f.length);function d(m,l){var k=m.get_distance(a);var i=l.get_distance(a);return k-i}f=f.sort(d);$.each(f,function(m,l){var n=0;var k=100000;$.each(j,function(o,i){var r=i.pos.plus(i.handle_offset);var q=r.get_distance(l);if(q<k){n=o;k=q}});h+=k;icon=j.splice(n,1)[0];l.subtract(icon.handle_offset);g.push([icon,l.clone()]);return !!(j.length)});var c=new Point();$.each(g,function(l,k){var m=k[1];if(m.x<0){c.x=Math.min(c.x,m.x)}if(m.y<0){c.y=Math.min(c.y,m.y)}});$.each(g,function(m,k){var n=k[0];var l=k[1];l.subtract(c).round();if(b){n.move_to(l.x,l.y)}else{n.animate_to(l.x,l.y)}});if(h){this.undo_step()}},get_selected_icons:function(){var a=[];$.each(this.icons,function(b,c){if(c.selected&&c.visible){a.push(c)}});return a},get_icon_center:function(){var b=0;var a=new Point();$.each(this.icons,function(c,d){if(d.selected&&d.visible){a.add(d.pos.plus(d.handle_offset));b++}});return a.scalar_div(b)},get_icon_centroid:function(){var b=0;var a=new Point();$.each(this.icons,function(c,d){if(d.selected&&d.visible){a.add(d.pos);b++}});return a.scalar_div(b)},get_selection_handle_bound:function(){var b=this;var c=new Point(10000,10000);var a=new Point(-10000,-10000);$.each(this.icons,function(d,e){if(e.selected&&e.visible){var f=e.pos.plus(e.handle_offset);c.min(f);a.max(f)}});return new Rect(c,a)},get_selection_bound:function(){var b=this;var c=new Point(10000,10000);var a=new Point(-10000,-10000);$.each(this.icons,function(d,e){if(e.selected&&e.visible){var g=e.pos.clone();var f=g.plus(e.get_size());c.min(g).min(f);a.max(g).max(f)}});return new Rect(c,a)},get_selection_points_bound:function(){var b=new Point(10000,10000);var a=new Point(-10000,-10000);$.each(this.icons,function(c,d){if(d.selected&&d.visible){var e=d.pos.plus(d.handle_offset);b.min(e);a.max(e)}});return new Rect(b,a)},get_state:function(){var a=this;var b={};b.icon_size=this.icon_size;b.icons=[];$(".icon-layer .icon").each(function(){var c=$(this).attr("id");var d=a.icons[c];if(d){if(d.stack){if(!a.icons[d.stack].stacked){d.stack_pos.set_point(d.pos)}}b.icons.push(d.get_state())}});b.desktop_name=this.name;return b},set_state:function(b){var a=this;if(!("icons" in this)){this.icons={}}this.name=b.desktop_name;var c={};$.each(this.icons,function(e,d){c[e]=true});$.each(b.icons,function(f,e){var h=e.icon_id;if(h in c){var g=a.icons[h];c[h]=false;if(g.issame(e)){return true}g.set_state(e);g.move_to(e.pos.x,e.pos.y);g.change_size(0,true);if(!g.selected&&e.selected){g.move_to_top()}g.setselect(e.selected);if(g.visible){g.make_visible();g.show_label()}else{g.make_invisible()}}else{var d={};$.each(e,function(j,i){d[j]=e[j]});c[h]=false;var g=a.new_icon(d);g.change_size(0)}g.update();return true});$.each(c,function(e,d){if(d&&e in a.icons){a.icons[e].$icon.remove();delete a.icons[e]}});this.state_change()},begin_undo_step:function(){this.undo_step_level++},end_undo_step:function(){if(!--this.undo_step_level){this.undo_step()}},undo_step:function(){if(this.undo_step_level){return}var b=this.get_state();if(this.undo_stack.length){var a=this.undo_position-this.undo_stack.length-1;this.undo_stack=this.undo_stack.splice(0,this.undo_position+1)}this.undo_stack.push(b);this.undo_position++;this.update_position++},clear_undo:function(){this.undo_stack=[];this.undo_position=-1},undo:function(){if(!this.undo_position){return false}this.undo_position--;var a=this.undo_stack[this.undo_position];this.set_state(a);this.state_change();return true},redo:function(){if(this.undo_position==this.undo_stack.length-1){return false}this.undo_position++;var a=this.undo_stack[this.undo_position];this.set_state(a);this.state_change();return true},place_guides:function(){this.guides={};if(this.count_selected()<2){this.$guide_layer.empty();return}if(!this.guides.length){this.$guide_layer.empty();var c=new Guide(this,"tl",0,0,"nw-resize");var e=new Guide(this,"tr",1,0,"ne-resize");var d=new Guide(this,"bl",0,1,"sw-resize");var h=new Guide(this,"br",1,1,"se-resize");var f=new Guide(this,"t",0.5,0,"n-resize");var i=new Guide(this,"l",0,0.5,"w-resize");var g=new Guide(this,"b",0.5,1,"s-resize");var b=new Guide(this,"r",1,0.5,"e-resize");this.bind_guides()}this.update_guides();if(!this.guides_hidden){$.each(this.guides,function(k,j){j.show()})}var a=this.get_selection_points_bound();this.original_bounds=a.clone();this.drag_bounds=a.clone()},update_guides:function(c){var a=this;var b=c||a.get_selection_bound();$.each(a.guides,function(e,d){d.update(b)})},hide_guides:function(){this.guides_hidden=true;$.each(this.guides,function(b,a){a.hide()})},show_guides:function(){this.guides_hidden=false},fit_selection_to_bounds:function(e,a){var b=this.original_bounds;var g=b.get_dimensions();var f=e.get_dimensions();var c=new Point(1000000,100000);var d=new Point();$.each(this.get_selected_icons(),function(j,k){var m=k.pos.clone().plus(k.handle_offset);var l=m.minus(b.p1).vector_div(g);var h=e.p1.plus(l.vector_mul(f)).minus(k.handle_offset).restrict();if(a){k.move_to(h.x,h.y)}else{k.move_visual_to(h.x,h.y)}icon_extent=h.plus(k.get_size());c.min(h).min(icon_extent);d.max(h).max(icon_extent)});icon_bounds=new Rect(c,d);if(a){this.undo_step()}return icon_bounds},get_hover_icon:function(a,e){var b=this;var c=new Point(a,e);var d=null;$.each(this.icons,function(f,g){if(g.visible&&g!==b.drag_object&&g.get_handle_rect().contains_point(c)){d=g;return false}return true});return d},highlight_hover:function(){var a=this.drag_object.pos.plus(this.drag_object.handle_offset);var b=this.get_hover_icon(a.x,a.y);if(b!==this.last_hover_icon){if(b){b.on_hover_icon()}}this.last_hover_icon=b;this.$icon_layer.find(".icon").removeClass("hover-over");if(b){b.$icon.addClass("hover-over")}},remove_hover_highlights:function(){this.$icon_layer.find(".icon").removeClass("hover-over")},is_saved:function(){var a=this;return a.save_position==a.update_position},save:function(e){var a=this;var c=this.get_state();var d=JSON.stringify(c);function b(f){if(f.response.result=="fail"){popup_alert("Save Desktop",f.response.msg);return null}else{a.save_position=a.update_position;if(e){return e()}return true}}this.api("set_desktop",{definition:d,username:this.username||"",desktop:this.name},b)},load:function(){var self=this;this.api("get_desktop",{username:this.username,desktop:this.name},function(remote){var state=eval("["+remote.response.definition+"]")[0];if(state){self.clear_undo();self.set_state(state);self.undo_step()}})},shade:function(a){if(a){$(".dialog-shade").fadeIn("fast")}else{$(".dialog-shade").fadeOut("fast")}},show_dialog:function(b,a){this.active_dialog=b;this.check_selected();if(!a){this.shade(true)}dialogs[b].show(this)},on_new_icons:function(c,a){var b=this;var d=[];b.unselect_all();$.each(c,function(e,g){var f=b.new_icon(g);f.name=g.name;f.select();f.move_to_top()});b.begin_undo_step();if(!a){b.arrange_grid(true,true);b.center_icons()}else{b.arrange_grid(false,true,true);b.offset_icons(new Point(32,32))}b.end_undo_step()}});Dialog=new Class({_init:function(b){var a=this;a.$dialog=$("#"+a.name+"-dialog");dialogs[a.name]=a;a.on_post_init()},on_post_init:function(){},on_pre_show:function(){},on_post_show:function(){},show:function(a){this.owner=a;this.on_pre_show();$(".dialog-layer").show();this.on_post_show();this.$dialog.fadeIn("fast");this.$dialog.center()},dismiss:function(){this.$dialog.fadeOut("fast");$(".dialog-layer:first").hide();this.owner.shade(false);this.owner.active_dialog="";this.owner.check_selected()}});ThrobberDialog=new Class({_extends:Dialog,name:"loading"});loading_dialog=new ThrobberDialog();SignupDialog=new Class({_extends:Dialog,name:"signup",on_post_show:function(){this.$dialog.find("iframe").show().attr("src","/accounts/create-inline/")}});signup_dialog=new SignupDialog();$(function(){DEFAULT_ICON_SIZE=parseInt($("#default_icon_size").val());DEFAULT_STACK_URL=$("#stack_icon_url").val();DEFAULT_STACK_SIZES=eval($("#stack_icon_sizes").val());MEDIA_URL=$("#media_url").val();NEW_DESKTOP=$("#new_desktop").val()=="True";app.desktop=new Desktop(".desktop");desktop=app.desktop;if(desktop_initial_state){desktop.set_state(desktop_initial_state)}desktop.undo_step();desktop.check_selected();desktop.save_position=desktop.update_position;if(new_urls){desktop.show_dialog("loading");var $throbber=$("#loading-dialog");function on_new_icons(remote){desktop.shade(false);loading_dialog.dismiss();desktop.on_new_icons(remote.response.icons,true)}setTimeout(function(){desktop.api("add_icons",{urls:new_urls.join("|")},on_new_icons)},50)}else{var dialog=$("#initial_dialog").val();if(dialog){if(dialog=="hai"){popup("hai")}else{desktop.show_dialog(dialog)}}else{if(desktop.is_blank()){popup("hai")}}}});