﻿(function (window, document, undefined) {

    "use strict";

    var deskToggleState = 1, // 1 = close, 2 = open, 3 = case-study
        deskContentMore = $('.desk-content-more'),
        deskContentMoreTrigger = $('a.more'),
        caseStudy = $('.desk-case-study'),
        caseStudyContentToggle = $('.desk-case-study-toggle'),
        caseStudyOpenedClass = 'desk-case-study-toggle-opened';


    $(function () {
        initMenu();
        bindEvents();

        deskContentMore.height(deskContentMore.height());
        deskContentMore.hide();

        caseStudy.height(caseStudy.height());
        caseStudy.hide();
    });

    function initMenu() {
        $('.desk-menu').find('li:last-child').addClass('get-in-touch');
    }

    function bindEvents() {
        $('.desk-content-container').
            on('click', 'a.more', handleDeskContentMoreToggle).
            on('click', '.desk-case-study-toggle', handleDeskCaseStudyToggle);
    }

    function handleDeskContentMoreToggle(event) {
        event.preventDefault();

        switch (deskToggleState) {
            case 1: // closed
                deskContentMore.slideDown();
                deskContentMoreTrigger.hide();
                deskToggleState = 2;
                break;
            case 2: // opened
                break;
            case 3: // case study
                caseStudy.slideUp(resetChart);
                caseStudyContentToggle.html('case study');
                deskContentMore.slideDown();
                deskContentMoreTrigger.hide();
                caseStudyContentToggle.removeClass(caseStudyOpenedClass);
                deskToggleState = 2;
                break;
        };
    }

    function handleDeskCaseStudyToggle(event) {
        event.preventDefault();

        switch (deskToggleState) {
            case 1: // closed
                caseStudy.slideDown(animateChart);
                caseStudyContentToggle.addClass(caseStudyOpenedClass);
                caseStudyContentToggle.html('close');
                deskToggleState = 3;
                break;
            case 2: // opened
                deskContentMore.slideUp();
                deskContentMoreTrigger.show();
                caseStudy.slideDown(animateChart);
                caseStudyContentToggle.addClass(caseStudyOpenedClass);
                caseStudyContentToggle.html('close');
                deskToggleState = 3;
                break;
            case 3: // case study
                caseStudy.slideUp(resetChart);
                caseStudyContentToggle.removeClass(caseStudyOpenedClass);
                caseStudyContentToggle.html('case study');
                deskToggleState = 1;
                break;
        };
    }

    function animateChart() {
        if (obgChartAvailable()) {
            obgChart.animate();
        }
    }

    function resetChart() {
        if (obgChartAvailable()) {
            obgChart.reset();
        }
    }

    function obgChartAvailable() {
        // Note use of window. to avoid a reference error
        return window.obgChart != undefined;
    }

})(window, document);
