﻿/// <reference path="C:\tfsroot\DGI\Main\Source\DGI\DGI\script\jquery-1.2.6-vsdoc.js" />

// Uddrager navigations kontekst fra bookmark i url
var getHashParameters = function(hash) {
    var params = {
        pageNumber: 1,
        tagId: -1,
        mediaType: -1,
        getHash: function() { return this.pageNumber + ";" + this.tagId + ";" + this.mediaType; },
        isEmpty: function() { return this.pageNumber == 1 && this.tagId == -1 && this.mediaType == -1; }
    };
    if (hash) {
        var args = hash.substr(1).split(";");
        var idx = parseInt(args[0]);

        if (!isNaN(idx))
            params.pageNumber = idx;
        if (args.length > 1)
            params.tagId = args[1];
        if (args.length > 2)
            params.mediaType = args[2];
    }
    return params;

};

// Opdaterer UI, i henhold til kontrol-værdier - skal have parameterobjekt med i kald (indeholder bl.a. this.ClientID på container-div'er)
function renderFocusListe(control) {
    var tagSelector = $("#" + control.TAG_SELECTOR);
    var mediaSelector = $("#" + control.MEDIA_SELECTOR);
    var ctxt = getHashParameters(location.hash);
    ctxt.tagId = tagSelector.val();
    ctxt.mediaType = mediaSelector.val();
    location.hash = ctxt.getHash();
    var divContainer = $("#" + control.CONTAINERID);
    divContainer.empty();
    $.getJSON("/API/newsservice.ashx", { mode: 1, listId: control.ID, callerUrl: window.location.href, landsdel: control.LANDSDEL, idraetter: control.IDRAET, maalgrupper: control.MAALGRUPPE, tag: tagSelector.val(), medieType: mediaSelector.val() }, callbackFocusListe);
}

// Konstruerer Html til arrangementlinks
function renderArrangementLink(row, td) {
    var div = $("<div class='tagControlMedieTable'>"
                    + "<img align='left' src='/gfx/empty.gif' class='arr sprite' />"
               + "</div>");

    if (row.ArrangementLinks) {
        var ArrangementsAntal = row.ArrangementLinks.antal;

        var p = $("<p>Arrangement</p>")
        div.append(p);

        if (ArrangementsAntal == 1) {
            div.click(function() { location.href = (location.href.slice(0, location.href.indexOf("."))) + "/Arrangementer/" + row.ArrangementLinks.URL; });
        } else {
            div.click(function() { location.href = row.Link; });
            p.append("(" + ArrangementsAntal + ")");
        }

        td.append(div);
    }
}

// Konstruerer Html til dokumentlinks
function renderDokumentLinks(row, td) {
    var div = $("<div class='tagControlMedieTable'>"
                    + "<img align='left' src='/gfx/empty.gif' class='pdf sprite' />"
               + "</div>");

    if (row.DokumentLinks) {
        var p = $("<p>Dokumenter</p>")
        div.append(p);

        if (row.DokumentLinks.antal == 1) {
            div.click(function() { window.open(row.DokumentLinks.URL); });
        } else {
            div.click(function() { window.open(row.Link); });
            p.append("(" + row.DokumentLinks.antal + ")");
        }

        td.append(div);
    }
}

// Konstruerer Html til eksternelinks
function renderEksternLink(row, td) {
    var div = $("<div class='tagControlMedieTable'>"
                    + "<img align='left' src='/gfx/empty.gif' class='video sprite' />"
               + "</div>");

    if (row.VideoLinks) {
        var p = $("<p>Video/lyd</p>")
        div.append(p);

        var EksternMedierAntal = row.VideoLinks.antal;


        if (EksternMedierAntal == 1) {
            div.click(function() { window.open(row.VideoLinks.URL); });
        } else {
            div.click(function() { window.open(row.Link); });
            p.append("(" + EksternMedierAntal + ")");
        }
        td.append(div);
    }
}

// bruges til at holde mellem kald og callback.
var PAGESIZE;
var TOTAL;

// Udføres når WS-kald returnerer
function callbackFocusListe(o, e) {
    if (o.Error)
        return alert(o.Error);

    var parameters = window[o.ListId];
    PAGESIZE = parameters.PAGESIZE;

    if (!parameters)
        return alert("Ukendt parameterobjekt: " + o.ListeId);

    var divContainer = $("#" + parameters.CONTAINERID);
    var divNavigation = $("#" + parameters.CROSSLINKID);
    divNavigation.empty();

    var divSlider = $("<div class='slider'></div>");
    var tablePage = null;

    TOTAL = o.Items.length;
    for (i = 0; i < o.Items.length; i++) {

        if (!tablePage || i % PAGESIZE == 0) {
            // ny side

            var pageNumber = i / PAGESIZE + 1;
            tablePage = $("<table class='page tagTable'>"
                                    + "<thead>"
                                        + "<col align='left' class='col1' />"
                                        + "<col align='left' />"
                                    + "</thead>"
                               + "<tbody></tbody>"
                         + "</table>");
            divSlider.append(tablePage);

            var navTd = $("<td><a title='Side " + pageNumber + "' href='#'>" + pageNumber + "</a></td>");
            divNavigation.append(navTd);
        }

        var next5 = [];
        for (var j = i + 1; j < o.Items.length && j < (i + 5); j++)
            next5.push(o.Items[j].ArticleId);

        var hash = getHashParameters(location.hash);
        var row = $("<tr>"
                       + "<td><a href='" + o.Items[i].Link
                        + "?tagid=" + hash.tagId
                        + "&ctxt=" + parameters.CONTEXT
                        + "'>" + o.Items[i].Headline + "</a></td>"
                       + "<td></td>"
                  + "</tr>");

        var td = row.find("td:eq(1)");
        renderArrangementLink(o.Items[i], td);
        renderDokumentLinks(o.Items[i], td);
        renderEksternLink(o.Items[i], td);

        tablePage.find("tbody").append(row);
    }
    divContainer.append(divSlider);
    $("#" + parameters.CONTAINERID).dgiSlider();
    $("#TGoverskrift").text(window[parameters.TAG_SELECTOR].lastSelectionText);

    selectedTag();
}

