AJS.toInit(function(d){AJS.log("draft-changes initialising");var a;var f=function(){a=new AJS.Dialog(860,530,"view-diff-draft-dialog");var h=AJS.params.draftHeading;a.addHeader(h.replace(/\{0\}/,""));var g=d("#draft-changes-dialog");a.addPanel("Diff",g);a.addButton(AJS.params.resumeDraft,function(i){a.hide();if(AJS.Editor){AJS.Editor.sendFormDraft("useDraft")}else{window.location=d(this).attr("data-href")}},"resume-diff-link");a.addButton(AJS.params.mergeDraft,function(i){a.hide();window.parent.location=d(this).attr("data-href")},"merge-diff-link");a.addButton(AJS.params.discardDraft,function(i){a.hide();if(AJS.Editor){AJS.Editor.sendFormDraft("discardDraft")}else{window.location=d(this).attr("data-href")}},"discard-diff-link");a.addCancel(AJS.I18n.getText("http://10.20.160.198/wiki/s/en/2166/34/1.0/_/download/batch/confluence-draft-changes:draft-changes/close.name"),function(){a.hide()});g.removeClass("hidden")};var c=function(k,i){var h=function(q){if(!q.numChanges){return AJS.params.draftNoChanges}var p="";var m=q.chunks;var o=m.length;for(var n=0;n<o;n++){p+=m[n].text}return p};d("#diff-view").html(h(k));var l=AJS.params.draftHeading;a.addHeader(l.replace(/\{0\}/,k.title));var j=d("#atlassian-token").attr("content");var g=AJS.General.getContextPath();d(".merge-diff-link").attr("data-href",g+"/pages/resumedraft.action?draftId="+i);d(".resume-diff-link").attr("data-href",g+"/pages/resumedraft.action?draftId="+i);d(".discard-diff-link").attr("data-href",g+"/users/deletedraft.action?draftId="+i+"&atl_token="+j);AJS.setVisible("#merge-warning",k.isMergeRequired);AJS.setVisible(".merge-diff-link",k.isMergeRequired);AJS.setVisible(".resume-diff-link",!k.isMergeRequired)};var e=function(i){var g,k,h;var j=function(m){var l=/draftPageId:([^ ]*)/.exec(m);g=l?l[1]:AJS.params.pageId;l=/username:([^ ]*)/.exec(m);k=l?l[1]:AJS.params.remoteUser;l=/draftId:([^ ]*)/.exec(m);h=l?l[1]:null};j(i.attr("class"));AJS.safeAjax({url:AJS.General.getContextPath()+"/draftchanges/viewdraftchanges.action",type:"GET",dataType:"json",data:{pageId:g,username:k},success:function(n){if(n.actionErrors){var m="";var o=n.actionErrors;for(var l=0;l<o.length;l++){AJS.log("error: "+(o[l]));m=m+"<div>"+o[l]+"</div>"}d("#diff-view").html(m)}else{c(n,h)}},error:function(l){var m=l.errors||"An unknown error has occurred. Please check your logs";d("#diff-view").html(m)}})};var b=function(h,g){if(AJS.Editor){AJS.Editor.saveDraft(false)}if(!a){f()}a.addHeader(AJS.params.loadingHeading);d("#diff-view").html("<tr><td id='draft-changes-waiting-icon'>Loading...</td></tr>");AJS.setVisible("#diff-links",g);e(h);a.show()};d("#draft-status").click(function(h){var g=d(h.target);if(g.hasClass("view-diff-link")){b(g,false)}return AJS.stopEvent(h)});d(".view-diff-link").click(function(h){var g=d(this);b(g,true);return AJS.stopEvent(h)})});
