(function(){window.AddServiceController=function(){var c=$("div.modal_container ul.add_service"),f={},j=null,e=false;function b(){return !e}function h(){c.find("li.form select")[0].selectedIndex=0;c.find("li.form span.service_fields").find("input").val("").end().empty();if(j){ServiceManager.addService(j);j=null}ServicesToolkit.resetModalMessages()}function a(k){jQuery.each(k,function(){$('<option value="'+this.id+'" />').html(this.label||this.id).appendTo(c.find("li.form select"));f[this.id]={options:i(this),data:this}});c.find("li.form select").change(function(){$(this).blur();d.apply(this,[])});c.find("li.commit a").click(g)}function i(m){var l=function(n){return"external_service["+n+"]"},k="";if(m.details){k+='<dl><dt class="copy">'+m.details+"</dt></dl>"}if(m.fields&&m.fields.length&&m.fields.length>0){jQuery.each(m.fields,function(){k+="<dl>";k+="<dt>"+this.name+"</dt>";k+="<dd>";k+='<input type="';k+=this.password?"password":"text";k+='" name="';k+=this.password?this.id:l(this.id);k+='" class="service_'+this.id+'" />';k+="</dd>";k+="</dl>"})}return $(k).find(":input").colorize().end()}function d(){c.find("li.form span.service_fields").find("input").val("").end().empty();f[$(this).val()].options.appendTo("li.form span.service_fields").parent().find(":input").keyup(function(k){if(k.keyCode==13&&!e){c.find("li.commit a").click()}}).end().find(":input:first").focus()}function g(q){q.preventDefault();if(e){return}var n=f[c.find("li.form select").val()].data;if(n.authorization_url){var m=780,p=410,o=(screen.height/2)-(p/2),k=(screen.width/2)-(m/2);if(!window.open(n.authorization_url,"oauthauthorize","width=%w,height=%h,left=%l,top=%t,scrollbars=yes,location=yes".replace("%w",m).replace("%h",p).replace("%l",k).replace("%t",o))){alert('Plinky needs to open a pop-up window to add this service, but it looks like a pop-up blocker stopped us. Please temporarily disable your pop-up blocker (or add plinky.com to your "allowed sites" list) and try again.');return}ModalManager.getInstance().closeModal();return}e=true;ServicesToolkit.showModalActivity(c,function(){ServicesToolkit.addService(c.find("li.form :input").serialize(),function(l){e=false;if(l.success==true){if(l.blogs.length>1){ModalManager.getInstance().getModal("choose_service").openForChoosing(c.find("select.service_type").val(),c.find("input.service_username").val()||"",c.find("input.service_password").val()||"",l.blogs);ModalManager.getInstance().openModal("choose_service",true)}else{ServicesToolkit.flashModalMessage(c,false,function(){j=l.blogs[0].id;ModalManager.getInstance().closeModal()},true)}}else{ServicesToolkit.setErrorMessage(c,l.error);ServicesToolkit.flashModalMessage(c,true)}},function(){ServicesToolkit.setErrorMessage(c,"unexpected problem");ServicesToolkit.flashModalMessage(c,true);e=false})})}return{getNode:function(){return c},canClose:b,afterClose:h,populateServices:a}}})();(function(){window.ChooseServiceController=function(){var g=$("div.modal_container ul.choose_service"),d=false,f=null;function b(){return !d}function a(){g.find("li.form dd").remove();g.find("input[type=hidden]").val("");g.find("li.exists").hide();if(f){ServiceManager.addService(f);f=null}ServicesToolkit.resetModalMessages()}function c(k,i,h,j){g.find("li.copy span.service_type").html(k).end().find("li.form").find("input.service_type").val(k).end().find("input.service_username").val(i).end().find("input.service_password").val(h).end().end();$.each(j,function(){var l=$("<dd />").append('<input type="radio" />');if(this.id){l.find("input").attr("name","external_service[link]").attr("value",this.id).end()}l.append("<label />").find("label").attr("class","side_label").html(this.name).end();if(!this.id){l.find("input").css("visibility","hidden").end().find("label").append('<span class="added">*</span>').end();g.find("li.exists").show()}l.insertAfter(g.find("li.form dt"))});g.find("label.side_label").addSideLabel();g.find("li.commit a").click(e)}function e(h){h.preventDefault();if(d){return}d=true;ServicesToolkit.showModalActivity(g,function(){ServicesToolkit.addService(g.find("li.form :input").serialize(),function(i){d=false;if(i.success==true){ServicesToolkit.flashModalMessage(g,false,function(){f=i.blogs[0].id;ModalManager.getInstance().closeModal()},true)}else{ServicesToolkit.setErrorMessage(g,i.error);ServicesToolkit.flashModalMessage(g,true)}},function(i){ServicesToolkit.setErrorMessage(g,"unexpected problem");ServicesToolkit.flashModalMessage(g,true);d=false})})}return{getNode:function(){return g},canClose:b,afterClose:a,openForChoosing:c}}})();(function(){window.OauthDeclinedController=function(){var c=$("div.modal_container ul.oauth_declined");c.find("li.commit a").click(function(d){d.preventDefault();ModalManager.getInstance().closeModal()});function b(){return true}function a(){}return{getNode:function(){return c},canClose:b,afterClose:a}}})();(function(){window.ChangeServiceController=function(){var f=$("div.modal_container ul.edit_service"),h=null,c=false,g=false;f.find(":input").keyup(function(i){if(i.keyCode==13){f.find("li.commit a").click()}}).end().find("li.commit a").click(d);function b(){return !g}function a(){if(h&&c){h.node[0].user_service.recheck_credentials()}f.find("li.form input").val("");h=null;c=false;g=false;ServicesToolkit.resetModalMessages(f)}function e(i,j){h={node:i,id:j};ModalManager.getInstance().openModal("change_service");this.getNode().find(":input:first").focus()}function d(k){k.preventDefault();if(g){return}var j=f.find("li.form input[name=password]").val(),i=f.find("li.form input[name=password_confirmation]").val();if(j!=i){f.find("li.messages span.error b").toggle();f.find("li.commit").fadeOut("fast",function(){ServicesToolkit.flashModalMessage(f,true,function(){f.find("li.messages span.error b").toggle()})});return}g=true;ServicesToolkit.showModalActivity(f,function(){$.ajax({url:ServiceManager.url_for("URL_UPDATE").replace("%service_id",h.id),type:"PUT",dataType:"json",data:{password:f.find("li.form input[name=password]").val()},success:function(l){if(l.success==true){ServicesToolkit.flashModalMessage(f,false,function(){c=true;ModalManager.getInstance().closeModal()},true)}else{ServicesToolkit.flashModalMessage(f,true)}g=false},error:function(){ServicesToolkit.flashModalMessage(f,true);g=false}})})}return{getNode:function(){return f},canClose:b,afterClose:a,openForChanging:e}}})();(function(){window.DeleteServiceController=function(){var f=$("div.modal_container ul.delete_service"),h=null,d=false,e=false;f.find("li.commit a").click(c);function b(){return !e}function a(){if(d){h.node.fadeOut("slow",function(){$(this).remove();ServiceManager.check_service_length()});h=null;d=false;e=false}ServicesToolkit.resetModalMessages(f)}function g(j,k,i){j.find("strong.service_name").html(i);h={node:j,id:k,type:i};ModalManager.getInstance().openModal("delete_service")}function c(i){i.preventDefault();e=true;ServicesToolkit.showModalActivity(f,function(){$.ajax({url:ServiceManager.url_for("URL_UPDATE").replace("%service_id",h.id),type:"DELETE",dataType:"json",success:function(j){if(j.success==true){ServicesToolkit.flashModalMessage(f,false,function(){d=true;ModalManager.getInstance().closeModal()},true)}else{ServicesToolkit.flashModalMessage(f,true)}e=false},error:function(){ServicesToolkit.flashModalMessage(f,true);e=false}})})}return{getNode:function(){return f},canClose:b,afterClose:a,openForDeletion:g}}})();(function(){window.ServicesToolkit={addService:function(c,b,a){$.ajax({url:ServiceManager.url_for("URL_CREATE"),type:"POST",dataType:"json",data:c,success:b,error:a,timeout:10000})},showModalActivity:function(a,b){$(a).find("li.commit").fadeOut("fast",function(){$(a).find("li.messages span.activity").show();$(a).find("li.messages").fadeIn("fast",b)})},resetModalMessages:function(a){$(a).find("li.messages").fadeOut("fast",function(){$(a).find("li.messages span").hide();$(a).find("li.commit").fadeIn("fast")})},flashModalMessage:function(b,a,d,c){$(b).find("li.messages").fadeOut("fast",function(){$(b).find("li.messages span").hide();$(b).find("li.messages span."+(a?"error":"success")).show();if(a){$(b).find("li.messages span.message").show()}$(b).find("li.messages").fadeIn("fast",function(){setTimeout(function(){if(d){d()}if(!c){ServicesToolkit.resetModalMessages(b)}$(b).find("li.messages span.error span.message").html("")},a?8000:1500)})})},setErrorMessage:function(a,b){$(a).find("li.messages span.error span.message").html(b)}}})();
