// Esta función refresca la ventana de origen //
function __refrescarOrigen(){
  window.opener.location.reload(1);
  return;
}
  
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //

// Esta función se encarga de visualizar una serie de mensajes de aviso //
function vermensajes(mensajes){
  var mensaje                        = '';
  for (var i=0; i < mensajes.length; ++i){
    if (i > 0){
      mensaje                      = mensaje + '\r\n' + mensajes[i];
    }else{
      mensaje                      = mensajes[i];
    }
  }
  alert (mensaje);
  return;
}
  
// Esta función cierra la pantalla actual y si es necesario refresca la ventana de origen //
function cerrarpantalla(refrescar){
  if (refrescar == 1){
    if (window.opener){
      window.opener.location.reload(1);
    }
  }
  this.close();
  return;
}
  
// Esta función edita el valor de un control //
function editarcontrol(ventana,control,tipocontrol,valor,texto,cerrar,refrescar){
  if (ventana == ""){
    ventana                  = window.opener;
  }else{
    ventana                  = this;
  }
  var controlObj             = ventana.xGetElementById(control);
  if (controlObj) {
    switch(tipocontrol){
      case "ctrllineab":
        controlObj.value     = valor;
        var controltxtObj    = ventana.xGetElementById(control+'_texto');
        controltxtObj.value  = texto;
        break;
      case "ctrltextob":
        controlObj.value     = valor;
        var controltxtObj    = ventana.xGetElementById(control+'_texto');
        controltxtObj.value  = texto;
        break;
      case "ctrllista":
        var numeroopciones    = controlObj.options.length;
        var anadiropcion      = 1;
        if (numeroopciones > 0){
          for (var indice=0; indice < numeroopciones ; indice++){
            if (controlObj.options[indice].value == valor){
              if (typeof(texto) != "undefined"){
                controlObj.options[indice].text  = texto;
              }
              controlObj.selectedIndex  = indice;
              anadiropcion    = 0
              break;
            }
          }
        }
        if(anadiropcion == 1){
          if (typeof(texto) != "undefined"){
            controlObj.options.length          = numeroopciones + 1;
            indice                             = (controlObj.options.length - 1);
            controlObj.options[indice].value   = valor;
            controlObj.options[indice].text    = texto;
            controlObj.selectedIndex  = indice;
          }
        }
        break;
      default:
        controlObj.value          = valor;
        break;
    }
    if (typeof(cerrar) == "undefined"){
      cerrar                      = 0;
    }
    if (typeof(refrescar) == "undefined"){
      refrescar                    = 0;
    }
    if (cerrar==1){
      this.cerrarpantalla(refrescar);
    }
  }
  return;
}
  
function valorcontrol(control,tipocontrol){
  var valor                  = '';
  switch(tipocontrol){
    case "ctrlfecha":
      var controldiaObj      = this.xGetElementById(control + "_dia");
      var controlmesObj      = this.xGetElementById(control + "_mes");
      var controlanoObj      = this.xGetElementById(control + "_ano");
      var controlhoraObj    = this.xGetElementById(control + "_hora");
      var controlminutoObj  = this.xGetElementById(control + "_minuto");
      if ((controldiaObj) && (controlmesObj) && (controlanoObj)){
        if ((controldiaObj.value != '') && (controlmesObj.value != '') && (controlanoObj.value != '')){
          valor              = controldiaObj.value + "/" + controlmesObj.value + "/" + controlanoObj.value;
          if ((controlhoraObj) && (controlminutoObj)) {
            if ((controlhoraObj.value != '') && (controlminutoObj.value != '')) {
              valor          = valor + ' ' + controlhoraObj.value + ':' + controlminutoObj.value;
            }
          }
        }
      }
      break;
    default:
      var controlObj        = this.xGetElementById(control);
      if (controlObj) {
        valor                = controlObj.value;
      }
      break;
  }
  return valor;
}
  
function resetearcontrol(control,tipocontrol){
  var controlObj            = xGetElementById(control);
  if (controlObj) {
    var valor                = controlObj.value;
    switch(tipocontrol){
      case "ctrllineab":
        controlObj.value    = '';
        var controltxtObj    = xGetElementById(control+'_texto');
        controltxtObj.value  = '';
        break;
      case "ctrltextob":
        controlObj.value    = '';
        var controltxtObj    = xGetElementById(control+'_texto');
        controltxtObj.value  = '';
        break;
      case "ctrloculto":
        controlObj.value    = '';
        break;
    }
  }
  return;
}
  
function ctrlcheck_click(checkobj){
  if (checkobj.checked){
    checkobj.value=1;
  }else{
    checkobj.value=0;
  }
  return;
}

//Esta función abre una nuebva ventana fuera del ámbito proyecto //
function abrirurl(url,ventana,modelo){
  if (ventana != ""){
    sventana                      = window.open(url,ventana,modelo);
  }else{
    this.location.href                  = url;
  }
  return;
}

function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];

  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}

  
//Esta función abre una pantalla dentro del ámbito proyecto en función de los parámetros recibidos //
function abrirpantalla(parametros){
  actualizarparametros(parametros);
  if (parametros['p_ssl'] != "undefined"){
    var ssl                 = parametros['p_ssl'];
  }else{
    var ssl                 = 0;
  }
  eval('this.location.href=\'' + generarurl(arparametros) + '\';');
  return;
}
  
