﻿// JScript File
// crea el objeto que permite enviar solicitudes al servidor y regresa el resultado como texto/xml
// funciona solo para versiones de IE a partir 5.X 
// Debe estar habilitado JavaScript en el navegador
function getXmlHTTP()
{ 
   try
   {   
      var xmlHttp=null;
      if (window.XMLHttpRequest)  // Para; IE7, Mozilla, Safari 
      {          
          xmlHttp = new XMLHttpRequest();
          return xmlHttp;
      }
      else
      {
         if (window.ActiveXObject) // Para; IE5.x, IE6     
         {          
             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
             return xmlHttp;
         }
      }
   }
   catch(e)
   {
	   return null;
   }
   return null;  
} 

function AgregarColumnaAFila(f_encabezado, texto)
{
    var th_encabezado;
    th_encabezado = document.createElement("TH");
    th_encabezado.className = "HeaderStyleP";
    th_encabezado.innerHTML = texto;
    f_encabezado.appendChild(th_encabezado);
}
function quitarComita(cadARestaurar)
{
   if (cadARestaurar == undefined) return "";
   var valCampo= new String();
   valCampo= cadARestaurar;
   while (valCampo.lastIndexOf('\'') != -1)
   {                            
      valCampo= valCampo.replace('\'', '&prime;');
   }  
      return valCampo;
}
function llenaTabla(tabla,noColums,response,rowAlterno,campoLlave,columna1,columna2,columna3,columna4)
{    //noCOlumns que tiene el xml
     // response; xml que se va a desplegar
     //campollave: el nombre del campo qeu se utilizara para realizar links y funcionalidades
     //columnas: links que se desea agregar al inicio de la tabla
   if (tabla!=null)
   {
        var trae_estructura = false;
        //////// ROLC ////////
        //Aquí se debe traer el nodo de la estructura
        var nodo_estructura = response.lastChild.firstChild;
        //Si trae estructura de la tabla
        //Esto funciona cuando se personaliza la vista de resultados
        if (nodo_estructura != null && nodo_estructura.nodeName == "estructura")
        {
            trae_estructura = true;
            //var f_encabezado = document.createElement("TR");
            var divPadre = tabla.parentElement;
            divPadre.style.width = "";
            oldEnc = tabla.children[0];
            tabla.removeChild(oldEnc);
            f_encabezado = tabla.insertRow(0);
            if(columna1 != null)
                AgregarColumnaAFila(f_encabezado,"&nbsp;");
            if(columna2 != null)
                AgregarColumnaAFila(f_encabezado,"&nbsp;");
            if(columna3 != null)
                AgregarColumnaAFila(f_encabezado,"&nbsp;");
            if(columna4 != null)
                AgregarColumnaAFila(f_encabezado,"&nbsp;");
            for(var r=0; r < nodo_estructura.attributes.length; r++)
            {
                th_encabezado = document.createElement("TH");
                th_encabezado.innerHTML = nodo_estructura.attributes[r].nodeValue;
                th_encabezado.className = "HeaderStyleP";
                f_encabezado.appendChild(th_encabezado);
            }
            //para que tome el contenido de la tabla
            //y lo pueda mapear en el siguiente proceso...
            response = response.lastChild;
        }
        var campoLlavetmp = campoLlave;
        var updatesNode = response.firstChild;
        while(updatesNode!=null && updatesNode.nodeName!="memTabla")
		    updatesNode = updatesNode.nextSibling;
        if(updatesNode == null)return;
        var children=updatesNode.childNodes;
        if(children != null && children.length > 0)		
		for( var i=0;i<children.length;i++)
		{		
		    campoLlave=campoLlavetmp;
			var node=children[i];			
			if(node.nodeName!="registro")continue;
			if(node!=null)
			{			    
				var row = document.createElement("TR");
				var colsAgregadas=0;                 
                if (rowAlterno==0)
                {
                   row.className= "AlternateRowStyleP";
                   rowAlterno=1;
                }
                else
                {
                   row.className= "RowStyleP";
                   rowAlterno=0;
                }  
                if (campoLlave!=null) //AEJM:()adaptacion con el fin de que las funciones que se realicen tengan la posibilidad de mandar mas de un parametro
                {
                   var ObtenValores=campoLlave.split("");
                   row.id = "row" + node.getAttribute(ObtenValores[0]);
                   var numParametros=ObtenValores.length;
                   campoLlave="";                   
                   for(var t=0;t<numParametros;t++) 
                   {                                                         
                      campoLlave=campoLlave+quitarComita(node.getAttribute(ObtenValores[t]));
                      if (t+1<numParametros) 
                      {
                        campoLlave=campoLlave+"\",\"";
                      }                       
                   }                
                }
                if ((campoLlave!=null) && (columna1!=null))
                {
                   var colum=columna1.split("");
                   var td = document.createElement("TD");
                   td.appendChild(document.createTextNode("")) ;
                   // td.innerHTML= colum[0]+node.getAttribute(campoLlave)+colum[1];
                   td.innerHTML= colum[0]+campoLlave+colum[1];
                   td.align="center";
                   row.appendChild(td); 
                   colsAgregadas= colsAgregadas+1;
                }
                if ((campoLlave!=null) && (columna2!=null))
                {
                  var colum=columna2.split("");
                   var td = document.createElement("TD");
                   td.appendChild(document.createTextNode("")) ;
                   td.innerHTML= colum[0]+campoLlave+colum[1];
                   td.align="center";
                   row.appendChild(td); 
                   colsAgregadas= colsAgregadas+1;
                }
                if ((campoLlave!=null) && (columna3!=null))
                {
                   var colum=columna3.split("");
                   var td = document.createElement("TD");
                   td.appendChild(document.createTextNode("")) ;
                   td.innerHTML= colum[0]+campoLlave+colum[1];
                   td.align="center";
                   row.appendChild(td); 
                   colsAgregadas= colsAgregadas+1;
                }
                if ((campoLlave!=null) && (columna4!=null))
                {
                    var colum=columna4.split("");
                    var td = document.createElement("TD");
                    td.appendChild(document.createTextNode("")) ;
                    td.innerHTML= colum[0]+campoLlave+colum[1];
                    td.align="center";
                    row.appendChild(td); 
                    colsAgregadas= colsAgregadas+1;
                }
                for (var j=1; j<=noColums; j++)
                {
                    var td = document.createElement("TD");
                    td.appendChild(document.createTextNode(node.getAttribute("campo"+j))) ; 
                    row.appendChild(td); 
                }
                if (node.getAttribute("SI_Medida")!=null)//si existe campo con ese nombre, se agrega si tiene medida predeterminada (funciona en ConsuArt)
                {
                   row.accessKey=node.getAttribute("SI_Medida");
                   colsAgregadas= colsAgregadas+9;
                   row.childNodes[colsAgregadas].id= "Medi"+node.getAttribute(ObtenValores[0]);
                }
                tabla.appendChild(row);                                               			
			}
		}		
    }
	return rowAlterno;
}
function DTOS(fecha)
{
    var TempDTOS= fecha.split("/");
    var DTOS= TempDTOS[2] + TempDTOS[1] + TempDTOS[0];
    return DTOS;
}
//Flag we can set after we modify the Grid prototype, so that we only do it once.
var _updatedRecordChange=false;
//Change the _recordChange prototype to point to our new function, which can then call
//the original _recordChange, only if the type is not "ChangedCells".  This way, we don't
//keep these changes in memory - we don't need them.
function UpdateGridRecordChange(){
	if(_updatedRecordChange)return;
	_updatedRecordChange=true;
	//Keep track of the old function, we're just changing its name.
	igtbl_Grid.prototype._recordChangeEX=igtbl_Grid.prototype._recordChange;
	//Now we can poing _recordChange to a new function
	igtbl_Grid.prototype._recordChange=function(type, obj, value){
		//We want to record all changes except for ChangedCells updates, there is no need to track them.
		if(type!="ChangedCells" &&type!="AddedRows" && type!="DeletedRows"){
			this._recordChangeEX(type,obj,value);
		}
	}
}
function HabilitarControles()
{
    if(SireGrid_FS == undefined || SireGrid_FS == null)
    {
        alert("Debe seleccionar un elemento de la tabla");
        return false;
    }
    controles = document.getElementsByTagName("input");

    for(i in controles)
    {
        controles[i].disabled=false;
    }
    return true;
}

