/*

Proposito
---------
Implementar la funcionalidad de los recortes en el sitio web.

Esto es:
  - Agregar recortes.
  - Eliminar recortes.
  - Marcar recortes como leidos, cuando lo son.
  - Desplegar texto de ayuda cuando no hay ningun recorte.

Autor
-----
MCO - 03/10/2003.

*/

var recTodos = new Array();     // Estructura de datos de todos los recortes de la pagina.
var recEscogidos = new Array(); // Recortes seleccionados por el usuario.
var recLeidos = new Array();    // Recortes ya leidos.
var menus = new Array("Recortes");
var menuActivo = null; // Define cual menu esta actualmente activo.
var recorteActual = 0; // Recorte activo (para agregar, eliminar o marcar).
var newRecorte = '';
var tot_iteracion = 13; // Total de veces que va a "moverse" la tijera hacia la barra de recortes.

// Detecta IE.
var IE = document.all?true:false;

var BROWSER_VALIDO = true;
var IE6 = false;
var NS6 = false;
var NS4 = false;

var tit = 'Haga click aquí para seleccionar aviso clasificado';
var tit_on = tit;
var tit_of = 'Haga click aquí para eliminar aviso clasificado';

// alert(navigator.appName + ' /// ' + parseInt(navigator.appVersion) + ' /// ' + navigator.userAgent + ' /// ' + navigator.userAgent.indexOf('MSIE 5'));
if ( (navigator.appName == "Netscape") || (navigator.appName == "Microsoft Internet Explorer") ) {
	// alert(navigator.appVersion);
	if (navigator.appVersion.indexOf("4.7") > -1) { // ns4.7
	  BROWSER_VALIDO = true;
	  var TOP_BARRA = 0; // 45;
	  NS4 = true;
	}
	else if (parseInt(navigator.appVersion) >= 5) { // ns6+
	  BROWSER_VALIDO = true;
	  var TOP_BARRA = 0; // 45;
	  NS6 = true;
	}
	else if ( (navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0) ) { // ie5+
	  BROWSER_VALIDO = true;
	  var TOP_BARRA = 0;

	  if (navigator.userAgent.indexOf('MSIE 6') > 0) { // ie6+
	    IE6 = true;
	  };
	};
};

// alert('va');
var frameLeftClasif = NS4 ? parent.headclas : parent.headclas;
var frameContClasif = NS4 ? parent.contclas : parent.contclas;
// alert(NS4 + ' ' + frameLeftClasif);


css_recortes(); // Carga los css de los recortes.


// Define atributo para crear objeto.
if (IE) {
  classFix = "className";
}
else {
  classFix = "class";
  document.captureEvents(Event.MOUSEMOVE);
  frameLeftClasif.document.captureEvents(Event.MOUSEMOVE);
};


// Posicion de origen y destino de la marca.
var x0 = 0, x1 = 0, y0 = tot_iteracion, y1 = 0, x, y, dx, dy, iteracion;

// Codigo para la captura de la posicion del mouse en la pagina.
var mouseX = mouseY = 0;

// Setea funcion getMouseXY para el evento onmousemove.
document.onmousemove = getMouseXY;

// Variable temporales para las coordenadas del mouse.
var tempX = 0;
var tempY = 0;

// -----------------------------------------------------------
//Esta funcion la ejecuta el onLoad del body. Es la funcion que inicia los recortes.
function initialize() {

  if (! BROWSER_VALIDO) {
    return;
  };

  setTimeout("inicio_Recortes()", 500); // Inicializa los recortes.
}; // initialize.

// -----------------------------------------------------------
// Funcion principal para obtener las coordenadas del mouse en la ventana.
function getMouseXY(e) {
  if (IE) { // Graba las posiciones x-y si el browser es IE.
    tempX = event.clientX + document.body.scrollLeft;
    tempY = event.clientY + document.body.scrollTop;
  }
  else {    // Graba las posiciones x-y si el browser es NS.
    tempX = e.pageX;
    tempY = e.pageY;
  };
  // Capturando posibles valores negativos en NS4.
  if (tempX < 0) { tempX = 0; };
  if (tempY < 0) { tempY = 0; };
  mouseX = tempX;
  mouseY = tempY;

  return true;
}; // getMouseXY

