/*
 * desktop.js compiled on 2012-02-21 15:15:02 +0100
 */
$.sammy(function(){this.use(Sammy.Title)});$.desktop=$.sammy();$.events={};$.helpers={};$.controllers={};function boot_widgets(){$("#dock").dock();$.layout=new $.ui.layout(".layout");$.layout._init();$.viewport=new $.exvo.viewport("#viewport");$.viewport._init()}
$(document).ready(function(){if(window.user.user.role_name=="anonymous")var home="#!/pages/intro";else var home="#!/"+window.home;boot_widgets();$("select, input:checkbox, input:radio, input:file").not(".raw").uniform();$("select.raw.iced").uniform({selectClass:"selector ice"});$.desktop.run(home)});
$(document).ready(function(){var footer=$(".bottom.bar");$("button#manage",footer).switchable({on:function(){$(this).addClass("action").text($(this).dataset("done"));$("a.add").attr("disabled","disabled");$("#shortcuts .shortcut button").show()},off:function(){$(this).removeClass("action").text($(this).dataset("manage"));$("a.add").removeAttr("disabled");$("#shortcuts .shortcut button").hide()}});$(".dialog .cancel").click(function(){$(this).closest(".dialog").dialog("close");return false});var preview_bar=
$(".bottom.bar.preview");$(".dialog#create_account").dialog({autoOpen:false,modal:true,width:500,resizable:false,dialogClass:"info",buttons:{"Continue":function(){$(this).dialog("close")},"Create Account":function(){window.location="/auth/interactive?x_sign_up=true"}},open:function(){$(".ui-dialog-buttonpane button:last").addClass("action")}});$.validator.addMethod("required_label",$.validator.methods.required,t("require.label"));$.validator.addMethod("required_url",$.validator.methods.required,t("require.url"));
$.validator.addMethod("valid_url",function(value,element){if(!/^(http|https):\/\//.test(value))value="http://"+value;return $.validator.methods.url.call(this,value,element)},t("errors.valid_url"));$.validator.addClassRules("validate_url",{required_url:true,valid_url:true});$.validator.addClassRules("validate_label",{required_label:true});$("a.add , .add_site").live("click",function(){$(this).toggle_popup({width:400,height:135,popup:".popup_container.new_shortcut",placement:"bottom",modal:true,startOpen:true,
multi:false,escapeable:true,clickOverlayToClose:false,before_show:function(element,popup,widget){$(element).addClass("on");$(popup).find("button.create").removeAttr("disabled");$(popup).find('input[name="shortcut[url]"]').val("")},after_show:function(element,popup,widget){$(popup).find(".create_shortcut").focus();$(popup).find("form").validate({submitHandler:function(form){$(popup).find("button.create").attr("disabled","disabled");var value=$(form).find(".address").val();if(!/^(http|https):\/\//.test(value))value=
"http://"+value;$.ajax({type:$(form).attr("method"),url:$(form).attr("action"),dataType:"json",data:{shortcut:{url:value}},success:function(data){if(window.user.user.role_name=="anonymous"&&$("#viewport .shortcut[data-system=false]").length==0)$(".dialog#create_account").dialog("open");if($("#shortcuts.slideshow").length){var shortcut=$($.render.item(data,$.templates.shortcuts.item,$.modifiers.shortcut));var slide=$("#shortcuts.slideshow").slideshow("last_slide");slide.append(shortcut);shortcut.shortcut();
shortcut.shortcut("glow",2E3);$("#shortcuts.slideshow").slideshow("slide_to_last")}},error:function(xhr){$(popup).find("button.create").removeAttr("disabled");var status=xhr.status;var data=$.parseJSON(xhr.responseText);if(status==422)$.each(data.errors,function(){$.notifier.warning(this[0]+" "+this[1])});else $.notifier.warning(data.status)},complete:function(){$(popup).find(".close").trigger("click")}})},invalidHandler:function(form,validator){$.notifier.error(validator.errorList[0].message)},errorPlacement:function(error,
element){}});$(popup).find(".action.create").unbind("click").click(function(){$(popup).find("#shortcut_title").val($(popup).find(".address").val());$(popup).find("form").trigger("submit");return false})},after_hide:function(element,popup,widget){$(element).removeClass("on")}});return false});$(".bar_icon.cfs_limits").cfs_limits()});$.sammy(function(){this.use(Sammy.Title);this.setTitle("Exvo Desktop -");this.use(Sammy.Router,function(){this.get("#!/desktop","desktops#show");this.get("#!/sites","shortcuts#index");this.get(/^#!\/sites\/(.*)/,"shortcuts#show");this.get("#!/apps","apps#index");this.get("#!/apps/:slug","apps#show");this.get(/^#!\/search\/(.*)/,"searches#index");this.get("#!/pages/tour","pages#tour");this.get("#!/pages/intro","pages#intro");this.get("#!/pages/:slug","pages#show")})});function confirm_dialog(callback){$(".dialog#confirm").dialog("destroy");$(".dialog#confirm").dialog({width:500,height:220,autoOpen:false,modal:true,dialogClass:"confirm",buttons:{"Cancel":function(){$(this).dialog("close")},"Apply":callback},open:function(event,ui){var buttons=$(this).parent().find(".ui-dialog-buttonpane button");buttons.last().addClass("action")}}).dialog("open")}
function confirm_content(title,info,confirmation){var dialog=$(".dialog#confirm");$(dialog).parent().find(".ui-dialog-title").text(title);$(dialog).find("p").text(info);$(dialog).find("h6").text(confirmation)}
$(document).ready(function(){$("button#toggle_default_shortcuts").click(function(){confirm_dialog(function(){var button=$("button#toggle_default_shortcuts");var dialog=$(this);var type=button.hasClass("on")?"post":"delete";$.ajax({url:"/desktop",type:type,success:function(flash){$.notifier.notice(flash.notice);if(window.location.pathname=="/")$.desktop.mode("desktop","");button.toggleClass("on off").text(function(){return button.hasClass("on")?button.dataset("on"):button.dataset("off")});dialog.dialog("close")}})});
if($(this).hasClass("on"))var state="on";else var state="off";confirm_content($(this).dataset(state),$(this).dataset("info_"+state+""),$(this).dataset("confirmation_"+state+""));$(".dialog#confirm").dialog("open");return false})});$(document).keypress(function(event){var meta_key=event.ctrlKey||event.metaKey,refresh_key=event.charCode==114&&meta_key,search_key=event.charCode==102&&meta_key;if(refresh_key&&$.config.env!="development"){event.preventDefault();$.desktop.refresh()}if(search_key){event.preventDefault();$("#dock button.search").trigger("click")}});
$.desktop.bind("run",function(){$("#dock").bind("submitquery",function(event,data){$.desktop.setLocation("#!/search/"+encodeURIComponent(data.query))});$.viewport.resize();$(".transit").transit({container:"#viewport .slides",size_from:"#viewport .scrolling"});$(window).bind("resize",$.debounce(250,function(){var items=$("#viewport .slideshow .item"),location=$.desktop.last_location;if(location=="#!/apps"){items.detach().appendTo(".transit.apps");$(".transit.apps").transit("push")}else if(location==
"#!/sites"){items.detach().appendTo(".transit.sites");$(".transit.sites").transit("push")}else if(/^#!\/search\/(.*)/.test(location)){items.detach().appendTo(".transit.searches");$(".transit.searches").transit("push")}}));$(".transit").bind("change",function(event,data){$(".slideshow").width(data.width);$(".slideshow").slideshow("destroy").slideshow({controls:function(){return $(".bottom.bar:visible").find(".pagination div")}})})});$.desktop.after(function(e,data){$.viewport.resize();$(".bottom.bar .cell").height(26)});
$.desktop.before(function(context){var app=context.app;$.viewport.clear();$.viewport.set_background("transparent");$(".tool.bar").hide();$(".bottom.bar").hide();$(".bottom.bar .pagination").html("<div />");if(app.contextMatchesOptions(context,app.paths.get["shortcuts#index"])){$(".tool.bar.sites").show();$(".bottom.bar.sites").show();$("#restore_default_shortcuts").show()}if(app.contextMatchesOptions(context,app.paths.get["desktops#show"])){$(".bottom.bar.desktop").show();$(".tool.bar.desktop").show()}if(app.contextMatchesOptions(context,
"#!/pages/intro"))$.viewport.set_background("#fff");if(app.contextMatchesOptions(context,"#!/pages/tour"))$.viewport.set_background("#fff");if(app.contextMatchesOptions(context,app.paths.get["apps#show"]))$(".tool.bar.apps").show();if(app.contextMatchesOptions(context,app.paths.get["searches#index"]))$.viewport.set_background("#fff");if(app.contextMatchesOptions(context,app.paths.get["apps#index"])){$(".bottom.bar.apps").show();$(".tool.bar.apps").show()}});$.extend($.helpers,{apps:{init_sortable:function(){var container=$("#apps");container.sortable({connectWith:"#dock .sortable",items:".shortcut",placeholder:"placeholder",helper:"clone",revert:true,start:function(event,ui){$(this).dataset("next",ui.item.next().next().dataset("id"));$(this).dataset("prev",ui.item.prev().dataset("id"));ui.helper.css("cursor","move")},remove:function(event,ui){var item_id=ui.item.dataset("id");var next_id=$(this).dataset("next");var prev_id=$(this).dataset("prev");var next_shortcut=
$("#viewport .shortcut[data-id="+next_id+"]");var prev_shortcut=$("#viewport .shortcut[data-id="+prev_id+"]");if(next_shortcut.length)next_shortcut.before(ui.item.clone());else if(prev_shortcut.length)prev_shortcut.after(ui.item.clone());else $("#viewport .slide").append(ui.item.clone());$("#viewport .shortcut[data-id="+item_id+"]").shortcut()},update:function(event,ui){$.ajax({dataType:"json",type:"PUT",url:$(ui.item).dataset("resource_url"),data:{shortcut:{"next_id":ui.item.next().dataset("id"),
"prev_id":ui.item.prev().dataset("id")}}})}})}}});$.extend($.helpers,{desktops:{}});$.extend($.helpers,{searches:{preview:function(url){var iframe=$("<iframe>",{src:url}).addClass("scrolling");$.viewport.html(iframe);iframe.preview()}}});$.extend($.helpers,{shortcuts:{preview:function(url){var iframe=$("<iframe>",{src:url}).addClass("scrolling");$.viewport.html(iframe);iframe.preview()},init_navigator:function(){$("form.navigator_search:visible").validate({submitHandler:function(form){var value=$(form).find("input").val();if(!/^(http|https):\/\//.test(value))value="http://"+value;$.desktop.setLocation("#!/sites/"+encodeURIComponent(value))},invalidHandler:function(form,validator){$.notifier.error(validator.errorList[0].message)},
errorPlacement:function(error,element){}});$(".navigator_search:visible .go_to").live("click",function(){$(".navigator_search:visible").trigger("submit")})}}});
$.extend($.helpers.shortcuts,{init_sortable:function(){var container=$("#shortcuts");container.sortable({connectWith:"#dock .sortable",items:".shortcut",placeholder:"placeholder",helper:"clone",revert:true,start:function(event,ui){$(this).dataset("next",ui.item.next().next().dataset("id"));$(this).dataset("prev",ui.item.prev().dataset("id"));ui.helper.css("cursor","move")},remove:function(event,ui){var item_id=ui.item.dataset("id");var next_id=$(this).dataset("next");var prev_id=$(this).dataset("prev");
var next_shortcut=$("#viewport .shortcut[data-id="+next_id+"]");var prev_shortcut=$("#viewport .shortcut[data-id="+prev_id+"]");if(next_shortcut.length)next_shortcut.before(ui.item.clone());else if(prev_shortcut.length)prev_shortcut.after(ui.item.clone());else $("#viewport .slide").append(ui.item.clone());$("#viewport .shortcut[data-id="+item_id+"]").shortcut()},update:function(event,ui){$.ajax({dataType:"json",type:"PUT",url:$(ui.item).dataset("resource_url"),data:{shortcut:{"next_id":ui.item.next().dataset("id"),
"prev_id":ui.item.prev().dataset("id")}}})}})}});$.widget("ui.buttongroup",{_init:function(){var self=this;var buttons=this.element.find("button");self._trigger("before_click");buttons.click(function(){var button=$(this);button.addClass("current").siblings().removeClass("current");self._trigger("click",null,button)})}});$.extend("ui.buttongroup",{defaults:{click:function(e,button){},before:function(){}}});$.widget("ui.preview",{_init:function(){var iframe=this.element,url=iframe.attr("src");$.notifier.notice(t("loading")+$.truncate(url,40),true);$.viewport.set_background("#fff");iframe.bind("load",function(){$.notifier.clear()})}});$.widget("exvo.search_result",{_init:function(){var self=this,search_result=this.element;if(search_result.hasClass("sponsored"))search_result.append("<div class='sponsored'>Sponsored link</div>");search_result.find("img, h3").click(function(){$(".bottom.bar.preview button.add").dataset(search_result.find("button").dataset()).show();$.desktop.setLocation("#!/sites/"+search_result.dataset("url"));return false});if(search_result.hasClass("sponsored"))search_result.clickable({scope:"h3"})}});$.widget("exvo.app_shortcut",{_init:function(){var self=this,e=this.element,icon=e.find(".icon");e.clickable({scope:".icon"});icon.click(function(){self.preview()})},preview_url:function(){return"#!/apps/"+this.element.dataset("slug")},preview:function(){if(this.element.dataset("target")=="iframe")$.desktop.setLocation(this.preview_url());else open(this.element.dataset("url"),"preview")}});$.widget("exvo.viewport",{_init:function(){var viewport=this;$(window).bind("resize",function(){viewport.resize()})},resize:function(){var self=this;var viewport=this.element;var wallpaper=$("#wallpaper");var wallpaper_scaled=wallpaper.css("background-repeat")=="no-repeat";var window_height=$(window).height();viewport.height(window_height-$(".bar:visible").totalOuterHeight());wallpaper.height(window_height-$("#dock").totalOuterHeight());viewport.find(".scrolling").height(function(){var distance=$(".scrolling").get(0).offsetTop-
$("#viewport").get(0).offsetTop;return viewport.height()-distance});if(wallpaper_scaled){var css_attribute=$.browser.mozilla?"-moz-background-size":"background-size";wallpaper.css(css_attribute,viewport.width()+"px")}},clear:function(){this.element.empty()},html:function(html,callback){$.notifier.clear();this.element.html(html);this.resize();if(callback)callback.apply()},set_background:function(color){this.element.css("background-color",color)},width:function(){return this.element.width()},height:function(){return this.element.height()}});
$.extend($.exvo.viewport,{getter:"width height"});$.widget("exvo.quick_registration",{_init:function(){var self=this;self.validate_email_input();self.register_button().click(function(){self.form().trigger("submit");return false})},register_button:function(){return this.element.find("#register")},register_block:function(){return this.element},form:function(){return this.element.find("form")},create_user:function(form){$.ajax({type:"post",url:$(form).attr("action"),dataType:"json",data:$(form).serialize(),success:function(data){window.location="/"},
error:function(){$.notifier.error(t("try_again_later"))}})},are_terms_accepted:function(){return $("input:checkbox").attr("checked")},validate_email_input:function(){var self=this;$.validator.addMethod("Required",$.validator.methods.required,t("quick_registration.email_address"));$.validator.addMethod("terms_accepted",function(value,element,options){if(self.are_terms_accepted())return true;else return false},t("quick_registration.terms_conditions"));$.validator.addClassRules("email",{Required:true,
email:true,terms_accepted:true});self.form().validate({submitHandler:function(form){self.create_user(form)},invalidHandler:function(form,validator){$.notifier.error(validator.errorList[0].message)},errorPlacement:function(error,element){}})}});$.extend($.controllers,{apps:{index:function(action){this.title("Apps");var templates=this.templates;$.notifier.notice(t("loading"));$.getJSON("/apps_set/shortcuts.json",{per_page:100},function(data){if(data.length>0){$.viewport.html(templates.wrapper);var collection=$.render.collection(data,templates.item,$.modifiers.shortcut);$(".transit.apps").html(collection);$(".transit.apps .item").app_shortcut();if(!window.shortcuts_sorted_by_usage)action.helpers.init_sortable();$(".transit.apps").transit("push")}else{var error=
$.nano(templates.blank);$.viewport.html(error)}})},show:function(action){var url=$.config.base_url+"/apps/"+this.params["slug"]+".json";$.ajax({url:url,type:"get",dataType:"json",success:function(data){var app=data.app;if($.inArray(app.url,$.config.double_dock_urls)!=-1)window.location=app.url;else{action.title(app.name);$.helpers.shortcuts.preview(app.url)}},error:function(){$.notifier.warning(t("app_not_found"));setTimeout(function(){$.desktop.setLocation("#!/apps")},3E3)}})}}});$.extend($.controllers,{desktops:{show:function(){this.title("Desktop");var icons=[{href:"#!/sites",name:"Sites",icon:"apps/websites128.png"},{href:"#!/apps",name:"Apps",icon:"apps/apps128.png"},{href:"http://store.exvo.com/budget",name:t("templates.dock.my_account"),icon:"categories/accounts128.png"}];var wrapper=$("<div class='icons'></div>");var collection=$.render.collection(icons,"<div class='icon' data-href='{href}'><img src='http://themes.exvo.com/stylesheets/images/icons/{icon}' /><h3>{name}</h3></div>");
$("#viewport").html(wrapper);$("#viewport .icons").html(collection);$("#viewport .icon").click(function(){window.location.href=$(this).dataset("href");return false})}}});$.extend($.controllers,{pages:{show:function(){var path="/pages/"+this.action;$("#viewport").load(path)},tour:function(){var path="/pages/"+this.action;$.get(path,function(html){$("#viewport").html(html);$("form.quick_registration").submit(function(){$.getJSON($.config.auth_url+"/quick_registrations?_callback=?&_method=POST",$(this).serialize(),function(data){if(data.status==201)redirect_to($.config.base_url);else $.notifier.warning("Email "+data.body.email)});return false})})},intro:function(){var path=
"/pages/"+this.action;$.get(path,function(data){$("#viewport").html(data);$(".rollover").rollover();$(":checkbox").uniform();$(".register").quick_registration();$(window).load(function(){$(".we_hire").animate({right:"+=64"},800);$(".we_hire").view()});$(".gallery li").hide();$(".gallery li:first").show();$(".gallery-button").click(function(){var next_overview=".overview_"+$(this).attr("data-name");$(".gallery:first").fadeOut(250,function(){$(".gallery li").hide();$(next_overview).show()});$(".gallery:first").fadeIn(250);
var triangle=$(this).parents(".gallery-selection").find(".triangle");var offset=$(this).offset().left-$(this).parents(".gallery-selection").offset().left-9;triangle.css("left",offset+"px");return false})})}}});$.extend($.controllers,{searches:{index:function(action){var helpers=this.helpers,templates=this.templates;var query=this.params["splat"][0];this.title(t("template.dock.search")+": "+query);$.notifier.notice(t("search.searching")+": "+query,true);var url="http://duckduckgo.com/?q="+query;$.post("/admin/metrics/track_search");helpers.preview(url)}}});$.extend($.controllers,{shortcuts:{index:function(action){this.title(t("profile.shortcuts"));$.notifier.notice(t("loading"));$.getJSON("/desktop/shortcuts.json",{per_page:100},function(results){if(results.length>0){$.viewport.html(action.templates.wrapper);var collection=$.render.collection(results,action.templates.item,$.modifiers.shortcut);$(".transit.sites").html(collection);$(".transit.sites .item").shortcut();if(!window.shortcuts_sorted_by_usage)action.helpers.init_sortable();action.helpers.init_navigator();
$(".transit.sites").transit("push")}else{var error=$.nano(action.templates.blank);$.viewport.html(error)}})},show:function(){var url=this.params["splat"][0];this.title(t("shortcut.preview")+url);$(".tool.bar.preview").show();this.helpers.init_navigator();$(".bar_icon.add_shortcut").dataset("url",url).unbind("click").bind("click",function(){var element=$(this);var spinner=element.parent().find(".spinner");element.hide();spinner.fadeIn(300);$.ajax({type:"post",url:"/desktop/shortcuts.json",dataType:"json",
data:{shortcut:{url:url}},success:function(data){$.notifier.notice(t("shortcut.created"))},error:function(data){$.notifier.error(t("shortcut.error_to_create"))},complete:function(){spinner.fadeOut(300,function(){element.show()})}})});this.helpers.preview(url)}}});
