


function XS_ToggleSection(sIdSection)
{
    var divSec = $(sIdSection + '_sec')
    if (divSec != null)
    {	
    
        if (divSec.getAttribute('opened') == 'yes' )
        {
            var aDivs = divSec.immediateDescendants()
            for(var i=1;i<aDivs.length;i++)
            {
                if(aDivs[i].id != sIdSection + '_tit')
                { 
                    aDivs[i].style.visibility = 'hidden';
                    aDivs[i].style.display = 'none';								
                }
            }			
         
            var oTd = $(sIdSection + '_sta');    
            oTd.innerHTML = '<a href="#" title="Abrir sección"><img src="/XS_Include/img/window/D.gif" border=0 ></a>';
            divSec.setAttribute('opened','no');
        }
        else
        {
            var aDivs = divSec.immediateDescendants()
            for(var i=1;i<aDivs.length;i++)
            {
                if(aDivs[i].id != sIdSection + '_tit')
                { 
                    aDivs[i].setStyle('visibility','block');
                    aDivs[i].setStyle('display','none');							
                }
            }			
                                    

//                                    
//            var oDiv = $(sIdSection + '_bod');
//            if (oDiv != null)
//            {
//                oDiv.style.display = 'block'; 
//                oDiv.style.visibility = 'visible'; 
//            }   
//            
//            var oDiv = $(sIdSection + '_none');
//            if (oDiv != null)
//            {
//                oDiv.style.display = 'block'; 
//                oDiv.style.visibility = 'visible'; 
//            }   

//            var oDiv = $(sIdSection + '_message');
//            if (oDiv != null)
//            {
//                oDiv.style.display = 'block'; 
//                oDiv.style.visibility = 'visible'; 
//            }   

//            var oDiv = $(sIdSection + '_bot');
//            if (oDiv != null)
//            {
//                oDiv.style.display = 'block'; 
//                oDiv.style.visibility = 'visible'; 
//            }           

            var oTd = $(sIdSection + '_sta');    
            oTd.innerHTML = '<a href="#" title="Cerrar sección"><img src="/XS_Include/img/window/U.gif" border=0 ></a>';        
            divSec.setAttribute('opened','yes');
            
        }
     }                  
}

