/**
Funciones de fecha y hora en tiempo real.
09/03/2007 - ALD - 1.1 - Genera ajuste automatico de hora de acuerdo a Decretos Supremos del Ministerio
                         del Interior 1.489 del 6 de octubre de 1970 y 1.142 del 20 de octubre de 1980
25/06/2008 - ALD - 1.2 - Usa segundos epoch en vez de Date.
                       - Reduce cantidad de funciones a las estrictamente necesarias.
28/07/2008 - ALD - 1.3 - Usa Date, corrigiendo nomenclatura del mes.
*/

var meses = new Array('enero','febrero','marzo','abril','mayo','junio',
                      'julio','agosto','septiembre','octubre','noviembre','diciembre');
var dias = new Array('Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado');

// 

var HUSO = getHuso(1000 * 1269251486);
// 
var t_inicial = new Date(2010,103 - 101,122 * 1 - 100,102 * 1 - 100,151 * 1 - 100,126 * 1 - 100);
// 
var offsetDate = new Date();

function offset_now() {
  var ahora = new Date();
  return ahora.getTime() - offsetDate.getTime();
};

function get_fecha(showSem) {
  var fecha = new Date;
  fecha.setTime(t_inicial.getTime() + offset_now());
  var ano = fecha.getYear();
  if (ano < 200) { // onda 103, NS70
    ano = ano + 1900;
  };
  var mes = fecha.getMonth();
  var dia = fecha.getDate();
  var diasem = dias[fecha.getDay()];
  var mes = meses[mes];
  if (showSem == 1) {
    return diasem + ' ' + dia + ' de ' + mes + ' de ' + ano;
  }else{
    return dia + ' de ' + mes + ' de ' + ano;
  };
}; // get_fecha

function segundoSabadoDe(mes) { // 1.1
  var fecha = new Date();
  // Detectar segundo sabado de mes.
  var sabados = 0;
  var ano = fecha.getYear(); // Ano actual.
  if (ano < 2000) { ano += 1900; };
  var sabado;
  for (i=1;i<=31;i++) {
    sabado = new Date(ano,mes,i,23,59,59);
    if (sabado.getDay() == 6) {
      sabados++;
      if (sabados == 2) { break; };
    };
  };
  fecha = new Date(ano,mes,i,20,59,59); //
  return fecha;
}; // segundoSabadoDe

// 1.1 segundo sabado de octubre - segundo sabado de marzo
function getHuso(fms) { // 1.2
  return 3; // !!! Parche por Terremoto.
  var sab1 = new Date;
  var sab2 = new Date;
  sab1 = segundoSabadoDe(2);
  sab2 = segundoSabadoDe(9);
  if ( (fms >= sab1.getTime()) && (fms <= sab2.getTime()) ) {
    return 4;
  }else{
    return 3;
  };
}; // getHuso

function get_hora() {
  var fecha = new Date;
  var fechaGMT = new Date;
  fecha.setTime(t_inicial.getTime() + offset_now());
  fechaGMT.setTime(t_inicial.getTime() + offset_now() + HUSO * 3600000);
  var hora = fecha.getHours();
  var min = fecha.getMinutes();
  var seg = fecha.getSeconds();
  var horaGMT = fechaGMT.getHours();
  var minGMT = fechaGMT.getMinutes();
  var segGMT = fechaGMT.getSeconds();
  return w2(hora,2) + ':' + w2(min,2) + ':' + w2(seg,2) + ' (GMT ' + w2(horaGMT,2) + ':' + w2(minGMT,2) + ':' + w2(segGMT,2) + ')';
}; // get_hora

function w2(num,n) {
  var a = num + '';
  while (a.length < n) {
    a = '0' + a;
  };
  return a;
}; // w2

//--- OBS: recuperado de bck 20080625 func: fecha_iso() y print_date_or_time()
function fecha_iso() {
  // Retorna la fecha del servidor en formato iso
  var fecha = new Date;

  // fecha.setTime(1000 * s_inicial + offset_now());
  fecha.setTime(t_inicial.getTime() + offset_now());

  var ano = fecha.getYear();
  if (ano < 200) { // onda 103, NS70
    ano = ano + 1900;
  };
  // alert('year:' + ano);
  var mes = fecha.getMonth();
  var dia = fecha.getDate();
  var diasem = dias[fecha.getDay()];
  mes = mes + 1;
  // return diasem + ', ' + dia + ' de ' + mes + ' de ' + ano;
  return ano + w2(mes,2) + w2(dia,2);
};

function print_date_or_time(aaaammdd_art, hhmm_art, tipo, fechaplong, iddiv) {
  // Escribe la fecha u hora, dependiendo si la fecha del art. es de hoy o no.
  var isofec = fecha_iso();
  // alert(aaaammdd_art + ' y ' + isofec);
  if (aaaammdd_art == isofec) { // es de hoy
    // Escribe hora (puede venir formateada o no.)

    //document.write('<span class="hora-port">');
    document.getElementById('art'+iddiv).className = "tdd_hora";
    if (hhmm_art.substring(2,3) == ':') {
      document.write(hhmm_art);
    }
    else {
      document.write(hhmm_art.substring(0,2) + ':' + hhmm_art.substring(2,4));
    };
    //document.write('</span>');
  }
  else {
    // Escribe fecha
    if (aaaammdd_art != '99999999') {
      //document.write('<span class="hora-port-gris">');
      document.getElementById('art'+iddiv).className = "tdd_fecha";
      if (fechaplong == '') {

        if (tipo == 's') { // sin ano
          document.write(aaaammdd_art.substring(6,8) + '/' + aaaammdd_art.substring(4,6));
        }
        else { // conano o ''
          document.write(aaaammdd_art.substring(6,8) + '/' + aaaammdd_art.substring(4,6) + '/' + aaaammdd_art.substring(0,4));
        };
      }
      else {
        document.write(fechaplong);
      };
      // document.write('</span>');
    };
  };
};
