﻿var _mapNames = ['Wellington', 'Auckland', 'Christchurch', 'Dunedin', 'Sydney', 'Perth'];

jQuery(function() {
    jQuery(".tabbedView .tabContent .hidden").removeClass("hidden").removeClass("selected");
    jQuery("#intergenOfficesMap area").attr("href", "#");
});


function _getOfficeSummaryContainer(localElement) {
    return jQuery(localElement).parents('.tabbedView.officeSummary .bottom').eq(0);
}

function _setOfficeSummaryViewType(localElement, className, excludedClassName) {
    var container = _getOfficeSummaryContainer(localElement);

    if (container) {
        var tabContent = container.children('.tabContent');
        tabContent.removeClass(excludedClassName);
        tabContent.addClass(className);
    }
}

function _isAllSelected(container) {
    if (container) {
        var listItems = container.children('.tabContent').eq(0).find('.item');
        var areAllSelected = true;
        listItems.each(function(index) {
            var currentItem = jQuery(this);
            if (!currentItem.hasClass('selected'))
                areAllSelected = false;
        });

        return areAllSelected;
    }

    return false;
}

function _updateExpandAllLink(element) {
    var container = _getOfficeSummaryContainer(element);
    var areAllExpanded = _isAllSelected(container);

    if (container) {
        var expandAllLink = container.find('.expandAllLink').eq(0);

        if (areAllExpanded)
            expandAllLink.html('Collapse all');
        else
            expandAllLink.html('Expand all');
    }
}


function changeOfficeMap(element, panelIndex) {
    map = jQuery('.mapOffice');
    var mapName = _mapNames[panelIndex];
    if (!mapName)
        mapName = '';

    var container = jQuery(element).parents('.tabbedView.officeSummary .bottom').eq(0);
    var selectedItems = container.children('.tabContent').eq(0).find('.item');
    selectedItems.removeClass('selected');

    var selectedItem = selectedItems.eq(panelIndex);
    if (selectedItem)
        selectedItem.addClass('selected');

    if (map) {
        map.attr('src', '/Chrome/Images/mapOffice' + mapName + '.png');
        if (map.supersleight)
            map.supersleight({ shim: '/Chrome/Images/transparent1x1.gif' });
    }
}


function switchToMapView(element) {

    var parentElement = jQuery(element).parent();
    parentElement.addClass('selected');
    parentElement.siblings('li.listView').removeClass('selected');

    _setOfficeSummaryViewType(parentElement, 'mapView', 'listView');

    //Ensure exactly one item is selected.
    var selectedItemIndex = -1;
    var currentIndex = 0;
    var container = parentElement.parents('.tabbedView.officeSummary .bottom').eq(0);
    var tabContent = container.children('.tabContent').eq(0);
    tabContent.find('.item').each(function(index) {
        var currentItem = jQuery(this);
        if (currentItem.hasClass('selected')) {
            if (selectedItemIndex < 0)
                selectedItemIndex = currentIndex;
            else
                currentItem.removeClass('selected');
        }
        currentIndex++;
    });

    if (selectedItemIndex < 0) {
        //Nothing selected; select first item
        selectedItemIndex = 0;
    }
    changeOfficeMap(parentElement, selectedItemIndex);
}

function switchToListView(element) {
    var parentElement = jQuery(element).parent();
    parentElement.addClass('selected');
    parentElement.siblings('li.mapView').removeClass('selected');

    _setOfficeSummaryViewType(parentElement, 'listView', 'mapView');
    _updateExpandAllLink(parentElement);
}


function expandAll(element) {
    var container = _getOfficeSummaryContainer(element);
    var areAllSelected = _isAllSelected(container);
    var selectedItems = container.children('.tabContent').eq(0).find('.item');

    if (areAllSelected)
        selectedItems.removeClass('selected');
    else
        selectedItems.addClass('selected');

    _updateExpandAllLink(element)
}

function toggleListViewSection(source) {
    var section = jQuery(source).parent();
    var tabContent = jQuery(source).parents('.tabContent').eq(0);
    var canToggle = false;

    //Ensure visitors can only toggle on list view mode
    if (tabContent && tabContent.hasClass('listView'))
        canToggle = true;

    if (section && canToggle) {
        section.toggleClass('selected');

        //Recalculate number of selected offices
        _updateExpandAllLink(section);
    }
}