function XS_Section(sIdSection, aCols, sBodyType)
{
    this.type = "Section";
    this.id = sIdSection;
    if (aCols != null)
        this.aCols = aCols
    else
        this.aCols = null;
    this.maximized = false;
    this.onClose = null;
	this.divSection = document.createElement('div')
	this.divSection.setAttribute('id', sIdSection + '_sec')
	this.divSection.setAttribute('opened','yes')
	this.divSection.setAttribute('hidden','no')
	this.divSection.style.textAlign = 'left';
	this.height = null;
    this.oContent = null;
    this.tabSelected = null;
    if(sBodyType == null)
        this.BodyType = ''
    else
        this.BodyType = ' XS_Sec' + sBodyType;
        
    this.assign = function(sIdContent, sDisplay)
    {
        if (sIdContent != null)
        {
            if( $(this.id + '_sec') != null )
            {
                alert('La sección ' + this.id + ' ya existe');
                return;
            }    
            this.oContent = $(sIdContent);
            if (this.oContent != null)
            {
                Insertion.Bottom(this.oContent, this.divSection)
                if (sDisplay != null && sDisplay == 'hidden')
                    this.hide();
            }    
            else
                alert('assign: No se encontró '+ sIdContent)
        }  
    }
    
    this.isVisible= function()
        {
             var oDiv = $(this.id + '_sec');
                            
            return ( oDiv.style.visibility != 'hidden' );
        }
        
	this.getPart = function(sPart)
	    {
	        var divSec = $(this.id);
	        if (divSec == null)
	            divSec = this.divSection;
            
	        var aDiv = divSec.childNodes;
	        var oPart = null
		    for(var i=0;i<aDiv.length;i++)
		    {
		        oPart = aDiv[i];
		        if ( $(oPart).hasClassName(sPart) )
		        {
		            return oPart;
		        }    
		    }			
		    if (oPart == null)
		    {
		        //alert('No se encontró el area ' + sPart + ' de la sección')
	            return null;
	        }    
	    }


        
    this.addForm = function(oForm, jOptions, sId)
        {
           if (oForm==null)
            {
                Insertion.Bottom(this.divSection, '<div class="XS_SecForm" id="' + this.id + '_form"></div>' )
                return;
            }   
                    
           if (jOptions != null)
               oOptions = Object.toJSON(jOptions).evalJSON()
           else
               oOptions = null;
            
            if (sId==null)
                Insertion.Bottom(this.divSection, '<div class="XS_SecForm" id="' + this.id + '_form">' + oForm.getContent() + '</div>' )
            else
            {
                var oDiv = $( sId + '_form');
                if (oDiv != null)
                    oDiv.innerHTML = oGrid.getContent()
                else
                    Insertion.Bottom(this.divSection, '<div class="XS_SecForm" id="' + this.id + '_form">' + oForm.getContent() + '</div>' )
            }                
            if (oOptions != null)
                if(oOptions.display == 'none')
                     oForm.hide(); 
        }

    this.addButtons= function(oButtons, jOptions)
        {
           if (oButtons==null)
            {
                Insertion.Bottom(this.divSection, '<div class="XS_SecButtom" id="' + this.id + '_but"></div>' )
                return;
            }        
           if (jOptions != null)
               oOptions = Object.toJSON(jOptions).evalJSON()
           else
               oOptions = null;
           Insertion.Bottom(this.divSection, '<div class="XS_SecButtom" id="' + this.id + '_but">' + oButtons.getContent() + '</div>' );                   
           
           if (oOptions != null)
             if(oOptions.display == 'none')
                oButtons.hide();               
        }

    this.toggleButtons= function(sOption)
        {
            var oDiv = $(this.id + '_but');
            if(sOption!=null)
            {
                oDiv.style.visibility = sOption
            }    
            else
            {
                if ( oDiv.style.visibility == 'hidden' )
                     oDiv.style.visibility = 'visible'
                else
                     oDiv.style.visibility = 'hidden';
            }         
        }
        
    this.toggleButton= function(sButton)
        {
            var oPart = this.getPart('XS_SecButtom')
            if (oPart != null)
            {
	            var oTr = oPart.firstChild.rows[0]
	            for(var i=0;i<oTr.cells.length;i++)
	            {
	                var oTd = oTr.cells[i]
	                var oInput = oTd.firstChild;
	                if (oInput != null && oInput.nodeName.toUpperCase() == 'INPUT' )
	                {
	                    if (sButton!=null)
	                    {
    	                    var sValue = oInput.getAttribute('value');
    	                    if ( sValue.toUpperCase() == sButton.toUpperCase() )
    	                    {
    	                        var oAttr = oInput.getAttribute('disabled')
    	                        if (oAttr == null || oAttr == false || oAttr == 'false')
    	                            var sDisabled = 'true'
    	                        else
    	                            var sDisabled = 'false'
        	                      
        	                        
                                if (  sDisabled == 'false')
                                {
                                    oInput.removeAttribute('disabled')
                                    oInput.setAttribute('class', 'boton');                             
                                }    
                                else
                                {
                                    oInput.setAttribute('disabled', 'true');                             
                                    oInput.setAttribute('class', 'botonOff');                             
                                }    
    	                    }
    	                }
    	                else
    	                {
    	                
    	                }    
    	            }    
	            }
	        }    
        }
        
        

    this.addView = function(oView, jOptions)
        {
            if (oView==null)
            {
                Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_view"></div>' )
                return;
            }
            
            if (jOptions != null)
               oOptions = Object.toJSON(jOptions).evalJSON()
            else
               oOptions = null;
               
            if (oOptions == null)
                Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_view">' + oView.getContent() + '</div>' )
            else
            {            
                if(oOptions.override == 'yes')
                {
                    var oDiv = $( this.id + '_view');
                    if (oDiv == null)
                    {
                        Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_view">' + oView.getContent() + '</div>' );                      
                    }    
                    else
                    {
                        oDiv.innerHTML = oView.getContent();
                    }    
                }
                else
                {
                    Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_view">' + oView.getContent() + '</div>' );
                }    
            }                
            if (oOptions != null)
                if(oOptions.display == 'none')
                     oView.hide(); 
        }
        
        
    this.addGrid = function(oGrid, jOptions)
        {
            if (oGrid==null)
            {
                Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_grid"></div>' )
                return;
            }
            
            if (jOptions != null)
               oOptions = Object.toJSON(jOptions).evalJSON()
            else
               oOptions = null;
               
            if (oOptions == null)
                Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_grid">' + oGrid.getContent() + '</div>' )
            else
            {            
                if(oOptions.override == 'yes')
                {
                    var oDiv = $( this.id + '_grid');
                    if (oDiv == null)
                    {
                        Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_grid">' + oGrid.getContent() + '</div>' );                      
                    }    
                    else
                    {
                        oDiv.innerHTML = oGrid.getContent();
                    }    
                }
                else
                {
                    Insertion.Bottom(this.divSection, '<div class="XS_SecGrid" id="' + this.id + '_grid">' + oGrid.getContent() + '</div>' );
                }    
            }                

            if (oOptions != null)
                if(oOptions.display == 'none')
                     oGrid.hide(); 
        }        

    this.execute = function(sFunc, sMsg)
                    {
                        if (sMsg != null)
                            this.setMessage(sMsg,'wait')
                        setTimeout(sFunc,30);
                    }

    this.setMessage = function(sMessage, sType)
        {
            var oPart = this.getPart('XS_SecNone')
            if (oPart == null)
            {
	            Insertion.Bottom(this.divSection, '<div class="XS_SecNone" style="width:90%;" id="' + this.id + '_message"></div>');
	        }    
            var oPart = this.getPart('XS_SecNone')
            if ( sMessage == null || sMessage == '')
            {
                oPart.innerHTML = '';              
            }
            else
            {
                if(sType==null)sType="";
                
	            if (sType.toLowerCase() == 'wait')
	            {
	                oPart.innerHTML = '';
	                oPart.appendChild( this.wait(sMessage) )
	                return
	            }    
	            else
	            if (sType.toLowerCase() == 'error')
	                var sColor = "#FC3503";
	            else
    	            var sColor = "#000080";
                var sStyle_1 = ""
                sStyle_1 += "border-top: 1px " + sColor + " solid;"
                sStyle_1 += "border-left: 1px " + sColor + " solid;"
                sStyle_1 += "border-bottom: 1px " + sColor + " solid;" 	
                sStyle_1 += "color: " + sColor + ";";
                
                var sStyle_2 = ""
                sStyle_2 += "border-top: 1px " + sColor + " solid;"
                sStyle_2 += "border-right: 1px " + sColor + " solid;"
                sStyle_2 += "border-bottom: 1px " + sColor + " solid;" 	
                sStyle_2 += "color: " + sColor + ";";
                if(sMessage=='')
    	            oPart.innerHTML = '' 
    	        else    
    	            oPart.innerHTML = '<div style:"margin:3px; width:90%;"><br/><span class="XS_MsgText" style="' + sStyle_1 + '">' + sMessage + '</span><span class="XS_MsgClose" style="' + sStyle_2 + '"><a href="javascript:function _X_msg(){ $(' + this.id + '_message).innerHTML=\'\'; };_X_msg();" title="Cerrar">X</a></span></div>' 
                oPart.style.display = 'block';

	        }  
	        oPart.scrollTo();
        }
        
    this.addHtml= function(sHtml, sId)
        {      
            if (sId==null)
                sId = this.id + '_html';
            if($(sId)==null)    
                Insertion.Bottom(this.divSection, '<div class="XS_SecBody" id="' + sId + '">' + sHtml + '</div>');             
            else
                $(sId).innerHTML = sHtml;
        }  
        

    this.addObject= function(oObject)
        {
            Insertion.Bottom(this.divSection, oObject);             
        }               
                    
    this.addSpace = function(sSpace)
        {
            if (sSpace==null)
                sSpace = 5;
	        Insertion.Bottom(this.divSection, '<div style="height:' + sSpace + '"></div>')            
        }

                   
/*
    var jSubTabs = { id:'Documentos', 
                     tabs: [
                                {id:'secDocumento', name:'Ficha Documento', title:'Ficha Documento', func:'FichaDocumento()'},
                                {id:'secClasificacion', name:'Clasificación', title:'Clasificación del Documento', func:'Clasificacion()'},
                                {id:'secProteccion', name:'Protección', title:'Protección del Documento', func:'Proteccion()'}
                           ] 
                   };
*/
    this.createTabs = function(jSubTabs, sOp)
        {
            oSubTabs = Object.toJSON(jSubTabs).evalJSON();
            if (oSubTabs.title != '')
                var sTitle= oSubTabs.title 
            else    
                var sTitle= '';

            var sTab = '<div class="XS_SecTab"><p>' + sTitle + '</p>'
            sTab = sTab + '<table cellspacing=0 cellpadding=0 width="100%"><tr>'
            sTab = sTab + '<td class="XS_Tab"><ul class="TabList">' 
            
            for(var nT=0;nT<oSubTabs.tabs.length;nT++)
            {
                if (oSubTabs.tabs[nT].id == sOp)
                    var sStatus = "On"    
                else
                {
                    if(oSubTabs.tabs[nT].status != null && oSubTabs.tabs[nT].status != '')
                        var sStatus = oSubTabs.tabs[nT].status 
                    else
                        var sStatus = "Off"    
                }
                if(sTab.toLowerCase() == 'hidde') 
                    sTab = sTab + '<li style="display:none" class="TabItem' + sStatus + '" status="' + sStatus + '" id="tab_'+ oSubTabs.tabs[nT].id + '" title="'+ oSubTabs.tabs[nT].title + '" onClick="javascript:'+ oSubTabs.tabs[nT].func + '" ><a href="#" tabIndex=-1>' + oSubTabs.tabs[nT].name + '</a></li>'
                else
                    sTab = sTab + '<li class="TabItem' + sStatus + '" status="' + sStatus + '" id="tab_'+ oSubTabs.tabs[nT].id + '" title="'+ oSubTabs.tabs[nT].title + '" onClick="javascript:'+ oSubTabs.tabs[nT].func + '" ><a href="#" tabIndex=-1>' + oSubTabs.tabs[nT].name + '</a></li>'
            }
            sTab = sTab + '</ul><td></td></tr></table></div>'
            return sTab;
        }

    this.setTabs = function(jSubTabs, sOp)
        {            
	        Insertion.Bottom(this.divSection, this.createTabs(jSubTabs, sOp) )
        }        
        
    this.openTab = function(sOp)
        {
            var oTab = $('tab_' +  sOp);
            if(oTab == null)
            {
                var oPart = this.getPart('XS_SecTab')
                var oTable = oPart.childNodes[1];
                var aTabs = oTable.rows[0].cells[0].firstChild.childNodes;
            }
            else
            {
                var aTabs = oTab.parentNode.childNodes;
            }
                    
            for(var nT=0;nT<aTabs.length;nT++)
            {
                var oLI = aTabs[nT];
                var sId = oLI.getAttribute('id')
                if (sId != null && sId != '')
                {
                    oLI = $(oLI);
                    var sSec = sId.substring(4); 
                    if (sId == 'tab_' + sOp)
                    {
                        var sStatus = oLI.getAttribute("status").toLowerCase();
                        if( sStatus == 'off' )
                            oLI.removeClassName("TabItemOff");
                        oLI.setAttribute('status','On');
                        oLI.style.display = 'block';    
                        oLI.addClassName("TabItemOn");
                        oLI.style.whiteSpace="nowrap";
                        if ( $(sSec)!= null)
                        {
                            var sTag = $(sSec).tagName;
                            if (sTag.toLowerCase() == "div")
                                $(sSec).show();
                        }    
                        else 
                          eval( sSec + '.show()' );
                    }
                    else
                    {
                        if( oLI.hasClassName("TabItemOn") )
                            oLI.removeClassName("TabItemOn");
                        if( oLI.getAttribute("status").toLowerCase() != 'hidden')    
                            oLI.addClassName("TabItemOff");
                        oLI.style.whiteSpace="nowrap";
                        if ( $(sSec) != null)
                        {
                            var sTag = $(sSec).tagName;
                            if (sTag.toLowerCase() == "div")
                                $(sSec).hide();
                        }        
                        else 
                        {
                           eval( sSec + '.hide()' );
                        }                            
                    }
                }

            }                        
        }

    this.hideTab = function(sOp)
        {
            var oTab = $('tab_' +  sOp);
            if(oTab == null)
            {
                var oPart = this.getPart('XS_SecTab')
                var oTable = oPart.childNodes[1];
                var aTabs = oTable.rows[0].cells[0].firstChild.childNodes;
            }
            else
            {
                var aTabs = oTab.parentNode.childNodes;
            }

            for(var nT=0;nT<aTabs.length;nT++)
            {
                var oTD = aTabs[nT];
                var sId = oTD.getAttribute('id');
                
                if (sId != null && sId != '')
                {
                    oTD = $(oTD)
                    var sSec = sId.substring(4); 
                    if (sId == 'tab_' + sOp)
                    {
                        if(oTD.getAttribute("status") == 'Off' )
                            oTD.removeClassName("XS_SecTabOff");
                        if(oTD.getAttribute("status") == 'On' )
                            oTD.removeClassName("XS_SecTabOn");
                        oTD.style.display = 'none';    
                        oTD.addClassName("XS_SecTabHidden");
                        eval( sSec + '.hide()' );
                    }
                }
            }                        
        }


    this.showTab = function(sOp)
        {
            var oTab = $('tab_' +  sOp);
            if(oTab == null)
            {
                var oPart = this.getPart('XS_SecTab')
                var oTable = oPart.childNodes[1];
                var aTabs = oTable.rows[0].cells[0].firstChild.childNodes;
            }
            else
            {
                var aTabs = oTab.parentNode.childNodes;
            }

            for(var nT=0;nT<aTabs.length;nT++)
            {
                var oLI = aTabs[nT];
                var sId = oLI.getAttribute('id');
                
                if (sId != null && sId != '')
                {
                    oLI = $(oLI);
                    var sSec = sId.substring(4); 
                    if (sId == 'tab_' + sOp)
                    {
                        oLI.removeClassName("XS_SecTabHidden");
                        
                        if(oLI.getAttribute("status") == 'Off' )
                            oLI.addClassName("XS_SecTabOff");
                        if(oLI.getAttribute("status") == 'On' )
                            oLI.addClassName("XS_SecTabOn");
                        oLI.style.display = 'block';    
                        eval( sSec + '.hide()' );
                    }
                }
            }                        
        }

    this.closeTabs = function()
        {
            var oPart = this.getPart('XS_SecTab')
            var oTable = oPart.childNodes[1];
            var aTabs=oTable.rows[0].cells[0].firstChild.childNodes;
            for(var nT=0;nT<aTabs.length;nT++)
            {
                var oTab = aTabs[nT]
                var sId = oTab.getAttribute('id')
                if (sId != null && sId != '')
                {
                    var sSec = sId.substring(4); 
                        eval( sSec + '.hide()' );
                }
            }
            
        }
                	    
    this.setTitle = function(sContent, sContentAlign)
        {
            if (sContentAlign == null)
                sAlign = 'Left'
            else
                sAlign = sContentAlign;
            if (sContent == null)
                var sTitle =  ''
            else
                var sTitle = sContent
            var oPart = this.getPart('XS_SecTitle')
            if (oPart == null)
            {
                var sA = '';
                if(this.onClose!=null)
                {
                    var sX = '_X_' +  this.id + '()';
                    sA = '<a href="javascript:function ' +  sX + '{ $(' + this.id + ').hide(); ' 
                    if(this.onClose != 'on')
                        sA += this.onClose; 
                    sA += '; }; ' + sX + ';"><img src="/XS_Include/img/window/X.gif" border="0" title="Cerrar"/></a>';
                }                        
                if (this.maximized)
	                Insertion.Bottom(this.divSection, '<div class="XS_SecTitle" id="' + this.id + '_tit"><table width="99%" cellspacing="0" cellpadding="0" border="0"><tr><td onClick=javascript:XS_ToggleSection("' +  this.id  + '") style="font-size:12px; font-weight:bold; padding-left:15px; text-align:' + sAlign + ';">' + sTitle + '&#160;</td><td width=20></td><td width=20 status="on" id="' + this.id + '_sta" onClick=javascript:XS_ToggleSection("' +  this.id  + '")><img src="/XS_Include/img/window/U.gif" border=0></td><td width="15">' + sA + '</td></tr></table></div>')
                else
	                Insertion.Bottom(this.divSection, '<div class="XS_SecTitle" id="' + this.id + '_tit"><table width="99%" cellspacing="0" cellpadding="0" border="0"><tr><td style="font-size:12px; font-weight:bold; padding-left:15px; text-align:' + sAlign + ';">' + sTitle + '&#160;</td><td width=20></td><td width=20></td><td width="15">' + sA + '</td></tr></table></div>')                	               
	        }    
	        else
	        {
	       	    var oTr = oPart.firstChild.rows[0]
	            var obj = oTr.cells[0];
                if (typeof(sContent) == 'string')
                    obj.innerHTML = sTitle
                else
                {
                    oPart.innerHTML = '';
                    obj.appendChild(sTitle);
                }    

	        }
        }
        
    //addText(): Agreaga a la Sección un texto (sId:'<Identificador del Texto>'; sTitle:'Titulo'; sText:'Texto'; sPosition:['top':inicio sección, 'bottom':final sección, <null>:final sección] )
    this.addText = function(sId, sTitle, sText, sPosition, sClass)
        {
           if(sClass == null)
              sClass = 'XS_SecTextFont';
           var sHtml = '<table  width="99%" cellspacing="0" cellpadding="0" border="0"><tr><th class="' + sClass + '" style="font-weight:900px" >' + sTitle + '</th></tr><tr><td class="XS_SecTextFont" >' + sText + '</td></tr></table>'
           sId =  this.id + '_text_' + sId; 
           var obj = $(sId);

           if (obj==null)
           { 
               if(sPosition == null)
                  sPosition = 'bottom';
                  
               if(sPosition == 'top') 
	                Insertion.Top(this.divSection, '<div class="XS_SecText" id="' + sId + '">' + sHtml + '</div>')                	               
               else
	                Insertion.Bottom(this.divSection, '<div class="XS_SecText" id="' + sId + '">' + sHtml + '</div>');
	       }
	       else
	            obj.innerHTML = sHtml;         
        }

    this.setText = function(sId, sText)
        {
           sId =  this.id + '_text_' + sId; 
           var obj = $(sId);
           if (obj!=null)
                obj.firstChild.rows[1].cells[0].innerHTML = sText;
        }
    
    //showText(): Muestra un texto sId de la Sección
    this.showText = function(sId)
        {
            var obj = $(this.id + '_text_' + sId);
            if (obj!=null)
                obj.show(); 
        }
        

    //hideText(): Oculta un texto sId de la Sección
    this.hideText = function(sId)
        {
            var obj = $(this.id + '_text_' + sId);
            if (obj!=null)
                obj.hide(); 
        }
        
        
    //removeText(): Remueve un texto sId agregado a la Sección
    this.removeText = function(sId)
        {
            var obj = $(this.id + '_text_' + sId);
            if (obj!=null)
            {
                obj.remove(); 
            }
        }
    
        
    //scrollTo(): Mueve la Sección a zona visible del Browser    
    this.scrollTo = function()
        {
            $(this.id + '_sec').scrollTo();
        }    
        
    this.removeBody = function()
                {
                    this.getPart('XS_SecBody').innerHTML = '';
                }
                

    this.getBody = function()
            {  
                var oPart = this.getPart('XS_SecBody')
                if (oPart == null)
                {
                    if (this.aCols == null)
                    {
                        var sTable = '<table width="100%" cellspacing="0" cellpadding="0"><tr><td style="vertical-align:top; width:99%"></td></tr></table>'
	                        Insertion.Bottom(this.divSection, '<div style="float:left" class="XS_SecBody' + this.BodyType + '" id="' + this.id + '_bod">' + sTable + '</div>')	                    
                        var oPart = this.getPart('XS_SecBody')	                        
                    }    
                    else
                    {
	                    Insertion.Bottom(this.divSection, '<div style="float:left" class="XS_SecBody' + this.BodyType + '" id="' + this.id + '_bod"></div>');
                        var oPart = this.getPart('XS_SecBody')
                        var sTable = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>'
                        for(var nI=0;nI<this.aCols.length;nI++)
                        {
                            sTable = sTable + '<td style="vertical-align:top; width:' + this.aCols[nI][0] + '; background-color:' + this.aCols[nI][1] + '"></td>'     
                        }
                        oPart.innerHTML = sTable + '</tr></table>'
                    }
	            }           
	            return oPart;
            }
    
    this.getSection = function(nSec)
        {
            var oPart = this.getBody()
            var oTable = oPart.firstChild;
            
            var oTD = oTable.rows[0].cells[nSec];
            return oTD;
        
        }
        
        
    //?                
    this.setBody = function(sContent, nCol)
        {
            if (nCol == null || nCol == 'undefined')
                var oSec = this.getSection(0)
            else    
                var oSec = this.getSection(nCol-1);
            oSec.innerHTML = '';
            if (sContent != null)
                Insertion.Bottom(oSec, sContent);     
        }

    //?
    this.clearBody = function(nCol)
        {
            if (nCol == null || nCol == 'undefined')
                var oSec = this.getSection(0)
            else    
                var oSec = this.getSection(nCol-1);
            oSec.innerHTML = '';
        }
    
    this.setHelp = function(sTitle, sHelp, nCol)
        {
            var oPart = this.getBody()
            
            if (this.aCols == null)
            {
                alert('XS_Section.setHelp: Debe definir la sección con un cuerpo de más de una columna');
                return;
            }
            if (nCol == null)
                nCol = 2;
            var sTable = '<div style="padding-top:5px"><table class="XS_SecHelp">'
            if (sTitle != null)
                sTable = sTable + '<tr><th>' + sTitle + '</th></tr>'
            sTable = sTable + '<tr><td>' + sHelp + '</td></tr></table></div>'    
            this.setBody(sTable, nCol); 
        }
        

    this.hideMessage = function()
        {
            var oPart = this.getPart('XS_SecNone')
            if ( oPart != null )
            {
               oPart.innerHTML = '';
               $(oPart).hide();
            }   
        }    
        

   this.wait = function(sMessage)
        {
          var oDiv = document.createElement('div')  
          XS_CreateChildWithAttrs(oDiv, 'img', [['src','/XS_Include/Icons/icon_rotor.gif'], ['border','0']]);
          if (sMessage != null)
            Insertion.Bottom(oDiv, '<span class="XS_SecMessage">'+ sMessage + '</span>' ) 
          return oDiv
        }
        

    this.open = function()
                {
                    var divSec = $(this.id + '_sec' );
                    if (divSec != null)
                    {
                        if (divSec.getAttribute('opened') == 'no' )
                        {
                            var aDivs = divSec.immediateDescendants()
                            for(var i=1;i<aDivs.length;i++)
                            {
                                if(aDivs[i].id != sIdSection + '_tit')
                                { 
                                    aDivs[i].style.visibility = 'visible';
                                    aDivs[i].style.display = 'block';								
                                }
                            }	
                                
                            var oTd = $(sIdSection + '_sta');
                            oTd.innerHTML = '<a href="#" title="Abrir sección"><img src="/XS_Include/img/window/U.gif" border=0 ></a>';
                            divSec.setAttribute('opened','yes');
                            
                        }
                    }
                                  
                }

    this.close = function(nDelay)
                {
                    var divSec = $(this.id + '_sec' );
                    if (divSec != null)
                    {	
                        if (divSec.getAttribute('opened') == 'yes' )
                        {
                          
                            var aDivs = divSec.immediateDescendants()
                            for(var i=1;i<aDivs.length;i++)
                            {
                                if(aDivs[i].id != sIdSection + '_tit')
                                { 
                                    aDivs[i].style.visibility = 'hidden';
                                    aDivs[i].style.display = 'none';								
                                }
                            }			
                            var oTd = $(sIdSection + '_sta');
                            oTd.innerHTML = '<a href="#" title="Cerrar sección"><img src="/XS_Include/img/window/D.gif" border=0 ></a>';         
                            divSec.setAttribute('opened','no');
                            if(nDelay!=null)
                            {
                                this.height = divSec.style.height;
                                CloseDelay(this.id, nDelay)                   
                            }

                        }
                    }    
                }


                    
      this.show = function()
                  {
                        var oDiv = $(this.id + '_sec');
                        if (oDiv != null)
                        {	
		                    oDiv.style.visibility = 'visible';
		                    oDiv.style.display = 'block';
	                        var aDiv = oDiv.immediateDescendants()
		                    for(var i=0;i<aDiv.length;i++)
		                    {
			                     aDiv[i].style.visibility = 'visible';								
			                     aDiv[i].style.display = 'block';								
			                }     
                            oDiv.setAttribute('hidden', 'no');                
		               }
		               else
		               alert('No encontró sección ' + this.id )				                                
                  }                    

      this.hide = function()
                  {
                    var oDiv = $(this.id + '_sec');
                    if (oDiv != null)
                    {	
		                oDiv.style.visibility = 'hidden';
		                oDiv.style.display = 'none';
		                var aDivs = oDiv.immediateDescendants()
		                for(var i=0;i<aDivs.length;i++)
		                {
			                aDivs[i].style.visibility = 'hidden';
			                aDivs[i].style.display = 'none';								
                        }			
                        oDiv.setAttribute('hidden','yes'); 
			         }
                  }  
                  
      this.toggle = function()
                  {
                    var oDiv = $(this.id + '_sec');
                    if ( oDiv.style.visibility == 'hidden' )
                         this.show()
                    else
                         this.hide();
                  }     

     //Muestra el rotor de espera con mensaje a la sección de mensaje
     this.showWait = function(sMsg)
        {
            var oPart = this.getPart('XS_SecButtom')
            if (oPart != null)
            {
	            var oTable = oPart.firstChild
                oTable.rows[0].cells[oTable.rows[0].cells.length-1].innerHTML =  '<img src="/XS_Include/Icons/icon_rotor.gif" valign="middle">&#160;' + sMsg;
            }
        }   

     //Oculta el rotor 
     this.hideWait = function()
        {
            var oPart = this.getPart('XS_SecButtom')
            if (oPart != null)
            {
	            var oTable = oPart.firstChild
                oTable.rows[0].cells[oTable.rows[0].cells.length-1].innerHTML = '';
            }
        }   
      
     this.msgBox = function(sMsg, sFunOk)
        {
            if(sFunOk==null)
                alert('msgBox: debe definir una función JavaScript');
            XS_msgOk(sMsg, sFunOk) 
        }   

     this.confirmBox = function(sMsg, sJsOk, sJsCancel)
        {
            if(sJsOk==null)
            {
                alert('confirmBox: debe definir una función JavaScript');
                return;
            }    
            if(sJsCancel==null)
                sJsCancel = '';
            XS_msgConfirm(sMsg, 'XS_closeMessage();'+sJsOk, 'XS_closeMessage();'+sJsCancel) 
        }
        
}



