(function(){var addServerRow=function(name,user,key){var newRow=document.createElement("tr");newRow.className="serverLink";newRow.setAttribute("data-server",name);var nameCell=document.createElement("td");nameCell.className="serverName";nameCell.innerHTML=name;var userCell=document.createElement("td");userCell.className="userName";userCell.innerHTML=user;var keyCell=document.createElement("td");keyCell.className="hashValue";keyCell.innerHTML=key;var actionsCell=document.createElement("td");actionsCell.className="actions text-right";actionsCell.innerHTML="";var deleteBtn=document.createElement("button");deleteBtn.className="deleteBtn btn-link";var documentDirection=document.documentElement.dir;if(documentDirection!=="rtl"){deleteBtn.className+=" newRowIconHack"}deleteBtn.type="button";var deleteIcon=document.createElement("span");deleteIcon.className="glyphicon glyphicon-trash";deleteBtn.appendChild(deleteIcon);deleteBtn.title=LOCALE.maketext("Delete entry for “[_1]”.",name);actionsCell.appendChild(deleteBtn);var manageBtn=document.createElement("button");manageBtn.className="manageBtn btn-link";if(documentDirection==="rtl"){manageBtn.className+=" newRowIconHack"}manageBtn.type="button";manageBtn.title=LOCALE.maketext("Edit key for “[_1]”.",name);var manageIcon=document.createElement("span");manageIcon.innerHTML="";manageIcon.className=documentDirection==="rtl"?"glyphicon glyphicon-chevron-left":"glyphicon glyphicon-chevron-right";manageBtn.appendChild(manageIcon);actionsCell.appendChild(manageBtn);newRow.appendChild(nameCell);newRow.appendChild(userCell);newRow.appendChild(keyCell);newRow.appendChild(actionsCell);jQuery("#serverList tr:last").after(newRow);jQuery("#serverList tr:last td:last button.deleteBtn").on("click",confirmDelete);jQuery("#serverList tr:last td:last button.manageBtn").on("click",editServerLink);jQuery("#serverList tr:last").addClass("success");window.setTimeout((function(){jQuery("#serverList tr:last").removeClass("success")}),4e3)};var addServer=function(){if(validateEditorData("create")){jQuery("#serverSaveChanges").prop("disabled",true);CPANEL.api({application:"whm",func:"add_configclusterserver",data:{name:jQuery("#serverNameEditor").val(),key:jQuery("#serverKeyEditor").val(),user:jQuery("#serverUserEditor").val()},callback:{success:addLinkServerSuccess,failure:addLinkServerFailure}})}};var updateServer=function(){if(validateEditorData("update")){CPANEL.api({application:"whm",func:"update_configclusterserver",data:{name:jQuery("#serverNameEditor").val(),user:jQuery("#serverUserEditor").val(),key:jQuery("#serverKeyEditor").val()},callback:{success:function(args){if(args.cpanel_raw.metadata.result===1){updateLinkServerSuccess(args)}else{updateLinkServerFailure(args)}},failure:updateLinkServerFailure}})}};var clearEditorFields=function(){jQuery("#serverNameEditor").val("");jQuery("#serverKeyEditor").val("");jQuery("#serverUserEditor").val("");jQuery("#serverSaveChanges").prop("disabled",false);jQuery("#serverKeyEditor").attr("placeholder",LOCALE.maketext("Paste the server’s API token here."))};var validateEditorData=function(mode){var isValid=true;var errorMsg="";var serverName=jQuery("#serverNameEditor").val().trim();var serverKey=jQuery("#serverKeyEditor").val().trim();var serverUser=jQuery("#serverUserEditor").val().trim();if(mode==="create"&&(!serverName||!serverKey||!serverUser)){errorMsg=LOCALE.maketext("The server name, username, and API token are required.");isValid=false}else if(mode==="create"&&(!CPANEL.validate.host(serverName)&&!CPANEL.validate.ip(serverName))){errorMsg=LOCALE.maketext("The server name must be a valid host name or ip address.");isValid=false}else if(mode==="create"&&!serverUser.match(/^[0-9a-zA-Z]+/)){errorMsg=LOCALE.maketext("The username can only include alphanumeric characters.");isValid=false}else if(mode!=="create"&&!serverUser&&!serverKey){errorMsg=LOCALE.maketext("You must specify both a username and an API token.");isValid=false}else if(mode!=="create"&&serverUser&&!serverUser.match(/^[0-9a-zA-Z]+/)){errorMsg=LOCALE.maketext("The username can only include alphanumeric characters.");isValid=false}if(errorMsg){showFailureMessage(errorMsg)}return isValid};var showSuccessMessage=function(message){hideFailureMessage();jQuery("#globalSuccessMessage").html(message);if(jQuery("#globalSuccessNotice").hasClass("hidden")){jQuery("#globalSuccessNotice").removeClass("hidden")}window.setTimeout((function(){jQuery("#globalSuccessNotice").addClass("hidden")}),7e3)};var showFailureMessage=function(message){hideSuccessMessage();jQuery("#globalFailureMessage").html(message);jQuery("#globalFailureNotice").removeClass("hidden")};var hideSuccessMessage=function(){if(!jQuery("#globalSuccessNotice").hasClass("hidden")){jQuery("#globalSuccessNotice").addClass("hidden")}};var hideFailureMessage=function(){if(!jQuery("#globalFailureNotice").hasClass("hidden")){jQuery("#globalFailureNotice").addClass("hidden")}};var updateLinkServerSuccess=function(args){var serverName=args.cpanel_raw.metadata.name;showSuccessMessage(LOCALE.maketext("Link definition for server, [output,strong,_1], successfully updated.",serverName));jQuery('tr[data-server="'+serverName+'"] td.hashValue').html(args.cpanel_raw.metadata.signature);jQuery('tr[data-server="'+serverName+'"] td.userName').html(args.cpanel_raw.metadata.user);hideEditor();clearEditorFields()};var updateLinkServerFailure=function(args){try{showFailureMessage(LOCALE.maketext("Link definition for server, [output,strong,_1], not updated.",args.cpanel_raw.metadata.name))}catch(err){showFailureMessage(LOCALE.maketext("Link definition for server not updated."))}};var addLinkServerSuccess=function(args){hideEditor();var callbackData=args.cpanel_raw.metadata;showSuccessMessage(LOCALE.maketext("Link to server, [output,strong,_1], successfully created.",callbackData.name));addServerRow(callbackData.name,callbackData.user,callbackData.signature);if(jQuery("tbody").children(".serverLink").length>0&&!jQuery("#noLinksDefined").hasClass("hidden")){jQuery("#noLinksDefined").addClass("hidden")}clearEditorFields()};var addLinkServerFailure=function(args){try{showFailureMessage(LOCALE.maketext("Unable to create link to server “[output,strong,_1]”.",args.cpanel_raw.metadata.name))}catch(err){showFailureMessage(LOCALE.maketext("Unable to create link to server."))}};var deleteLinkServerFailure=function(args){try{showFailureMessage(LOCALE.maketext("Unable to delete link to server “[output,strong,_1]”.",args.cpanel_raw.metadata.name))}catch(err){showFailureMessage(LOCALE.maketext("Unable to delete link to server."))}jQuery("#serverDeleteContinueBtn").prop("disabled",false)};var confirmDelete=function(){var itemToDelete=jQuery(this).closest("tr").data("server");jQuery("#serverToDelete").val(itemToDelete);jQuery("#confirmMessage").html(LOCALE.maketext("Delete link to server “[output,strong,_1]”?",itemToDelete));var itemRow=jQuery('tr[data-server="'+itemToDelete+'"]');var confirmRow=jQuery("#confirmDelete").detach();confirmRow.insertAfter(itemRow);toggleButtonStateForInlineModalAlert(true);itemRow.addClass("hidden");confirmRow.removeClass("hidden")};var doDelete=function(){jQuery("#serverDeleteContinueBtn").prop("disabled",true);CPANEL.api({application:"whm",func:"delete_configclusterserver",data:{name:jQuery("#serverToDelete").val()},callback:{success:function(args){if(args.cpanel_raw.metadata.result===1){var serverName=args.cpanel_raw.metadata.name;jQuery('tr[data-server="'+serverName+'"]').remove();jQuery("#tableAlerts").append(jQuery("#confirmDelete").detach());var rowsLeft=jQuery("tbody").children(".serverLink").length;var noLinksWarningIsHidden=jQuery("#noLinksDefined").hasClass("hidden");if(rowsLeft===0&&noLinksWarningIsHidden){jQuery("#noLinksDefined").removeClass("hidden")}toggleButtonStateForInlineModalAlert(false);showSuccessMessage(LOCALE.maketext("Link to server, [output,strong,_1], successfully deleted.",serverName));jQuery("#serverDeleteContinueBtn").prop("disabled",false)}else{deleteLinkServerFailure(args)}},failure:deleteLinkServerFailure}})};var cancelDelete=function(){var rowToRestore=jQuery("#serverToDelete").val();var alertRow=jQuery("#confirmDelete").detach();jQuery("#tableAlerts").append(alertRow);jQuery("#serverToDelete").val("");jQuery('tr[data-server="'+rowToRestore+'"]').removeClass("hidden");toggleButtonStateForInlineModalAlert(false)};var clearError=function(){if(jQuery("#globalFailureMessage").html()!==""){hideFailureMessage();jQuery("#globalFailureMessage").html("");jQuery("#serverSaveChanges").prop("disabled",false)}};var showEditor=function(mode){jQuery("#serverSaveChanges").off("click");jQuery("#createBtnContainer").addClass("hidden");jQuery("#serverList").addClass("hidden");jQuery("#extraCreateButton").addClass("hidden");if(mode==="edit"){jQuery("#editServerHeadline").removeClass("hidden");jQuery("#addServerHeadline").addClass("hidden");jQuery("#serverSaveChanges").on("click",updateServer);jQuery("#serverNameEditor").prop("disabled",true)}else{jQuery("#editServerHeadline").addClass("hidden");jQuery("#addServerHeadline").removeClass("hidden");jQuery("#serverSaveChanges").on("click",addServer);jQuery("#serverUserEditor").val("root")}jQuery("#serverLinkEditor").removeClass("hidden");if(mode==="edit"){jQuery("#serverKeyEditor").focus()}else{jQuery("#serverNameEditor").focus()}};var hideEditor=function(){jQuery("#serverLinkEditor").addClass("hidden");jQuery("#createBtnContainer").removeClass("hidden");jQuery("#serverList").removeClass("hidden");jQuery("#extraCreateButton").removeClass("hidden");jQuery("#serverNameEditor").prop("disabled",false)};var toggleButtonStateForInlineModalAlert=function(disabled){if(disabled){jQuery("#createBtn").attr("disabled","disabled");jQuery("#createBtn2").attr("disabled","disabled");jQuery(".deleteBtn").prop("disabled",disabled);jQuery(".manageBtn").prop("disabled",disabled);jQuery(".deleteBtn").addClass("disabled");jQuery(".manageBtn").addClass("disabled")}else{jQuery("#createBtn").removeAttr("disabled");jQuery("#createBtn2").removeAttr("disabled");jQuery(".deleteBtn").removeAttr("disabled");jQuery(".manageBtn").removeAttr("disabled");jQuery(".deleteBtn").removeClass("disabled");jQuery(".manageBtn").removeClass("disabled")}};var editServerLink=function(){var itemToEdit=jQuery(this).closest("tr").data("server");var scrambledKey=jQuery(this).closest("tr").children().filter(".hashValue").html();var userName=jQuery(this).closest("tr").children().filter(".userName").html();jQuery("#serverNameEditor").val(itemToEdit);jQuery("#serverUserEditor").attr("placeholder",userName);jQuery("#serverKeyEditor").attr("placeholder",LOCALE.maketext("Paste the replacement API token here. The current signature is: [_1]",scrambledKey.trim()));showEditor("edit")};var initialize=function(){jQuery("#serverSaveChanges").on("click",addServer);jQuery(".deleteBtn").on("click",confirmDelete);jQuery("#goBack").on("click",(function(){hideFailureMessage();hideSuccessMessage();hideEditor();clearEditorFields()}));jQuery("#serverNameEditor").on("input",clearError);jQuery("#serverUserEditor").on("input",clearError);jQuery("#serverKeyEditor").on("input",clearError);jQuery("#createBtn").on("click",(function(){showEditor("add")}));jQuery("#createBtn2").on("click",(function(){showEditor("add")}));jQuery("#serverDeleteCancelBtn").on("click",cancelDelete);jQuery("#serverDeleteContinueBtn").on("click",doDelete);jQuery("#hideSuccessAlertBtn").on("click",(function(){jQuery("#globalSuccessNotice").addClass("hidden")}));jQuery("#hideFailureAlertBtn").on("click",(function(){jQuery("#globalFailureNotice").addClass("hidden")}));jQuery("#serverToDelete").val("");clearEditorFields();toggleButtonStateForInlineModalAlert(false);jQuery(".manageBtn").on("click",editServerLink)};jQuery(document).ready(initialize)})();