// -----------------------------------------------------------
// Lee los recortes seleccionados del usuario desde la cookie.
function getRecortesFromCookie()  {
  var recortes = null;
  // alert(frameLeftClasif.document.cookie);
  var aux = frameLeftClasif.document.cookie.split(";");

  var x = -1;
  for (i = 0; i < aux.length; i++)  {
    if (aux[i].indexOf('avisos=') > -1) { // Encuentra la seccion de los recortes de los clasificados.
      inicio = aux[i].indexOf("=") + 2;
      recortes = aux[i].substring(inicio,aux[i].length);

      break;
    };
  };

  if ( (recortes != null) && (recortes != '') ) {
    aux = recortes.split("|");
    // alert('aux ' + aux[0] + ' --- ' + aux.length + ' --- [' + recortes + ']');
    if (aux.length >= 1) {
      x = 0;
      for (i = 0; i < aux.length; i++) {
        recEscogidos[i] = aux[x];
        // alert(recEscogidos[i]);
        x++;
      };
    };
    // alert('antes');
    frameLeftClasif.document.forms[0].selecc.value = recortes;
    // alert('despues');
  };
}; // getRecortesFromCookie

// -----------------------------------------------------------
// Detecta los articulos con recorte habilitado en la pagina web (rescatandolos de una cookie) y
// crea un arreglo con ellos. Ademas, actualiza la visibilidad del iconito.
function crea_recTodosArray() {
  recTodos = new Array();

  var losdivs = NS4 ? document.layers["bodyNode"].document.forms[0].elements : document.getElementsByTagName("DIV");
  // alert('losdivs ' + losdivs.length);
  var alt = '';
  var id = '';
  for (i=0; i < losdivs.length; i++) {
    if (losdivs[i].id.indexOf("rec") > -1) {
      if (NS4) {
        // alert('losdivs[i] ' + losdivs[i] + ' ---- losdivs[i].value.indexOf("rec") ' + losdivs[i].value.indexOf("rec"));
        if (losdivs[i].value.indexOf("rec") > -1) {
          id = losdivs[i].value;
          eval('var check = document.bodyNode.document.forms[0].Chk_' + id);
          check.checked = false;
          // alert('id ' + id + ' ' + check.value + ' ' + check.checked);
          // Busca el recorte entre los leidos. Si esta, lo invisibiliza.
          for (j=0; j < recEscogidos.length; j++) {
            if (id == recEscogidos[j]) {
              check.checked = true;
              break;
            };
          };
        };
      }
      else {
        if (losdivs[i].id.indexOf("rec") > -1) {
          id = losdivs[i].id;
          eval('var irec = document.getElementsByName("i' + id + '")[0]');

          irec.src = "/clasificados/recortes/marca_of.gif";

          // Busca el recorte entre los leidos. Si esta, lo invisibiliza.
          for (j=0; j < recEscogidos.length; j++) {
            if (id == recEscogidos[j]) {
              irec.src = "/clasificados/recortes/marca_on.gif";
              break;
            };
          };
        };
      };

      recTodos[recTodos.length] = id;
      losdivs[i].onclick = addRecorte;
    };
  };
}; // crea_recTodosArray.