function CloseDelay(sId, nDelay )
{
    var oDiv = $(sId + '_sec' );
    var oDim = Element.getDimensions(oDiv);    
    var nAlto = oDim.height
    if( nAlto>10)
    {   
        oDiv.style.height = nAlto - 10;
        var nNew = parseInt(Replace(oDiv.style.height,'px','') )
        if( nNew == nAlto || nNew <= 10)
        {
            alert('fin '  + oDiv.style.height + ' ' + nAlto) 
            return
        }    
        else      
            setTimeout('CloseDelay("' +sId+ '",' + nDelay + ')', nDelay);
    }
    else
    {

       return;    
    }   
}

function _Tab_onMouseOver(oTab)
{
    oTab.style.backgroundColor= "#F0FBFF"; 
}        

function _Tab_onMouseOut(oTab)
{
    oTab.style.backgroundColor='#ffffff'; 
}        

function XS_HideSection(sIdSection)
{
    var oDiv = $(sIdSection);
    if (oDiv != null)
		{
//			oDiv.style.visibility = 'hidden';
		    aDiv = oDiv.descendants()
			for(var i=0;i<aDiv.length;i++)
			{
//					aDiv[i].style.display = 'none';								
					aDiv[i].style.visibility = 'hidden';								
			}									
		}	
}	



