﻿$(document).ready(function() {
    if($.os.name === 'linux') {
        var noticeBox = NOTICE.getNoticeBoxInfo('Flash Player 10 til Linux indeholder kendte fejl i fil upload funktionaliteten. Derfor ser du ikke det flash plugin der giver dig mulighed for at vælge flere filer ad gangen. Klik <a href="#" onclick="ARTEFACTFUNCTIONS.initFlash()">her</a> hvis du vil aktivere pluginet alligevel.' , "linuxnotice");
        noticeBox.appendTo('#fileUploadContainer');
    } else {
        ARTEFACTFUNCTIONS.initFlash();
    }
 });

 var ARTEFACTFUNCTIONS = {
     initFlash: function() {
         $('#linuxnotice').remove();
         $('#fileUpload').fileUpload({
             'uploader': '/scripts/modules/uploader.swf',
             'simUploadLimit': '1',
             //'auto':'true',
             'script': '/Custom/fileupload.aspx',
             'folder': 'none',
             'cancelImg': '/media/Layout/icons/btn-close.gif',
             'multi': 'true',
             'buttonImg': '/media/Layout/button-upload-files.png',
             'width': '127',
             'height': '23',
             'scriptData': { 'contentitemid': "'" + CONTENTITEMID + "'",
                 'token': "'" + UPLOADTOKEN + "'",
                 'save': "'" + SAVEOPTION + "'"
             },
             'displayData': 'speed',
             'auto': 'true',
             'onComplete': function(event, queueId, fileObj, response, data) {
                 if (data.fileCount == 0) {
                     ARTEFACTFUNCTIONS.refreshTable();
                 }
                 return true;
             },
             'onSelectAll': function() {
                 $(this).fileUploadStart();
             },
             'onSelect': function(event, queueId, fileObj) {
                 for (var i = 0; i < ARTEFACTFUNCTIONS.errorMessages.length; i++) {
                     noticeId = ARTEFACTFUNCTIONS.errorMessages.pop();
                     $('#' + noticeId).hide('normal', function() { $(this).remove() });
                 }
                 if (fileObj.size < 100 * 1024 * 1024) {
                     return true;
                 } else {
                     ARTEFACTFUNCTIONS.addErrorMessage("Du har valgt filen <strong>" + fileObj.name + "</strong> (Størrelse: " + ARTEFACTFUNCTIONS.bytesToReadable(fileObj.size) + ") til upload, men den overskrider den maksimale filstørrelse på " + ARTEFACTFUNCTIONS.bytesToReadable(100 * 1024 * 1024), queueId);
                     $(this).fileUploadCancel(queueId);
                     return false;
                 }
             },
             'onError': function(event, queueID, fileObj, errorObj) {
                 if (!ARTEFACTFUNCTIONS.errorMessages.join().match(errorId)) {
                     var errorMessage = "Der opstod en fejl under upload af: <strong>" + fileObj.name + "</strong> (Størrelse: " + ARTEFACTFUNCTIONS.bytesToReadable + ")";
                     //errorMessage += "<br />" + errorObj.type + " - " + (errorObj.status === undefined ? '' : errorObj.status + "<br />") + (errorObj.text === undefined ? '' : errorObj.text + "<br />");
                     ARTEFACTFUNCTIONS.addErrorMessage(errorMessage, queueID);
                 }
                 return true;
             }

         });
     },
     bytesToReadable: function(numBytes) {
         if (numBytes < 1024) {
             return numBytes + "bytes";
         } else if (numBytes < 1024 * 1024) {
             return Math.round(numBytes / 1.024) / 1000 + "kB";
         } else {
             return Math.round(numBytes / (1.024 * 1024)) / 1000 + "MB";
         }

     },
     addErrorMessage: function(text, queueID) {
         var errorId = 'error' + queueID;
         var errorbox = NOTICE.getNoticeBoxInfo(text + "<br />Efterfølgende filer blev ikke uploadet, prøv dem igen", errorId);
         ARTEFACTFUNCTIONS.errorMessages.push('error' + queueID);
         $('#fileUpload' + queueID).remove();
         errorbox.appendTo('#fileUploadContainer');
         $('#fileUploadUploader').wrap('<div id="tempContainer"></div>');
         var flashpluginHtml = $('#tempContainer').html();
         $('#tempContainer').remove();
         $('#fileUpload').after(flashpluginHtml);
         $('#fileUploadQueue').empty();
         return true;
     },
     up: function(obj, id) {
         var row = $(obj).closest('tr');
         var succeedingRows = row.nextAll('tr');
         var preceedingRows = row.prevAll('tr');

         if (preceedingRows.size() == 0) {
             return;
         }
         if (preceedingRows.size() == 1) {
             $(obj).removeClass('sort-up').addClass('sort-up-disabled');
             preceedingRows.find('a:first').addClass('sort-up').removeClass('sort-up-disabled');
         }

         if (succeedingRows.size() == 0) {
             row.find('a:last').addClass('sort-down').removeClass('sort-down-disabled');
             row.prev().find('a:last').removeClass('sort-down').addClass('sort-down-disabled');
         }

         row.insertBefore(preceedingRows.get(0));
         ARTEFACTFUNCTIONS.fixColoring(row.closest('table'));
     },
     down: function(obj, id) {
         var row = $(obj).closest('tr');
         var succeedingRows = row.nextAll('tr');
         var preceedingRows = row.prevAll('tr');

         if (succeedingRows.size() == 0) {
             return;
         }
         if (succeedingRows.size() == 1) {
             $(obj).removeClass('sort-down').addClass('sort-down-disabled');
             succeedingRows.find('a:last').addClass('sort-down').removeClass('sort-down-disabled');
         }

         if (preceedingRows.size() == 0) {
             row.find('a:first').addClass('sort-up').removeClass('sort-up-disabled');
             row.next().find('a:first').removeClass('sort-up').addClass('sort-up-disabled');
         }
         row.insertAfter(succeedingRows.get(0));
         ARTEFACTFUNCTIONS.fixColoring(row.closest('table'));
     },
     saveSort: function() {
         var ordering = Array();
         $("div.table-artefacts tbody input:hidden").each(function() {
             ordering.push($(this).val());
         });
         $.ajax({
             type: "POST",
             cache: false,
             async: false,
             timeout: 500,
             contentType: "application/json",
             dataType: "json",
             processData: false,
             url: "/json-services/artefacts.asmx/sort",
             data: $.toJSON({
                 contentItemId: CONTENTITEMID,
                 artefactIds: ordering
             }),
             success: ARTEFACTFUNCTIONS.refreshTable
         });
     },
     toggleSort: function() {
         var sortMode = false;
         return function(obj) {
             if (!sortMode) {
                 $(obj).val("Gem sortering");
                 ARTEFACTFUNCTIONS.showSort(obj);
                 ARTEFACTFUNCTIONS.fixSortButtons();
                 sortMode = true;
             } else {
                 $(obj).val("Sortér");
                 ARTEFACTFUNCTIONS.saveSort();
                 sortMode = false;
             }
             $(obj).closest('div.oio-tabs-box-liquid-content-inner').find('div.buttons:last').toggle();
         };
     } (),
     showSort: function(obj) {
         var url = "/Custom/artefactlisting.aspx?sort=true&contentItemId=" + CONTENTITEMID;
         $("div.table-artefacts").load(url + " div.table-artefacts table", { "rand": Math.random() },
            function() {
                ARTEFACTFUNCTIONS.fixSortButtons();
                $("div.table-artefacts").removeClass("table-artefacts-docs").addClass("table-artefacts-sort");
            });
     },
     fixSortButtons: function() {
         $(this).find("a.sort-up:first").removeClass('sort-up').addClass('sort-up-disabled');
         $(this).find("a.sort-down:last").removeClass('sort-down').addClass('sort-down-disabled');
     },
     errorMessages: new Array(),
     refreshTable: function() {
         var url = "/Custom/artefactlisting.aspx?contentItemId=" + CONTENTITEMID;
         var div = "div.table-artefacts";
         var selector = " div.table-artefacts table";
         if ($(div).length == 0) {
             div = "div.no-data";
             selector = " div.table-artefacts";
         }
         $(div).load(url + selector, { "rand": Math.random() },
            function() {
                $("div.table-artefacts").removeClass("table-artefacts-sort").addClass("table-artefacts-docs");
                $('div.table-artefacts div.dropdown').dropdown();
                $("div.table-artefacts div.dropdown ul li a").click($.fn.dropdown.closeAll);
                $("div.table-artefacts div.modalPopupClose, a.modalPopupClose").click($.fn.dropdown.closeAll);
                $("div.table-artefacts div.title a.disabled").each(function() {
                    $(this).attr({ title: "Log ind for at få adgang til denne funktion..." });
                });
                if ($("div.table-artefacts tbody tr").size() > 1) {
                    $("div.sort-button-container").removeClass("hidden");
                }
            });
     },
     fixColoring: function(jqtable) {
         TABLE.fixColoring(jqtable);
     },
     deleteArtefact: function(obj, id, title) {

         var onDelete = function() {
             var table = $(obj).closest('table');
             $(obj).closest('tr').next('.expand-area').remove();
             $(obj).closest('tr').remove();
             if (table.find('tbody tr').size() == 0) {
                 table.remove();
                 $("div.sort-button-container").addClass("hidden");

             }
             return false;
         }
         if (confirm("Er du sikker på at du vil slette: " + title)) {
             $.ajax({
                 type: "POST",
                 cache: false,
                 async: false,
                 timeout: 500,
                 contentType: "application/json",
                 dataType: "json",
                 processData: false,
                 url: "/json-services/artefacts.asmx/delete",
                 data: $.toJSON({
                     artefactId: id
                 }),
                 success: onDelete
             });
         }

     }
 };
 