// -----------------------------------------------------------
// Este evento es gatillado cuando un recorte es clickeado.
function addRecorte() {
  // nuevoRecorte = NS4 ? document.layers["bodyNode"].document.layers[newRecorte] : this.id;
  // nuevoRecorte = NS4 ? this.value : this.id;
  nuevoRecorte = this.value;


  if (nuevoRecorte != '') {
    nuevoRecorte = this.id;
  };

  if ((nuevoRecorte == 'content') || (nuevoRecorte == 'main') || (nuevoRecorte == '')) {
    return false;
  };

  // alert('newRecorte [' + nuevoRecorte + '] [' + this.value + '] [' + this.id + ']');
  duplicate = false;
  var pos = 0;
  for (var i=0; i < recTodos.length; i++) { // Encuentra la posicion del recortes seleccionado dentro del arreglo recTodos.
    if (nuevoRecorte == recTodos[i]) {pos = i; i = recTodos.length};
  };

  if (recEscogidos.length > 0) chequea_recortesDuplicados(); // Verifica que el recorte no fue seleccionado anteriormente.

  if (!duplicate) { // Habilita aviso seleccionado.
    chequeo_aceptaCookies(); // Chequea si el browser acepta cookies.
    if (cookiesOn) {
      // Crea nuevo objeto recorte y lo agrega a un arreglo.
      recEscogidos[recEscogidos.length] = nuevoRecorte;

      recorteInstancia_Visibility(nuevoRecorte,'on'); // Encuentra todas las instancias del recorte en la pagina y los deja on.

      // Obtiene la posicion inicial del recorte para encontrar la posicion del mouse.
      x0 = mouseX;
      y0 = mouseY;

      // Entrega la posicion donde se encuentra el boton en el div de la barra.
      // obj = NS4 ? frameContClasif.document.BarraCont : frameContClasif.document.getElementById("BarraCont").style;

      x1 = 500;
      y1 = 0; // parseInt(obj.top);

      // if (document.all) event.cancelBubble = true;
      actualiza_contadorRecortes();
      graba_cookieRecortes();

      if (! NS4) {
        // Deja con valores iniciales las variables que se usan para el movimiento de la imagen marca.
        x = x0; y = y0; dx = (x0 - x1) / tot_iteracion; dy = (y1 - y0) / tot_iteracion; iteracion = 0;
        marcaTimer = setInterval("moverMarca()",tot_iteracion); // Mueve imagen aviso marcado.
      };
    };
  }
  else { // Deshabilita aviso seleccionado.
    chequeo_aceptaCookies(); // Chequea si el browser acepta cookies.
    if (cookiesOn) {
      recorteInstancia_Visibility(nuevoRecorte,'of'); // Encuentra todas las instancias del recorte en la pagina y los deja of.

      // Obtiene la posicion inicial del recorte para encontrar la posicion del mouse.
      x0 = mouseX;
      y0 = mouseY;

      // Entrega la posicion donde se encuentra el boton en el div de la barra.
      // obj = NS4 ? frameContClasif.document.BarraCont : frameContClasif.document.getElementById("BarraCont").style;

      x1 = 500;
      y1 = 0; // parseInt(obj.top);

      // if (document.all) event.cancelBubble = true;
      actualiza_contadorRecortes();
      graba_cookieRecortes();

      Limpia_recEscogidos(nuevoRecorte);
      /*
      if (! NS4) {
        // Deja con valores iniciales las variables que se usan para el movimiento de la imagen marca.
        x = x0; y = y0; dx = (x0 - x1) / tot_iteracion; dy = (y1 - y0) / tot_iteracion; iteracion = 0;
        marcaTimer = setInterval("moverMarca()",tot_iteracion); // Mueve imagen aviso marcado.
      };
      */
    };
  };
}; // addRecorte.

// -----------------------------------------------------------
// Hace volar la marca hacia la barra donde esta el menu. Solo IE5+ y NS6+.
function moverMarca() {
  var marca = NS4 ? document.layers["bodyNode"].document.layers["marca"] : document.getElementById("marca").style;
  if (iteracion < tot_iteracion) {
    x = x0 - iteracion * dx;
    y = y0 + iteracion * dy;

    marca.left  = x;
    marca.top  = y;
  //  alert(iteracion + marca.left + ' ' + marca.top);

    marca.visibility = NS4 ? "show" : "visible";
    // alert(marca + ' ' + marca.visibility);
    iteracion++;
  }else{
    marca.visibility = NS4 ? "hide" : "hidden";
    clearInterval(marcaTimer);
  };
}; // moverMarca.