function XS_ShowSection(sIdSection, nTop, nLeft)
{
    var oDiv = $(sIdSection);
    if (oDiv != null)
    {	
    	oDiv.style.position = 'absolute';
    	if (nTop != null)
    	    oDiv.style.top = nTop;
    	if (nLeft != null)
    	    oDiv.style.left = nLeft;
//	    oDiv.style.display = 'block';
	    oDiv.style.visibility = 'visible';
	    
	    aDiv = oDiv.descendants()
			
			for(var i=0;i<aDiv.length;i++)
			{
				 aDiv[i].style.visibility = 'visible';								
			}						
	}
}


function XS_TabButton(sIdSection, sId, sButton, sOnClick)
{
    if (typeof(sIdSection) == 'string')
        var oDiv = $(sIdSection)
    else
        var oDiv = sIdSection;

    if (oDiv == null)
    {
       alert('No se encontró ' + sId)
       return;
    }   
        
    sHtml = oDiv.innerHTML;	
    if (sHtml != '')
        sHtml = sHtml + '&#160';

	oDiv.innerHTML = sHtml + '<input type="button" class="boton" id="' + sId + '" value="' + sButton + '" onClick ="' + sOnClick + '"/>' 
	return oDiv.innerHTML;
}


function XS_TabMessage(sMessage, sStyle)
{
	 var tabMess =  document.getElementById('TabMessage');
	 tabMess.innerHTML = sMessage
}



