// Usa common_ajx.js
// Para usar esta libreria debe inicalizarse antes:
//
// setContext(<contexto>); // Ejemplo setContext('/dev_ai_base');
//
// setSid(<session id>); // Ejemplo setSid('C0F1078930A99EED4DF5FA2560AACDB4');


_html_replet_js = 'included';

var __context = '';
function setContext(contexto) {
    __context = contexto;
}
function getContext() {
    return( __context );
}

var __sid = '';
function setSid(sid) {
    __sid = sid;
}
function getSid() {
    if( __sid == '' ) {
        // intentamos obtener el sessionid desde las cookies
        var c = document.cookie;
        var idx = c.indexOf("JSESSIONID", 0);
        if( idx > -1 ) {
            __sid  =  c.substring( idx + "JSESSIONID".length + 1, c.indexOf(";") ) ;
        }
        
    }
    return( __sid );
}


function getReplet(idReplet, repletParam, divId) {
  addDivRepletEntry(divId, idReplet);

  if( repletParam == '' ) {
     loadUrlInDiv(getContext()+"/ai_main/ver_reporte?id_replet="+idReplet, divId);
  } else {
     loadUrlInDiv(getContext()+"/ai_main/ver_reporte?id_replet="+idReplet+"&"+repletParam+"&"+Math.random(), divId);
  }
}

function ordenar(idReplet, orden, columna) {
    loadUrlInDiv( getContext() + "/ai_main/sort_reporte?id_replet="+idReplet+"&orden="+orden+"&columna="+columna+"&"+Math.random(), getDivByRepletId(idReplet) );
}

function loadUrlInDiv(url, divId) {
  var http = getHTTPObject(); 
  http.open("GET", url, true);
  http.onreadystatechange = function() {
              if (http.readyState == 4) {
                 var e = document.getElementById(divId);
                 e.innerHTML = http.responseText;
              }
      };
  http.send(null);

}


// Para manejar multiples replets en divs
// Usar las funciones para acceder a esta coleccion
var _replet_div;

if (!_replet_div) {
  _replet_div = {};
}
function addDivRepletEntry(divId, idReplet) {
    _replet_div[idReplet] = divId;
}
function getDivByRepletId(idReplet) {
    return( _replet_div[idReplet] );
}



// Graficos JFree
function getJFreeChart(idReplet, idGrafico, divId) {
    var e = document.getElementById(divId);
    e.innerHTML = "<img src='"+ _constructJFreeUrl( idReplet, '', idGrafico ) +"' />"
}

function getJFreeChartParam(idReplet, repletParam, idGrafico, divId) {
    var e = document.getElementById(divId);
    e.innerHTML = "<img src='"+ _constructJFreeUrl( idReplet, repletParam, idGrafico ) +"' />"
}

function _constructJFreeUrl(idReplet, idGrafico) {
    if ( repletParam == '' ) {
        return ( getContext()+"/ai_main?accion=get_grafico&id_grafico="+idGrafico+"&id_reporte="+idReplet );
    } else {
        return ( getContext()+"/ai_main?accion=get_grafico&id_grafico="+idGrafico+"&id_reporte="+idReplet+"&"+repletParam);
    }
}


// Graficos SWF
// Retorna el objeto JS que representa a grafico
function getFSChart(idReplet, idGrafico, tipoGrafico, divId, width, height) {
    var chart = new FusionCharts(getContext()+'/charts/'+getFSChartById(tipoGrafico), 
                                divId+'_id', width, height, '0', '1');

    chart.setDataURL(getContext()+"/ai_main;JSESSIONID="+getSid()+"?accion=fs_xml%26id_grafico="+idGrafico+"%26id_reporte="+idReplet+"%26__tt="+Math.random());
    chart.render( divId );

    return( chart );
}

/**
* repletParam debe tener los parametros separados pot %26 y no por &
**/
function getFSChartParam(idReplet, repletParam, idGrafico, tipoGrafico, divId, width, height) {
    var chart = new FusionCharts(getContext()+'/charts/'+getFSChartById(tipoGrafico), 
                                divId+'_id', width, height, '0', '1');

    chart.setDataURL(getContext()+"/ai_main;JSESSIONID="+getSid()+"?accion=fs_xml%26id_grafico="+idGrafico+"%26id_reporte="+idReplet+"%26"+repletParam+"%26__tt="+Math.random());
    chart.render( divId );

    return( chart );
}

function getFSChartById( id ) {
        switch(id) {
        case 100: swf="Area2D.swf";
              break;
        case 101: swf="Bar2D.swf";
              break;
        case 102: swf="Bubble.swf";
              break;
        case 103: swf="Column2D.swf";
              break;
        case 104: swf="Column3D.swf";
              break;
        case 105: swf="Doughnut2D.swf";
              break;
        case 106: swf="Doughnut3D.swf";
              break;
        case 107: swf="Line.swf";
              break;
        case 108: swf="MSArea.swf";
              break;
        case 109: swf="MSBar2D.swf";
              break;
        case 110: swf="MSBar3D.swf";
              break;
        case 111: swf="MSColumn2D.swf";
              break;
        case 112: swf="MSColumn3D.swf";
              break;
        case 113: swf="MSColumn3DLineDY.swf";
              break;
        case 114: swf="MSColumnLine3D.swf";
              break;
        case 115: swf="MSCombi2D.swf";
              break;
        case 116: swf="MSCombiDY2D.swf";
              break;
        case 117: swf="MSLine.swf";
              break;
        case 118: swf="MSStackedColumn2D.swf";
              break;
        case 119: swf="MSStackedColumn2DLineDY.swf";
              break;
        case 120: swf="Pie2D.swf";
              break;
        case 121: swf="Pie3D.swf";
              break;
        case 122: swf="SSGrid.swf";
              break;
        case 123: swf="Scatter.swf";
              break;
        case 124: swf="ScrollArea2D.swf";
              break;
        case 125: swf="ScrollColumn2D.swf";
              break;
        case 126: swf="ScrollCombi2D.swf";
              break;
        case 127: swf="ScrollCombiDY2D.swf";
              break;
        case 128: swf="ScrollLine2D.swf";
              break;
        case 129: swf="ScrollStackedColumn2D.swf";
              break;
        case 130: swf="StackedArea2D.swf";
              break;
        case 131: swf="StackedBar2D.swf";
              break;
        case 132: swf="StackedBar3D.swf";
              break;
        case 133: swf="StackedColumn2D.swf";
              break;
        case 134: swf="StackedColumn3D.swf";
              break;
        case 135: swf="StackedColumn3DLineDY.swf";
              break;
        default:  swf = "unknown.swf";
        }

        return( swf );
}
