/// <reference path="jquery-1.6.2-vsdoc.js" />
/// <reference path="develop.com-2-4.js" />

// define the top-level namespace object.
dm.sidebar = {};
dm.sidebar.replaceNav = false;

////////////////////// $(document).ready() ///////////////////
$(document).ready(function () {
    try {
        dm.sidebar.replaceSideNavigation();
    } catch (e) {
        dm.core.logMessage("sidebar error - replaceSideNavigation: " + e.message);
    }

    try {
        dm.sidebar.generateFeaturedCourses();
    } catch (e) {
        dm.core.logMessage("sidebar error - generateFeaturedCourses: " + e.message);
    }

    try {
        dm.sidebar.generateFeaturedWebcasts();
    } catch (e) {
        dm.core.logMessage("sidebar error - generateFeaturedWebcasts: " + e.message);
    }

    try {
        dm.sidebar.registerSearchAction();
    } catch (e) {
        dm.core.logMessage("sidebar error - registerSearchAction: " + e.message);
    }

    try {
        dm.sidebar.activateBrowseMyStuffToggle();
    } catch (e) {
        dm.core.logMessage("sidebar error - activateBrowseMyStuffToggle: " + e.message);
    }
});

dm.sidebar.activateBrowseMyStuffToggle = function () {
    $("#showBrowsMyStuff").click(function () {
        $(this).fadeOut(100);
        $("#browseMyStuffTags").delay(110).slideDown(200);
    });
};

dm.sidebar.generateFeaturedCourses = function () {

    var errorHandler = function (response) {
        // alert(response);
    };

    // siteLocale is defined for all pages in "include-variables.jsp".
    var locale = $("#localeSetting").val();
    var serviceUrl = "/Services/Develop_Com_Services/Engagements/Featured?country=" + locale;

    $.getJSON(serviceUrl, null, function (data) {
        var template$ = $("#featuredCourseTemplate");
        var container$ = $(".featuredCourseList").first();

        container$.attr("style", null);

        if (data.Error != null) {
            errorHandler(null);
            return;
        }

        container$.html("");

        $(data).each(function (index, item) {
            var html$ = template$.clone();

            $(".courseName", html$).html(dm.sidebar.fixUpCourseNamesForFeaturedArea(item.ShortName));
            $(".courseUrl", html$).attr("href", "/" + item.CourseUrl);
            $(".courseDate", html$).html(item.ShortDate);

            container$.append(html$);
            $(html$).fadeIn(200);
        });

    })
    .error(errorHandler);
};


dm.sidebar.fixUpCourseNamesForFeaturedArea = function (courseName) {
    var excludes =
    [
        "- WPF",
        "WPF -",
        "WCF -",
        "EF4 -",
        "MVC - ",
        "(WF4)",
        "TFS 2010 - Visual Studio ",
        "Training",
        "with Data Services"
    ];

    $.each(excludes, function (index, item) {
        courseName = courseName.replace(item, "");
    });

    return $.trim(courseName);
};

dm.sidebar.registerSearchAction = function () {
    $("#BmsSearch form").submit(function (e) {
        var loc = this.elements['domain'].value;

        for (var i = 0; i < this.elements.length; i++) {

            if (this.elements[i].name == 'domain' || this.elements[i].name == 'submit-button')
                continue;

            loc += '&' + this.elements[i].name + '=' + this.elements[i].value;
        }

        e.preventDefault();
        window.location = loc;
        return false;
    });
};


dm.sidebar.replaceSideNavigation = function () {
    if (!dm.sidebar.replaceNav)
        return;

    var courseExtras$ = $(".course-supplemental");
    var rightDest$ = $("td#right");
    var rightSrc$ = $("#sidebarReplacement");

    if (rightDest$.length < 0)
        return;

    if (rightSrc$.length < 0)
        return;

    if (courseExtras$.length > 0)
        rightSrc$.append(courseExtras$.clone());

    rightDest$.html(rightSrc$.html());
    rightDest$.show();
};

dm.sidebar.generateFeaturedWebcasts = function () {

    var errorHandler = function (response) {
        //alert(response);
    };

    // siteLocale is defined for all pages in "include-variables.jsp".
    var locale = $("#localeSetting").val();

    var serviceUrl = "/Services/Develop_Com_Services/Webcasts/Index";

    $.getJSON(serviceUrl, null, function (data) {

        var template$ = $("#featuredWebcastTemplate");
        var container$ = $("#webcastList").first();

        container$.attr("style", null);

        if (data.Error != null) {
            errorHandler(null);
            return;
        }

       
        $(data).each(function (index, item) {
            var html$ = template$.clone();
            $("#webcastTitle", html$).html(item.Title);
            $("#webcastTitle", html$).attr("href", item.RegistrationUrl);
            $("#webcastTitle", html$).attr("target", "_blank");
            $("#webcastAuthor", html$).html(item.PresenterName);
            var startDate = new Date(parseInt(item.StartDateTime.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));
            $("#webcastDay", html$).html(startDate + " ");

            container$.append(html$);
            $(html$).fadeIn(200);
        });

        dm.sidebar.generateFeaturedSeries(container$, template$);

    })
    .error(errorHandler);


};

dm.sidebar.generateFeaturedSeries = function (c$, t$) {

    container$ = c$;
    template$ = t$;

    var errorHandler = function (response) {
        alert(response);
    };

    // siteLocale is defined for all pages in "include-variables.jsp".
    var locale = $("#localeSetting").val();

    var serviceUrl = "/Services/Develop_Com_Services/Webcasts/Series";

    $.getJSON(serviceUrl, null, function (data) {

        if (data.Error != null) {
            errorHandler(null);
            return;
        }

        if (data.length == 0) {
            return;
        };

        $(data).each(function (index, item) {
            var html$ = template$.clone();
            $("#webcastTitle", html$).html(item.Title);
            $("#webcastTitle", html$).attr("href", item.Url);
            $("#webcastAuthor", html$).html(item.PresenterName);
            var startDate = new Date(parseInt(item.StartDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));
            var endDate = new Date(parseInt(item.EndDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));
            $("#webcastDay", html$).html($.datepicker.formatDate('D M d', startDate) + " - " + $.datepicker.formatDate('D M d', endDate));

            container$.append(html$);
            $(html$).fadeIn(200);
        });
    })
    .error(errorHandler);

};




