var Notepad=Notepad||{};function fnLookup(e){var e="SiteJs."+e,t=Notepad.Language[e];return t&&t.length?t:e}function fnLanguage(){new bootstrap.Modal(document.getElementById("languageModal")).show()}function fnShowAlert(e,t){$("#msgDanger, #msgWarning, #msgInfo, #msgSuccess").hide(),"danger"===e||"error"===e?$("#msgDanger").html(t).show():"warning"===e?$("#msgWarning").html(t).show():"info"===e?$("#msgInfo").html(t).show():"success"===e&&$("#msgSuccess").html(t).show()}function fnHtmlEncode(e){return $("
").text(e).html()}function fnSanitizeUrl(e){return e&&0 ")).children(".task-text").first().text(o),$(e).parent().before(t),$("#taskList>.task-item-new>.task-text").text(""),fnTaskSave())}function fnTaskCheckboxClicked(e){fnTaskSave()}function fnTaskDeleteClicked(e){$(e).parent().remove(),fnTaskSave()}function fnTaskTextFocus(e){$(e).parent().children(".task-save").show()}function fnTaskTextBlur(e){$(e).parent().children(".task-save").hide(),fnTaskToTextNote()&&fnSaveNote()}function fnTaskTextNewFocus(e){$(e).text()===fnLookup("AddTask")&&$(e).text("")}function fnTaskTextNewBlur(e){$(e).text()||$(e).text(fnLookup("AddTask"))}function fnTaskTextNewKeyDown(e,t){13===e.keyCode&&(e.preventDefault(),fnTaskNewClicked(t))}function fnTaskTextKeyDown(e,t){13===e.keyCode&&(e.preventDefault(),fnTaskSaveClicked(t),$(t).blur())}function fnTextNoteToTask(){$("#taskList").empty(),$("#edit_textarea").val().split("\n").forEach(function(e,t){var o;e&&e.trim()&&(o=e.includes("[Checked]")?"checked":"",e=e.replace("[Checked]","").trim(),$("#taskList").append("
"),$("#taskList .task-text").last().text(e))}),$("#taskList").append(" "+fnLookup("AddTask")+"
")}function fnTaskToTextNote(){var e=$("#edit_textarea").val(),t="";return $("#taskList").children(".task-item").not(".task-item-new").each(function(){var e=$(this).children(".task-text").first().text().trim();$(this).children("input[type=checkbox]").first().is(":checked")?t+="[Checked] "+e+"\n":t+=e+"\n"}),$("#edit_textarea").val(t),e!==t}function fnSortByTitle(){$.post("/note/list",{sort:"title"},function(e){$("#savedNotes").html(e)})}function fnSortByUpdated(){$.post("/note/list",{sort:"updated"},function(e){$("#savedNotes").html(e)})}function fnLoadMoreNotes(){$.post("/note/list",{loadMore:"true"},function(e){$("#load-more-container").remove(),$("#savedNotes").append(e)})}function fnManageFolders(){fnLoadManageFolderContent(),new bootstrap.Modal(document.getElementById("manageFolderModal")).show()}function fnLoadManageFolderContent(){$.get("/note/managefolder",{},function(e){$("#manageFolderContent").html(e)})}function fnMenuActionShareFolder(e){$.get("/note/sharefolder",{number:e},function(e){$("#shareFolderContent").html(e),new bootstrap.Modal(document.getElementById("shareFolderModal")).show()})}function fnMenuActionEmptyRecycleBin(){1==confirm(fnLookup("EmptyRecycleBinConfirm"))&&$.post("/note/emptyrecyclebin",{},function(e){fnOpenFolder()})}function fnFolderShareClicked(e){var t=$("#chkShareFolder").is(":checked");t?$("#folderShareUrl").removeClass("hidden"):$("#folderShareUrl").addClass("hidden"),$.post("/note/updatefolder",{number:e,share:t},function(e){fnLoadFolderList()})}function fnMenuActionDeleteFolder(e){1==confirm(fnLookup("DeleteFolderConfirm1")+" '"+$("#folder_"+e+">a").text().trim()+"'? "+fnLookup("DeleteFolderConfirm2"))&&$.post("/note/deletefolder",{number:e},function(e){fnLoadFolderList()})}function fnMenuActionRenameFolder(e){var t=prompt("Message",$("#folder_"+e+">a").text().trim());t&&$.post("/note/renamefolder",{number:e,name:t},function(e){fnLoadFolderList()})}function fnCreateFolder(){""!=$("#newFolder").val()&&$.post("/note/createfolder",{name:$("#newFolder").val()},function(e){fnLoadManageFolderContent()})}function fnDeleteFolder(e){1==confirm(fnLookup("DeleteFolderConfirm1")+" '"+$("#editFolder_"+e).val()+"'? "+fnLookup("DeleteFolderConfirm2"))&&$.post("/note/deletefolder",{number:e},function(e){fnLoadManageFolderContent()})}function fnRenameFolder(e){$("#row_"+e).addClass("hidden"),$("#edit_"+e).removeClass("hidden")}function fnRenameFolderSave(e){""!=$("#editFolder_"+e).val()&&$.post("/note/renamefolder",{number:e,name:$("#editFolder_"+e).val()},function(e){fnLoadManageFolderContent()})}function fnRenameFolderCancel(e){$("#row_"+e).removeClass("hidden"),$("#edit_"+e).addClass("hidden")}function fnOpenFolder(e){e&&($("#folderList > li").removeClass("active"),$("#folderList > #folder_"+e).addClass("active")),$.post("/note/list",{folder:e},function(e){$("#savedNotes").html(e),fnEnableNoteDrag(),fnEnableNoteDrop()})}function fnLoadFolderList(){$.get("/note/folderlist",{},function(e){$("#folderList").html(e),fnEnableNoteDrop()})}function fnShowNoteVersions(e){fnLoadNoteVersions(e),new bootstrap.Modal(document.getElementById("noteVersionsModal")).show()}function fnLoadNoteVersions(e){$.get("/notes/"+e+"/versions",{},function(e){$("#noteVersionsContent").html(e)})}function fnMoveNoteToFolder(e,t){$.post("/note/movetofolder",{notenumber:e,foldernumber:t},function(e){$("#actionMessage").text(fnLookup("NoteMoved")).show().delay(1e3).fadeOut(1e3),fnOpenFolder()})}function fnEnableNoteDrag(){$(".note-item").draggable({delay:200,revert:"invalid",helper:"clone",cursor:"move",cursorAt:{left:120,top:5}})}function fnEnableNoteDrop(){$(".folder-item.droppable").droppable({accept:".note-item",classes:{"ui-droppable-hover":"highlight"},drop:function(e,t){fnMoveNoteToFolder(t.draggable.attr("id").replace("note_",""),$(this).attr("id").replace("folder_",""))}})}function fnSaveNote(){"new"==Notepad.NoteEditMode?fnSaveNoteNew():"edit"==Notepad.NoteEditMode?fnSaveNoteEdit():"quickedit"==Notepad.NoteEditMode&&fnSaveNoteQuickEdit()}function fnSaveNoteNew(){var e,t=$("input[name='autosavenotenumber']").val(),o=$("input[name='notetype']").val(),n=$("input[name='access']:checked").val(),a=$("input[name='password']").val(),s=$("#quickedit").is(":checked")?"true":"false",i=$("input[name='quickeditpassword']").val(),r=$("input[name='notetitle']").val(),d=fnGetNoteContent();d.length>Notepad.NoteContentMaxLength?fnShowAlert("error",10485760===Notepad.NoteContentMaxLength?fnLookup("NoteContentOverLimitPaid"):fnLookup("NoteContentOverLimit")):($("#saveNoteMessage").html("Saving..."),(e=new FormData).append("notetype",o),e.append("noteaccess",n),e.append("notepassword",a),e.append("notequickedit",s),e.append("notequickeditpassword",i),e.append("notetitle",r),e.append("notecontent",d),0==t.length?$.ajax({url:"/note/create",type:"POST",data:e,processData:!1,contentType:!1,success:function(e){"success"===e.status?window.location="/notes/"+e.notenumber:fnShowAlert(e.status,e.message)},error:function(e){console.error("Error creating note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}}):(e.append("number",t),$.ajax({url:"/note/save",type:"POST",data:e,processData:!1,contentType:!1,success:function(e){"success"===e.status?window.location="/notes/"+t:fnShowAlert(e.status,e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}})))}function fnGetNoteContent(){var e=$("input[name='notetype']").val(),t="";return"RichText"===e||"OneMeeting"===e?t=tinymce.get("edit_textarea").getContent():"PlainText"===e?t=$("textarea[name='notecontent']").val():"Task"===e?t=$("#edit_textarea").val():"Bookmark"===e?(null!==bookmarkEditingIndex&&fnBookmarkEditSave(bookmarkEditingIndex),$("#add_url").val()&&fnBookmarkAdd(),t=$("#edit_textarea").val()):"Whiteboard"===e?t=fnTldrawSave():"Spreadsheet"===e&&(t=JSON.stringify(Notepad.XSpreadsheet.getData())),t}function fnSaveNoteEdit(){var e,t=$("input[name='notenumber']").val(),o=$("input[name='notetype']").val(),n=$("input[name='access']:checked").val(),a=$("input[name='password']").val(),s=$("#quickedit").is(":checked")?"true":"false",i=$("input[name='quickeditpassword']").val(),r=$("input[name='notetitle']").val(),d=fnGetNoteContent();d.length>Notepad.NoteContentMaxLength?fnShowAlert("error",10485760===Notepad.NoteContentMaxLength?fnLookup("NoteContentOverLimitPaid"):fnLookup("NoteContentOverLimit")):($("#saveNoteMessage").html(fnLookup("Saving")),(e=new FormData).append("number",t),e.append("notetype",o),e.append("noteaccess",n),e.append("notepassword",a),e.append("notequickedit",s),e.append("notequickeditpassword",i),e.append("notetitle",r),e.append("notecontent",d),$.ajax({url:"/note/save",type:"POST",data:e,processData:!1,contentType:!1,success:function(e){"success"===e.status?(Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("#saveNoteMessage").html(e.message),$("#actionMessage").text(fnLookup("NoteSaved")).show().delay(1e3).fadeOut(1e3)):fnShowAlert(e.status,e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}}))}function fnSaveNoteQuickEdit(){var e,t=$("input[name='notenumber']").val(),o=fnGetNoteContent();o.length>Notepad.NoteContentMaxLength?fnShowAlert("error",10485760===Notepad.NoteContentMaxLength?fnLookup("NoteContentOverLimitPaid"):fnLookup("NoteContentOverLimit")):($("#saveNoteMessage").html(fnLookup("Saving")),(e=new FormData).append("number",t),e.append("notecontent",o),$.ajax({url:"/note/quickeditsave",type:"POST",data:e,processData:!1,contentType:!1,success:function(e){"success"===e.status?(Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("#saveNoteMessage").html(e.message),$("#actionMessage").text(fnLookup("NoteSaved")).show().delay(1e3).fadeOut(1e3)):fnShowAlert(e.status,e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}}))}function fnAutoSaveInit(){$("input[name='notetitle']").keydown(function(){Notepad.NoteTitleChanged=!0}),$("textarea[name='notecontent']").keydown(function(){Notepad.NoteContentChanged=!0}),Notepad.AutoSaveEnabled&&setInterval(fnAutoSaveNote,6e4)}function fnAutoSaveNote(){"new"==Notepad.NoteEditMode?fnAutoSaveNoteNew():"edit"==Notepad.NoteEditMode?fnAutoSaveNoteEdit():"quickedit"==Notepad.NoteEditMode&&fnAutoSaveNoteQuickEdit()}function fnAutoSaveNoteNew(){var e,t,o,n,a,s,i,r,d;(Notepad.NoteTitleChanged||Notepad.NoteContentChanged)&&(e=$("input[name='autosavenotenumber']").val(),t=$("input[name='notetype']").val(),o=$("input[name='access']:checked").val(),n=$("input[name='password']").val(),a=$("#quickedit").is(":checked")?"true":"false",s=$("input[name='quickeditpassword']").val(),i=$("input[name='notetitle']").val(),(r=fnGetNoteContent()).length<20||r.length>Notepad.NoteContentMaxLength||($("#saveNoteMessage").html(fnLookup("Saving")),(d=new FormData).append("notetype",t),d.append("noteaccess",o),d.append("notepassword",n),d.append("notequickedit",a),d.append("notequickeditpassword",s),d.append("notetitle",i),d.append("notecontent",r),0==e.length?$.ajax({url:"/note/create",type:"POST",data:d,processData:!1,contentType:!1,success:function(e){Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("input[name='autosavenotenumber']").val(e.notenumber),$("#saveNoteMessage").html(e.message)},error:function(e){console.error("Error creating note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}}):(d.append("number",e),$.ajax({url:"/note/save",type:"POST",data:d,processData:!1,contentType:!1,success:function(e){Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("#saveNoteMessage").html(e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}}))))}function fnAutoSaveNoteEdit(){var e,t,o,n,a,s,i,r,d;(Notepad.NoteTitleChanged||Notepad.NoteContentChanged)&&(e=$("input[name='notenumber']").val(),t=$("input[name='notetype']").val(),o=$("input[name='access']:checked").val(),n=$("input[name='password']").val(),a=$("#quickedit").is(":checked")?"true":"false",s=$("input[name='quickeditpassword']").val(),i=$("input[name='notetitle']").val(),(r=fnGetNoteContent()).length>Notepad.NoteContentMaxLength||($("#saveNoteMessage").html(fnLookup("Saving")),(d=new FormData).append("number",e),d.append("notetype",t),d.append("noteaccess",o),d.append("notepassword",n),d.append("notequickedit",a),d.append("notequickeditpassword",s),d.append("notetitle",i),d.append("notecontent",r),$.ajax({url:"/note/save",type:"POST",data:d,processData:!1,contentType:!1,success:function(e){"success"===e.status?(Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("#saveNoteMessage").html(e.message)):fnShowAlert(e.status,e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}})))}function fnAutoSaveNoteQuickEdit(){var e,t,o;(Notepad.NoteTitleChanged||Notepad.NoteContentChanged)&&(e=$("input[name='notenumber']").val(),(t=fnGetNoteContent()).length>Notepad.NoteContentMaxLength||($("#saveNoteMessage").html(fnLookup("Saving")),(o=new FormData).append("number",e),o.append("notecontent",t),$.ajax({url:"/note/quickeditsave",type:"POST",data:o,processData:!1,contentType:!1,success:function(e){"success"===e.status?(Notepad.NoteTitleChanged=!1,Notepad.NoteContentChanged=!1,$("#saveNoteMessage").html(e.message)):fnShowAlert(e.status,e.message)},error:function(e){console.error("Error saving note:",e),fnShowAlert("error",fnLookup("NoteNotSaved"))}})))}function fnManageNoteAccess(){new bootstrap.Modal(document.getElementById("manageNoteAccessModal")).show()}function fnUpdateNoteAccessText(e,t){$("#noteAccessText").html(e),"Private"==t?($("#noteAccessText").prev().addClass("bi-lock"),$("#noteAccessText").prev().removeClass("bi-unlock"),$("#noteAccessText").prev().removeClass("bi-shield-lock")):"Password"==t?($("#noteAccessText").prev().addClass("bi-shield-lock"),$("#noteAccessText").prev().removeClass("bi-lock"),$("#noteAccessText").prev().removeClass("bi-unlock")):($("#noteAccessText").prev().addClass("bi-unlock"),$("#noteAccessText").prev().removeClass("bi-lock"),$("#noteAccessText").prev().removeClass("bi-shield-lock"))}function fnCommentLoad(){$.post("/note/loadcomment",{notenumber:Notepad.CurrentNoteNumber},function(e){$("#comments_container").html(e)})}function fnCommentAdd(){var e=Notepad.CurrentNoteNumber,t=$("#comment_name").val(),o=$("#comment_content").val(),n=$("#comment_reply").val();""===t||""===o?$("#commentErrorMessage").html(fnLookup("CommentRequired")):$.post("/note/addcomment",{notenumber:e,name:t,content:o,reply:n},function(e){"success"===e.message&&fnCommentLoad()})}function fnCommentDelete(t){$.post("/note/deletecomment",{number:t},function(e){"success"===e.message&&$("#comments_list #comment_"+t).remove()})}function fnCommentReply(e){$("#comment_reply").val(e);e=$("#comment_"+e+" .name").text().trim();$("#comment_content").val("@"+e+" "+$("#comment_content").val()),document.getElementById("comment_content").scrollIntoView()}function fnLoadNoteFileList(){var e=$("input[name='notenumber']").val();(e=e&&0!==e.length?e:$("input[name='autosavenotenumber']").val())&&0!==e.length&&$.post("/note/filelist",{notenumber:e},function(e){$("#noteFileList").html(e)})}function fnDeleteNoteFile(e){!0===confirm(fnLookup("DeleteFileConfirm"))&&$.post("/note/filedelete",{file:e},function(e){fnLoadNoteFileList()})}function fnDeleteNote(t){!0===confirm(fnLookup("DeleteNoteConfirm"))&&$.post("/note/delete",{number:t},function(e){0document.getElementById("x_spreadsheet").clientHeight,width:()=>document.getElementById("x_spreadsheet").clientWidth},extendToolbar:{right:[{tip:"Fullscreen",el:e,onClick:(e,t)=>{fnSpreadsheetToggleFullscreen()}}]}});x_spreadsheet.locale(Notepad.LanguageCode||"en"),Notepad.XSpreadsheet=x_spreadsheet("#x_spreadsheet",e).loadData(JSON.parse($("#edit_textarea").val()||"{}")).change(e=>{Notepad.NoteContentChanged=!0})}function fnUploadAudioFile(e){var t=new Date,t=t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+"_"+("0"+t.getHours()).slice(-2)+"."+("0"+t.getMinutes()).slice(-2)+"."+("0"+t.getSeconds()).slice(-2),o=new FormData;o.append("audioFile",e,t+".wav"),o.append("notenumber",("new"===Notepad.NoteEditMode?$("input[name='autosavenotenumber']"):$("input[name='notenumber']")).val()),$.ajax({url:"/note/fileupload",type:"POST",data:o,processData:!1,contentType:!1,success:function(e){console.log("Upload successful"),e.isSuccess&&(null!==e.autosavenotenumber&&0e.Tags||[]))];0${fnLookup("Bookmark.TagFilter")}`),o.append(e)),t.sort(),t.forEach(e=>{var t=$(``);t.on("click",()=>fnBookmarkTagToggle(e)),o.append(t)})}function fnBookmarkRender(){let a=$("#bookmarkList");a.empty(),(0===bookmarkActiveTags.size?bookmarks:bookmarks.filter(t=>t.Tags&&Array.from(bookmarkActiveTags).every(e=>t.Tags.includes(e)))).forEach((e,o)=>{if(bookmarkEditingIndex===o){var n=$(`
`);n.find(".bookmark-save").on("click",()=>fnBookmarkEditSave(o)),n.find(".bookmark-cancel").on("click",()=>fnBookmarkEditCancel()),a.append(n)}else{n=$(`
${e.Title?`${fnHtmlEncode(e.Url)}`:""}
${fnHtmlEncode(e.Comment)}
`);let t=n.find(".bookmark-tags-container");e.Tags&&e.Tags.forEach(e=>{e=$(`${fnHtmlEncode(e)}`);t.append(e)}),n.find(".bookmark-edit").on("click",()=>fnBookmarkEditStart(o)),n.find(".bookmark-delete").on("click",()=>fnBookmarkDelete(o)),a.append(n)}})}function fnBookmarkAddBookmarkRender(){var e=$(`
`);e.find(".bookmark-save").on("click",()=>fnBookmarkAdd()),$("#bookmark-root").append(e)}function fnBookmarkTagToggle(e){bookmarkActiveTags.has(e)?bookmarkActiveTags.delete(e):bookmarkActiveTags.add(e),fnBookmarkTagRender(),fnBookmarkRender()}function fnBookmarkAdd(){var e=$("#add_url").val(),t=$("#add_title").val(),o=$("#add_comment").val(),n=$("#add_tags").val().split(",").map(e=>e.trim()).filter(e=>e);e?(bookmarks.push({Type:"Bookmark",Url:e,Title:t,Comment:o,Tags:n}),$("#add_url").val(""),$("#add_title").val(""),$("#add_comment").val(""),$("#add_tags").val(""),fnBookmarkSaveToTextarea(),fnBookmarkTagRender(),fnBookmarkRender()):alert(fnLookup("Bookmark.UrlRequired"))}function fnBookmarkEditStart(e){bookmarkEditingIndex=e,fnBookmarkRender()}function fnBookmarkEditSave(e){var t;$("#edit-url-"+e).val()?((t=bookmarks[e]).Url=$("#edit-url-"+e).val(),t.Title=$("#edit-title-"+e).val(),t.Comment=$("#edit-comment-"+e).val(),t.Tags=$("#edit-tags-"+e).val().split(",").map(e=>e.trim()).filter(e=>e),bookmarkEditingIndex=null,fnBookmarkSaveToTextarea(),fnBookmarkTagRender(),fnBookmarkRender()):alert(fnLookup("Bookmark.UrlRequired"))}function fnBookmarkEditCancel(){bookmarkEditingIndex=null,fnBookmarkRender()}function fnBookmarkDelete(e){confirm(fnLookup("Bookmark.DeleteConfirm"))&&(bookmarks.splice(e,1),fnBookmarkSaveToTextarea(),fnBookmarkTagRender(),fnBookmarkRender())}function fnNoteViewSaveBookmark(e){var t=window.location.href,o=document.title;$.post("/note/view/save-bookmark",{bookmarkNumber:e,url:t,title:o}).done(function(e){"success"===e.status?fnShowAlert("success",e.message):fnShowAlert("error",e.message)}).fail(function(e){console.error("Error saving bookmark:",e)})}function fnNoteViewSaveCopy(e){var t=$("#saveCopy").data("note-number");$.post("/note/view/save-copy",{sourceNoteNumber:t,destFolderNumber:e}).done(function(e){"success"===e.status?fnShowAlert("success",e.message):fnShowAlert("error",e.message)}).fail(function(e){console.error("Error copying note:",e)})}function fnNoteViewBookmarkDropdown(){$.ajax({url:"/note/view/save-bookmark-to",method:"POST",success:function(e){$("#saveBookmarkDropdown").children(":not(:first)").remove(),e.forEach(function(e){$("#saveBookmarkDropdown").append(`
${e.title}
`)})},error:function(e){console.error("Error fetching recent bookmarks:",e)}})}function fnNoteViewSaveCopyDropdown(){$.ajax({url:"/note/view/save-copy-to",method:"POST",success:function(e){$("#saveCopyDropdown").children(":not(:first)").remove(),e.forEach(function(e){$("#saveCopyDropdown").append(`
${e.name}
`)})},error:function(e){console.error("Error fetching recent folders:",e)}})}$(document).ready(function(){$("#savedNotes").length&&fnOpenFolder(),$("#edit_title").length&&($("#edit_title").val().length?$("#edit_textarea"):$("#edit_title")).focus(),$("#loginEmail").length&&$("#loginEmail").focus(),$("#manageFolderModal").on("hide.bs.modal",function(e){fnLoadFolderList()}),$("#manageNoteAccessModal").on("hide.bs.modal",function(e){Notepad.NoteContentChanged=!0,fnAutoSaveNote()}),$(window).bind("keydown",function(e){(e.ctrlKey||e.metaKey)&&"s"===String.fromCharCode(e.which).toLowerCase()&&(e.preventDefault(),fnAutoSaveNote())}),fnAutoSaveInit(),Notepad.NoteCommentsEnabled&&fnCommentLoad(),fnLoadNoteFileList()});