﻿$(document).ajaxStop($.unblockUI);
$(document).ready(function () {

    var currentCaller = null;
    var loaderImage = oBaseAppSettings.ControlPath + "Images/Layout/ajax-loader-small.gif";
    var url = oBaseAppSettings.ControlPath + 'Arkiv/SearchQuery';
    var detailsUrl = '';

    if (oBaseAppSettings.AuthOk == "True") {
        detailsUrl = oBaseAppSettings.ControlPath + 'Arkiv/Details/';
    }
    else {
        detailsUrl = oBaseAppSettings.ControlPath + 'Arkiv/BasicDetails/';
    }

    var oTable = $('#search-result-table').dataTable({
        "bProcessing": true,
        //"bStateSave": true,
        "bServerSide": true,
        "sPaginationType": "full_numbers",
        "iDisplayLength": 50,
        "sDom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>',
        "bFilter": false,
        "bLengthChange": false,
        "sAjaxSource": url,
        "fnServerData": function (sSource, aoData, fnCallback) {
            aoData.push({ "name": "text", "value": $('#search-text').val() });
            aoData.push({ "name": "institution", "value": $('#institution').val() });
            aoData.push({ "name": "category", "value": $('#category').val() });
            aoData.push({ "name": "level", "value": $('#level').val() });
            aoData.push({ "name": "locale", "value": $('#locale').val() });
            aoData.push({ "name": "document", "value": $('#document').val() });
            aoData.push({ "name": "archiveStart", "value": $('#archive-start').val() });
            aoData.push({ "name": "archiveEnd", "value": $('#archive-end').val() });
            $.getJSON(sSource, aoData, function (json) {
                /* Do whatever additional processing you want on the callback, then tell DataTables */
                fnCallback(json);
            });
        },
        "aoColumnDefs": [
                { "bVisible": false, "aTargets": [0] },
                { "fnRender": function (oObj) {
                    return '<a href="' + detailsUrl + oObj.aData[0] + '">' + oObj.aData[1] + '</a>';
                }, "sWidth": "45%", "aTargets": [1]
                },
                { "sWidth": "6%", "aTargets": [4, 5, 6] },
                { "sWidth": "8%", "aTargets": [7] }
            ],
        "oLanguage": {
            "oPaginate": {
                "sFirst": "Första",
                "sLast": "Sista",
                "sNext": "Nästa",
                "sPrevious": "Förra",
                "sEmptyTable": "Inga arkiv matchade din sökning",
                "sInfo": "Visar _START - _END av _TOTAL arkiv",
                "sInfoFiltered": "Visar _START - _END av _TOTAL arkiv",
                "sProcessing": "Söker..",
                "sLoadingRecords": "Laddar data, vänligen vänta.."
            }
        }
    });


    if (window.location.href.indexOf('advanced=true') > 0) {
        $("#advanced-search-expanded").val("true");
    } else {
        $("#advanced-search").hide();
    }

    $('.excel-export').click(function () {
        GotoExcelExport();
    });

    $('.search-archive-button').click(function () {
        oTable.fnDraw();
    });

    $('#clear-search').click(function () {
        clearSearch();
    });

    $("#show-advanced-search").click(function () {
        $("#advanced-search").slideDown('slow');
        $("#advanced-search-expanded").val("true");
        $("#excel-export").removeClass('excel-export-simple');
        $("#excel-export").addClass('excel-export-advanced');
        $(this).hide();
    });

    $("#hide-advanced-search").click(function () {
        clearSearch();
        $("#advanced-search").slideUp('slow');
        $("#advanced-search-expanded").val("false");
        $("#show-advanced-search").show();
        $("#excel-export").removeClass('excel-export-advanced');
        $("#excel-export").addClass('excel-export-simple');
    });

    $("#tabs").tabs();

    $("#sub-tabs").tabs();

    $(".button").button();

    $(".delete-topografi, .delete-search-word, .delete-document, .delete-activity, .delete-archive, .delete-alternativnamn, .delete-image").live('click', function () {
        currentCaller = $(this);
        var currentClass = "#" + $(this).attr("class") + "-dialog";
        $(currentClass.replace(" delete", "")).dialog("open");
    });

    $("#delete-activity-dialog, #delete-image-dialog, #delete-topografi-dialog, #delete-document-dialog, #delete-search-word-dialog, #delete-archive-dialog, #delete-alternativnamn-dialog, #delete-image-dialog").dialog({
        autoOpen: false,
        resizable: false,
        height: 190,
        modal: true,
        buttons: {
            'Ta bort': function () {
                switch ($(currentCaller).attr("class").replace(" delete", "")) {

                    case "delete-image":
                        $.blockUI({
                            theme: true,
                            title: 'Ta bort bild',
                            message: '<p>Bilden tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'Photo/DeleteFile',
                            type: 'POST',
                            datatype: 'json',
                            data: { "bildId": parseInt($(currentCaller).attr("id").replace("image-", "")) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    currentCaller.parents().filter("li").remove();
                                }
                                else {
                                    $("#dialog-message").html(data.result).dialog("open");
                                    if (data.result === "Bilden bortagen från databasen. Men filen saknades på servern.") {
                                        currentCaller.parents().filter("li").remove();
                                    }
                                }
                            },
                            error: function (data) {
                                $("#dialog-message").html(data.result).dialog("open");
                            }
                        });
                        $(this).dialog('close');
                        break;

                    case "delete-alternativnamn":
                        $.blockUI({
                            theme: true,
                            title: 'Ta bort alternativnamn',
                            message: '<p>Alternativnamnet tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'AlternativNamn/DeleteAlternativNamn',
                            type: 'POST',
                            datatype: 'json',
                            data: { "alternativNamnId": parseInt(currentCaller.parents().filter("td").find("input:hidden").val()) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    currentCaller.parents().filter("tr").remove();
                                }
                                else {
                                    alert(data.result);

                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });
                        $(this).dialog('close');
                        break;

                    case "delete-archive":
                        $.blockUI({
                            theme: true,
                            title: 'Ta bort sökord',
                            message: '<p>Arkivet tas bort från databasen. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'Arkiv/Delete',
                            type: 'POST',
                            datatype: 'json',
                            data: { "id": parseInt($("#arkiv_id").val()) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    location.href = oBaseAppSettings.ControlPath + "arkiv/index";
                                }
                                else if (data.result == 'inst') {
                                    location.href = oBaseAppSettings.ControlPath + "Institution/Details/" + data.id;
                                }
                                else {
                                    alert(data.result);

                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });
                        $(this).dialog('close');
                        break;

                    case "delete-search-word":

                        $.blockUI({
                            theme: true,
                            title: 'Tar bort sökord',
                            message: '<p>Sökordet tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'SearchWords/DeleteSearchWord',
                            type: 'POST',
                            datatype: 'json',
                            data: { "searchWordId": parseInt(currentCaller.parents().filter("td").find("input:hidden").val()) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    // Call server to remove first, then remove table row
                                    currentCaller.parents().filter("tr").remove();
                                }
                                else {
                                    alert(data.result);
                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });
                        $(this).dialog('close');
                        break;
                    case "delete-activity":

                        $.blockUI({
                            theme: true,
                            title: 'Tar bort verksamheten',
                            message: '<p>Verksamheten tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'Activity/DeleteActivity',
                            type: 'POST',
                            datatype: 'json',
                            data: { "deleteData": currentCaller.parents().filter("td").find("input:hidden").val() },
                            success: function (data) {
                                if (data.result === 'success') {

                                    // Call server to remove first, then remove table row
                                    currentCaller.parents().filter("tr").remove();
                                }
                                else {
                                    alert(data.result);
                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });
                        $(this).dialog('close');
                        break;
                    case "delete-document":

                        $.blockUI({
                            theme: true,
                            title: 'Tar bort handling',
                            message: '<p>Handligen tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'Document/DeleteDocument',
                            type: 'POST',
                            datatype: 'json',
                            data: { "documentId": parseInt(currentCaller.parents().filter("td").find("input:hidden").val()) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    currentCaller.parents().filter("tr").remove();
                                }
                                else {
                                    alert(data.result);
                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });

                        $(this).dialog('close');
                        break;

                    case "delete-topografi":
                        $.blockUI({
                            theme: true,
                            title: 'Tar bort topografin',
                            message: '<p>Topografin tas bort från arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
                        });

                        $.ajax({
                            url: oBaseAppSettings.ControlPath + 'Topografi/DeleteTopografi',
                            type: 'POST',
                            datatype: 'json',
                            data: { "arkivTopografiId": parseInt(currentCaller.parents().filter("td").find("input:hidden").val()) },
                            success: function (data) {
                                if (data.result === 'success') {
                                    currentCaller.parents().filter("tr").remove();
                                }
                                else {
                                    alert(data.result);
                                }
                            },
                            error: function (data) {
                                alert(data);
                            }
                        });

                        $(this).dialog('close');
                        break;

                    default:
                        $(this).dialog('close');
                        // Call server to remove first, then remove table row
                        currentCaller.parents().filter("tr").remove();
                        break;
                }

            },
            'Avbryt': function () {
                $(this).dialog('close');
            }
        }
    });

    $("#save-new-activity-button").click(function () {

        var activityName = $("#activities-text").val();
        if (activityName === "") {
            $("#dialog-message").html("<p>Du måste skriva en verksamhet</p>").dialog("open");
            return;
        }

        $.blockUI({
            theme: true,
            title: 'Sparar Verksamhet',
            message: '<p>Verksamheten sparas till arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
        });

        $.ajax({
            url: oBaseAppSettings.ControlPath + 'Activity/AddActivity',
            type: 'POST',
            datatype: 'json',
            data: { "name": activityName, "arkivId": parseInt($("#arkiv_id").val()) },
            success: function (data) {
                if (data.result === 'success') {
                    var hiddenValue = data.verksamhetsId + "|" + $("#arkiv_id").val();
                    $('#activity-table tbody').append('<tr>' +
                    '<td>' +
                    '<input type="hidden" value="' + hiddenValue + '" />' +
                    '<a href="javascript:void(0);" title="Ta bort" class="delete-activity delete">Ta bort</a></td>' +
                    '<td>' + $("#activities-text").val() + '</td>' +
                    '</tr>');
                    $("#activities-text").val("");
                }
                else {
                    $("#activity-exits-dialog").dialog("open");
                    $("#activity-text").val("");
                }
            },
            error: function (data) {
                alert(data);
            }
        });
    });


    $("#save-new-document").click(function () {
        var documentTypeValue = $("#document-combo").find("option:selected").text();
        if (documentTypeValue === "") {
            $("#dialog-message").html("<p>Du måste välja en handling</p>").dialog("open");
            return false;
        }

        // var handlingId = $("#document-div #document-combo option:selected").val();

        $.blockUI({
            theme: true,
            title: 'Sparar Handling',
            message: '<p>Handlingen sparas till arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '"/></p>'
        });

        $.ajax({
            url: oBaseAppSettings.ControlPath + 'Document/AddDocument',
            type: 'POST',
            datatype: 'json',
            data: { "handlingValue": documentTypeValue, "documentNote": $("#document-note").val(), "arkivId": $("#arkiv_id").val() },
            success: function (data) {
                if (data.result === 'success') {
                    $('#document-table tbody').append('<tr>' +
		            '<td>' +
		            '<input type="hidden" value="' + data.documentId + '" />' +
		            '<a href="javascript:void(0);" title="Ta bort" class="delete-document delete">Ta bort</a>' +
		            '</td>' +
			        '<td>' + documentTypeValue.split(" - ")[0] + '</td>' +
			        '<td>' + $("#document-note").val() + '</td>' +
			        '</tr>');
                }
                else { alert(data.result); }
            },
            error: function (data) {
                alert(data);
            }
        });
    });


    $("#add-new-search-word-button").click(function () {
        var searchWordValue = $("#search-word-text").val();

        if (searchWordValue === "") {
            $("#dialog-message").html("<p>Du måste ange ett sökord</p>").dialog("open");
            return;
        }

        $.blockUI({
            theme: true,
            title: 'Sparar sökord',
            message: '<p>Sökordet sparas till arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '" /></p>'
        });

        $.ajax({
            url: oBaseAppSettings.ControlPath + 'SearchWords/AddSearchWord',
            type: 'POST',
            datatype: 'json',
            data: { "Word": searchWordValue, "ArkivId": $("#arkiv_id").val() },
            success: function (data) {
                if (data.result === 'success') {
                    $("#search-word-table tbody").append('<tr>' +
                      '<td>' +
                      '<input type="hidden" value="' + data.sokOrdsId + '" />' +
                      '<a href="javascript:void(0);" class="delete-search-word delete" title="Ta bort">Ta bort</a>' +
                      '</td>' +
					  '<td>' + $("#search-word-text").val() + '</td>' +
					  '</tr>');
                    $("#search-word-text").val("");
                }
                else {
                    $("#search-word-exits-dialog").dialog("open");
                    $("#search-word-text").val("");
                }
            },
            error: function (data) {
                alert(data);
            }
        });
    });

    $("#add-new-topografi-button").click(function () {

        var topografiValue = $("#combobox").find("option:selected").text();
        if (topografiValue === "") {
            $("#dialog-message").html("<p>Du måste välja en topografi</p>").dialog("open");
            return false;
        }

        $.blockUI({
            theme: true,
            title: 'Sparar topografin',
            message: '<p>Topografin sparas till arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '" /></p>'
        });

        $.ajax({
            url: oBaseAppSettings.ControlPath + 'Topografi/AddTopografi',
            type: 'POST',
            datatype: 'json',
            data: { "topografi": topografiValue, "specifiering": $("#topografi-specification-text").val(), "arkivId": $("#arkiv_id").val() },
            success: function (data) {
                if (data.result === 'success') {
                    $('#topografi-table tbody').append('<tr>' +
		            '<td>' +
		            '<input type="hidden" value="' + data.arkivTopografiId + '" />' +
		            '<a href="javascript:void(0);" title="Ta bort" class="delete-topografi delete">Ta bort</a>' +
		            '</td>' +
			        '<td>' + topografiValue + '</td>' +
			        '<td>' + $("#topografi-specification-text").val() + '</td>' +
			        '</tr>');
                }
                else {
                    $("#dialog-message").html("<p>" + data.result + "</p>").dialog("open");
                }
            },
            error: function (data) {
                alert(data);
            }
        });
    });

    $("#alternativnamn-dialog").dialog({
        autoOpen: false,
        modal: true,
        height: 200,
        width: 350,
        buttons: {
            'Spara': function () {
                $(this).dialog('close');
                var alternativNamn = $("#alternativnamn").val();
                if (alternativNamn === "") {
                    $("#dialog-message").html("<p>Du måste skriva ett alternativnamn</p>").dialog("open");
                    return;
                }

                $.blockUI({
                    theme: true,
                    title: 'Sparar Alternativnamn',
                    message: '<p>alternativnamnet sparas till arkivet. Var god vänta.&nbsp;&nbsp;<img src="' + loaderImage + '" /></p>'
                });

                $.ajax({
                    url: oBaseAppSettings.ControlPath + 'AlternativNamn/AddAlternativNamn',
                    type: 'POST',
                    datatype: 'json',
                    data: { "alternativNamn": alternativNamn, "beskrivning": $("#beskrivning").val(), "arkivId": parseInt($("#arkiv_id").val()) },
                    success: function (data) {
                        if (data.result === 'success') {
                            var hiddenValue = data.alternativNamnId + "|" + $("#arkiv_id").val();
                            $('#alternativnamn-table').show();
                            $('#alternativnamn-table tbody').append('<tr>' +
                            '<td>' +
                            '<input type="hidden" value="' + hiddenValue + '" />' +
                            '<a href="javascript:void(0);" title="Ta bort" class="delete-alternativnamn delete">Ta bort</a></td>' +
                            '<td>' + $("#alternativnamn").val() + '</td>' +
                            '<td>' + $("#beskrivning").val() + '</td>' +
                            '</tr>');
                            $("#alternativnamn").val("");
                            $("#beskrivning").val("");

                        }
                        else {
                            $("#activity-exits-dialog").dialog("open");
                            $("#activity-text").val("");
                        }
                    },
                    error: function (data) {
                        alert(data);
                    }
                });

            },
            'Avbryt': function () {
                $(this).dialog('close');
            }

        }
    });

    $(".cancel-button").click(function () {
        history.back(1);
    });

    $(".open-help-dialog").click(function () {
        $("#" + $(this).attr("id") + "-dialog").dialog("open");
        return false;
    });

    $(".help-dialog").dialog({
        autoOpen: false,
        show: 'blind',
        hide: 'explode'
    });

    $("#dialog-message").dialog({
        autoOpen: false,
        show: 'blind',
        hide: 'explode',
        modal: true
    });

    $("#add-alternativnamn").click(function () {
        $("#alternativnamn-dialog").dialog("open");
    });

    $("#search-text").autocomplete({
        source: oBaseAppSettings.ControlPath + "Arkiv/GetArchiveNames",
        minLength: 2
    });

    $("#dialog").dialog({
        autoOpen: false,
        show: 'blind',
        hide: 'explode'
    });

    $("#cancel-update-forvaring").click(function () {
        $("#tabs").tabs("select", 0);
    });

//    $("#combobox").combobox();
//    $("#document-combo").combobox();

});

// funkar detta i ie?                                   
//(function ($) {
//    $.widget("ui.combobox", {
//        _create: function () {
//            var self = this;
//            var select = this.element.hide();
//            var input = $("<input tabindex='1'>")
//					.insertAfter(select)
//					.autocomplete({
//					    source: function (request, response) {
//					        var matcher = new RegExp(request.term, "i");
//					        response(select.children("option").map(function () {
//					            var text = $(this).text();
//					            if (this.value && (!request.term || matcher.test(text)))
//					                return {
//					                    id: this.value,
//					                    label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
//					                    value: text
//					                };
//					        }));
//					    },
//					    delay: 0,
//					    change: function (event, ui) {
//					        if (!ui.item) {
//					            // remove invalid value, as it didn't match anything
//					            $(this).val("");
//					            return false;
//					        }
//					        select.val(ui.item.id);
//					        self._trigger("selected", event, {
//					            item: select.find("[value='" + ui.item.id + "']")
//					        });

//					    },
//					    minLength: 0
//					})
//					.addClass("ui-widget ui-widget-content ui-corner-left");
//            $("<button>&nbsp;</button>")
//				.attr("tabIndex", -1)
//				.attr("title", "Visa alla")
//				.insertAfter(input)
//				.button({
//				    icons: {
//				        primary: "ui-icon-triangle-1-s"
//				    },
//				    text: false
//				}).removeClass("ui-corner-all")
//				.addClass("ui-corner-right ui-button-icon")
//				.click(function () {
//				    // close if already visible
//				    if (input.autocomplete("widget").is(":visible")) {
//				        input.autocomplete("close");
//				        return;
//				    }
//				    // pass empty string as value to search for, displaying all results
//				    input.autocomplete("search", "");
//				    input.focus();
//				});
//        }
//    });

//})(jQuery);


function clearSearch() {
    $('#institution').val('0');
    $('#category').val('0');
    $('#level').val('0');
    $('#locale').val('0');
    $('#document').val('0');
    $('#archive-start').val('');
    $('#archive-end').val('');
}

function GotoExcelExport() {
    var url = oBaseAppSettings.ControlPath + 'Excel/';

    var query = '?institution=' + $('#institution').val();
    query += '&text=' + $('#search-text').val();
    query += '&category=' + $('#category').val();
    query += '&level=' + $('#level').val();
    query += '&locale=' + $('#locale').val();
    query += '&document=' + $('#document').val();
    query += '&archiveStart=' + $('#archive-start').val();
    query += '&archiveEnd=' + $('#archive-end').val();

    window.location = url + query;
}