function ActivateTab(activeTabIndex)
{
	var i, tabContainer, TabContents;


	tabContainer = document.getElementById('TabMenu');
	TabContents = document.getElementsByClassName('TabContent');
	if(TabContents.length > 0)
	{
		for(i = 0; i < TabContents.length; i++)
		{
			TabContents[i].style.display = "none";
		}

		TabContents[activeTabIndex].style.display = "block";


		tabList = document.getElementById('TabList');
		
		tabs = XS_getChildElementsByClassName(tabList, 'TabItem');
		if(tabs.length > 0)
		{
			for(i = 0; i < tabs.length; i++)
			{
				tabs[i].className = "TabItem";
			}
		}
		tabs[activeTabIndex].className = "TabItem on";
	}
}




function XS_ShowTab(objTab)
{
    var sFunc = objTab.getAttribute("func")
    var sId_Tab = objTab.getAttribute("id")
    XS_ActivateTab(sId_Tab)
//    XS_LoadingOn('Abriendo...')
//    setTimeout(sFunc,30);
    eval(sFunc)
}


function XS_ActivateTab(sTab)
{
	var i;
	var activeTabIndex = -1;
	var sFunc = null;
//	var tabContainer = document.getElementById('TabMenu');
	var TabContents = document.getElementsByClassName('TabContent');
	
	if(TabContents.length > 0)
	{
		for(i = 0; i < TabContents.length; i++)
		{
			  TabContents[i].style.display = "none";			
			  if ( TabContents[i].id == sTab)
			  {
					 activeTabIndex = i;
			  }
		}
        
        if (activeTabIndex == -1)
        {
            alert('No se encontró sección para ' + sTab)
            return;
        }

		TabContents[activeTabIndex].style.display = "block";

		tabList = document.getElementById('TabList');
		
		tabs = XS_getChildElementsByClassName(tabList, 'TabItem');
		if(tabs.length > 0)
		{
			for(i = 0; i < tabs.length; i++)
			{
				tabs[i].className = "TabItem";
			}
		}

		tabs[activeTabIndex].className = "TabItem on";			
	}
	
}



