﻿Type.registerNamespace('NetProjects.warrants.Library.Extender');

NetProjects.warrants.Library.Extender.GridViewHeaderBehavior = function(element) {
    /// <summary>
    /// The GridViewHeaderBehavior is used to fix a GridView control header and make the control scrollable
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement">
    /// The GridView element this behavior is associated with
    /// </param>
    NetProjects.warrants.Library.Extender.GridViewHeaderBehavior.initializeBase(this, [element]); 
    this._WrapperDivCssClass = null;
}

NetProjects.warrants.Library.Extender.GridViewHeaderBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        NetProjects.warrants.Library.Extender.GridViewHeaderBehavior.callBaseMethod(this, 'initialize');
        var element = this.get_element();
        this._FreezeGridViewHeader();
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        var element = this.get_element();
        NetProjects.warrants.Library.Extender.GridViewHeaderBehavior.callBaseMethod(this, 'dispose');
    }, 
    
    _FreezeGridViewHeader : function () {
        var grid = this.get_element();
        if (grid != 'undefined')
        {
            grid.style.visibility = 'hidden';
            var div = null;
            if (grid.parentNode != 'undefined') 
            {
                div = grid.parentNode;
                if (div.tagName == 'DIV')
                {
                    div.className = this._WrapperDivCssClass;  
                    div.style.overflow = 'auto';
                }
            }                
            var tags = grid.getElementsByTagName('TBODY');
            if (tags != 'undefined')
            {
                var tbody = tags[0];
                var trs = tbody.getElementsByTagName('TR');
                var headerHeight = 8;
                if (trs != 'undefined') 
                {
                    headerHeight += trs[0].offsetHeight;
                    var headTR = tbody.removeChild(trs[0]);
                    var head = document.createElement('THEAD');
                    head.appendChild(headTR);
                    grid.insertBefore(head, grid.firstChild);
                }
                tbody.style.height = (div.offsetHeight -  headerHeight) + 'px';
                tbody.style.overflowX = 'hidden';
                tbody.overflow = 'auto';
                tbody.overflowX = 'hidden';
            }
            grid.style.visibility = 'visible';
         }
    },
    
    get_WrapperDivCssClass : function() {
        return this._WrapperDivCssClass;
    },
    
    set_WrapperDivCssClass : function(value) {
        this._WrapperDivCssClass = value;
        this.raisePropertyChanged('WrapperDivCssClass');
    }
}

NetProjects.warrants.Library.Extender.GridViewHeaderBehavior.registerClass('NetProjects.warrants.Library.Extender.GridViewHeaderBehavior', AjaxControlToolkit.BehaviorBase);

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();