// -----------------------------------------------------------
// Graba los recortes en una cookie.
function graba_cookieRecortes() {
  tempCookie = "avisos=";
  frameLeftClasif.document.cookie = tempCookie+"; path=/; expires="+expire;
  for(i=0; i < recEscogidos.length; i++) {
    tempCookie=tempCookie+"|" + recEscogidos[i];
  };

  var expire = new Date ();
  var dia = expire.getDate();
  var mes = expire.getMonth();
  var ano = expire.getYear();
  if (ano < 2000) { ano += 1900; };

  var aux = 'January,February,March,April,May,June,July,August,September,October,November,December';
  var meses = aux.split(',');

  var expire = new Date(meses[mes] + ' ' + dia + ', ' + ano + ' 23:59:59');
  expire.setTime (expire.getTime() + 1); // Expira en 6 dias.
  expire = expire.toGMTString();

  finalCookie = tempCookie+"; path=/; expires="+expire;
  frameLeftClasif.document.cookie = finalCookie;
  // alert(tempCookie);
  frameLeftClasif.document.forms[0].selecc.value = tempCookie;
}; // graba_cookieRecortes.

// -----------------------------------------------------------
// Chequea que el browser del usuario acepte cookies.
function chequeo_aceptaCookies() {
  tempCookie = "avisos=";

  for(i=0; i < recEscogidos.length; i++) {
    tempCookie=tempCookie+"|" + recEscogidos[i];
  };

  var expire = new Date ();
  var dia = expire.getDate();
  var mes = expire.getMonth();
  var ano = expire.getYear();
  if (ano < 2000) { ano += 1900; };

  var aux = 'January,February,March,April,May,June,July,August,September,October,November,December';
  var meses = aux.split(',');

  var expire = new Date(meses[mes] + ' ' + dia + ', ' + ano + ' 23:59:59');
  expire.setTime (expire.getTime() + 1); // Expira en 6 dias.
  expire = expire.toGMTString();

  finalCookie = tempCookie+"; path=/; expires="+expire;
  frameLeftClasif.document.cookie = finalCookie;
  buffer_cookie = frameLeftClasif.document.cookie.split(";");

  for (x=0; x < buffer_cookie.length; x++) {
    if (buffer_cookie[x].indexOf("avisos") >= 0) {cookiesOn = true;};
  }
  if (! cookiesOn) alert("Necesitará habilitar grabación de cookies para usar Recortes.");
}; // chequeo_aceptaCookies.

// -----------------------------------------------------------
// Elimina los recortes que ya han sido leidos.
function Limpia_recEscogidos(id) {
  tempRecortes = new Array();
  x = 0;
  for (i=0; i < recEscogidos.length; i++) {
    if (recEscogidos[i] != id) {tempRecortes[x] = recEscogidos[i]; x++};
  };
  recEscogidos = tempRecortes;

  setRecortesVisibility();
  actualiza_contadorRecortes();
  graba_cookieRecortes();
}; // Limpia_recEscogidos.

// -----------------------------------------------------------
// Elimina todos los recortes que selecciono el usuario en la portada.
function Limpia_recTodos() {
  recEscogidos = new Array();

  setRecortesVisibility();
  actualiza_contadorRecortes();
  graba_cookieRecortes();
}; // Limpia_recTodos.


// -----------------------------------------------------------
// Determina si un nuevo recorte ya existe.
function chequea_recortesDuplicados() {
  for (i=0; i < recEscogidos.length; i++) {
    if (nuevoRecorte == recEscogidos[i]) {i = recEscogidos.length; duplicate = true;};
  };
}; // chequea_recortesDuplicados

// -----------------------------------------------------------
// Crea el codigo html para las marcas que vuelan cuando se hace click en un icono de recorte.
function creaRecorteMarca() {
  for (x=0; x < 4; x++) {
    if (NS4) {
      if (document.recorteMarca == null) {
        recorteMarca = new Image();
        recorteMarca.src = "/clasificados/recortes/marcaFantasma.gif";
        recorteMarca.css = "recorteMarca";
        recorteMarca.id = "recorteMarca"+x;
        parentObj = document.layers["bodyNode"];
        parentObj.document = recorteMarca;
      };
    }
    else {
      if (document.getElementById("recorteMarca") == null) {
        recorteMarca = document.createElement("img");
        recorteMarca.src = "/clasificados/recortes/marcaFantasma.gif";
        recorteMarca.setAttribute(classFix,"recorteMarca");
        recorteMarca.setAttribute("id","recorteMarca"+x);
        parentObj = document.getElementById("bodyNode");
        parentObj.appendChild(recorteMarca);
      };
    };
  };
}; // creaRecorteMarca.

