﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("ImaginativeUniversalExtenders");

ImaginativeUniversalExtenders.TabContainerExtenderBehavior = function(element) {
    ImaginativeUniversalExtenders.TabContainerExtenderBehavior.initializeBase(this, [element]);
    this._updatePanelInfoCollection = null;
    this._activeTabChangedHandler = null;  
}

ImaginativeUniversalExtenders.TabContainerExtenderBehavior.prototype = {
    initialize: function() {
        ImaginativeUniversalExtenders.TabContainerExtenderBehavior.callBaseMethod(this, 'initialize'); 
        // Add custom initialization here
        this._activeTabChangedHandler = Function.createDelegate(this, this._onActiveTabChanged);
        $find(this.get_element().id).add_activeTabChanged(this._activeTabChangedHandler);
    },
    dispose: function() {        
        //Add custom dispose actions here
        ImaginativeUniversalExtenders.TabContainerExtenderBehavior.callBaseMethod(this, 'dispose');
    },
    get_updatePanelInfoCollection: function() {
        return this._updatePanelInfoCollection;
    },
    
    set_updatePanelInfoCollection: function(value) {
        this._updatePanelInfoCollection = Sys.Serialization.JavaScriptSerializer.deserialize(value,false);
    },
    _onActiveTabChanged : function(sender, args) {
        var index = sender._activeTabIndex;
        var panel = this._get_MappedPanel(index);
        
        if (panel != undefined)
        {
            __doPostBack(panel.UpdatePanelClientID,panel.UpdatePanelID);
        }
    },
    _get_MappedPanel: function(ix)
    {
         upiCol = this.get_updatePanelInfoCollection();
        for(var i=0;i<upiCol.length;i++)
        {
            if(upiCol[i].TabIndex == ix)
            {
                return upiCol[i];
            }
        }
        return undefined;
    }
}
ImaginativeUniversalExtenders.TabContainerExtenderBehavior.registerClass('ImaginativeUniversalExtenders.TabContainerExtenderBehavior', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
Type.registerNamespace('ImaginativeUniversalExtenders');ImaginativeUniversalExtenders.Resource={};
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();