// Tab: Title, Function, On/Off
function XS_TabsTemplate( sIdTabs, sTitle, sTabs, sContent, sClass)
{
    var sTab = ''
    var aTabs = sTabs.split(',')
    for(var i=0;i<aTabs.length;i++)
    {			
        var aTab = aTabs[i].split(':');
        sTabTitle = aTab[0]
        sFunc = aTab[1]
        sId = 'on'
        if (aTab[2] == null)
            sOnOff = 'XS_TabOn'    
        else
        if (aTab[2] == 'Hidden')
        {
            sStyle = 'style="display:none"';        
            sOnOff = 'XS_TabHidden'    
            sId = 'hidden'
        }
        else
        {
            sStyle = '';        
            sOnOff = 'XS_Tab' + aTab[2];
            sId = aTab[2]
        }
        
        if (sFunc == null)
            sTab = sTab + '<td><div id="' + sId + '" class="' + sOnOff + '">'+ sTabTitle + '</div></td>'
        else
            sTab = sTab + '<td><div id="' + sId + '" class="' + sOnOff + '"><a href="javascript:' + sFunc + '">'+ sTabTitle + '</a></div></td>'
    }
    
	var sTabla = '<p class="Title" id="'+sIdTabs+'_Title">' + sTitle + '</p>';
	    sTabla = sTabla + '<table id="'+sIdTabs+'_Tabs" border="0" class="' + sClass + '"  cellspacing=0 cellpadding=0>';
        //sTabla = sTabla + '<tr><td><div class="XS_TabOn" id="' + sId + '_Header" >' + sTabTitle + '</div></td></tr>' 
        
        sTabla = sTabla + '<tr>' + sTab + '</tr>' 
        sTabla = sTabla + '</table>'
    	sTabla = sTabla + '<div class="XS_TabBody" width="100%" id="'+sIdTabs+'_Content">' + sContent + '</div>';
    return sTabla
}

