$(document).ready(function() {
    $(".dropdown-trigger").dropdown({hover: true, coverTrigger: false});
    $(".sidenav").sidenav();
    $(".tooltipped").tooltip();
    $('.modal').modal({dismissible: false});
    $('#editlink_modal_delete').click(function() { deleteLink(); });
    $('#editlink_modal_save').click(function() { saveEditLink(); });
    $('#editlink_modal_cancel').click(function() { cancelEditLink(); });
    updateLinkList();
});

function goHome() {
    $.ajax({
        url: 'ajax/setlocation.php',
        dataType: 'json',
        data: {gohome: 1},
        success: function(data, stat, jqo) {
           if ( data.success ) window.location.href = "index.php";
        }
    });
}

function escapeHTML(text) {
  var map = {
    '&': '&',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  };

  return text.relink(/[&<>"']/g, function(m) { return map[m]; });
}

function encodeHTML(text) {
    return jQuery('<div />').text(text).html();
}

function decodeHTML(text) {
    return jQuery('<div />').html(text).text();
}

function toast(message, delay, classname) {
  if ( delay === undefined ) delay = 4000;
  if ( classname === undefined ) classname = "";
  M.toast({html: message, displayLength: delay, classes: classname});
}

function openEditLinkModal(id = 0) {
    var instance = M.Modal.getInstance($('#editlink_modal'));
    $.ajax({
        url: 'ajax/getlinkdata.php',
        dataType: 'json',
        data: {id: id},
        success: function(data, stat, jqo) {
            if (data.id !== null) {
                $("#editlink_id").val(data.id);
                $("#editlink_url").val(data.url);
                $("#editlink_title").val(data.title);
                $("#editlink_description").val(data.description);
                $("#editlink_modal_delete").show();
            } else {
                $("#editlink_id").val("0");
                $("#editlink_url").val("");
                $("#editlink_title").val("");
                $("#editlink_description").val("");
                $("#editlink_modal_delete").hide();
            }
            M.updateTextFields();
            instance.open();
        }
    });
}

function updateLinkList() {
    $.ajax({
        type: 'GET',
        url: 'getlinks/index.php',
        dateType: 'json',
        success: function(data, stat, jqo) {
            var tabledata = "";
            for (var i=0; i<data.links.length; i++) {
                var link = data.links[i];
                tabledata += "<tr";
                if ( data.canedit ) tabledata += " class='clickable' onClick='openEditLinkModal(" + link.id + ")'";
                tabledata += ">";
                tabledata += "<td>" + link.url_safe + "</td>";
                tabledata += "<td>" + link.title_safe + "</td>";
                tabledata += "<td>" + link.description_safe + "</td>";
                tabledata += "</td>";
                tabledata += "</tr>";
            }
            $("#linklist").html(tabledata);
            $('.tooltipped').tooltip();
        }
    });
}

function deleteLink() {
    $.ajax({
        type: 'POST',
        url: 'ajax/deletelink.php',
        dataType: 'json',
        data: {id: $("#editlink_id").val()},
        success: function(data, stat, jqo) {
            if ( data.success ) {
                cancelEditLink();
                toast(data.message, 4000);
                updateLinkList();
            } else {
                toast(data.message, 4000, "failtoast");
            }
        }
    });
}

function saveEditLink() {
    $.ajax({
        type: 'POST',
        url: 'ajax/savelink.php',
        dataType: 'json',
        data: {id: $("#editlink_id").val(),
               url: $("#editlink_url").val(),
               title: $("#editlink_title").val(),
               description: $("#editlink_description").val()},
        success: function(data, stat, jqo) {
            if ( data.success ) {
                cancelEditLink();
                toast(data.message, 4000);
                updateLinkList();
            } else {
                toast(data.message, 4000, "failtoast");
            }
        }
    });
}

function cancelEditLink() {
    var instance = M.Modal.getInstance($('#editlink_modal'));
    instance.close();
    $("#editlink_url").val("");
    $("#editlink_title").val("");
    $("#editlink_description").val("");
    M.updateTextFields();
}