/* --------------------------------------------------------------------------------------------------------------
 Compañia       : CSM S. A.
 Desarrollo     : Artifex Software S. A.
 Object         : openzoom.js
 Propósito      : Realiza el cague dinámico de imágenes para que manejen un Popup con
                         zoom, tomando en cuenta únicamente aquellas que tienen en el atributo "rel" 
                         el valor "openzoom".
                         - Unicamente maneja imágenes con extensiones JPG y PNG
                         - Se debe relacionar en el link la imagen pequeña
                         - En la misma ruta debe existir la imagen grande con el mismo nombre de la
                           imagen pequeña adicionando un sufijo "_big"
                         - Realiza la validación que las imágenes existan
                         - El título de la página lo toma del valor del input con id="NomCatalogo" 
                         - El Pié de página lo toma del valor del input con id="PiePagina" 
                         - El nombre del marco en el zoom lo toma del nombre de la imagen
                         - El tamaño de la ventana cambia dinámicamente de acuerdo a la imagen pequeña
 ----------- --- -------------------------------------------------------------
 FECHA D/M/A INI                        DESCRIPCION          
 ----------- --- -------------------------------------------------------------          
 10-Nov-2007 CGR  Camilo Gonzalez Rico - Artifex
                  Código Inicial

    -------------------------------------------------------------------------------------------------------------- */
var secondWindow = false;

/*
Realiza la creación y apertura de la ventana de zoom.
Parametro:  Entrada : cImage = Url de la imagen pequeña
*/
function ZoomPage(cImage) {
  
  var navie = false;
  var adicborder = 0;
  
  if (navigator.appName=="Microsoft Internet Explorer") {navie=true; adicborder=2;}
  
  /* Se valida que la imágen pequeña exista */
  if (!testImage(cImage)){
    alert("La Imagen '"+cImage+"' no-existe");
    return;
  }
  
  /* Se verifica que solamente permanezca una ventana de zoom abierta */
  if (secondWindow) {
    if(Window02.closed) secondWindow = false;
    else{
      Window02.close(); 
      secondWindow = false;    
    }
  }
  
  /* Se determina la extensión de las imágenes, solamente JPG Y PNG */
  var imageaux = cImage.toUpperCase();
  var textposition = imageaux.indexOf(".JPG");
  var tipoextension = ".JPG";
  if (textposition<=0) {
    textposition = imageaux.indexOf(".PNG");
    tipoextension = ".PNG";
  }  
  if (textposition<=0) {
    alert("Solamente se permiten imágenes con extensión JPG ó PNG");
    return;
  }
  
  /* Se verifica si existe la imagen grande */
  var imagebig = cImage.substring(0,textposition) + '_big' + cImage.substring(textposition);
  if (!testImage(imagebig)){
    alert("La Imagen '"+imagebig+"' no-existe");
    return;
  }
  
  /* Se hallan las dimensiones de la imagen pequeña */
  var ImgHeight=0;
  var ImgWidth=0;
  
  var ImgSmall=new Image();
  ImgSmall.onload = function() { ImgWidth=this.width; ImgHeight=this.height; };
  ImgSmall.src=cImage;
    
  /* Se determina el titulo del frame que contiene el zoom a partir del nombre de la imagen pequeña */
  textposition=cImage.lastIndexOf("/")+1;
  var ImgTitle=cImage.substring(textposition);
  imageaux=ImgTitle.toUpperCase();
  textposition=imageaux.indexOf(tipoextension);
  ImgTitle=imageaux.substring(0,textposition);
  
  /* Se verifica que no haya ventana abierta */
  if(secondWindow == false) { 

    textposition=document.location.href.lastIndexOf("/")+1;
    ActUrl=document.location.href.substring(0,textposition);

  
    /* Se crean los parametros de la ventana */
    var theWindow = 'width='+(ImgWidth+ImgWidth-42)+',height='+(ImgHeight+60)+',menubar=no,toolbar=no,location=no,personalbar=no,status=no,scrollbars=no,directories=no,'+
                    'resizable=no,dependent=yes,closable=no,centerscreen';
                    
    Window02 = window.open('','wind',theWindow);
    Window02.document.open();
    var thedocument = '<html>\n<head>\n<script>window.onunload=function(){window.close();} <\/script>\n<title>'+document.getElementById("NomCatalogo").value+'</title>\n'+
                      '<script src="'+ActUrl+'js/jquery-1.3.2.min.js" type="text/javascript"></script>\n'+
                      '<script src="'+ActUrl+'js/jqzoom.pack.1.0.1.js" type="text/javascript"></script>\n'+
                      '<script src="'+ActUrl+'js/jquery.jqzoom1.0.1.js" type="text/javascript"></script>\n'+
                      '<script type="text/javascript">\n'+
                      '$(function() {\n'+
                      '  var options2 =\n'+
                      '            {\n'+
                      '  zoomWidth: '+(ImgHeight+adicborder)+',\n'+
                      '  zoomHeight: '+(ImgHeight+adicborder)+',\n'+
                      '  zoomType:\'reverse\' \n'+
                      '  }\n'+
                      '  $(".jqzoom").jqzoom(options2);\n'+
                      '}); \n'+
                      'window.onload = function() { \n'+
                      ' imgcont = document.getElementsByTagName("img");\n'+
                      ' var w=0; var h=0;\n'+
                      '    for (i = 0; i < imgcont.length; i++) {\n'+
                      '     w=imgcont[i].width;\n'+
                      '     h=imgcont[i].height;\n'+
                      '    }\n'+
                      ' w=w+w-35;\n'+
                      ' h=h+150;\n'+
                      ' window.resizeTo(w,h);\n'+
                      '} \n'+ 
                      '</script>\n'+
                      '<link rel="stylesheet" href="'+ActUrl+'css/jqzoom.css" type="text/css" >\n'+
                      ' </head>\n'+
                      '<body bgColor=#EAF2FF >\n'+
                      '<div id="content" style="margin-top:10px;margin-left:5px;">\n'+
                      '<a href="'+imagebig+'" class="jqzoom" title="'+ImgTitle+'">\n'+
                      '    <img src="'+cImage+'"  title="'+ImgTitle+'" style="border: 1px solid #666;"'+
                      ' width="'+ImgWidth+'" height="'+ImgHeight+'" ></a>\n'+
                      '<br>\n'+
                      '<div class="style">\n'+
                      '  <small>'+document.getElementById("PiePagina").value+'</small></div>\n'+
                      '</div>\n'+
                      '</body>\n</html>\n';
      
    Window02.document.write(thedocument);
  Window02.document.close();
  }
  secondWindow = true;

} /* ZoomPage */
          
/* Luego de cargar la página se ordena el cambio de link */          
window.onload = function() {
  CambiaLink();
}

/* Se recorre el documento y se cambian los link cuyo valor de rel sea  openzoom*/
function CambiaLink() {
  
 numcont = document.links;
 
  for (i = 0; i < numcont.length; i++) {
     if(numcont[i].getAttribute("rel") == "openzoom") {
       numcont[i].href='javascript:ZoomPage(\"'+numcont[i].href+'\")\;';
     }
  }
 
}

/* Realiza el test para verificar que la imagen exista
    Parametros : Entrada : URL= Ruta en la que se encuentra la imagen */          
function testImage(URL) {
  var retorno=true;
  var tester=new Image();
  tester.onerror=function() { retorno=false;};
  tester.src=URL;
  return retorno;
}  
