﻿/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("Microsoft.Windows.WEC");

Microsoft.Windows.WEC.Tabs = function(element) {
    Microsoft.Windows.WEC.Tabs.initializeBase(this, [element]);
}
Microsoft.Windows.WEC.Tabs.prototype = {
    initialize: function() {
        Microsoft.Windows.WEC.Tabs.callBaseMethod(this, "initialize");

        this._clickHandlerDelegate = Function.createDelegate(this, this._clickHandler);
        this._addClickHandlers();
        this._applyTabStyles();
    },
    dispose: function() {
        this._removeClickHandlers();

        Microsoft.Windows.WEC.Tabs.callBaseMethod(this, "dispose");
    },
    _addClickHandlers: function() {
        var _tabs = this.get_Tabs();

        for (var i = 0; i < _tabs.length; i++) {
            if (this.get_TargetControlID()) {
                if (!_tabs[i].NavigateUrl) {
                    $addHandler($get(_tabs[i].ID), 'click', this._clickHandlerDelegate);
                }
            }
            else {
                $get(_tabs[i].ID).setAttribute('onclick', 'return true;');
            }
        }

        _tabs = null;
    },
    _removeClickHandlers: function() {
        if (this.get_TargetControlID()) {
            var _tabs = this.get_Tabs();

            for (var i = 0; i < _tabs; i++) {
                $removeHandler($get(_tabs[i].ID), 'click', this._clickHandlerDelegate);
            }

            _tabs = null;
        }
    },
    _clickHandler: function(sender) {
        var _tabs = this.get_Tabs();

        for (var i = 0; i < _tabs.length; i++) {
            if (_tabs[i].ID == sender.target.id) {
                _tabs[i].Active = true;
            }
            else {
                _tabs[i].Active = false;
            }
        }

        _tabs = null;

        this._applyTabStyles();
    },
    _setActiveTab: function(activeTabIndex) {
        var _tabs = this.get_Tabs();

        for (var i = 0; i < _tabs.length; i++) {
            if (i == activeTabIndex) {
                _tabs[i].Active = true;
            }
            else {
                _tabs[i].Active = false;
            }
        }

        _tabs = null;

        this._applyTabStyles();
    },
    _resetTabStyles: function() {
        var _tabs = this.get_Tabs();

        for (var i = 0; i < _tabs.length; i++) {
            _tabs[i].Active = false;
        }

        _tabs = null;

        this._applyTabStyles();
    },
    _applyTabStyles: function() {

        var _tabs = this.get_Tabs();

        for (var i = 0; i < _tabs.length; i++) {
            var element = $get(_tabs[i].ID).parentNode;

            while (element.className.match('tabActive') != null) {
                Sys.UI.DomElement.removeCssClass(element, 'tabActive');
            }

            while (element.className.match('tabInactive') != null) {
                Sys.UI.DomElement.removeCssClass(element, 'tabInactive');
            }

            if (_tabs[i].Active) {
                Sys.UI.DomElement.addCssClass(element, 'tabActive');

                if (this.get_TargetControlID()) {
                    Sys.UI.DomElement.addCssClass($get(this.get_TargetControlID()), 'tab' + i);
                }
            }
            else {
                Sys.UI.DomElement.addCssClass(element, 'tabInactive');

                if (this.get_TargetControlID()) {
                    Sys.UI.DomElement.removeCssClass($get(this.get_TargetControlID()), 'tab' + i);
                }
            }
        }

        _tabs = null;
    },
    get_Tabs: function() {
        return this._tabs;
    },
    set_Tabs: function(value) {
        if (this._tabs != value) {
            this._tabs = value;
            this.raisePropertyChanged("Tabs");
        }
    },
    get_TargetControlID: function() {
        return this._targetControlID;
    },
    set_TargetControlID: function(value) {
        if (this._targetControlID != value) {
            this._targetControlID = value;
            this.raisePropertyChanged("TargetControlID");
        }
    },
    get_NavigateUrl: function() {
        return this._navigateUrl;
    }
}

Microsoft.Windows.WEC.Tabs.registerClass("Microsoft.Windows.WEC.Tabs", Sys.UI.Control);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();