// Esta función abre una nueva ventana dentro del ámbito proyecto //
function abrirventana(parametros,ventana,modelo){
  if (parametros['p_ssl'] != "undefined"){
    var ssl                 = parametros['p_ssl'];
  }else{
    var ssl                 = 0;
  }
  sventana                  = window.open(generarurl(parametros, ssl),ventana,modelo);
  return;
}
  
  
// Esta función recibe el array con los parámetros y genera una url //
function generarurl(parametros, ssl){
  var url                        = '';
  var i                          = 0;
  if (typeof(ssl) == "undefined"){
    var ssl                      = 1;
  }
  
  var myregexp = new RegExp('^[a|p|s|o|d|e]_[a-z]+');

// alert('parametros: ' + dump(parametros));
  
  for (var parametro in parametros) {
    if (myregexp.exec(parametro)) {
// alert('parametro: ' + parametro + ' ' + myregexp.exec(parametro));
  
    if (parametros[parametro] != ''){
      if (i == 0){
        url                      = url + parametro + '=' + parametros[parametro];
      }else{
        if (separadorurl == ''){
          url                    = url + '&' + parametro + '=' + parametros[parametro] ;
        }else{
          url                    = url + separadorurl + parametro + '=' + parametros[parametro];
        }
      }
      i++;
    }
  }
  }
  
  if (ssl == 0){
    var urlbase                = urlcontrol;
  }else{
    if (typeof(urlsslcontrol) != 'undefined'){
       var urlbase               = urlsslcontrol;
    }else{
       var urlbase               = urlcontrol;
    }
  }
  if (separadorurl == '&'){
    url                          = urlbase + '?' + url;
  }else{
    url                          = urlbase + url;
  }

// alert('ssl= ' + ssl + ' ## urlbase=' +urlbase + ' ##url=' + url);
  return url;
}

// Esta función se encarga de la codificación de los parametros (que se pasan separados por ,) para pasarlos a un array de parámetros //
function codificarparametros(){
  var parametros                 = new Array();
  var parametro                  = new Array();
  for (var i=0; i < arguments.length; ++i){
    parametro                  = arguments[i].split('=');
    if (parametro.length == 2){
      parametros[parametro[0]]    = parametro[1];
    }else{
      var valorparametro          = '';
      for (var j=1; j < parametro.length; ++j){
        if (j<(parametro.length-1)){
          valorparametro          = valorparametro + parametro[j] + '=';
        }else{
          valorparametro          = valorparametro + parametro[j];
        }
      }
      parametros[parametro[0]]    = valorparametro;
    }
  }
  return parametros;
}

  
// Esta función recibe el array con los parámetros y genera la nueva parametrización de la pantalla actual //
function actualizarparametros(parametros){
  var lonpar                        = spha.length;
  //alert ('tipo rpp =' +typeof(parametros[sphp + 'rpp']));
  if (typeof(parametros[sphp + 'rpp']) != "undefined"){
    if (parametros[sphp +'rpp'] == 1){
      for (var parametro in arparametros) {
        switch (parametro.substr(0,lonpar)){
          case spha:
            //alert ('resetenado parametro : ' + parametro);
            arparametros[parametro]        = '';
            break;
          case spho:
            arparametros[parametro]        = '';
            break;
          case sphp:
            arparametros[parametro]        = '';
            break;
        }
      }
    }
  }else{
    if (typeof(parametros[spha + 'iap']) != "undefined"){
      if (parametros[spha + 'iap'] != arparametros[spha + 'iap']){
        for (var parametro in arparametros) {
          switch (parametro.substr(0,lonpar)){
            case spha:
              arparametros[parametro]      = '';
              break;
            case spho:
              arparametros[parametro]      = '';
              break;
          }
        }
      }
    }else{
      if (typeof(parametros[spha + 'itp']) != "undefined"){
        if (parametros[spha + 'itp'] != arparametros[spha + 'itp']){
          for (var parametro in arparametros) {
            switch (parametro.substr(0,lonpar)){
              case spho :
                arparametros[parametro]    = '';
                break;
            }
          }
        }
      }
    }
  }
  if (typeof(parametros[sphp + 'rpo']) != "undefined"){
    if (parametros[sphp +'rpo'] == 1){
      var rpo                      = 1;
      for (var parametro in arparametros) {
        switch (parametro.substr(0,lonpar)){
          case spho :
            //alert ('parametro = ' + parametro);
            arparametros[parametro]        = '';
            break;
        }
      }
    }else{
      var rpo                      = 0;
    }
  }else{
      var rpo                      = 0;
  }
  for (var parametro in arparametros) {
    switch (parametro.substr(0,lonpar)){
      case sphe:
        arparametros[parametro]            = '';
        break;
    }
  }
  for (var parametro in parametros) {
    switch (parametro.substr(0,lonpar)){
      case spho :
        if (rpo == 0){
          arparametros[parametro]          = parametros[parametro];
        }
        break;
      case spha :
        arparametros[parametro]            = parametros[parametro];
        break;
      case sphe :
        if (parametros[parametro] != ""){
          arparametros[parametro]          = parametros[parametro];
        }
        break;
      case sphs :
        arparametros[parametro]            = parametros[parametro];
        break;
    }
  }
  return;
}
  
