//Funcion Ajax Response
function cAjaxResponse(Url, CallBack, ArgumentsCallBackFunction)
{ 
	var req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) 
    {
    	try {
    		req = new XMLHttpRequest();
        } catch(e) {
		    req = false;
        }
    // branch for IE/Windows ActiveX version
    } 
    else if(window.ActiveXObject) 
    {
   	    try 
   	    {
    	    req = new ActiveXObject("Msxml2.XMLHTTP");
  	    } 
  	    catch(e) 
  	    {
    	    try 
    	    {
      		    req = new ActiveXObject("Microsoft.XMLHTTP");
    	    } 
    	    catch(e) 
    	    {
      		    req = false;
    	    }
	    }
    }
    if(req) 
    {

	    req.open("GET", Url, false);
	    req.send(null);
        if (ArgumentsCallBackFunction.length>0)
        {
            eval(CallBack + "(req," + ArgumentsCallBackFunction + ")");
        }
        else
        {
            eval(CallBack + "(req)");
        }
    }
}

/// ADDSTOCK ///
function AnadirFavorito(strIDValor, SessionID)
{
    if (strIDValor != "")
    {     
        var arrCodes = strIDValor.split('.');        
        var strCod = arrCodes[1];     
        if(strCod != "")
        {  
            var strUrl = "AjaxInterfaz.aspx?RQ=AddFavourite&CODSTOCK=" + strCod + "&sesion=" + SessionID;
            cAjaxResponse(strUrl, "RedirectFavoritos", "110");
        }
    }
}

function RedirectFavoritos(req, PageID)
{    
    window.location.href = "Default.aspx?PageID=110";
}

/// FIN ADDSTOCK ///
/// BORRADO DE VALORES DE FAVORITOS ///
function BorrarFavorito(RowCod, SessionID)
{    
    var arrCodes = RowCod.split('.');
    var strCod = arrCodes[1];
    var strTargetDiv = "TableDiv_98";
    var strUrl = "AjaxInterfaz.aspx?RQ=DelFavourite&CODSTOCK=" + strCod + "&sesion=" + SessionID;
    cAjaxResponse(strUrl, "RefrescarTabla", "'" + strTargetDiv + "'");
}
function RefrescarTabla(req, targetDiv)
{
    var strResult = req.responseText;       
    if (strResult.length>0)
    {
        if (strResult.substring(0,2) != "OK")
            return;
        
        else        
            document.getElementById(targetDiv).innerHTML = strResult.substring(2);
    }
}
/// FIN DE BORRADO DE VALORES DE FAVORITOS ///


///////////////////////////////////////////////////////////////////
//SECCION ORDENACION DE TABLAS
//Funcion de ordenacion de tablas
var flg_SortingTable = false; //Bandera que indica si una ordenacion esta en curso para permitir que se lanze o no otra
var sortOrder_TargetDiv; //Capa destino donde cargar el html de la tabla donde se solicito la ordenacion
var numModules = 30;
var arrHeaderOrders = new Array(numModules); //Array que almacenara las ultimas solicitudes de ordenacion realizadas sobre las tablas
                        //de manera que se puedan controlar si se repite una peticion para cambiar su sentido ascendente por 
                        //descendente y viceversa. El array es de 3 dimensiones [moduleId, IdDescriptor, Asc=1, Desc=-1]
for (iHxx = 0;iHxx<numModules; iHxx++)
{ 
    arrHeaderOrders[iHxx] = MultiDimensionalArray(2,2);
}

function MultiDimensionalArray(iRows,iCols)
{
    var i;
    var j;
    var a = new Array(iRows);
    for (i=0; i < iRows; i++)
    {
        a[i] = new Array(iCols);
        for (j=0; j < iCols; j++)
        {
            a[i][j] = "";
        }
    }
    return(a);
} 
                      
//funcion que hace la peticion Ajax que hace una peticion para la ordenacion de una tabla
function SortHeader(IdDescriptor, IdModule)
{
    var strTargetDiv = "TableDiv_" + IdModule;
    var order = getOrderType(IdModule, IdDescriptor);    
    var strUrl = "AjaxInterfaz.aspx?RQ=SortTable&moduleId=" + IdModule + "&fieldId="+ IdDescriptor + "&ASC=" + order + "&" + window.location.search.substring(1);
    cAjaxResponse(strUrl, "RefreshTableOrder", "'" + strTargetDiv + "'");
}

//Función para obtener los Hechos Relevantes de la ficha de información financiera
function ObtenerHechosRelevantes(IdHechosRelevantes, IdModule, idlst)
{
    var strTargetDiv = "HR";        
    var strUrl = "AjaxInterfaz.aspx?RQ=" + IdHechosRelevantes + "&moduleId=" + IdModule + "&idlst=" + idlst;    
    cAjaxResponse(strUrl, "RefreshTableOrder", "'" + strTargetDiv + "'");
}

//Refresca una tabla de ordenacion
function RefreshTableOrder(Request, targetDiv)
{
    var strResult = Request.responseText;
    if (strResult.length>0)
    {
        if (strResult.substring(0,2) != "OK")   
            return;
        else        
            document.getElementById(targetDiv).innerHTML = strResult.substring(2);        
    }
}

//Obtenemos el orden de la tabla
function getOrderType(IdModule, IdDescriptor)
{
    var i=0;
    var flgFinded = false;
    for (i=0;i<10;i++)
    {
    
        if (arrHeaderOrders[i][0][0] == "")
        {
            arrHeaderOrders[i][0][0] = IdModule;
            arrHeaderOrders[i][1][0] = IdDescriptor;
            arrHeaderOrders[i][1][1] = 1;
            break;
        }
        else if (arrHeaderOrders[i][0][0] == IdModule)
        {
            if (arrHeaderOrders[i][1][0] == IdDescriptor)
            {
                arrHeaderOrders[i][1][1] *= -1;
            }
            else
            {
                arrHeaderOrders[i][1][0] = IdDescriptor;
                arrHeaderOrders[i][1][1] = 1;
            }
            break;
        }
        else
            i++;
    }
    
    if (i>10) //Demasiadas capas a procesar
        return "TRUE";
        
    if (arrHeaderOrders[i][1][1]>0)
        return "TRUE";
    else
        return "FALSE";
   
}

function IFrameResize(id)
{    
   //find the height of the internal page
   try
   {
        var nAncho = document.getElementById(id).contentWindow.document.body.scrollHeight;
  
        //change the height of the iframe
        document.getElementById(id).height = nAncho + "px";
    }
    catch(e){}        
}

function isNull(o) 
{   
    var bIsNull;
    try
    {
        bIsNull = (eval(o)==null);
    }
    catch(err)
    {
        bIsNull = true;
    }
    return bIsNull;
}