// Global variables
var kindlemail = "";
var currentpath = "";
var searchTimeout = null;
var lastSearch = "";

$(document).ready(function() {
   getContents();
   $("#bookshome").on("click", function() { setPath("/"); });
   $("#curpath").on("click", function() { setPath($("#curpath").data("newpath")); });
   $("#amazonlink").on("click", function() {
      $("#edit_kindle").val(kindlemail);
      $("#setkindle").dialog("open");
   });
   $("#setkindle").dialog({
      autoOpen: false,
      height: 225,
      width: 450,
      closeOnEscape: true,
      draggable: false,
      modal: true,
      close: function() {
         $("#edit_kindle").val("");
      },
      buttons: [
         {
            text: "Save",
            click: function() { setKindleMail($("#edit_kindle").val()); }
         },
         {
            text: "Cancel",
            click: function() { $(this).dialog("close"); }
         }
      ]
   });
   $("#search").on("change keyup", function() {
      if ( searchTimeout ) clearTimeout(searchTimeout);
      if ( $("#search").val().length > 2 ) searchTimeout = setTimeout(getContents, 500);
      if ( ($("#search").val() == "") && (lastSearch != "") ) {
         lastSearch = "";
         getContents();
      }
   });
});

function showKindleMail() {
   $("#amazonlink").html("KindleMail: " + ((kindlemail != "") ? kindlemail : "Click to Set"));
}

function redirectToLogin() {
   console.log("Redirecting for login...");
   window.location.replace("index.php");
}

function getContents() {
   if ( searchTimeout ) clearTimeout(searchTimeout);
   var data = {};
   if ( $("#search").val() != "" ) {
      data.search = $("#search").val();
      lastSearch = data.search;
   }
   $.ajax({
      url      : 'ajax/getcontents.php',
      data     : data,
      dataType : 'json',
      success  : function(data, stat, jqo) {
                    if ( data.validated == false ) redirectToLogin();
                    if ( data.kindlemail != kindlemail ) {
                       kindlemail = data.kindlemail;
                       showKindleMail();
                    }
                    if ( data.bookdir != currentpath ) {
                       currentpath = data.bookdir;
                       if ( data.bookdirname != "" ) {
                          $("#curpath").text(data.bookdirname);
                          $("#curpath").data("newpath", data.bookdir);
                          $("#curpath").removeClass("hide");
                       } else {
                          $("#curpath").addClass("hide");
                       }
                    }
                    var contents = "";
                    data.contents.forEach(function(item) {
                       if ( item.folder == true ) {
                          contents += '<div><span class="target folder" data-newpath="' + item.fullpath + '">' + item.displayname + "</span></div>";
                       } else {
                          contents += '<div><a href="download.php?id=' + item.id;
                          if ( item.displayname.substring(item.displayname.length - 4) == "epub" ) {
                             contents += '&file=' + item.displayname + '" target="_blank"';
                          } else {
                             contents += '"';
                          }
                          contents += ' class="target file">' + item.displayname + "</a>";
                          if ( item.cankindle == true ) {
                             contents += ' (<span class="tokindle" data-fileid="' + item.id + '" data-filename="' + item.displayname + '">Kindle</span>)';
                          }
                          contents += "</div>";
                       }
                    });
                    $("#foldercontents").html(contents);
                    $(".folder").on("click", function(e) { setPath($(e.currentTarget).data("newpath")); });
                    $(".tokindle").on("click", function(e) {
                       var target = $(e.currentTarget);
                       sendToKindle(target.data("fileid"), target.data("filename")); });
                 }
   });
}

function setPath(newpath) {
   $.ajax({
      url: 'ajax/setpath.php',
      data: {newpath: newpath},
      dataType: 'json',
      success: function(data, stat, jqo) {
         if ( data.validated == false ) redirectToLogin();
         if ( data.changed == true ) {
            $("#search").val("");
            getContents();
         }
      }
   });
}

function setKindleMail(email) {
   $.ajax({
      url: 'ajax/setkindle.php',
      data: {kindlemail: email},
      dataType: 'json',
      success: function(data, stat, jqo) {
         if ( data.validated == false ) redirectToLogin();
         if ( data.success == false ) {
            var myToast = $.toast({
               text : "<h3><strong>Error: Invalid Email Address</strong></h3>",
               showHideTransition : 'slide',
               bgColor : '#cc0000',
               textColor : '#eee',
               hideAfter : 4000,
               textAlign : 'left',
               position : 'top-right'
            });
         } else {
            kindlemail = email;
            showKindleMail();
            $("#setkindle").dialog("close");
            $("#edit_kindle").val("");
            var myToast = $.toast({
               text : "<h3><strong>Kindle Email Address set successfully</strong></h3>",
               showHideTransition : 'slide',
               bgColor : '#137c1e',
               textColor : '#eee',
               hideAfter : 4000,
               textAlign : 'left',
               position : 'top-right'
            });
         }
      }
   });
}

function sendToKindle(fileid, filename) {
   var myToast = $.toast({
      text : "<h3><strong>Sending: " + filename + "</strong></h3>",
      showHideTransition : 'slide',
      bgColor : '#033e9e',
      textColor : '#eee',
      hideAfter : false,
      textAlign : 'left',
      position : 'top-right'
   });
   $.ajax({
      url      : 'ajax/sendtokindle.php',
      data     : {fileid: fileid},
      dataType : 'json',
      success  : function(data, stat, jqo) {
                    if ( data.validated == false ) redirectToLogin();
                    myToast.reset();
                    var message = "";
                    message = "<h3><strong>Sent File:</strong> " + data.filename + "</h3>";
                    message += "<h3><strong>To:</strong> " + data.tomail + "</h3><br />";
                    message += "<h4><strong>Don't forget to add \"books@jaj.com\" ";
                    message += "to your approved senders.</strong></h4>";
                    $.toast({
                       text : message,
                       showHideTransition : 'slide',
                       bgColor : '#137c1e',
                       textColor : '#eee',
                       hideAfter : 10000,
                       textAlign : 'left',
                       position : 'top-right'
                    });
                 }
   });
}