﻿$(function() {
    // Select/unselect all checkboxes on bull list
    $('#update-all').change(function() {
        $('#tablesorter tbody input:checkbox').each(function() {
            this.checked = !this.checked;
            toggleSelectedBullId(this.id);
        });
    });

    $('#mark-all').click(function() {
        $('#tablesorter tbody input:checkbox, #result .egenskaper input:checkbox').each(function() {
            this.checked = true;
            $('#update-all').attr('checked', 'checked');
            toggleSelectedBullId(this.id);
        });

        return false;
    });
    $('#mark-none').click(function() {
        $('#tablesorter tbody input:checkbox, #result .egenskaper input:checkbox').each(function() {
            this.checked = false;
            $('#update-all').removeAttr('checked');
            toggleSelectedBullId(this.id);
        });

        return false;
    });

    // Bull list toggle list view buttons
    $('#showNormal, #showThumbnail').click(function() {
        hideCol(74);
        $('#result>.imageView').remove();
        $('#tablesorter').show();
        return false
    });

    $('#showNormal').click(function() {
        $(this).removeClass().addClass('showListActive');
        $('table#tablesorter').removeClass();
        $('.showBothActive').removeClass('showBothActive').addClass('showBoth');
        $('.showImagesActive').removeClass('showImagesActive').addClass('showImages');
        addTopScrollbar(true, 0);
        return false;
    });

    $('#showThumbnail').click(function() {
        $(this).removeClass().addClass('showBothActive');
        $('table#tablesorter').removeClass();
        $('.showImagesActive').removeClass('showImagesActive').addClass('showImages');
        $('.showListActive').removeClass('showListActive').addClass('showList');
        addTopScrollbar(true, 0);
        return false;
    });

    $('#showImages').click(function() {
        $(this).removeClass().addClass('showImagesActive');
        $('table#tablesorter').removeClass();
        $('.showBothActive').removeClass('showBothActive').addClass('showBoth');
        $('.showListActive').removeClass('showListActive').addClass('showList');
        addTopScrollbar(false, 0);
        bindMatriseItems();
        return false;
    });

});

// Generates the bull lists sort links
function convertToSpan(element) {
    $(element).replaceWith($('<span id="' + element.id + '">' + element.innerHTML + '</span>'));
}

function convertToLink(id) {
    var $id = $('#' + id);
    $id.replaceWith($('<a href="" id="' + id + '">' + $id.html() + '</a>'));
}

function toggleCategoryPicker() {
    var toggleBtn = $('input#uxToggleCategoryPicker');
    var toggleBtnClass = toggleBtn.attr('class');
    if (toggleBtnClass.indexOf('up') >= 0) {
        $('div.categoryPicker').hide();
        toggleBtn.attr('class', '');
    }
    else {
        $('div.categoryPicker').show();
        toggleBtn.attr('class', 'up');
    }
}

function fnShowHide(iCol) {
    var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
    oTable.fnSetColumnVis(iCol, bVis ? false : true);
}

function hideCol(iCol) {
    oTable.fnSetColumnVis(iCol, false);
    $('input.showBothActive').attr('class', 'showBoth');
    $('input.showList').attr('class', 'showListActive');
    $('input.showImagesActive').attr('class', 'showImages');
}

function showCol(iCol) {
    oTable.fnSetColumnVis(iCol, true);
}

function showColAndDisplayMorePropertiesDdl(iCol) {
    $('div#morePropertiesBtn').show();
    showCol(iCol);
}

function hideColAndDisplayMorePropertiesDdl(iCol) {
    $('div#morePropertiesBtn').show();
    hideCol(iCol);
}

// Show bull matrise list
function bindMatriseItems() {
    if (!$('#showImages').hasClass('showImagesActive')) {
        return false;
    }

    showCol(74);
    $('#result>.imageView').remove();
    $('#tablesorter').hide();    
    $('#tablesorter .imageView').clone().prependTo($('#result'));
    bindFancybox();
}


function showImageMatrise() {
    $('input.showBothActive').attr('class', 'showBoth');
    $('input.showListActive').attr('class', 'showList');
    $('input.showImages').attr('class', 'showImagesActive');
    $('div#morePropertiesBtn').hide();
}

function toggleSelectedBullId(bullId) {
    if (bullId == null) {
        return;
    }
    var bullIds = $('input.uxSelectedBulls').val();
    var bullId_array = bullIds.split('|');
    var inArray = jQuery.inArray(bullId, bullId_array);
    if (inArray >= 0) {
        $('input.uxSelectedBulls').val(removeBullIdFromArray(bullId, bullId_array));
    }
    else {
        if (bullIds != null && bullIds != "") {
            bullIds = bullIds + '|';
        }
        $('input.uxSelectedBulls').val(bullIds + bullId);
    }
}


