diff --git a/public/build/js/app-03038a2329.js b/public/build/js/app-03038a2329.js
deleted file mode 100644
index cc9ac11e7..000000000
--- a/public/build/js/app-03038a2329.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function Uploader(e){if(!(this instanceof Uploader))return new Uploader(e);isString(e)&&(e={trigger:e});var t={trigger:null,name:null,action:null,data:null,accept:null,change:null,error:null,multiple:!0,success:null};e&&$.extend(t,e);var a=$(t.trigger);t.action=t.action||a.data("action")||"/upload",t.name=t.name||a.attr("name")||a.data("name")||"file",t.data=t.data||parse(a.data("data")),t.accept=t.accept||a.data("accept"),t.success=t.success||a.data("success"),this.settings=t,this.setup(),this.bind()}function isString(e){return"[object String]"===Object.prototype.toString.call(e)}function createInputs(e){if(!e)return[];var t,a=[];for(var s in e)t=document.createElement("input"),t.type="hidden",t.name=s,t.value=e[s],a.push(t);return a}function parse(e){if(!e)return{};for(var t={},a=e.split("&"),s=function(e){return decodeURIComponent(e.replace(/\+/g," "))},n=0;n').hide();return iframeCount+=1,t}function MultipleUploader(e){if(!(this instanceof MultipleUploader))return new MultipleUploader(e);isString(e)&&(e={trigger:e});var t=$(e.trigger),a=[];t.each(function(t,s){e.trigger=s,a.push(new Uploader(e))}),this._uploaders=a}$.ajaxPrefilter(function(e,t,a){a.setRequestHeader("X-CSRF-Token",$('meta[name="token"]').attr("content"))});var app=app||{};!function(e){function t(){e.ajax({type:"GET",url:"/timeline"}).success(function(t){e("#timeline").html(t)})}function a(t){t.model.time=moment(t.model.started_at).format("h:mm:ss A"),t.model.url="/deployment/"+t.model.id,e("#deployment_info_"+t.model.id).remove(),e("#pending_menu, #deploying_menu").show();var a=_.template(e("#deployment_list_template").html()),s=a(t.model);t.model.status===l?e("#pending_menu ul.menu").append(s):t.model.status===d&&e("#deploying_menu ul.menu").append(s);var n=e("#pending_menu ul.menu li").length,i=e("#deploying_menu ul.menu li").length,r=Lang.nav.multi_pending.replace("%s",n);0===n?e("#pending_menu").hide():1===n&&(r=Lang.nav.single_pending);var o=Lang.nav.multi_running.replace("%s",i);0===i?e("#deploying_menu").hide():1===i&&(o=Lang.nav.single_running),e("#deploying_menu span.label-warning").html(i),e("#deploying_menu .header").text(o),e("#pending_menu span.label-info").html(n),e("#pending_menu .header").text(r)}var s=0,n=1,i=2,r=3,o=0,l=1,d=2,p=3;app.project_id=app.project_id||null,app.listener=io.connect(e('meta[name="socket_url"]').attr("content")),app.listener.on("deployment:App\\Events\\ModelChanged",function(s){a(s);var n=e("#project_"+s.model.project_id);n.length>0&&t();var i=e("#deployment_"+s.model.id);if(i.length>0){e("td:nth-child(4)",i).text(s.model.committer),s.model.commit_url?e("td:nth-child(5)",i).html(''+s.model.short_commit+""):e("td:nth-child(5)",i).text(s.model.short_commit);var r="clock-o",l="info",c=Lang.deployments.status.pending,h=!1;s.model.status=parseInt(s.model.status);var m=e("td:nth-child(7) span.label",i);s.model.status===o?(r="check",l="success",c=Lang.deployments.status.completed,h=!0):s.model.status===d?(r="spinner fa-pulse",l="warning",c=Lang.deployments.status.running):s.model.status===p&&(r="warning",l="danger",c=Lang.deployments.status.failed,h=!0),h&&e("button#deploy_project:disabled").removeAttr("disabled"),m.attr("class","label label-"+l),e("i",m).attr("class","fa fa-"+r),e("span",m).text(c)}}),app.listener.on("group:App\\Events\\ModelChanged",function(t){e("#sidebar_group_"+t.model.id).html(t.model.name)}),app.listener.on("project:App\\Events\\ModelChanged",function(t){e("#sidebar_project_"+t.model.id).html(t.model.name);var a=e("#project_"+t.model.id);if(a.length>0){var o="question-circle",l="primary",d=Lang.projects.status.not_deployed;t.model.status=parseInt(t.model.status);var p=e("td:nth-child(3) span.label",a);t.model.status===s?(o="check",l="success",d=Lang.projects.status.finished):t.model.status===i?(o="spinner fa-pulse",l="warning",d=Lang.projects.status.deploying):t.model.status===r?(o="warning",l="danger",d=Lang.projects.status.failed):t.model.status===n&&(o="clock-o",l="info",d=Lang.projects.status.pending),e("td:first a",a).text(t.model.name),e("td:nth-child(2)",a).text(moment(t.model.last_run).format("Do MMM YYYY h:mm:ss A")),p.attr("class","label label-"+l),e("i",p).attr("class","fa fa-"+o),e("span",p).text(d)}}),app.listener.on("project:App\\Events\\ModelTrashed",function(t){e("#sidebar_project_"+t.model.id).parent("li").remove(),parseInt(t.model.id)===parseInt(app.project_id)&&(window.location.href="/")}),e(document).ready(function(){e("#pending_menu ul.menu li").length>0&&e("#pending_menu").show(),e("#deploying_menu ul.menu li").length>0&&e("#deploying_menu").show()})}(jQuery);var app=app||{};!function(e){e(".deployment-source:radio").on("change",function(t){var a=e(t.currentTarget);e("input[type=text].deployment-source").hide(),"branch"===a.val()?e("#deployment_branch").show():"tag"===a.val()&&e("#deployment_tag").show()}),e("#reason").on("show.bs.modal",function(t){var a=e(this);e(".callout-danger",a).hide()}),e("#reason button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal"),i=e("input[name=source]:checked").val();return e(".has-error",i).removeClass("has-error"),"branch"!==i&&"tag"!==i||""!==e("#deployment_"+i).val()?(s.addClass("fa-refresh fa-spin").removeClass("fa-save"),void e("button.close",n).hide()):(e("#deployment_"+i).parentsUntil("div").addClass("has-error"),e(".callout-danger",n).show(),void t.stopPropagation())}),e("#project").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),e("#template-list",s).hide(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#template-list",s).show(),e("#project_id").val(""),e("#project_name").val(""),e("#project_repository").val(""),e("#project_branch").val("master"),e("#project_group_id").val(e("#project_group_id option:first").val()),e("#project_builds_to_keep").val(10),e("#project_url").val(""),e("#project_build_url").val("")),s.find(".modal-title span").text(n)}),e("#project button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Projects.get(e("#project_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#project button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#project_id").val();if(i)var r=app.Projects.get(i);else var r=new app.Project;r.save({name:e("#project_name").val(),repository:e("#project_repository").val(),branch:e("#project_branch").val(),group_id:e("#project_group_id").val(),builds_to_keep:e("#project_builds_to_keep").val(),url:e("#project_url").val(),build_url:e("#project_build_url").val(),template_id:e("#project_template_id")?e("#project_template_id").val():null},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Projects.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Project=Backbone.Model.extend({urlRoot:"/admin/projects"});var t=Backbone.Collection.extend({model:app.Project});app.Projects=new t,app.ProjectsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#project_list tbody"),e("#project_list").hide(),e("#no_projects").show(),this.listenTo(app.Projects,"add",this.addOne),this.listenTo(app.Projects,"reset",this.addAll),this.listenTo(app.Projects,"remove",this.addAll),this.listenTo(app.Projects,"all",this.render),app.listener.on("project:App\\Events\\ModelChanged",function(e){var t=app.Projects.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("project:App\\Events\\ModelCreated",function(e){app.Projects.add(e.model)}),app.listener.on("project:App\\Events\\ModelTrashed",function(t){var a=app.Projects.get(parseInt(t.model.id));a&&app.Projects.remove(a),e("#project_"+t.model.id).parent("li").remove(),parseInt(t.model.id)===parseInt(app.project_id)&&(window.location.href="/")})},render:function(){app.Projects.length?(e("#no_projects").hide(),e("#project_list").show()):(e("#no_projects").show(),e("#project_list").hide())},addOne:function(e){var t=new app.ProjectView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Projects.each(this.addOne,this)}}),app.ProjectView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editProject"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#project-template").html())},render:function(){var e=this.model.toJSON();return e.deploy=e.last_run?moment(e.last_run).format("Do MMM YYYY h:mm:ss A"):!1,this.$el.html(this.template(e)),this},editProject:function(){e("#project_id").val(this.model.id),e("#project_name").val(this.model.get("name")),e("#project_repository").val(this.model.get("repository")),e("#project_branch").val(this.model.get("branch")),e("#project_group_id").val(this.model.get("group_id")),e("#project_builds_to_keep").val(this.model.get("builds_to_keep")),e("#project_url").val(this.model.get("url")),e("#project_build_url").val(this.model.get("build_url"))}}),e("#new_webhook").on("click",function(t){var a=e(t.currentTarget),s=a.data("project-id"),n=e("i",a);e(".fa-spin",a).length>0||(a.attr("disabled","disabled"),n.addClass("fa-spin"),e.ajax({type:"GET",url:"/webhook/"+s+"/refresh"}).fail(function(e){}).done(function(t){e("#webhook").html(t.url)}).always(function(){n.removeClass("fa-spin"),a.removeAttr("disabled")}))})}(jQuery);var app=app||{};!function(e){e("#template").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#template_id").val(""),e("#template_name").val("")),s.find(".modal-title span").text(n)}),e("#template button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Templates.get(e("#template_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#template button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#template_id").val();if(i)var r=app.Templates.get(i);else var r=new app.Template;r.save({name:e("#template_name").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||(app.Templates.add(a),window.location.href="/admin/templates/"+a.id)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Template=Backbone.Model.extend({urlRoot:"/admin/templates"});var t=Backbone.Collection.extend({model:app.Template});app.Templates=new t,app.TemplatesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#template_list tbody"),e("#template_list").hide(),e("#no_templates").show(),this.listenTo(app.Templates,"add",this.addOne),this.listenTo(app.Templates,"reset",this.addAll),this.listenTo(app.Templates,"remove",this.addAll),this.listenTo(app.Templates,"all",this.render),app.listener.on("template:App\\Events\\ModelChanged",function(e){var t=app.Templates.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("template:App\\Events\\ModelCreated",function(e){app.Templates.add(e.model)}),app.listener.on("template:App\\Events\\ModelTrashed",function(e){var t=app.Templates.get(parseInt(e.model.id));t&&app.Templates.remove(t)})},render:function(){app.Templates.length?(e("#no_templates").hide(),e("#template_list").show()):(e("#no_templates").show(),e("#template_list").hide())},addOne:function(e){var t=new app.TemplateView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Templates.each(this.addOne,this)}}),app.TemplateView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editTemplate"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#template-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editTemplate:function(){e("#template_id").val(this.model.id),e("#template_name").val(this.model.get("name"))}})}(jQuery);var app=app||{};!function(e){var t=0,a=2,s=3;e("#server_list table").sortable({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",placeholder:'
',delay:500,onDrop:function(t,a,s){s(t,a);var n=[];e("tbody tr td:first-child",a.el[0]).each(function(t,a){n.push(e(a).data("server-id"))}),e.ajax({url:"/servers/reorder",method:"POST",data:{servers:n}})}}),e("#server").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.servers.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),e("#add-server-command",s).hide(),a.hasClass("btn-edit")?(n=Lang.servers.edit,e(".btn-danger",s).show()):(e("#server_id").val(""),e("#server_name").val(""),e("#server_address").val(""),e("#server_port").val("22"),e("#server_user").val(""),e("#server_path").val(""),e("#server_deploy_code").prop("checked",!0),e("#add-server-command",s).show()),s.find(".modal-title span").text(n)}),e("#server button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Servers.get(e("#server_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#server button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#server_id").val();if(i)var r=app.Servers.get(i);else var r=new app.Server;r.save({name:e("#server_name").val(),ip_address:e("#server_address").val(),port:e("#server_port").val(),user:e("#server_user").val(),path:e("#server_path").val(),deploy_code:e("#server_deploy_code").is(":checked"),project_id:e('input[name="project_id"]').val(),add_commands:e("#server_commands").is(":checked")},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Servers.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Server=Backbone.Model.extend({urlRoot:"/servers"});var n=Backbone.Collection.extend({model:app.Server,comparator:function(e,t){return e.get("name")>t.get("name")?-1:e.get("name")").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Heartbeat=Backbone.Model.extend({urlRoot:"/heartbeats"});var s=Backbone.Collection.extend({model:app.Heartbeat,comparator:function(e,t){return e.get("name")>t.get("name")?-1:e.get("name")").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Notification=Backbone.Model.extend({urlRoot:"/notifications"});var t=Backbone.Collection.extend({model:app.Notification});app.Notifications=new t,app.NotificationsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#notification_list tbody"),e("#no_notifications").show(),e("#notification_list").hide(),this.listenTo(app.Notifications,"add",this.addOne),this.listenTo(app.Notifications,"reset",this.addAll),this.listenTo(app.Notifications,"remove",this.addAll),this.listenTo(app.Notifications,"all",this.render),app.listener.on("notification:App\\Events\\ModelChanged",function(e){var t=app.Notifications.get(parseInt(e.model.id));server&&t.set(e.model)}),app.listener.on("notification:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.Notifications.add(e.model)}),app.listener.on("notification:App\\Events\\ModelTrashed",function(e){var t=app.Notifications.get(parseInt(e.model.id));t&&app.Notifications.remove(t)})},render:function(){app.Notifications.length?(e("#no_notifications").hide(),e("#notification_list").show()):(e("#no_notifications").show(),e("#notification_list").hide())},addOne:function(e){var t=new app.NotificationView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Notifications.each(this.addOne,this)}}),app.NotificationView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editNotification"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#notification-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editNotification:function(){e("#notification_id").val(this.model.id),e("#notification_name").val(this.model.get("name")),e("#notification_webhook").val(this.model.get("webhook")),e("#notification_channel").val(this.model.get("channel")),e("#notification_icon").val(this.model.get("icon")),e("#notification_failure_only").prop("checked",this.model.get("failure_only")===!0)}})}(jQuery);var app=app||{};!function(e){e("#notifyemail").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.notifyEmails.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.notifyEmails.edit,e(".btn-danger",s).show()):(e("#notifyemail_id").val(""),e("#notifyemail_name").val(""),e("#notifyemail_address").val("")),s.find(".modal-title span").text(n)}),e("#notifyemail button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.NotifyEmails.get(e("#notifyemail_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#notifyemail button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#notifyemail_id").val();if(i)var r=app.NotifyEmails.get(i);else var r=new app.NotifyEmail;r.save({name:e("#notifyemail_name").val(),email:e("#notifyemail_address").val(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.NotifyEmails.add(a)},error:function(t,a,i){e(".callout-danger",n).show();
-
-var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.NotifyEmail=Backbone.Model.extend({urlRoot:"/notify-email"});var t=Backbone.Collection.extend({model:app.NotifyEmail});app.NotifyEmails=new t,app.NotifyEmailsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#notifyemail_list tbody"),e("#no_notifyemails").show(),e("#notifyemail_list").hide(),this.listenTo(app.NotifyEmails,"add",this.addOne),this.listenTo(app.NotifyEmails,"reset",this.addAll),this.listenTo(app.NotifyEmails,"remove",this.addAll),this.listenTo(app.NotifyEmails,"all",this.render),app.listener.on("notifyemail:App\\Events\\ModelChanged",function(e){var t=app.NotifyEmails.get(parseInt(e.model.id));server&&t.set(e.model)}),app.listener.on("notifyemail:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.NotifyEmails.add(e.model)}),app.listener.on("notifyemail:App\\Events\\ModelTrashed",function(e){var t=app.NotifyEmails.get(parseInt(e.model.id));t&&app.NotifyEmails.remove(t)})},render:function(){app.NotifyEmails.length?(e("#no_notifyemails").hide(),e("#notifyemail_list").show()):(e("#no_notifyemails").show(),e("#notifyemail_list").hide())},addOne:function(e){var t=new app.EmailView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.NotifyEmails.each(this.addOne,this)}}),app.EmailView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editEmail"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#notifyemail-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editEmail:function(){e("#notifyemail_id").val(this.model.id),e("#notifyemail_name").val(this.model.get("name")),e("#notifyemail_address").val(this.model.get("email"))}})}(jQuery);var app=app||{};!function(e){e("#sharefile").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.sharedFiles.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.sharedFiles.edit,e(".btn-danger",s).show()):(e("#file_id").val(""),e("#name").val(""),e("#file").val("")),s.find(".modal-title span").text(n)}),e("#sharefile button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.SharedFiles.get(e("#file_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#sharefile button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#file_id").val();if(i)var r=app.SharedFiles.get(i);else var r=new app.SharedFile;r.save({name:e("#name").val(),file:e("#file").val(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.SharedFiles.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.SharedFile=Backbone.Model.extend({urlRoot:"/shared-files"});var t=Backbone.Collection.extend({model:app.SharedFile});app.SharedFiles=new t,app.SharedFilesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#file_list tbody"),e("#no_files").show(),e("#file_list").hide(),this.listenTo(app.SharedFiles,"add",this.addOne),this.listenTo(app.SharedFiles,"reset",this.addAll),this.listenTo(app.SharedFiles,"remove",this.addAll),this.listenTo(app.SharedFiles,"all",this.render),app.listener.on("sharedfile:App\\Events\\ModelChanged",function(e){var t=app.SharedFiles.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("sharedfile:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.SharedFiles.add(e.model)}),app.listener.on("sharedfile:App\\Events\\ModelTrashed",function(e){var t=app.SharedFiles.get(parseInt(e.model.id));t&&app.SharedFiles.remove(t)})},render:function(){app.SharedFiles.length?(e("#no_files").hide(),e("#file_list").show()):(e("#no_files").show(),e("#file_list").hide())},addOne:function(e){var t=new app.FileView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.SharedFiles.each(this.addOne,this)}}),app.FileView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editFile"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#files-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editFile:function(){e("#file_id").val(this.model.id),e("#name").val(this.model.get("name")),e("#file").val(this.model.get("file"))}})}(jQuery);var app=app||{};!function(e){var t,a;e("#projectfile, #view-projectfile").on("hidden.bs.modal",function(e){t.destroy()}),e("#view-projectfile").on("show.bs.modal",function(e){t=ace.edit("preview-content"),t.setReadOnly(!0),t.getSession().setUseWrapMode(!0);var s=a.substr(a.lastIndexOf(".")+1).toLowerCase();"php"===s||"ini"===s?t.getSession().setMode("ace/mode/"+s):"yml"===s&&t.getSession().setMode("ace/mode/yaml")}),e("#projectfile").on("show.bs.modal",function(a){var s=e(a.relatedTarget),n=e(this),i=Lang.projectFiles.create;t=ace.edit("project-file-content");var r=e("#project-file-path").val(),o=r.substr(r.lastIndexOf(".")+1).toLowerCase();"php"===o||"ini"===o?t.getSession().setMode("ace/mode/"+o):"yml"===o&&t.getSession().setMode("ace/mode/yaml"),e(".btn-danger",n).hide(),e(".callout-danger",n).hide(),e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),s.hasClass("btn-edit")?(i=Lang.projectFiles.edit,e(".btn-danger",n).show()):(e("#project_file_id").val(""),e("#project-file-name").val(""),e("#project-file-path").val(""),t.setValue(""),t.gotoLine(1)),n.find(".modal-title span").text(i)}),e("#projectfile button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.ProjectFiles.get(e("#project_file_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#projectfile button.btn-save").on("click",function(a){var s=e(a.currentTarget),n=s.find("i"),i=s.parents(".modal");n.addClass("fa-refresh fa-spin").removeClass("fa-save"),i.find("input").attr("disabled","disabled"),e("button.close",i).hide();var r=e("#project_file_id").val();if(r)var o=app.ProjectFiles.get(r);else var o=new app.ProjectFile;o.save({name:e("#project-file-name").val(),path:e("#project-file-path").val(),content:t.getValue(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(a,s,o){i.modal("hide"),e(".callout-danger",i).hide(),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find("input").removeAttr("disabled"),r||app.ProjectFiles.add(s),t.setValue(""),t.gotoLine(1)},error:function(t,a,s){e(".callout-danger",i).show();var r=a.responseJSON;e(".has-error",i).removeClass("has-error"),e(".label-danger",i).remove(),e("form input",i).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find("input").removeAttr("disabled")}})}),app.ProjectFile=Backbone.Model.extend({urlRoot:"/project-file"});var s=Backbone.Collection.extend({model:app.ProjectFile});app.ProjectFiles=new s,app.ProjectFilesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#projectfile_list tbody"),e("#no_projectfiles").show(),e("#projectfile_list").hide(),this.listenTo(app.ProjectFiles,"add",this.addOne),this.listenTo(app.ProjectFiles,"reset",this.addAll),this.listenTo(app.ProjectFiles,"remove",this.addAll),this.listenTo(app.ProjectFiles,"all",this.render),app.listener.on("projectfile:App\\Events\\ModelChanged",function(e){var t=app.ProjectFiles.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("projectfile:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.ProjectFiles.add(e.model)}),app.listener.on("projectfile:App\\Events\\ModelTrashed",function(e){var t=app.ProjectFiles.get(parseInt(e.model.id));t&&app.ProjectFiles.remove(t)})},render:function(){app.ProjectFiles.length?(e("#no_projectfiles").hide(),e("#projectfile_list").show()):(e("#no_projectfiles").show(),e("#projectfile_list").hide())},addOne:function(e){var t=new app.ProjectFileView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.ProjectFiles.each(this.addOne,this)}}),app.ProjectFileView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editFile","click .btn-view":"viewFile"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#project-files-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},viewFile:function(){a=this.model.get("path"),e("#preview-content").text(this.model.get("content"))},editFile:function(){e("#project_file_id").val(this.model.id),e("#project-file-name").val(this.model.get("name")),e("#project-file-path").val(this.model.get("path")),e("#project-file-content").text(this.model.get("content"))}})}(jQuery);var app=app||{};!function(e){var t=1;e("#checkurl").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.CheckUrls.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.CheckUrls.edit,e(".btn-danger",s).show()):(e("#url_id").val(""),e("#title").val(""),e("#url").val(""),e("#period_5").prop("checked",!0)),s.find(".modal-title span").text(n)}),e("#checkurl button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.CheckUrls.get(e("#url_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#checkurl button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#url_id").val();if(i)var r=app.CheckUrls.get(i);else var r=new app.CheckUrl;r.save({title:e("#title").val(),url:e("#url").val(),is_report:!0,period:parseInt(e("input[name=period]:checked").val()),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.CheckUrls.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.CheckUrl=Backbone.Model.extend({urlRoot:"/check-url"});var a=Backbone.Collection.extend({model:app.CheckUrl});app.CheckUrls=new a,app.CheckUrlsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#checkurl_list tbody"),e("#no_checkurls").show(),e("#checkurl_list").hide(),this.listenTo(app.CheckUrls,"add",this.addOne),this.listenTo(app.CheckUrls,"reset",this.addAll),this.listenTo(app.CheckUrls,"remove",this.addAll),this.listenTo(app.CheckUrls,"all",this.render),app.listener.on("checkurl:App\\Events\\ModelChanged",function(e){var t=app.CheckUrls.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("checkurl:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.CheckUrls.add(e.model)}),app.listener.on("checkurl:App\\Events\\ModelTrashed",function(e){var t=app.CheckUrls.get(parseInt(e.model.id));t&&app.CheckUrls.remove(t)})},render:function(){app.CheckUrls.length?(e("#no_checkurls").hide(),e("#checkurl_list").show()):(e("#no_checkurls").show(),e("#checkurl_list").hide())},addOne:function(e){var t=new app.CheckUrlView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.CheckUrls.each(this.addOne,this)}}),app.CheckUrlView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editUrl"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#checkUrls-template").html())},render:function(){var e=this.model.toJSON();return parseInt(e.last_status)===t?(e.status_css="danger",e.icon_css="warning",e.status=Lang.CheckUrls.failure):(e.status_css="success",e.icon_css="check",e.status=Lang.CheckUrls.success),e.interval_label=e.period+" "+Lang.CheckUrls.length,this.$el.html(this.template(e)),this},editUrl:function(){e("#url_id").val(this.model.id),e("#title").val(this.model.get("title")),e("#url").val(this.model.get("url")),e("#period_"+this.model.get("period")).prop("checked",!0),e("#is_report").prop("checked",this.model.get("is_report"))}})}(jQuery);var app=app||{};!function(e){var t=0,a=2,s=3,n=4;e("#log").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=a.attr("id").replace("log_",""),n=e("h3 span",a.parents(".box")).text(),i=e(this),r=e("pre",i),o=e("#loading",i);r.hide(),o.show(),e("#action",i).text(n),r.text(""),e.ajax({type:"GET",url:"/log/"+s}).done(function(e){var t=e.output;t=t.replace(/<\/error>/g,""),t=t.replace(/<\/info>/g,""),t=t.replace(//g,''),t=t.replace(//g,''),r.html(t),r.show(),o.hide()}).fail(function(){}).always(function(){})}),app.ServerLog=Backbone.Model.extend({urlRoot:"/status"});var i=Backbone.Collection.extend({model:app.ServerLog});app.Deployment=new i,app.DeploymentView=Backbone.View.extend({el:"#app",$containers:[],events:{},initialize:function(){var t=this;e(".deploy-step tbody").each(function(a,s){t.$containers.push({step:parseInt(e(s).attr("id").replace("step_","")),element:s})}),this.listenTo(app.Deployment,"add",this.addOne),this.listenTo(app.Deployment,"reset",this.addAll),this.listenTo(app.Deployment,"remove",this.addAll),this.listenTo(app.Deployment,"all",this.render),app.listener.on("serverlog:App\\Events\\ServerLogChanged",function(e){var t=app.Deployment.get(e.log_id);t&&t.set({status:e.status,output:e.output,runtime:e.runtime,started_at:e.started_at?e.started_at:!1,finished_at:e.finished_at?e.finished_at:!1})}),app.listener.on("deployment:App\\Events\\ModelChanged",function(t){parseInt(t.model.project_id)===parseInt(app.project_id)&&t.model.repo_failure&&e("#repository_error").show()})},addOne:function(t){var a=new app.LogView({model:t}),s=_.find(this.$containers,function(e){return parseInt(e.step)===parseInt(t.get("deploy_step_id"))});e(s.element).append(a.render().el)},addAll:function(){e(this.$containers).each(function(e,t){t.html("")}),app.Commands.each(this.addOne,this)}}),app.LogView=Backbone.View.extend({tagName:"tr",events:{},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#log-template").html())},render:function(){var e=this.model.toJSON();return e.status_css="info",e.icon_css="clock-o",e.status=Lang.status.pending,parseInt(this.model.get("status"))===t?(e.status_css="success",e.icon_css="check",e.status=Lang.status.completed):parseInt(this.model.get("status"))===a?(e.status_css="warning",e.icon_css="spinner fa-spin",e.status=Lang.status.running):(parseInt(this.model.get("status"))===s||parseInt(this.model.get("status"))===n)&&(e.status_css="danger",e.icon_css="warning",e.status=Lang.status.failed,parseInt(this.model.get("status"))===n&&(e.status=Lang.status.cancelled)),e.formatted_start_time=e.started_at?moment(e.started_at).format("h:mm:ss A"):!1,e.formatted_end_time=e.finished_at?moment(e.finished_at).format("h:mm:ss A"):!1,this.$el.html(this.template(e)),this}})}(jQuery);var app=app||{};!function(e){e(".command-list table").sortable({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",placeholder:'
',delay:500,onDrop:function(t,a,s){s(t,a);var n=[];e("tbody tr td:first-child",a.el[0]).each(function(t,a){n.push(e(a).data("command-id"))}),e.ajax({url:"/commands/reorder",method:"POST",data:{commands:n}})}});var t;e("#command").on("hidden.bs.modal",function(e){t.destroy()}),e("#command").on("show.bs.modal",function(a){var s=e(a.relatedTarget),n=e(this),i=Lang.create;t=ace.edit("command_script"),t.getSession().setMode("ace/mode/sh"),e(".btn-danger",n).hide(),e(".callout-danger",n).hide(),e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),s.hasClass("btn-edit")?(i=Lang.edit,e(".btn-danger",n).show()):(e("#command_id").val(""),e("#command_step").val(s.data("step")),e("#command_name").val(""),t.setValue(""),t.gotoLine(1),e("#command_user").val(""),e("#command_optional").val(""),e(".command-server").prop("checked",!0)),n.find(".modal-title span").text(i)}),e("#command button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Commands.get(e("#command_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#command button.btn-save").on("click",function(a){var s=e(a.currentTarget),n=s.find("i"),i=s.parents(".modal");n.addClass("fa-refresh fa-spin").removeClass("fa-save"),i.find(":input").attr("disabled","disabled"),e("button.close",i).hide();var r=e("#command_id").val();if(r)var o=app.Commands.get(r);else var o=new app.Command;var l=[];e(".command-server:checked").each(function(){l.push(e(this).val())}),o.save({name:e("#command_name").val(),script:t.getValue(),user:e("#command_user").val(),step:e("#command_step").val(),project_id:e('input[name="project_id"]').val(),servers:l,optional:e("#command_optional").is(":checked")},{wait:!0,success:function(a,s,o){i.modal("hide"),e(".callout-danger",i).hide(),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find(":input").removeAttr("disabled"),r||app.Commands.add(s),t.setValue(""),t.gotoLine(1)},error:function(t,a,s){e(".callout-danger",i).show();var r=a.responseJSON;e(".has-error",i).removeClass("has-error"),e(".label-danger",i).remove(),e("form input",i).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find(":input").removeAttr("disabled")}})}),app.Command=Backbone.Model.extend({urlRoot:"/commands",defaults:function(){return{order:app.Commands.nextOrder()}},isAfter:function(){return parseInt(this.get("step"))%3===0}});var a=Backbone.Collection.extend({model:app.Command,comparator:"order",nextOrder:function(){return this.length?this.last().get("order")+1:1}});app.Commands=new a,app.CommandsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$beforeList=e("#commands-before .command-list tbody"),this.$afterList=e("#commands-after .command-list tbody"),e(".no-commands").show(),e(".command-list").hide(),this.listenTo(app.Commands,"add",this.addOne),this.listenTo(app.Commands,"reset",this.addAll),this.listenTo(app.Commands,"remove",this.addAll),this.listenTo(app.Commands,"all",this.render),app.listener.on("command:App\\Events\\ModelChanged",function(e){var t=app.Commands.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("command:App\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&(parseInt(e.model.step)+1===parseInt(app.command_action)||parseInt(e.model.step)-1===parseInt(app.command_action))&&app.Commands.add(e.model)}),app.listener.on("command:App\\Events\\ModelTrashed",function(e){var t=app.Commands.get(parseInt(e.model.id));t&&app.Commands.remove(t)})},render:function(){var t=app.Commands.find(function(e){return!e.isAfter()});"undefined"!=typeof t?(e("#commands-before .no-commands").hide(),e("#commands-before .command-list").show()):(e("#commands-before .no-commands").show(),e("#commands-before .command-list").hide());var a=app.Commands.find(function(e){return e.isAfter()});"undefined"!=typeof a?(e("#commands-after .no-commands").hide(),e("#commands-after .command-list").show()):(e("#commands-after .no-commands").show(),e("#commands-after .command-list").hide())},addOne:function(e){var t=new app.CommandView({model:e});e.isAfter()?this.$afterList.append(t.render().el):this.$beforeList.append(t.render().el)},addAll:function(){this.$beforeList.html(""),this.$afterList.html(""),app.Commands.each(this.addOne,this)}}),app.CommandView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editCommand"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#command-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editCommand:function(){e("#command_id").val(this.model.id),e("#command_step").val(this.model.get("step")),e("#command_name").val(this.model.get("name")),e("#command_script").text(this.model.get("script")),e("#command_user").val(this.model.get("user")),e("#command_optional").prop("checked",this.model.get("optional")===!0),e(".command-server").prop("checked",!1),e(this.model.get("servers")).each(function(t,a){e("#command_server_"+a.id).prop("checked",!0)})}})}(jQuery);var app=app||{};!function(e){e("#user").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".existing-only",s).hide(),e(".new-only",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show(),e(".existing-only",s).show()):(e("#user_id").val(""),e("#user_name").val(""),e("#user_email").val(""),e("#user_password").val(""),e("#user_password_confirmation").val(""),e(".new-only",s).show()),s.find(".modal-title span").text(n)}),e("#user button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Users.get(e("#user_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#user button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#user_id").val();if(i)var r=app.Users.get(i);else var r=new app.User;r.save({name:e("#user_name").val(),email:e("#user_email").val(),password:e("#user_password").val(),password_confirmation:e("#user_password_confirmation").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Users.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.User=Backbone.Model.extend({urlRoot:"/admin/users",initialize:function(){}});var t=Backbone.Collection.extend({model:app.User});app.Users=new t,app.UsersTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#user_list tbody"),this.listenTo(app.Users,"add",this.addOne),this.listenTo(app.Users,"reset",this.addAll),this.listenTo(app.Users,"remove",this.addAll),this.listenTo(app.Users,"all",this.render),app.listener.on("user:App\\Events\\ModelChanged",function(e){var t=app.Users.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("user:App\\Events\\ModelCreated",function(e){app.Users.add(e.model)}),app.listener.on("user:App\\Events\\ModelTrashed",function(e){var t=app.Users.get(parseInt(e.model.id));t&&app.Users.remove(t)})},addOne:function(e){var t=new app.UserView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Users.each(this.addOne,this)}}),app.UserView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editUser"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#user-template").html())},render:function(){var e=this.model.toJSON();return e.created=moment(e.created_at).format("Do MMM YYYY h:mm:ss A"),this.$el.html(this.template(e)),this},editUser:function(){e("#user_id").val(this.model.id),e("#user_name").val(this.model.get("name")),e("#user_email").val(this.model.get("email"))}})}(jQuery);var app=app||{};!function(e){e("#group").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#group_id").val(""),e("#group_name").val("")),s.find(".modal-title span").text(n)}),e("#group button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#group_id").val();if(i)var r=app.Groups.get(i);else var r=new app.Group;r.save({name:e("#group_name").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Groups.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Group=Backbone.Model.extend({urlRoot:"/admin/groups",initialize:function(){}});var t=Backbone.Collection.extend({model:app.Group});app.Groups=new t,app.GroupsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#group_list tbody"),this.listenTo(app.Groups,"add",this.addOne),this.listenTo(app.Groups,"reset",this.addAll),this.listenTo(app.Groups,"remove",this.addAll),this.listenTo(app.Groups,"all",this.render),app.listener.on("group:App\\Events\\ModelChanged",function(t){e("#group_"+t.model.id).html(t.model.name);var a=app.Groups.get(parseInt(t.model.id));a&&a.set(t.model)}),app.listener.on("group:App\\Events\\ModelCreated",function(e){app.Groups.add(e.model)}),app.listener.on("group:App\\Events\\ModelTrashed",function(e){var t=app.Groups.get(parseInt(e.model.id));t&&app.Groups.remove(t)})},addOne:function(e){var t=new app.GroupView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Servers.each(this.addOne,this)}}),app.GroupView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editGroup"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#group-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editGroup:function(){e("#group_id").val(this.model.id),e("#group_name").val(this.model.get("name"))}})}(jQuery);var iframeCount=0;Uploader.prototype.setup=function(){this.form=$(''),this.iframe=newIframe(),this.form.attr("target",this.iframe.attr("name"));var e=this.settings.data;this.form.append(createInputs(e)),this.form.append(window.FormData?createInputs({_uploader_:"formdata"}):createInputs({_uploader_:"iframe"}));var t=document.createElement("input");t.type="file",t.name=this.settings.name,this.settings.accept&&(t.accept=this.settings.accept),
-this.settings.multiple&&(t.multiple=!0,t.setAttribute("multiple","multiple")),this.input=$(t);var a=$(this.settings.trigger);return this.input.attr("hidefocus",!0).css({position:"absolute",top:0,right:0,opacity:0,outline:0,cursor:"pointer",height:a.outerHeight(),fontSize:Math.max(64,5*a.outerHeight())}),this.form.append(this.input),this.form.css({position:"absolute",top:a.offset().top,left:a.offset().left,overflow:"hidden",width:a.outerWidth(),height:a.outerHeight(),zIndex:findzIndex(a)+10}).appendTo("body"),this},Uploader.prototype.bind=function(){var e=this,t=$(e.settings.trigger);t.mouseenter(function(){e.form.css({top:t.offset().top,left:t.offset().left,width:t.outerWidth(),height:t.outerHeight()})}),e.bindInput()},Uploader.prototype.bindInput=function(){var e=this;e.input.change(function(t){e._files=this.files||[{name:t.target.value}];var a=e.input.val();if(e.settings.change)e.settings.change.call(e,e._files);else if(a)return e.submit()})},Uploader.prototype.submit=function(){var e=this;if(window.FormData&&e._files){var t=new FormData(e.form.get(0));t.append(e.settings.name,e._files);var a;if(e.settings.progress){var s=e._files;a=function(){var t=$.ajaxSettings.xhr();return t.upload&&t.upload.addEventListener("progress",function(t){var a=0,n=t.loaded||t.position,i=t.total;t.lengthComputable&&(a=Math.ceil(n/i*100)),e.settings.progress(t,n,i,a,s)},!1),t}}return $.ajax({url:e.settings.action,type:"post",processData:!1,contentType:!1,data:t,xhr:a,context:this,success:e.settings.success,error:e.settings.error}),this}return e.iframe=newIframe(),e.form.attr("target",e.iframe.attr("name")),$("body").append(e.iframe),e.iframe.one("load",function(){$('').appendTo(e.form).remove();var t;try{t=$(this).contents().find("body").html()}catch(a){t="cross-domain"}$(this).remove(),t?e.settings.success&&e.settings.success(t):e.settings.error&&e.settings.error(e.input.val())}),e.form.submit(),this},Uploader.prototype.refreshInput=function(){var e=this.input.clone();this.input.before(e),this.input.off("change"),this.input.remove(),this.input=e,this.bindInput()},Uploader.prototype.change=function(e){return e?(this.settings.change=e,this):this},Uploader.prototype.success=function(e){var t=this;return this.settings.success=function(a){t.refreshInput(),e&&e(a)},this},Uploader.prototype.error=function(e){var t=this;return this.settings.error=function(a){e&&(t.refreshInput(),e(a))},this},Uploader.prototype.enable=function(){this.input.prop("disabled",!1),this.input.css("cursor","pointer")},Uploader.prototype.disable=function(){this.input.prop("disabled",!0),this.input.css("cursor","not-allowed")},MultipleUploader.prototype.submit=function(){return $.each(this._uploaders,function(e,t){t.submit()}),this},MultipleUploader.prototype.change=function(e){return $.each(this._uploaders,function(t,a){a.change(e)}),this},MultipleUploader.prototype.success=function(e){return $.each(this._uploaders,function(t,a){a.success(e)}),this},MultipleUploader.prototype.error=function(e){return $.each(this._uploaders,function(t,a){a.error(e)}),this},MultipleUploader.prototype.enable=function(){return $.each(this._uploaders,function(e,t){t.enable()}),this},MultipleUploader.prototype.disable=function(){return $.each(this._uploaders,function(e,t){t.disable()}),this},MultipleUploader.Uploader=Uploader;var app=app||{};if(function(e){if(0!==e("#upload").length){var t={};e("#request-change-email").on("click",function(){var t=e(this).parents(".box");t.children(".overlay").removeClass("hide"),e.post("/profile/email",function(e){"success"==e&&(t.children(".overlay").addClass("hide"),t.find(".help-block").removeClass("hide"))})}),e(".avatar>img").cropper({aspectRatio:1,preview:".avatar-preview",crop:function(e){t.dataX=Math.round(e.x),t.dataY=Math.round(e.y),t.dataHeight=Math.round(e.height),t.dataWidth=Math.round(e.width),t.dataRotate=Math.round(e.rotate)},built:function(){e("#upload-overlay").addClass("hide")}});{new Uploader({trigger:"#upload",name:"file",action:"/profile/upload",accept:"image/*",data:{_token:e('meta[name="token"]').attr("content")},multiple:!1,change:function(){e("#upload-overlay").removeClass("hide"),this.submit()},error:function(t){t.responseJSON.file?alert(t.responseJSON.file.join("")):t.responseJSON.error&&alert(t.responseJSON.error.message),e("#upload-overlay").addClass("hide")},success:function(a){"success"===a.message&&(e(".avatar>img").cropper("replace",a.image),t.path=a.path,e(".current-avatar-preview").addClass("hide"),e(".avatar-preview").removeClass("hide"),e("#save-avatar").removeClass("hide"))}})}e("#save-avatar").click(function(){e("#upload-overlay").removeClass("hide"),e(".avatar-message .alert").addClass("hide"),e.post("/profile/avatar",t).success(function(t){e("#upload-overlay").addClass("hide"),t.image?(e(".avatar-message .alert.alert-success").removeClass("hide"),e("#use-gravatar").removeClass("hide")):e(".avatar-message .alert.alert-danger").removeClass("hide")})}),e("#use-gravatar").click(function(){e("#upload-overlay").removeClass("hide"),e(".avatar-message .alert").addClass("hide"),e.post("/profile/gravatar").success(function(t){e("#upload-overlay").addClass("hide"),e(".avatar-message .alert.alert-success").removeClass("hide"),e(".avatar-preview").addClass("hide"),e(".current-avatar-preview").removeClass("hide"),e(".current-avatar-preview").attr("src",t.image),e("#use-gravatar").addClass("hide"),e("#avatar-save-buttons button").addClass("hide")})})}}(jQuery),"undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa fa-minus",open:"fa fa-plus",remove:"fa fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){var e=$.AdminLTE.options;$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),e.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:"200px",alwaysVisible:!1,size:"3px"}).css("width","100%"),e.sidebarPushMenu&&$.AdminLTE.pushMenu(e.sidebarToggleSelector),e.enableBSToppltip&&$(e.BSTooltipSelector).tooltip(),e.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),e.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),e.directChat.enable&&$(e.directChat.contactToggleSelector).click(function(){var e=$(this).parents(".direct-chat").first();e.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var e=$(this);$(this).find(".btn").click(function(t){e.find(".btn.active").removeClass("active"),$(this).addClass("active"),t.preventDefault()})})}),$.AdminLTE.layout={activate:function(){var e=this;e.fix(),e.fixSidebar(),$(window,".wrapper").resize(function(){e.fix(),e.fixSidebar()})},fix:function(){var e=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),t=$(window).height(),a=$(".sidebar").height();$("body").hasClass("fixed")?$(".content-wrapper, .right-side").css("min-height",t-$(".main-footer").outerHeight()):t>=a?$(".content-wrapper, .right-side").css("min-height",t-e):$(".content-wrapper, .right-side").css("min-height",a)},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&console&&console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu=function(e){var t=this.options.screenSizes;$(e).click(function(e){e.preventDefault(),$(window).width()>t.sm-1?$("body").toggleClass("sidebar-collapse"):$("body").hasClass("sidebar-open")?($("body").removeClass("sidebar-open"),$("body").removeClass("sidebar-collapse")):$("body").addClass("sidebar-open")}),$(".content-wrapper").click(function(){$(window).width()<=t.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")})},$.AdminLTE.tree=function(e){var t=this;$("li a",$(e)).click(function(e){var a=$(this),s=a.next();if(s.is(".treeview-menu")&&s.is(":visible"))s.slideUp("normal",function(){s.removeClass("menu-open")}),s.parent("li").removeClass("active");else if(s.is(".treeview-menu")&&!s.is(":visible")){var n=a.parents("ul").first(),i=n.find("ul:visible").slideUp("normal");i.removeClass("menu-open");var r=a.parent("li");s.slideDown("normal",function(){s.addClass("menu-open"),n.find("li.active").removeClass("active"),r.addClass("active"),t.layout.fix()})}s.is(".treeview-menu")&&e.preventDefault()})},$.AdminLTE.boxWidget={activate:function(){var e=$.AdminLTE.options,t=this;$(e.boxWidgetOptions.boxWidgetSelectors.collapse).click(function(e){e.preventDefault(),t.collapse($(this))}),$(e.boxWidgetOptions.boxWidgetSelectors.remove).click(function(e){e.preventDefault(),t.remove($(this))})},collapse:function(e){var t=e.parents(".box").first(),a=t.find(".box-body, .box-footer");t.hasClass("collapsed-box")?(e.children(".fa-plus").removeClass("fa-plus").addClass("fa-minus"),a.slideDown(300,function(){t.removeClass("collapsed-box")})):(e.children(".fa-minus").removeClass("fa-minus").addClass("fa-plus"),a.slideUp(300,function(){t.addClass("collapsed-box")}))},remove:function(e){var t=e.parents(".box").first();t.slideUp()},options:$.AdminLTE.options.boxWidgetOptions},function(e){e.fn.boxRefresh=function(t){function a(e){e.append(i),n.onLoadStart.call(e)}function s(e){e.find(i).remove(),n.onLoadDone.call(e)}var n=e.extend({trigger:".refresh-btn",source:"",onLoadStart:function(e){},onLoadDone:function(e){}},t),i=e('');return this.each(function(){if(""===n.source)return void(console&&console.log("Please specify a source first - boxRefresh()"));var t=e(this),i=t.find(n.trigger).first();i.click(function(e){e.preventDefault(),a(t),t.find(".box-body").load(n.source,function(){s(t)})})})}}(jQuery),function(e){e.fn.todolist=function(t){var a=e.extend({onCheck:function(e){},onUncheck:function(e){}},t);return this.each(function(){"undefined"!=typeof e.fn.iCheck?(e("input",this).on("ifChecked",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onCheck.call(s)}),e("input",this).on("ifUnchecked",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onUncheck.call(s)})):e("input",this).on("change",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onCheck.call(s)})})}}(jQuery);
-//# sourceMappingURL=app.js.map
\ No newline at end of file
diff --git a/public/build/js/app-0af6a7dab9.js b/public/build/js/app-0af6a7dab9.js
new file mode 100644
index 000000000..88ca098bf
--- /dev/null
+++ b/public/build/js/app-0af6a7dab9.js
@@ -0,0 +1,6 @@
+function Uploader(e){if(!(this instanceof Uploader))return new Uploader(e);isString(e)&&(e={trigger:e});var t={trigger:null,name:null,action:null,data:null,accept:null,change:null,error:null,multiple:!0,success:null};e&&$.extend(t,e);var a=$(t.trigger);t.action=t.action||a.data("action")||"/upload",t.name=t.name||a.attr("name")||a.data("name")||"file",t.data=t.data||parse(a.data("data")),t.accept=t.accept||a.data("accept"),t.success=t.success||a.data("success"),this.settings=t,this.setup(),this.bind()}function isString(e){return"[object String]"===Object.prototype.toString.call(e)}function createInputs(e){if(!e)return[];var t,a=[];for(var s in e)t=document.createElement("input"),t.type="hidden",t.name=s,t.value=e[s],a.push(t);return a}function parse(e){if(!e)return{};for(var t={},a=e.split("&"),s=function(e){return decodeURIComponent(e.replace(/\+/g," "))},n=0;n').hide();return iframeCount+=1,t}function MultipleUploader(e){if(!(this instanceof MultipleUploader))return new MultipleUploader(e);isString(e)&&(e={trigger:e});var t=$(e.trigger),a=[];t.each(function(t,s){e.trigger=s,a.push(new Uploader(e))}),this._uploaders=a}$.ajaxPrefilter(function(e,t,a){a.setRequestHeader("X-CSRF-Token",$('meta[name="token"]').attr("content"))});var app=app||{};!function(e){function t(){e.ajax({type:"GET",url:"/timeline"}).success(function(t){e("#timeline").html(t)})}function a(t){t.model.time=moment(t.model.started_at).format("h:mm:ss A"),t.model.url="/deployment/"+t.model.id,e("#deployment_info_"+t.model.id).remove(),e("#pending_menu, #deploying_menu").show();var a=_.template(e("#deployment_list_template").html()),s=a(t.model);t.model.status===l?e("#pending_menu ul.menu").append(s):t.model.status===d&&e("#deploying_menu ul.menu").append(s);var n=e("#pending_menu ul.menu li").length,i=e("#deploying_menu ul.menu li").length,r=Lang.nav.multi_pending.replace("%s",n);0===n?e("#pending_menu").hide():1===n&&(r=Lang.nav.single_pending);var o=Lang.nav.multi_running.replace("%s",i);0===i?e("#deploying_menu").hide():1===i&&(o=Lang.nav.single_running),e("#deploying_menu span.label-warning").html(i),e("#deploying_menu .header").text(o),e("#pending_menu span.label-info").html(n),e("#pending_menu .header").text(r)}var s=0,n=1,i=2,r=3,o=0,l=1,d=2,p=3,c=4;app.project_id=app.project_id||null,app.listener=io.connect(e('meta[name="socket_url"]').attr("content")),app.listener.on("deployment:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(s){a(s);var n=e("#project_"+s.model.project_id);n.length>0&&t();var i=e("#deployment_"+s.model.id);if(i.length>0){e("td:nth-child(4)",i).text(s.model.committer),s.model.commit_url?e("td:nth-child(5)",i).html(''+s.model.short_commit+""):e("td:nth-child(5)",i).text(s.model.short_commit);var r="clock-o",l="info",h=Lang.deployments.status.pending,m=!1;s.model.status=parseInt(s.model.status);var u=e("td:nth-child(7) span.label",i);s.model.status===o?(r="check",l="success",h=Lang.deployments.status.completed,m=!0):s.model.status===d?(r="spinner fa-pulse",l="warning",h=Lang.deployments.status.running):s.model.status===p?(r="warning",l="danger",h=Lang.deployments.status.failed,m=!0):s.model.status===c&&(r="warning",l="success",h=Lang.deployments.status.errors,m=!0),m&&e("button#deploy_project:disabled").removeAttr("disabled"),u.attr("class","label label-"+l),e("i",u).attr("class","fa fa-"+r),e("span",u).text(h)}}),app.listener.on("group:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(t){e("#sidebar_group_"+t.model.id).html(t.model.name)}),app.listener.on("project:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(t){e("#sidebar_project_"+t.model.id).html(t.model.name);var a=e("#project_"+t.model.id);if(a.length>0){var o="question-circle",l="primary",d=Lang.projects.status.not_deployed;t.model.status=parseInt(t.model.status);var p=e("td:nth-child(3) span.label",a);t.model.status===s?(o="check",l="success",d=Lang.projects.status.finished):t.model.status===i?(o="spinner fa-pulse",l="warning",d=Lang.projects.status.deploying):t.model.status===r?(o="warning",l="danger",d=Lang.projects.status.failed):t.model.status===n&&(o="clock-o",l="info",d=Lang.projects.status.pending),e("td:first a",a).text(t.model.name),e("td:nth-child(2)",a).text(moment(t.model.last_run).format("Do MMM YYYY h:mm:ss A")),p.attr("class","label label-"+l),e("i",p).attr("class","fa fa-"+o),e("span",p).text(d)}}),app.listener.on("project:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(t){e("#sidebar_project_"+t.model.id).parent("li").remove(),parseInt(t.model.id)===parseInt(app.project_id)&&(window.location.href="/")}),e(document).ready(function(){e("#pending_menu ul.menu li").length>0&&e("#pending_menu").show(),e("#deploying_menu ul.menu li").length>0&&e("#deploying_menu").show()})}(jQuery);var app=app||{};!function(e){e(".deployment-source:radio").on("change",function(t){var a=e(t.currentTarget);e("input[type=text].deployment-source").hide(),"branch"===a.val()?e("#deployment_branch").show():"tag"===a.val()&&e("#deployment_tag").show()}),e("#reason").on("show.bs.modal",function(t){var a=e(this);e(".callout-danger",a).hide()}),e("#reason button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal"),i=e("input[name=source]:checked").val();return e(".has-error",i).removeClass("has-error"),"branch"!==i&&"tag"!==i||""!==e("#deployment_"+i).val()?(s.addClass("fa-refresh fa-spin").removeClass("fa-save"),void e("button.close",n).hide()):(e("#deployment_"+i).parentsUntil("div").addClass("has-error"),e(".callout-danger",n).show(),void t.stopPropagation())}),e("#project").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),e("#template-list",s).hide(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#template-list",s).show(),e("#project_id").val(""),e("#project_name").val(""),e("#project_repository").val(""),e("#project_branch").val("master"),e("#project_group_id").val(e("#project_group_id option:first").val()),e("#project_builds_to_keep").val(10),e("#project_url").val(""),e("#project_build_url").val("")),s.find(".modal-title span").text(n)}),e("#project button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Projects.get(e("#project_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#project button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#project_id").val();if(i)var r=app.Projects.get(i);else var r=new app.Project;r.save({name:e("#project_name").val(),repository:e("#project_repository").val(),branch:e("#project_branch").val(),group_id:e("#project_group_id").val(),builds_to_keep:e("#project_builds_to_keep").val(),url:e("#project_url").val(),build_url:e("#project_build_url").val(),template_id:e("#project_template_id")?e("#project_template_id").val():null},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Projects.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Project=Backbone.Model.extend({urlRoot:"/admin/projects"});var t=Backbone.Collection.extend({model:app.Project});app.Projects=new t,app.ProjectsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#project_list tbody"),e("#project_list").hide(),e("#no_projects").show(),this.listenTo(app.Projects,"add",this.addOne),this.listenTo(app.Projects,"reset",this.addAll),this.listenTo(app.Projects,"remove",this.addAll),this.listenTo(app.Projects,"all",this.render),app.listener.on("project:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.Projects.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("project:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){app.Projects.add(e.model)}),app.listener.on("project:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(t){var a=app.Projects.get(parseInt(t.model.id));a&&app.Projects.remove(a),e("#project_"+t.model.id).parent("li").remove(),parseInt(t.model.id)===parseInt(app.project_id)&&(window.location.href="/")})},render:function(){app.Projects.length?(e("#no_projects").hide(),e("#project_list").show()):(e("#no_projects").show(),e("#project_list").hide())},addOne:function(e){var t=new app.ProjectView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Projects.each(this.addOne,this)}}),app.ProjectView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editProject"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#project-template").html())},render:function(){var e=this.model.toJSON();return e.deploy=e.last_run?moment(e.last_run).format("Do MMM YYYY h:mm:ss A"):!1,this.$el.html(this.template(e)),this},editProject:function(){e("#project_id").val(this.model.id),e("#project_name").val(this.model.get("name")),e("#project_repository").val(this.model.get("repository")),e("#project_branch").val(this.model.get("branch")),e("#project_group_id").val(this.model.get("group_id")),e("#project_builds_to_keep").val(this.model.get("builds_to_keep")),e("#project_url").val(this.model.get("url")),e("#project_build_url").val(this.model.get("build_url"))}}),e("#new_webhook").on("click",function(t){var a=e(t.currentTarget),s=a.data("project-id"),n=e("i",a);e(".fa-spin",a).length>0||(a.attr("disabled","disabled"),n.addClass("fa-spin"),e.ajax({type:"GET",url:"/webhook/"+s+"/refresh"}).fail(function(e){}).done(function(t){e("#webhook").html(t.url)}).always(function(){n.removeClass("fa-spin"),a.removeAttr("disabled")}))})}(jQuery);var app=app||{};!function(e){e("#template").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#template_id").val(""),e("#template_name").val("")),s.find(".modal-title span").text(n)}),e("#template button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Templates.get(e("#template_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#template button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#template_id").val();if(i)var r=app.Templates.get(i);else var r=new app.Template;r.save({name:e("#template_name").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||(app.Templates.add(a),window.location.href="/admin/templates/"+a.id)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Template=Backbone.Model.extend({urlRoot:"/admin/templates"});var t=Backbone.Collection.extend({model:app.Template});app.Templates=new t,app.TemplatesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#template_list tbody"),e("#template_list").hide(),e("#no_templates").show(),this.listenTo(app.Templates,"add",this.addOne),this.listenTo(app.Templates,"reset",this.addAll),this.listenTo(app.Templates,"remove",this.addAll),this.listenTo(app.Templates,"all",this.render),app.listener.on("template:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.Templates.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("template:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){app.Templates.add(e.model)}),app.listener.on("template:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.Templates.get(parseInt(e.model.id));t&&app.Templates.remove(t)})},render:function(){app.Templates.length?(e("#no_templates").hide(),e("#template_list").show()):(e("#no_templates").show(),e("#template_list").hide())},addOne:function(e){var t=new app.TemplateView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Templates.each(this.addOne,this)}}),app.TemplateView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editTemplate"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#template-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editTemplate:function(){e("#template_id").val(this.model.id),e("#template_name").val(this.model.get("name"))}})}(jQuery);var app=app||{};!function(e){var t=0,a=2,s=3;e("#server_list table").sortable({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",placeholder:'
',delay:500,onDrop:function(t,a,s){s(t,a);var n=[];e("tbody tr td:first-child",a.el[0]).each(function(t,a){n.push(e(a).data("server-id"))}),e.ajax({url:"/servers/reorder",method:"POST",data:{servers:n}})}}),e("#server").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.servers.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),e("#add-server-command",s).hide(),a.hasClass("btn-edit")?(n=Lang.servers.edit,e(".btn-danger",s).show()):(e("#server_id").val(""),e("#server_name").val(""),e("#server_address").val(""),e("#server_port").val("22"),e("#server_user").val(""),e("#server_path").val(""),e("#server_deploy_code").prop("checked",!0),e("#add-server-command",s).show()),s.find(".modal-title span").text(n)}),e("#server button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Servers.get(e("#server_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#server button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#server_id").val();if(i)var r=app.Servers.get(i);else var r=new app.Server;r.save({name:e("#server_name").val(),ip_address:e("#server_address").val(),port:e("#server_port").val(),user:e("#server_user").val(),path:e("#server_path").val(),deploy_code:e("#server_deploy_code").is(":checked"),project_id:e('input[name="project_id"]').val(),add_commands:e("#server_commands").is(":checked")},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Servers.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Server=Backbone.Model.extend({urlRoot:"/servers"});var n=Backbone.Collection.extend({model:app.Server,comparator:function(e,t){return e.get("name")>t.get("name")?-1:e.get("name")").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Heartbeat=Backbone.Model.extend({urlRoot:"/heartbeats"});var s=Backbone.Collection.extend({model:app.Heartbeat,comparator:function(e,t){return e.get("name")>t.get("name")?-1:e.get("name")").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Notification=Backbone.Model.extend({urlRoot:"/notifications"});var t=Backbone.Collection.extend({model:app.Notification});app.Notifications=new t,app.NotificationsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#notification_list tbody"),e("#no_notifications").show(),e("#notification_list").hide(),this.listenTo(app.Notifications,"add",this.addOne),this.listenTo(app.Notifications,"reset",this.addAll),this.listenTo(app.Notifications,"remove",this.addAll),this.listenTo(app.Notifications,"all",this.render),app.listener.on("notification:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.Notifications.get(parseInt(e.model.id));server&&t.set(e.model)}),app.listener.on("notification:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.Notifications.add(e.model)}),app.listener.on("notification:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.Notifications.get(parseInt(e.model.id));t&&app.Notifications.remove(t)})},render:function(){app.Notifications.length?(e("#no_notifications").hide(),e("#notification_list").show()):(e("#no_notifications").show(),e("#notification_list").hide())},addOne:function(e){var t=new app.NotificationView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Notifications.each(this.addOne,this)}}),app.NotificationView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editNotification"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#notification-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editNotification:function(){e("#notification_id").val(this.model.id),e("#notification_name").val(this.model.get("name")),e("#notification_webhook").val(this.model.get("webhook")),e("#notification_channel").val(this.model.get("channel")),e("#notification_icon").val(this.model.get("icon")),e("#notification_failure_only").prop("checked",this.model.get("failure_only")===!0)}})}(jQuery);var app=app||{};!function(e){e("#notifyemail").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.notifyEmails.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.notifyEmails.edit,e(".btn-danger",s).show()):(e("#notifyemail_id").val(""),e("#notifyemail_name").val(""),e("#notifyemail_address").val("")),s.find(".modal-title span").text(n)}),e("#notifyemail button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.NotifyEmails.get(e("#notifyemail_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#notifyemail button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#notifyemail_id").val();if(i)var r=app.NotifyEmails.get(i);else var r=new app.NotifyEmail;
+
+r.save({name:e("#notifyemail_name").val(),email:e("#notifyemail_address").val(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.NotifyEmails.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.NotifyEmail=Backbone.Model.extend({urlRoot:"/notify-email"});var t=Backbone.Collection.extend({model:app.NotifyEmail});app.NotifyEmails=new t,app.NotifyEmailsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#notifyemail_list tbody"),e("#no_notifyemails").show(),e("#notifyemail_list").hide(),this.listenTo(app.NotifyEmails,"add",this.addOne),this.listenTo(app.NotifyEmails,"reset",this.addAll),this.listenTo(app.NotifyEmails,"remove",this.addAll),this.listenTo(app.NotifyEmails,"all",this.render),app.listener.on("notifyemail:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.NotifyEmails.get(parseInt(e.model.id));server&&t.set(e.model)}),app.listener.on("notifyemail:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.NotifyEmails.add(e.model)}),app.listener.on("notifyemail:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.NotifyEmails.get(parseInt(e.model.id));t&&app.NotifyEmails.remove(t)})},render:function(){app.NotifyEmails.length?(e("#no_notifyemails").hide(),e("#notifyemail_list").show()):(e("#no_notifyemails").show(),e("#notifyemail_list").hide())},addOne:function(e){var t=new app.EmailView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.NotifyEmails.each(this.addOne,this)}}),app.EmailView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editEmail"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#notifyemail-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editEmail:function(){e("#notifyemail_id").val(this.model.id),e("#notifyemail_name").val(this.model.get("name")),e("#notifyemail_address").val(this.model.get("email"))}})}(jQuery);var app=app||{};!function(e){e("#sharefile").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.sharedFiles.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.sharedFiles.edit,e(".btn-danger",s).show()):(e("#file_id").val(""),e("#name").val(""),e("#file").val("")),s.find(".modal-title span").text(n)}),e("#sharefile button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.SharedFiles.get(e("#file_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#sharefile button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#file_id").val();if(i)var r=app.SharedFiles.get(i);else var r=new app.SharedFile;r.save({name:e("#name").val(),file:e("#file").val(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.SharedFiles.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.SharedFile=Backbone.Model.extend({urlRoot:"/shared-files"});var t=Backbone.Collection.extend({model:app.SharedFile});app.SharedFiles=new t,app.SharedFilesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#file_list tbody"),e("#no_files").show(),e("#file_list").hide(),this.listenTo(app.SharedFiles,"add",this.addOne),this.listenTo(app.SharedFiles,"reset",this.addAll),this.listenTo(app.SharedFiles,"remove",this.addAll),this.listenTo(app.SharedFiles,"all",this.render),app.listener.on("sharedfile:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.SharedFiles.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("sharedfile:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.SharedFiles.add(e.model)}),app.listener.on("sharedfile:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.SharedFiles.get(parseInt(e.model.id));t&&app.SharedFiles.remove(t)})},render:function(){app.SharedFiles.length?(e("#no_files").hide(),e("#file_list").show()):(e("#no_files").show(),e("#file_list").hide())},addOne:function(e){var t=new app.FileView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.SharedFiles.each(this.addOne,this)}}),app.FileView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editFile"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#files-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editFile:function(){e("#file_id").val(this.model.id),e("#name").val(this.model.get("name")),e("#file").val(this.model.get("file"))}})}(jQuery);var app=app||{};!function(e){var t,a;e("#projectfile, #view-projectfile").on("hidden.bs.modal",function(e){t.destroy()}),e("#view-projectfile").on("show.bs.modal",function(e){t=ace.edit("preview-content"),t.setReadOnly(!0),t.getSession().setUseWrapMode(!0);var s=a.substr(a.lastIndexOf(".")+1).toLowerCase();"php"===s||"ini"===s?t.getSession().setMode("ace/mode/"+s):"yml"===s&&t.getSession().setMode("ace/mode/yaml")}),e("#projectfile").on("show.bs.modal",function(a){var s=e(a.relatedTarget),n=e(this),i=Lang.projectFiles.create;t=ace.edit("project-file-content");var r=e("#project-file-path").val(),o=r.substr(r.lastIndexOf(".")+1).toLowerCase();"php"===o||"ini"===o?t.getSession().setMode("ace/mode/"+o):"yml"===o&&t.getSession().setMode("ace/mode/yaml"),e(".btn-danger",n).hide(),e(".callout-danger",n).hide(),e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),s.hasClass("btn-edit")?(i=Lang.projectFiles.edit,e(".btn-danger",n).show()):(e("#project_file_id").val(""),e("#project-file-name").val(""),e("#project-file-path").val(""),t.setValue(""),t.gotoLine(1)),n.find(".modal-title span").text(i)}),e("#projectfile button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.ProjectFiles.get(e("#project_file_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#projectfile button.btn-save").on("click",function(a){var s=e(a.currentTarget),n=s.find("i"),i=s.parents(".modal");n.addClass("fa-refresh fa-spin").removeClass("fa-save"),i.find("input").attr("disabled","disabled"),e("button.close",i).hide();var r=e("#project_file_id").val();if(r)var o=app.ProjectFiles.get(r);else var o=new app.ProjectFile;o.save({name:e("#project-file-name").val(),path:e("#project-file-path").val(),content:t.getValue(),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(a,s,o){i.modal("hide"),e(".callout-danger",i).hide(),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find("input").removeAttr("disabled"),r||app.ProjectFiles.add(s),t.setValue(""),t.gotoLine(1)},error:function(t,a,s){e(".callout-danger",i).show();var r=a.responseJSON;e(".has-error",i).removeClass("has-error"),e(".label-danger",i).remove(),e("form input",i).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find("input").removeAttr("disabled")}})}),app.ProjectFile=Backbone.Model.extend({urlRoot:"/project-file"});var s=Backbone.Collection.extend({model:app.ProjectFile});app.ProjectFiles=new s,app.ProjectFilesTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#projectfile_list tbody"),e("#no_projectfiles").show(),e("#projectfile_list").hide(),this.listenTo(app.ProjectFiles,"add",this.addOne),this.listenTo(app.ProjectFiles,"reset",this.addAll),this.listenTo(app.ProjectFiles,"remove",this.addAll),this.listenTo(app.ProjectFiles,"all",this.render),app.listener.on("projectfile:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.ProjectFiles.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("projectfile:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.ProjectFiles.add(e.model)}),app.listener.on("projectfile:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.ProjectFiles.get(parseInt(e.model.id));t&&app.ProjectFiles.remove(t)})},render:function(){app.ProjectFiles.length?(e("#no_projectfiles").hide(),e("#projectfile_list").show()):(e("#no_projectfiles").show(),e("#projectfile_list").hide())},addOne:function(e){var t=new app.ProjectFileView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.ProjectFiles.each(this.addOne,this)}}),app.ProjectFileView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editFile","click .btn-view":"viewFile"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#project-files-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},viewFile:function(){a=this.model.get("path"),e("#preview-content").text(this.model.get("content"))},editFile:function(){e("#project_file_id").val(this.model.id),e("#project-file-name").val(this.model.get("name")),e("#project-file-path").val(this.model.get("path")),e("#project-file-content").text(this.model.get("content"))}})}(jQuery);var app=app||{};!function(e){var t=1;e("#checkurl").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.CheckUrls.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.CheckUrls.edit,e(".btn-danger",s).show()):(e("#url_id").val(""),e("#title").val(""),e("#url").val(""),e("#period_5").prop("checked",!0)),s.find(".modal-title span").text(n)}),e("#checkurl button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.CheckUrls.get(e("#url_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#checkurl button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#url_id").val();if(i)var r=app.CheckUrls.get(i);else var r=new app.CheckUrl;r.save({title:e("#title").val(),url:e("#url").val(),is_report:!0,period:parseInt(e("input[name=period]:checked").val()),project_id:e('input[name="project_id"]').val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.CheckUrls.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.CheckUrl=Backbone.Model.extend({urlRoot:"/check-url"});var a=Backbone.Collection.extend({model:app.CheckUrl});app.CheckUrls=new a,app.CheckUrlsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#checkurl_list tbody"),e("#no_checkurls").show(),e("#checkurl_list").hide(),this.listenTo(app.CheckUrls,"add",this.addOne),this.listenTo(app.CheckUrls,"reset",this.addAll),this.listenTo(app.CheckUrls,"remove",this.addAll),this.listenTo(app.CheckUrls,"all",this.render),app.listener.on("checkurl:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.CheckUrls.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("checkurl:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&app.CheckUrls.add(e.model)}),app.listener.on("checkurl:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.CheckUrls.get(parseInt(e.model.id));t&&app.CheckUrls.remove(t)})},render:function(){app.CheckUrls.length?(e("#no_checkurls").hide(),e("#checkurl_list").show()):(e("#no_checkurls").show(),e("#checkurl_list").hide())},addOne:function(e){var t=new app.CheckUrlView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.CheckUrls.each(this.addOne,this)}}),app.CheckUrlView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editUrl"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#checkUrls-template").html())},render:function(){var e=this.model.toJSON();return parseInt(e.last_status)===t?(e.status_css="danger",e.icon_css="warning",e.status=Lang.CheckUrls.failure):(e.status_css="success",e.icon_css="check",e.status=Lang.CheckUrls.success),e.interval_label=e.period+" "+Lang.CheckUrls.length,this.$el.html(this.template(e)),this},editUrl:function(){e("#url_id").val(this.model.id),e("#title").val(this.model.get("title")),e("#url").val(this.model.get("url")),e("#period_"+this.model.get("period")).prop("checked",!0),e("#is_report").prop("checked",this.model.get("is_report"))}})}(jQuery);var app=app||{};!function(e){var t=0,a=2,s=3,n=4;e("#log").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=a.attr("id").replace("log_",""),n=e("h3 span",a.parents(".box")).text(),i=e(this),r=e("pre",i),o=e("#loading",i);r.hide(),o.show(),e("#action",i).text(n),r.text(""),e.ajax({type:"GET",url:"/log/"+s}).done(function(e){var t=e.output;t=t.replace(/<\/error>/g,""),t=t.replace(/<\/info>/g,""),t=t.replace(//g,''),t=t.replace(//g,''),r.html(t),r.show(),o.hide()}).fail(function(){}).always(function(){})}),app.ServerLog=Backbone.Model.extend({urlRoot:"/status"});var i=Backbone.Collection.extend({model:app.ServerLog});app.Deployment=new i,app.DeploymentView=Backbone.View.extend({el:"#app",$containers:[],events:{},initialize:function(){var t=this;e(".deploy-step tbody").each(function(a,s){t.$containers.push({step:parseInt(e(s).attr("id").replace("step_","")),element:s})}),this.listenTo(app.Deployment,"add",this.addOne),this.listenTo(app.Deployment,"reset",this.addAll),this.listenTo(app.Deployment,"remove",this.addAll),this.listenTo(app.Deployment,"all",this.render),app.listener.on("serverlog:REBELinBLUE\\Deployer\\Events\\ServerLogChanged",function(e){var t=app.Deployment.get(e.log_id);t&&t.set({status:e.status,output:e.output,runtime:e.runtime,started_at:e.started_at?e.started_at:!1,finished_at:e.finished_at?e.finished_at:!1})}),app.listener.on("deployment:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(t){parseInt(t.model.project_id)===parseInt(app.project_id)&&t.model.repo_failure&&e("#repository_error").show()})},addOne:function(t){var a=new app.LogView({model:t}),s=_.find(this.$containers,function(e){return parseInt(e.step)===parseInt(t.get("deploy_step_id"))});e(s.element).append(a.render().el)},addAll:function(){e(this.$containers).each(function(e,t){t.html("")}),app.Commands.each(this.addOne,this)}}),app.LogView=Backbone.View.extend({tagName:"tr",events:{},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#log-template").html())},render:function(){var e=this.model.toJSON();return e.status_css="info",e.icon_css="clock-o",e.status=Lang.status.pending,parseInt(this.model.get("status"))===t?(e.status_css="success",e.icon_css="check",e.status=Lang.status.completed):parseInt(this.model.get("status"))===a?(e.status_css="warning",e.icon_css="spinner fa-spin",e.status=Lang.status.running):(parseInt(this.model.get("status"))===s||parseInt(this.model.get("status"))===n)&&(e.status_css="danger",e.icon_css="warning",e.status=Lang.status.failed,parseInt(this.model.get("status"))===n&&(e.status=Lang.status.cancelled)),e.formatted_start_time=e.started_at?moment(e.started_at).format("h:mm:ss A"):!1,e.formatted_end_time=e.finished_at?moment(e.finished_at).format("h:mm:ss A"):!1,this.$el.html(this.template(e)),this}})}(jQuery);var app=app||{};!function(e){e(".command-list table").sortable({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",placeholder:'
',delay:500,onDrop:function(t,a,s){s(t,a);var n=[];e("tbody tr td:first-child",a.el[0]).each(function(t,a){n.push(e(a).data("command-id"))}),e.ajax({url:"/commands/reorder",method:"POST",data:{commands:n}})}});var t;e("#command").on("hidden.bs.modal",function(e){t.destroy()}),e("#command").on("show.bs.modal",function(a){var s=e(a.relatedTarget),n=e(this),i=Lang.create;t=ace.edit("command_script"),t.getSession().setMode("ace/mode/sh"),e(".btn-danger",n).hide(),e(".callout-danger",n).hide(),e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),s.hasClass("btn-edit")?(i=Lang.edit,e(".btn-danger",n).show()):(e("#command_id").val(""),e("#command_step").val(s.data("step")),e("#command_name").val(""),t.setValue(""),t.gotoLine(1),e("#command_user").val(""),e("#command_optional").val(""),e("#command_default_on").val(""),e("#command_default_on_row").addClass("hide"),e(".command-server").prop("checked",!0)),n.find(".modal-title span").text(i)}),e("#command button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Commands.get(e("#command_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#command_optional").on("change",function(t){e("#command_default_on_row").addClass("hide"),e(this).is(":checked")===!0&&e("#command_default_on_row").removeClass("hide")}),e("#command button.btn-save").on("click",function(a){var s=e(a.currentTarget),n=s.find("i"),i=s.parents(".modal");n.addClass("fa-refresh fa-spin").removeClass("fa-save"),i.find(":input").attr("disabled","disabled"),e("button.close",i).hide();var r=e("#command_id").val();if(r)var o=app.Commands.get(r);else var o=new app.Command;var l=[];e(".command-server:checked").each(function(){l.push(e(this).val())}),o.save({name:e("#command_name").val(),script:t.getValue(),user:e("#command_user").val(),step:e("#command_step").val(),project_id:e('input[name="project_id"]').val(),servers:l,optional:e("#command_optional").is(":checked"),default_on:e("#command_default_on").is(":checked")},{wait:!0,success:function(a,s,o){i.modal("hide"),e(".callout-danger",i).hide(),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find(":input").removeAttr("disabled"),r||app.Commands.add(s),t.setValue(""),t.gotoLine(1)},error:function(t,a,s){e(".callout-danger",i).show();var r=a.responseJSON;e(".has-error",i).removeClass("has-error"),e(".label-danger",i).remove(),e("form input",i).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),n.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",i).show(),i.find(":input").removeAttr("disabled")}})}),app.Command=Backbone.Model.extend({urlRoot:"/commands",defaults:function(){return{order:app.Commands.nextOrder()}},isAfter:function(){return parseInt(this.get("step"))%3===0}});var a=Backbone.Collection.extend({model:app.Command,comparator:"order",nextOrder:function(){return this.length?this.last().get("order")+1:1}});app.Commands=new a,app.CommandsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$beforeList=e("#commands-before .command-list tbody"),this.$afterList=e("#commands-after .command-list tbody"),e(".no-commands").show(),e(".command-list").hide(),this.listenTo(app.Commands,"add",this.addOne),this.listenTo(app.Commands,"reset",this.addAll),this.listenTo(app.Commands,"remove",this.addAll),this.listenTo(app.Commands,"all",this.render),app.listener.on("command:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.Commands.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("command:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){parseInt(e.model.project_id)===parseInt(app.project_id)&&(parseInt(e.model.step)+1===parseInt(app.command_action)||parseInt(e.model.step)-1===parseInt(app.command_action))&&app.Commands.add(e.model)}),app.listener.on("command:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.Commands.get(parseInt(e.model.id));t&&app.Commands.remove(t)})},render:function(){var t=app.Commands.find(function(e){return!e.isAfter()});"undefined"!=typeof t?(e("#commands-before .no-commands").hide(),e("#commands-before .command-list").show()):(e("#commands-before .no-commands").show(),e("#commands-before .command-list").hide());var a=app.Commands.find(function(e){return e.isAfter()});"undefined"!=typeof a?(e("#commands-after .no-commands").hide(),e("#commands-after .command-list").show()):(e("#commands-after .no-commands").show(),e("#commands-after .command-list").hide())},addOne:function(e){var t=new app.CommandView({model:e});e.isAfter()?this.$afterList.append(t.render().el):this.$beforeList.append(t.render().el)},addAll:function(){this.$beforeList.html(""),this.$afterList.html(""),app.Commands.each(this.addOne,this)}}),app.CommandView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editCommand"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#command-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editCommand:function(){e("#command_id").val(this.model.id),e("#command_step").val(this.model.get("step")),e("#command_name").val(this.model.get("name")),e("#command_script").text(this.model.get("script")),e("#command_user").val(this.model.get("user")),e("#command_optional").prop("checked",this.model.get("optional")===!0),e("#command_default_on").prop("checked",this.model.get("default_on")===!0),e("#command_default_on_row").addClass("hide"),this.model.get("optional")===!0&&e("#command_default_on_row").removeClass("hide"),e(".command-server").prop("checked",!1),e(this.model.get("servers")).each(function(t,a){e("#command_server_"+a.id).prop("checked",!0)})}})}(jQuery);var app=app||{};!function(e){e("#user").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".existing-only",s).hide(),e(".new-only",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show(),e(".existing-only",s).show()):(e("#user_id").val(""),e("#user_name").val(""),e("#user_email").val(""),e("#user_password").val(""),e("#user_password_confirmation").val(""),e(".new-only",s).show()),s.find(".modal-title span").text(n)}),e("#user button.btn-delete").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-trash"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=app.Users.get(e("#user_id").val());i.destroy({wait:!0,success:function(t,a,i){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")},error:function(){s.removeClass("fa-refresh fa-spin").addClass("fa-trash"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),e("#user button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#user_id").val();if(i)var r=app.Users.get(i);else var r=new app.User;r.save({name:e("#user_name").val(),email:e("#user_email").val(),password:e("#user_password").val(),password_confirmation:e("#user_password_confirmation").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Users.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.User=Backbone.Model.extend({urlRoot:"/admin/users",initialize:function(){}});var t=Backbone.Collection.extend({model:app.User});app.Users=new t,app.UsersTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#user_list tbody"),this.listenTo(app.Users,"add",this.addOne),this.listenTo(app.Users,"reset",this.addAll),this.listenTo(app.Users,"remove",this.addAll),this.listenTo(app.Users,"all",this.render),app.listener.on("user:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(e){var t=app.Users.get(parseInt(e.model.id));t&&t.set(e.model)}),app.listener.on("user:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){app.Users.add(e.model)}),app.listener.on("user:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.Users.get(parseInt(e.model.id));t&&app.Users.remove(t)})},addOne:function(e){var t=new app.UserView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Users.each(this.addOne,this)}}),app.UserView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editUser"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#user-template").html())},render:function(){var e=this.model.toJSON();return e.created=moment(e.created_at).format("Do MMM YYYY h:mm:ss A"),this.$el.html(this.template(e)),this},editUser:function(){e("#user_id").val(this.model.id),e("#user_name").val(this.model.get("name")),e("#user_email").val(this.model.get("email"))}})}(jQuery);var app=app||{};!function(e){e("#group").on("show.bs.modal",function(t){var a=e(t.relatedTarget),s=e(this),n=Lang.create;e(".btn-danger",s).hide(),e(".callout-danger",s).hide(),e(".has-error",s).removeClass("has-error"),e(".label-danger",s).remove(),a.hasClass("btn-edit")?(n=Lang.edit,e(".btn-danger",s).show()):(e("#group_id").val(""),e("#group_name").val("")),s.find(".modal-title span").text(n)}),e("#group button.btn-save").on("click",function(t){var a=e(t.currentTarget),s=a.find("i"),n=a.parents(".modal");s.addClass("fa-refresh fa-spin").removeClass("fa-save"),n.find("input").attr("disabled","disabled"),e("button.close",n).hide();var i=e("#group_id").val();if(i)var r=app.Groups.get(i);else var r=new app.Group;r.save({name:e("#group_name").val()},{wait:!0,success:function(t,a,r){n.modal("hide"),e(".callout-danger",n).hide(),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled"),i||app.Groups.add(a)},error:function(t,a,i){e(".callout-danger",n).show();var r=a.responseJSON;e(".has-error",n).removeClass("has-error"),e(".label-danger",n).remove(),e("form input",n).each(function(t,a){a=e(a);var s=a.attr("name");if("undefined"!=typeof r[s]){var n=a.parent("div");n.addClass("has-error"),n.append(e("").attr("class","label label-danger").text(r[s]))}}),s.removeClass("fa-refresh fa-spin").addClass("fa-save"),e("button.close",n).show(),n.find("input").removeAttr("disabled")}})}),app.Group=Backbone.Model.extend({urlRoot:"/admin/groups",initialize:function(){}});var t=Backbone.Collection.extend({model:app.Group});app.Groups=new t,app.GroupsTab=Backbone.View.extend({el:"#app",events:{},initialize:function(){this.$list=e("#group_list tbody"),this.listenTo(app.Groups,"add",this.addOne),this.listenTo(app.Groups,"reset",this.addAll),this.listenTo(app.Groups,"remove",this.addAll),this.listenTo(app.Groups,"all",this.render),app.listener.on("group:REBELinBLUE\\Deployer\\Events\\ModelChanged",function(t){e("#group_"+t.model.id).html(t.model.name);var a=app.Groups.get(parseInt(t.model.id));a&&a.set(t.model)}),app.listener.on("group:REBELinBLUE\\Deployer\\Events\\ModelCreated",function(e){app.Groups.add(e.model);
+
+}),app.listener.on("group:REBELinBLUE\\Deployer\\Events\\ModelTrashed",function(e){var t=app.Groups.get(parseInt(e.model.id));t&&app.Groups.remove(t)})},addOne:function(e){var t=new app.GroupView({model:e});this.$list.append(t.render().el)},addAll:function(){this.$list.html(""),app.Servers.each(this.addOne,this)}}),app.GroupView=Backbone.View.extend({tagName:"tr",events:{"click .btn-edit":"editGroup"},initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this.template=_.template(e("#group-template").html())},render:function(){var e=this.model.toJSON();return this.$el.html(this.template(e)),this},editGroup:function(){e("#group_id").val(this.model.id),e("#group_name").val(this.model.get("name"))}})}(jQuery);var iframeCount=0;Uploader.prototype.setup=function(){this.form=$(''),this.iframe=newIframe(),this.form.attr("target",this.iframe.attr("name"));var e=this.settings.data;this.form.append(createInputs(e)),this.form.append(window.FormData?createInputs({_uploader_:"formdata"}):createInputs({_uploader_:"iframe"}));var t=document.createElement("input");t.type="file",t.name=this.settings.name,this.settings.accept&&(t.accept=this.settings.accept),this.settings.multiple&&(t.multiple=!0,t.setAttribute("multiple","multiple")),this.input=$(t);var a=$(this.settings.trigger);return this.input.attr("hidefocus",!0).css({position:"absolute",top:0,right:0,opacity:0,outline:0,cursor:"pointer",height:a.outerHeight(),fontSize:Math.max(64,5*a.outerHeight())}),this.form.append(this.input),this.form.css({position:"absolute",top:a.offset().top,left:a.offset().left,overflow:"hidden",width:a.outerWidth(),height:a.outerHeight(),zIndex:findzIndex(a)+10}).appendTo("body"),this},Uploader.prototype.bind=function(){var e=this,t=$(e.settings.trigger);t.mouseenter(function(){e.form.css({top:t.offset().top,left:t.offset().left,width:t.outerWidth(),height:t.outerHeight()})}),e.bindInput()},Uploader.prototype.bindInput=function(){var e=this;e.input.change(function(t){e._files=this.files||[{name:t.target.value}];var a=e.input.val();if(e.settings.change)e.settings.change.call(e,e._files);else if(a)return e.submit()})},Uploader.prototype.submit=function(){var e=this;if(window.FormData&&e._files){var t=new FormData(e.form.get(0));t.append(e.settings.name,e._files);var a;if(e.settings.progress){var s=e._files;a=function(){var t=$.ajaxSettings.xhr();return t.upload&&t.upload.addEventListener("progress",function(t){var a=0,n=t.loaded||t.position,i=t.total;t.lengthComputable&&(a=Math.ceil(n/i*100)),e.settings.progress(t,n,i,a,s)},!1),t}}return $.ajax({url:e.settings.action,type:"post",processData:!1,contentType:!1,data:t,xhr:a,context:this,success:e.settings.success,error:e.settings.error}),this}return e.iframe=newIframe(),e.form.attr("target",e.iframe.attr("name")),$("body").append(e.iframe),e.iframe.one("load",function(){$('').appendTo(e.form).remove();var t;try{t=$(this).contents().find("body").html()}catch(a){t="cross-domain"}$(this).remove(),t?e.settings.success&&e.settings.success(t):e.settings.error&&e.settings.error(e.input.val())}),e.form.submit(),this},Uploader.prototype.refreshInput=function(){var e=this.input.clone();this.input.before(e),this.input.off("change"),this.input.remove(),this.input=e,this.bindInput()},Uploader.prototype.change=function(e){return e?(this.settings.change=e,this):this},Uploader.prototype.success=function(e){var t=this;return this.settings.success=function(a){t.refreshInput(),e&&e(a)},this},Uploader.prototype.error=function(e){var t=this;return this.settings.error=function(a){e&&(t.refreshInput(),e(a))},this},Uploader.prototype.enable=function(){this.input.prop("disabled",!1),this.input.css("cursor","pointer")},Uploader.prototype.disable=function(){this.input.prop("disabled",!0),this.input.css("cursor","not-allowed")},MultipleUploader.prototype.submit=function(){return $.each(this._uploaders,function(e,t){t.submit()}),this},MultipleUploader.prototype.change=function(e){return $.each(this._uploaders,function(t,a){a.change(e)}),this},MultipleUploader.prototype.success=function(e){return $.each(this._uploaders,function(t,a){a.success(e)}),this},MultipleUploader.prototype.error=function(e){return $.each(this._uploaders,function(t,a){a.error(e)}),this},MultipleUploader.prototype.enable=function(){return $.each(this._uploaders,function(e,t){t.enable()}),this},MultipleUploader.prototype.disable=function(){return $.each(this._uploaders,function(e,t){t.disable()}),this},MultipleUploader.Uploader=Uploader;var app=app||{};if(function(e){if(0!==e("#upload").length){var t={};e("#request-change-email").on("click",function(){var t=e(this).parents(".box");t.children(".overlay").removeClass("hide"),e.post("/profile/email",function(e){"success"==e&&(t.children(".overlay").addClass("hide"),t.find(".help-block").removeClass("hide"))})}),e(".avatar>img").cropper({aspectRatio:1,preview:".avatar-preview",crop:function(e){t.dataX=Math.round(e.x),t.dataY=Math.round(e.y),t.dataHeight=Math.round(e.height),t.dataWidth=Math.round(e.width),t.dataRotate=Math.round(e.rotate)},built:function(){e("#upload-overlay").addClass("hide")}});{new Uploader({trigger:"#upload",name:"file",action:"/profile/upload",accept:"image/*",data:{_token:e('meta[name="token"]').attr("content")},multiple:!1,change:function(){e("#upload-overlay").removeClass("hide"),this.submit()},error:function(t){t.responseJSON.file?alert(t.responseJSON.file.join("")):t.responseJSON.error&&alert(t.responseJSON.error.message),e("#upload-overlay").addClass("hide")},success:function(a){"success"===a.message&&(e(".avatar>img").cropper("replace",a.image),t.path=a.path,e(".current-avatar-preview").addClass("hide"),e(".avatar-preview").removeClass("hide"),e("#save-avatar").removeClass("hide"))}})}e("#save-avatar").click(function(){e("#upload-overlay").removeClass("hide"),e(".avatar-message .alert").addClass("hide"),e.post("/profile/avatar",t).success(function(t){e("#upload-overlay").addClass("hide"),t.image?(e(".avatar-message .alert.alert-success").removeClass("hide"),e("#use-gravatar").removeClass("hide")):e(".avatar-message .alert.alert-danger").removeClass("hide")})}),e("#use-gravatar").click(function(){e("#upload-overlay").removeClass("hide"),e(".avatar-message .alert").addClass("hide"),e.post("/profile/gravatar").success(function(t){e("#upload-overlay").addClass("hide"),e(".avatar-message .alert.alert-success").removeClass("hide"),e(".avatar-preview").addClass("hide"),e(".current-avatar-preview").removeClass("hide"),e(".current-avatar-preview").attr("src",t.image),e("#use-gravatar").addClass("hide"),e("#avatar-save-buttons button").addClass("hide")})})}}(jQuery),"undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa fa-minus",open:"fa fa-plus",remove:"fa fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){var e=$.AdminLTE.options;$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),e.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:"200px",alwaysVisible:!1,size:"3px"}).css("width","100%"),e.sidebarPushMenu&&$.AdminLTE.pushMenu(e.sidebarToggleSelector),e.enableBSToppltip&&$(e.BSTooltipSelector).tooltip(),e.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),e.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),e.directChat.enable&&$(e.directChat.contactToggleSelector).click(function(){var e=$(this).parents(".direct-chat").first();e.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var e=$(this);$(this).find(".btn").click(function(t){e.find(".btn.active").removeClass("active"),$(this).addClass("active"),t.preventDefault()})})}),$.AdminLTE.layout={activate:function(){var e=this;e.fix(),e.fixSidebar(),$(window,".wrapper").resize(function(){e.fix(),e.fixSidebar()})},fix:function(){var e=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),t=$(window).height(),a=$(".sidebar").height();$("body").hasClass("fixed")?$(".content-wrapper, .right-side").css("min-height",t-$(".main-footer").outerHeight()):t>=a?$(".content-wrapper, .right-side").css("min-height",t-e):$(".content-wrapper, .right-side").css("min-height",a)},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&console&&console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu=function(e){var t=this.options.screenSizes;$(e).click(function(e){e.preventDefault(),$(window).width()>t.sm-1?$("body").toggleClass("sidebar-collapse"):$("body").hasClass("sidebar-open")?($("body").removeClass("sidebar-open"),$("body").removeClass("sidebar-collapse")):$("body").addClass("sidebar-open")}),$(".content-wrapper").click(function(){$(window).width()<=t.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")})},$.AdminLTE.tree=function(e){var t=this;$("li a",$(e)).click(function(e){var a=$(this),s=a.next();if(s.is(".treeview-menu")&&s.is(":visible"))s.slideUp("normal",function(){s.removeClass("menu-open")}),s.parent("li").removeClass("active");else if(s.is(".treeview-menu")&&!s.is(":visible")){var n=a.parents("ul").first(),i=n.find("ul:visible").slideUp("normal");i.removeClass("menu-open");var r=a.parent("li");s.slideDown("normal",function(){s.addClass("menu-open"),n.find("li.active").removeClass("active"),r.addClass("active"),t.layout.fix()})}s.is(".treeview-menu")&&e.preventDefault()})},$.AdminLTE.boxWidget={activate:function(){var e=$.AdminLTE.options,t=this;$(e.boxWidgetOptions.boxWidgetSelectors.collapse).click(function(e){e.preventDefault(),t.collapse($(this))}),$(e.boxWidgetOptions.boxWidgetSelectors.remove).click(function(e){e.preventDefault(),t.remove($(this))})},collapse:function(e){var t=e.parents(".box").first(),a=t.find(".box-body, .box-footer");t.hasClass("collapsed-box")?(e.children(".fa-plus").removeClass("fa-plus").addClass("fa-minus"),a.slideDown(300,function(){t.removeClass("collapsed-box")})):(e.children(".fa-minus").removeClass("fa-minus").addClass("fa-plus"),a.slideUp(300,function(){t.addClass("collapsed-box")}))},remove:function(e){var t=e.parents(".box").first();t.slideUp()},options:$.AdminLTE.options.boxWidgetOptions},function(e){e.fn.boxRefresh=function(t){function a(e){e.append(i),n.onLoadStart.call(e)}function s(e){e.find(i).remove(),n.onLoadDone.call(e)}var n=e.extend({trigger:".refresh-btn",source:"",onLoadStart:function(e){},onLoadDone:function(e){}},t),i=e('');return this.each(function(){if(""===n.source)return void(console&&console.log("Please specify a source first - boxRefresh()"));var t=e(this),i=t.find(n.trigger).first();i.click(function(e){e.preventDefault(),a(t),t.find(".box-body").load(n.source,function(){s(t)})})})}}(jQuery),function(e){e.fn.todolist=function(t){var a=e.extend({onCheck:function(e){},onUncheck:function(e){}},t);return this.each(function(){"undefined"!=typeof e.fn.iCheck?(e("input",this).on("ifChecked",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onCheck.call(s)}),e("input",this).on("ifUnchecked",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onUncheck.call(s)})):e("input",this).on("change",function(t){var s=e(this).parents("li").first();s.toggleClass("done"),a.onCheck.call(s)})})}}(jQuery);
+//# sourceMappingURL=app.js.map
\ No newline at end of file
diff --git a/public/build/js/app.js.map b/public/build/js/app.js.map
index 9328cc9be..88c79f1bd 100644
--- a/public/build/js/app.js.map
+++ b/public/build/js/app.js.map
@@ -1 +1 @@
-{"version":3,"sources":["uploader.js","app.js","projects.js","templates.js","servers.js","heartbeats.js","notifications.js","notifyEmails.js","shareFiles.js","projectFiles.js","checkUrls.js","deployment.js","commands.js","users.js","groups.js","profile.js","AdminLTE.js"],"names":["Uploader","options","this","isString","trigger","settings","name","action","data","accept","change","error","multiple","success","$","extend","$trigger","attr","parse","setup","bind","val","Object","prototype","toString","call","createInputs","i","inputs","document","createElement","type","value","push","str","ret","pairs","split","unescape","s","decodeURIComponent","replace","length","pair","key","findzIndex","$node","parents","parentsUntil","zIndex","item","eq","css","parseInt","newIframe","iframeName","iframeCount","iframe","hide","MultipleUploader","uploaders","each","_uploaders","ajaxPrefilter","originalOptions","jqXHR","setRequestHeader","app","updateTimeline","ajax","url","response","html","updateNavBar","model","time","moment","started_at","format","id","remove","show","template","_","status","DEPLOYMENT_PENDING","append","DEPLOYMENT_DEPLOYING","pending","deploying","pending_label","Lang","nav","multi_pending","single_pending","deploying_label","multi_running","single_running","text","FINISHED","PENDING","DEPLOYING","FAILED","DEPLOYMENT_COMPLETED","DEPLOYMENT_FAILED","project_id","listener","io","connect","on","project","deployment","committer","commit_url","short_commit","icon_class","label_class","label","deployments","done","completed","running","failed","removeAttr","projects","not_deployed","finished","last_run","parent","window","location","href","ready","jQuery","event","target","currentTarget","modal","icon","find","dialog","source","removeClass","addClass","stopPropagation","button","relatedTarget","title","create","hasClass","edit","Projects","get","destroy","wait","Project","save","repository","branch","group_id","builds_to_keep","build_url","template_id","add","errors","responseJSON","index","element","Backbone","Model","urlRoot","Collection","ProjectsTab","View","el","events","initialize","$list","listenTo","addOne","addAll","render","set","view","ProjectView","tagName","click .btn-edit","toJSON","deploy","$el","editProject","fail","always","Templates","Template","TemplatesTab","TemplateView","editTemplate","SUCCESSFUL","TESTING","sortable","containerSelector","itemPath","itemSelector","placeholder","delay","onDrop","container","_super","ids","idx","method","servers","prop","server","Servers","server_id","Server","ip_address","port","user","path","deploy_code","is","add_commands","comparator","serverA","serverB","ServersTab","ServerView","click .btn-test","status_css","icon_css","untested","successful","testing","editServer","testConnection","that","OK","MISSING","heartbeats","heartbeat","Heartbeats","heartbeat_id","Heartbeat","interval","heartbeatA","heartbeatB","HeartbeatsTab","HeartbeatView","has_run","ok","missing","last_activity","interval_label","intervals","formatted_date","editHeartbeat","notifications","notification","Notifications","notification_id","Notification","webhook","channel","failure_only","NotificationsTab","NotificationView","editNotification","notifyEmails","file","NotifyEmails","notifyemail_id","NotifyEmail","email","NotifyEmailsTab","EmailView","editEmail","sharedFiles","SharedFiles","file_id","SharedFile","SharedFilesTab","share","FileView","editFile","editor","previewfile","ace","setReadOnly","getSession","setUseWrapMode","extension","substr","lastIndexOf","toLowerCase","setMode","projectFiles","filename","setValue","gotoLine","ProjectFiles","project_file_id","ProjectFile","content","getValue","ProjectFilesTab","ProjectFileView","click .btn-view","viewFile","CheckUrls","url_id","CheckUrl","is_report","period","CheckUrlsTab","link","CheckUrlView","last_status","failure","editUrl","COMPLETED","RUNNING","CANCELLED","log_id","step","log","loader","output","ServerLog","Deployment","DeploymentView","$containers","runtime","finished_at","repo_failure","LogView","found","Commands","cancelled","formatted_start_time","formatted_end_time","commands","command","command_id","Command","server_ids","script","optional","defaults","order","nextOrder","isAfter","last","CommandsTab","$beforeList","$afterList","command_action","before","after","CommandView","editCommand","Users","user_id","User","password","password_confirmation","UsersTab","UserView","created","created_at","editUser","group","Groups","Group","GroupsTab","GroupView","editGroup","form","FormData","_uploader_","input","setAttribute","position","top","right","opacity","outline","cursor","height","outerHeight","fontSize","Math","max","offset","left","overflow","width","outerWidth","appendTo","self","mouseenter","bindInput","e","_files","files","submit","optionXhr","progress","xhr","ajaxSettings","upload","addEventListener","percent","loaded","total","lengthComputable","ceil","processData","contentType","context","one","contents","refreshInput","newInput","clone","off","callback","me","enable","disable","cropperData","box","children","post","res","cropper","aspectRatio","preview","crop","dataX","round","x","dataY","y","dataHeight","dataWidth","dataRotate","rotate","built","_token","alert","join","message","image","click","resp","Error","AdminLTE","navbarMenuSlimscroll","navbarMenuSlimscrollWidth","navbarMenuHeight","sidebarToggleSelector","sidebarPushMenu","sidebarSlimScroll","enableBoxRefresh","enableBSToppltip","BSTooltipSelector","enableFastclick","enableBoxWidget","boxWidgetOptions","boxWidgetIcons","collapse","open","boxWidgetSelectors","directChat","contactToggleSelector","colors","lightBlue","red","green","aqua","yellow","blue","navy","teal","olive","lime","orange","fuchsia","purple","maroon","black","gray","screenSizes","xs","sm","md","lg","o","layout","activate","tree","fn","slimscroll","alwaysVisible","size","pushMenu","tooltip","boxWidget","FastClick","attach","body","first","toggleClass","preventDefault","_this","fix","fixSidebar","resize","neg","window_height","sidebar_height","slimScroll","console","color","toggleBtn","menu","$this","checkElement","next","slideUp","ul","parent_li","slideDown","bf","boxRefresh","start","overlay","onLoadStart","onLoadDone","rBtn","load","todolist","onCheck","ele","onUncheck","iCheck"],"mappings":"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","file":"app.js","sourcesContent":["var iframeCount = 0;\n\nfunction Uploader(options) {\n if (!(this instanceof Uploader)) {\n return new Uploader(options);\n }\n if (isString(options)) {\n options = {trigger: options};\n }\n\n var settings = {\n trigger: null,\n name: null,\n action: null,\n data: null,\n accept: null,\n change: null,\n error: null,\n multiple: true,\n success: null\n };\n if (options) {\n $.extend(settings, options);\n }\n var $trigger = $(settings.trigger);\n\n settings.action = settings.action || $trigger.data('action') || '/upload';\n settings.name = settings.name || $trigger.attr('name') || $trigger.data('name') || 'file';\n settings.data = settings.data || parse($trigger.data('data'));\n settings.accept = settings.accept || $trigger.data('accept');\n settings.success = settings.success || $trigger.data('success');\n this.settings = settings;\n\n this.setup();\n this.bind();\n}\n\n// initialize\n// create input, form, iframe\nUploader.prototype.setup = function() {\n this.form = $(\n ''\n );\n\n this.iframe = newIframe();\n this.form.attr('target', this.iframe.attr('name'));\n\n var data = this.settings.data;\n this.form.append(createInputs(data));\n if (window.FormData) {\n this.form.append(createInputs({'_uploader_': 'formdata'}));\n } else {\n this.form.append(createInputs({'_uploader_': 'iframe'}));\n }\n\n var input = document.createElement('input');\n input.type = 'file';\n input.name = this.settings.name;\n if (this.settings.accept) {\n input.accept = this.settings.accept;\n }\n if (this.settings.multiple) {\n input.multiple = true;\n input.setAttribute('multiple', 'multiple');\n }\n this.input = $(input);\n\n var $trigger = $(this.settings.trigger);\n this.input.attr('hidefocus', true).css({\n position: 'absolute',\n top: 0,\n right: 0,\n opacity: 0,\n outline: 0,\n cursor: 'pointer',\n height: $trigger.outerHeight(),\n fontSize: Math.max(64, $trigger.outerHeight() * 5)\n });\n this.form.append(this.input);\n this.form.css({\n position: 'absolute',\n top: $trigger.offset().top,\n left: $trigger.offset().left,\n overflow: 'hidden',\n width: $trigger.outerWidth(),\n height: $trigger.outerHeight(),\n zIndex: findzIndex($trigger) + 10\n }).appendTo('body');\n return this;\n};\n\n// bind events\nUploader.prototype.bind = function() {\n var self = this;\n var $trigger = $(self.settings.trigger);\n $trigger.mouseenter(function() {\n self.form.css({\n top: $trigger.offset().top,\n left: $trigger.offset().left,\n width: $trigger.outerWidth(),\n height: $trigger.outerHeight()\n });\n });\n self.bindInput();\n};\n\nUploader.prototype.bindInput = function() {\n var self = this;\n self.input.change(function(e) {\n // ie9 don't support FileList Object\n // http://stackoverflow.com/questions/12830058/ie8-input-type-file-get-files\n self._files = this.files || [{\n name: e.target.value\n }];\n var file = self.input.val();\n if (self.settings.change) {\n self.settings.change.call(self, self._files);\n } else if (file) {\n return self.submit();\n }\n });\n};\n\n// handle submit event\n// prepare for submiting form\nUploader.prototype.submit = function() {\n var self = this;\n if (window.FormData && self._files) {\n // build a FormData\n var form = new FormData(self.form.get(0));\n // use FormData to upload\n form.append(self.settings.name, self._files);\n\n var optionXhr;\n if (self.settings.progress) {\n // fix the progress target file\n var files = self._files;\n optionXhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n self.settings.progress(event, position, total, percent, files);\n }, false);\n }\n return xhr;\n };\n }\n $.ajax({\n url: self.settings.action,\n type: 'post',\n processData: false,\n contentType: false,\n data: form,\n xhr: optionXhr,\n context: this,\n success: self.settings.success,\n error: self.settings.error\n });\n return this;\n } else {\n // iframe upload\n self.iframe = newIframe();\n self.form.attr('target', self.iframe.attr('name'));\n $('body').append(self.iframe);\n self.iframe.one('load', function() {\n // https://github.com/blueimp/jQuery-File-Upload/blob/9.5.6/js/jquery.iframe-transport.js#L102\n // Fix for IE endless progress bar activity bug\n // (happens on form submits to iframe targets):\n $('')\n .appendTo(self.form)\n .remove();\n var response;\n try {\n response = $(this).contents().find(\"body\").html();\n } catch (e) {\n response = \"cross-domain\";\n }\n $(this).remove();\n if (!response) {\n if (self.settings.error) {\n self.settings.error(self.input.val());\n }\n } else {\n if (self.settings.success) {\n self.settings.success(response);\n }\n }\n });\n self.form.submit();\n }\n return this;\n};\n\nUploader.prototype.refreshInput = function() {\n //replace the input element, or the same file can not to be uploaded\n var newInput = this.input.clone();\n this.input.before(newInput);\n this.input.off('change');\n this.input.remove();\n this.input = newInput;\n this.bindInput();\n};\n\n// handle change event\n// when value in file input changed\nUploader.prototype.change = function(callback) {\n if (!callback) {\n return this;\n }\n this.settings.change = callback;\n return this;\n};\n\n// handle when upload success\nUploader.prototype.success = function(callback) {\n var me = this;\n this.settings.success = function(response) {\n me.refreshInput();\n if (callback) {\n callback(response);\n }\n };\n\n return this;\n};\n\n// handle when upload success\nUploader.prototype.error = function(callback) {\n var me = this;\n this.settings.error = function(response) {\n if (callback) {\n me.refreshInput();\n callback(response);\n }\n };\n return this;\n};\n\n// enable\nUploader.prototype.enable = function(){\n this.input.prop('disabled', false);\n this.input.css('cursor', 'pointer');\n};\n\n// disable\nUploader.prototype.disable = function(){\n this.input.prop('disabled', true);\n this.input.css('cursor', 'not-allowed');\n};\n\n// Helpers\n// -------------\n\nfunction isString(val) {\n return Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction createInputs(data) {\n if (!data) return [];\n\n var inputs = [], i;\n for (var name in data) {\n i = document.createElement('input');\n i.type = 'hidden';\n i.name = name;\n i.value = data[name];\n inputs.push(i);\n }\n return inputs;\n}\n\nfunction parse(str) {\n if (!str) return {};\n var ret = {};\n\n var pairs = str.split('&');\n var unescape = function(s) {\n return decodeURIComponent(s.replace(/\\+/g, ' '));\n };\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n var key = unescape(pair[0]);\n var val = unescape(pair[1]);\n ret[key] = val;\n }\n\n return ret;\n}\n\nfunction findzIndex($node) {\n var parents = $node.parentsUntil('body');\n var zIndex = 0;\n for (var i = 0; i < parents.length; i++) {\n var item = parents.eq(i);\n if (item.css('position') !== 'static') {\n zIndex = parseInt(item.css('zIndex'), 10) || zIndex;\n }\n }\n return zIndex;\n}\n\nfunction newIframe() {\n var iframeName = 'iframe-uploader-' + iframeCount;\n var iframe = $('').hide();\n iframeCount += 1;\n return iframe;\n}\n\nfunction MultipleUploader(options) {\n if (!(this instanceof MultipleUploader)) {\n return new MultipleUploader(options);\n }\n\n if (isString(options)) {\n options = {trigger: options};\n }\n var $trigger = $(options.trigger);\n\n var uploaders = [];\n $trigger.each(function(i, item) {\n options.trigger = item;\n uploaders.push(new Uploader(options));\n });\n this._uploaders = uploaders;\n}\nMultipleUploader.prototype.submit = function() {\n $.each(this._uploaders, function(i, item) {\n item.submit();\n });\n return this;\n};\nMultipleUploader.prototype.change = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.change(callback);\n });\n return this;\n};\nMultipleUploader.prototype.success = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.success(callback);\n });\n return this;\n};\nMultipleUploader.prototype.error = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.error(callback);\n });\n return this;\n};\nMultipleUploader.prototype.enable = function (){\n $.each(this._uploaders, function (i, item){\n item.enable();\n });\n return this;\n};\nMultipleUploader.prototype.disable = function (){\n $.each(this._uploaders, function (i, item){\n item.disable();\n });\n return this;\n};\nMultipleUploader.Uploader = Uploader;","$.ajaxPrefilter(function(options, originalOptions, jqXHR) {\n jqXHR.setRequestHeader('X-CSRF-Token', $('meta[name=\"token\"]').attr('content'));\n});\n\nvar app = app || {};\n\n(function ($) {\n var FINISHED = 0;\n var PENDING = 1;\n var DEPLOYING = 2;\n var FAILED = 3;\n var NOT_DEPLOYED = 4;\n\n var DEPLOYMENT_COMPLETED = 0;\n var DEPLOYMENT_PENDING = 1;\n var DEPLOYMENT_DEPLOYING = 2;\n var DEPLOYMENT_FAILED = 3;\n\n app.project_id = app.project_id || null;\n\n app.listener = io.connect($('meta[name=\"socket_url\"]').attr('content'));\n\n // Navbar deployment status\n // FIXME: Convert these menus to backbone\n // FIXME: Convert the project and deployments to backbone\n // TODO: Update the timeline\n app.listener.on('deployment:App\\\\Events\\\\ModelChanged', function (data) {\n updateNavBar(data);\n\n var project = $('#project_' + data.model.project_id);\n\n if (project.length > 0) {\n updateTimeline();\n }\n\n var deployment = $('#deployment_' + data.model.id);\n\n if (deployment.length > 0) {\n\n $('td:nth-child(4)', deployment).text(data.model.committer);\n\n if (data.model.commit_url) {\n $('td:nth-child(5)', deployment).html('' + data.model.short_commit + '');\n } else {\n $('td:nth-child(5)', deployment).text(data.model.short_commit);\n }\n\n var icon_class = 'clock-o';\n var label_class = 'info';\n var label = Lang.deployments.status.pending;\n var done = false;\n\n data.model.status = parseInt(data.model.status);\n var status = $('td:nth-child(7) span.label', deployment);\n\n if (data.model.status === DEPLOYMENT_COMPLETED) {\n icon_class = 'check';\n label_class = 'success';\n label = Lang.deployments.status.completed;\n done = true;\n } else if (data.model.status === DEPLOYMENT_DEPLOYING) {\n icon_class = 'spinner fa-pulse';\n label_class = 'warning';\n label = Lang.deployments.status.running;\n } else if (data.model.status === DEPLOYMENT_FAILED) {\n icon_class = 'warning';\n label_class = 'danger';\n label = Lang.deployments.status.failed;\n done = true;\n }\n\n if (done) {\n $('button#deploy_project:disabled').removeAttr('disabled');\n }\n\n status.attr('class', 'label label-' + label_class)\n $('i', status).attr('class', 'fa fa-' + icon_class);\n $('span', status).text(label);\n }\n });\n\n app.listener.on('group:App\\\\Events\\\\ModelChanged', function (data) {\n $('#sidebar_group_' + data.model.id).html(data.model.name);\n });\n\n app.listener.on('project:App\\\\Events\\\\ModelChanged', function (data) {\n $('#sidebar_project_' + data.model.id).html(data.model.name);\n\n var project = $('#project_' + data.model.id);\n\n if (project.length > 0) {\n\n var icon_class = 'question-circle';\n var label_class = 'primary';\n var label = Lang.projects.status.not_deployed;\n\n data.model.status = parseInt(data.model.status);\n var status = $('td:nth-child(3) span.label', project);\n\n if (data.model.status === FINISHED) {\n icon_class = 'check';\n label_class = 'success';\n label = Lang.projects.status.finished;\n } else if (data.model.status === DEPLOYING) {\n icon_class = 'spinner fa-pulse';\n label_class = 'warning';\n label = Lang.projects.status.deploying;\n } else if (data.model.status === FAILED) {\n icon_class = 'warning';\n label_class = 'danger';\n label = Lang.projects.status.failed;\n } else if (data.model.status === PENDING) {\n icon_class = 'clock-o';\n label_class = 'info';\n label = Lang.projects.status.pending;\n }\n\n $('td:first a', project).text(data.model.name);\n $('td:nth-child(2)', project).text(moment(data.model.last_run).format('Do MMM YYYY h:mm:ss A'));\n status.attr('class', 'label label-' + label_class)\n $('i', status).attr('class', 'fa fa-' + icon_class);\n $('span', status).text(label);\n }\n });\n\n app.listener.on('project:App\\\\Events\\\\ModelTrashed', function (data) {\n $('#sidebar_project_' + data.model.id).parent('li').remove();\n\n if (parseInt(data.model.id) === parseInt(app.project_id)) {\n window.location.href = '/';\n }\n });\n\n // FIXME: This is cheating\n function updateTimeline() {\n $.ajax({\n type: 'GET',\n url: '/timeline'\n }).success(function (response) {\n $('#timeline').html(response);\n });\n }\n\n function updateNavBar(data) {\n data.model.time = moment(data.model.started_at).format('h:mm:ss A');\n data.model.url = '/deployment/' + data.model.id;\n\n $('#deployment_info_' + data.model.id).remove();\n $('#pending_menu, #deploying_menu').show();\n\n var template = _.template($('#deployment_list_template').html());\n var html = template(data.model);\n\n if (data.model.status === DEPLOYMENT_PENDING) {\n $('#pending_menu ul.menu').append(html);\n }\n else if (data.model.status === DEPLOYMENT_DEPLOYING) {\n $('#deploying_menu ul.menu').append(html);\n }\n\n var pending = $('#pending_menu ul.menu li').length;\n var deploying = $('#deploying_menu ul.menu li').length;\n\n var pending_label = Lang.nav.multi_pending.replace('%s', pending);\n if (pending === 0) {\n $('#pending_menu').hide();\n }\n else if (pending === 1) {\n pending_label = Lang.nav.single_pending;\n }\n\n var deploying_label = Lang.nav.multi_running.replace('%s', deploying);\n if (deploying === 0) {\n $('#deploying_menu').hide();\n }\n else if (deploying === 1) {\n deploying_label = Lang.nav.single_running;\n }\n\n $('#deploying_menu span.label-warning').html(deploying);\n $('#deploying_menu .header').text(deploying_label);\n\n $('#pending_menu span.label-info').html(pending);\n $('#pending_menu .header').text(pending_label);\n }\n\n $(document).ready(function () {\n if ($('#pending_menu ul.menu li').length > 0) {\n $('#pending_menu').show();\n }\n\n if ($('#deploying_menu ul.menu li').length > 0) {\n $('#deploying_menu').show();\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n $('.deployment-source:radio').on('change', function (event) {\n var target = $(event.currentTarget);\n\n $('input[type=text].deployment-source').hide();\n if (target.val() === 'branch') {\n $('#deployment_branch').show();\n } else if (target.val() === 'tag') {\n $('#deployment_tag').show();\n }\n });\n\n $('#reason').on('show.bs.modal', function (event) {\n var modal = $(this);\n $('.callout-danger', modal).hide();\n });\n\n $('#reason button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n var source = $('input[name=source]:checked').val();\n\n $('.has-error', source).removeClass('has-error');\n\n if (source === 'branch' || source === 'tag') {\n if ($('#deployment_' + source).val() === '') {\n $('#deployment_' + source).parentsUntil('div').addClass('has-error');\n\n $('.callout-danger', dialog).show();\n event.stopPropagation();\n return;\n }\n }\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n $('button.close', dialog).hide();\n });\n\n // FIXME: This seems very wrong\n $('#project').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n $('#template-list', modal).hide();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#template-list', modal).show();\n $('#project_id').val('');\n $('#project_name').val('');\n $('#project_repository').val('');\n $('#project_branch').val('master');\n $('#project_group_id').val($(\"#project_group_id option:first\").val());\n $('#project_builds_to_keep').val(10);\n $('#project_url').val('');\n $('#project_build_url').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#project button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project = app.Projects.get($('#project_id').val());\n\n project.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#project button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project_id = $('#project_id').val();\n\n if (project_id) {\n var project = app.Projects.get(project_id);\n } else {\n var project = new app.Project();\n }\n\n project.save({\n name: $('#project_name').val(),\n repository: $('#project_repository').val(),\n branch: $('#project_branch').val(),\n group_id: $('#project_group_id').val(),\n builds_to_keep: $('#project_builds_to_keep').val(),\n url: $('#project_url').val(),\n build_url: $('#project_build_url').val(),\n template_id: $('#project_template_id') ? $('#project_template_id').val() : null\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!project_id) {\n app.Projects.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Project = Backbone.Model.extend({\n urlRoot: '/admin/projects'\n });\n\n var Projects = Backbone.Collection.extend({\n model: app.Project\n });\n\n app.Projects = new Projects();\n\n app.ProjectsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#project_list tbody');\n\n $('#project_list').hide();\n $('#no_projects').show();\n\n this.listenTo(app.Projects, 'add', this.addOne);\n this.listenTo(app.Projects, 'reset', this.addAll);\n this.listenTo(app.Projects, 'remove', this.addAll);\n this.listenTo(app.Projects, 'all', this.render);\n\n app.listener.on('project:App\\\\Events\\\\ModelChanged', function (data) {\n var project = app.Projects.get(parseInt(data.model.id));\n\n if (project) {\n project.set(data.model);\n }\n });\n\n app.listener.on('project:App\\\\Events\\\\ModelCreated', function (data) {\n app.Projects.add(data.model);\n });\n\n app.listener.on('project:App\\\\Events\\\\ModelTrashed', function (data) {\n var project = app.Projects.get(parseInt(data.model.id));\n\n if (project) {\n app.Projects.remove(project);\n }\n\n $('#project_' + data.model.id).parent('li').remove();\n\n if (parseInt(data.model.id) === parseInt(app.project_id)) {\n window.location.href = '/';\n }\n });\n },\n render: function () {\n if (app.Projects.length) {\n $('#no_projects').hide();\n $('#project_list').show();\n } else {\n $('#no_projects').show();\n $('#project_list').hide();\n }\n },\n addOne: function (project) {\n var view = new app.ProjectView({ \n model: project\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Projects.each(this.addOne, this);\n }\n });\n\n app.ProjectView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editProject'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#project-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.deploy = data.last_run ? moment(data.last_run).format('Do MMM YYYY h:mm:ss A') : false;\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editProject: function() {\n $('#project_id').val(this.model.id);\n $('#project_name').val(this.model.get('name'));\n $('#project_repository').val(this.model.get('repository'));\n $('#project_branch').val(this.model.get('branch'));\n $('#project_group_id').val(this.model.get('group_id'));\n $('#project_builds_to_keep').val(this.model.get('builds_to_keep'));\n $('#project_url').val(this.model.get('url'));\n $('#project_build_url').val(this.model.get('build_url'));\n }\n });\n\n $('#new_webhook').on('click', function(event) {\n var target = $(event.currentTarget);\n var project_id = target.data('project-id');\n var icon = $('i', target);\n\n if ($('.fa-spin', target).length > 0) {\n return;\n }\n\n target.attr('disabled', 'disabled');\n\n icon.addClass('fa-spin');\n\n $.ajax({\n type: 'GET',\n url: '/webhook/' + project_id + '/refresh'\n }).fail(function (response) {\n\n }).done(function (data) {\n $('#webhook').html(data.url);\n }).always(function () {\n icon.removeClass('fa-spin');\n target.removeAttr('disabled');\n });\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#template').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#template_id').val('');\n $('#template_name').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#template button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var template = app.Templates.get($('#template_id').val());\n\n template.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#template button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var template_id = $('#template_id').val();\n\n if (template_id) {\n var template = app.Templates.get(template_id);\n } else {\n var template = new app.Template();\n }\n\n template.save({\n name: $('#template_name').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!template_id) {\n app.Templates.add(response);\n\n window.location.href = '/admin/templates/' + response.id;\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Template = Backbone.Model.extend({\n urlRoot: '/admin/templates'\n });\n\n var Templates = Backbone.Collection.extend({\n model: app.Template\n });\n\n app.Templates = new Templates();\n\n app.TemplatesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#template_list tbody');\n\n $('#template_list').hide();\n $('#no_templates').show();\n\n this.listenTo(app.Templates, 'add', this.addOne);\n this.listenTo(app.Templates, 'reset', this.addAll);\n this.listenTo(app.Templates, 'remove', this.addAll);\n this.listenTo(app.Templates, 'all', this.render);\n\n app.listener.on('template:App\\\\Events\\\\ModelChanged', function (data) {\n var template = app.Templates.get(parseInt(data.model.id));\n\n if (template) {\n template.set(data.model);\n }\n });\n\n app.listener.on('template:App\\\\Events\\\\ModelCreated', function (data) {\n app.Templates.add(data.model);\n });\n\n app.listener.on('template:App\\\\Events\\\\ModelTrashed', function (data) {\n var template = app.Templates.get(parseInt(data.model.id));\n\n if (template) {\n app.Templates.remove(template);\n }\n });\n },\n render: function () {\n if (app.Templates.length) {\n $('#no_templates').hide();\n $('#template_list').show();\n } else {\n $('#no_templates').show();\n $('#template_list').hide();\n }\n },\n addOne: function (template) {\n var view = new app.TemplateView({ \n model: template\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Templates.each(this.addOne, this);\n }\n });\n\n app.TemplateView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editTemplate'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#template-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editTemplate: function() {\n $('#template_id').val(this.model.id);\n $('#template_name').val(this.model.get('name'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var SUCCESSFUL = 0;\n var UNTESTED = 1;\n var FAILED = 2;\n var TESTING = 3;\n\n $('#server_list table').sortable({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n placeholder: '',\n delay: 500,\n onDrop: function (item, container, _super) {\n _super(item, container);\n\n var ids = [];\n $('tbody tr td:first-child', container.el[0]).each(function (idx, element) {\n ids.push($(element).data('server-id'));\n });\n\n $.ajax({ \n url: '/servers/reorder',\n method: 'POST',\n data: {\n servers: ids\n }\n });\n }\n });\n\n\n // FIXME: This seems very wrong\n $('#server').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.servers.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n $('#add-server-command', modal).hide();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.servers.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#server_id').val('');\n $('#server_name').val('');\n $('#server_address').val('');\n $('#server_port').val('22');\n $('#server_user').val('');\n $('#server_path').val('');\n $('#server_deploy_code').prop('checked', true);\n $('#add-server-command', modal).show();\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#server button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var server = app.Servers.get($('#server_id').val());\n\n server.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#server button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var server_id = $('#server_id').val();\n\n if (server_id) {\n var server = app.Servers.get(server_id);\n } else {\n var server = new app.Server();\n }\n\n server.save({\n name: $('#server_name').val(),\n ip_address: $('#server_address').val(),\n port: $('#server_port').val(),\n user: $('#server_user').val(),\n path: $('#server_path').val(),\n deploy_code: $('#server_deploy_code').is(':checked'),\n project_id: $('input[name=\"project_id\"]').val(),\n add_commands: $('#server_commands').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!server_id) {\n app.Servers.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n\n\n\n\n\n app.Server = Backbone.Model.extend({\n urlRoot: '/servers'\n });\n\n var Servers = Backbone.Collection.extend({\n model: app.Server,\n comparator: function(serverA, serverB) {\n if (serverA.get('name') > serverB.get('name')) {\n return -1; // before\n } else if (serverA.get('name') < serverB.get('name')) {\n return 1; // after\n }\n\n return 0; // equal\n }\n });\n\n app.Servers = new Servers();\n\n app.ServersTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#server_list tbody');\n\n $('#no_servers').show();\n $('#server_list').hide();\n\n this.listenTo(app.Servers, 'add', this.addOne);\n this.listenTo(app.Servers, 'reset', this.addAll);\n this.listenTo(app.Servers, 'remove', this.addAll);\n this.listenTo(app.Servers, 'all', this.render);\n\n app.listener.on('server:App\\\\Events\\\\ModelChanged', function (data) {\n var server = app.Servers.get(parseInt(data.model.id));\n\n if (server) {\n server.set(data.model);\n }\n });\n\n app.listener.on('server:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Servers.add(data.model);\n }\n });\n\n app.listener.on('server:App\\\\Events\\\\ModelTrashed', function (data) {\n var server = app.Servers.get(parseInt(data.model.id));\n\n if (server) {\n app.Servers.remove(server);\n }\n });\n },\n render: function () {\n if (app.Servers.length) {\n $('#no_servers').hide();\n $('#server_list').show();\n } else {\n $('#no_servers').show();\n $('#server_list').hide();\n }\n },\n addOne: function (server) {\n\n var view = new app.ServerView({ \n model: server\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Servers.each(this.addOne, this);\n }\n });\n\n app.ServerView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-test': 'testConnection',\n 'click .btn-edit': 'editServer'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#server-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'primary';\n data.icon_css = 'question';\n data.status = Lang.servers.status.untested;\n\n if (parseInt(this.model.get('status')) === SUCCESSFUL) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.servers.status.successful;\n } else if (parseInt(this.model.get('status')) === TESTING) {\n data.status_css = 'warning';\n data.icon_css = 'spinner fa-pulse';\n data.status = Lang.servers.status.testing;\n } else if (parseInt(this.model.get('status')) === FAILED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.servers.status.failed;\n }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editServer: function() {\n // FIXME: Sure this is wrong?\n $('#server_id').val(this.model.id);\n $('#server_name').val(this.model.get('name'));\n $('#server_address').val(this.model.get('ip_address'));\n $('#server_port').val(this.model.get('port'));\n $('#server_user').val(this.model.get('user'));\n $('#server_path').val(this.model.get('path'));\n\n $('#server_deploy_code').prop('checked', (this.model.get('deploy_code') === true));\n },\n testConnection: function() {\n if (parseInt(this.model.get('status')) === TESTING) {\n return;\n }\n\n this.model.set({\n status: TESTING\n });\n\n var that = this;\n $.ajax({\n type: 'GET',\n url: this.model.urlRoot + '/' + this.model.id + '/test'\n }).fail(function (response) {\n that.model.set({\n status: FAILED\n });\n });\n\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var OK = 0;\n var UNTESTED = 1;\n var MISSING = 2;\n\n // FIXME: This seems very wrong\n $('#heartbeat').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.heartbeats.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.heartbeats.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#heartbeat_id').val('');\n $('#heartbeat_name').val('');\n $('#heartbeat_interval_30').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#heartbeat button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var heartbeat = app.Heartbeats.get($('#heartbeat_id').val());\n\n heartbeat.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#heartbeat button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var heartbeat_id = $('#heartbeat_id').val();\n\n if (heartbeat_id) {\n var heartbeat = app.Heartbeats.get(heartbeat_id);\n } else {\n var heartbeat = new app.Heartbeat();\n }\n\n heartbeat.save({\n name: $('#heartbeat_name').val(),\n interval: parseInt($('input[name=interval]:checked').val()),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!heartbeat_id) {\n app.Heartbeats.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Heartbeat = Backbone.Model.extend({\n urlRoot: '/heartbeats'\n });\n\n var Heartbeats = Backbone.Collection.extend({\n model: app.Heartbeat,\n comparator: function(heartbeatA, heartbeatB) {\n if (heartbeatA.get('name') > heartbeatB.get('name')) {\n return -1; // before\n } else if (heartbeatA.get('name') < heartbeatB.get('name')) {\n return 1; // after\n }\n\n return 0; // equal\n }\n });\n\n app.Heartbeats = new Heartbeats();\n\n app.HeartbeatsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#heartbeat_list tbody');\n\n $('#no_heartbeats').show();\n $('#heartbeat_list').hide();\n\n this.listenTo(app.Heartbeats, 'add', this.addOne);\n this.listenTo(app.Heartbeats, 'reset', this.addAll);\n this.listenTo(app.Heartbeats, 'remove', this.addAll);\n this.listenTo(app.Heartbeats, 'all', this.render);\n\n app.listener.on('heartbeat:App\\\\Events\\\\ModelChanged', function (data) {\n var heartbeat = app.Heartbeats.get(parseInt(data.model.id));\n\n if (heartbeat) {\n heartbeat.set(data.model);\n }\n });\n\n app.listener.on('heartbeat:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Heartbeats.add(data.model);\n }\n });\n\n app.listener.on('heartbeat:App\\\\Events\\\\ModelTrashed', function (data) {\n var heartbeat = app.Heartbeats.get(parseInt(data.model.id));\n\n if (heartbeat) {\n app.Heartbeats.remove(heartbeat);\n }\n });\n },\n render: function () {\n if (app.Heartbeats.length) {\n $('#no_heartbeats').hide();\n $('#heartbeat_list').show();\n } else {\n $('#no_heartbeats').show();\n $('#heartbeat_list').hide();\n }\n },\n addOne: function (heartbeat) {\n\n var view = new app.HeartbeatView({ \n model: heartbeat\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Heartbeats.each(this.addOne, this);\n }\n });\n\n app.HeartbeatView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editHeartbeat'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#heartbeat-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'primary';\n data.icon_css = 'question';\n data.status = Lang.heartbeats.status.untested;\n data.has_run = false;\n\n if (parseInt(this.model.get('status')) === OK) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.heartbeats.status.ok;\n data.has_run = true;\n } else if (parseInt(this.model.get('status')) === MISSING) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.heartbeats.status.missing;\n data.has_run = data.last_activity ? true : false;\n }\n\n data.interval_label = Lang.heartbeats.intervals[data.interval];\n\n data.formatted_date = '';\n if (data.has_run) {\n data.formatted_date = moment(data.last_activity).format('Do MMM YYYY h:mm:ss A');\n }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editHeartbeat: function() {\n // FIXME: Sure this is wrong?\n $('#heartbeat_id').val(this.model.id);\n $('#heartbeat_name').val(this.model.get('name'));\n $('#heartbeat_interval_' + this.model.get('interval')).prop('checked', true);\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#notification').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.notifications.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.notifications.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#notification_id').val('');\n $('#notification_name').val('');\n $('#notification_webhook').val('');\n $('#notification_channel').val('');\n $('#notification_icon').val('');\n $('#notification_failure_only').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#notification button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notification = app.Notifications.get($('#notification_id').val());\n\n notification.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#notification button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notification_id = $('#notification_id').val();\n\n if (notification_id) {\n var notification = app.Notifications.get(notification_id);\n } else {\n var notification = new app.Notification();\n }\n\n notification.save({\n name: $('#notification_name').val(),\n webhook: $('#notification_webhook').val(),\n channel: $('#notification_channel').val(),\n icon: $('#notification_icon').val(),\n project_id: $('input[name=\"project_id\"]').val(),\n failure_only: $('#notification_failure_only').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!notification_id) {\n app.Notifications.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n\n\n app.Notification = Backbone.Model.extend({\n urlRoot: '/notifications'\n });\n\n var Notifications = Backbone.Collection.extend({\n model: app.Notification\n });\n\n app.Notifications = new Notifications();\n\n app.NotificationsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#notification_list tbody');\n\n $('#no_notifications').show();\n $('#notification_list').hide();\n\n this.listenTo(app.Notifications, 'add', this.addOne);\n this.listenTo(app.Notifications, 'reset', this.addAll);\n this.listenTo(app.Notifications, 'remove', this.addAll);\n this.listenTo(app.Notifications, 'all', this.render);\n\n\n app.listener.on('notification:App\\\\Events\\\\ModelChanged', function (data) {\n var notification = app.Notifications.get(parseInt(data.model.id));\n\n if (server) {\n notification.set(data.model);\n }\n });\n\n app.listener.on('notification:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Notifications.add(data.model);\n }\n });\n\n app.listener.on('notification:App\\\\Events\\\\ModelTrashed', function (data) {\n var notification = app.Notifications.get(parseInt(data.model.id));\n\n if (notification) {\n app.Notifications.remove(notification);\n }\n });\n },\n render: function () {\n if (app.Notifications.length) {\n $('#no_notifications').hide();\n $('#notification_list').show();\n } else {\n $('#no_notifications').show();\n $('#notification_list').hide();\n }\n },\n addOne: function (notification) {\n\n var view = new app.NotificationView({ \n model: notification\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Notifications.each(this.addOne, this);\n }\n });\n\n app.NotificationView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editNotification'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#notification-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editNotification: function() {\n // FIXME: Sure this is wrong?\n $('#notification_id').val(this.model.id);\n $('#notification_name').val(this.model.get('name'));\n $('#notification_webhook').val(this.model.get('webhook'));\n $('#notification_channel').val(this.model.get('channel'));\n $('#notification_icon').val(this.model.get('icon'));\n $('#notification_failure_only').prop('checked', (this.model.get('failure_only') === true));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#notifyemail').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.notifyEmails.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.notifyEmails.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#notifyemail_id').val('');\n $('#notifyemail_name').val('');\n $('#notifyemail_address').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#notifyemail button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.NotifyEmails.get($('#notifyemail_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#notifyemail button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notifyemail_id = $('#notifyemail_id').val();\n\n if (notifyemail_id) {\n var file = app.NotifyEmails.get(notifyemail_id);\n } else {\n var file = new app.NotifyEmail();\n }\n\n file.save({\n name: $('#notifyemail_name').val(),\n email: $('#notifyemail_address').val(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!notifyemail_id) {\n app.NotifyEmails.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.NotifyEmail = Backbone.Model.extend({\n urlRoot: '/notify-email'\n });\n\n var NotifyEmails = Backbone.Collection.extend({\n model: app.NotifyEmail\n });\n\n app.NotifyEmails = new NotifyEmails();\n\n app.NotifyEmailsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#notifyemail_list tbody');\n\n $('#no_notifyemails').show();\n $('#notifyemail_list').hide();\n\n this.listenTo(app.NotifyEmails, 'add', this.addOne);\n this.listenTo(app.NotifyEmails, 'reset', this.addAll);\n this.listenTo(app.NotifyEmails, 'remove', this.addAll);\n this.listenTo(app.NotifyEmails, 'all', this.render);\n\n app.listener.on('notifyemail:App\\\\Events\\\\ModelChanged', function (data) {\n var email = app.NotifyEmails.get(parseInt(data.model.id));\n\n if (server) {\n email.set(data.model);\n }\n });\n\n app.listener.on('notifyemail:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.NotifyEmails.add(data.model);\n }\n });\n\n app.listener.on('notifyemail:App\\\\Events\\\\ModelTrashed', function (data) {\n var email = app.NotifyEmails.get(parseInt(data.model.id));\n\n if (email) {\n app.NotifyEmails.remove(email);\n }\n });\n },\n render: function () {\n if (app.NotifyEmails.length) {\n $('#no_notifyemails').hide();\n $('#notifyemail_list').show();\n } else {\n $('#no_notifyemails').show();\n $('#notifyemail_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.EmailView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.NotifyEmails.each(this.addOne, this);\n }\n });\n\n app.EmailView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editEmail'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#notifyemail-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editEmail: function() {\n // FIXME: Sure this is wrong?\n $('#notifyemail_id').val(this.model.id);\n $('#notifyemail_name').val(this.model.get('name'));\n $('#notifyemail_address').val(this.model.get('email'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#sharefile').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.sharedFiles.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.sharedFiles.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#file_id').val('');\n $('#name').val('');\n $('#file').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#sharefile button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.SharedFiles.get($('#file_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#sharefile button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file_id = $('#file_id').val();\n\n if (file_id) {\n var file = app.SharedFiles.get(file_id);\n } else {\n var file = new app.SharedFile();\n }\n\n file.save({\n name: $('#name').val(),\n file: $('#file').val(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!file_id) {\n app.SharedFiles.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.SharedFile = Backbone.Model.extend({\n urlRoot: '/shared-files'\n });\n\n var SharedFiles = Backbone.Collection.extend({\n model: app.SharedFile\n });\n\n app.SharedFiles = new SharedFiles();\n\n app.SharedFilesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#file_list tbody');\n\n $('#no_files').show();\n $('#file_list').hide();\n\n this.listenTo(app.SharedFiles, 'add', this.addOne);\n this.listenTo(app.SharedFiles, 'reset', this.addAll);\n this.listenTo(app.SharedFiles, 'remove', this.addAll);\n this.listenTo(app.SharedFiles, 'all', this.render);\n\n app.listener.on('sharedfile:App\\\\Events\\\\ModelChanged', function (data) {\n var share = app.SharedFiles.get(parseInt(data.model.id));\n\n if (share) {\n share.set(data.model);\n }\n });\n\n app.listener.on('sharedfile:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.SharedFiles.add(data.model);\n }\n });\n\n app.listener.on('sharedfile:App\\\\Events\\\\ModelTrashed', function (data) {\n var share = app.SharedFiles.get(parseInt(data.model.id));\n\n if (share) {\n app.SharedFiles.remove(share);\n }\n });\n },\n render: function () {\n if (app.SharedFiles.length) {\n $('#no_files').hide();\n $('#file_list').show();\n } else {\n $('#no_files').show();\n $('#file_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.FileView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.SharedFiles.each(this.addOne, this);\n }\n });\n\n app.FileView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editFile'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#files-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editFile: function() {\n // FIXME: Sure this is wrong?\n $('#file_id').val(this.model.id);\n $('#name').val(this.model.get('name'));\n $('#file').val(this.model.get('file'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n\n var editor;\n var previewfile;\n\n $('#projectfile, #view-projectfile').on('hidden.bs.modal', function (event) {\n editor.destroy();\n });\n\n $('#view-projectfile').on('show.bs.modal', function (event) {\n editor = ace.edit('preview-content');\n editor.setReadOnly(true);\n editor.getSession().setUseWrapMode(true);\n\n var extension = previewfile.substr(previewfile.lastIndexOf('.') + 1).toLowerCase();\n\n if (extension === 'php' || extension === 'ini') {\n editor.getSession().setMode('ace/mode/' + extension);\n } else if (extension === 'yml') {\n editor.getSession().setMode('ace/mode/yaml');\n }\n });\n\n // FIXME: This seems very wrong\n $('#projectfile').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.projectFiles.create;\n\n editor = ace.edit('project-file-content');\n\n var filename = $('#project-file-path').val();\n var extension = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase();\n\n if (extension === 'php' || extension === 'ini') {\n editor.getSession().setMode('ace/mode/' + extension);\n } else if (extension === 'yml') {\n editor.getSession().setMode('ace/mode/yaml');\n }\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.projectFiles.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#project_file_id').val('');\n $('#project-file-name').val('');\n $('#project-file-path').val('');\n editor.setValue('');\n editor.gotoLine(1);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n\n // FIXME: This seems very wrong\n $('#projectfile button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.ProjectFiles.get($('#project_file_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#projectfile button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project_file_id = $('#project_file_id').val();\n\n if (project_file_id) {\n var file = app.ProjectFiles.get(project_file_id);\n } else {\n var file = new app.ProjectFile();\n }\n\n file.save({\n name: $('#project-file-name').val(),\n path: $('#project-file-path').val(),\n content: editor.getValue(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!project_file_id) {\n app.ProjectFiles.add(response);\n }\n\n editor.setValue('');\n editor.gotoLine(1);\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.ProjectFile = Backbone.Model.extend({\n urlRoot: '/project-file'\n });\n\n var ProjectFiles = Backbone.Collection.extend({\n model: app.ProjectFile\n });\n\n app.ProjectFiles = new ProjectFiles();\n\n app.ProjectFilesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#projectfile_list tbody');\n\n $('#no_projectfiles').show();\n $('#projectfile_list').hide();\n\n this.listenTo(app.ProjectFiles, 'add', this.addOne);\n this.listenTo(app.ProjectFiles, 'reset', this.addAll);\n this.listenTo(app.ProjectFiles, 'remove', this.addAll);\n this.listenTo(app.ProjectFiles, 'all', this.render);\n\n app.listener.on('projectfile:App\\\\Events\\\\ModelChanged', function (data) {\n var file = app.ProjectFiles.get(parseInt(data.model.id));\n\n if (file) {\n file.set(data.model);\n }\n });\n\n app.listener.on('projectfile:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.ProjectFiles.add(data.model);\n }\n });\n\n app.listener.on('projectfile:App\\\\Events\\\\ModelTrashed', function (data) {\n var file = app.ProjectFiles.get(parseInt(data.model.id));\n\n if (file) {\n app.ProjectFiles.remove(file);\n }\n });\n },\n render: function () {\n if (app.ProjectFiles.length) {\n $('#no_projectfiles').hide();\n $('#projectfile_list').show();\n } else {\n $('#no_projectfiles').show();\n $('#projectfile_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.ProjectFileView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.ProjectFiles.each(this.addOne, this);\n }\n });\n\n app.ProjectFileView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editFile',\n 'click .btn-view': 'viewFile'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#project-files-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n viewFile: function() {\n previewfile = this.model.get('path');\n $('#preview-content').text(this.model.get('content'));\n },\n editFile: function() {\n // FIXME: Sure this is wrong?\n $('#project_file_id').val(this.model.id);\n $('#project-file-name').val(this.model.get('name'));\n $('#project-file-path').val(this.model.get('path'));\n $('#project-file-content').text(this.model.get('content'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var SUCCESS = 0;\n var FAILED = 1;\n\n $('#checkurl').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.CheckUrls.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.CheckUrls.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#url_id').val('');\n $('#title').val('');\n $('#url').val('');\n $('#period_5').prop('checked', true);\n //$('#is_report').prop('checked', false);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n $('#checkurl button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var url = app.CheckUrls.get($('#url_id').val());\n\n url.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n $('#checkurl button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var url_id = $('#url_id').val();\n\n if (url_id) {\n var url = app.CheckUrls.get(url_id);\n } else {\n var url = new app.CheckUrl();\n }\n\n url.save({\n title: $('#title').val(),\n url: $('#url').val(),\n is_report: true, // $('#is_report').prop('checked'),\n period: parseInt($('input[name=period]:checked').val()),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!url_id) {\n app.CheckUrls.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.CheckUrl = Backbone.Model.extend({\n urlRoot: '/check-url'\n });\n\n var CheckUrls = Backbone.Collection.extend({\n model: app.CheckUrl\n });\n\n app.CheckUrls = new CheckUrls();\n\n app.CheckUrlsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#checkurl_list tbody');\n\n $('#no_checkurls').show();\n $('#checkurl_list').hide();\n\n this.listenTo(app.CheckUrls, 'add', this.addOne);\n this.listenTo(app.CheckUrls, 'reset', this.addAll);\n this.listenTo(app.CheckUrls, 'remove', this.addAll);\n this.listenTo(app.CheckUrls, 'all', this.render);\n\n app.listener.on('checkurl:App\\\\Events\\\\ModelChanged', function (data) {\n var link = app.CheckUrls.get(parseInt(data.model.id));\n\n if (link) {\n link.set(data.model);\n }\n });\n\n app.listener.on('checkurl:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.CheckUrls.add(data.model);\n }\n });\n\n app.listener.on('checkurl:App\\\\Events\\\\ModelTrashed', function (data) {\n var link = app.CheckUrls.get(parseInt(data.model.id));\n\n if (link) {\n app.CheckUrls.remove(link);\n }\n });\n },\n render: function () {\n if (app.CheckUrls.length) {\n $('#no_checkurls').hide();\n $('#checkurl_list').show();\n } else {\n $('#no_checkurls').show();\n $('#checkurl_list').hide();\n }\n },\n addOne: function (url) {\n var view = new app.CheckUrlView({ \n model: url\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.CheckUrls.each(this.addOne, this);\n }\n });\n\n app.CheckUrlView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editUrl'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#checkUrls-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n if (parseInt(data.last_status) === FAILED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.CheckUrls.failure;\n } else {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.CheckUrls.success;\n }\n\n data.interval_label = data.period + ' ' + Lang.CheckUrls.length;\n\n // data.report = Lang.CheckUrls.no;\n\n // if (data.is_report) {\n // data.report = Lang.CheckUrls.yes;\n // }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editUrl: function() {\n $('#url_id').val(this.model.id);\n $('#title').val(this.model.get('title'));\n $('#url').val(this.model.get('url'));\n $('#period_' + this.model.get('period')).prop('checked', true);\n $('#is_report').prop('checked', this.model.get('is_report'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var COMPLETED = 0;\n var PENDING = 1;\n var RUNNING = 2;\n var FAILED = 3;\n var CANCELLED = 4;\n\n $('#log').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var log_id = button.attr('id').replace('log_', '');\n\n var step = $('h3 span', button.parents('.box')).text();\n var modal = $(this);\n var log = $('pre', modal);\n var loader = $('#loading', modal);\n\n log.hide();\n loader.show();\n\n $('#action', modal).text(step);\n log.text('');\n\n $.ajax({\n type: 'GET',\n url: '/log/' + log_id\n }).done(function (data) {\n var output = data.output;\n // FIXME: There has to be a cleaner way to do this surely?\n output = output.replace(/<\\/error>/g, '')\n output = output.replace(/<\\/info>/g, '');\n output = output.replace(//g, '')\n output = output.replace(//g, '');\n\n log.html(output);\n\n log.show();\n loader.hide();\n }).fail(function() {\n\n }).always(function() {\n\n });\n });\n\n app.ServerLog = Backbone.Model.extend({\n urlRoot: '/status'\n });\n\n var Deployment = Backbone.Collection.extend({\n model: app.ServerLog\n });\n\n app.Deployment = new Deployment();\n\n app.DeploymentView = Backbone.View.extend({\n el: '#app',\n $containers: [],\n events: {\n\n },\n initialize: function() {\n var that = this;\n $('.deploy-step tbody').each(function(index, element) {\n that.$containers.push({\n step: parseInt($(element).attr('id').replace('step_', '')),\n element: element\n })\n });\n\n this.listenTo(app.Deployment, 'add', this.addOne);\n this.listenTo(app.Deployment, 'reset', this.addAll);\n this.listenTo(app.Deployment, 'remove', this.addAll);\n this.listenTo(app.Deployment, 'all', this.render);\n\n app.listener.on('serverlog:App\\\\Events\\\\ServerLogChanged', function (data) {\n var deployment = app.Deployment.get(data.log_id);\n\n if (deployment) {\n deployment.set({\n status: data.status,\n output: data.output,\n runtime: data.runtime,\n started_at: data.started_at ? data.started_at : false,\n finished_at: data.finished_at ? data.finished_at : false\n });\n\n // FIXME: If cancelled update all other deployments straight away\n // FIXME: If completed fake making the next model \"running\" so it looks responsive\n }\n });\n\n app.listener.on('deployment:App\\\\Events\\\\ModelChanged', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n if (data.model.repo_failure) {\n $('#repository_error').show();\n }\n }\n });\n\n },\n addOne: function (step) {\n var view = new app.LogView({ \n model: step\n });\n\n var found = _.find(this.$containers, function(element) { \n return parseInt(element.step) === parseInt(step.get('deploy_step_id'));\n });\n\n $(found.element).append(view.render().el);\n\n },\n addAll: function () {\n $(this.$containers).each(function (index, element) {\n element.html('');\n });\n\n app.Commands.each(this.addOne, this);\n }\n });\n \n app.LogView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n //'click .btn-log': 'showLog',\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#log-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'info';\n data.icon_css = 'clock-o';\n data.status = Lang.status.pending;\n\n if (parseInt(this.model.get('status')) === COMPLETED) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.status.completed;\n } else if (parseInt(this.model.get('status')) === RUNNING) {\n data.status_css = 'warning';\n data.icon_css = 'spinner fa-spin';\n data.status = Lang.status.running;\n } else if (parseInt(this.model.get('status')) === FAILED || parseInt(this.model.get('status')) === CANCELLED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n\n data.status = Lang.status.failed;\n if (parseInt(this.model.get('status')) === CANCELLED) {\n data.status = Lang.status.cancelled;\n }\n }\n\n data.formatted_start_time = data.started_at ? moment(data.started_at).format('h:mm:ss A') : false;\n data.formatted_end_time = data.finished_at ? moment(data.finished_at).format('h:mm:ss A') : false;\n\n this.$el.html(this.template(data));\n\n return this;\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n $('.command-list table').sortable({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n placeholder: '',\n delay: 500,\n onDrop: function (item, container, _super) {\n _super(item, container);\n\n var ids = [];\n $('tbody tr td:first-child', container.el[0]).each(function (idx, element) {\n ids.push($(element).data('command-id'));\n });\n\n $.ajax({ \n url: '/commands/reorder',\n method: 'POST',\n data: {\n commands: ids\n }\n });\n }\n });\n\n var editor;\n\n $('#command').on('hidden.bs.modal', function (event) {\n editor.destroy();\n });\n\n // FIXME: This seems very wrong\n $('#command').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n editor = ace.edit('command_script');\n editor.getSession().setMode('ace/mode/sh');\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#command_id').val('');\n $('#command_step').val(button.data('step'));\n $('#command_name').val('');\n editor.setValue('');\n editor.gotoLine(1);\n $('#command_user').val('');\n $('#command_optional').val('');\n\n $('.command-server').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#command button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var command = app.Commands.get($('#command_id').val());\n\n command.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#command button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find(':input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var command_id = $('#command_id').val();\n\n if (command_id) {\n var command = app.Commands.get(command_id);\n } else {\n var command = new app.Command();\n }\n\n var server_ids = [];\n\n $('.command-server:checked').each(function() {\n server_ids.push($(this).val());\n });\n\n command.save({\n name: $('#command_name').val(),\n script: editor.getValue(),\n user: $('#command_user').val(),\n step: $('#command_step').val(),\n project_id: $('input[name=\"project_id\"]').val(),\n servers: server_ids,\n optional: $('#command_optional').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find(':input').removeAttr('disabled');\n\n if (!command_id) {\n app.Commands.add(response);\n }\n\n editor.setValue('');\n editor.gotoLine(1);\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find(':input').removeAttr('disabled');\n }\n });\n });\n\n app.Command = Backbone.Model.extend({\n urlRoot: '/commands',\n defaults: function() {\n return {\n order: app.Commands.nextOrder()\n };\n },\n isAfter: function() {\n return (parseInt(this.get('step')) % 3 === 0);\n }\n });\n\n var Commands = Backbone.Collection.extend({\n model: app.Command,\n comparator: 'order',\n nextOrder: function() {\n if (!this.length) {\n return 1;\n }\n \n return this.last().get('order') + 1;\n }\n });\n\n app.Commands = new Commands();\n\n app.CommandsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$beforeList = $('#commands-before .command-list tbody');\n this.$afterList = $('#commands-after .command-list tbody');\n\n $('.no-commands').show();\n $('.command-list').hide();\n\n this.listenTo(app.Commands, 'add', this.addOne);\n this.listenTo(app.Commands, 'reset', this.addAll);\n this.listenTo(app.Commands, 'remove', this.addAll);\n this.listenTo(app.Commands, 'all', this.render);\n\n // FIXME: Need to regenerate the order!\n\n app.listener.on('command:App\\\\Events\\\\ModelChanged', function (data) {\n var command = app.Commands.get(parseInt(data.model.id));\n\n if (command) {\n command.set(data.model);\n }\n });\n\n app.listener.on('command:App\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n\n // Make sure the command is for this action (clone, install, activate, purge)\n if (parseInt(data.model.step) + 1 === parseInt(app.command_action) || parseInt(data.model.step) - 1 === parseInt(app.command_action)) {\n app.Commands.add(data.model);\n }\n }\n });\n\n app.listener.on('command:App\\\\Events\\\\ModelTrashed', function (data) {\n var command = app.Commands.get(parseInt(data.model.id));\n\n if (command) {\n app.Commands.remove(command);\n }\n });\n },\n render: function () {\n var before = app.Commands.find(function(model) { \n return !model.isAfter();\n });\n\n if (typeof before !== 'undefined') {\n $('#commands-before .no-commands').hide();\n $('#commands-before .command-list').show();\n } else {\n $('#commands-before .no-commands').show();\n $('#commands-before .command-list').hide();\n }\n\n var after = app.Commands.find(function(model) { \n return model.isAfter();\n });\n\n if (typeof after !== 'undefined') {\n $('#commands-after .no-commands').hide();\n $('#commands-after .command-list').show();\n } else {\n $('#commands-after .no-commands').show();\n $('#commands-after .command-list').hide();\n }\n },\n addOne: function (command) {\n var view = new app.CommandView({ \n model: command\n });\n\n if (command.isAfter()) {\n this.$afterList.append(view.render().el);\n } else {\n this.$beforeList.append(view.render().el);\n }\n },\n addAll: function () {\n this.$beforeList.html('');\n this.$afterList.html('');\n app.Commands.each(this.addOne, this);\n }\n });\n\n app.CommandView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editCommand'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#command-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editCommand: function() {\n // FIXME: Sure this is wrong?\n $('#command_id').val(this.model.id);\n $('#command_step').val(this.model.get('step'));\n $('#command_name').val(this.model.get('name'));\n $('#command_script').text(this.model.get('script'));\n $('#command_user').val(this.model.get('user'));\n $('#command_optional').prop('checked', (this.model.get('optional') === true));\n\n $('.command-server').prop('checked', false);\n $(this.model.get('servers')).each(function (index, server) {\n $('#command_server_' + server.id).prop('checked', true);\n });\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#user').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.existing-only', modal).hide();\n $('.new-only', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n $('.existing-only', modal).show();\n } else {\n $('#user_id').val('');\n $('#user_name').val('');\n $('#user_email').val('');\n $('#user_password').val('');\n $('#user_password_confirmation').val('');\n\n $('.new-only', modal).show();\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#user button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var user = app.Users.get($('#user_id').val());\n\n user.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#user button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var user_id = $('#user_id').val();\n\n if (user_id) {\n var user = app.Users.get(user_id);\n } else {\n var user = new app.User();\n }\n\n user.save({\n name: $('#user_name').val(),\n email: $('#user_email').val(),\n password: $('#user_password').val(),\n password_confirmation: $('#user_password_confirmation').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!user_id) {\n app.Users.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.User = Backbone.Model.extend({\n urlRoot: '/admin/users',\n initialize: function() {\n\n }\n });\n\n var Users = Backbone.Collection.extend({\n model: app.User\n });\n\n app.Users = new Users();\n\n app.UsersTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#user_list tbody');\n\n this.listenTo(app.Users, 'add', this.addOne);\n this.listenTo(app.Users, 'reset', this.addAll);\n this.listenTo(app.Users, 'remove', this.addAll);\n this.listenTo(app.Users, 'all', this.render);\n\n app.listener.on('user:App\\\\Events\\\\ModelChanged', function (data) {\n var user = app.Users.get(parseInt(data.model.id));\n\n if (user) {\n user.set(data.model);\n }\n });\n\n app.listener.on('user:App\\\\Events\\\\ModelCreated', function (data) {\n app.Users.add(data.model);\n });\n\n app.listener.on('user:App\\\\Events\\\\ModelTrashed', function (data) {\n var user = app.Users.get(parseInt(data.model.id));\n\n if (user) {\n app.Users.remove(user);\n }\n });\n },\n addOne: function (user) {\n var view = new app.UserView({ \n model: user\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Users.each(this.addOne, this);\n }\n });\n\n app.UserView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editUser'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#user-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.created = moment(data.created_at).format('Do MMM YYYY h:mm:ss A');\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editUser: function() {\n $('#user_id').val(this.model.id);\n $('#user_name').val(this.model.get('name'));\n $('#user_email').val(this.model.get('email'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#group').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#group_id').val('');\n $('#group_name').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#group button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var group_id = $('#group_id').val();\n\n if (group_id) {\n var group = app.Groups.get(group_id);\n } else {\n var group = new app.Group();\n }\n\n group.save({\n name: $('#group_name').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!group_id) {\n app.Groups.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Group = Backbone.Model.extend({\n urlRoot: '/admin/groups',\n initialize: function() {\n\n }\n });\n\n var Groups = Backbone.Collection.extend({\n model: app.Group\n });\n\n app.Groups = new Groups();\n\n app.GroupsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#group_list tbody');\n\n this.listenTo(app.Groups, 'add', this.addOne);\n this.listenTo(app.Groups, 'reset', this.addAll);\n this.listenTo(app.Groups, 'remove', this.addAll);\n this.listenTo(app.Groups, 'all', this.render);\n\n app.listener.on('group:App\\\\Events\\\\ModelChanged', function (data) {\n $('#group_' + data.model.id).html(data.model.name);\n\n var group = app.Groups.get(parseInt(data.model.id));\n\n if (group) {\n group.set(data.model);\n }\n });\n\n app.listener.on('group:App\\\\Events\\\\ModelCreated', function (data) {\n app.Groups.add(data.model);\n });\n\n app.listener.on('group:App\\\\Events\\\\ModelTrashed', function (data) {\n var group = app.Groups.get(parseInt(data.model.id));\n\n if (group) {\n app.Groups.remove(group);\n }\n });\n },\n addOne: function (group) {\n\n var view = new app.GroupView({ \n model: group\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Servers.each(this.addOne, this);\n }\n });\n\n app.GroupView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editGroup'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#group-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editGroup: function() {\n $('#group_id').val(this.model.id);\n $('#group_name').val(this.model.get('name'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // Stop the uploader causing errors on pages it shouldn't be used\n if ($('#upload').length === 0) {\n return;\n }\n\n var cropperData = {};\n $('#request-change-email').on('click', function() {\n var box = $(this).parents('.box');\n box.children('.overlay').removeClass('hide');\n $.post('/profile/email', function(res) {\n if (res == 'success') {\n box.children('.overlay').addClass('hide');\n box.find('.help-block').removeClass('hide');\n }\n });\n });\n\n $('.avatar>img').cropper({\n aspectRatio: 1 / 1,\n preview: '.avatar-preview',\n crop: function(data) {\n cropperData.dataX = Math.round(data.x);\n cropperData.dataY = Math.round(data.y);\n cropperData.dataHeight = Math.round(data.height);\n cropperData.dataWidth = Math.round(data.width);\n cropperData.dataRotate = Math.round(data.rotate);\n },\n built: function() {\n $('#upload-overlay').addClass('hide');\n }\n });\n\n var uploader = new Uploader({\n trigger: '#upload',\n name: 'file',\n action: '/profile/upload',\n accept: 'image/*',\n data: {\n '_token': $('meta[name=\"token\"]').attr('content')\n },\n multiple: false,\n change: function(){\n $('#upload-overlay').removeClass('hide');\n this.submit();\n },\n error: function(file) {\n if (file.responseJSON.file) {\n alert(file.responseJSON.file.join(''));\n } else if (file.responseJSON.error) {\n alert(file.responseJSON.error.message);\n }\n\n $('#upload-overlay').addClass('hide');\n },\n success: function(response) {\n if( response.message === 'success') {\n $('.avatar>img').cropper('replace', response.image);\n cropperData.path = response.path;\n\n $('.current-avatar-preview').addClass('hide');\n $('.avatar-preview').removeClass('hide');\n $('#save-avatar').removeClass('hide');\n }\n }\n });\n\n $('#save-avatar').click(function(){\n $('#upload-overlay').removeClass('hide');\n $('.avatar-message .alert').addClass('hide');\n $.post('/profile/avatar', cropperData).success(function(resp) {\n $('#upload-overlay').addClass('hide');\n if (resp.image) {\n $('.avatar-message .alert.alert-success').removeClass('hide');\n $('#use-gravatar').removeClass('hide');\n } else {\n $('.avatar-message .alert.alert-danger').removeClass('hide');\n }\n });\n });\n\n $('#use-gravatar').click(function () {\n\n $('#upload-overlay').removeClass('hide');\n $('.avatar-message .alert').addClass('hide');\n\n $.post('/profile/gravatar').success(function(resp) {\n\n $('#upload-overlay').addClass('hide');\n\n // if (resp.image) {\n $('.avatar-message .alert.alert-success').removeClass('hide');\n $('.avatar-preview').addClass('hide');\n $('.current-avatar-preview').removeClass('hide');\n $('.current-avatar-preview').attr('src', resp.image);\n $('#use-gravatar').addClass('hide');\n $('#avatar-save-buttons button').addClass('hide');\n // } else {\n // $('.avatar-preview').addClass('hide');\n // $('#use-gravatar').removeClass('hide');\n // }\n });\n });\n})(jQuery);","/*! AdminLTE app.js\n * ================\n * Main JS application file for AdminLTE v2. This file\n * should be included in all pages. It controls some layout\n * options and implements exclusive AdminLTE plugins.\n *\n * @Author Almsaeed Studio\n * @Support \n * @Email \n * @version 2.0.4\n * @license MIT \n */\n\n'use strict';\n\n//Make sure jQuery has been loaded before app.js\nif (typeof jQuery === \"undefined\") {\n throw new Error(\"AdminLTE requires jQuery\");\n}\n\n/* AdminLTE\n *\n * @type Object\n * @description $.AdminLTE is the main object for the template's app.\n * It's used for implementing functions and options related\n * to the template. Keeping everything wrapped in an object\n * prevents conflict with other plugins and is a better\n * way to organize our code.\n */\n$.AdminLTE = {};\n\n/* --------------------\n * - AdminLTE Options -\n * --------------------\n * Modify these options to suit your implementation\n */\n$.AdminLTE.options = {\n //Add slimscroll to navbar menus\n //This requires you to load the slimscroll plugin\n //in every page before app.js\n navbarMenuSlimscroll: true,\n navbarMenuSlimscrollWidth: \"3px\", //The width of the scroll bar\n navbarMenuHeight: \"200px\", //The height of the inner menu\n //Sidebar push menu toggle button selector\n sidebarToggleSelector: \"[data-toggle='offcanvas']\",\n //Activate sidebar push menu\n sidebarPushMenu: true,\n //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)\n sidebarSlimScroll: true,\n //BoxRefresh Plugin\n enableBoxRefresh: true,\n //Bootstrap.js tooltip\n enableBSToppltip: true,\n BSTooltipSelector: \"[data-toggle='tooltip']\",\n //Enable Fast Click. Fastclick.js creates a more\n //native touch experience with touch devices. If you\n //choose to enable the plugin, make sure you load the script\n //before AdminLTE's app.js\n enableFastclick: true,\n //Box Widget Plugin. Enable this plugin\n //to allow boxes to be collapsed and/or removed\n enableBoxWidget: true,\n //Box Widget plugin options\n boxWidgetOptions: {\n boxWidgetIcons: {\n //The icon that triggers the collapse event\n collapse: 'fa fa-minus',\n //The icon that trigger the opening event\n open: 'fa fa-plus',\n //The icon that triggers the removing event\n remove: 'fa fa-times'\n },\n boxWidgetSelectors: {\n //Remove button selector\n remove: '[data-widget=\"remove\"]',\n //Collapse button selector\n collapse: '[data-widget=\"collapse\"]'\n }\n },\n //Direct Chat plugin options\n directChat: {\n //Enable direct chat by default\n enable: true,\n //The button to open and close the chat contacts pane\n contactToggleSelector: '[data-widget=\"chat-pane-toggle\"]'\n },\n //Define the set of colors to use globally around the website\n colors: {\n lightBlue: \"#3c8dbc\",\n red: \"#f56954\",\n green: \"#00a65a\",\n aqua: \"#00c0ef\",\n yellow: \"#f39c12\",\n blue: \"#0073b7\",\n navy: \"#001F3F\",\n teal: \"#39CCCC\",\n olive: \"#3D9970\",\n lime: \"#01FF70\",\n orange: \"#FF851B\",\n fuchsia: \"#F012BE\",\n purple: \"#8E24AA\",\n maroon: \"#D81B60\",\n black: \"#222222\",\n gray: \"#d2d6de\"\n },\n //The standard screen sizes that bootstrap uses.\n //If you change these in the variables.less file, change\n //them here too.\n screenSizes: {\n xs: 480,\n sm: 768,\n md: 992,\n lg: 1200\n }\n};\n\n/* ------------------\n * - Implementation -\n * ------------------\n * The next block of code implements AdminLTE's\n * functions and plugins as specified by the\n * options above.\n */\n$(function () {\n //Easy access to options\n var o = $.AdminLTE.options;\n\n //Activate the layout maker\n $.AdminLTE.layout.activate();\n\n //Enable sidebar tree view controls\n $.AdminLTE.tree('.sidebar');\n\n //Add slimscroll to navbar dropdown\n if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {\n $(\".navbar .menu\").slimscroll({\n height: \"200px\",\n alwaysVisible: false,\n size: \"3px\"\n }).css(\"width\", \"100%\");\n }\n\n //Activate sidebar push menu\n if (o.sidebarPushMenu) {\n $.AdminLTE.pushMenu(o.sidebarToggleSelector);\n }\n\n //Activate Bootstrap tooltip\n if (o.enableBSToppltip) {\n $(o.BSTooltipSelector).tooltip();\n }\n\n //Activate box widget\n if (o.enableBoxWidget) {\n $.AdminLTE.boxWidget.activate();\n }\n\n //Activate fast click\n if (o.enableFastclick && typeof FastClick != 'undefined') {\n FastClick.attach(document.body);\n }\n\n //Activate direct chat widget\n if (o.directChat.enable) {\n $(o.directChat.contactToggleSelector).click(function () {\n var box = $(this).parents('.direct-chat').first();\n box.toggleClass('direct-chat-contacts-open');\n });\n }\n\n /*\n * INITIALIZE BUTTON TOGGLE\n * ------------------------\n */\n $('.btn-group[data-toggle=\"btn-toggle\"]').each(function () {\n var group = $(this);\n $(this).find(\".btn\").click(function (e) {\n group.find(\".btn.active\").removeClass(\"active\");\n $(this).addClass(\"active\");\n e.preventDefault();\n });\n\n });\n});\n\n/* ----------------------\n * - AdminLTE Functions -\n * ----------------------\n * All AdminLTE functions are implemented below.\n */\n\n/* prepareLayout\n * =============\n * Fixes the layout height in case min-height fails.\n *\n * @type Object\n * @usage $.AdminLTE.layout.activate()\n * $.AdminLTE.layout.fix()\n * $.AdminLTE.layout.fixSidebar()\n */\n$.AdminLTE.layout = {\n activate: function () {\n var _this = this;\n _this.fix();\n _this.fixSidebar();\n $(window, \".wrapper\").resize(function () {\n _this.fix();\n _this.fixSidebar();\n });\n },\n fix: function () {\n //Get window height and the wrapper height\n var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();\n var window_height = $(window).height();\n var sidebar_height = $(\".sidebar\").height();\n //Set the min-height of the content and sidebar based on the\n //the height of the document.\n if ($(\"body\").hasClass(\"fixed\")) {\n $(\".content-wrapper, .right-side\").css('min-height', window_height - $('.main-footer').outerHeight());\n } else {\n if (window_height >= sidebar_height) {\n $(\".content-wrapper, .right-side\").css('min-height', window_height - neg);\n } else {\n $(\".content-wrapper, .right-side\").css('min-height', sidebar_height);\n }\n }\n },\n fixSidebar: function () {\n //Make sure the body tag has the .fixed class\n if (!$(\"body\").hasClass(\"fixed\")) {\n if (typeof $.fn.slimScroll != 'undefined') {\n $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n }\n return;\n } else if (typeof $.fn.slimScroll == 'undefined' && console) {\n console.error(\"Error: the fixed layout requires the slimscroll plugin!\");\n }\n //Enable slimscroll for fixed layout\n if ($.AdminLTE.options.sidebarSlimScroll) {\n if (typeof $.fn.slimScroll != 'undefined') {\n //Distroy if it exists\n $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n //Add slimscroll\n $(\".sidebar\").slimscroll({\n height: ($(window).height() - $(\".main-header\").height()) + \"px\",\n color: \"rgba(0,0,0,0.2)\",\n size: \"3px\"\n });\n }\n }\n }\n};\n\n/* PushMenu()\n * ==========\n * Adds the push menu functionality to the sidebar.\n *\n * @type Function\n * @usage: $.AdminLTE.pushMenu(\"[data-toggle='offcanvas']\")\n */\n$.AdminLTE.pushMenu = function (toggleBtn) {\n //Get the screen sizes\n var screenSizes = this.options.screenSizes;\n\n //Enable sidebar toggle\n $(toggleBtn).click(function (e) {\n e.preventDefault();\n\n //Enable sidebar push menu\n if ($(window).width() > (screenSizes.sm - 1)) {\n $(\"body\").toggleClass('sidebar-collapse');\n }\n //Handle sidebar push menu for small screens\n else {\n if ($(\"body\").hasClass('sidebar-open')) {\n $(\"body\").removeClass('sidebar-open');\n $(\"body\").removeClass('sidebar-collapse')\n } else {\n $(\"body\").addClass('sidebar-open');\n }\n }\n });\n\n $(\".content-wrapper\").click(function () {\n //Enable hide menu when clicking on the content-wrapper on small screens\n if ($(window).width() <= (screenSizes.sm - 1) && $(\"body\").hasClass(\"sidebar-open\")) {\n $(\"body\").removeClass('sidebar-open');\n }\n });\n\n};\n\n/* Tree()\n * ======\n * Converts the sidebar into a multilevel\n * tree view menu.\n *\n * @type Function\n * @Usage: $.AdminLTE.tree('.sidebar')\n */\n$.AdminLTE.tree = function (menu) {\n var _this = this;\n\n $(\"li a\", $(menu)).click(function (e) {\n //Get the clicked link and the next element\n var $this = $(this);\n var checkElement = $this.next();\n\n //Check if the next element is a menu and is visible\n if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {\n //Close the menu\n checkElement.slideUp('normal', function () {\n checkElement.removeClass('menu-open');\n //Fix the layout in case the sidebar stretches over the height of the window\n //_this.layout.fix();\n });\n checkElement.parent(\"li\").removeClass(\"active\");\n }\n //If the menu is not visible\n else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {\n //Get the parent menu\n var parent = $this.parents('ul').first();\n //Close all open menus within the parent\n var ul = parent.find('ul:visible').slideUp('normal');\n //Remove the menu-open class from the parent\n ul.removeClass('menu-open');\n //Get the parent li\n var parent_li = $this.parent(\"li\");\n\n //Open the target menu and add the menu-open class\n checkElement.slideDown('normal', function () {\n //Add the class active to the parent li\n checkElement.addClass('menu-open');\n parent.find('li.active').removeClass('active');\n parent_li.addClass('active');\n //Fix the layout in case the sidebar stretches over the height of the window\n _this.layout.fix();\n });\n }\n //if this isn't a link, prevent the page from being redirected\n if (checkElement.is('.treeview-menu')) {\n e.preventDefault();\n }\n });\n};\n\n/* BoxWidget\n * =========\n * BoxWidget is plugin to handle collapsing and\n * removing boxes from the screen.\n *\n * @type Object\n * @usage $.AdminLTE.boxWidget.activate()\n * Set all of your option in the main $.AdminLTE.options object\n */\n$.AdminLTE.boxWidget = {\n activate: function () {\n var o = $.AdminLTE.options;\n var _this = this;\n //Listen for collapse event triggers\n $(o.boxWidgetOptions.boxWidgetSelectors.collapse).click(function (e) {\n e.preventDefault();\n _this.collapse($(this));\n });\n\n //Listen for remove event triggers\n $(o.boxWidgetOptions.boxWidgetSelectors.remove).click(function (e) {\n e.preventDefault();\n _this.remove($(this));\n });\n },\n collapse: function (element) {\n //Find the box parent\n var box = element.parents(\".box\").first();\n //Find the body and the footer\n var bf = box.find(\".box-body, .box-footer\");\n if (!box.hasClass(\"collapsed-box\")) {\n //Convert minus into plus\n element.children(\".fa-minus\").removeClass(\"fa-minus\").addClass(\"fa-plus\");\n bf.slideUp(300, function () {\n box.addClass(\"collapsed-box\");\n });\n } else {\n //Convert plus into minus\n element.children(\".fa-plus\").removeClass(\"fa-plus\").addClass(\"fa-minus\");\n bf.slideDown(300, function () {\n box.removeClass(\"collapsed-box\");\n });\n }\n },\n remove: function (element) {\n //Find the box parent\n var box = element.parents(\".box\").first();\n box.slideUp();\n },\n options: $.AdminLTE.options.boxWidgetOptions\n};\n\n/* ------------------\n * - Custom Plugins -\n * ------------------\n * All custom plugins are defined below.\n */\n\n/*\n * BOX REFRESH BUTTON\n * ------------------\n * This is a custom plugin to use with the compenet BOX. It allows you to add\n * a refresh button to the box. It converts the box's state to a loading state.\n *\n * @type plugin\n * @usage $(\"#box-widget\").boxRefresh( options );\n */\n(function ($) {\n\n $.fn.boxRefresh = function (options) {\n\n // Render options\n var settings = $.extend({\n //Refressh button selector\n trigger: \".refresh-btn\",\n //File source to be loaded (e.g: ajax/src.php)\n source: \"\",\n //Callbacks\n onLoadStart: function (box) {\n }, //Right after the button has been clicked\n onLoadDone: function (box) {\n } //When the source has been loaded\n\n }, options);\n\n //The overlay\n var overlay = $('');\n\n return this.each(function () {\n //if a source is specified\n if (settings.source === \"\") {\n if (console) {\n console.log(\"Please specify a source first - boxRefresh()\");\n }\n return;\n }\n //the box\n var box = $(this);\n //the button\n var rBtn = box.find(settings.trigger).first();\n\n //On trigger click\n rBtn.click(function (e) {\n e.preventDefault();\n //Add loading overlay\n start(box);\n\n //Perform ajax call\n box.find(\".box-body\").load(settings.source, function () {\n done(box);\n });\n });\n });\n\n function start(box) {\n //Add overlay and loading img\n box.append(overlay);\n\n settings.onLoadStart.call(box);\n }\n\n function done(box) {\n //Remove overlay and loading img\n box.find(overlay).remove();\n\n settings.onLoadDone.call(box);\n }\n\n };\n\n})(jQuery);\n\n/*\n * TODO LIST CUSTOM PLUGIN\n * -----------------------\n * This plugin depends on iCheck plugin for checkbox and radio inputs\n *\n * @type plugin\n * @usage $(\"#todo-widget\").todolist( options );\n */\n(function ($) {\n\n $.fn.todolist = function (options) {\n // Render options\n var settings = $.extend({\n //When the user checks the input\n onCheck: function (ele) {\n },\n //When the user unchecks the input\n onUncheck: function (ele) {\n }\n }, options);\n\n return this.each(function () {\n\n if (typeof $.fn.iCheck != 'undefined') {\n $('input', this).on('ifChecked', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onCheck.call(ele);\n });\n\n $('input', this).on('ifUnchecked', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onUncheck.call(ele);\n });\n } else {\n $('input', this).on('change', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onCheck.call(ele);\n });\n }\n });\n };\n}(jQuery));"],"sourceRoot":"/source/"}
\ No newline at end of file
+{"version":3,"sources":["uploader.js","app.js","projects.js","templates.js","servers.js","heartbeats.js","notifications.js","notifyEmails.js","shareFiles.js","projectFiles.js","checkUrls.js","deployment.js","commands.js","users.js","groups.js","profile.js","AdminLTE.js"],"names":["Uploader","options","this","isString","trigger","settings","name","action","data","accept","change","error","multiple","success","$","extend","$trigger","attr","parse","setup","bind","val","Object","prototype","toString","call","createInputs","i","inputs","document","createElement","type","value","push","str","ret","pairs","split","unescape","s","decodeURIComponent","replace","length","pair","key","findzIndex","$node","parents","parentsUntil","zIndex","item","eq","css","parseInt","newIframe","iframeName","iframeCount","iframe","hide","MultipleUploader","uploaders","each","_uploaders","ajaxPrefilter","originalOptions","jqXHR","setRequestHeader","app","updateTimeline","ajax","url","response","html","updateNavBar","model","time","moment","started_at","format","id","remove","show","template","_","status","DEPLOYMENT_PENDING","append","DEPLOYMENT_DEPLOYING","pending","deploying","pending_label","Lang","nav","multi_pending","single_pending","deploying_label","multi_running","single_running","text","FINISHED","PENDING","DEPLOYING","FAILED","DEPLOYMENT_COMPLETED","DEPLOYMENT_FAILED","DEPLOYMENT_ERRORS","project_id","listener","io","connect","on","project","deployment","committer","commit_url","short_commit","icon_class","label_class","label","deployments","done","completed","running","failed","errors","removeAttr","projects","not_deployed","finished","last_run","parent","window","location","href","ready","jQuery","event","target","currentTarget","modal","icon","find","dialog","source","removeClass","addClass","stopPropagation","button","relatedTarget","title","create","hasClass","edit","Projects","get","destroy","wait","Project","save","repository","branch","group_id","builds_to_keep","build_url","template_id","add","responseJSON","index","element","Backbone","Model","urlRoot","Collection","ProjectsTab","View","el","events","initialize","$list","listenTo","addOne","addAll","render","set","view","ProjectView","tagName","click .btn-edit","toJSON","deploy","$el","editProject","fail","always","Templates","Template","TemplatesTab","TemplateView","editTemplate","SUCCESSFUL","TESTING","sortable","containerSelector","itemPath","itemSelector","placeholder","delay","onDrop","container","_super","ids","idx","method","servers","prop","server","Servers","server_id","Server","ip_address","port","user","path","deploy_code","is","add_commands","comparator","serverA","serverB","ServersTab","ServerView","click .btn-test","status_css","icon_css","untested","successful","testing","editServer","testConnection","that","OK","MISSING","heartbeats","heartbeat","Heartbeats","heartbeat_id","Heartbeat","interval","heartbeatA","heartbeatB","HeartbeatsTab","HeartbeatView","has_run","ok","missing","last_activity","interval_label","intervals","formatted_date","editHeartbeat","notifications","notification","Notifications","notification_id","Notification","webhook","channel","failure_only","NotificationsTab","NotificationView","editNotification","notifyEmails","file","NotifyEmails","notifyemail_id","NotifyEmail","email","NotifyEmailsTab","EmailView","editEmail","sharedFiles","SharedFiles","file_id","SharedFile","SharedFilesTab","share","FileView","editFile","editor","previewfile","ace","setReadOnly","getSession","setUseWrapMode","extension","substr","lastIndexOf","toLowerCase","setMode","projectFiles","filename","setValue","gotoLine","ProjectFiles","project_file_id","ProjectFile","content","getValue","ProjectFilesTab","ProjectFileView","click .btn-view","viewFile","CheckUrls","url_id","CheckUrl","is_report","period","CheckUrlsTab","link","CheckUrlView","last_status","failure","editUrl","COMPLETED","RUNNING","CANCELLED","log_id","step","log","loader","output","ServerLog","Deployment","DeploymentView","$containers","runtime","finished_at","repo_failure","LogView","found","Commands","cancelled","formatted_start_time","formatted_end_time","commands","command","command_id","Command","server_ids","script","optional","default_on","defaults","order","nextOrder","isAfter","last","CommandsTab","$beforeList","$afterList","command_action","before","after","CommandView","editCommand","Users","user_id","User","password","password_confirmation","UsersTab","UserView","created","created_at","editUser","group","Groups","Group","GroupsTab","GroupView","editGroup","form","FormData","_uploader_","input","setAttribute","position","top","right","opacity","outline","cursor","height","outerHeight","fontSize","Math","max","offset","left","overflow","width","outerWidth","appendTo","self","mouseenter","bindInput","e","_files","files","submit","optionXhr","progress","xhr","ajaxSettings","upload","addEventListener","percent","loaded","total","lengthComputable","ceil","processData","contentType","context","one","contents","refreshInput","newInput","clone","off","callback","me","enable","disable","cropperData","box","children","post","res","cropper","aspectRatio","preview","crop","dataX","round","x","dataY","y","dataHeight","dataWidth","dataRotate","rotate","built","_token","alert","join","message","image","click","resp","Error","AdminLTE","navbarMenuSlimscroll","navbarMenuSlimscrollWidth","navbarMenuHeight","sidebarToggleSelector","sidebarPushMenu","sidebarSlimScroll","enableBoxRefresh","enableBSToppltip","BSTooltipSelector","enableFastclick","enableBoxWidget","boxWidgetOptions","boxWidgetIcons","collapse","open","boxWidgetSelectors","directChat","contactToggleSelector","colors","lightBlue","red","green","aqua","yellow","blue","navy","teal","olive","lime","orange","fuchsia","purple","maroon","black","gray","screenSizes","xs","sm","md","lg","o","layout","activate","tree","fn","slimscroll","alwaysVisible","size","pushMenu","tooltip","boxWidget","FastClick","attach","body","first","toggleClass","preventDefault","_this","fix","fixSidebar","resize","neg","window_height","sidebar_height","slimScroll","console","color","toggleBtn","menu","$this","checkElement","next","slideUp","ul","parent_li","slideDown","bf","boxRefresh","start","overlay","onLoadStart","onLoadDone","rBtn","load","todolist","onCheck","ele","onUncheck","iCheck"],"mappings":"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","file":"app.js","sourcesContent":["var iframeCount = 0;\n\nfunction Uploader(options) {\n if (!(this instanceof Uploader)) {\n return new Uploader(options);\n }\n if (isString(options)) {\n options = {trigger: options};\n }\n\n var settings = {\n trigger: null,\n name: null,\n action: null,\n data: null,\n accept: null,\n change: null,\n error: null,\n multiple: true,\n success: null\n };\n if (options) {\n $.extend(settings, options);\n }\n var $trigger = $(settings.trigger);\n\n settings.action = settings.action || $trigger.data('action') || '/upload';\n settings.name = settings.name || $trigger.attr('name') || $trigger.data('name') || 'file';\n settings.data = settings.data || parse($trigger.data('data'));\n settings.accept = settings.accept || $trigger.data('accept');\n settings.success = settings.success || $trigger.data('success');\n this.settings = settings;\n\n this.setup();\n this.bind();\n}\n\n// initialize\n// create input, form, iframe\nUploader.prototype.setup = function() {\n this.form = $(\n ''\n );\n\n this.iframe = newIframe();\n this.form.attr('target', this.iframe.attr('name'));\n\n var data = this.settings.data;\n this.form.append(createInputs(data));\n if (window.FormData) {\n this.form.append(createInputs({'_uploader_': 'formdata'}));\n } else {\n this.form.append(createInputs({'_uploader_': 'iframe'}));\n }\n\n var input = document.createElement('input');\n input.type = 'file';\n input.name = this.settings.name;\n if (this.settings.accept) {\n input.accept = this.settings.accept;\n }\n if (this.settings.multiple) {\n input.multiple = true;\n input.setAttribute('multiple', 'multiple');\n }\n this.input = $(input);\n\n var $trigger = $(this.settings.trigger);\n this.input.attr('hidefocus', true).css({\n position: 'absolute',\n top: 0,\n right: 0,\n opacity: 0,\n outline: 0,\n cursor: 'pointer',\n height: $trigger.outerHeight(),\n fontSize: Math.max(64, $trigger.outerHeight() * 5)\n });\n this.form.append(this.input);\n this.form.css({\n position: 'absolute',\n top: $trigger.offset().top,\n left: $trigger.offset().left,\n overflow: 'hidden',\n width: $trigger.outerWidth(),\n height: $trigger.outerHeight(),\n zIndex: findzIndex($trigger) + 10\n }).appendTo('body');\n return this;\n};\n\n// bind events\nUploader.prototype.bind = function() {\n var self = this;\n var $trigger = $(self.settings.trigger);\n $trigger.mouseenter(function() {\n self.form.css({\n top: $trigger.offset().top,\n left: $trigger.offset().left,\n width: $trigger.outerWidth(),\n height: $trigger.outerHeight()\n });\n });\n self.bindInput();\n};\n\nUploader.prototype.bindInput = function() {\n var self = this;\n self.input.change(function(e) {\n // ie9 don't support FileList Object\n // http://stackoverflow.com/questions/12830058/ie8-input-type-file-get-files\n self._files = this.files || [{\n name: e.target.value\n }];\n var file = self.input.val();\n if (self.settings.change) {\n self.settings.change.call(self, self._files);\n } else if (file) {\n return self.submit();\n }\n });\n};\n\n// handle submit event\n// prepare for submiting form\nUploader.prototype.submit = function() {\n var self = this;\n if (window.FormData && self._files) {\n // build a FormData\n var form = new FormData(self.form.get(0));\n // use FormData to upload\n form.append(self.settings.name, self._files);\n\n var optionXhr;\n if (self.settings.progress) {\n // fix the progress target file\n var files = self._files;\n optionXhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n self.settings.progress(event, position, total, percent, files);\n }, false);\n }\n return xhr;\n };\n }\n $.ajax({\n url: self.settings.action,\n type: 'post',\n processData: false,\n contentType: false,\n data: form,\n xhr: optionXhr,\n context: this,\n success: self.settings.success,\n error: self.settings.error\n });\n return this;\n } else {\n // iframe upload\n self.iframe = newIframe();\n self.form.attr('target', self.iframe.attr('name'));\n $('body').append(self.iframe);\n self.iframe.one('load', function() {\n // https://github.com/blueimp/jQuery-File-Upload/blob/9.5.6/js/jquery.iframe-transport.js#L102\n // Fix for IE endless progress bar activity bug\n // (happens on form submits to iframe targets):\n $('')\n .appendTo(self.form)\n .remove();\n var response;\n try {\n response = $(this).contents().find(\"body\").html();\n } catch (e) {\n response = \"cross-domain\";\n }\n $(this).remove();\n if (!response) {\n if (self.settings.error) {\n self.settings.error(self.input.val());\n }\n } else {\n if (self.settings.success) {\n self.settings.success(response);\n }\n }\n });\n self.form.submit();\n }\n return this;\n};\n\nUploader.prototype.refreshInput = function() {\n //replace the input element, or the same file can not to be uploaded\n var newInput = this.input.clone();\n this.input.before(newInput);\n this.input.off('change');\n this.input.remove();\n this.input = newInput;\n this.bindInput();\n};\n\n// handle change event\n// when value in file input changed\nUploader.prototype.change = function(callback) {\n if (!callback) {\n return this;\n }\n this.settings.change = callback;\n return this;\n};\n\n// handle when upload success\nUploader.prototype.success = function(callback) {\n var me = this;\n this.settings.success = function(response) {\n me.refreshInput();\n if (callback) {\n callback(response);\n }\n };\n\n return this;\n};\n\n// handle when upload success\nUploader.prototype.error = function(callback) {\n var me = this;\n this.settings.error = function(response) {\n if (callback) {\n me.refreshInput();\n callback(response);\n }\n };\n return this;\n};\n\n// enable\nUploader.prototype.enable = function(){\n this.input.prop('disabled', false);\n this.input.css('cursor', 'pointer');\n};\n\n// disable\nUploader.prototype.disable = function(){\n this.input.prop('disabled', true);\n this.input.css('cursor', 'not-allowed');\n};\n\n// Helpers\n// -------------\n\nfunction isString(val) {\n return Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction createInputs(data) {\n if (!data) return [];\n\n var inputs = [], i;\n for (var name in data) {\n i = document.createElement('input');\n i.type = 'hidden';\n i.name = name;\n i.value = data[name];\n inputs.push(i);\n }\n return inputs;\n}\n\nfunction parse(str) {\n if (!str) return {};\n var ret = {};\n\n var pairs = str.split('&');\n var unescape = function(s) {\n return decodeURIComponent(s.replace(/\\+/g, ' '));\n };\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n var key = unescape(pair[0]);\n var val = unescape(pair[1]);\n ret[key] = val;\n }\n\n return ret;\n}\n\nfunction findzIndex($node) {\n var parents = $node.parentsUntil('body');\n var zIndex = 0;\n for (var i = 0; i < parents.length; i++) {\n var item = parents.eq(i);\n if (item.css('position') !== 'static') {\n zIndex = parseInt(item.css('zIndex'), 10) || zIndex;\n }\n }\n return zIndex;\n}\n\nfunction newIframe() {\n var iframeName = 'iframe-uploader-' + iframeCount;\n var iframe = $('').hide();\n iframeCount += 1;\n return iframe;\n}\n\nfunction MultipleUploader(options) {\n if (!(this instanceof MultipleUploader)) {\n return new MultipleUploader(options);\n }\n\n if (isString(options)) {\n options = {trigger: options};\n }\n var $trigger = $(options.trigger);\n\n var uploaders = [];\n $trigger.each(function(i, item) {\n options.trigger = item;\n uploaders.push(new Uploader(options));\n });\n this._uploaders = uploaders;\n}\nMultipleUploader.prototype.submit = function() {\n $.each(this._uploaders, function(i, item) {\n item.submit();\n });\n return this;\n};\nMultipleUploader.prototype.change = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.change(callback);\n });\n return this;\n};\nMultipleUploader.prototype.success = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.success(callback);\n });\n return this;\n};\nMultipleUploader.prototype.error = function(callback) {\n $.each(this._uploaders, function(i, item) {\n item.error(callback);\n });\n return this;\n};\nMultipleUploader.prototype.enable = function (){\n $.each(this._uploaders, function (i, item){\n item.enable();\n });\n return this;\n};\nMultipleUploader.prototype.disable = function (){\n $.each(this._uploaders, function (i, item){\n item.disable();\n });\n return this;\n};\nMultipleUploader.Uploader = Uploader;","$.ajaxPrefilter(function(options, originalOptions, jqXHR) {\n jqXHR.setRequestHeader('X-CSRF-Token', $('meta[name=\"token\"]').attr('content'));\n});\n\nvar app = app || {};\n\n(function ($) {\n var FINISHED = 0;\n var PENDING = 1;\n var DEPLOYING = 2;\n var FAILED = 3;\n var NOT_DEPLOYED = 4;\n\n var DEPLOYMENT_COMPLETED = 0;\n var DEPLOYMENT_PENDING = 1;\n var DEPLOYMENT_DEPLOYING = 2;\n var DEPLOYMENT_FAILED = 3;\n var DEPLOYMENT_ERRORS = 4;\n\n app.project_id = app.project_id || null;\n\n app.listener = io.connect($('meta[name=\"socket_url\"]').attr('content'));\n\n // Navbar deployment status\n // FIXME: Convert these menus to backbone\n // FIXME: Convert the project and deployments to backbone\n // TODO: Update the timeline\n app.listener.on('deployment:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n updateNavBar(data);\n\n var project = $('#project_' + data.model.project_id);\n\n if (project.length > 0) {\n updateTimeline();\n }\n\n var deployment = $('#deployment_' + data.model.id);\n\n if (deployment.length > 0) {\n\n $('td:nth-child(4)', deployment).text(data.model.committer);\n\n if (data.model.commit_url) {\n $('td:nth-child(5)', deployment).html('' + data.model.short_commit + '');\n } else {\n $('td:nth-child(5)', deployment).text(data.model.short_commit);\n }\n\n var icon_class = 'clock-o';\n var label_class = 'info';\n var label = Lang.deployments.status.pending;\n var done = false;\n\n data.model.status = parseInt(data.model.status);\n var status = $('td:nth-child(7) span.label', deployment);\n\n if (data.model.status === DEPLOYMENT_COMPLETED) {\n icon_class = 'check';\n label_class = 'success';\n label = Lang.deployments.status.completed;\n done = true;\n } else if (data.model.status === DEPLOYMENT_DEPLOYING) {\n icon_class = 'spinner fa-pulse';\n label_class = 'warning';\n label = Lang.deployments.status.running;\n } else if (data.model.status === DEPLOYMENT_FAILED) {\n icon_class = 'warning';\n label_class = 'danger';\n label = Lang.deployments.status.failed;\n done = true;\n } else if (data.model.status === DEPLOYMENT_ERRORS) {\n icon_class = 'warning';\n label_class = 'success';\n label = Lang.deployments.status.errors;\n done = true;\n }\n\n if (done) {\n $('button#deploy_project:disabled').removeAttr('disabled');\n }\n\n status.attr('class', 'label label-' + label_class)\n $('i', status).attr('class', 'fa fa-' + icon_class);\n $('span', status).text(label);\n }\n });\n\n app.listener.on('group:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n $('#sidebar_group_' + data.model.id).html(data.model.name);\n });\n\n app.listener.on('project:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n $('#sidebar_project_' + data.model.id).html(data.model.name);\n\n var project = $('#project_' + data.model.id);\n\n if (project.length > 0) {\n\n var icon_class = 'question-circle';\n var label_class = 'primary';\n var label = Lang.projects.status.not_deployed;\n\n data.model.status = parseInt(data.model.status);\n var status = $('td:nth-child(3) span.label', project);\n\n if (data.model.status === FINISHED) {\n icon_class = 'check';\n label_class = 'success';\n label = Lang.projects.status.finished;\n } else if (data.model.status === DEPLOYING) {\n icon_class = 'spinner fa-pulse';\n label_class = 'warning';\n label = Lang.projects.status.deploying;\n } else if (data.model.status === FAILED) {\n icon_class = 'warning';\n label_class = 'danger';\n label = Lang.projects.status.failed;\n } else if (data.model.status === PENDING) {\n icon_class = 'clock-o';\n label_class = 'info';\n label = Lang.projects.status.pending;\n }\n\n $('td:first a', project).text(data.model.name);\n $('td:nth-child(2)', project).text(moment(data.model.last_run).format('Do MMM YYYY h:mm:ss A'));\n status.attr('class', 'label label-' + label_class)\n $('i', status).attr('class', 'fa fa-' + icon_class);\n $('span', status).text(label);\n }\n });\n\n app.listener.on('project:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n $('#sidebar_project_' + data.model.id).parent('li').remove();\n\n if (parseInt(data.model.id) === parseInt(app.project_id)) {\n window.location.href = '/';\n }\n });\n\n // FIXME: This is cheating\n function updateTimeline() {\n $.ajax({\n type: 'GET',\n url: '/timeline'\n }).success(function (response) {\n $('#timeline').html(response);\n });\n }\n\n function updateNavBar(data) {\n data.model.time = moment(data.model.started_at).format('h:mm:ss A');\n data.model.url = '/deployment/' + data.model.id;\n\n $('#deployment_info_' + data.model.id).remove();\n $('#pending_menu, #deploying_menu').show();\n\n var template = _.template($('#deployment_list_template').html());\n var html = template(data.model);\n\n if (data.model.status === DEPLOYMENT_PENDING) {\n $('#pending_menu ul.menu').append(html);\n }\n else if (data.model.status === DEPLOYMENT_DEPLOYING) {\n $('#deploying_menu ul.menu').append(html);\n }\n\n var pending = $('#pending_menu ul.menu li').length;\n var deploying = $('#deploying_menu ul.menu li').length;\n\n var pending_label = Lang.nav.multi_pending.replace('%s', pending);\n if (pending === 0) {\n $('#pending_menu').hide();\n }\n else if (pending === 1) {\n pending_label = Lang.nav.single_pending;\n }\n\n var deploying_label = Lang.nav.multi_running.replace('%s', deploying);\n if (deploying === 0) {\n $('#deploying_menu').hide();\n }\n else if (deploying === 1) {\n deploying_label = Lang.nav.single_running;\n }\n\n $('#deploying_menu span.label-warning').html(deploying);\n $('#deploying_menu .header').text(deploying_label);\n\n $('#pending_menu span.label-info').html(pending);\n $('#pending_menu .header').text(pending_label);\n }\n\n $(document).ready(function () {\n if ($('#pending_menu ul.menu li').length > 0) {\n $('#pending_menu').show();\n }\n\n if ($('#deploying_menu ul.menu li').length > 0) {\n $('#deploying_menu').show();\n }\n });\n\n})(jQuery);\n","var app = app || {};\n\n(function ($) {\n $('.deployment-source:radio').on('change', function (event) {\n var target = $(event.currentTarget);\n\n $('input[type=text].deployment-source').hide();\n if (target.val() === 'branch') {\n $('#deployment_branch').show();\n } else if (target.val() === 'tag') {\n $('#deployment_tag').show();\n }\n });\n\n $('#reason').on('show.bs.modal', function (event) {\n var modal = $(this);\n $('.callout-danger', modal).hide();\n });\n\n $('#reason button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n var source = $('input[name=source]:checked').val();\n\n $('.has-error', source).removeClass('has-error');\n\n if (source === 'branch' || source === 'tag') {\n if ($('#deployment_' + source).val() === '') {\n $('#deployment_' + source).parentsUntil('div').addClass('has-error');\n\n $('.callout-danger', dialog).show();\n event.stopPropagation();\n return;\n }\n }\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n $('button.close', dialog).hide();\n });\n\n // FIXME: This seems very wrong\n $('#project').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n $('#template-list', modal).hide();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#template-list', modal).show();\n $('#project_id').val('');\n $('#project_name').val('');\n $('#project_repository').val('');\n $('#project_branch').val('master');\n $('#project_group_id').val($(\"#project_group_id option:first\").val());\n $('#project_builds_to_keep').val(10);\n $('#project_url').val('');\n $('#project_build_url').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#project button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project = app.Projects.get($('#project_id').val());\n\n project.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#project button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project_id = $('#project_id').val();\n\n if (project_id) {\n var project = app.Projects.get(project_id);\n } else {\n var project = new app.Project();\n }\n\n project.save({\n name: $('#project_name').val(),\n repository: $('#project_repository').val(),\n branch: $('#project_branch').val(),\n group_id: $('#project_group_id').val(),\n builds_to_keep: $('#project_builds_to_keep').val(),\n url: $('#project_url').val(),\n build_url: $('#project_build_url').val(),\n template_id: $('#project_template_id') ? $('#project_template_id').val() : null\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!project_id) {\n app.Projects.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Project = Backbone.Model.extend({\n urlRoot: '/admin/projects'\n });\n\n var Projects = Backbone.Collection.extend({\n model: app.Project\n });\n\n app.Projects = new Projects();\n\n app.ProjectsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#project_list tbody');\n\n $('#project_list').hide();\n $('#no_projects').show();\n\n this.listenTo(app.Projects, 'add', this.addOne);\n this.listenTo(app.Projects, 'reset', this.addAll);\n this.listenTo(app.Projects, 'remove', this.addAll);\n this.listenTo(app.Projects, 'all', this.render);\n\n app.listener.on('project:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var project = app.Projects.get(parseInt(data.model.id));\n\n if (project) {\n project.set(data.model);\n }\n });\n\n app.listener.on('project:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n app.Projects.add(data.model);\n });\n\n app.listener.on('project:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var project = app.Projects.get(parseInt(data.model.id));\n\n if (project) {\n app.Projects.remove(project);\n }\n\n $('#project_' + data.model.id).parent('li').remove();\n\n if (parseInt(data.model.id) === parseInt(app.project_id)) {\n window.location.href = '/';\n }\n });\n },\n render: function () {\n if (app.Projects.length) {\n $('#no_projects').hide();\n $('#project_list').show();\n } else {\n $('#no_projects').show();\n $('#project_list').hide();\n }\n },\n addOne: function (project) {\n var view = new app.ProjectView({ \n model: project\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Projects.each(this.addOne, this);\n }\n });\n\n app.ProjectView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editProject'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#project-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.deploy = data.last_run ? moment(data.last_run).format('Do MMM YYYY h:mm:ss A') : false;\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editProject: function() {\n $('#project_id').val(this.model.id);\n $('#project_name').val(this.model.get('name'));\n $('#project_repository').val(this.model.get('repository'));\n $('#project_branch').val(this.model.get('branch'));\n $('#project_group_id').val(this.model.get('group_id'));\n $('#project_builds_to_keep').val(this.model.get('builds_to_keep'));\n $('#project_url').val(this.model.get('url'));\n $('#project_build_url').val(this.model.get('build_url'));\n }\n });\n\n $('#new_webhook').on('click', function(event) {\n var target = $(event.currentTarget);\n var project_id = target.data('project-id');\n var icon = $('i', target);\n\n if ($('.fa-spin', target).length > 0) {\n return;\n }\n\n target.attr('disabled', 'disabled');\n\n icon.addClass('fa-spin');\n\n $.ajax({\n type: 'GET',\n url: '/webhook/' + project_id + '/refresh'\n }).fail(function (response) {\n\n }).done(function (data) {\n $('#webhook').html(data.url);\n }).always(function () {\n icon.removeClass('fa-spin');\n target.removeAttr('disabled');\n });\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#template').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#template_id').val('');\n $('#template_name').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#template button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var template = app.Templates.get($('#template_id').val());\n\n template.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#template button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var template_id = $('#template_id').val();\n\n if (template_id) {\n var template = app.Templates.get(template_id);\n } else {\n var template = new app.Template();\n }\n\n template.save({\n name: $('#template_name').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!template_id) {\n app.Templates.add(response);\n\n window.location.href = '/admin/templates/' + response.id;\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Template = Backbone.Model.extend({\n urlRoot: '/admin/templates'\n });\n\n var Templates = Backbone.Collection.extend({\n model: app.Template\n });\n\n app.Templates = new Templates();\n\n app.TemplatesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#template_list tbody');\n\n $('#template_list').hide();\n $('#no_templates').show();\n\n this.listenTo(app.Templates, 'add', this.addOne);\n this.listenTo(app.Templates, 'reset', this.addAll);\n this.listenTo(app.Templates, 'remove', this.addAll);\n this.listenTo(app.Templates, 'all', this.render);\n\n app.listener.on('template:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var template = app.Templates.get(parseInt(data.model.id));\n\n if (template) {\n template.set(data.model);\n }\n });\n\n app.listener.on('template:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n app.Templates.add(data.model);\n });\n\n app.listener.on('template:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var template = app.Templates.get(parseInt(data.model.id));\n\n if (template) {\n app.Templates.remove(template);\n }\n });\n },\n render: function () {\n if (app.Templates.length) {\n $('#no_templates').hide();\n $('#template_list').show();\n } else {\n $('#no_templates').show();\n $('#template_list').hide();\n }\n },\n addOne: function (template) {\n var view = new app.TemplateView({ \n model: template\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Templates.each(this.addOne, this);\n }\n });\n\n app.TemplateView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editTemplate'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#template-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editTemplate: function() {\n $('#template_id').val(this.model.id);\n $('#template_name').val(this.model.get('name'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var SUCCESSFUL = 0;\n var UNTESTED = 1;\n var FAILED = 2;\n var TESTING = 3;\n\n $('#server_list table').sortable({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n placeholder: '',\n delay: 500,\n onDrop: function (item, container, _super) {\n _super(item, container);\n\n var ids = [];\n $('tbody tr td:first-child', container.el[0]).each(function (idx, element) {\n ids.push($(element).data('server-id'));\n });\n\n $.ajax({ \n url: '/servers/reorder',\n method: 'POST',\n data: {\n servers: ids\n }\n });\n }\n });\n\n\n // FIXME: This seems very wrong\n $('#server').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.servers.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n $('#add-server-command', modal).hide();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.servers.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#server_id').val('');\n $('#server_name').val('');\n $('#server_address').val('');\n $('#server_port').val('22');\n $('#server_user').val('');\n $('#server_path').val('');\n $('#server_deploy_code').prop('checked', true);\n $('#add-server-command', modal).show();\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#server button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var server = app.Servers.get($('#server_id').val());\n\n server.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#server button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var server_id = $('#server_id').val();\n\n if (server_id) {\n var server = app.Servers.get(server_id);\n } else {\n var server = new app.Server();\n }\n\n server.save({\n name: $('#server_name').val(),\n ip_address: $('#server_address').val(),\n port: $('#server_port').val(),\n user: $('#server_user').val(),\n path: $('#server_path').val(),\n deploy_code: $('#server_deploy_code').is(':checked'),\n project_id: $('input[name=\"project_id\"]').val(),\n add_commands: $('#server_commands').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!server_id) {\n app.Servers.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n\n\n\n\n\n app.Server = Backbone.Model.extend({\n urlRoot: '/servers'\n });\n\n var Servers = Backbone.Collection.extend({\n model: app.Server,\n comparator: function(serverA, serverB) {\n if (serverA.get('name') > serverB.get('name')) {\n return -1; // before\n } else if (serverA.get('name') < serverB.get('name')) {\n return 1; // after\n }\n\n return 0; // equal\n }\n });\n\n app.Servers = new Servers();\n\n app.ServersTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#server_list tbody');\n\n $('#no_servers').show();\n $('#server_list').hide();\n\n this.listenTo(app.Servers, 'add', this.addOne);\n this.listenTo(app.Servers, 'reset', this.addAll);\n this.listenTo(app.Servers, 'remove', this.addAll);\n this.listenTo(app.Servers, 'all', this.render);\n\n app.listener.on('server:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var server = app.Servers.get(parseInt(data.model.id));\n\n if (server) {\n server.set(data.model);\n }\n });\n\n app.listener.on('server:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Servers.add(data.model);\n }\n });\n\n app.listener.on('server:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var server = app.Servers.get(parseInt(data.model.id));\n\n if (server) {\n app.Servers.remove(server);\n }\n });\n },\n render: function () {\n if (app.Servers.length) {\n $('#no_servers').hide();\n $('#server_list').show();\n } else {\n $('#no_servers').show();\n $('#server_list').hide();\n }\n },\n addOne: function (server) {\n\n var view = new app.ServerView({ \n model: server\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Servers.each(this.addOne, this);\n }\n });\n\n app.ServerView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-test': 'testConnection',\n 'click .btn-edit': 'editServer'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#server-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'primary';\n data.icon_css = 'question';\n data.status = Lang.servers.status.untested;\n\n if (parseInt(this.model.get('status')) === SUCCESSFUL) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.servers.status.successful;\n } else if (parseInt(this.model.get('status')) === TESTING) {\n data.status_css = 'warning';\n data.icon_css = 'spinner fa-pulse';\n data.status = Lang.servers.status.testing;\n } else if (parseInt(this.model.get('status')) === FAILED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.servers.status.failed;\n }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editServer: function() {\n // FIXME: Sure this is wrong?\n $('#server_id').val(this.model.id);\n $('#server_name').val(this.model.get('name'));\n $('#server_address').val(this.model.get('ip_address'));\n $('#server_port').val(this.model.get('port'));\n $('#server_user').val(this.model.get('user'));\n $('#server_path').val(this.model.get('path'));\n\n $('#server_deploy_code').prop('checked', (this.model.get('deploy_code') === true));\n },\n testConnection: function() {\n if (parseInt(this.model.get('status')) === TESTING) {\n return;\n }\n\n this.model.set({\n status: TESTING\n });\n\n var that = this;\n $.ajax({\n type: 'GET',\n url: this.model.urlRoot + '/' + this.model.id + '/test'\n }).fail(function (response) {\n that.model.set({\n status: FAILED\n });\n });\n\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var OK = 0;\n var UNTESTED = 1;\n var MISSING = 2;\n\n // FIXME: This seems very wrong\n $('#heartbeat').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.heartbeats.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.heartbeats.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#heartbeat_id').val('');\n $('#heartbeat_name').val('');\n $('#heartbeat_interval_30').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#heartbeat button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var heartbeat = app.Heartbeats.get($('#heartbeat_id').val());\n\n heartbeat.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#heartbeat button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var heartbeat_id = $('#heartbeat_id').val();\n\n if (heartbeat_id) {\n var heartbeat = app.Heartbeats.get(heartbeat_id);\n } else {\n var heartbeat = new app.Heartbeat();\n }\n\n heartbeat.save({\n name: $('#heartbeat_name').val(),\n interval: parseInt($('input[name=interval]:checked').val()),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!heartbeat_id) {\n app.Heartbeats.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Heartbeat = Backbone.Model.extend({\n urlRoot: '/heartbeats'\n });\n\n var Heartbeats = Backbone.Collection.extend({\n model: app.Heartbeat,\n comparator: function(heartbeatA, heartbeatB) {\n if (heartbeatA.get('name') > heartbeatB.get('name')) {\n return -1; // before\n } else if (heartbeatA.get('name') < heartbeatB.get('name')) {\n return 1; // after\n }\n\n return 0; // equal\n }\n });\n\n app.Heartbeats = new Heartbeats();\n\n app.HeartbeatsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#heartbeat_list tbody');\n\n $('#no_heartbeats').show();\n $('#heartbeat_list').hide();\n\n this.listenTo(app.Heartbeats, 'add', this.addOne);\n this.listenTo(app.Heartbeats, 'reset', this.addAll);\n this.listenTo(app.Heartbeats, 'remove', this.addAll);\n this.listenTo(app.Heartbeats, 'all', this.render);\n\n app.listener.on('heartbeat:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var heartbeat = app.Heartbeats.get(parseInt(data.model.id));\n\n if (heartbeat) {\n heartbeat.set(data.model);\n }\n });\n\n app.listener.on('heartbeat:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Heartbeats.add(data.model);\n }\n });\n\n app.listener.on('heartbeat:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var heartbeat = app.Heartbeats.get(parseInt(data.model.id));\n\n if (heartbeat) {\n app.Heartbeats.remove(heartbeat);\n }\n });\n },\n render: function () {\n if (app.Heartbeats.length) {\n $('#no_heartbeats').hide();\n $('#heartbeat_list').show();\n } else {\n $('#no_heartbeats').show();\n $('#heartbeat_list').hide();\n }\n },\n addOne: function (heartbeat) {\n\n var view = new app.HeartbeatView({ \n model: heartbeat\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Heartbeats.each(this.addOne, this);\n }\n });\n\n app.HeartbeatView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editHeartbeat'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#heartbeat-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'primary';\n data.icon_css = 'question';\n data.status = Lang.heartbeats.status.untested;\n data.has_run = false;\n\n if (parseInt(this.model.get('status')) === OK) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.heartbeats.status.ok;\n data.has_run = true;\n } else if (parseInt(this.model.get('status')) === MISSING) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.heartbeats.status.missing;\n data.has_run = data.last_activity ? true : false;\n }\n\n data.interval_label = Lang.heartbeats.intervals[data.interval];\n\n data.formatted_date = '';\n if (data.has_run) {\n data.formatted_date = moment(data.last_activity).format('Do MMM YYYY h:mm:ss A');\n }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editHeartbeat: function() {\n // FIXME: Sure this is wrong?\n $('#heartbeat_id').val(this.model.id);\n $('#heartbeat_name').val(this.model.get('name'));\n $('#heartbeat_interval_' + this.model.get('interval')).prop('checked', true);\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#notification').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.notifications.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.notifications.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#notification_id').val('');\n $('#notification_name').val('');\n $('#notification_webhook').val('');\n $('#notification_channel').val('');\n $('#notification_icon').val('');\n $('#notification_failure_only').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#notification button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notification = app.Notifications.get($('#notification_id').val());\n\n notification.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#notification button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notification_id = $('#notification_id').val();\n\n if (notification_id) {\n var notification = app.Notifications.get(notification_id);\n } else {\n var notification = new app.Notification();\n }\n\n notification.save({\n name: $('#notification_name').val(),\n webhook: $('#notification_webhook').val(),\n channel: $('#notification_channel').val(),\n icon: $('#notification_icon').val(),\n project_id: $('input[name=\"project_id\"]').val(),\n failure_only: $('#notification_failure_only').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!notification_id) {\n app.Notifications.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n\n\n app.Notification = Backbone.Model.extend({\n urlRoot: '/notifications'\n });\n\n var Notifications = Backbone.Collection.extend({\n model: app.Notification\n });\n\n app.Notifications = new Notifications();\n\n app.NotificationsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#notification_list tbody');\n\n $('#no_notifications').show();\n $('#notification_list').hide();\n\n this.listenTo(app.Notifications, 'add', this.addOne);\n this.listenTo(app.Notifications, 'reset', this.addAll);\n this.listenTo(app.Notifications, 'remove', this.addAll);\n this.listenTo(app.Notifications, 'all', this.render);\n\n\n app.listener.on('notification:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var notification = app.Notifications.get(parseInt(data.model.id));\n\n if (server) {\n notification.set(data.model);\n }\n });\n\n app.listener.on('notification:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.Notifications.add(data.model);\n }\n });\n\n app.listener.on('notification:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var notification = app.Notifications.get(parseInt(data.model.id));\n\n if (notification) {\n app.Notifications.remove(notification);\n }\n });\n },\n render: function () {\n if (app.Notifications.length) {\n $('#no_notifications').hide();\n $('#notification_list').show();\n } else {\n $('#no_notifications').show();\n $('#notification_list').hide();\n }\n },\n addOne: function (notification) {\n\n var view = new app.NotificationView({ \n model: notification\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Notifications.each(this.addOne, this);\n }\n });\n\n app.NotificationView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editNotification'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#notification-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editNotification: function() {\n // FIXME: Sure this is wrong?\n $('#notification_id').val(this.model.id);\n $('#notification_name').val(this.model.get('name'));\n $('#notification_webhook').val(this.model.get('webhook'));\n $('#notification_channel').val(this.model.get('channel'));\n $('#notification_icon').val(this.model.get('icon'));\n $('#notification_failure_only').prop('checked', (this.model.get('failure_only') === true));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#notifyemail').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.notifyEmails.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.notifyEmails.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#notifyemail_id').val('');\n $('#notifyemail_name').val('');\n $('#notifyemail_address').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#notifyemail button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.NotifyEmails.get($('#notifyemail_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#notifyemail button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var notifyemail_id = $('#notifyemail_id').val();\n\n if (notifyemail_id) {\n var file = app.NotifyEmails.get(notifyemail_id);\n } else {\n var file = new app.NotifyEmail();\n }\n\n file.save({\n name: $('#notifyemail_name').val(),\n email: $('#notifyemail_address').val(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!notifyemail_id) {\n app.NotifyEmails.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.NotifyEmail = Backbone.Model.extend({\n urlRoot: '/notify-email'\n });\n\n var NotifyEmails = Backbone.Collection.extend({\n model: app.NotifyEmail\n });\n\n app.NotifyEmails = new NotifyEmails();\n\n app.NotifyEmailsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#notifyemail_list tbody');\n\n $('#no_notifyemails').show();\n $('#notifyemail_list').hide();\n\n this.listenTo(app.NotifyEmails, 'add', this.addOne);\n this.listenTo(app.NotifyEmails, 'reset', this.addAll);\n this.listenTo(app.NotifyEmails, 'remove', this.addAll);\n this.listenTo(app.NotifyEmails, 'all', this.render);\n\n app.listener.on('notifyemail:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var email = app.NotifyEmails.get(parseInt(data.model.id));\n\n if (server) {\n email.set(data.model);\n }\n });\n\n app.listener.on('notifyemail:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.NotifyEmails.add(data.model);\n }\n });\n\n app.listener.on('notifyemail:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var email = app.NotifyEmails.get(parseInt(data.model.id));\n\n if (email) {\n app.NotifyEmails.remove(email);\n }\n });\n },\n render: function () {\n if (app.NotifyEmails.length) {\n $('#no_notifyemails').hide();\n $('#notifyemail_list').show();\n } else {\n $('#no_notifyemails').show();\n $('#notifyemail_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.EmailView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.NotifyEmails.each(this.addOne, this);\n }\n });\n\n app.EmailView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editEmail'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#notifyemail-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editEmail: function() {\n // FIXME: Sure this is wrong?\n $('#notifyemail_id').val(this.model.id);\n $('#notifyemail_name').val(this.model.get('name'));\n $('#notifyemail_address').val(this.model.get('email'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#sharefile').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.sharedFiles.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.sharedFiles.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#file_id').val('');\n $('#name').val('');\n $('#file').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#sharefile button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.SharedFiles.get($('#file_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#sharefile button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file_id = $('#file_id').val();\n\n if (file_id) {\n var file = app.SharedFiles.get(file_id);\n } else {\n var file = new app.SharedFile();\n }\n\n file.save({\n name: $('#name').val(),\n file: $('#file').val(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!file_id) {\n app.SharedFiles.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.SharedFile = Backbone.Model.extend({\n urlRoot: '/shared-files'\n });\n\n var SharedFiles = Backbone.Collection.extend({\n model: app.SharedFile\n });\n\n app.SharedFiles = new SharedFiles();\n\n app.SharedFilesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#file_list tbody');\n\n $('#no_files').show();\n $('#file_list').hide();\n\n this.listenTo(app.SharedFiles, 'add', this.addOne);\n this.listenTo(app.SharedFiles, 'reset', this.addAll);\n this.listenTo(app.SharedFiles, 'remove', this.addAll);\n this.listenTo(app.SharedFiles, 'all', this.render);\n\n app.listener.on('sharedfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var share = app.SharedFiles.get(parseInt(data.model.id));\n\n if (share) {\n share.set(data.model);\n }\n });\n\n app.listener.on('sharedfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.SharedFiles.add(data.model);\n }\n });\n\n app.listener.on('sharedfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var share = app.SharedFiles.get(parseInt(data.model.id));\n\n if (share) {\n app.SharedFiles.remove(share);\n }\n });\n },\n render: function () {\n if (app.SharedFiles.length) {\n $('#no_files').hide();\n $('#file_list').show();\n } else {\n $('#no_files').show();\n $('#file_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.FileView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.SharedFiles.each(this.addOne, this);\n }\n });\n\n app.FileView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editFile'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#files-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editFile: function() {\n // FIXME: Sure this is wrong?\n $('#file_id').val(this.model.id);\n $('#name').val(this.model.get('name'));\n $('#file').val(this.model.get('file'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n\n var editor;\n var previewfile;\n\n $('#projectfile, #view-projectfile').on('hidden.bs.modal', function (event) {\n editor.destroy();\n });\n\n $('#view-projectfile').on('show.bs.modal', function (event) {\n editor = ace.edit('preview-content');\n editor.setReadOnly(true);\n editor.getSession().setUseWrapMode(true);\n\n var extension = previewfile.substr(previewfile.lastIndexOf('.') + 1).toLowerCase();\n\n if (extension === 'php' || extension === 'ini') {\n editor.getSession().setMode('ace/mode/' + extension);\n } else if (extension === 'yml') {\n editor.getSession().setMode('ace/mode/yaml');\n }\n });\n\n // FIXME: This seems very wrong\n $('#projectfile').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.projectFiles.create;\n\n editor = ace.edit('project-file-content');\n\n var filename = $('#project-file-path').val();\n var extension = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase();\n\n if (extension === 'php' || extension === 'ini') {\n editor.getSession().setMode('ace/mode/' + extension);\n } else if (extension === 'yml') {\n editor.getSession().setMode('ace/mode/yaml');\n }\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.projectFiles.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#project_file_id').val('');\n $('#project-file-name').val('');\n $('#project-file-path').val('');\n editor.setValue('');\n editor.gotoLine(1);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n\n // FIXME: This seems very wrong\n $('#projectfile button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var file = app.ProjectFiles.get($('#project_file_id').val());\n\n file.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#projectfile button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var project_file_id = $('#project_file_id').val();\n\n if (project_file_id) {\n var file = app.ProjectFiles.get(project_file_id);\n } else {\n var file = new app.ProjectFile();\n }\n\n file.save({\n name: $('#project-file-name').val(),\n path: $('#project-file-path').val(),\n content: editor.getValue(),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!project_file_id) {\n app.ProjectFiles.add(response);\n }\n\n editor.setValue('');\n editor.gotoLine(1);\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.ProjectFile = Backbone.Model.extend({\n urlRoot: '/project-file'\n });\n\n var ProjectFiles = Backbone.Collection.extend({\n model: app.ProjectFile\n });\n\n app.ProjectFiles = new ProjectFiles();\n\n app.ProjectFilesTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#projectfile_list tbody');\n\n $('#no_projectfiles').show();\n $('#projectfile_list').hide();\n\n this.listenTo(app.ProjectFiles, 'add', this.addOne);\n this.listenTo(app.ProjectFiles, 'reset', this.addAll);\n this.listenTo(app.ProjectFiles, 'remove', this.addAll);\n this.listenTo(app.ProjectFiles, 'all', this.render);\n\n app.listener.on('projectfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var file = app.ProjectFiles.get(parseInt(data.model.id));\n\n if (file) {\n file.set(data.model);\n }\n });\n\n app.listener.on('projectfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.ProjectFiles.add(data.model);\n }\n });\n\n app.listener.on('projectfile:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var file = app.ProjectFiles.get(parseInt(data.model.id));\n\n if (file) {\n app.ProjectFiles.remove(file);\n }\n });\n },\n render: function () {\n if (app.ProjectFiles.length) {\n $('#no_projectfiles').hide();\n $('#projectfile_list').show();\n } else {\n $('#no_projectfiles').show();\n $('#projectfile_list').hide();\n }\n },\n addOne: function (file) {\n\n var view = new app.ProjectFileView({ \n model: file\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.ProjectFiles.each(this.addOne, this);\n }\n });\n\n app.ProjectFileView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editFile',\n 'click .btn-view': 'viewFile'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#project-files-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n viewFile: function() {\n previewfile = this.model.get('path');\n $('#preview-content').text(this.model.get('content'));\n },\n editFile: function() {\n // FIXME: Sure this is wrong?\n $('#project_file_id').val(this.model.id);\n $('#project-file-name').val(this.model.get('name'));\n $('#project-file-path').val(this.model.get('path'));\n $('#project-file-content').text(this.model.get('content'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var SUCCESS = 0;\n var FAILED = 1;\n\n $('#checkurl').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.CheckUrls.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.CheckUrls.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#url_id').val('');\n $('#title').val('');\n $('#url').val('');\n $('#period_5').prop('checked', true);\n //$('#is_report').prop('checked', false);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n $('#checkurl button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var url = app.CheckUrls.get($('#url_id').val());\n\n url.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n $('#checkurl button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var url_id = $('#url_id').val();\n\n if (url_id) {\n var url = app.CheckUrls.get(url_id);\n } else {\n var url = new app.CheckUrl();\n }\n\n url.save({\n title: $('#title').val(),\n url: $('#url').val(),\n is_report: true, // $('#is_report').prop('checked'),\n period: parseInt($('input[name=period]:checked').val()),\n project_id: $('input[name=\"project_id\"]').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!url_id) {\n app.CheckUrls.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.CheckUrl = Backbone.Model.extend({\n urlRoot: '/check-url'\n });\n\n var CheckUrls = Backbone.Collection.extend({\n model: app.CheckUrl\n });\n\n app.CheckUrls = new CheckUrls();\n\n app.CheckUrlsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#checkurl_list tbody');\n\n $('#no_checkurls').show();\n $('#checkurl_list').hide();\n\n this.listenTo(app.CheckUrls, 'add', this.addOne);\n this.listenTo(app.CheckUrls, 'reset', this.addAll);\n this.listenTo(app.CheckUrls, 'remove', this.addAll);\n this.listenTo(app.CheckUrls, 'all', this.render);\n\n app.listener.on('checkurl:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var link = app.CheckUrls.get(parseInt(data.model.id));\n\n if (link) {\n link.set(data.model);\n }\n });\n\n app.listener.on('checkurl:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n app.CheckUrls.add(data.model);\n }\n });\n\n app.listener.on('checkurl:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var link = app.CheckUrls.get(parseInt(data.model.id));\n\n if (link) {\n app.CheckUrls.remove(link);\n }\n });\n },\n render: function () {\n if (app.CheckUrls.length) {\n $('#no_checkurls').hide();\n $('#checkurl_list').show();\n } else {\n $('#no_checkurls').show();\n $('#checkurl_list').hide();\n }\n },\n addOne: function (url) {\n var view = new app.CheckUrlView({ \n model: url\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.CheckUrls.each(this.addOne, this);\n }\n });\n\n app.CheckUrlView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editUrl'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#checkUrls-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n if (parseInt(data.last_status) === FAILED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n data.status = Lang.CheckUrls.failure;\n } else {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.CheckUrls.success;\n }\n\n data.interval_label = data.period + ' ' + Lang.CheckUrls.length;\n\n // data.report = Lang.CheckUrls.no;\n\n // if (data.is_report) {\n // data.report = Lang.CheckUrls.yes;\n // }\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editUrl: function() {\n $('#url_id').val(this.model.id);\n $('#title').val(this.model.get('title'));\n $('#url').val(this.model.get('url'));\n $('#period_' + this.model.get('period')).prop('checked', true);\n $('#is_report').prop('checked', this.model.get('is_report'));\n }\n });\n\n})(jQuery);","var app = app || {};\n\n(function ($) {\n var COMPLETED = 0;\n var PENDING = 1;\n var RUNNING = 2;\n var FAILED = 3;\n var CANCELLED = 4;\n\n $('#log').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var log_id = button.attr('id').replace('log_', '');\n\n var step = $('h3 span', button.parents('.box')).text();\n var modal = $(this);\n var log = $('pre', modal);\n var loader = $('#loading', modal);\n\n log.hide();\n loader.show();\n\n $('#action', modal).text(step);\n log.text('');\n\n $.ajax({\n type: 'GET',\n url: '/log/' + log_id\n }).done(function (data) {\n var output = data.output;\n // FIXME: There has to be a cleaner way to do this surely?\n output = output.replace(/<\\/error>/g, '')\n output = output.replace(/<\\/info>/g, '');\n output = output.replace(//g, '')\n output = output.replace(//g, '');\n\n log.html(output);\n\n log.show();\n loader.hide();\n }).fail(function() {\n\n }).always(function() {\n\n });\n });\n\n app.ServerLog = Backbone.Model.extend({\n urlRoot: '/status'\n });\n\n var Deployment = Backbone.Collection.extend({\n model: app.ServerLog\n });\n\n app.Deployment = new Deployment();\n\n app.DeploymentView = Backbone.View.extend({\n el: '#app',\n $containers: [],\n events: {\n\n },\n initialize: function() {\n var that = this;\n $('.deploy-step tbody').each(function(index, element) {\n that.$containers.push({\n step: parseInt($(element).attr('id').replace('step_', '')),\n element: element\n })\n });\n\n this.listenTo(app.Deployment, 'add', this.addOne);\n this.listenTo(app.Deployment, 'reset', this.addAll);\n this.listenTo(app.Deployment, 'remove', this.addAll);\n this.listenTo(app.Deployment, 'all', this.render);\n\n app.listener.on('serverlog:REBELinBLUE\\\\Deployer\\\\Events\\\\ServerLogChanged', function (data) {\n var deployment = app.Deployment.get(data.log_id);\n\n if (deployment) {\n deployment.set({\n status: data.status,\n output: data.output,\n runtime: data.runtime,\n started_at: data.started_at ? data.started_at : false,\n finished_at: data.finished_at ? data.finished_at : false\n });\n\n // FIXME: If cancelled update all other deployments straight away\n // FIXME: If completed fake making the next model \"running\" so it looks responsive\n }\n });\n\n app.listener.on('deployment:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n if (data.model.repo_failure) {\n $('#repository_error').show();\n }\n }\n });\n\n },\n addOne: function (step) {\n var view = new app.LogView({\n model: step\n });\n\n var found = _.find(this.$containers, function(element) {\n return parseInt(element.step) === parseInt(step.get('deploy_step_id'));\n });\n\n $(found.element).append(view.render().el);\n\n },\n addAll: function () {\n $(this.$containers).each(function (index, element) {\n element.html('');\n });\n\n app.Commands.each(this.addOne, this);\n }\n });\n\n app.LogView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n //'click .btn-log': 'showLog',\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#log-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.status_css = 'info';\n data.icon_css = 'clock-o';\n data.status = Lang.status.pending;\n\n if (parseInt(this.model.get('status')) === COMPLETED) {\n data.status_css = 'success';\n data.icon_css = 'check';\n data.status = Lang.status.completed;\n } else if (parseInt(this.model.get('status')) === RUNNING) {\n data.status_css = 'warning';\n data.icon_css = 'spinner fa-spin';\n data.status = Lang.status.running;\n } else if (parseInt(this.model.get('status')) === FAILED || parseInt(this.model.get('status')) === CANCELLED) {\n data.status_css = 'danger';\n data.icon_css = 'warning';\n\n data.status = Lang.status.failed;\n if (parseInt(this.model.get('status')) === CANCELLED) {\n data.status = Lang.status.cancelled;\n }\n }\n\n data.formatted_start_time = data.started_at ? moment(data.started_at).format('h:mm:ss A') : false;\n data.formatted_end_time = data.finished_at ? moment(data.finished_at).format('h:mm:ss A') : false;\n\n this.$el.html(this.template(data));\n\n return this;\n }\n });\n})(jQuery);\n","var app = app || {};\n\n(function ($) {\n $('.command-list table').sortable({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n placeholder: '',\n delay: 500,\n onDrop: function (item, container, _super) {\n _super(item, container);\n\n var ids = [];\n $('tbody tr td:first-child', container.el[0]).each(function (idx, element) {\n ids.push($(element).data('command-id'));\n });\n\n $.ajax({ \n url: '/commands/reorder',\n method: 'POST',\n data: {\n commands: ids\n }\n });\n }\n });\n\n var editor;\n\n $('#command').on('hidden.bs.modal', function (event) {\n editor.destroy();\n });\n\n // FIXME: This seems very wrong\n $('#command').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n editor = ace.edit('command_script');\n editor.getSession().setMode('ace/mode/sh');\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#command_id').val('');\n $('#command_step').val(button.data('step'));\n $('#command_name').val('');\n editor.setValue('');\n editor.gotoLine(1);\n $('#command_user').val('');\n $('#command_optional').val('');\n $('#command_default_on').val('');\n $('#command_default_on_row').addClass('hide');\n\n $('.command-server').prop('checked', true);\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#command button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var command = app.Commands.get($('#command_id').val());\n\n command.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n $('#command_optional').on('change', function (event) {\n $('#command_default_on_row').addClass('hide');\n if ($(this).is(':checked') === true) {\n $('#command_default_on_row').removeClass('hide');\n }\n });\n\n // FIXME: This seems very wrong\n $('#command button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find(':input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var command_id = $('#command_id').val();\n\n if (command_id) {\n var command = app.Commands.get(command_id);\n } else {\n var command = new app.Command();\n }\n\n var server_ids = [];\n\n $('.command-server:checked').each(function() {\n server_ids.push($(this).val());\n });\n\n command.save({\n name: $('#command_name').val(),\n script: editor.getValue(),\n user: $('#command_user').val(),\n step: $('#command_step').val(),\n project_id: $('input[name=\"project_id\"]').val(),\n servers: server_ids,\n optional: $('#command_optional').is(':checked'),\n default_on: $('#command_default_on').is(':checked')\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find(':input').removeAttr('disabled');\n\n if (!command_id) {\n app.Commands.add(response);\n }\n\n editor.setValue('');\n editor.gotoLine(1);\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find(':input').removeAttr('disabled');\n }\n });\n });\n\n app.Command = Backbone.Model.extend({\n urlRoot: '/commands',\n defaults: function() {\n return {\n order: app.Commands.nextOrder()\n };\n },\n isAfter: function() {\n return (parseInt(this.get('step')) % 3 === 0);\n }\n });\n\n var Commands = Backbone.Collection.extend({\n model: app.Command,\n comparator: 'order',\n nextOrder: function() {\n if (!this.length) {\n return 1;\n }\n \n return this.last().get('order') + 1;\n }\n });\n\n app.Commands = new Commands();\n\n app.CommandsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$beforeList = $('#commands-before .command-list tbody');\n this.$afterList = $('#commands-after .command-list tbody');\n\n $('.no-commands').show();\n $('.command-list').hide();\n\n this.listenTo(app.Commands, 'add', this.addOne);\n this.listenTo(app.Commands, 'reset', this.addAll);\n this.listenTo(app.Commands, 'remove', this.addAll);\n this.listenTo(app.Commands, 'all', this.render);\n\n // FIXME: Need to regenerate the order!\n\n app.listener.on('command:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var command = app.Commands.get(parseInt(data.model.id));\n\n if (command) {\n command.set(data.model);\n }\n });\n\n app.listener.on('command:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n if (parseInt(data.model.project_id) === parseInt(app.project_id)) {\n\n // Make sure the command is for this action (clone, install, activate, purge)\n if (parseInt(data.model.step) + 1 === parseInt(app.command_action) || parseInt(data.model.step) - 1 === parseInt(app.command_action)) {\n app.Commands.add(data.model);\n }\n }\n });\n\n app.listener.on('command:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var command = app.Commands.get(parseInt(data.model.id));\n\n if (command) {\n app.Commands.remove(command);\n }\n });\n },\n render: function () {\n var before = app.Commands.find(function(model) { \n return !model.isAfter();\n });\n\n if (typeof before !== 'undefined') {\n $('#commands-before .no-commands').hide();\n $('#commands-before .command-list').show();\n } else {\n $('#commands-before .no-commands').show();\n $('#commands-before .command-list').hide();\n }\n\n var after = app.Commands.find(function(model) { \n return model.isAfter();\n });\n\n if (typeof after !== 'undefined') {\n $('#commands-after .no-commands').hide();\n $('#commands-after .command-list').show();\n } else {\n $('#commands-after .no-commands').show();\n $('#commands-after .command-list').hide();\n }\n },\n addOne: function (command) {\n var view = new app.CommandView({ \n model: command\n });\n\n if (command.isAfter()) {\n this.$afterList.append(view.render().el);\n } else {\n this.$beforeList.append(view.render().el);\n }\n },\n addAll: function () {\n this.$beforeList.html('');\n this.$afterList.html('');\n app.Commands.each(this.addOne, this);\n }\n });\n\n app.CommandView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editCommand'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#command-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editCommand: function() {\n // FIXME: Sure this is wrong?\n $('#command_id').val(this.model.id);\n $('#command_step').val(this.model.get('step'));\n $('#command_name').val(this.model.get('name'));\n $('#command_script').text(this.model.get('script'));\n $('#command_user').val(this.model.get('user'));\n $('#command_optional').prop('checked', (this.model.get('optional') === true));\n $('#command_default_on').prop('checked', (this.model.get('default_on') === true));\n\n $('#command_default_on_row').addClass('hide');\n if (this.model.get('optional') === true) {\n $('#command_default_on_row').removeClass('hide');\n }\n\n $('.command-server').prop('checked', false);\n $(this.model.get('servers')).each(function (index, server) {\n $('#command_server_' + server.id).prop('checked', true);\n });\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#user').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.existing-only', modal).hide();\n $('.new-only', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n $('.existing-only', modal).show();\n } else {\n $('#user_id').val('');\n $('#user_name').val('');\n $('#user_email').val('');\n $('#user_password').val('');\n $('#user_password_confirmation').val('');\n\n $('.new-only', modal).show();\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#user button.btn-delete').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-trash');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var user = app.Users.get($('#user_id').val());\n\n user.destroy({\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n },\n error: function() {\n icon.removeClass('fa-refresh fa-spin').addClass('fa-trash');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n // FIXME: This seems very wrong\n $('#user button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var user_id = $('#user_id').val();\n\n if (user_id) {\n var user = app.Users.get(user_id);\n } else {\n var user = new app.User();\n }\n\n user.save({\n name: $('#user_name').val(),\n email: $('#user_email').val(),\n password: $('#user_password').val(),\n password_confirmation: $('#user_password_confirmation').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!user_id) {\n app.Users.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.User = Backbone.Model.extend({\n urlRoot: '/admin/users',\n initialize: function() {\n\n }\n });\n\n var Users = Backbone.Collection.extend({\n model: app.User\n });\n\n app.Users = new Users();\n\n app.UsersTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#user_list tbody');\n\n this.listenTo(app.Users, 'add', this.addOne);\n this.listenTo(app.Users, 'reset', this.addAll);\n this.listenTo(app.Users, 'remove', this.addAll);\n this.listenTo(app.Users, 'all', this.render);\n\n app.listener.on('user:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n var user = app.Users.get(parseInt(data.model.id));\n\n if (user) {\n user.set(data.model);\n }\n });\n\n app.listener.on('user:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n app.Users.add(data.model);\n });\n\n app.listener.on('user:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var user = app.Users.get(parseInt(data.model.id));\n\n if (user) {\n app.Users.remove(user);\n }\n });\n },\n addOne: function (user) {\n var view = new app.UserView({ \n model: user\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Users.each(this.addOne, this);\n }\n });\n\n app.UserView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editUser'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#user-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n data.created = moment(data.created_at).format('Do MMM YYYY h:mm:ss A');\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editUser: function() {\n $('#user_id').val(this.model.id);\n $('#user_name').val(this.model.get('name'));\n $('#user_email').val(this.model.get('email'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // FIXME: This seems very wrong\n $('#group').on('show.bs.modal', function (event) {\n var button = $(event.relatedTarget);\n var modal = $(this);\n var title = Lang.create;\n\n $('.btn-danger', modal).hide();\n $('.callout-danger', modal).hide();\n $('.has-error', modal).removeClass('has-error');\n $('.label-danger', modal).remove();\n\n if (button.hasClass('btn-edit')) {\n title = Lang.edit;\n $('.btn-danger', modal).show();\n } else {\n $('#group_id').val('');\n $('#group_name').val('');\n }\n\n modal.find('.modal-title span').text(title);\n });\n\n // FIXME: This seems very wrong\n $('#group button.btn-save').on('click', function (event) {\n var target = $(event.currentTarget);\n var icon = target.find('i');\n var dialog = target.parents('.modal');\n\n icon.addClass('fa-refresh fa-spin').removeClass('fa-save');\n dialog.find('input').attr('disabled', 'disabled');\n $('button.close', dialog).hide();\n\n var group_id = $('#group_id').val();\n\n if (group_id) {\n var group = app.Groups.get(group_id);\n } else {\n var group = new app.Group();\n }\n\n group.save({\n name: $('#group_name').val()\n }, {\n wait: true,\n success: function(model, response, options) {\n dialog.modal('hide');\n $('.callout-danger', dialog).hide();\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n\n if (!group_id) {\n app.Groups.add(response);\n }\n },\n error: function(model, response, options) {\n $('.callout-danger', dialog).show();\n\n var errors = response.responseJSON;\n\n $('.has-error', dialog).removeClass('has-error');\n $('.label-danger', dialog).remove();\n\n $('form input', dialog).each(function (index, element) {\n element = $(element);\n\n var name = element.attr('name');\n\n if (typeof errors[name] !== 'undefined') {\n var parent = element.parent('div');\n parent.addClass('has-error');\n parent.append($('').attr('class', 'label label-danger').text(errors[name]));\n }\n });\n\n icon.removeClass('fa-refresh fa-spin').addClass('fa-save');\n $('button.close', dialog).show();\n dialog.find('input').removeAttr('disabled');\n }\n });\n });\n\n app.Group = Backbone.Model.extend({\n urlRoot: '/admin/groups',\n initialize: function() {\n\n }\n });\n\n var Groups = Backbone.Collection.extend({\n model: app.Group\n });\n\n app.Groups = new Groups();\n\n app.GroupsTab = Backbone.View.extend({\n el: '#app',\n events: {\n\n },\n initialize: function() {\n this.$list = $('#group_list tbody');\n\n this.listenTo(app.Groups, 'add', this.addOne);\n this.listenTo(app.Groups, 'reset', this.addAll);\n this.listenTo(app.Groups, 'remove', this.addAll);\n this.listenTo(app.Groups, 'all', this.render);\n\n app.listener.on('group:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelChanged', function (data) {\n $('#group_' + data.model.id).html(data.model.name);\n\n var group = app.Groups.get(parseInt(data.model.id));\n\n if (group) {\n group.set(data.model);\n }\n });\n\n app.listener.on('group:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelCreated', function (data) {\n app.Groups.add(data.model);\n });\n\n app.listener.on('group:REBELinBLUE\\\\Deployer\\\\Events\\\\ModelTrashed', function (data) {\n var group = app.Groups.get(parseInt(data.model.id));\n\n if (group) {\n app.Groups.remove(group);\n }\n });\n },\n addOne: function (group) {\n\n var view = new app.GroupView({ \n model: group\n });\n\n this.$list.append(view.render().el);\n },\n addAll: function () {\n this.$list.html('');\n app.Servers.each(this.addOne, this);\n }\n });\n\n app.GroupView = Backbone.View.extend({\n tagName: 'tr',\n events: {\n 'click .btn-edit': 'editGroup'\n },\n initialize: function () {\n this.listenTo(this.model, 'change', this.render);\n this.listenTo(this.model, 'destroy', this.remove);\n\n this.template = _.template($('#group-template').html());\n },\n render: function () {\n var data = this.model.toJSON();\n\n this.$el.html(this.template(data));\n\n return this;\n },\n editGroup: function() {\n $('#group_id').val(this.model.id);\n $('#group_name').val(this.model.get('name'));\n }\n });\n})(jQuery);","var app = app || {};\n\n(function ($) {\n // Stop the uploader causing errors on pages it shouldn't be used\n if ($('#upload').length === 0) {\n return;\n }\n\n var cropperData = {};\n $('#request-change-email').on('click', function() {\n var box = $(this).parents('.box');\n box.children('.overlay').removeClass('hide');\n $.post('/profile/email', function(res) {\n if (res == 'success') {\n box.children('.overlay').addClass('hide');\n box.find('.help-block').removeClass('hide');\n }\n });\n });\n\n $('.avatar>img').cropper({\n aspectRatio: 1 / 1,\n preview: '.avatar-preview',\n crop: function(data) {\n cropperData.dataX = Math.round(data.x);\n cropperData.dataY = Math.round(data.y);\n cropperData.dataHeight = Math.round(data.height);\n cropperData.dataWidth = Math.round(data.width);\n cropperData.dataRotate = Math.round(data.rotate);\n },\n built: function() {\n $('#upload-overlay').addClass('hide');\n }\n });\n\n var uploader = new Uploader({\n trigger: '#upload',\n name: 'file',\n action: '/profile/upload',\n accept: 'image/*',\n data: {\n '_token': $('meta[name=\"token\"]').attr('content')\n },\n multiple: false,\n change: function(){\n $('#upload-overlay').removeClass('hide');\n this.submit();\n },\n error: function(file) {\n if (file.responseJSON.file) {\n alert(file.responseJSON.file.join(''));\n } else if (file.responseJSON.error) {\n alert(file.responseJSON.error.message);\n }\n\n $('#upload-overlay').addClass('hide');\n },\n success: function(response) {\n if( response.message === 'success') {\n $('.avatar>img').cropper('replace', response.image);\n cropperData.path = response.path;\n\n $('.current-avatar-preview').addClass('hide');\n $('.avatar-preview').removeClass('hide');\n $('#save-avatar').removeClass('hide');\n }\n }\n });\n\n $('#save-avatar').click(function(){\n $('#upload-overlay').removeClass('hide');\n $('.avatar-message .alert').addClass('hide');\n $.post('/profile/avatar', cropperData).success(function(resp) {\n $('#upload-overlay').addClass('hide');\n if (resp.image) {\n $('.avatar-message .alert.alert-success').removeClass('hide');\n $('#use-gravatar').removeClass('hide');\n } else {\n $('.avatar-message .alert.alert-danger').removeClass('hide');\n }\n });\n });\n\n $('#use-gravatar').click(function () {\n\n $('#upload-overlay').removeClass('hide');\n $('.avatar-message .alert').addClass('hide');\n\n $.post('/profile/gravatar').success(function(resp) {\n\n $('#upload-overlay').addClass('hide');\n\n // if (resp.image) {\n $('.avatar-message .alert.alert-success').removeClass('hide');\n $('.avatar-preview').addClass('hide');\n $('.current-avatar-preview').removeClass('hide');\n $('.current-avatar-preview').attr('src', resp.image);\n $('#use-gravatar').addClass('hide');\n $('#avatar-save-buttons button').addClass('hide');\n // } else {\n // $('.avatar-preview').addClass('hide');\n // $('#use-gravatar').removeClass('hide');\n // }\n });\n });\n})(jQuery);","/*! AdminLTE app.js\n * ================\n * Main JS application file for AdminLTE v2. This file\n * should be included in all pages. It controls some layout\n * options and implements exclusive AdminLTE plugins.\n *\n * @Author Almsaeed Studio\n * @Support \n * @Email \n * @version 2.0.4\n * @license MIT \n */\n\n'use strict';\n\n//Make sure jQuery has been loaded before app.js\nif (typeof jQuery === \"undefined\") {\n throw new Error(\"AdminLTE requires jQuery\");\n}\n\n/* AdminLTE\n *\n * @type Object\n * @description $.AdminLTE is the main object for the template's app.\n * It's used for implementing functions and options related\n * to the template. Keeping everything wrapped in an object\n * prevents conflict with other plugins and is a better\n * way to organize our code.\n */\n$.AdminLTE = {};\n\n/* --------------------\n * - AdminLTE Options -\n * --------------------\n * Modify these options to suit your implementation\n */\n$.AdminLTE.options = {\n //Add slimscroll to navbar menus\n //This requires you to load the slimscroll plugin\n //in every page before app.js\n navbarMenuSlimscroll: true,\n navbarMenuSlimscrollWidth: \"3px\", //The width of the scroll bar\n navbarMenuHeight: \"200px\", //The height of the inner menu\n //Sidebar push menu toggle button selector\n sidebarToggleSelector: \"[data-toggle='offcanvas']\",\n //Activate sidebar push menu\n sidebarPushMenu: true,\n //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)\n sidebarSlimScroll: true,\n //BoxRefresh Plugin\n enableBoxRefresh: true,\n //Bootstrap.js tooltip\n enableBSToppltip: true,\n BSTooltipSelector: \"[data-toggle='tooltip']\",\n //Enable Fast Click. Fastclick.js creates a more\n //native touch experience with touch devices. If you\n //choose to enable the plugin, make sure you load the script\n //before AdminLTE's app.js\n enableFastclick: true,\n //Box Widget Plugin. Enable this plugin\n //to allow boxes to be collapsed and/or removed\n enableBoxWidget: true,\n //Box Widget plugin options\n boxWidgetOptions: {\n boxWidgetIcons: {\n //The icon that triggers the collapse event\n collapse: 'fa fa-minus',\n //The icon that trigger the opening event\n open: 'fa fa-plus',\n //The icon that triggers the removing event\n remove: 'fa fa-times'\n },\n boxWidgetSelectors: {\n //Remove button selector\n remove: '[data-widget=\"remove\"]',\n //Collapse button selector\n collapse: '[data-widget=\"collapse\"]'\n }\n },\n //Direct Chat plugin options\n directChat: {\n //Enable direct chat by default\n enable: true,\n //The button to open and close the chat contacts pane\n contactToggleSelector: '[data-widget=\"chat-pane-toggle\"]'\n },\n //Define the set of colors to use globally around the website\n colors: {\n lightBlue: \"#3c8dbc\",\n red: \"#f56954\",\n green: \"#00a65a\",\n aqua: \"#00c0ef\",\n yellow: \"#f39c12\",\n blue: \"#0073b7\",\n navy: \"#001F3F\",\n teal: \"#39CCCC\",\n olive: \"#3D9970\",\n lime: \"#01FF70\",\n orange: \"#FF851B\",\n fuchsia: \"#F012BE\",\n purple: \"#8E24AA\",\n maroon: \"#D81B60\",\n black: \"#222222\",\n gray: \"#d2d6de\"\n },\n //The standard screen sizes that bootstrap uses.\n //If you change these in the variables.less file, change\n //them here too.\n screenSizes: {\n xs: 480,\n sm: 768,\n md: 992,\n lg: 1200\n }\n};\n\n/* ------------------\n * - Implementation -\n * ------------------\n * The next block of code implements AdminLTE's\n * functions and plugins as specified by the\n * options above.\n */\n$(function () {\n //Easy access to options\n var o = $.AdminLTE.options;\n\n //Activate the layout maker\n $.AdminLTE.layout.activate();\n\n //Enable sidebar tree view controls\n $.AdminLTE.tree('.sidebar');\n\n //Add slimscroll to navbar dropdown\n if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {\n $(\".navbar .menu\").slimscroll({\n height: \"200px\",\n alwaysVisible: false,\n size: \"3px\"\n }).css(\"width\", \"100%\");\n }\n\n //Activate sidebar push menu\n if (o.sidebarPushMenu) {\n $.AdminLTE.pushMenu(o.sidebarToggleSelector);\n }\n\n //Activate Bootstrap tooltip\n if (o.enableBSToppltip) {\n $(o.BSTooltipSelector).tooltip();\n }\n\n //Activate box widget\n if (o.enableBoxWidget) {\n $.AdminLTE.boxWidget.activate();\n }\n\n //Activate fast click\n if (o.enableFastclick && typeof FastClick != 'undefined') {\n FastClick.attach(document.body);\n }\n\n //Activate direct chat widget\n if (o.directChat.enable) {\n $(o.directChat.contactToggleSelector).click(function () {\n var box = $(this).parents('.direct-chat').first();\n box.toggleClass('direct-chat-contacts-open');\n });\n }\n\n /*\n * INITIALIZE BUTTON TOGGLE\n * ------------------------\n */\n $('.btn-group[data-toggle=\"btn-toggle\"]').each(function () {\n var group = $(this);\n $(this).find(\".btn\").click(function (e) {\n group.find(\".btn.active\").removeClass(\"active\");\n $(this).addClass(\"active\");\n e.preventDefault();\n });\n\n });\n});\n\n/* ----------------------\n * - AdminLTE Functions -\n * ----------------------\n * All AdminLTE functions are implemented below.\n */\n\n/* prepareLayout\n * =============\n * Fixes the layout height in case min-height fails.\n *\n * @type Object\n * @usage $.AdminLTE.layout.activate()\n * $.AdminLTE.layout.fix()\n * $.AdminLTE.layout.fixSidebar()\n */\n$.AdminLTE.layout = {\n activate: function () {\n var _this = this;\n _this.fix();\n _this.fixSidebar();\n $(window, \".wrapper\").resize(function () {\n _this.fix();\n _this.fixSidebar();\n });\n },\n fix: function () {\n //Get window height and the wrapper height\n var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();\n var window_height = $(window).height();\n var sidebar_height = $(\".sidebar\").height();\n //Set the min-height of the content and sidebar based on the\n //the height of the document.\n if ($(\"body\").hasClass(\"fixed\")) {\n $(\".content-wrapper, .right-side\").css('min-height', window_height - $('.main-footer').outerHeight());\n } else {\n if (window_height >= sidebar_height) {\n $(\".content-wrapper, .right-side\").css('min-height', window_height - neg);\n } else {\n $(\".content-wrapper, .right-side\").css('min-height', sidebar_height);\n }\n }\n },\n fixSidebar: function () {\n //Make sure the body tag has the .fixed class\n if (!$(\"body\").hasClass(\"fixed\")) {\n if (typeof $.fn.slimScroll != 'undefined') {\n $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n }\n return;\n } else if (typeof $.fn.slimScroll == 'undefined' && console) {\n console.error(\"Error: the fixed layout requires the slimscroll plugin!\");\n }\n //Enable slimscroll for fixed layout\n if ($.AdminLTE.options.sidebarSlimScroll) {\n if (typeof $.fn.slimScroll != 'undefined') {\n //Distroy if it exists\n $(\".sidebar\").slimScroll({destroy: true}).height(\"auto\");\n //Add slimscroll\n $(\".sidebar\").slimscroll({\n height: ($(window).height() - $(\".main-header\").height()) + \"px\",\n color: \"rgba(0,0,0,0.2)\",\n size: \"3px\"\n });\n }\n }\n }\n};\n\n/* PushMenu()\n * ==========\n * Adds the push menu functionality to the sidebar.\n *\n * @type Function\n * @usage: $.AdminLTE.pushMenu(\"[data-toggle='offcanvas']\")\n */\n$.AdminLTE.pushMenu = function (toggleBtn) {\n //Get the screen sizes\n var screenSizes = this.options.screenSizes;\n\n //Enable sidebar toggle\n $(toggleBtn).click(function (e) {\n e.preventDefault();\n\n //Enable sidebar push menu\n if ($(window).width() > (screenSizes.sm - 1)) {\n $(\"body\").toggleClass('sidebar-collapse');\n }\n //Handle sidebar push menu for small screens\n else {\n if ($(\"body\").hasClass('sidebar-open')) {\n $(\"body\").removeClass('sidebar-open');\n $(\"body\").removeClass('sidebar-collapse')\n } else {\n $(\"body\").addClass('sidebar-open');\n }\n }\n });\n\n $(\".content-wrapper\").click(function () {\n //Enable hide menu when clicking on the content-wrapper on small screens\n if ($(window).width() <= (screenSizes.sm - 1) && $(\"body\").hasClass(\"sidebar-open\")) {\n $(\"body\").removeClass('sidebar-open');\n }\n });\n\n};\n\n/* Tree()\n * ======\n * Converts the sidebar into a multilevel\n * tree view menu.\n *\n * @type Function\n * @Usage: $.AdminLTE.tree('.sidebar')\n */\n$.AdminLTE.tree = function (menu) {\n var _this = this;\n\n $(\"li a\", $(menu)).click(function (e) {\n //Get the clicked link and the next element\n var $this = $(this);\n var checkElement = $this.next();\n\n //Check if the next element is a menu and is visible\n if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {\n //Close the menu\n checkElement.slideUp('normal', function () {\n checkElement.removeClass('menu-open');\n //Fix the layout in case the sidebar stretches over the height of the window\n //_this.layout.fix();\n });\n checkElement.parent(\"li\").removeClass(\"active\");\n }\n //If the menu is not visible\n else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {\n //Get the parent menu\n var parent = $this.parents('ul').first();\n //Close all open menus within the parent\n var ul = parent.find('ul:visible').slideUp('normal');\n //Remove the menu-open class from the parent\n ul.removeClass('menu-open');\n //Get the parent li\n var parent_li = $this.parent(\"li\");\n\n //Open the target menu and add the menu-open class\n checkElement.slideDown('normal', function () {\n //Add the class active to the parent li\n checkElement.addClass('menu-open');\n parent.find('li.active').removeClass('active');\n parent_li.addClass('active');\n //Fix the layout in case the sidebar stretches over the height of the window\n _this.layout.fix();\n });\n }\n //if this isn't a link, prevent the page from being redirected\n if (checkElement.is('.treeview-menu')) {\n e.preventDefault();\n }\n });\n};\n\n/* BoxWidget\n * =========\n * BoxWidget is plugin to handle collapsing and\n * removing boxes from the screen.\n *\n * @type Object\n * @usage $.AdminLTE.boxWidget.activate()\n * Set all of your option in the main $.AdminLTE.options object\n */\n$.AdminLTE.boxWidget = {\n activate: function () {\n var o = $.AdminLTE.options;\n var _this = this;\n //Listen for collapse event triggers\n $(o.boxWidgetOptions.boxWidgetSelectors.collapse).click(function (e) {\n e.preventDefault();\n _this.collapse($(this));\n });\n\n //Listen for remove event triggers\n $(o.boxWidgetOptions.boxWidgetSelectors.remove).click(function (e) {\n e.preventDefault();\n _this.remove($(this));\n });\n },\n collapse: function (element) {\n //Find the box parent\n var box = element.parents(\".box\").first();\n //Find the body and the footer\n var bf = box.find(\".box-body, .box-footer\");\n if (!box.hasClass(\"collapsed-box\")) {\n //Convert minus into plus\n element.children(\".fa-minus\").removeClass(\"fa-minus\").addClass(\"fa-plus\");\n bf.slideUp(300, function () {\n box.addClass(\"collapsed-box\");\n });\n } else {\n //Convert plus into minus\n element.children(\".fa-plus\").removeClass(\"fa-plus\").addClass(\"fa-minus\");\n bf.slideDown(300, function () {\n box.removeClass(\"collapsed-box\");\n });\n }\n },\n remove: function (element) {\n //Find the box parent\n var box = element.parents(\".box\").first();\n box.slideUp();\n },\n options: $.AdminLTE.options.boxWidgetOptions\n};\n\n/* ------------------\n * - Custom Plugins -\n * ------------------\n * All custom plugins are defined below.\n */\n\n/*\n * BOX REFRESH BUTTON\n * ------------------\n * This is a custom plugin to use with the compenet BOX. It allows you to add\n * a refresh button to the box. It converts the box's state to a loading state.\n *\n * @type plugin\n * @usage $(\"#box-widget\").boxRefresh( options );\n */\n(function ($) {\n\n $.fn.boxRefresh = function (options) {\n\n // Render options\n var settings = $.extend({\n //Refressh button selector\n trigger: \".refresh-btn\",\n //File source to be loaded (e.g: ajax/src.php)\n source: \"\",\n //Callbacks\n onLoadStart: function (box) {\n }, //Right after the button has been clicked\n onLoadDone: function (box) {\n } //When the source has been loaded\n\n }, options);\n\n //The overlay\n var overlay = $('');\n\n return this.each(function () {\n //if a source is specified\n if (settings.source === \"\") {\n if (console) {\n console.log(\"Please specify a source first - boxRefresh()\");\n }\n return;\n }\n //the box\n var box = $(this);\n //the button\n var rBtn = box.find(settings.trigger).first();\n\n //On trigger click\n rBtn.click(function (e) {\n e.preventDefault();\n //Add loading overlay\n start(box);\n\n //Perform ajax call\n box.find(\".box-body\").load(settings.source, function () {\n done(box);\n });\n });\n });\n\n function start(box) {\n //Add overlay and loading img\n box.append(overlay);\n\n settings.onLoadStart.call(box);\n }\n\n function done(box) {\n //Remove overlay and loading img\n box.find(overlay).remove();\n\n settings.onLoadDone.call(box);\n }\n\n };\n\n})(jQuery);\n\n/*\n * TODO LIST CUSTOM PLUGIN\n * -----------------------\n * This plugin depends on iCheck plugin for checkbox and radio inputs\n *\n * @type plugin\n * @usage $(\"#todo-widget\").todolist( options );\n */\n(function ($) {\n\n $.fn.todolist = function (options) {\n // Render options\n var settings = $.extend({\n //When the user checks the input\n onCheck: function (ele) {\n },\n //When the user unchecks the input\n onUncheck: function (ele) {\n }\n }, options);\n\n return this.each(function () {\n\n if (typeof $.fn.iCheck != 'undefined') {\n $('input', this).on('ifChecked', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onCheck.call(ele);\n });\n\n $('input', this).on('ifUnchecked', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onUncheck.call(ele);\n });\n } else {\n $('input', this).on('change', function (event) {\n var ele = $(this).parents(\"li\").first();\n ele.toggleClass(\"done\");\n settings.onCheck.call(ele);\n });\n }\n });\n };\n}(jQuery));"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/public/build/js/ie-1e26461941.js b/public/build/js/ie-1e26461941.js
deleted file mode 100644
index 6007e1086..000000000
--- a/public/build/js/ie-1e26461941.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(e,t){function n(e,t){var n=e.createElement("p"),a=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function a(){var e=E.elements;return"string"==typeof e?e.split(" "):e}function r(e,t){var n=E.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),E.elements=n+" "+e,c(t)}function i(e){var t=v[e[g]];return t||(t={},y++,e[g]=y,v[y]=t),t}function o(e,n,a){if(n||(n=t),d)return n.createElement(e);a||(a=i(n));var r;return r=a.cache[e]?a.cache[e].cloneNode():p.test(e)?(a.cache[e]=a.createElem(e)).cloneNode():a.createElem(e),!r.canHaveChildren||f.test(e)||r.tagUrn?r:a.frag.appendChild(r)}function s(e,n){if(e||(e=t),d)return e.createDocumentFragment();n=n||i(e);for(var r=n.frag.cloneNode(),o=0,s=a(),l=s.length;l>o;o++)r.createElement(s[o]);return r}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return E.shivMethods?o(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+a().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(E,t.frag)}function c(e){e||(e=t);var a=i(e);return!E.shivCSS||m||a.hasCSS||(a.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),d||l(e,a),e}var m,d,u="3.7.2",h=e.html5||{},f=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",y=0,v={};!function(){try{var e=t.createElement("a");e.innerHTML="",m="hidden"in e,d=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){m=!0,d=!0}}();var E={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:u,shivCSS:h.shivCSS!==!1,supportsUnknownElements:d,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:o,createDocumentFragment:s,addElements:r};e.html5=E,c(t)}(this,document),!function(e){"use strict";e.matchMedia=e.matchMedia||function(e){var t,n=e.documentElement,a=n.firstElementChild||n.firstChild,r=e.createElement("body"),i=e.createElement("div");return i.id="mq-test-1",i.style.cssText="position:absolute;top:-100em",r.style.background="none",r.appendChild(i),function(e){return i.innerHTML='',n.insertBefore(r,a),t=42===i.offsetWidth,n.removeChild(r),{matches:t,media:e}}}(e.document)}(this),function(e){"use strict";function t(){x(!0)}var n={};e.respond=n,n.update=function(){};var a=[],r=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),i=function(e,t){var n=r();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))};if(n.ajax=i,n.queue=a,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var o,s,l,c=e.document,m=c.documentElement,d=[],u=[],h=[],f={},p=30,g=c.getElementsByTagName("head")[0]||m,y=c.getElementsByTagName("base")[0],v=g.getElementsByTagName("link"),E=function(){var e,t=c.createElement("div"),n=c.body,a=m.style.fontSize,r=n&&n.style.fontSize,i=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=i=c.createElement("body"),n.style.background="none"),m.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),i&&m.insertBefore(n,m.firstChild),e=t.offsetWidth,i?m.removeChild(n):n.removeChild(t),m.style.fontSize=a,r&&(n.style.fontSize=r),e=l=parseFloat(e)},x=function(t){var n="clientWidth",a=m[n],r="CSS1Compat"===c.compatMode&&a||c.body[n]||a,i={},f=v[v.length-1],y=(new Date).getTime();if(t&&o&&p>y-o)return e.clearTimeout(s),void(s=e.setTimeout(x,p));o=y;for(var S in d)if(d.hasOwnProperty(S)){var b=d[S],w=b.minw,C=b.maxw,T=null===w,F=null===C,M="em";w&&(w=parseFloat(w)*(w.indexOf(M)>-1?l||E():1)),C&&(C=parseFloat(C)*(C.indexOf(M)>-1?l||E():1)),b.hasquery&&(T&&F||!(T||r>=w)||!(F||C>=r))||(i[b.media]||(i[b.media]=[]),i[b.media].push(u[b.rules]))}for(var $ in h)h.hasOwnProperty($)&&h[$]&&h[$].parentNode===g&&g.removeChild(h[$]);h.length=0;for(var z in i)if(i.hasOwnProperty(z)){var k=c.createElement("style"),N=i[z].join("\n");k.type="text/css",k.media=z,g.insertBefore(k,f.nextSibling),k.styleSheet?k.styleSheet.cssText=N:k.appendChild(c.createTextNode(N)),h.push(k)}},S=function(e,t,a){var r=e.replace(n.regex.keyframes,"").match(n.regex.media),i=r&&r.length||0;t=t.substring(0,t.lastIndexOf("/"));var o=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},s=!i&&a;t.length&&(t+="/"),s&&(i=1);for(var l=0;i>l;l++){var c,m,h,f;s?(c=a,u.push(o(e))):(c=r[l].match(n.regex.findStyles)&&RegExp.$1,u.push(RegExp.$2&&o(RegExp.$2))),h=c.split(","),f=h.length;for(var p=0;f>p;p++)m=h[p],d.push({media:m.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:u.length-1,hasquery:m.indexOf("(")>-1,minw:m.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:m.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}x()},b=function(){if(a.length){var t=a.shift();i(t.href,function(n){S(n,t.href,t.media),f[t.href]=!0,e.setTimeout(function(){b()},0)})}},w=function(){for(var t=0;t",a.insertBefore(n.lastChild,a.firstChild)}function a(){var e=E.elements;return"string"==typeof e?e.split(" "):e}function r(e,t){var n=E.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),E.elements=n+" "+e,c(t)}function i(e){var t=v[e[g]];return t||(t={},y++,e[g]=y,v[y]=t),t}function o(e,n,a){if(n||(n=t),d)return n.createElement(e);a||(a=i(n));var r;return r=a.cache[e]?a.cache[e].cloneNode():p.test(e)?(a.cache[e]=a.createElem(e)).cloneNode():a.createElem(e),!r.canHaveChildren||f.test(e)||r.tagUrn?r:a.frag.appendChild(r)}function s(e,n){if(e||(e=t),d)return e.createDocumentFragment();n=n||i(e);for(var r=n.frag.cloneNode(),o=0,s=a(),l=s.length;l>o;o++)r.createElement(s[o]);return r}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return E.shivMethods?o(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+a().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(E,t.frag)}function c(e){e||(e=t);var a=i(e);return!E.shivCSS||m||a.hasCSS||(a.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),d||l(e,a),e}var m,d,u="3.7.3",h=e.html5||{},f=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",y=0,v={};!function(){try{var e=t.createElement("a");e.innerHTML="",m="hidden"in e,d=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){m=!0,d=!0}}();var E={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:u,shivCSS:h.shivCSS!==!1,supportsUnknownElements:d,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:o,createDocumentFragment:s,addElements:r};e.html5=E,c(t),"object"==typeof module&&module.exports&&(module.exports=E)}("undefined"!=typeof window?window:this,document),!function(e){"use strict";e.matchMedia=e.matchMedia||function(e){var t,n=e.documentElement,a=n.firstElementChild||n.firstChild,r=e.createElement("body"),i=e.createElement("div");return i.id="mq-test-1",i.style.cssText="position:absolute;top:-100em",r.style.background="none",r.appendChild(i),function(e){return i.innerHTML='',n.insertBefore(r,a),t=42===i.offsetWidth,n.removeChild(r),{matches:t,media:e}}}(e.document)}(this),function(e){"use strict";function t(){x(!0)}var n={};e.respond=n,n.update=function(){};var a=[],r=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),i=function(e,t){var n=r();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))};if(n.ajax=i,n.queue=a,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var o,s,l,c=e.document,m=c.documentElement,d=[],u=[],h=[],f={},p=30,g=c.getElementsByTagName("head")[0]||m,y=c.getElementsByTagName("base")[0],v=g.getElementsByTagName("link"),E=function(){var e,t=c.createElement("div"),n=c.body,a=m.style.fontSize,r=n&&n.style.fontSize,i=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=i=c.createElement("body"),n.style.background="none"),m.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),i&&m.insertBefore(n,m.firstChild),e=t.offsetWidth,i?m.removeChild(n):n.removeChild(t),m.style.fontSize=a,r&&(n.style.fontSize=r),e=l=parseFloat(e)},x=function(t){var n="clientWidth",a=m[n],r="CSS1Compat"===c.compatMode&&a||c.body[n]||a,i={},f=v[v.length-1],y=(new Date).getTime();if(t&&o&&p>y-o)return e.clearTimeout(s),void(s=e.setTimeout(x,p));o=y;for(var S in d)if(d.hasOwnProperty(S)){var w=d[S],b=w.minw,C=w.maxw,T=null===b,F=null===C,M="em";b&&(b=parseFloat(b)*(b.indexOf(M)>-1?l||E():1)),C&&(C=parseFloat(C)*(C.indexOf(M)>-1?l||E():1)),w.hasquery&&(T&&F||!(T||r>=b)||!(F||C>=r))||(i[w.media]||(i[w.media]=[]),i[w.media].push(u[w.rules]))}for(var $ in h)h.hasOwnProperty($)&&h[$]&&h[$].parentNode===g&&g.removeChild(h[$]);h.length=0;for(var z in i)if(i.hasOwnProperty(z)){var k=c.createElement("style"),N=i[z].join("\n");k.type="text/css",k.media=z,g.insertBefore(k,f.nextSibling),k.styleSheet?k.styleSheet.cssText=N:k.appendChild(c.createTextNode(N)),h.push(k)}},S=function(e,t,a){var r=e.replace(n.regex.keyframes,"").match(n.regex.media),i=r&&r.length||0;t=t.substring(0,t.lastIndexOf("/"));var o=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},s=!i&&a;t.length&&(t+="/"),s&&(i=1);for(var l=0;i>l;l++){var c,m,h,f;s?(c=a,u.push(o(e))):(c=r[l].match(n.regex.findStyles)&&RegExp.$1,u.push(RegExp.$2&&o(RegExp.$2))),h=c.split(","),f=h.length;for(var p=0;f>p;p++)m=h[p],d.push({media:m.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:u.length-1,hasquery:m.indexOf("(")>-1,minw:m.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:m.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}x()},w=function(){if(a.length){var t=a.shift();i(t.href,function(n){S(n,t.href,t.media),f[t.href]=!0,e.setTimeout(function(){w()},0)})}},b=function(){for(var t=0;t unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Extends the built-in list of html5 elements\n * @memberOf html5\n * @param {String|Array} newElements whitespace separated list or array of new element names to shiv\n * @param {Document} ownerDocument The context document.\n */\n function addElements(newElements, ownerDocument) {\n var elements = html5.elements;\n if(typeof elements != 'string'){\n elements = elements.join(' ');\n }\n if(typeof newElements != 'string'){\n newElements = newElements.join(' ');\n }\n html5.elements = elements +' '+ newElements;\n shivDocument(ownerDocument);\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){\"use strict\";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject(\"Microsoft.XMLHTTP\")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open(\"GET\",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\\{]+\\{([^\\{\\}]*\\{[^\\}\\{]*\\})+/gi,keyframes:/@(?:\\-(?:o|moz|webkit)\\-)?keyframes[^\\{]+\\{(?:[^\\{\\}]*\\{[^\\}\\{]*\\})+[^\\}]*\\}/gi,urls:/(url\\()['\"]?([^\\/\\)'\"][^:\\)'\"]+)['\"]?(\\))/g,findStyles:/@media *([^\\{]+)\\{([\\S\\s]+?)$/,only:/(only\\s+)?([a-zA-Z]+)\\s?/,minw:/\\([\\s]*min\\-width\\s*:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/,maxw:/\\([\\s]*max\\-width\\s*:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia(\"only all\")&&a.matchMedia(\"only all\").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName(\"head\")[0]||k,r=j.getElementsByTagName(\"base\")[0],s=q.getElementsByTagName(\"link\"),t=function(){var a,b=j.createElement(\"div\"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText=\"position:absolute;font-size:1em;width:1em\",c||(c=f=j.createElement(\"body\"),c.style.background=\"none\"),k.style.fontSize=\"100%\",c.style.fontSize=\"100%\",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c=\"clientWidth\",d=k[c],e=\"CSS1Compat\"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B=\"em\";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement(\"style\"),F=f[D].join(\"\\n\");E.type=\"text/css\",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,\"\").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf(\"/\"));var g=function(a){return a.replace(c.regex.urls,\"$1\"+b+\"$2$3\")},h=!f&&d;b.length&&(b+=\"/\"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(\",\"),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split(\"(\")[0].match(c.regex.only)&&RegExp.$2||\"all\",rules:m.length-1,hasquery:k.indexOf(\"(\")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||\"\"),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||\"\")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Extends the built-in list of html5 elements\n * @memberOf html5\n * @param {String|Array} newElements whitespace separated list or array of new element names to shiv\n * @param {Document} ownerDocument The context document.\n */\n function addElements(newElements, ownerDocument) {\n var elements = html5.elements;\n if(typeof elements != 'string'){\n elements = elements.join(' ');\n }\n if(typeof newElements != 'string'){\n newElements = newElements.join(' ');\n }\n html5.elements = elements +' '+ newElements;\n shivDocument(ownerDocument);\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document|DocumentFragment} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){\"use strict\";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject(\"Microsoft.XMLHTTP\")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open(\"GET\",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\\{]+\\{([^\\{\\}]*\\{[^\\}\\{]*\\})+/gi,keyframes:/@(?:\\-(?:o|moz|webkit)\\-)?keyframes[^\\{]+\\{(?:[^\\{\\}]*\\{[^\\}\\{]*\\})+[^\\}]*\\}/gi,urls:/(url\\()['\"]?([^\\/\\)'\"][^:\\)'\"]+)['\"]?(\\))/g,findStyles:/@media *([^\\{]+)\\{([\\S\\s]+?)$/,only:/(only\\s+)?([a-zA-Z]+)\\s?/,minw:/\\([\\s]*min\\-width\\s*:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/,maxw:/\\([\\s]*max\\-width\\s*:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia(\"only all\")&&a.matchMedia(\"only all\").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName(\"head\")[0]||k,r=j.getElementsByTagName(\"base\")[0],s=q.getElementsByTagName(\"link\"),t=function(){var a,b=j.createElement(\"div\"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText=\"position:absolute;font-size:1em;width:1em\",c||(c=f=j.createElement(\"body\"),c.style.background=\"none\"),k.style.fontSize=\"100%\",c.style.fontSize=\"100%\",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c=\"clientWidth\",d=k[c],e=\"CSS1Compat\"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B=\"em\";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement(\"style\"),F=f[D].join(\"\\n\");E.type=\"text/css\",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,\"\").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf(\"/\"));var g=function(a){return a.replace(c.regex.urls,\"$1\"+b+\"$2$3\")},h=!f&&d;b.length&&(b+=\"/\"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(\",\"),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split(\"(\")[0].match(c.regex.only)&&RegExp.$2||\"all\",rules:m.length-1,hasquery:k.indexOf(\"(\")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||\"\"),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||\"\")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b0&&t-1 in e}function n(e,t,i){if(Z.isFunction(t))return Z.grep(e,function(e,n){return!!t.call(e,n,e)!==i});if(t.nodeType)return Z.grep(e,function(e){return e===t!==i});if("string"==typeof t){if(ae.test(t))return Z.filter(t,e,i);t=Z.filter(t,e)}return Z.grep(e,function(e){return V.call(t,e)>=0!==i})}function r(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t=ge[e]={};return Z.each(e.match(pe)||[],function(e,i){t[i]=!0}),t}function o(){Q.removeEventListener("DOMContentLoaded",o,!1),e.removeEventListener("load",o,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+a.uid++}function c(e,t,i){var n;if(void 0===i&&1===e.nodeType)if(n="data-"+t.replace(ye,"-$1").toLowerCase(),i=e.getAttribute(n),"string"==typeof i){try{i="true"===i?!0:"false"===i?!1:"null"===i?null:+i+""===i?+i:be.test(i)?Z.parseJSON(i):i}catch(r){}ve.set(e,t,i)}else i=void 0;return i}function l(){return!0}function h(){return!1}function u(){try{return Q.activeElement}catch(e){}}function d(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function p(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function g(e){var t=Oe.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function f(e,t){for(var i=0,n=e.length;n>i;i++)_e.set(e[i],"globalEval",!t||_e.get(t[i],"globalEval"))}function m(e,t){var i,n,r,s,o,a,c,l;if(1===t.nodeType){if(_e.hasData(e)&&(s=_e.access(e),o=_e.set(t,s),l=s.events)){delete o.handle,o.events={};for(r in l)for(i=0,n=l[r].length;n>i;i++)Z.event.add(t,r,l[r][i])}ve.hasData(e)&&(a=ve.access(e),c=Z.extend({},a),ve.set(t,c))}}function _(e,t){var i=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],i):i}function v(e,t){var i=t.nodeName.toLowerCase();"input"===i&&ke.test(e.type)?t.checked=e.checked:("input"===i||"textarea"===i)&&(t.defaultValue=e.defaultValue)}function b(t,i){var n,r=Z(i.createElement(t)).appendTo(i.body),s=e.getDefaultComputedStyle&&(n=e.getDefaultComputedStyle(r[0]))?n.display:Z.css(r[0],"display");return r.detach(),s}function y(e){var t=Q,i=Ne[e];return i||(i=b(e,t),"none"!==i&&i||(Pe=(Pe||Z("")).appendTo(t.documentElement),t=Pe[0].contentDocument,t.write(),t.close(),i=b(e,t),Pe.detach()),Ne[e]=i),i}function w(e,t,i){var n,r,s,o,a=e.style;return i=i||He(e),i&&(o=i.getPropertyValue(t)||i[t]),i&&(""!==o||Z.contains(e.ownerDocument,e)||(o=Z.style(e,t)),We.test(o)&&ze.test(t)&&(n=a.width,r=a.minWidth,s=a.maxWidth,a.minWidth=a.maxWidth=a.width=o,o=i.width,a.width=n,a.minWidth=r,a.maxWidth=s)),void 0!==o?o+"":o}function x(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function A(e,t){if(t in e)return t;for(var i=t[0].toUpperCase()+t.slice(1),n=t,r=Ke.length;r--;)if(t=Ke[r]+i,t in e)return t;return n}function k(e,t,i){var n=Ue.exec(t);return n?Math.max(0,n[1]-(i||0))+(n[2]||"px"):t}function C(e,t,i,n,r){for(var s=i===(n?"border":"content")?4:"width"===t?1:0,o=0;4>s;s+=2)"margin"===i&&(o+=Z.css(e,i+xe[s],!0,r)),n?("content"===i&&(o-=Z.css(e,"padding"+xe[s],!0,r)),"margin"!==i&&(o-=Z.css(e,"border"+xe[s]+"Width",!0,r))):(o+=Z.css(e,"padding"+xe[s],!0,r),"padding"!==i&&(o+=Z.css(e,"border"+xe[s]+"Width",!0,r)));return o}function E(e,t,i){var n=!0,r="width"===t?e.offsetWidth:e.offsetHeight,s=He(e),o="border-box"===Z.css(e,"boxSizing",!1,s);if(0>=r||null==r){if(r=w(e,t,s),(0>r||null==r)&&(r=e.style[t]),We.test(r))return r;n=o&&(X.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+C(e,t,i||(o?"border":"content"),n,s)+"px"}function F(e,t){for(var i,n,r,s=[],o=0,a=e.length;a>o;o++)n=e[o],n.style&&(s[o]=_e.get(n,"olddisplay"),i=n.style.display,t?(s[o]||"none"!==i||(n.style.display=""),""===n.style.display&&Ae(n)&&(s[o]=_e.access(n,"olddisplay",y(n.nodeName)))):(r=Ae(n),"none"===i&&r||_e.set(n,"olddisplay",r?i:Z.css(n,"display"))));for(o=0;a>o;o++)n=e[o],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?s[o]||"":"none"));return e}function D(e,t,i,n,r){return new D.prototype.init(e,t,i,n,r)}function $(){return setTimeout(function(){Xe=void 0}),Xe=Z.now()}function S(e,t){var i,n=0,r={height:e};for(t=t?1:0;4>n;n+=2-t)i=xe[n],r["margin"+i]=r["padding"+i]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,i){for(var n,r=(it[t]||[]).concat(it["*"]),s=0,o=r.length;o>s;s++)if(n=r[s].call(i,t,e))return n}function T(e,t,i){var n,r,s,o,a,c,l,h,u=this,d={},p=e.style,g=e.nodeType&&Ae(e),f=_e.get(e,"fxshow");i.queue||(a=Z._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,c=a.empty.fire,a.empty.fire=function(){a.unqueued||c()}),a.unqueued++,u.always(function(){u.always(function(){a.unqueued--,Z.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(i.overflow=[p.overflow,p.overflowX,p.overflowY],l=Z.css(e,"display"),h="none"===l?_e.get(e,"olddisplay")||y(e.nodeName):l,"inline"===h&&"none"===Z.css(e,"float")&&(p.display="inline-block")),i.overflow&&(p.overflow="hidden",u.always(function(){p.overflow=i.overflow[0],p.overflowX=i.overflow[1],p.overflowY=i.overflow[2]}));for(n in t)if(r=t[n],Je.exec(r)){if(delete t[n],s=s||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!f||void 0===f[n])continue;g=!0}d[n]=f&&f[n]||Z.style(e,n)}else l=void 0;if(Z.isEmptyObject(d))"inline"===("none"===l?y(e.nodeName):l)&&(p.display=l);else{f?"hidden"in f&&(g=f.hidden):f=_e.access(e,"fxshow",{}),s&&(f.hidden=!g),g?Z(e).show():u.done(function(){Z(e).hide()}),u.done(function(){var t;_e.remove(e,"fxshow");for(t in d)Z.style(e,t,d[t])});for(n in d)o=B(g?f[n]:0,n,u),n in f||(f[n]=o.start,g&&(o.end=o.start,o.start="width"===n||"height"===n?1:0))}}function L(e,t){var i,n,r,s,o;for(i in e)if(n=Z.camelCase(i),r=t[n],s=e[i],Z.isArray(s)&&(r=s[1],s=e[i]=s[0]),i!==n&&(e[n]=s,delete e[i]),o=Z.cssHooks[n],o&&"expand"in o){s=o.expand(s),delete e[n];for(i in s)i in e||(e[i]=s[i],t[i]=r)}else t[n]=r}function R(e,t,i){var n,r,s=0,o=tt.length,a=Z.Deferred().always(function(){delete c.elem}),c=function(){if(r)return!1;for(var t=Xe||$(),i=Math.max(0,l.startTime+l.duration-t),n=i/l.duration||0,s=1-n,o=0,c=l.tweens.length;c>o;o++)l.tweens[o].run(s);return a.notifyWith(e,[l,s,i]),1>s&&c?i:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:Z.extend({},t),opts:Z.extend(!0,{specialEasing:{}},i),originalProperties:t,originalOptions:i,startTime:Xe||$(),duration:i.duration,tweens:[],createTween:function(t,i){var n=Z.Tween(e,l.opts,t,i,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(n),n},stop:function(t){var i=0,n=t?l.tweens.length:0;if(r)return this;for(r=!0;n>i;i++)l.tweens[i].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),h=l.props;for(L(h,l.opts.specialEasing);o>s;s++)if(n=tt[s].call(l,e,h,l.opts))return n;return Z.map(h,B,l),Z.isFunction(l.opts.start)&&l.opts.start.call(e,l),Z.fx.timer(Z.extend(c,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function M(e){return function(t,i){"string"!=typeof t&&(i=t,t="*");var n,r=0,s=t.toLowerCase().match(pe)||[];if(Z.isFunction(i))for(;n=s[r++];)"+"===n[0]?(n=n.slice(1)||"*",(e[n]=e[n]||[]).unshift(i)):(e[n]=e[n]||[]).push(i)}}function O(e,t,i,n){function r(a){var c;return s[a]=!0,Z.each(e[a]||[],function(e,a){var l=a(t,i,n);return"string"!=typeof l||o||s[l]?o?!(c=l):void 0:(t.dataTypes.unshift(l),r(l),!1)}),c}var s={},o=e===bt;return r(t.dataTypes[0])||!s["*"]&&r("*")}function I(e,t){var i,n,r=Z.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&Z.extend(!0,e,n),e}function q(e,t,i){for(var n,r,s,o,a=e.contents,c=e.dataTypes;"*"===c[0];)c.shift(),void 0===n&&(n=e.mimeType||t.getResponseHeader("Content-Type"));if(n)for(r in a)if(a[r]&&a[r].test(n)){c.unshift(r);break}if(c[0]in i)s=c[0];else{for(r in i){if(!c[0]||e.converters[r+" "+c[0]]){s=r;break}o||(o=r)}s=s||o}return s?(s!==c[0]&&c.unshift(s),i[s]):void 0}function P(e,t,i,n){var r,s,o,a,c,l={},h=e.dataTypes.slice();if(h[1])for(o in e.converters)l[o.toLowerCase()]=e.converters[o];for(s=h.shift();s;)if(e.responseFields[s]&&(i[e.responseFields[s]]=t),!c&&n&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),c=s,s=h.shift())if("*"===s)s=c;else if("*"!==c&&c!==s){if(o=l[c+" "+s]||l["* "+s],!o)for(r in l)if(a=r.split(" "),a[1]===s&&(o=l[c+" "+a[0]]||l["* "+a[0]])){o===!0?o=l[r]:l[r]!==!0&&(s=a[0],h.unshift(a[1]));break}if(o!==!0)if(o&&e["throws"])t=o(t);else try{t=o(t)}catch(u){return{state:"parsererror",error:o?u:"No conversion from "+c+" to "+s}}}return{state:"success",data:t}}function N(e,t,i,n){var r;if(Z.isArray(t))Z.each(t,function(t,r){i||kt.test(e)?n(e,r):N(e+"["+("object"==typeof r?t:"")+"]",r,i,n)});else if(i||"object"!==Z.type(t))n(e,t);else for(r in t)N(e+"["+r+"]",t[r],i,n)}function z(e){return Z.isWindow(e)?e:9===e.nodeType&&e.defaultView}var W=[],H=W.slice,j=W.concat,U=W.push,V=W.indexOf,G={},Y=G.toString,K=G.hasOwnProperty,X={},Q=e.document,J="2.1.4",Z=function(e,t){return new Z.fn.init(e,t)},ee=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,te=/^-ms-/,ie=/-([\da-z])/gi,ne=function(e,t){return t.toUpperCase()};Z.fn=Z.prototype={jquery:J,constructor:Z,selector:"",length:0,toArray:function(){return H.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:H.call(this)},pushStack:function(e){var t=Z.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return Z.each(this,e,t)},map:function(e){return this.pushStack(Z.map(this,function(t,i){return e.call(t,i,t)}))},slice:function(){return this.pushStack(H.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,i=+e+(0>e?t:0);return this.pushStack(i>=0&&t>i?[this[i]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:U,sort:W.sort,splice:W.splice},Z.extend=Z.fn.extend=function(){var e,t,i,n,r,s,o=arguments[0]||{},a=1,c=arguments.length,l=!1;for("boolean"==typeof o&&(l=o,o=arguments[a]||{},a++),"object"==typeof o||Z.isFunction(o)||(o={}),a===c&&(o=this,a--);c>a;a++)if(null!=(e=arguments[a]))for(t in e)i=o[t],n=e[t],o!==n&&(l&&n&&(Z.isPlainObject(n)||(r=Z.isArray(n)))?(r?(r=!1,s=i&&Z.isArray(i)?i:[]):s=i&&Z.isPlainObject(i)?i:{},o[t]=Z.extend(l,s,n)):void 0!==n&&(o[t]=n));return o},Z.extend({expando:"jQuery"+(J+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===Z.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!Z.isArray(e)&&e-parseFloat(e)+1>=0},isPlainObject:function(e){return"object"!==Z.type(e)||e.nodeType||Z.isWindow(e)?!1:e.constructor&&!K.call(e.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?G[Y.call(e)]||"object":typeof e},globalEval:function(e){var t,i=eval;e=Z.trim(e),e&&(1===e.indexOf("use strict")?(t=Q.createElement("script"),t.text=e,Q.head.appendChild(t).parentNode.removeChild(t)):i(e))},camelCase:function(e){return e.replace(te,"ms-").replace(ie,ne)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,s=0,o=e.length,a=i(e);if(n){if(a)for(;o>s&&(r=t.apply(e[s],n),r!==!1);s++);else for(s in e)if(r=t.apply(e[s],n),r===!1)break}else if(a)for(;o>s&&(r=t.call(e[s],s,e[s]),r!==!1);s++);else for(s in e)if(r=t.call(e[s],s,e[s]),r===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ee,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(i(Object(e))?Z.merge(n,"string"==typeof e?[e]:e):U.call(n,e)),n},inArray:function(e,t,i){return null==t?-1:V.call(t,e,i)},merge:function(e,t){for(var i=+t.length,n=0,r=e.length;i>n;n++)e[r++]=t[n];return e.length=r,e},grep:function(e,t,i){for(var n,r=[],s=0,o=e.length,a=!i;o>s;s++)n=!t(e[s],s),n!==a&&r.push(e[s]);return r},map:function(e,t,n){var r,s=0,o=e.length,a=i(e),c=[];if(a)for(;o>s;s++)r=t(e[s],s,n),null!=r&&c.push(r);else for(s in e)r=t(e[s],s,n),null!=r&&c.push(r);return j.apply([],c)},guid:1,proxy:function(e,t){var i,n,r;return"string"==typeof t&&(i=e[t],t=e,e=i),Z.isFunction(e)?(n=H.call(arguments,2),r=function(){return e.apply(t||this,n.concat(H.call(arguments)))},r.guid=e.guid=e.guid||Z.guid++,r):void 0},now:Date.now,support:X}),Z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){G["[object "+t+"]"]=t.toLowerCase()});var re=function(e){function t(e,t,i,n){var r,s,o,a,c,l,u,p,g,f;if((t?t.ownerDocument||t:N)!==T&&B(t),t=t||T,i=i||[],a=t.nodeType,"string"!=typeof e||!e||1!==a&&9!==a&&11!==a)return i;if(!n&&R){if(11!==a&&(r=ve.exec(e)))if(o=r[1]){if(9===a){if(s=t.getElementById(o),!s||!s.parentNode)return i;if(s.id===o)return i.push(s),i}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(o))&&q(t,s)&&s.id===o)return i.push(s),i}else{if(r[2])return J.apply(i,t.getElementsByTagName(e)),i;if((o=r[3])&&w.getElementsByClassName)return J.apply(i,t.getElementsByClassName(o)),i}if(w.qsa&&(!M||!M.test(e))){if(p=u=P,g=t,f=1!==a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){for(l=C(e),(u=t.getAttribute("id"))?p=u.replace(ye,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",c=l.length;c--;)l[c]=p+d(l[c]);g=be.test(e)&&h(t.parentNode)||t,f=l.join(",")}if(f)try{return J.apply(i,g.querySelectorAll(f)),i}catch(m){}finally{u||t.removeAttribute("id")}}}return F(e.replace(ce,"$1"),t,i,n)}function i(){function e(i,n){return t.push(i+" ")>x.cacheLength&&delete e[t.shift()],e[i+" "]=n}var t=[];return e}function n(e){return e[P]=!0,e}function r(e){var t=T.createElement("div");try{return!!e(t)}catch(i){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function s(e,t){for(var i=e.split("|"),n=e.length;n--;)x.attrHandle[i[n]]=t}function o(e,t){var i=t&&e,n=i&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||G)-(~e.sourceIndex||G);if(n)return n;if(i)for(;i=i.nextSibling;)if(i===t)return-1;return e?1:-1}function a(e){return function(t){var i=t.nodeName.toLowerCase();return"input"===i&&t.type===e}}function c(e){return function(t){var i=t.nodeName.toLowerCase();return("input"===i||"button"===i)&&t.type===e}}function l(e){return n(function(t){return t=+t,n(function(i,n){for(var r,s=e([],i.length,t),o=s.length;o--;)i[r=s[o]]&&(i[r]=!(n[r]=i[r]))})})}function h(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function u(){}function d(e){for(var t=0,i=e.length,n="";i>t;t++)n+=e[t].value;return n}function p(e,t,i){var n=t.dir,r=i&&"parentNode"===n,s=W++;return t.first?function(t,i,s){for(;t=t[n];)if(1===t.nodeType||r)return e(t,i,s)}:function(t,i,o){var a,c,l=[z,s];if(o){for(;t=t[n];)if((1===t.nodeType||r)&&e(t,i,o))return!0}else for(;t=t[n];)if(1===t.nodeType||r){if(c=t[P]||(t[P]={}),(a=c[n])&&a[0]===z&&a[1]===s)return l[2]=a[2];if(c[n]=l,l[2]=e(t,i,o))return!0}}}function g(e){return e.length>1?function(t,i,n){for(var r=e.length;r--;)if(!e[r](t,i,n))return!1;return!0}:e[0]}function f(e,i,n){for(var r=0,s=i.length;s>r;r++)t(e,i[r],n);return n}function m(e,t,i,n,r){for(var s,o=[],a=0,c=e.length,l=null!=t;c>a;a++)(s=e[a])&&(!i||i(s,n,r))&&(o.push(s),l&&t.push(a));return o}function _(e,t,i,r,s,o){return r&&!r[P]&&(r=_(r)),s&&!s[P]&&(s=_(s,o)),n(function(n,o,a,c){var l,h,u,d=[],p=[],g=o.length,_=n||f(t||"*",a.nodeType?[a]:a,[]),v=!e||!n&&t?_:m(_,d,e,a,c),b=i?s||(n?e:g||r)?[]:o:v;if(i&&i(v,b,a,c),r)for(l=m(b,p),r(l,[],a,c),h=l.length;h--;)(u=l[h])&&(b[p[h]]=!(v[p[h]]=u));if(n){if(s||e){if(s){for(l=[],h=b.length;h--;)(u=b[h])&&l.push(v[h]=u);s(null,b=[],l,c)}for(h=b.length;h--;)(u=b[h])&&(l=s?ee(n,u):d[h])>-1&&(n[l]=!(o[l]=u))}}else b=m(b===o?b.splice(g,b.length):b),s?s(null,o,b,c):J.apply(o,b)})}function v(e){for(var t,i,n,r=e.length,s=x.relative[e[0].type],o=s||x.relative[" "],a=s?1:0,c=p(function(e){return e===t},o,!0),l=p(function(e){return ee(t,e)>-1},o,!0),h=[function(e,i,n){var r=!s&&(n||i!==D)||((t=i).nodeType?c(e,i,n):l(e,i,n));return t=null,r}];r>a;a++)if(i=x.relative[e[a].type])h=[p(g(h),i)];else{if(i=x.filter[e[a].type].apply(null,e[a].matches),i[P]){for(n=++a;r>n&&!x.relative[e[n].type];n++);return _(a>1&&g(h),a>1&&d(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ce,"$1"),i,n>a&&v(e.slice(a,n)),r>n&&v(e=e.slice(n)),r>n&&d(e))}h.push(i)}return g(h)}function b(e,i){var r=i.length>0,s=e.length>0,o=function(n,o,a,c,l){var h,u,d,p=0,g="0",f=n&&[],_=[],v=D,b=n||s&&x.find.TAG("*",l),y=z+=null==v?1:Math.random()||.1,w=b.length;for(l&&(D=o!==T&&o);g!==w&&null!=(h=b[g]);g++){if(s&&h){for(u=0;d=e[u++];)if(d(h,o,a)){c.push(h);break}l&&(z=y)}r&&((h=!d&&h)&&p--,n&&f.push(h))}if(p+=g,r&&g!==p){for(u=0;d=i[u++];)d(f,_,o,a);if(n){if(p>0)for(;g--;)f[g]||_[g]||(_[g]=X.call(c));_=m(_)}J.apply(c,_),l&&!n&&_.length>0&&p+i.length>1&&t.uniqueSort(c)}return l&&(z=y,D=v),f};return r?n(o):o}var y,w,x,A,k,C,E,F,D,$,S,B,T,L,R,M,O,I,q,P="sizzle"+1*new Date,N=e.document,z=0,W=0,H=i(),j=i(),U=i(),V=function(e,t){return e===t&&(S=!0),0},G=1<<31,Y={}.hasOwnProperty,K=[],X=K.pop,Q=K.push,J=K.push,Z=K.slice,ee=function(e,t){for(var i=0,n=e.length;n>i;i++)if(e[i]===t)return i;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ie="[\\x20\\t\\r\\n\\f]",ne="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re=ne.replace("w","w#"),se="\\["+ie+"*("+ne+")(?:"+ie+"*([*^$|!~]?=)"+ie+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ie+"*\\]",oe=":("+ne+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+se+")*)|.*)\\)|)",ae=new RegExp(ie+"+","g"),ce=new RegExp("^"+ie+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ie+"+$","g"),le=new RegExp("^"+ie+"*,"+ie+"*"),he=new RegExp("^"+ie+"*([>+~]|"+ie+")"+ie+"*"),ue=new RegExp("="+ie+"*([^\\]'\"]*?)"+ie+"*\\]","g"),de=new RegExp(oe),pe=new RegExp("^"+re+"$"),ge={ID:new RegExp("^#("+ne+")"),CLASS:new RegExp("^\\.("+ne+")"),TAG:new RegExp("^("+ne.replace("w","w*")+")"),ATTR:new RegExp("^"+se),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ie+"*(even|odd|(([+-]|)(\\d*)n|)"+ie+"*(?:([+-]|)"+ie+"*(\\d+)|))"+ie+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ie+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ie+"*((?:-\\d)?\\d*)"+ie+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,_e=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,be=/[+~]/,ye=/'|\\/g,we=new RegExp("\\\\([\\da-f]{1,6}"+ie+"?|("+ie+")|.)","ig"),xe=function(e,t,i){var n="0x"+t-65536;return n!==n||i?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},Ae=function(){B()};try{J.apply(K=Z.call(N.childNodes),N.childNodes),K[N.childNodes.length].nodeType}catch(ke){J={apply:K.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var i=e.length,n=0;e[i++]=t[n++];);e.length=i-1}}}w=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=t.setDocument=function(e){var t,i,n=e?e.ownerDocument||e:N;return n!==T&&9===n.nodeType&&n.documentElement?(T=n,L=n.documentElement,i=n.defaultView,i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",Ae,!1):i.attachEvent&&i.attachEvent("onunload",Ae)),R=!k(n),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_e.test(n.getElementsByClassName),w.getById=r(function(e){return L.appendChild(e).id=P,!n.getElementsByName||!n.getElementsByName(P).length}),w.getById?(x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&R){var i=t.getElementById(e);return i&&i.parentNode?[i]:[]}},x.filter.ID=function(e){var t=e.replace(we,xe);return function(e){return e.getAttribute("id")===t}}):(delete x.find.ID,x.filter.ID=function(e){var t=e.replace(we,xe);return function(e){var i="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return i&&i.value===t}}),x.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var i,n=[],r=0,s=t.getElementsByTagName(e);if("*"===e){for(;i=s[r++];)1===i.nodeType&&n.push(i);return n}return s},x.find.CLASS=w.getElementsByClassName&&function(e,t){return R?t.getElementsByClassName(e):void 0},O=[],M=[],(w.qsa=_e.test(n.querySelectorAll))&&(r(function(e){L.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&M.push("[*^$]="+ie+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||M.push("\\["+ie+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||M.push("~="),e.querySelectorAll(":checked").length||M.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||M.push(".#.+[+~]")}),r(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&M.push("name"+ie+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),M.push(",.*:")})),(w.matchesSelector=_e.test(I=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&r(function(e){w.disconnectedMatch=I.call(e,"div"),I.call(e,"[s!='']:x"),O.push("!=",oe)}),M=M.length&&new RegExp(M.join("|")),O=O.length&&new RegExp(O.join("|")),t=_e.test(L.compareDocumentPosition),q=t||_e.test(L.contains)?function(e,t){var i=9===e.nodeType?e.documentElement:e,n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return S=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!w.sortDetached&&t.compareDocumentPosition(e)===i?e===n||e.ownerDocument===N&&q(N,e)?-1:t===n||t.ownerDocument===N&&q(N,t)?1:$?ee($,e)-ee($,t):0:4&i?-1:1)}:function(e,t){if(e===t)return S=!0,0;var i,r=0,s=e.parentNode,a=t.parentNode,c=[e],l=[t];if(!s||!a)return e===n?-1:t===n?1:s?-1:a?1:$?ee($,e)-ee($,t):0;if(s===a)return o(e,t);for(i=e;i=i.parentNode;)c.unshift(i);for(i=t;i=i.parentNode;)l.unshift(i);for(;c[r]===l[r];)r++;return r?o(c[r],l[r]):c[r]===N?-1:l[r]===N?1:0},n):T},t.matches=function(e,i){return t(e,null,null,i)},t.matchesSelector=function(e,i){if((e.ownerDocument||e)!==T&&B(e),i=i.replace(ue,"='$1']"),!(!w.matchesSelector||!R||O&&O.test(i)||M&&M.test(i)))try{var n=I.call(e,i);if(n||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return t(i,T,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==T&&B(e),q(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==T&&B(e);var i=x.attrHandle[t.toLowerCase()],n=i&&Y.call(x.attrHandle,t.toLowerCase())?i(e,t,!R):void 0;return void 0!==n?n:w.attributes||!R?e.getAttribute(t):(n=e.getAttributeNode(t))&&n.specified?n.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,i=[],n=0,r=0;if(S=!w.detectDuplicates,$=!w.sortStable&&e.slice(0),e.sort(V),S){for(;t=e[r++];)t===e[r]&&(n=i.push(r));for(;n--;)e.splice(i[n],1)}return $=null,e},A=t.getText=function(e){var t,i="",n=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)i+=A(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[n++];)i+=A(t);return i},x=t.selectors={cacheLength:50,createPseudo:n,match:ge,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(we,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(we,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,i=!e[6]&&e[2];return ge.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":i&&de.test(i)&&(t=C(i,!0))&&(t=i.indexOf(")",i.length-t)-i.length)&&(e[0]=e[0].slice(0,t),e[2]=i.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(we,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=H[e+" "];return t||(t=new RegExp("(^|"+ie+")"+e+"("+ie+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,i,n){return function(r){var s=t.attr(r,e);return null==s?"!="===i:i?(s+="","="===i?s===n:"!="===i?s!==n:"^="===i?n&&0===s.indexOf(n):"*="===i?n&&s.indexOf(n)>-1:"$="===i?n&&s.slice(-n.length)===n:"~="===i?(" "+s.replace(ae," ")+" ").indexOf(n)>-1:"|="===i?s===n||s.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,i,n,r){var s="nth"!==e.slice(0,3),o="last"!==e.slice(-4),a="of-type"===t;return 1===n&&0===r?function(e){return!!e.parentNode}:function(t,i,c){var l,h,u,d,p,g,f=s!==o?"nextSibling":"previousSibling",m=t.parentNode,_=a&&t.nodeName.toLowerCase(),v=!c&&!a;if(m){if(s){for(;f;){for(u=t;u=u[f];)if(a?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;g=f="only"===e&&!g&&"nextSibling"}return!0}if(g=[o?m.firstChild:m.lastChild],o&&v){for(h=m[P]||(m[P]={}),l=h[e]||[],p=l[0]===z&&l[1],d=l[0]===z&&l[2],u=p&&m.childNodes[p];u=++p&&u&&u[f]||(d=p=0)||g.pop();)if(1===u.nodeType&&++d&&u===t){h[e]=[z,p,d];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===z)d=l[1];else for(;(u=++p&&u&&u[f]||(d=p=0)||g.pop())&&((a?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++d||(v&&((u[P]||(u[P]={}))[e]=[z,d]),u!==t)););return d-=r,d===n||d%n===0&&d/n>=0}}},PSEUDO:function(e,i){var r,s=x.pseudos[e]||x.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return s[P]?s(i):s.length>1?(r=[e,e,"",i],x.setFilters.hasOwnProperty(e.toLowerCase())?n(function(e,t){for(var n,r=s(e,i),o=r.length;o--;)n=ee(e,r[o]),e[n]=!(t[n]=r[o])}):function(e){return s(e,0,r)}):s}},pseudos:{not:n(function(e){var t=[],i=[],r=E(e.replace(ce,"$1"));return r[P]?n(function(e,t,i,n){for(var s,o=r(e,null,n,[]),a=e.length;a--;)(s=o[a])&&(e[a]=!(t[a]=s))}):function(e,n,s){return t[0]=e,r(t,null,s,i),t[0]=null,!i.pop()}}),has:n(function(e){return function(i){return t(e,i).length>0}}),contains:n(function(e){return e=e.replace(we,xe),function(t){return(t.textContent||t.innerText||A(t)).indexOf(e)>-1}}),lang:n(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(we,xe).toLowerCase(),function(t){var i;do if(i=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return i=i.toLowerCase(),i===e||0===i.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var i=e.location&&e.location.hash;return i&&i.slice(1)===t.id},root:function(e){return e===L},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,i){return[0>i?i+t:i]}),even:l(function(e,t){for(var i=0;t>i;i+=2)e.push(i);return e}),odd:l(function(e,t){for(var i=1;t>i;i+=2)e.push(i);return e}),lt:l(function(e,t,i){for(var n=0>i?i+t:i;--n>=0;)e.push(n);return e}),gt:l(function(e,t,i){for(var n=0>i?i+t:i;++n2&&"ID"===(o=s[0]).type&&w.getById&&9===t.nodeType&&R&&x.relative[s[1].type]){if(t=(x.find.ID(o.matches[0].replace(we,xe),t)||[])[0],!t)return i;l&&(t=t.parentNode),e=e.slice(s.shift().value.length)}for(r=ge.needsContext.test(e)?0:s.length;r--&&(o=s[r],!x.relative[a=o.type]);)if((c=x.find[a])&&(n=c(o.matches[0].replace(we,xe),be.test(s[0].type)&&h(t.parentNode)||t))){if(s.splice(r,1),e=n.length&&d(s),!e)return J.apply(i,n),i;break}}return(l||E(e,u))(n,t,!R,i,be.test(e)&&h(t.parentNode)||t),i},w.sortStable=P.split("").sort(V).join("")===P,w.detectDuplicates=!!S,B(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(T.createElement("div"))}),r(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||s("type|href|height|width",function(e,t,i){return i?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||s("value",function(e,t,i){return i||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||s(te,function(e,t,i){var n;return i?void 0:e[t]===!0?t.toLowerCase():(n=e.getAttributeNode(t))&&n.specified?n.value:null}),t}(e);Z.find=re,Z.expr=re.selectors,Z.expr[":"]=Z.expr.pseudos,Z.unique=re.uniqueSort,Z.text=re.getText,Z.isXMLDoc=re.isXML,Z.contains=re.contains;var se=Z.expr.match.needsContext,oe=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ae=/^.[^:#\[\.,]*$/;Z.filter=function(e,t,i){var n=t[0];return i&&(e=":not("+e+")"),1===t.length&&1===n.nodeType?Z.find.matchesSelector(n,e)?[n]:[]:Z.find.matches(e,Z.grep(t,function(e){return 1===e.nodeType}))},Z.fn.extend({find:function(e){var t,i=this.length,n=[],r=this;
+if(function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function i(e){var t="length"in e&&e.length,i=Z.type(e);return"function"===i||Z.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===i||0===t||"number"==typeof t&&t>0&&t-1 in e}function n(e,t,i){if(Z.isFunction(t))return Z.grep(e,function(e,n){return!!t.call(e,n,e)!==i});if(t.nodeType)return Z.grep(e,function(e){return e===t!==i});if("string"==typeof t){if(ae.test(t))return Z.filter(t,e,i);t=Z.filter(t,e)}return Z.grep(e,function(e){return V.call(t,e)>=0!==i})}function r(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t=ge[e]={};return Z.each(e.match(pe)||[],function(e,i){t[i]=!0}),t}function o(){Q.removeEventListener("DOMContentLoaded",o,!1),e.removeEventListener("load",o,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+a.uid++}function c(e,t,i){var n;if(void 0===i&&1===e.nodeType)if(n="data-"+t.replace(ye,"-$1").toLowerCase(),i=e.getAttribute(n),"string"==typeof i){try{i="true"===i?!0:"false"===i?!1:"null"===i?null:+i+""===i?+i:be.test(i)?Z.parseJSON(i):i}catch(r){}ve.set(e,t,i)}else i=void 0;return i}function l(){return!0}function h(){return!1}function u(){try{return Q.activeElement}catch(e){}}function d(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function p(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function g(e){var t=Oe.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function f(e,t){for(var i=0,n=e.length;n>i;i++)_e.set(e[i],"globalEval",!t||_e.get(t[i],"globalEval"))}function m(e,t){var i,n,r,s,o,a,c,l;if(1===t.nodeType){if(_e.hasData(e)&&(s=_e.access(e),o=_e.set(t,s),l=s.events)){delete o.handle,o.events={};for(r in l)for(i=0,n=l[r].length;n>i;i++)Z.event.add(t,r,l[r][i])}ve.hasData(e)&&(a=ve.access(e),c=Z.extend({},a),ve.set(t,c))}}function _(e,t){var i=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],i):i}function v(e,t){var i=t.nodeName.toLowerCase();"input"===i&&ke.test(e.type)?t.checked=e.checked:("input"===i||"textarea"===i)&&(t.defaultValue=e.defaultValue)}function b(t,i){var n,r=Z(i.createElement(t)).appendTo(i.body),s=e.getDefaultComputedStyle&&(n=e.getDefaultComputedStyle(r[0]))?n.display:Z.css(r[0],"display");return r.detach(),s}function y(e){var t=Q,i=Ne[e];return i||(i=b(e,t),"none"!==i&&i||(Pe=(Pe||Z("")).appendTo(t.documentElement),t=Pe[0].contentDocument,t.write(),t.close(),i=b(e,t),Pe.detach()),Ne[e]=i),i}function w(e,t,i){var n,r,s,o,a=e.style;return i=i||He(e),i&&(o=i.getPropertyValue(t)||i[t]),i&&(""!==o||Z.contains(e.ownerDocument,e)||(o=Z.style(e,t)),We.test(o)&&ze.test(t)&&(n=a.width,r=a.minWidth,s=a.maxWidth,a.minWidth=a.maxWidth=a.width=o,o=i.width,a.width=n,a.minWidth=r,a.maxWidth=s)),void 0!==o?o+"":o}function x(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function A(e,t){if(t in e)return t;for(var i=t[0].toUpperCase()+t.slice(1),n=t,r=Ke.length;r--;)if(t=Ke[r]+i,t in e)return t;return n}function k(e,t,i){var n=Ue.exec(t);return n?Math.max(0,n[1]-(i||0))+(n[2]||"px"):t}function C(e,t,i,n,r){for(var s=i===(n?"border":"content")?4:"width"===t?1:0,o=0;4>s;s+=2)"margin"===i&&(o+=Z.css(e,i+xe[s],!0,r)),n?("content"===i&&(o-=Z.css(e,"padding"+xe[s],!0,r)),"margin"!==i&&(o-=Z.css(e,"border"+xe[s]+"Width",!0,r))):(o+=Z.css(e,"padding"+xe[s],!0,r),"padding"!==i&&(o+=Z.css(e,"border"+xe[s]+"Width",!0,r)));return o}function E(e,t,i){var n=!0,r="width"===t?e.offsetWidth:e.offsetHeight,s=He(e),o="border-box"===Z.css(e,"boxSizing",!1,s);if(0>=r||null==r){if(r=w(e,t,s),(0>r||null==r)&&(r=e.style[t]),We.test(r))return r;n=o&&(X.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+C(e,t,i||(o?"border":"content"),n,s)+"px"}function F(e,t){for(var i,n,r,s=[],o=0,a=e.length;a>o;o++)n=e[o],n.style&&(s[o]=_e.get(n,"olddisplay"),i=n.style.display,t?(s[o]||"none"!==i||(n.style.display=""),""===n.style.display&&Ae(n)&&(s[o]=_e.access(n,"olddisplay",y(n.nodeName)))):(r=Ae(n),"none"===i&&r||_e.set(n,"olddisplay",r?i:Z.css(n,"display"))));for(o=0;a>o;o++)n=e[o],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?s[o]||"":"none"));return e}function S(e,t,i,n,r){return new S.prototype.init(e,t,i,n,r)}function D(){return setTimeout(function(){Xe=void 0}),Xe=Z.now()}function $(e,t){var i,n=0,r={height:e};for(t=t?1:0;4>n;n+=2-t)i=xe[n],r["margin"+i]=r["padding"+i]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,i){for(var n,r=(it[t]||[]).concat(it["*"]),s=0,o=r.length;o>s;s++)if(n=r[s].call(i,t,e))return n}function T(e,t,i){var n,r,s,o,a,c,l,h,u=this,d={},p=e.style,g=e.nodeType&&Ae(e),f=_e.get(e,"fxshow");i.queue||(a=Z._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,c=a.empty.fire,a.empty.fire=function(){a.unqueued||c()}),a.unqueued++,u.always(function(){u.always(function(){a.unqueued--,Z.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(i.overflow=[p.overflow,p.overflowX,p.overflowY],l=Z.css(e,"display"),h="none"===l?_e.get(e,"olddisplay")||y(e.nodeName):l,"inline"===h&&"none"===Z.css(e,"float")&&(p.display="inline-block")),i.overflow&&(p.overflow="hidden",u.always(function(){p.overflow=i.overflow[0],p.overflowX=i.overflow[1],p.overflowY=i.overflow[2]}));for(n in t)if(r=t[n],Je.exec(r)){if(delete t[n],s=s||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!f||void 0===f[n])continue;g=!0}d[n]=f&&f[n]||Z.style(e,n)}else l=void 0;if(Z.isEmptyObject(d))"inline"===("none"===l?y(e.nodeName):l)&&(p.display=l);else{f?"hidden"in f&&(g=f.hidden):f=_e.access(e,"fxshow",{}),s&&(f.hidden=!g),g?Z(e).show():u.done(function(){Z(e).hide()}),u.done(function(){var t;_e.remove(e,"fxshow");for(t in d)Z.style(e,t,d[t])});for(n in d)o=B(g?f[n]:0,n,u),n in f||(f[n]=o.start,g&&(o.end=o.start,o.start="width"===n||"height"===n?1:0))}}function L(e,t){var i,n,r,s,o;for(i in e)if(n=Z.camelCase(i),r=t[n],s=e[i],Z.isArray(s)&&(r=s[1],s=e[i]=s[0]),i!==n&&(e[n]=s,delete e[i]),o=Z.cssHooks[n],o&&"expand"in o){s=o.expand(s),delete e[n];for(i in s)i in e||(e[i]=s[i],t[i]=r)}else t[n]=r}function R(e,t,i){var n,r,s=0,o=tt.length,a=Z.Deferred().always(function(){delete c.elem}),c=function(){if(r)return!1;for(var t=Xe||D(),i=Math.max(0,l.startTime+l.duration-t),n=i/l.duration||0,s=1-n,o=0,c=l.tweens.length;c>o;o++)l.tweens[o].run(s);return a.notifyWith(e,[l,s,i]),1>s&&c?i:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:Z.extend({},t),opts:Z.extend(!0,{specialEasing:{}},i),originalProperties:t,originalOptions:i,startTime:Xe||D(),duration:i.duration,tweens:[],createTween:function(t,i){var n=Z.Tween(e,l.opts,t,i,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(n),n},stop:function(t){var i=0,n=t?l.tweens.length:0;if(r)return this;for(r=!0;n>i;i++)l.tweens[i].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),h=l.props;for(L(h,l.opts.specialEasing);o>s;s++)if(n=tt[s].call(l,e,h,l.opts))return n;return Z.map(h,B,l),Z.isFunction(l.opts.start)&&l.opts.start.call(e,l),Z.fx.timer(Z.extend(c,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function M(e){return function(t,i){"string"!=typeof t&&(i=t,t="*");var n,r=0,s=t.toLowerCase().match(pe)||[];if(Z.isFunction(i))for(;n=s[r++];)"+"===n[0]?(n=n.slice(1)||"*",(e[n]=e[n]||[]).unshift(i)):(e[n]=e[n]||[]).push(i)}}function O(e,t,i,n){function r(a){var c;return s[a]=!0,Z.each(e[a]||[],function(e,a){var l=a(t,i,n);return"string"!=typeof l||o||s[l]?o?!(c=l):void 0:(t.dataTypes.unshift(l),r(l),!1)}),c}var s={},o=e===bt;return r(t.dataTypes[0])||!s["*"]&&r("*")}function I(e,t){var i,n,r=Z.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&Z.extend(!0,e,n),e}function q(e,t,i){for(var n,r,s,o,a=e.contents,c=e.dataTypes;"*"===c[0];)c.shift(),void 0===n&&(n=e.mimeType||t.getResponseHeader("Content-Type"));if(n)for(r in a)if(a[r]&&a[r].test(n)){c.unshift(r);break}if(c[0]in i)s=c[0];else{for(r in i){if(!c[0]||e.converters[r+" "+c[0]]){s=r;break}o||(o=r)}s=s||o}return s?(s!==c[0]&&c.unshift(s),i[s]):void 0}function P(e,t,i,n){var r,s,o,a,c,l={},h=e.dataTypes.slice();if(h[1])for(o in e.converters)l[o.toLowerCase()]=e.converters[o];for(s=h.shift();s;)if(e.responseFields[s]&&(i[e.responseFields[s]]=t),!c&&n&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),c=s,s=h.shift())if("*"===s)s=c;else if("*"!==c&&c!==s){if(o=l[c+" "+s]||l["* "+s],!o)for(r in l)if(a=r.split(" "),a[1]===s&&(o=l[c+" "+a[0]]||l["* "+a[0]])){o===!0?o=l[r]:l[r]!==!0&&(s=a[0],h.unshift(a[1]));break}if(o!==!0)if(o&&e["throws"])t=o(t);else try{t=o(t)}catch(u){return{state:"parsererror",error:o?u:"No conversion from "+c+" to "+s}}}return{state:"success",data:t}}function N(e,t,i,n){var r;if(Z.isArray(t))Z.each(t,function(t,r){i||kt.test(e)?n(e,r):N(e+"["+("object"==typeof r?t:"")+"]",r,i,n)});else if(i||"object"!==Z.type(t))n(e,t);else for(r in t)N(e+"["+r+"]",t[r],i,n)}function z(e){return Z.isWindow(e)?e:9===e.nodeType&&e.defaultView}var W=[],H=W.slice,j=W.concat,U=W.push,V=W.indexOf,G={},Y=G.toString,K=G.hasOwnProperty,X={},Q=e.document,J="2.1.4",Z=function(e,t){return new Z.fn.init(e,t)},ee=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,te=/^-ms-/,ie=/-([\da-z])/gi,ne=function(e,t){return t.toUpperCase()};Z.fn=Z.prototype={jquery:J,constructor:Z,selector:"",length:0,toArray:function(){return H.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:H.call(this)},pushStack:function(e){var t=Z.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return Z.each(this,e,t)},map:function(e){return this.pushStack(Z.map(this,function(t,i){return e.call(t,i,t)}))},slice:function(){return this.pushStack(H.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,i=+e+(0>e?t:0);return this.pushStack(i>=0&&t>i?[this[i]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:U,sort:W.sort,splice:W.splice},Z.extend=Z.fn.extend=function(){var e,t,i,n,r,s,o=arguments[0]||{},a=1,c=arguments.length,l=!1;for("boolean"==typeof o&&(l=o,o=arguments[a]||{},a++),"object"==typeof o||Z.isFunction(o)||(o={}),a===c&&(o=this,a--);c>a;a++)if(null!=(e=arguments[a]))for(t in e)i=o[t],n=e[t],o!==n&&(l&&n&&(Z.isPlainObject(n)||(r=Z.isArray(n)))?(r?(r=!1,s=i&&Z.isArray(i)?i:[]):s=i&&Z.isPlainObject(i)?i:{},o[t]=Z.extend(l,s,n)):void 0!==n&&(o[t]=n));return o},Z.extend({expando:"jQuery"+(J+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===Z.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!Z.isArray(e)&&e-parseFloat(e)+1>=0},isPlainObject:function(e){return"object"!==Z.type(e)||e.nodeType||Z.isWindow(e)?!1:e.constructor&&!K.call(e.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?G[Y.call(e)]||"object":typeof e},globalEval:function(e){var t,i=eval;e=Z.trim(e),e&&(1===e.indexOf("use strict")?(t=Q.createElement("script"),t.text=e,Q.head.appendChild(t).parentNode.removeChild(t)):i(e))},camelCase:function(e){return e.replace(te,"ms-").replace(ie,ne)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,s=0,o=e.length,a=i(e);if(n){if(a)for(;o>s&&(r=t.apply(e[s],n),r!==!1);s++);else for(s in e)if(r=t.apply(e[s],n),r===!1)break}else if(a)for(;o>s&&(r=t.call(e[s],s,e[s]),r!==!1);s++);else for(s in e)if(r=t.call(e[s],s,e[s]),r===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ee,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(i(Object(e))?Z.merge(n,"string"==typeof e?[e]:e):U.call(n,e)),n},inArray:function(e,t,i){return null==t?-1:V.call(t,e,i)},merge:function(e,t){for(var i=+t.length,n=0,r=e.length;i>n;n++)e[r++]=t[n];return e.length=r,e},grep:function(e,t,i){for(var n,r=[],s=0,o=e.length,a=!i;o>s;s++)n=!t(e[s],s),n!==a&&r.push(e[s]);return r},map:function(e,t,n){var r,s=0,o=e.length,a=i(e),c=[];if(a)for(;o>s;s++)r=t(e[s],s,n),null!=r&&c.push(r);else for(s in e)r=t(e[s],s,n),null!=r&&c.push(r);return j.apply([],c)},guid:1,proxy:function(e,t){var i,n,r;return"string"==typeof t&&(i=e[t],t=e,e=i),Z.isFunction(e)?(n=H.call(arguments,2),r=function(){return e.apply(t||this,n.concat(H.call(arguments)))},r.guid=e.guid=e.guid||Z.guid++,r):void 0},now:Date.now,support:X}),Z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){G["[object "+t+"]"]=t.toLowerCase()});var re=function(e){function t(e,t,i,n){var r,s,o,a,c,l,u,p,g,f;if((t?t.ownerDocument||t:N)!==T&&B(t),t=t||T,i=i||[],a=t.nodeType,"string"!=typeof e||!e||1!==a&&9!==a&&11!==a)return i;if(!n&&R){if(11!==a&&(r=ve.exec(e)))if(o=r[1]){if(9===a){if(s=t.getElementById(o),!s||!s.parentNode)return i;if(s.id===o)return i.push(s),i}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(o))&&q(t,s)&&s.id===o)return i.push(s),i}else{if(r[2])return J.apply(i,t.getElementsByTagName(e)),i;if((o=r[3])&&w.getElementsByClassName)return J.apply(i,t.getElementsByClassName(o)),i}if(w.qsa&&(!M||!M.test(e))){if(p=u=P,g=t,f=1!==a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){for(l=C(e),(u=t.getAttribute("id"))?p=u.replace(ye,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",c=l.length;c--;)l[c]=p+d(l[c]);g=be.test(e)&&h(t.parentNode)||t,f=l.join(",")}if(f)try{return J.apply(i,g.querySelectorAll(f)),i}catch(m){}finally{u||t.removeAttribute("id")}}}return F(e.replace(ce,"$1"),t,i,n)}function i(){function e(i,n){return t.push(i+" ")>x.cacheLength&&delete e[t.shift()],e[i+" "]=n}var t=[];return e}function n(e){return e[P]=!0,e}function r(e){var t=T.createElement("div");try{return!!e(t)}catch(i){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function s(e,t){for(var i=e.split("|"),n=e.length;n--;)x.attrHandle[i[n]]=t}function o(e,t){var i=t&&e,n=i&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||G)-(~e.sourceIndex||G);if(n)return n;if(i)for(;i=i.nextSibling;)if(i===t)return-1;return e?1:-1}function a(e){return function(t){var i=t.nodeName.toLowerCase();return"input"===i&&t.type===e}}function c(e){return function(t){var i=t.nodeName.toLowerCase();return("input"===i||"button"===i)&&t.type===e}}function l(e){return n(function(t){return t=+t,n(function(i,n){for(var r,s=e([],i.length,t),o=s.length;o--;)i[r=s[o]]&&(i[r]=!(n[r]=i[r]))})})}function h(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function u(){}function d(e){for(var t=0,i=e.length,n="";i>t;t++)n+=e[t].value;return n}function p(e,t,i){var n=t.dir,r=i&&"parentNode"===n,s=W++;return t.first?function(t,i,s){for(;t=t[n];)if(1===t.nodeType||r)return e(t,i,s)}:function(t,i,o){var a,c,l=[z,s];if(o){for(;t=t[n];)if((1===t.nodeType||r)&&e(t,i,o))return!0}else for(;t=t[n];)if(1===t.nodeType||r){if(c=t[P]||(t[P]={}),(a=c[n])&&a[0]===z&&a[1]===s)return l[2]=a[2];if(c[n]=l,l[2]=e(t,i,o))return!0}}}function g(e){return e.length>1?function(t,i,n){for(var r=e.length;r--;)if(!e[r](t,i,n))return!1;return!0}:e[0]}function f(e,i,n){for(var r=0,s=i.length;s>r;r++)t(e,i[r],n);return n}function m(e,t,i,n,r){for(var s,o=[],a=0,c=e.length,l=null!=t;c>a;a++)(s=e[a])&&(!i||i(s,n,r))&&(o.push(s),l&&t.push(a));return o}function _(e,t,i,r,s,o){return r&&!r[P]&&(r=_(r)),s&&!s[P]&&(s=_(s,o)),n(function(n,o,a,c){var l,h,u,d=[],p=[],g=o.length,_=n||f(t||"*",a.nodeType?[a]:a,[]),v=!e||!n&&t?_:m(_,d,e,a,c),b=i?s||(n?e:g||r)?[]:o:v;if(i&&i(v,b,a,c),r)for(l=m(b,p),r(l,[],a,c),h=l.length;h--;)(u=l[h])&&(b[p[h]]=!(v[p[h]]=u));if(n){if(s||e){if(s){for(l=[],h=b.length;h--;)(u=b[h])&&l.push(v[h]=u);s(null,b=[],l,c)}for(h=b.length;h--;)(u=b[h])&&(l=s?ee(n,u):d[h])>-1&&(n[l]=!(o[l]=u))}}else b=m(b===o?b.splice(g,b.length):b),s?s(null,o,b,c):J.apply(o,b)})}function v(e){for(var t,i,n,r=e.length,s=x.relative[e[0].type],o=s||x.relative[" "],a=s?1:0,c=p(function(e){return e===t},o,!0),l=p(function(e){return ee(t,e)>-1},o,!0),h=[function(e,i,n){var r=!s&&(n||i!==S)||((t=i).nodeType?c(e,i,n):l(e,i,n));return t=null,r}];r>a;a++)if(i=x.relative[e[a].type])h=[p(g(h),i)];else{if(i=x.filter[e[a].type].apply(null,e[a].matches),i[P]){for(n=++a;r>n&&!x.relative[e[n].type];n++);return _(a>1&&g(h),a>1&&d(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ce,"$1"),i,n>a&&v(e.slice(a,n)),r>n&&v(e=e.slice(n)),r>n&&d(e))}h.push(i)}return g(h)}function b(e,i){var r=i.length>0,s=e.length>0,o=function(n,o,a,c,l){var h,u,d,p=0,g="0",f=n&&[],_=[],v=S,b=n||s&&x.find.TAG("*",l),y=z+=null==v?1:Math.random()||.1,w=b.length;for(l&&(S=o!==T&&o);g!==w&&null!=(h=b[g]);g++){if(s&&h){for(u=0;d=e[u++];)if(d(h,o,a)){c.push(h);break}l&&(z=y)}r&&((h=!d&&h)&&p--,n&&f.push(h))}if(p+=g,r&&g!==p){for(u=0;d=i[u++];)d(f,_,o,a);if(n){if(p>0)for(;g--;)f[g]||_[g]||(_[g]=X.call(c));_=m(_)}J.apply(c,_),l&&!n&&_.length>0&&p+i.length>1&&t.uniqueSort(c)}return l&&(z=y,S=v),f};return r?n(o):o}var y,w,x,A,k,C,E,F,S,D,$,B,T,L,R,M,O,I,q,P="sizzle"+1*new Date,N=e.document,z=0,W=0,H=i(),j=i(),U=i(),V=function(e,t){return e===t&&($=!0),0},G=1<<31,Y={}.hasOwnProperty,K=[],X=K.pop,Q=K.push,J=K.push,Z=K.slice,ee=function(e,t){for(var i=0,n=e.length;n>i;i++)if(e[i]===t)return i;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ie="[\\x20\\t\\r\\n\\f]",ne="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re=ne.replace("w","w#"),se="\\["+ie+"*("+ne+")(?:"+ie+"*([*^$|!~]?=)"+ie+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ie+"*\\]",oe=":("+ne+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+se+")*)|.*)\\)|)",ae=new RegExp(ie+"+","g"),ce=new RegExp("^"+ie+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ie+"+$","g"),le=new RegExp("^"+ie+"*,"+ie+"*"),he=new RegExp("^"+ie+"*([>+~]|"+ie+")"+ie+"*"),ue=new RegExp("="+ie+"*([^\\]'\"]*?)"+ie+"*\\]","g"),de=new RegExp(oe),pe=new RegExp("^"+re+"$"),ge={ID:new RegExp("^#("+ne+")"),CLASS:new RegExp("^\\.("+ne+")"),TAG:new RegExp("^("+ne.replace("w","w*")+")"),ATTR:new RegExp("^"+se),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ie+"*(even|odd|(([+-]|)(\\d*)n|)"+ie+"*(?:([+-]|)"+ie+"*(\\d+)|))"+ie+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ie+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ie+"*((?:-\\d)?\\d*)"+ie+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,_e=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,be=/[+~]/,ye=/'|\\/g,we=new RegExp("\\\\([\\da-f]{1,6}"+ie+"?|("+ie+")|.)","ig"),xe=function(e,t,i){var n="0x"+t-65536;return n!==n||i?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},Ae=function(){B()};try{J.apply(K=Z.call(N.childNodes),N.childNodes),K[N.childNodes.length].nodeType}catch(ke){J={apply:K.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var i=e.length,n=0;e[i++]=t[n++];);e.length=i-1}}}w=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=t.setDocument=function(e){var t,i,n=e?e.ownerDocument||e:N;return n!==T&&9===n.nodeType&&n.documentElement?(T=n,L=n.documentElement,i=n.defaultView,i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",Ae,!1):i.attachEvent&&i.attachEvent("onunload",Ae)),R=!k(n),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_e.test(n.getElementsByClassName),w.getById=r(function(e){return L.appendChild(e).id=P,!n.getElementsByName||!n.getElementsByName(P).length}),w.getById?(x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&R){var i=t.getElementById(e);return i&&i.parentNode?[i]:[]}},x.filter.ID=function(e){var t=e.replace(we,xe);return function(e){return e.getAttribute("id")===t}}):(delete x.find.ID,x.filter.ID=function(e){var t=e.replace(we,xe);return function(e){var i="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return i&&i.value===t}}),x.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var i,n=[],r=0,s=t.getElementsByTagName(e);if("*"===e){for(;i=s[r++];)1===i.nodeType&&n.push(i);return n}return s},x.find.CLASS=w.getElementsByClassName&&function(e,t){return R?t.getElementsByClassName(e):void 0},O=[],M=[],(w.qsa=_e.test(n.querySelectorAll))&&(r(function(e){L.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&M.push("[*^$]="+ie+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||M.push("\\["+ie+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||M.push("~="),e.querySelectorAll(":checked").length||M.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||M.push(".#.+[+~]")}),r(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&M.push("name"+ie+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),M.push(",.*:")})),(w.matchesSelector=_e.test(I=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&r(function(e){w.disconnectedMatch=I.call(e,"div"),I.call(e,"[s!='']:x"),O.push("!=",oe)}),M=M.length&&new RegExp(M.join("|")),O=O.length&&new RegExp(O.join("|")),t=_e.test(L.compareDocumentPosition),q=t||_e.test(L.contains)?function(e,t){var i=9===e.nodeType?e.documentElement:e,n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return $=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!w.sortDetached&&t.compareDocumentPosition(e)===i?e===n||e.ownerDocument===N&&q(N,e)?-1:t===n||t.ownerDocument===N&&q(N,t)?1:D?ee(D,e)-ee(D,t):0:4&i?-1:1)}:function(e,t){if(e===t)return $=!0,0;var i,r=0,s=e.parentNode,a=t.parentNode,c=[e],l=[t];if(!s||!a)return e===n?-1:t===n?1:s?-1:a?1:D?ee(D,e)-ee(D,t):0;if(s===a)return o(e,t);for(i=e;i=i.parentNode;)c.unshift(i);for(i=t;i=i.parentNode;)l.unshift(i);for(;c[r]===l[r];)r++;return r?o(c[r],l[r]):c[r]===N?-1:l[r]===N?1:0},n):T},t.matches=function(e,i){return t(e,null,null,i)},t.matchesSelector=function(e,i){if((e.ownerDocument||e)!==T&&B(e),i=i.replace(ue,"='$1']"),!(!w.matchesSelector||!R||O&&O.test(i)||M&&M.test(i)))try{var n=I.call(e,i);if(n||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return t(i,T,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==T&&B(e),q(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==T&&B(e);var i=x.attrHandle[t.toLowerCase()],n=i&&Y.call(x.attrHandle,t.toLowerCase())?i(e,t,!R):void 0;return void 0!==n?n:w.attributes||!R?e.getAttribute(t):(n=e.getAttributeNode(t))&&n.specified?n.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,i=[],n=0,r=0;if($=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(V),$){for(;t=e[r++];)t===e[r]&&(n=i.push(r));for(;n--;)e.splice(i[n],1)}return D=null,e},A=t.getText=function(e){var t,i="",n=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)i+=A(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[n++];)i+=A(t);return i},x=t.selectors={cacheLength:50,createPseudo:n,match:ge,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(we,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(we,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,i=!e[6]&&e[2];return ge.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":i&&de.test(i)&&(t=C(i,!0))&&(t=i.indexOf(")",i.length-t)-i.length)&&(e[0]=e[0].slice(0,t),e[2]=i.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(we,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=H[e+" "];return t||(t=new RegExp("(^|"+ie+")"+e+"("+ie+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,i,n){return function(r){var s=t.attr(r,e);return null==s?"!="===i:i?(s+="","="===i?s===n:"!="===i?s!==n:"^="===i?n&&0===s.indexOf(n):"*="===i?n&&s.indexOf(n)>-1:"$="===i?n&&s.slice(-n.length)===n:"~="===i?(" "+s.replace(ae," ")+" ").indexOf(n)>-1:"|="===i?s===n||s.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,i,n,r){var s="nth"!==e.slice(0,3),o="last"!==e.slice(-4),a="of-type"===t;return 1===n&&0===r?function(e){return!!e.parentNode}:function(t,i,c){var l,h,u,d,p,g,f=s!==o?"nextSibling":"previousSibling",m=t.parentNode,_=a&&t.nodeName.toLowerCase(),v=!c&&!a;if(m){if(s){for(;f;){for(u=t;u=u[f];)if(a?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;g=f="only"===e&&!g&&"nextSibling"}return!0}if(g=[o?m.firstChild:m.lastChild],o&&v){for(h=m[P]||(m[P]={}),l=h[e]||[],p=l[0]===z&&l[1],d=l[0]===z&&l[2],u=p&&m.childNodes[p];u=++p&&u&&u[f]||(d=p=0)||g.pop();)if(1===u.nodeType&&++d&&u===t){h[e]=[z,p,d];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===z)d=l[1];else for(;(u=++p&&u&&u[f]||(d=p=0)||g.pop())&&((a?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++d||(v&&((u[P]||(u[P]={}))[e]=[z,d]),u!==t)););return d-=r,d===n||d%n===0&&d/n>=0}}},PSEUDO:function(e,i){var r,s=x.pseudos[e]||x.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return s[P]?s(i):s.length>1?(r=[e,e,"",i],x.setFilters.hasOwnProperty(e.toLowerCase())?n(function(e,t){for(var n,r=s(e,i),o=r.length;o--;)n=ee(e,r[o]),e[n]=!(t[n]=r[o])}):function(e){return s(e,0,r)}):s}},pseudos:{not:n(function(e){var t=[],i=[],r=E(e.replace(ce,"$1"));return r[P]?n(function(e,t,i,n){for(var s,o=r(e,null,n,[]),a=e.length;a--;)(s=o[a])&&(e[a]=!(t[a]=s))}):function(e,n,s){return t[0]=e,r(t,null,s,i),t[0]=null,!i.pop()}}),has:n(function(e){return function(i){return t(e,i).length>0}}),contains:n(function(e){return e=e.replace(we,xe),function(t){return(t.textContent||t.innerText||A(t)).indexOf(e)>-1}}),lang:n(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(we,xe).toLowerCase(),function(t){var i;do if(i=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return i=i.toLowerCase(),i===e||0===i.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var i=e.location&&e.location.hash;return i&&i.slice(1)===t.id},root:function(e){return e===L},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,i){return[0>i?i+t:i]}),even:l(function(e,t){for(var i=0;t>i;i+=2)e.push(i);return e}),odd:l(function(e,t){for(var i=1;t>i;i+=2)e.push(i);return e}),lt:l(function(e,t,i){for(var n=0>i?i+t:i;--n>=0;)e.push(n);return e}),gt:l(function(e,t,i){for(var n=0>i?i+t:i;++n2&&"ID"===(o=s[0]).type&&w.getById&&9===t.nodeType&&R&&x.relative[s[1].type]){if(t=(x.find.ID(o.matches[0].replace(we,xe),t)||[])[0],!t)return i;l&&(t=t.parentNode),e=e.slice(s.shift().value.length)}for(r=ge.needsContext.test(e)?0:s.length;r--&&(o=s[r],!x.relative[a=o.type]);)if((c=x.find[a])&&(n=c(o.matches[0].replace(we,xe),be.test(s[0].type)&&h(t.parentNode)||t))){if(s.splice(r,1),e=n.length&&d(s),!e)return J.apply(i,n),i;break}}return(l||E(e,u))(n,t,!R,i,be.test(e)&&h(t.parentNode)||t),i},w.sortStable=P.split("").sort(V).join("")===P,w.detectDuplicates=!!$,B(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(T.createElement("div"))}),r(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||s("type|href|height|width",function(e,t,i){return i?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||s("value",function(e,t,i){return i||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||s(te,function(e,t,i){var n;return i?void 0:e[t]===!0?t.toLowerCase():(n=e.getAttributeNode(t))&&n.specified?n.value:null}),t}(e);Z.find=re,Z.expr=re.selectors,Z.expr[":"]=Z.expr.pseudos,Z.unique=re.uniqueSort,Z.text=re.getText,Z.isXMLDoc=re.isXML,Z.contains=re.contains;var se=Z.expr.match.needsContext,oe=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ae=/^.[^:#\[\.,]*$/;Z.filter=function(e,t,i){var n=t[0];return i&&(e=":not("+e+")"),1===t.length&&1===n.nodeType?Z.find.matchesSelector(n,e)?[n]:[]:Z.find.matches(e,Z.grep(t,function(e){return 1===e.nodeType}))},Z.fn.extend({find:function(e){var t,i=this.length,n=[],r=this;
-if("string"!=typeof e)return this.pushStack(Z(e).filter(function(){for(t=0;i>t;t++)if(Z.contains(r[t],this))return!0}));for(t=0;i>t;t++)Z.find(e,r[t],n);return n=this.pushStack(i>1?Z.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(n(this,e||[],!1))},not:function(e){return this.pushStack(n(this,e||[],!0))},is:function(e){return!!n(this,"string"==typeof e&&se.test(e)?Z(e):e||[],!1).length}});var ce,le=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,he=Z.fn.init=function(e,t){var i,n;if(!e)return this;if("string"==typeof e){if(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:le.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||ce).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof Z?t[0]:t,Z.merge(this,Z.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:Q,!0)),oe.test(i[1])&&Z.isPlainObject(t))for(i in t)Z.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return n=Q.getElementById(i[2]),n&&n.parentNode&&(this.length=1,this[0]=n),this.context=Q,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):Z.isFunction(e)?"undefined"!=typeof ce.ready?ce.ready(e):e(Z):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),Z.makeArray(e,this))};he.prototype=Z.fn,ce=Z(Q);var ue=/^(?:parents|prev(?:Until|All))/,de={children:!0,contents:!0,next:!0,prev:!0};Z.extend({dir:function(e,t,i){for(var n=[],r=void 0!==i;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&Z(e).is(i))break;n.push(e)}return n},sibling:function(e,t){for(var i=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&i.push(e);return i}}),Z.fn.extend({has:function(e){var t=Z(e,this),i=t.length;return this.filter(function(){for(var e=0;i>e;e++)if(Z.contains(this,t[e]))return!0})},closest:function(e,t){for(var i,n=0,r=this.length,s=[],o=se.test(e)||"string"!=typeof e?Z(e,t||this.context):0;r>n;n++)for(i=this[n];i&&i!==t;i=i.parentNode)if(i.nodeType<11&&(o?o.index(i)>-1:1===i.nodeType&&Z.find.matchesSelector(i,e))){s.push(i);break}return this.pushStack(s.length>1?Z.unique(s):s)},index:function(e){return e?"string"==typeof e?V.call(Z(e),this[0]):V.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(Z.unique(Z.merge(this.get(),Z(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),Z.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Z.dir(e,"parentNode")},parentsUntil:function(e,t,i){return Z.dir(e,"parentNode",i)},next:function(e){return r(e,"nextSibling")},prev:function(e){return r(e,"previousSibling")},nextAll:function(e){return Z.dir(e,"nextSibling")},prevAll:function(e){return Z.dir(e,"previousSibling")},nextUntil:function(e,t,i){return Z.dir(e,"nextSibling",i)},prevUntil:function(e,t,i){return Z.dir(e,"previousSibling",i)},siblings:function(e){return Z.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return Z.sibling(e.firstChild)},contents:function(e){return e.contentDocument||Z.merge([],e.childNodes)}},function(e,t){Z.fn[e]=function(i,n){var r=Z.map(this,t,i);return"Until"!==e.slice(-5)&&(n=i),n&&"string"==typeof n&&(r=Z.filter(n,r)),this.length>1&&(de[e]||Z.unique(r),ue.test(e)&&r.reverse()),this.pushStack(r)}});var pe=/\S+/g,ge={};Z.Callbacks=function(e){e="string"==typeof e?ge[e]||s(e):Z.extend({},e);var t,i,n,r,o,a,c=[],l=!e.once&&[],h=function(s){for(t=e.memory&&s,i=!0,a=r||0,r=0,o=c.length,n=!0;c&&o>a;a++)if(c[a].apply(s[0],s[1])===!1&&e.stopOnFalse){t=!1;break}n=!1,c&&(l?l.length&&h(l.shift()):t?c=[]:u.disable())},u={add:function(){if(c){var i=c.length;!function s(t){Z.each(t,function(t,i){var n=Z.type(i);"function"===n?e.unique&&u.has(i)||c.push(i):i&&i.length&&"string"!==n&&s(i)})}(arguments),n?o=c.length:t&&(r=i,h(t))}return this},remove:function(){return c&&Z.each(arguments,function(e,t){for(var i;(i=Z.inArray(t,c,i))>-1;)c.splice(i,1),n&&(o>=i&&o--,a>=i&&a--)}),this},has:function(e){return e?Z.inArray(e,c)>-1:!(!c||!c.length)},empty:function(){return c=[],o=0,this},disable:function(){return c=l=t=void 0,this},disabled:function(){return!c},lock:function(){return l=void 0,t||u.disable(),this},locked:function(){return!l},fireWith:function(e,t){return!c||i&&!l||(t=t||[],t=[e,t.slice?t.slice():t],n?l.push(t):h(t)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},Z.extend({Deferred:function(e){var t=[["resolve","done",Z.Callbacks("once memory"),"resolved"],["reject","fail",Z.Callbacks("once memory"),"rejected"],["notify","progress",Z.Callbacks("memory")]],i="pending",n={state:function(){return i},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return Z.Deferred(function(i){Z.each(t,function(t,s){var o=Z.isFunction(e[t])&&e[t];r[s[1]](function(){var e=o&&o.apply(this,arguments);e&&Z.isFunction(e.promise)?e.promise().done(i.resolve).fail(i.reject).progress(i.notify):i[s[0]+"With"](this===n?i.promise():this,o?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?Z.extend(e,n):n}},r={};return n.pipe=n.then,Z.each(t,function(e,s){var o=s[2],a=s[3];n[s[1]]=o.add,a&&o.add(function(){i=a},t[1^e][2].disable,t[2][2].lock),r[s[0]]=function(){return r[s[0]+"With"](this===r?n:this,arguments),this},r[s[0]+"With"]=o.fireWith}),n.promise(r),e&&e.call(r,r),r},when:function(e){var t,i,n,r=0,s=H.call(arguments),o=s.length,a=1!==o||e&&Z.isFunction(e.promise)?o:0,c=1===a?e:Z.Deferred(),l=function(e,i,n){return function(r){i[e]=this,n[e]=arguments.length>1?H.call(arguments):r,n===t?c.notifyWith(i,n):--a||c.resolveWith(i,n)}};if(o>1)for(t=new Array(o),i=new Array(o),n=new Array(o);o>r;r++)s[r]&&Z.isFunction(s[r].promise)?s[r].promise().done(l(r,n,s)).fail(c.reject).progress(l(r,i,t)):--a;return a||c.resolveWith(n,s),c.promise()}});var fe;Z.fn.ready=function(e){return Z.ready.promise().done(e),this},Z.extend({isReady:!1,readyWait:1,holdReady:function(e){e?Z.readyWait++:Z.ready(!0)},ready:function(e){(e===!0?--Z.readyWait:Z.isReady)||(Z.isReady=!0,e!==!0&&--Z.readyWait>0||(fe.resolveWith(Q,[Z]),Z.fn.triggerHandler&&(Z(Q).triggerHandler("ready"),Z(Q).off("ready"))))}}),Z.ready.promise=function(t){return fe||(fe=Z.Deferred(),"complete"===Q.readyState?setTimeout(Z.ready):(Q.addEventListener("DOMContentLoaded",o,!1),e.addEventListener("load",o,!1))),fe.promise(t)},Z.ready.promise();var me=Z.access=function(e,t,i,n,r,s,o){var a=0,c=e.length,l=null==i;if("object"===Z.type(i)){r=!0;for(a in i)Z.access(e,t,a,i[a],!0,s,o)}else if(void 0!==n&&(r=!0,Z.isFunction(n)||(o=!0),l&&(o?(t.call(e,n),t=null):(l=t,t=function(e,t,i){return l.call(Z(e),i)})),t))for(;c>a;a++)t(e[a],i,o?n:n.call(e[a],a,t(e[a],i)));return r?e:l?t.call(e):c?t(e[0],i):s};Z.acceptData=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType},a.uid=1,a.accepts=Z.acceptData,a.prototype={key:function(e){if(!a.accepts(e))return 0;var t={},i=e[this.expando];if(!i){i=a.uid++;try{t[this.expando]={value:i},Object.defineProperties(e,t)}catch(n){t[this.expando]=i,Z.extend(e,t)}}return this.cache[i]||(this.cache[i]={}),i},set:function(e,t,i){var n,r=this.key(e),s=this.cache[r];if("string"==typeof t)s[t]=i;else if(Z.isEmptyObject(s))Z.extend(this.cache[r],t);else for(n in t)s[n]=t[n];return s},get:function(e,t){var i=this.cache[this.key(e)];return void 0===t?i:i[t]},access:function(e,t,i){var n;return void 0===t||t&&"string"==typeof t&&void 0===i?(n=this.get(e,t),void 0!==n?n:this.get(e,Z.camelCase(t))):(this.set(e,t,i),void 0!==i?i:t)},remove:function(e,t){var i,n,r,s=this.key(e),o=this.cache[s];if(void 0===t)this.cache[s]={};else{Z.isArray(t)?n=t.concat(t.map(Z.camelCase)):(r=Z.camelCase(t),t in o?n=[t,r]:(n=r,n=n in o?[n]:n.match(pe)||[])),i=n.length;for(;i--;)delete o[n[i]]}},hasData:function(e){return!Z.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}};var _e=new a,ve=new a,be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ye=/([A-Z])/g;Z.extend({hasData:function(e){return ve.hasData(e)||_e.hasData(e)},data:function(e,t,i){return ve.access(e,t,i)},removeData:function(e,t){ve.remove(e,t)},_data:function(e,t,i){return _e.access(e,t,i)},_removeData:function(e,t){_e.remove(e,t)}}),Z.fn.extend({data:function(e,t){var i,n,r,s=this[0],o=s&&s.attributes;if(void 0===e){if(this.length&&(r=ve.get(s),1===s.nodeType&&!_e.get(s,"hasDataAttrs"))){for(i=o.length;i--;)o[i]&&(n=o[i].name,0===n.indexOf("data-")&&(n=Z.camelCase(n.slice(5)),c(s,n,r[n])));_e.set(s,"hasDataAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.set(this,e)}):me(this,function(t){var i,n=Z.camelCase(e);if(s&&void 0===t){if(i=ve.get(s,e),void 0!==i)return i;if(i=ve.get(s,n),void 0!==i)return i;if(i=c(s,n,void 0),void 0!==i)return i}else this.each(function(){var i=ve.get(this,n);ve.set(this,n,t),-1!==e.indexOf("-")&&void 0!==i&&ve.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){ve.remove(this,e)})}}),Z.extend({queue:function(e,t,i){var n;return e?(t=(t||"fx")+"queue",n=_e.get(e,t),i&&(!n||Z.isArray(i)?n=_e.access(e,t,Z.makeArray(i)):n.push(i)),n||[]):void 0},dequeue:function(e,t){t=t||"fx";var i=Z.queue(e,t),n=i.length,r=i.shift(),s=Z._queueHooks(e,t),o=function(){Z.dequeue(e,t)};"inprogress"===r&&(r=i.shift(),n--),r&&("fx"===t&&i.unshift("inprogress"),delete s.stop,r.call(e,o,s)),!n&&s&&s.empty.fire()},_queueHooks:function(e,t){var i=t+"queueHooks";return _e.get(e,i)||_e.access(e,i,{empty:Z.Callbacks("once memory").add(function(){_e.remove(e,[t+"queue",i])})})}}),Z.fn.extend({queue:function(e,t){var i=2;return"string"!=typeof e&&(t=e,e="fx",i--),arguments.lengthx",X.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Ce="undefined";X.focusinBubbles="onfocusin"in e;var Ee=/^key/,Fe=/^(?:mouse|pointer|contextmenu)|click/,De=/^(?:focusinfocus|focusoutblur)$/,$e=/^([^.]*)(?:\.(.+)|)$/;Z.event={global:{},add:function(e,t,i,n,r){var s,o,a,c,l,h,u,d,p,g,f,m=_e.get(e);if(m)for(i.handler&&(s=i,i=s.handler,r=s.selector),i.guid||(i.guid=Z.guid++),(c=m.events)||(c=m.events={}),(o=m.handle)||(o=m.handle=function(t){return typeof Z!==Ce&&Z.event.triggered!==t.type?Z.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(pe)||[""],l=t.length;l--;)a=$e.exec(t[l])||[],p=f=a[1],g=(a[2]||"").split(".").sort(),p&&(u=Z.event.special[p]||{},p=(r?u.delegateType:u.bindType)||p,u=Z.event.special[p]||{},h=Z.extend({type:p,origType:f,data:n,handler:i,guid:i.guid,selector:r,needsContext:r&&Z.expr.match.needsContext.test(r),namespace:g.join(".")},s),(d=c[p])||(d=c[p]=[],d.delegateCount=0,u.setup&&u.setup.call(e,n,g,o)!==!1||e.addEventListener&&e.addEventListener(p,o,!1)),u.add&&(u.add.call(e,h),h.handler.guid||(h.handler.guid=i.guid)),r?d.splice(d.delegateCount++,0,h):d.push(h),Z.event.global[p]=!0)},remove:function(e,t,i,n,r){var s,o,a,c,l,h,u,d,p,g,f,m=_e.hasData(e)&&_e.get(e);if(m&&(c=m.events)){for(t=(t||"").match(pe)||[""],l=t.length;l--;)if(a=$e.exec(t[l])||[],p=f=a[1],g=(a[2]||"").split(".").sort(),p){for(u=Z.event.special[p]||{},p=(n?u.delegateType:u.bindType)||p,d=c[p]||[],a=a[2]&&new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=s=d.length;s--;)h=d[s],!r&&f!==h.origType||i&&i.guid!==h.guid||a&&!a.test(h.namespace)||n&&n!==h.selector&&("**"!==n||!h.selector)||(d.splice(s,1),h.selector&&d.delegateCount--,u.remove&&u.remove.call(e,h));o&&!d.length&&(u.teardown&&u.teardown.call(e,g,m.handle)!==!1||Z.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)Z.event.remove(e,p+t[l],i,n,!0);Z.isEmptyObject(c)&&(delete m.handle,_e.remove(e,"events"))}},trigger:function(t,i,n,r){var s,o,a,c,l,h,u,d=[n||Q],p=K.call(t,"type")?t.type:t,g=K.call(t,"namespace")?t.namespace.split("."):[];if(o=a=n=n||Q,3!==n.nodeType&&8!==n.nodeType&&!De.test(p+Z.event.triggered)&&(p.indexOf(".")>=0&&(g=p.split("."),p=g.shift(),g.sort()),l=p.indexOf(":")<0&&"on"+p,t=t[Z.expando]?t:new Z.Event(p,"object"==typeof t&&t),t.isTrigger=r?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),i=null==i?[t]:Z.makeArray(i,[t]),u=Z.event.special[p]||{},r||!u.trigger||u.trigger.apply(n,i)!==!1)){if(!r&&!u.noBubble&&!Z.isWindow(n)){for(c=u.delegateType||p,De.test(c+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||Q)&&d.push(a.defaultView||a.parentWindow||e)}for(s=0;(o=d[s++])&&!t.isPropagationStopped();)t.type=s>1?c:u.bindType||p,h=(_e.get(o,"events")||{})[t.type]&&_e.get(o,"handle"),h&&h.apply(o,i),h=l&&o[l],h&&h.apply&&Z.acceptData(o)&&(t.result=h.apply(o,i),t.result===!1&&t.preventDefault());return t.type=p,r||t.isDefaultPrevented()||u._default&&u._default.apply(d.pop(),i)!==!1||!Z.acceptData(n)||l&&Z.isFunction(n[p])&&!Z.isWindow(n)&&(a=n[l],a&&(n[l]=null),Z.event.triggered=p,n[p](),Z.event.triggered=void 0,a&&(n[l]=a)),t.result}},dispatch:function(e){e=Z.event.fix(e);var t,i,n,r,s,o=[],a=H.call(arguments),c=(_e.get(this,"events")||{})[e.type]||[],l=Z.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(o=Z.event.handlers.call(this,e,c),t=0;(r=o[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,i=0;(s=r.handlers[i++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(s.namespace))&&(e.handleObj=s,e.data=s.data,n=((Z.event.special[s.origType]||{}).handle||s.handler).apply(r.elem,a),void 0!==n&&(e.result=n)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var i,n,r,s,o=[],a=t.delegateCount,c=e.target;if(a&&c.nodeType&&(!e.button||"click"!==e.type))for(;c!==this;c=c.parentNode||this)if(c.disabled!==!0||"click"!==e.type){for(n=[],i=0;a>i;i++)s=t[i],r=s.selector+" ",void 0===n[r]&&(n[r]=s.needsContext?Z(r,this).index(c)>=0:Z.find(r,this,null,[c]).length),n[r]&&n.push(s);n.length&&o.push({elem:c,handlers:n})}return a]*)\/>/gi,Be=/<([\w:]+)/,Te=/<|?\w+;/,Le=/<(?:script|style|link)/i,Re=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^$|\/(?:java|ecma)script/i,Oe=/^true\/(.*)/,Ie=/^\s*\s*$/g,qe={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};qe.optgroup=qe.option,qe.tbody=qe.tfoot=qe.colgroup=qe.caption=qe.thead,qe.th=qe.td,Z.extend({clone:function(e,t,i){var n,r,s,o,a=e.cloneNode(!0),c=Z.contains(e.ownerDocument,e);if(!(X.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||Z.isXMLDoc(e)))for(o=_(a),s=_(e),n=0,r=s.length;r>n;n++)v(s[n],o[n]);if(t)if(i)for(s=s||_(e),o=o||_(a),n=0,r=s.length;r>n;n++)m(s[n],o[n]);else m(e,a);return o=_(a,"script"),o.length>0&&f(o,!c&&_(e,"script")),a},buildFragment:function(e,t,i,n){for(var r,s,o,a,c,l,h=t.createDocumentFragment(),u=[],d=0,p=e.length;p>d;d++)if(r=e[d],r||0===r)if("object"===Z.type(r))Z.merge(u,r.nodeType?[r]:r);else if(Te.test(r)){for(s=s||h.appendChild(t.createElement("div")),o=(Be.exec(r)||["",""])[1].toLowerCase(),a=qe[o]||qe._default,s.innerHTML=a[1]+r.replace(Se,"<$1>$2>")+a[2],l=a[0];l--;)s=s.lastChild;Z.merge(u,s.childNodes),s=h.firstChild,s.textContent=""}else u.push(t.createTextNode(r));for(h.textContent="",d=0;r=u[d++];)if((!n||-1===Z.inArray(r,n))&&(c=Z.contains(r.ownerDocument,r),s=_(h.appendChild(r),"script"),c&&f(s),i))for(l=0;r=s[l++];)Me.test(r.type||"")&&i.push(r);return h},cleanData:function(e){for(var t,i,n,r,s=Z.event.special,o=0;void 0!==(i=e[o]);o++){if(Z.acceptData(i)&&(r=i[_e.expando],r&&(t=_e.cache[r]))){if(t.events)for(n in t.events)s[n]?Z.event.remove(i,n):Z.removeEvent(i,n,t.handle);_e.cache[r]&&delete _e.cache[r]}delete ve.cache[i[ve.expando]]}}}),Z.fn.extend({text:function(e){return me(this,function(e){return void 0===e?Z.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=e)})},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=d(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=d(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var i,n=e?Z.filter(e,this):this,r=0;null!=(i=n[r]);r++)t||1!==i.nodeType||Z.cleanData(_(i)),i.parentNode&&(t&&Z.contains(i.ownerDocument,i)&&f(_(i,"script")),i.parentNode.removeChild(i));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(Z.cleanData(_(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return Z.clone(this,e,t)})},html:function(e){return me(this,function(e){var t=this[0]||{},i=0,n=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Le.test(e)&&!qe[(Be.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(Se,"<$1>$2>");try{for(;n>i;i++)t=this[i]||{},1===t.nodeType&&(Z.cleanData(_(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,Z.cleanData(_(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=j.apply([],e);var i,n,r,s,o,a,c=0,l=this.length,h=this,u=l-1,d=e[0],f=Z.isFunction(d);if(f||l>1&&"string"==typeof d&&!X.checkClone&&Re.test(d))return this.each(function(i){var n=h.eq(i);f&&(e[0]=d.call(this,i,n.html())),n.domManip(e,t)});if(l&&(i=Z.buildFragment(e,this[0].ownerDocument,!1,this),n=i.firstChild,1===i.childNodes.length&&(i=n),n)){for(r=Z.map(_(i,"script"),p),s=r.length;l>c;c++)o=i,c!==u&&(o=Z.clone(o,!0,!0),s&&Z.merge(r,_(o,"script"))),t.call(this[c],o,c);if(s)for(a=r[r.length-1].ownerDocument,Z.map(r,g),c=0;s>c;c++)o=r[c],Me.test(o.type||"")&&!_e.access(o,"globalEval")&&Z.contains(a,o)&&(o.src?Z._evalUrl&&Z._evalUrl(o.src):Z.globalEval(o.textContent.replace(Ie,"")))}return this}}),Z.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){Z.fn[e]=function(e){for(var i,n=[],r=Z(e),s=r.length-1,o=0;s>=o;o++)i=o===s?this:this.clone(!0),Z(r[o])[t](i),U.apply(n,i.get());return this.pushStack(n)}});var Pe,Ne={},ze=/^margin/,We=new RegExp("^("+we+")(?!px)[a-z%]+$","i"),He=function(t){return t.ownerDocument.defaultView.opener?t.ownerDocument.defaultView.getComputedStyle(t,null):e.getComputedStyle(t,null)};!function(){function t(){o.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",o.innerHTML="",r.appendChild(s);var t=e.getComputedStyle(o,null);i="1%"!==t.top,n="4px"===t.width,r.removeChild(s)}var i,n,r=Q.documentElement,s=Q.createElement("div"),o=Q.createElement("div");o.style&&(o.style.backgroundClip="content-box",o.cloneNode(!0).style.backgroundClip="",X.clearCloneStyle="content-box"===o.style.backgroundClip,s.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",s.appendChild(o),e.getComputedStyle&&Z.extend(X,{pixelPosition:function(){return t(),i},boxSizingReliable:function(){return null==n&&t(),n},reliableMarginRight:function(){var t,i=o.appendChild(Q.createElement("div"));return i.style.cssText=o.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",o.style.width="1px",r.appendChild(s),t=!parseFloat(e.getComputedStyle(i,null).marginRight),r.removeChild(s),o.removeChild(i),t}}))}(),Z.swap=function(e,t,i,n){var r,s,o={};for(s in t)o[s]=e.style[s],e.style[s]=t[s];r=i.apply(e,n||[]);for(s in t)e.style[s]=o[s];return r};var je=/^(none|table(?!-c[ea]).+)/,Ue=new RegExp("^("+we+")(.*)$","i"),Ve=new RegExp("^([+-])=("+we+")","i"),Ge={position:"absolute",visibility:"hidden",display:"block"},Ye={letterSpacing:"0",fontWeight:"400"},Ke=["Webkit","O","Moz","ms"];Z.extend({cssHooks:{opacity:{get:function(e,t){if(t){var i=w(e,"opacity");return""===i?"1":i}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,i,n){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,s,o,a=Z.camelCase(t),c=e.style;return t=Z.cssProps[a]||(Z.cssProps[a]=A(c,a)),o=Z.cssHooks[t]||Z.cssHooks[a],void 0===i?o&&"get"in o&&void 0!==(r=o.get(e,!1,n))?r:c[t]:(s=typeof i,"string"===s&&(r=Ve.exec(i))&&(i=(r[1]+1)*r[2]+parseFloat(Z.css(e,t)),s="number"),null!=i&&i===i&&("number"!==s||Z.cssNumber[a]||(i+="px"),X.clearCloneStyle||""!==i||0!==t.indexOf("background")||(c[t]="inherit"),o&&"set"in o&&void 0===(i=o.set(e,i,n))||(c[t]=i)),void 0)}},css:function(e,t,i,n){var r,s,o,a=Z.camelCase(t);return t=Z.cssProps[a]||(Z.cssProps[a]=A(e.style,a)),o=Z.cssHooks[t]||Z.cssHooks[a],o&&"get"in o&&(r=o.get(e,!0,i)),void 0===r&&(r=w(e,t,n)),"normal"===r&&t in Ye&&(r=Ye[t]),""===i||i?(s=parseFloat(r),i===!0||Z.isNumeric(s)?s||0:r):r}}),Z.each(["height","width"],function(e,t){Z.cssHooks[t]={get:function(e,i,n){return i?je.test(Z.css(e,"display"))&&0===e.offsetWidth?Z.swap(e,Ge,function(){return E(e,t,n)}):E(e,t,n):void 0},set:function(e,i,n){var r=n&&He(e);return k(e,i,n?C(e,t,n,"border-box"===Z.css(e,"boxSizing",!1,r),r):0)}}}),Z.cssHooks.marginRight=x(X.reliableMarginRight,function(e,t){return t?Z.swap(e,{display:"inline-block"},w,[e,"marginRight"]):void 0}),Z.each({margin:"",padding:"",border:"Width"},function(e,t){Z.cssHooks[e+t]={expand:function(i){for(var n=0,r={},s="string"==typeof i?i.split(" "):[i];4>n;n++)r[e+xe[n]+t]=s[n]||s[n-2]||s[0];return r}},ze.test(e)||(Z.cssHooks[e+t].set=k)}),Z.fn.extend({css:function(e,t){return me(this,function(e,t,i){var n,r,s={},o=0;if(Z.isArray(t)){for(n=He(e),r=t.length;r>o;o++)s[t[o]]=Z.css(e,t[o],!1,n);return s}return void 0!==i?Z.style(e,t,i):Z.css(e,t)},e,t,arguments.length>1)},show:function(){return F(this,!0)},hide:function(){return F(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Ae(this)?Z(this).show():Z(this).hide()})}}),Z.Tween=D,D.prototype={constructor:D,init:function(e,t,i,n,r,s){this.elem=e,this.prop=i,this.easing=r||"swing",this.options=t,this.start=this.now=this.cur(),this.end=n,this.unit=s||(Z.cssNumber[i]?"":"px")},cur:function(){var e=D.propHooks[this.prop];return e&&e.get?e.get(this):D.propHooks._default.get(this)},run:function(e){var t,i=D.propHooks[this.prop];return this.pos=t=this.options.duration?Z.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),i&&i.set?i.set(this):D.propHooks._default.set(this),this}},D.prototype.init.prototype=D.prototype,D.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=Z.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){Z.fx.step[e.prop]?Z.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[Z.cssProps[e.prop]]||Z.cssHooks[e.prop])?Z.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},D.propHooks.scrollTop=D.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},Z.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},Z.fx=D.prototype.init,Z.fx.step={};var Xe,Qe,Je=/^(?:toggle|show|hide)$/,Ze=new RegExp("^(?:([+-])=|)("+we+")([a-z%]*)$","i"),et=/queueHooks$/,tt=[T],it={"*":[function(e,t){var i=this.createTween(e,t),n=i.cur(),r=Ze.exec(t),s=r&&r[3]||(Z.cssNumber[e]?"":"px"),o=(Z.cssNumber[e]||"px"!==s&&+n)&&Ze.exec(Z.css(i.elem,e)),a=1,c=20;if(o&&o[3]!==s){s=s||o[3],r=r||[],o=+n||1;do a=a||".5",o/=a,Z.style(i.elem,e,o+s);while(a!==(a=i.cur()/n)&&1!==a&&--c)}return r&&(o=i.start=+o||+n||0,i.unit=s,i.end=r[1]?o+(r[1]+1)*r[2]:+r[2]),i}]};Z.Animation=Z.extend(R,{tweener:function(e,t){Z.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var i,n=0,r=e.length;r>n;n++)i=e[n],it[i]=it[i]||[],it[i].unshift(t)},prefilter:function(e,t){t?tt.unshift(e):tt.push(e)}}),Z.speed=function(e,t,i){var n=e&&"object"==typeof e?Z.extend({},e):{complete:i||!i&&t||Z.isFunction(e)&&e,duration:e,easing:i&&t||t&&!Z.isFunction(t)&&t};return n.duration=Z.fx.off?0:"number"==typeof n.duration?n.duration:n.duration in Z.fx.speeds?Z.fx.speeds[n.duration]:Z.fx.speeds._default,(null==n.queue||n.queue===!0)&&(n.queue="fx"),n.old=n.complete,n.complete=function(){Z.isFunction(n.old)&&n.old.call(this),n.queue&&Z.dequeue(this,n.queue)},n},Z.fn.extend({fadeTo:function(e,t,i,n){return this.filter(Ae).css("opacity",0).show().end().animate({opacity:t},e,i,n)},animate:function(e,t,i,n){var r=Z.isEmptyObject(e),s=Z.speed(t,i,n),o=function(){var t=R(this,Z.extend({},e),s);(r||_e.get(this,"finish"))&&t.stop(!0)};return o.finish=o,r||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,t,i){var n=function(e){var t=e.stop;delete e.stop,t(i)};return"string"!=typeof e&&(i=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",s=Z.timers,o=_e.get(this);if(r)o[r]&&o[r].stop&&n(o[r]);else for(r in o)o[r]&&o[r].stop&&et.test(r)&&n(o[r]);for(r=s.length;r--;)s[r].elem!==this||null!=e&&s[r].queue!==e||(s[r].anim.stop(i),t=!1,s.splice(r,1));(t||!i)&&Z.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,i=_e.get(this),n=i[e+"queue"],r=i[e+"queueHooks"],s=Z.timers,o=n?n.length:0;for(i.finish=!0,Z.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),
-t=s.length;t--;)s[t].elem===this&&s[t].queue===e&&(s[t].anim.stop(!0),s.splice(t,1));for(t=0;o>t;t++)n[t]&&n[t].finish&&n[t].finish.call(this);delete i.finish})}}),Z.each(["toggle","show","hide"],function(e,t){var i=Z.fn[t];Z.fn[t]=function(e,n,r){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(S(t,!0),e,n,r)}}),Z.each({slideDown:S("show"),slideUp:S("hide"),slideToggle:S("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){Z.fn[e]=function(e,i,n){return this.animate(t,e,i,n)}}),Z.timers=[],Z.fx.tick=function(){var e,t=0,i=Z.timers;for(Xe=Z.now();t1)},removeAttr:function(e){return this.each(function(){Z.removeAttr(this,e)})}}),Z.extend({attr:function(e,t,i){var n,r,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===Ce?Z.prop(e,t,i):(1===s&&Z.isXMLDoc(e)||(t=t.toLowerCase(),n=Z.attrHooks[t]||(Z.expr.match.bool.test(t)?rt:nt)),void 0===i?n&&"get"in n&&null!==(r=n.get(e,t))?r:(r=Z.find.attr(e,t),null==r?void 0:r):null!==i?n&&"set"in n&&void 0!==(r=n.set(e,i,t))?r:(e.setAttribute(t,i+""),i):void Z.removeAttr(e,t))},removeAttr:function(e,t){var i,n,r=0,s=t&&t.match(pe);if(s&&1===e.nodeType)for(;i=s[r++];)n=Z.propFix[i]||i,Z.expr.match.bool.test(i)&&(e[n]=!1),e.removeAttribute(i)},attrHooks:{type:{set:function(e,t){if(!X.radioValue&&"radio"===t&&Z.nodeName(e,"input")){var i=e.value;return e.setAttribute("type",t),i&&(e.value=i),t}}}}}),rt={set:function(e,t,i){return t===!1?Z.removeAttr(e,i):e.setAttribute(i,i),i}},Z.each(Z.expr.match.bool.source.match(/\w+/g),function(e,t){var i=st[t]||Z.find.attr;st[t]=function(e,t,n){var r,s;return n||(s=st[t],st[t]=r,r=null!=i(e,t,n)?t.toLowerCase():null,st[t]=s),r}});var ot=/^(?:input|select|textarea|button)$/i;Z.fn.extend({prop:function(e,t){return me(this,Z.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[Z.propFix[e]||e]})}}),Z.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,i){var n,r,s,o=e.nodeType;if(e&&3!==o&&8!==o&&2!==o)return s=1!==o||!Z.isXMLDoc(e),s&&(t=Z.propFix[t]||t,r=Z.propHooks[t]),void 0!==i?r&&"set"in r&&void 0!==(n=r.set(e,i,t))?n:e[t]=i:r&&"get"in r&&null!==(n=r.get(e,t))?n:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||ot.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),X.optSelected||(Z.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),Z.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Z.propFix[this.toLowerCase()]=this});var at=/[\t\r\n\f]/g;Z.fn.extend({addClass:function(e){var t,i,n,r,s,o,a="string"==typeof e&&e,c=0,l=this.length;if(Z.isFunction(e))return this.each(function(t){Z(this).addClass(e.call(this,t,this.className))});if(a)for(t=(e||"").match(pe)||[];l>c;c++)if(i=this[c],n=1===i.nodeType&&(i.className?(" "+i.className+" ").replace(at," "):" ")){for(s=0;r=t[s++];)n.indexOf(" "+r+" ")<0&&(n+=r+" ");o=Z.trim(n),i.className!==o&&(i.className=o)}return this},removeClass:function(e){var t,i,n,r,s,o,a=0===arguments.length||"string"==typeof e&&e,c=0,l=this.length;if(Z.isFunction(e))return this.each(function(t){Z(this).removeClass(e.call(this,t,this.className))});if(a)for(t=(e||"").match(pe)||[];l>c;c++)if(i=this[c],n=1===i.nodeType&&(i.className?(" "+i.className+" ").replace(at," "):"")){for(s=0;r=t[s++];)for(;n.indexOf(" "+r+" ")>=0;)n=n.replace(" "+r+" "," ");o=e?Z.trim(n):"",i.className!==o&&(i.className=o)}return this},toggleClass:function(e,t){var i=typeof e;return"boolean"==typeof t&&"string"===i?t?this.addClass(e):this.removeClass(e):this.each(Z.isFunction(e)?function(i){Z(this).toggleClass(e.call(this,i,this.className,t),t)}:function(){if("string"===i)for(var t,n=0,r=Z(this),s=e.match(pe)||[];t=s[n++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else(i===Ce||"boolean"===i)&&(this.className&&_e.set(this,"__className__",this.className),this.className=this.className||e===!1?"":_e.get(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",i=0,n=this.length;n>i;i++)if(1===this[i].nodeType&&(" "+this[i].className+" ").replace(at," ").indexOf(t)>=0)return!0;return!1}});var ct=/\r/g;Z.fn.extend({val:function(e){var t,i,n,r=this[0];{if(arguments.length)return n=Z.isFunction(e),this.each(function(i){var r;1===this.nodeType&&(r=n?e.call(this,i,Z(this).val()):e,null==r?r="":"number"==typeof r?r+="":Z.isArray(r)&&(r=Z.map(r,function(e){return null==e?"":e+""})),t=Z.valHooks[this.type]||Z.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=Z.valHooks[r.type]||Z.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(i=t.get(r,"value"))?i:(i=r.value,"string"==typeof i?i.replace(ct,""):null==i?"":i)}}}),Z.extend({valHooks:{option:{get:function(e){var t=Z.find.attr(e,"value");return null!=t?t:Z.trim(Z.text(e))}},select:{get:function(e){for(var t,i,n=e.options,r=e.selectedIndex,s="select-one"===e.type||0>r,o=s?null:[],a=s?r+1:n.length,c=0>r?a:s?r:0;a>c;c++)if(i=n[c],!(!i.selected&&c!==r||(X.optDisabled?i.disabled:null!==i.getAttribute("disabled"))||i.parentNode.disabled&&Z.nodeName(i.parentNode,"optgroup"))){if(t=Z(i).val(),s)return t;o.push(t)}return o},set:function(e,t){for(var i,n,r=e.options,s=Z.makeArray(t),o=r.length;o--;)n=r[o],(n.selected=Z.inArray(n.value,s)>=0)&&(i=!0);return i||(e.selectedIndex=-1),s}}}}),Z.each(["radio","checkbox"],function(){Z.valHooks[this]={set:function(e,t){return Z.isArray(t)?e.checked=Z.inArray(Z(e).val(),t)>=0:void 0}},X.checkOn||(Z.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),Z.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){Z.fn[t]=function(e,i){return arguments.length>0?this.on(t,null,e,i):this.trigger(t)}}),Z.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,i){return this.on(e,null,t,i)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,i,n){return this.on(t,e,i,n)},undelegate:function(e,t,i){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",i)}});var lt=Z.now(),ht=/\?/;Z.parseJSON=function(e){return JSON.parse(e+"")},Z.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{i=new DOMParser,t=i.parseFromString(e,"text/xml")}catch(n){t=void 0}return(!t||t.getElementsByTagName("parsererror").length)&&Z.error("Invalid XML: "+e),t};var ut=/#.*$/,dt=/([?&])_=[^&]*/,pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,gt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ft=/^(?:GET|HEAD)$/,mt=/^\/\//,_t=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,vt={},bt={},yt="*/".concat("*"),wt=e.location.href,xt=_t.exec(wt.toLowerCase())||[];Z.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt,type:"GET",isLocal:gt.test(xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":yt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":Z.parseJSON,"text xml":Z.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?I(I(e,Z.ajaxSettings),t):I(Z.ajaxSettings,e)},ajaxPrefilter:M(vt),ajaxTransport:M(bt),ajax:function(e,t){function i(e,t,i,o){var c,h,_,v,y,x=t;2!==b&&(b=2,a&&clearTimeout(a),n=void 0,s=o||"",w.readyState=e>0?4:0,c=e>=200&&300>e||304===e,i&&(v=q(u,w,i)),v=P(u,v,w,c),c?(u.ifModified&&(y=w.getResponseHeader("Last-Modified"),y&&(Z.lastModified[r]=y),y=w.getResponseHeader("etag"),y&&(Z.etag[r]=y)),204===e||"HEAD"===u.type?x="nocontent":304===e?x="notmodified":(x=v.state,h=v.data,_=v.error,c=!_)):(_=x,(e||!x)&&(x="error",0>e&&(e=0))),w.status=e,w.statusText=(t||x)+"",c?g.resolveWith(d,[h,x,w]):g.rejectWith(d,[w,x,_]),w.statusCode(m),m=void 0,l&&p.trigger(c?"ajaxSuccess":"ajaxError",[w,u,c?h:_]),f.fireWith(d,[w,x]),l&&(p.trigger("ajaxComplete",[w,u]),--Z.active||Z.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var n,r,s,o,a,c,l,h,u=Z.ajaxSetup({},t),d=u.context||u,p=u.context&&(d.nodeType||d.jquery)?Z(d):Z.event,g=Z.Deferred(),f=Z.Callbacks("once memory"),m=u.statusCode||{},_={},v={},b=0,y="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!o)for(o={};t=pt.exec(s);)o[t[1].toLowerCase()]=t[2];t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var i=e.toLowerCase();return b||(e=v[i]=v[i]||e,_[e]=t),this},overrideMimeType:function(e){return b||(u.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||y;return n&&n.abort(t),i(0,t),this}};if(g.promise(w).complete=f.add,w.success=w.done,w.error=w.fail,u.url=((e||u.url||wt)+"").replace(ut,"").replace(mt,xt[1]+"//"),u.type=t.method||t.type||u.method||u.type,u.dataTypes=Z.trim(u.dataType||"*").toLowerCase().match(pe)||[""],null==u.crossDomain&&(c=_t.exec(u.url.toLowerCase()),u.crossDomain=!(!c||c[1]===xt[1]&&c[2]===xt[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(xt[3]||("http:"===xt[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=Z.param(u.data,u.traditional)),O(vt,u,t,w),2===b)return w;l=Z.event&&u.global,l&&0===Z.active++&&Z.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!ft.test(u.type),r=u.url,u.hasContent||(u.data&&(r=u.url+=(ht.test(r)?"&":"?")+u.data,delete u.data),u.cache===!1&&(u.url=dt.test(r)?r.replace(dt,"$1_="+lt++):r+(ht.test(r)?"&":"?")+"_="+lt++)),u.ifModified&&(Z.lastModified[r]&&w.setRequestHeader("If-Modified-Since",Z.lastModified[r]),Z.etag[r]&&w.setRequestHeader("If-None-Match",Z.etag[r])),(u.data&&u.hasContent&&u.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",u.contentType),w.setRequestHeader("Accept",u.dataTypes[0]&&u.accepts[u.dataTypes[0]]?u.accepts[u.dataTypes[0]]+("*"!==u.dataTypes[0]?", "+yt+"; q=0.01":""):u.accepts["*"]);for(h in u.headers)w.setRequestHeader(h,u.headers[h]);if(u.beforeSend&&(u.beforeSend.call(d,w,u)===!1||2===b))return w.abort();y="abort";for(h in{success:1,error:1,complete:1})w[h](u[h]);if(n=O(bt,u,t,w)){w.readyState=1,l&&p.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(a=setTimeout(function(){w.abort("timeout")},u.timeout));try{b=1,n.send(_,i)}catch(x){if(!(2>b))throw x;i(-1,x)}}else i(-1,"No Transport");return w},getJSON:function(e,t,i){return Z.get(e,t,i,"json")},getScript:function(e,t){return Z.get(e,void 0,t,"script")}}),Z.each(["get","post"],function(e,t){Z[t]=function(e,i,n,r){return Z.isFunction(i)&&(r=r||n,n=i,i=void 0),Z.ajax({url:e,type:t,dataType:r,data:i,success:n})}}),Z._evalUrl=function(e){return Z.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},Z.fn.extend({wrapAll:function(e){var t;return Z.isFunction(e)?this.each(function(t){Z(this).wrapAll(e.call(this,t))}):(this[0]&&(t=Z(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return this.each(Z.isFunction(e)?function(t){Z(this).wrapInner(e.call(this,t))}:function(){var t=Z(this),i=t.contents();i.length?i.wrapAll(e):t.append(e)})},wrap:function(e){var t=Z.isFunction(e);return this.each(function(i){Z(this).wrapAll(t?e.call(this,i):e)})},unwrap:function(){return this.parent().each(function(){Z.nodeName(this,"body")||Z(this).replaceWith(this.childNodes)}).end()}}),Z.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0},Z.expr.filters.visible=function(e){return!Z.expr.filters.hidden(e)};var At=/%20/g,kt=/\[\]$/,Ct=/\r?\n/g,Et=/^(?:submit|button|image|reset|file)$/i,Ft=/^(?:input|select|textarea|keygen)/i;Z.param=function(e,t){var i,n=[],r=function(e,t){t=Z.isFunction(t)?t():null==t?"":t,n[n.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=Z.ajaxSettings&&Z.ajaxSettings.traditional),Z.isArray(e)||e.jquery&&!Z.isPlainObject(e))Z.each(e,function(){r(this.name,this.value)});else for(i in e)N(i,e[i],t,r);return n.join("&").replace(At,"+")},Z.fn.extend({serialize:function(){return Z.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=Z.prop(this,"elements");return e?Z.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!Z(this).is(":disabled")&&Ft.test(this.nodeName)&&!Et.test(e)&&(this.checked||!ke.test(e))}).map(function(e,t){var i=Z(this).val();return null==i?null:Z.isArray(i)?Z.map(i,function(e){return{name:t.name,value:e.replace(Ct,"\r\n")}}):{name:t.name,value:i.replace(Ct,"\r\n")}}).get()}}),Z.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var Dt=0,$t={},St={0:200,1223:204},Bt=Z.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in $t)$t[e]()}),X.cors=!!Bt&&"withCredentials"in Bt,X.ajax=Bt=!!Bt,Z.ajaxTransport(function(e){var t;return X.cors||Bt&&!e.crossDomain?{send:function(i,n){var r,s=e.xhr(),o=++Dt;if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(r in e.xhrFields)s[r]=e.xhrFields[r];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(r in i)s.setRequestHeader(r,i[r]);t=function(e){return function(){t&&(delete $t[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?n(s.status,s.statusText):n(St[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:void 0,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=$t[o]=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(a){if(t)throw a}},abort:function(){t&&t()}}:void 0}),Z.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return Z.globalEval(e),e}}}),Z.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),Z.ajaxTransport("script",function(e){if(e.crossDomain){var t,i;return{send:function(n,r){t=Z("