function XS_OpenTab( sId, nNumTab, hContent)
{
    
    var obj = $(sId+'_Tabs')
    
    if (obj == null)
    {
        alert('No se indentificó Tab ' + sId)
    }
    else
    {
            var oTabs = obj.rows[0].cells
            for(i = 0; i < oTabs.length; i++)
            {
                oTab = oTabs[i].firstChild;
                if (i == nNumTab-1)
                {
                    if (oTab.hasClassName("XS_TabOff"))
                    {
                        oTab.removeClassName("XS_TabOff")
                        oTab.addClassName("XS_TabOn")   
                    }            
                }
                else
                if (oTab.hasClassName("XS_TabOn"))
                {
                    oTab.removeClassName("XS_TabOn")
                    oTab.addClassName("XS_TabOff")   
                }    
            }

            var oDiv = $(sId+'_Content');
            if (oDiv != null)
            {	
                if (hContent != null)
                {
                    oDiv.innerHTML = hContent;    
                }
                else
                {
                    oDiv.style.visibility = 'visible';
                    oDiv.style.display = 'block';
                    aDiv = oDiv.descendants()
                    for(var i=0;i<aDiv.length;i++)
                    {
                         aDiv[i].style.visibility = 'visible';								
                         aDiv[i].style.display = 'block';								
                    }						
                }    
           }				                                
    }    
}