function removeBullIdFromArray(bullId, bullId_array) {
    for (i = 0; i < bullId_array.length; i++) {
        if (bullId_array[i] == bullId) {
            bullId_array[i] = "";
        }
    }
    var returnVal = "";
    for (i = 0; i < bullId_array.length; i++) {
        if (bullId_array[i] != "") {
            returnVal += bullId_array[i] + "|";
        }
    }

    if (returnVal.charAt(returnVal.length - 1) == '|') {
        returnVal = returnVal.substr(0, (returnVal.length - 1));
    }

    return returnVal;
}


function setColumnVisibility() {
    var columnNames = $('span.uxColumnsToShow').html();
    var columnNames_array = columnNames.split('|');
    for (i = 0; i < columnNames_array.length; i++) {
        showCol(mapColumnNameToColumnNumb(columnNames_array[i]));
    }
}


function mapColumnNameToColumnNumb(columnName) {
    // **********************************
    // IF THIS IS UPDATED, YOU NEED TO UPDATE METHODS IN SORT HELPER C# TOO!!
    // **********************************

    switch (columnName.toLowerCase()) {
        case "stamboknummer":
            return 2;
        case "utenlandsk_nummer":
            return 4;
        case "rasenavn":
            return 5;
        case "kategori":
            return 6;
        case "oksenavn":
            return 3;
        case "farge":
            return 7;
        case "hornstatus":
            return 8;
        case "avlsverdi":
            return 9;
        case "pris":
            return 10;
        case "pris_kjsep":
            return 11;
        case "slektskap":
            return 12;
        case "rekegenstatus":
            return 13;        
        case "ind_hastighet":
            return 23;
        case "ind_mjølk":
            return 14;
        case "ind_kg_protein":
            return 15;
        case "ind_kg_fett":
            return 16;
        case "ind_kg_mjølk":
            return 17;
        case "ind_proteinProsent":
            return 18;
        case "ind_fett":
            return 19;
        case "ind_kjøtt":
            return 20;
        case "ind_slaktevekt":
            return 21;
        case "ind_slakteklasse":
            return 22;
        case "ind_lekkasje":
            return 24;
        case "ind_lynne":
            return 25;
        case "ind_fruktbarhet_døtre":
            return 26;
        case "ind_ikke_omløp_56_dager_kviger":
            return 27;
        case "ind_ikke_omløp_56_dager_kyr":
            return 28;
        case "ind_ant_dag_fra_kalv_til_1_in":
            return 29;
        case "ind_kalvingsvansk_far_til_kalv":
            return 30;
        case "ind_kalvingsvansk_far_til_ku":
            return 31;
        case "ind_dødfødsler_far_til_kalv":
            return 32;
        case "ind_dødfødsler_far_til_ku":
            return 33;
        case "ind_mastitt":
            return 34;
        case "ind_andre_sjukdommer":
            return 35;
        case "ind_bein":
            return 36;
        case "ind_hasevinkel":
            return 37;
        case "ind_beinstillingbak":
            return 38;
        case "ind_kodeledd":
            return 39;
        case "ind_klauver":
            return 40;
        case "ind_jur":
            return 41;
        case "ind_avstand_spene_gulv":
            return 42;
        case "ind_jurdyb":
            return 43;
        case "ind_spplassfor":
            return 44;
        case "ind_speneavstand_bak":
            return 45;
        case "ind_ekstra_spener":
            return 46;
        case "ind_jurbalanse":
            return 47;
        case "ind_jurfeste_framme":
            return 48;
        case "ind_jurfb_br":
            return 49;
        case "ind_jurfb_ho":
            return 50;
        case "ind_midtband":
            return 51;
        case "ind_jurtype":
            return 52;
        case "ind_spenelengde":
            return 53;
        case "ind_spenetykkelse":
            return 54;
        case "ind_kroppsdyb":
            return 55;
        case "ind_krysshøyde":
            return 56;
        case "ind_kryssretning":
            return 57;
        case "kjott_vekt_0":
            return 59;
        case "kjott_vekt_200":
            return 60;
        case "kjott_vekt_365":
            return 61;
        case "kjott_vekt_mor_200":
            return 62;
        case "kjott_slaktevekt":
            return 63;
        case "kjott_slakteklasse":
            return 64;
        case "kjott_fettgruppe":
            return 65;
        case "vent_ung_oksens_tilvekst":
            return 66;
        case "vent_ung_oksens_eksteriør":
            return 67;
        case "vent_ung_mor_avlsverdi":
            return 68;
        case "vent_ung_mor_kuindeks":
            return 69;
        case "vent_ung_mor_proteinpros_ind":
            return 70;
        case "avstamning_far_stamboknr":
            return 71;
        case "avstamning_far_navn":
            return 72;
        case "avstamning_morfar_stamboknr":
            return 73;
        case "avstamning_morfar_navn":
            return 74;
        default:
            return 3;
    }
}