function MostrarDlgLogin()
{        
    var vDlg=window.showModalDialog("WF_Login.aspx?Timeout=SessionEnded&pageName=WF_DlgLogin.aspx", this,'dialogHeight: 280px; dialogWidth: 380px; edge: Raised; center: Yes; help: No; resizable: No; scroll:No;  status: No');
}
//
//Esta función pretende evaluar si hay una sesión activa en el servidor.
//Realmente, mediante javascript, no se puede evaluar si la sesión está activa o no
//con esta función se hace un "truco" el cual consiste en ir al servidor a una página
//que, para indicar si hay sesión, responde en formato XML: <sesion>1</sesion>;
//en caso de que la respuesta fuera cualquier otra cosa, la función tomará la respuesta como sesión
//terminada. Esta conclusión se toma basándose en que IIS mediante el web.config redirige cualquier petición
//no autorizada a la página de login y en caso de que nuestra sesión haya finalizado, al hacer la petición
//a la página de sesión, seremos redirigidos a la página de login por lo tanto la respuesta XML no será la correcta
//y por 'deducción', la sesión habrá finalizado.
//
//ROLC
//
var sxmlHttp = null;
function HaySesion()
{

    if(sxmlHttp != null)return;
	sxmlHttp = getXmlHTTP();
	if(sxmlHttp == null || sxmlHttp == undefined)
		return false;
	var hay = false;
	//Se hará una petición sincrona a la página de la sesión
	sxmlHttp.open("GET", "Generadores/SesionAjax.aspx?accion=HaySesion", false);
	sxmlHttp.onreadystatechange = function()
	{
		if(sxmlHttp.readyState==4)
		{
			xml = sxmlHttp.responseXML;//sxmlHttp.responseXml;
			if (xml == null || xml.childNodes.length <= 0)//No hay sesion
			{
				hay =  false;
			}
			else		//Respondió en XML, evaluar si lo que trae es <sesion>1</sesion>
			{
				if(xml.lastChild.text == "1")
				{
					hay = true;
				}
				else
					hay = false;
			}
		}
	}

	sxmlHttp.send(null);
	delete sxmlHttp;
	return hay;
}
function HaySesion2()
{

    if(sxmlHttp != null)return;
	var sxmlHttp = getXmlHTTP();
	if(sxmlHttp == null || sxmlHttp == undefined)return false;
	var hay = false;
	//Se hará una petición sincrona a la página de la sesión
	sxmlHttp.open("GET", "Generadores/SesionAjax.aspx?accion=HaySesion", false);
	sxmlHttp.onreadystatechange = function()
	{
		if(sxmlHttp.readyState==4)
		{
			xml = sxmlHttp.responseXML;//sxmlHttp.responseXml;
			if (xml == null || xml.childNodes.length <= 0)//No hay sesion
			{
				hay =  false;
			}
			else		//Respondió en XML, evaluar si lo que trae es <sesion>1</sesion>
			{
				if(xml.lastChild.text == "1")  hay = true;
				else  hay = false;					
			}
		}
	}
	sxmlHttp.send(null);
	delete sxmlHttp;
	return hay;
}
function direccionaFrame(url)
{    

    if (url == "PaginaInicio.htm")
    {
        if ((document.frames.FrameInicio!=null) && (document.frames.FrameInicio!=undefined))
        {
           document.frames.FrameInicio.location = "Inicioframe.aspx";
        }
    }
    else
    {
        if ((document.frames.FrameInicio!=null) && (document.frames.FrameInicio!=undefined))
        {
                document.frames.FrameInicio.location= url;	
        }
    }
}
function loadFrame()
{   
   try
   {
       if ((FrameInicio==null) || (FrameInicio==undefined)){return;}
       if ((FrameInicio.location==null) || (FrameInicio.location==undefined)){return;}
       if (FrameInicio.location != undefined)
       {
           var src= new String(); 
           if ((FrameInicio.location.pathname==null) || (FrameInicio.location.pathname==undefined)){return;}       
           src= FrameInicio.location.pathname;        
           if (src.search("PaginaInicio.htm")==-1)//si no es pagina de inicio, los componentes de inicio se regresan a su estado inicial
           {           //se elimina y reduce el espacio para promociones
              if ((Table1==null) || (Table1==undefined)){return;}
              Table1.childNodes[0].childNodes[0].childNodes[0].innerHTML=""; //se oculta div dtos del cte
              Table1.childNodes[0].childNodes[0].childNodes[0].style.width="0px";                 
              Table1.childNodes[0].childNodes[0].childNodes[1].children[0].className="";  
              Table1.childNodes[0].childNodes[0].childNodes[1].style.height="700px";   //frame principal se agranda
              Table1.childNodes[0].childNodes[1].childNodes[1].children[0].className="";  
              Table1.childNodes[0].childNodes[1].childNodes[1].style.height="0px";   //se oculta div d promociones   
              Table1.childNodes[0].childNodes[1].childNodes[1].style.visibility="hidden";  
              Table1.childNodes[0].childNodes[1].childNodes[1].innerHTML="";        
           }        
       } 
   }
   catch(e)
   {
	  return;
   }    
}
function isNum()
{
    var key = window.event.keyCode;
    if (key < 48 || key > 51) //Si no es numerico
    {
        window.event.keyCode = 0;
    }
}


