﻿// JScript File

// JScript File
function OnTreeClick(evt)
   {
        var src = window.event != window.undefined ? window.event.srcElement : evt.target;
        var isChkBoxClick = (src.tagName.toLowerCase() == "input" && src.type == "checkbox");
        if(isChkBoxClick)
        {
            var parentTable = GetParentByTagName("table", src);
            var nxtSibling = parentTable.nextSibling;
            if(nxtSibling && nxtSibling.nodeType == 1)//check if nxt sibling is not null & is an element node
            {
                if(nxtSibling.tagName.toLowerCase() == "div") //if node has children
                {
                    //check or uncheck children at all levels
                    CheckUncheckChildren(parentTable.nextSibling, src.checked);
                }
            }
            //check or uncheck parents at all levels
            CheckUncheckParents(src, src.checked);
        }
   } 
   function CheckUncheckChildren(childContainer, check)
   {
      var childChkBoxes = childContainer.getElementsByTagName("input");
      var childChkBoxCount = childChkBoxes.length;
      for(var i = 0; i<childChkBoxCount; i++)
      {
        childChkBoxes[i].checked = check;
      }
   }
   function CheckUncheckParents(srcChild, check)
   {
       var parentDiv = GetParentByTagName("div", srcChild);
       var parentNodeTable = parentDiv.previousSibling;
       
       if(parentNodeTable)
        {
            var checkUncheckSwitch;
            
            if(check) //checkbox checked
            {
                var isAllSiblingsChecked = AreAllSiblingsChecked(srcChild);
                if(isAllSiblingsChecked)
                    checkUncheckSwitch = true;
                else    
                    return; //do not need to check parent if any(one or more) child not checked
            }
            else //checkbox unchecked
            {
                checkUncheckSwitch = false;
            }
            
            var inpElemsInParentTable = parentNodeTable.getElementsByTagName("input");
            if(inpElemsInParentTable.length > 0)
            {
                var parentNodeChkBox = inpElemsInParentTable[0]; 
                parentNodeChkBox.checked = checkUncheckSwitch; 
                //do the same recursively
                CheckUncheckParents(parentNodeChkBox, checkUncheckSwitch);
            }
        }
   }
   function AreAllSiblingsChecked(chkBox)
   {
     var parentDiv = GetParentByTagName("div", chkBox);
     var childCount = parentDiv.childNodes.length;
     for(var i=0; i<childCount; i++)
     {
        if(parentDiv.childNodes[i].nodeType == 1) //check if the child node is an element node
        {
            if(parentDiv.childNodes[i].tagName.toLowerCase() == "table")
            {
               var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
              //if any of sibling nodes are not checked, return false
              if(!prevChkBox.checked) 
              {
                return false;
              } 
            }
        }
     }
     return true;
   }
   //utility function to get the container of an element by tagname
   function GetParentByTagName(parentTagName, childElementObj)
   {
      var parent = childElementObj.parentNode;
      while(parent.tagName.toLowerCase() != parentTagName.toLowerCase())
      {
         parent = parent.parentNode;
      }
    return parent;    
   }
function imprimir(div) 
{
var ventana = window.open("","popup","top=0,left=0,width='100%',height='100%',status=yes,resizable=no,scrollbars=yes");
var contenido = "<html><link rel='stylesheet' href='./estilos/Estilos.css' type='text/css'><body onload='window.print();window.close();'><table cellSpacing='0' cellPadding='0' width='100%' border='0'><tbody><tr><td align='left'><img src='imagenes/Logo PCM-SD.PNG' border='0'></td><td><img src='imagenes/Titulo.PNG' border='0'></td><td></td></tr><tr bgColor='#36393D' height='1'><td colSpan='3'></td></tr></tbody></table>" + document.getElementById(div).innerHTML + "</body></html>";
ventana.document.open();
ventana.document.write(contenido);
ventana.document.close();
}
function exportToXL(eSrc) 
{
var oExcel; 
var oExcelSheet; 
var oWkBooks;
oExcel = new ActiveXObject("Excel.Application");
oWkBooks = oExcel.Workbooks.Add;
oExcelSheet = oWkBooks.Worksheets(1);
oExcelSheet.Activate();
if (eSrc.tagName != "TABLE") 
{
   alert('No ha sido posible exportar la tabla a excell');
   return false;
}
numcols = 0;
for(var i = 0;i < eSrc.rows[0].cells.length;i++)
{
   numcols += eSrc.rows[0].cells[i].colSpan;
}
for (var fila=1;fila <= eSrc.rows.length; fila++)
{      
    for (var columna=1;columna <= eSrc.rows[fila-1].cells.length; columna++)
    {                                  
        oExcel.ActiveSheet.Cells(fila,columna).Value=eSrc.rows[fila-1].cells[columna-1].innerText;        
    }   
}
oExcelSheet.Application.Visible = true;
}
function exportToXLSAnterior(eSrc) 
{
var oExcel; 
var oExcelSheet; 
var oWkBooks;
var cols; 
oExcel = new ActiveXObject("Excel.Application");
oWkBooks = oExcel.Workbooks.Add;
oExcelSheet = oWkBooks.Worksheets(1);
oExcelSheet.Activate();
if (eSrc.tagName != "TABLE") {
alert('No ha sido posible exportar la tabla a excell');
return false;
}
alert(eSrc.cells.length);
alert(eSrc.rows.length);
cols = Math.ceil(eSrc.cells.length / eSrc.rows.length);
for (var i = 0; i < eSrc.cells.length; i ++)
{
var c, r;
r = Math.ceil((i+1) / cols);
c = (i+1)-((r-1)*cols)
/*eSrc.cells(i).tagName='TD'*/
if (eSrc.cells(i).tagName == 'TH') { 
oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
oExcel.ActiveSheet.Cells(r,c).Interior.Color = 14474460; 
}
alert(eSrc.rows[0].cells[i].colSpan)
/*eSrc.cells(i).childNodes.length=1 && eSrc.cells(i).childNodes(0).tagName=undefined*/
if (eSrc.cells(i).childNodes.length > 0 && eSrc.cells(i).childNodes(0).tagName == "b") 
oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
}
oExcelSheet.Application.Visible = true;
}