function selectedTag() {

    var current = getHashParameters(location.hash).tagId;

    $("div.tags").find("span.current").removeClass("current");
    $("div.tags").find("span.id" + current).addClass("current");
}

// Synkroniserer tag-klik og tag dropdown
function tagCloudClick(parameters, tagId) {
    var tagCombo = window[parameters.TAG_SELECTOR];
    tagCombo.setValue(tagId);

    renderFocusListe(parameters);
}

// Udskriver lokationsteksten
var articleCount = function(page, size, number) {
    if (number >= 1) {
        var taeller = (number * size) > TOTAL ? TOTAL : (number * size);
        var firstArtikel = ((page - 1) * size) + 1;
        var lastArtikel = (page * size) > TOTAL ? TOTAL : (page * size);
        var y = taeller % size;

        $("#txtingenArtikler").hide();
        $("#txtinfoOmAntalArtikler").show();
        $("#firstArtikel").text(firstArtikel);
        $("#AntalArtikler").text(taeller);

        if (page == number && y != 0) {
            var artiklerLastPanel = (y % size) + ((page - 1) * size);
            $("#lastArtikel").text(artiklerLastPanel);

        } else {
            $("#lastArtikel").text(lastArtikel);
        }

    } else {
        $("#txtingenArtikler").show();
        $("#txtinfoOmAntalArtikler").hide();

    }
};

// De sørgelige rester af den hedengangne CODA slider
jQuery.fn.dgiSlider = function(settings) {
    settings = jQuery.extend({
        easeFunc: "swing",
        easeTime: 750,
        toolTip: false
    }, settings);

    return this.each(function() {
        var slider = jQuery(this);

        slider.find(".loading").remove();
        var panelWidth = slider.width();
        var panelCount = slider.find("TABLE.page").size();
        var divNavigation = slider.parent().parent().parent().find("div.navigationContainer");

        var layer = slider.find("div.slider");

        var stripViewerWidth = panelWidth * panelCount;
        layer.css("width", stripViewerWidth);
        var navWidth = panelCount * 2;

        var params = getHashParameters(location.hash);
        var currentPage = params.pageNumber;

        if (currentPage <= panelCount) {
            var cnt = -(panelWidth * (currentPage - 1));
            layer.css({ left: cnt });
        }

        // Create appropriate nav
        divNavigation.find("div.crossLinks a").each(function(z) {
            navWidth += $(this).parent().parent().parent().width();
            // What happens when a nav link is clicked
            $(this).click(function() {
                $(this).addClass("current");
                $(this).parent().parent().find("a").not($(this)).removeClass("current"); // wow!
                var cnt = -(panelWidth * z);
                currentPage = z + 1;
                layer.animate({ left: cnt }, settings.easeTime, settings.easeFunc);
                articleCount(currentPage, PAGESIZE, panelCount);
                params.pageNumber = currentPage;
                location.hash = params.getHash();
                return false;
            });
        });


        divNavigation.find("div.navL").click(function() {
            if (currentPage <= 1) {
                currentPage = panelCount; // Fordi det er logisk at smutte til sidste side, når man står på første ;-)
                var cnt = -(panelWidth * (panelCount - 1));
                divNavigation.find("div.crossLinks a.current").removeClass("current");
                divNavigation.find("td:last a").addClass("current");
            } else {
                currentPage -= 1;
                var cnt = -(panelWidth * (currentPage - 1));
                divNavigation.find("div.crossLinks a.current").removeClass("current");
                divNavigation.find("td:eq(" + (currentPage - 1) + ") a").addClass("current");
            };
            layer.animate({ left: cnt }, settings.easeTime, settings.easeFunc);
            articleCount(currentPage, PAGESIZE, panelCount);
            params.pageNumber = currentPage;
            location.hash = params.getHash();
            return false;
        });

        divNavigation.find("div.navR").click(function() {
            if (params.pageNumber >= panelCount) {
                currentPage = 1;
                var cnt = 0;
                divNavigation.find("div.crossLinks a.current").removeClass("current");
                divNavigation.find("td:first a").addClass("current");
            } else {
                currentPage += 1;
                var cnt = -(panelWidth * (currentPage - 1));
                divNavigation.find("div.crossLinks a.current").removeClass("current");
                divNavigation.find("td:eq(" + (currentPage - 1) + ") a").addClass("current");
            };

            layer.animate({ left: cnt }, settings.easeTime, settings.easeFunc);
            articleCount(currentPage, PAGESIZE, panelCount);
            params.pageNumber = currentPage;
            location.hash = params.getHash();
            return false;
        });

        if (currentPage <= panelCount) {
            divNavigation.find("td:eq(" + (currentPage - 1) + ") a").addClass("current");
        } else {
            divNavigation.find("div.crossLinks a:eq(0)").trigger('click');
        }


        if (panelCount <= 1) {
            $("div.navigationContainer").hide();
        } else {
            $("div.navigationContainer").show();
        }

        articleCount(currentPage, PAGESIZE, panelCount);
    });
};