// -----------------------------------------------------------
// Detecta los avisos en la pagina web y crea un arreglo con ellos.
var recortesDivArray = new Array();
function crea_arreglo_pagRecortes() {
  if (NS4) {
    d = document.layers["bodyNode"].document.forms[0].elements;

    for (j=0; j < d.length; j++) if (d[j].value.indexOf("rec") > -1) {
      recortesDivArray[recortesDivArray.length] = d[j].value;
    };
  }
  else {
    d = document.getElementsByTagName("DIV");
    for (j=0; j < d.length; j++) if (d[j].id.indexOf("rec") > -1) {
      recortesDivArray[recortesDivArray.length] = d[j];
    };
  };
}; // crea_arreglo_pagRecortes.

// -----------------------------------------------------------
// Setea la visibilidad de una instancia de los iconos de recortes en la pagina.
function recorteInstancia_Visibility(id, onoff) {
  // alert('[' + id + '] [' + onoff + ']');
  if ( (id != '') && (! NS4) ) {
    t = NS4 ? document.layers["bodyNode"].document.forms[0].elements : document.getElementsByName(id);
    // alert(t.length + '++++' + id + '++++' + onoff);
    if (t.length > 0) {
      for (j=0; j < t.length; j++) {
        if (NS4) {
          // alert('t[j].value ' + t[j].value + ' id=' + id);

          if ((t[j].value == id) && (t[j].id != 'main') && (t[j].id != 'content') && (t[j].id != '')) {
            eval('var check = document.bodyNode.document.forms[0].Chk_' + id);
            // alert(check.checked);
            if (onoff == 'on') {
              check.checked = true;
            }
            else {
              check.checked = false;
            };

            t[j].onclick = addRecorte;
          };
        }
        else {
          if ((t[j].id == id) && (t[j].id != 'main') && (t[j].id != 'content') && (t[j].id != '')) {
            eval('var imagen = document.getElementsByName("i' + t[j].id + '")[0]');
            imagen.src = "/clasificados/recortes/marca_" + onoff + ".gif";


            if (onoff == 'on') {
              imagen.alt = tit_of;
            }
            else {
              imagen.alt = tit_on;
            };

            t[j].onclick = addRecorte;
          };
        };
      };
    }
    else {
      // OJO: IE5mac y NS6 no retornan el largo de la coleccion de object.
      d = recortesDivArray;

  		for (j=0; j < d.length; j++) {
  		  if (NS4) {
    			if (d[j].value == id) {
    			  // alert('d[j].value ' + d[j].value);
            eval('var check = document.bodyNode.document.forms[0].Chk_' + id);
            // alert(check.checked);
            if (onoff == 'on') {
              check.checked = true;
            }
            else {
              check.checked = false;
            };

            d[j].onclick = addRecorte;
          };
        }
        else {
          if ((d[j].id == id) && (d[j].id != 'main') && (d[j].id != 'content') && (d[j].id != '')) {
            eval('var imagen = document.getElementsByName("i' + d[j].id + '")[0]');
            imagen.src = "/clasificados/recortes/marca_" + onoff + ".gif";

    			  if (onoff == 'on') {
              imagen.alt = tit_of;
            }
            else {
              imagen.alt = tit_on;
            };

    			  d[j].onclick = addRecorte;
    			};
  			};
  		};
    };
  };
}; // recorteInstancia_Visibility.

// -----------------------------------------------------------
// Setea la visibilidad y los eventos de los iconos de recortes en la pagina.
function setRecortesVisibility() {
  for (i=0; i < recTodos.length; i++) {
    vis = "of";
    // Si el recorte esta seleccionado, lo marca como invisible.
    for (x=0; x < recEscogidos.length; x++) {
      // alert('recTodos[i]=' + recTodos[i] + ' recEscogidos[x]=' + recEscogidos[x]);
      if (recTodos[i] == recEscogidos[x]) vis = "on";
    };
    obj = recTodos[i];
// alert('viene de aqui [' + recTodos.length + '] [' + recEscogidos.length + '] [' + recTodos[i] + '] [' + i + ']');
    if (obj != '') {
      recorteInstancia_Visibility(obj,vis);
    };
  };
}; // setRecortesVisibility.