/* Objeto para controlar secciones de datos */
function XS_Tabs( sId, sTitle, sClass)
{
    this.type = 'Tabs';
    this.id = sId;
    this.ActiveTab= null;
    this.FromTab= null;
    this.oContent = null;
    this.divTab = document.createElement("DIV")
    this.divTab.setAttribute("width", "100%")
    this.divTab.setAttribute("id", sId)
	var sTabla= '<table border="0"  width="100%" cellspacing=0 cellpadding=0>';
	    sTabla = sTabla + '<tr><td id="'+sId+'_Header"></td></tr>';
	    if (sTitle != null) 
	        sTabla = sTabla + '<tr><td ><p class="XS_TabTitle" id="'+sId+'_Title">' + sTitle + '</p></td></tr>';
	    	sTabla = sTabla + '<tr><td id="' + sId + '_Message"><br/></td></tr>';	    		    
    	    sTabla = sTabla + '<tr><td id="' + sId + '_Content"></td></tr>';
        sTabla = sTabla + '</table>'
	this.divTab.innerHTML = sTabla;
    this.Table = this.divTab.firstChild;

    <!-- Crea titulos de tabs-->
    var oTR = document.createElement("TR")
    oTR.id = "idTabs"
    var oTD = document.createElement("TD")
	var sTabla= '<table border="0"  cellspacing=0 cellpadding=0>';
	    sTabla = sTabla + '<tr></tr>';    
        sTabla = sTabla + '</table>'
    oTD.innerHTML = sTabla;
    this.Titulos = oTD.firstChild;

	oTR.appendChild(oTD)
	this.Table.appendChild(oTR)
	
    this.assign = function(sIdContent)
    {
	        if (sIdContent != null)
	        {
                this.oContent = $(sIdContent);
                if (this.oContent != null)
                    Insertion.Bottom(this.oContent, this.divSection)
	            else
	                alert('assign: No se encontró '+ sIdContent)
            }    
    }
		                                            
	this.sayMessage = function(sMsg)
	                  {
	                    $(this.id + '_Message').innerHTML = '<div class="XS_TabMessage">&#160;' + sMsg + '</div><br/>'
	                  }                
	this.sayError = function(sMsg)
	                  {
	                    $(this.id + '_Message').innerHTML = '<div class="XS_TabError" style="font-color:red">&#160;' + sMsg + '</div><br/>'
	                  }                
    this.addTab = function(sTab, sTitle, sFuncion, sTabClass)
                  {
                     if (sFuncion == null)
                        sFunc = "tab()"         
                     else
                        sFunc = sFuncion;            
                     if (sTabClass == null)
                        sClass = "XS_TabOn"   
                     else
                        sClass = "XS_Tab" + sTabClass; 
                     var oTD = this.Titulos.rows[0].insertCell(this.Titulos.rows[0].cells.length)
                     oTD.innerHTML = '<div class="'+sClass+'" id="tab_' + sTab + '" >&#160;<a href="javascript:' + sFunc + '">' + sTitle + '</a>&#160;</div>' 
                     
                  }


    this.tabOn = function(sTab)
                  {                  
                    this.FromTab = this.ActiveTab                   
                    if (this.ActiveTab != null)
                        this.tabOff(this.ActiveTab);
                    oTab = $('tab_'+sTab)
                    oTab.removeClassName("XS_TabOff")
                    oTab.removeClassName("XS_TabHidden")
                    oTab.addClassName("XS_TabOn")
                    this.showTab(sTab);
                    this.ActiveTab = sTab;  
                  }

    this.tabOff = function(sTab)
                  {                  
                    oTab = $('tab_'+sTab)
                    oTab.removeClassName("XS_TabOn")
                    oTab.removeClassName("XS_TabHidden")
                    oTab.addClassName("XS_TabOff")
                    this.hideTab(sTab);
                  }
                                      
                                
    this.backTab = function()
                  {
                    this.hideTab()
                    this.showTab(this.FromTab)
                  }  

    this.showTab = function(sTab)
                  {
                        var oDiv = $(sTab);
                        if (oDiv != null)
                        {	
		                    oDiv.style.visibility = 'visible';
		                    oDiv.style.display = 'block';
	                        aDiv = oDiv.inmediatedescendants()
		                    for(var i=0;i<aDiv.length;i++)
		                    {
			                     aDiv[i].style.visibility = 'visible';								
			                     aDiv[i].style.display = 'block';								
		                    }						
	                    }				                                
                  }                    

    this.hideTab = function(Tab)
                  {
                     if (Tab == null)
                        var sTab = this.ActiveTab
                     else
                        var sTab = Tab; 
                     if (sTab != null)
                     {
		                var divOri = $(sTab)
		                divOri.style.visibility = 'hidden';
		                divOri.style.display = 'none';
		                aDivs = divOri.descendants()
		                for(var i=0;i<aDivs.length;i++)
		                {
			                aDivs[i].style.visibility = 'hidden';
				            aDivs[i].style.display = 'none';								
				        }
			         }
                  }  
                  
    this.execute = function(sFunc, sMsg)
                    {
//                        if (sMsg != null)
//                            this.showWait(sMsg)
//                        else
//                            this.showWait('Cargando...')

                        if (sMsg == null)
                            sMsg = 'Cargando...';
                        this.setMessage(sMsg,'wait');
                        setTimeout(sFunc,30);
                    }

                    
    this.showWait = function(sMsg)
                    {
                        XS_LoadingOn(sMsg)
                    }

    this.hideWait = function()
                   {
	                    XS_LoadingOff();
                   } 

    this.setFoot = function(sMsg, sColor, sBotones)
                    {
	                        var divMsg = $(this.divFoot)
	                        var sBot = '';	
	                        if (sBotones != null)
	                        {
		                        var aBotones = sBotones.split('|')
		                        for(var i=0;i<aBotones.length;i++)
		                        {			
	   	                            var aBoton = aBotones[i].split('=');
	   	                            sBot = sBot + '<i>&#160;&#160;&#160;</i> <a href="javascript:' + aBoton[1] + '">[' + aBoton[0] + ']</a>' ;
		                        }
	                        }		
                            divMsg.innerHTML = '<table ><tr valign="middle"  height="30"><td class="MsgBox Clr' + sColor + '">' + sMsg + sBot + '</td></tr></table>';
                            this.showFoot()                            
                    }	

    this.showFoot = function()
                    {
                        $(this.divFoot).style.display = 'block'
                    }

    this.hideFoot = function()
                    {
                        $(this.divFoot).style.display = 'none'
                    }

    this.hideSection = function(sIdSection)
                    {
                        var oDiv = $(sIdSection);
                        if (oDiv != null)
		                    {
                    //			oDiv.style.visibility = 'hidden';
		                        aDiv = oDiv.descendants()
			                    for(var i=0;i<aDiv.length;i++)
			                    {
                    //					aDiv[i].style.display = 'none';								
					                    aDiv[i].style.visibility = 'hidden';								
			                    }									
		                    }	
                    }	

    this.showSection = function(sIdSection, nTop, nLeft)
                    {
                        var oDiv = $(sIdSection);
                        if (oDiv != null)
                        {	
    	                    oDiv.style.position = 'absolute';
    	                    if (nTop != null)
    	                        oDiv.style.top = nTop;
    	                    if (nLeft != null)
    	                        oDiv.style.left = nLeft;
	                        oDiv.style.visibility = 'visible';
                    	    
	                        aDiv = oDiv.descendants()
                    			
		                    for(var i=0;i<aDiv.length;i++)
		                    {
			                     aDiv[i].style.visibility = 'visible';								
		                    }						
	                    }
                    }

}


function XS_Execute(sFunc)
{
    setTimeout(sFunc,30);
}