// -----------------------------------------------------------
// Actualiza el contador de recortes. Cuenta el numero de recortes no leidos que tiene seleccionado
// el usuario.
function actualiza_contadorRecortes() {
  t2 = 0;
  t1 = 0;
  if (recEscogidos != null) {
    total = recEscogidos.length;
    t2 = total;
    if (total > 9) {
      total = total + ""; // Cambia la variable numerica a alfanumerica.
      t1 = total.substring(0,1);
      t2 = total.substring(1,2);
    };
  };

  // alert('cln0 ' + frameLeftClasif.document.layers[0].document.images[0].name + ' cln1 ' + frameLeftClasif.document.layers[1].document.images[0].name);
  var contador0 = NS4 ? frameLeftClasif.document.layers[0].document.images[0] : frameLeftClasif.document.getElementById("cln0");
  var contador1 = NS4 ? frameLeftClasif.document.layers[1].document.images[0] : frameLeftClasif.document.getElementById("cln1");

  contador0.src = '/imag2004/clfdos/' + t1 + '_left.gif';
  contador1.src = '/imag2004/clfdos/' + t2 + '_right.gif';


  t2 = 0;
  t1 = 0;
  if (recorteActual != null) {
    total = recorteActual;
    t2 = total;
    if (total > 9) {
      total = total + ""; // Cambia la variable numerica a alfanumerica.
      t1 = total.substring(0,1);
      t2 = total.substring(1,2);
    };
  };
}; // actualiza_contadorRecortes.

// -----------------------------------------------------------
function cambia_color_img(nom_layer) {
//  if (NS4) {
//    if (eval('document.bodyNode.document.layers.' + nom_layer + '.document["i' + nom_layer + '"].src.indexOf("marca_on") > -1')) {
//      // alert('entro on');
//
//      ima_on('i' + nom_layer, '../clasificados/recortes', 'marca');
//    }
//    else if (eval('document.bodyNode.document.' + nom_layer + '.document["i' + nom_layer + '"].src.indexOf("marca_of") > -1')) {
//      // alert('entro of');
//      ima_of('i' + nom_layer, '../clasificados/recortes', 'marca');
//
//    };
//  };
}; // cambia_color.

// -----------------------------------------------------------
// Inicializa las variables yobjetos relacionados con los recortes.
var cookiesOn = false;

// -----------------------------------------------------------
function inicio_Recortes() {

  getRecortesFromCookie();

  crea_recTodosArray();


  crea_arreglo_pagRecortes();

  if (! NS4) creaRecorteMarca();

  setRecortesVisibility();

  actualiza_contadorRecortes();


}; // inicio_Recortes.

// -----------------------------------------------------------
function css_recortes() {
  /* RECORTES */
  document.write('<style type="text/css">');
  document.write('#bodyNode {position: absolute; top: 0px; scroll: true}');
  if (NS4) {
    document.write('.r { valign:top; position:relative; top:0px;}');
  }
  else {
    document.write('.r { cursor:hand; float:right; clear:right; valign:top}');
  };

  document.write('.click {cursor: hand;}');
  document.write('.stylemarca { position:absolute; width:16px; height:14px; z-index:1; left: 0px; top: 0px; visibility:hidden;}');
  document.write('                                                                                                                                                                                         ');
  document.write('.recNumCol {position:relative; height:21px; width:16px; z-index:101; top:2px;}');
  document.write('                                                                                                                                                                                         ');
  // document.write('#cln0 {position:absolute; left: 0px; top:0px; z-index:101;}'); // se desarma el diseno // ych
  // document.write('#cln1 {position:absolute; left: 0px; top:0px; z-index:101;}');
  document.write('                                                                                                                                                                                         ');
  document.write('.recorteMarca {position:absolute; top:0px; left:0px; visibility:hidden}');
  document.write('                                                                                                                                                                                         ');
  document.write('</style>');
}; // css_recortes.

