/*
 * Este documento se encarga de gestionar toda la funcionalidad en la cul se
 * muestran imgenes en motion-jpg con motor javascript
 * 
 * @author Jorge Lpez Leonardi
 * @author <a href="mailto:jorge.lopez@suprabt.com">jorge.lopez@suprabt.com</a>
 * @version 2.0,  &nbsp; 23-ABR-2009
 */

/*
 * Bandera para definir que tipo de explroador se est utilizando para 
 * realizar el pedido ajax
 */
var isIE = false;

/*
 * Pedido global y objetos XML document 
 */
var req;

/*
 * Variable que gestiona el mapa de GoogleMaps
 */
var map = null;

/*
 * Contiene el valor de la vista previa (thumbnail) que se encuentra abierto 
 */
var currentThumb = "nulo";

/*
 * Contiene el valor de la vista previa (thumbnail) que se encuentra abierto 
 * en la pantalla detalle.
 */
var currentThumbDetail = "nulo";

/*
 * Contiene el valor en milisegundos (ms) de cada cuanto se refrescan
 * las imgenes de las cmaras
 */
var refreshMilisecs = 3000;

/*
 * Variable de tipo timer para refrescar la imgen de la vista previa 
 * (thumbnail) 
 */
var thumbTimer;

/*
 * Variable de tipo timer para refrescar la imgen grande detalle en la 
 * pantalla detalle 
 */
var detailTimer;

/*
 * Variable de tipo timer para refrescar la imgen de la vista previa 
 * (thumbnail) en la pantalla detalle 
 */
var thumbDetailTimer;

/*
 * variable arreglo para guardar los puntos cercanos de cada punto
 */
var arr_near= new Array();

/*
 * variable para guardar los nombres para cada identificador del punto
 */
var arr_labels= new Array();

/*
 * variable para guardar los identificadores de las zonas para cada 
 * identificador del punto
 */
var arr_zonas= new Array();

/*
 * variable para guardar los identificadores de las vistas iniciales para cada 
 * identificador del punto
 */
var arr_vista1 = new Array();

/*
 * variable para guardar los identificadores de las vistas secundarias para cada 
 * identificador del punto
 */
var arr_vista2 = new Array();

/*
 * variable para guardar los identificadores de las vistas actuales para cada 
 * identificador del punto
 */
var arr_vistaCurr = new Array();

/*
 * variable para guardar los identificadores de las vistas iniciales para cada 
 * identificador del punto
 */
var arr_vistaNom1 = new Array();

/*
 * variable para guardar los identificadores de las vistas secundarias para cada 
 * identificador del punto
 */
var arr_vistaNom2 = new Array();

/*
 * variable para guardar los identificadores de las vistas actuales para cada 
 * identificador del punto
 */
var arr_vistaNomCurr = new Array();

/*
 * variable para guardar los identificadores de las vistas iniciales para cada 
 * identificador del punto
 */
var arr_vistaUrl1 = new Array();

/*
 * variable para guardar los identificadores de las vistas secundarias para cada 
 * identificador del punto
 */
var arr_vistaUrl2 = new Array();

/*
 * variable para guardar los identificadores de las vistas actuales para cada 
 * identificador del punto
 */
var arr_vistaUrlCurr = new Array();

/*
 * variable para guardar las direcciones iniciales de cada punto para cada 
 * identificador del mismo
 */
var arr_dirs1= new Array();

/*
 * variable para guardar las direcciones secundarias de cada punto para cada 
 * identificador del mismo
 */
var arr_dirs2= new Array();

/*
 * variable para guardar las direcciones actuales de cada punto para cada 
 * identificador del mismo
 */
var arr_dirsCurr= new Array();

/*
 * variable que inicializa el acorden de vistas miniaturas a la derecha en
 * la pantalla detalle
 */
var acordeon ;

/*
 * Funcin que carga toda la funcionalidad de javascript,
 * si soporta googleMaps, etonces carga los datos desde el
 * archivo XML y las funciones asociadas a cada uno de los 
 * puntos de inters
 */
function loadMap(){
    if (GBrowserIsCompatible()) {
        //crea map
        map = new GMap2(document.getElementById("mapagoogle"));
        map.setCenter(new GLatLng(10.470088052967242, -66.87183955078125), 13);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setMapType(G_HYBRID_MAP);
        //map.enableScrollWheelZoom();
        //cargar xml e implementar puntos de inters
        loadXMLDoc("./include/camaras.xml");
    }
}

/*
 * pedido XML document (funcin genrica reutilizable);
 * parametro es el URL al archivo .xml,
 * el cual el Content-Type es un XML vlido,
 * como text/xml
 */
function loadXMLDoc(url) {
    // funciones del objeto XMLHttpRequest
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
        req.send(null);
    // IE/Windows ActiveX 
    } else if (window.ActiveXObject) {
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}
 
/*
 * gestiona el evento onreadystatechange del objeto req
 */
function processReqChange() {
    // only if req shows "loaded"
	if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            buildZones();
         } else {
            alert("Error cargando datos:\n"+req.statusText+req.status);
         }
    }	
}

/*
 * pasa los datos desde el archivo XML a Google maps 
 */
function buildZones() {
    ///crea icono del punto de inters
    var img = new Image();
    var url_logo = "./images/punto_trafico.gif";
    img.src = url_logo;
    var icon = new GIcon();
    icon.image = url_logo;
    icon.iconSize = new GSize(17, 16);
    icon.shadowSize = new GSize(17, 16);
    icon.iconAnchor = new GPoint(0, 0);
    icon.infoWindowAnchor = new GPoint(0, 0);
    
    //busca las zonas
    var Zonas = req.responseXML.getElementsByTagName("zonas");
    var zona = Zonas[0].getElementsByTagName("zona");
    // ciclo a travs de las zonas para sacar los puntos
    for (var i = 0; i < zona.length; i++) {        
        //arreglo que guarda cules puntos son aledaos a cierto punto
        var puntosCercanos = zona[i].getElementsByTagName("cercanos");
        var id_zona = getElementTextNS("", "id-zona",zona[i],0);
        var idPuntosCercanos = puntosCercanos[0].getElementsByTagName("id-cercano");        
        
        var filas_html='';
        for (var k = 0; k < idPuntosCercanos.length; k++) {
            var id_pto_cer=getElementTextNS("", "id-cercano", puntosCercanos[0], k);
            filas_html+=' '+id_pto_cer.toString();
        }
        arr_near[id_zona]=filas_html;
        ////////aqui saco los puntos de inters para la zona en especfico
        var puntos = zona[i].getElementsByTagName("puntos");
        //saco cad auno de los puntos
        puntos=puntos[0].getElementsByTagName("punto");
        //recorro todos los puntos de la zona
        for (var j = 0; j < puntos.length; j++) {        
            var lat_pto=getElementTextNS("", "latitud", puntos[j], 0);
            var lon_pto=getElementTextNS("", "longitud", puntos[j], 0);
            var nom_pto=getElementTextNS("", "nombre", puntos[j], 0);
            var id_pto=getElementTextNS("", "id-punto", puntos[j], 0);
            
            nom_pto=toCapital(nom_pto);
            var markerOptions = { icon: icon, title: nom_pto};
            ///inicializo el arreglo arr_labels[id-punto]=nombre
            arr_labels[id_pto]=nom_pto;
            
            ///inicializo el arreglo arr_zonas[id-punto]=id_zona
            arr_zonas[id_pto]=id_zona;
            
            /////getElementTextNS(prefix, local, parentElem, index)
            var vistas=puntos[j].getElementsByTagName("vistas");
            vistas=vistas[0].getElementsByTagName("vista");
            
            ///inicializo los arreglos arr_vista[id-punto]=Vista 1
            ///Nombre 1 y URL 1
            arr_vista1[id_pto]=getElementTextNS("", "id", vistas[0], 0);
            arr_vistaNom1[id_pto]=getElementTextNS("", "nombre-vista", vistas[0], 0);
            arr_vistaUrl1[id_pto]=getElementTextNS("", "url-imagen", vistas[0], 0);
            arr_dirs1[id_pto]=getElementTextNS("", "direccion", vistas[0], 0);
            
            ///inicializo los arreglos arr_vista[id-punto]=Vista actual
            ///Nombre actual y URL actual
            arr_vistaCurr[id_pto]=arr_vista1[id_pto];
            arr_vistaNomCurr[id_pto]=arr_vistaNom1[id_pto];
            arr_vistaUrlCurr[id_pto]=arr_vistaUrl1[id_pto];
            arr_dirsCurr[id_pto]=arr_dirs1[id_pto];
            
            ///inicializo los arreglos arr_vista[id-punto]=Vista 2
            ///Nombre 2 y URL 2
            arr_vista2[id_pto]=getElementTextNS("", "id", vistas[1], 0);
            arr_vistaNom2[id_pto]=getElementTextNS("", "nombre-vista", vistas[1], 0);
            arr_vistaUrl2[id_pto]=getElementTextNS("", "url-imagen", vistas[1], 0);
            arr_dirs2[id_pto]=getElementTextNS("", "direccion", vistas[1], 0);
            
            //creo el punto de inters y lo agrego al mapa con los datos del xml
            var marker = closures_obj(id_pto,lon_pto, lat_pto,markerOptions);
            map.addOverlay(marker);
        }
    }
    
}

/*
 * La funcin closures_obj es llamada para guardar los valores de las 
 * variables a ser utilizadas por el programa luego de generar las 
 * funciones dinmicamente 
 */
function closures_obj(id_pto,lon_pto,lat_pto,markerOptions) {
    var lonpto = lon_pto;
    var latpto = lat_pto;
    var mopts = markerOptions;
    //creo el punto de inters y lo agrego al mapa con los datos del xml
    var marker = new GMarker(new GPoint(lonpto, latpto), mopts);
    
        var div = document.getElementById("capa_control");
        var identifier = id_pto;
        div.style.display='none';
        div.style.overflow='hidden';
        div.style.height= '165px';
        div.maxh =sh(div);
        div.s=(s==undefined)? 7 : s;
    //agrego funcionalidad al punto de intersscrollTop
    GEvent.addListener(marker, "click", function() {
        getScroll();
        if (identifier == currentThumb) {
            ///VARIABLE PARA ANIMACION DE LOS RECUADROS capa_control
            if (div.style.height == '1px') {
                ex(div);
                loadThumbnail(id_pto);
            } else {
                cl(div);
                currentThumb = "nuladas";
                stopThumbnail();
            }
        } else {
            ///VARIABLE PARA ANIMACION DE LOS RECUADROS capa_control
            if (div.style.height == '1px') {
                ex(div);
            } else {
                ex(div);
            }
            
            loadThumbnail(id_pto);                        
        }
    });
    return marker;
}

/*
 * Extrae texto desde un elemento de un archivo XML
 * 
 */
function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        //gestin de namespaces en IE/Windows
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // gestin de namespaces en Safari/Mozilla
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // el texto a retornar
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}

/*
 * actualiza la imgen del thumbnail cada segundo
 */
function refreshThumbnail() {
    //las siguientes lneas son para crear un parmetro que cambie
    //en cada llamada, as se evita recargar la imgen desde cach
    var HoraAux = new Date();
    var url = arr_vistaUrlCurr[currentThumb]+currentThumb+"_"+arr_vistaCurr[currentThumb];
    url += "/image.jpg?auxiliar=";
    url += HoraAux.getTime().toString(10);
    // se carga la imgen
    document.getElementById('thumbai').src = url;
    // recargar cada segundo (1000 ms)
    thumbTimer = setTimeout("refreshThumbnail()",refreshMilisecs);   
}

/*
 * Detiene el refrescamiento del thumbnail en pantalla
 */
function stopThumbnail() {
    clearTimeout(thumbTimer);
}

/*
 * Carga el nombre del punto actual
 */
 function loadThumbLabel() {
     document.getElementById('labelThumbnail').innerHTML = arr_labels[currentThumb];
 }
 
/*
 * Cierra la ventana
 */
 function closeThumb() {
    var divC = document.getElementById("capa_control");
    cl(divC);
    currentThumb = "nuladas";
    stopThumbnail();
 }
 
 /*
  * Funcion que calcula el desplazamiento de la pgina, si est por encima de 
  * 120 pixels, coloca la pgina de nuevo en el tope para visualizar la imgen 
  * que se est refrescando
  */  
function getScroll() {
    var  scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft 
                || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
    }
    if(scrOfY > 120){
        window.scrollTo(0,0);
    }
}

/*
 * Funcin que carga la lista de puntos cercanos para una zona en especfico
 */ 
function loadThumbNearList(){
    var arr_npuntos = trim(arr_near[arr_zonas[currentThumb]]).split(" ");
    var listaHtml = "";
    var listaHtmlTwo = "";
    var listaHtmlThree = "";
    var top1=17;
    var top2=17;
    var top3=17;
    for (var i=0; i < arr_npuntos.length;i++) {
        //saco cada uno de los nombres
        var lab=arr_labels[arr_npuntos[i]];
        var idpt=arr_npuntos[i];
        if (i>=0 && i<=4) {
            listaHtml+="<div style='position:absolute;top:"+top1+"px;left:0px;'><a href='#' onclick='loadThumbnail("+idpt+")' class='txt_blanco_peq'>";
            listaHtml+=lab;
            listaHtml+="<\/a><\/div>";
            top1+=17;
        }
        if (i>=5 && i<=9) {
            listaHtmlTwo+="<div style='position:absolute;top:"+top2+"px;left:0px;'><a href='#' onclick='loadThumbnail("+idpt+")' class='txt_blanco_peq'>";
            listaHtmlTwo+=lab;
            listaHtmlTwo+="<\/a><\/div>";
            top2+=17;
        }
        if (i>=10) {
            listaHtmlThree+="<div style='position:absolute;top:"+top3+"px;left:0px;'><a href='#' onclick='loadThumbnail("+idpt+")' class='txt_blanco_peq'>";
            listaHtmlThree+=lab;
            listaHtmlThree+="<\/a><\/div>";
            top3+=17;
        }
    }
    var elmLista = document.getElementById("lista_ptos_uno");
    elmLista.innerHTML=listaHtml;
    
    var elmListaTwo = document.getElementById("lista_ptos_dos");
    elmListaTwo.innerHTML=listaHtmlTwo;
    
    var elmListaThree = document.getElementById("lista_ptos_tres");
    elmListaThree.innerHTML=listaHtmlThree;
}
 
 /*
  * funcion que llama la secuencia de funciones para cargar un thumbnail
  */
function loadThumbnail(id_pto){
    currentThumb = id_pto;
    loadThumbLabel();
    loadThumbNearList();
    stopThumbnail();
    refreshThumbnail();
}

/*
 * Funcin que recorta los espacios en blanco a la izquierda
 * de una cadena de caracteres
 */
 function ltrim(s) {
   return s.replace(/^\s+/, "");
}

/*
 * Funcin que recorta los espacios en blanco a la derecha 
 * de una cadena de caracteres
 */
function rtrim(s) {
   return s.replace(/\s+$/, "");
}

/*
 * Funcin que recorta los espacios en blanco a ambos lados 
 * de una cadena de caracteres
 */
function trim(s) {
   return rtrim(ltrim(s));
}

/*
 * Abre la ventana en modo "Modal" del detalle de la imgen
 */
function openModal(){
    ///Pantalla gris
    var elmModalBack = document.getElementById("modalBack");
    elmModalBack.style.height=getSize()+"px";
    elmModalBack.style.display="block";
    ///Contenedor del detalle
    var elmContainerDetail = document.getElementById("containerDetail");
    elmContainerDetail.style.display="block";
    ///Detiene el thumbnail de atrs
    stopThumbnail();
    //Detiene la imagen grande detalle
    stopDetail();
    ///Carga la lista de los puntos cercanos
    loadDetailNearList();
    ///Cargo el nombre del detalle
    loadDetailLabel();
    ///Carga los links de las vistas
    loadViewDetail();
    ///Cargo la direccin del punto
    loadDetailDireccion();
    ///Inicia el listener del acorden
    acordeon = new Accordian('basic-accordian',5,'header_highlight');
    ///Se refresca la imagen detalle
    refreshDetail();
}

/*
 * Funcin que determina el largo del cuerpo de la pgina en el browser
 */
function getSize() {
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth 
                || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth 
                || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    return myHeight;
}


/*
 * actualiza la imgen del detalle cada 2,5 segundos
 */
function refreshDetail() {
    //las siguientes lneas son para crear un parmetro que cambie
    //en cada llamada, as se evita recargar la imgen desde cach
    var HoraAux = new Date();
    var url = arr_vistaUrlCurr[currentThumb]+currentThumb+"_"+arr_vistaCurr[currentThumb];
    url += "/image.jpg?auxiliar=";
    url += HoraAux.getTime().toString(10);
    // se carga la imgen
    document.getElementById('detailImg').src = url;
    //Cargo la hora de la imgen
    muestraReloj();
    detailTimer = setTimeout("refreshDetail()",refreshMilisecs);   
}

/*
 * Detiene el refrescamiento del detalle en pantalla
 */
function stopDetail() {
    clearTimeout(detailTimer);
}

/*
 * Cierra la ventana "Modal"
 */
function closeModal(){
    ///Cierra la venttana gris semi-transparente
    var elmModalBack = document.getElementById("modalBack");
    elmModalBack.style.display="none";
    ///Cierra la ventana con las
    var elmContainerDetail = document.getElementById("containerDetail");
    elmContainerDetail.style.display="none";
    stopDetail();
    stopThumbDetail();
    ///Inicializa el thumbnail en la pantalla anterior
    loadThumbnail(currentThumb);
}

/*
 * Funcin para cargar la lista de puntos cercanos del detalle
 */

 function loadDetailNearList(){
    var arr_npuntos = trim(arr_near[arr_zonas[currentThumb]]).split(" ");
    var listaHtml = '<div id="basic-accordian" style="position:relative;height:100%;width:100%;"><table width="200" cellspacing="0" cellpadding="0" border="0"><tbody><tr bgcolor="#fabf0b"><td height="20" width="10" bgcolor="#55B9F1"><\/td><td height="20" bgcolor="#55B9F1" colspan="2" class="txt_blanco_bold">Otros puntos de tráfico <\/td><\/tr><tr bgcolor="#ffffff"><td colspan="3"><img height="1" width="10" src="images/pixel.gif"/><\/td><\/tr><\/tbody><\/table>';
    for (var i=0; i < arr_npuntos.length;i++) {
        //saco cada uno de los nombres
        var lab=arr_labels[arr_npuntos[i]];
        var idpt=arr_npuntos[i];
        listaHtml+='<div id="'+idpt+'@listDetail-header" class="accordion_headings" ><table width="200" cellspacing="0" cellpadding="0" border="0"><tbody><tr bgcolor="#ffffff"><td colspan="3"><img height="1" width="10" src="images/pixel.gif"/><\/td><\/tr><tr><td height="20" width="12"><\/td><td height="20" width="232">'+lab+'<\/td><td width="58" ><div align="center"><img height="7" width="7" src="images/pixel.gif"/><\/div><\/td><\/tr><\/tbody><\/table><\/div>';
        listaHtml+='<div id="'+idpt+'@listDetail-content"><div class="accordion_child"><table width="200" cellspacing="0" cellpadding="0" border="0"><tbody><tr bgcolor="BBE1FB"><td colspan="3"><img height="6" width="10" src="images/pixel.gif"/><\/td><\/tr> <tr bgcolor="BBE1FB"><td height="20" colspan="3"><div align="center"><img id="img_'+idpt+'" height="120" width="160" src="images/pixel.gif"/><\/div><\/td><\/tr><tr bgcolor="BBE1FB"><td colspan="3"><img height="6" width="10" src="images/pixel.gif"/><\/td><\/tr><tr bgcolor="BBE1FB"><td colspan="3"><table width="200" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="148"><div id="vistas_'+idpt+'" align="right" class="texto_vistas"><em>Vistas: Este |Oeste<\/em><\/div><\/td><td width="32"  valign="top"><div align="right"><em/><img height="28" width="28" src="images/ic_ampliar.png" onclick="loadModal('+idpt+');" style="cursor:pointer;" /><\/div><\/td><td width="20"><\/td><\/tr><\/tbody><\/table><\/td><\/tr><\/tbody><\/table><\/div><\/div>';
    }
    var elmLista = document.getElementById("basic-accordian");
    elmLista.innerHTML=listaHtml;   
 }
 
/*
 * actualiza la imgen del detalle cada segundo
 */
function refreshThumbDetail() {
    //las siguientes lneas son para crear un parmetro que cambie
    //en cada llamada, as se evita recargar la imgen desde cach
    var HoraAux = new Date();
    var url = arr_vistaUrlCurr[currentThumbDetail]+currentThumbDetail+"_"+arr_vistaCurr[currentThumbDetail];
    url += "/image.jpg?auxiliar=";
    url += HoraAux.getTime().toString(10);
    // se carga la imgen
    document.getElementById('img_'+currentThumbDetail).src = url;
    thumbDetailTimer = setTimeout("refreshThumbDetail()",refreshMilisecs);   
}

/*
 * Detiene el refrescamiento del thumbnail en el detalle en pantalla
 */
function stopThumbDetail() {
    clearTimeout(thumbDetailTimer);
}

 /*
  * funcion que llama la secuencia de funciones para cargar un thumbnail
  * en el detalle en pantalla
  */
function loadThumbDetail(id_pto){
    var id_only=id_pto.split("@");
    stopThumbDetail();
    currentThumbDetail = id_only[0];
    refreshThumbDetail();
    loadView();
}

/*
  * funcion que llama la secuencia de funciones para detener un thumbnail
  * en el detalle en pantalla
  */
function unloadThumbDetail(){
    stopThumbDetail();
    currentThumbDetail = "nulada";    
}

/*
 * Inicia todas las funciones para cargar la imgen y datos de la 
 * lista de puntos cercanos
 */
function loadModal(idPto){
    ///detengo el thumbnail actual
    unloadThumbDetail();
    ///detengo la imagen grande
    stopDetail();
    ///cargo la variable actual
    currentThumb = idPto;
    ///Carga la lista de los puntos cercanos
    loadDetailNearList();
    ///Cargo el nombre del detalle
    loadDetailLabel();
    ///Cargo los links de las vistas
    loadViewDetail();
    ///Cargo la direccin del punto
    loadDetailDireccion();
    ///Inicia el listener del acorden
    acordeon = new Accordian('basic-accordian',5,'header_highlight');
    ///Se refresca la imagen detalle
    refreshDetail();
}

/*
 * Carga en el detalle del punto cercano, las vistas de la cmara
 */
function loadView() {
    var elmVistas = document.getElementById("vistas_"+currentThumbDetail);
    var vistaHtml="";
    vistaHtml+='<br/><em>Vistas:';
    if(arr_vistaCurr[currentThumbDetail] == arr_vista1[currentThumbDetail]) {
		if (arr_vistaNom1[currentThumbDetail]!= 'N/A'){
	        vistaHtml+=' <a onclick="loadLinkView('+arr_vistaCurr[currentThumbDetail]+');" style="cursor:pointer;" class="texto_vistas" href="#">'+arr_vistaNomCurr[currentThumbDetail]+'<\/a>';
			vistaHtml+=' <strong>| '+arr_vistaNom2[currentThumbDetail]+'<\/strong>';
		}else{
			vistaHtml+=' <strong>  '+arr_vistaNom2[currentThumbDetail]+'<\/strong>';
		}
	} else {
        vistaHtml+=' <strong>'+arr_vistaNom1[currentThumbDetail]+'<\/strong>';
        vistaHtml+=' | <a onclick="loadLinkView('+arr_vistaCurr[currentThumbDetail]+');" style="cursor:pointer;" class="texto_vistas" href="#">'+arr_vistaNomCurr[currentThumbDetail]+'<\/a><\/strong>';        
    }
    vistaHtml+='<\/em>';    
    elmVistas.innerHTML=vistaHtml;
}

/*
 * Guarda los valores de la vista actual para el punto de trfico seleccionado
 */
function loadLinkView(id_vista){
    ///llenar los current con los nuevos valores
    if(id_vista == arr_vista1[currentThumbDetail]) {
        arr_vistaCurr[currentThumbDetail]=arr_vista2[currentThumbDetail];
        arr_vistaNomCurr[currentThumbDetail]=arr_vistaNom2[currentThumbDetail];
        arr_vistaUrlCurr[currentThumbDetail]=arr_vistaUrl2[currentThumbDetail];
         arr_dirsCurr[currentThumb]=arr_dirs2[currentThumb];
    } else {
        arr_vistaCurr[currentThumbDetail]=arr_vista1[currentThumbDetail];
        arr_vistaNomCurr[currentThumbDetail]=arr_vistaNom1[currentThumbDetail];
        arr_vistaUrlCurr[currentThumbDetail]=arr_vistaUrl1[currentThumbDetail];
         arr_dirsCurr[currentThumb]=arr_dirs1[currentThumb];
    }
    loadView();
}


/*
 * Transformar una cadena en altas y bajas. 
 * Ej: PASEO lAs MeRCedes => Paseo Las Mercedes
 */
 
function toCapital(str_sentence) {
    var arr_sentence=str_sentence.split(' ');
    str_sentence="";
    for (var I=0;I<arr_sentence.length;I++) {
        if (I != 0){
            str_sentence+=" ";
        }
        if(arr_sentence[I]=="II") {
            str_sentence+=arr_sentence[I].toUpperCase();
        } else {
            str_sentence+=arr_sentence[I].charAt(0).toUpperCase()+ arr_sentence[I].slice(1).toLowerCase();
        }        
    }
    return str_sentence;
}

/*
 * Carga el nombre del punto actual
 */
function loadDetailLabel() {
    document.getElementById('labelDetail').innerHTML = arr_labels[currentThumb];
}

/*
 * Carga la direccin del punto actual
 */
function loadDetailDireccion() {
    document.getElementById('labelDireccion').innerHTML = arr_dirsCurr[currentThumb];
}

/*
 * Carla la informacin de las vistas en el recuadro informativo del detalle
 */
function loadViewDetail(){
    var elmVistas = document.getElementById("vistasDetail");
    var vistaHtml="";
    vistaHtml+='<br/><em>Vistas:';
    if(arr_vistaCurr[currentThumb] == arr_vista1[currentThumb]) {
	
		if (arr_vistaNomCurr[currentThumb]!= "N/A"){
			vistaHtml+='  <a onclick="loadLinkViewDetail('+arr_vistaCurr[currentThumb]+');" style="cursor:pointer;" class="texto_vistas_gris" href="#">'+arr_vistaNomCurr[currentThumb]+'<\/a>';
			vistaHtml+=' <strong>| '+arr_vistaNom2[currentThumb]+'<\/strong>';
		}else{
			vistaHtml+=' <strong>  '+arr_vistaNom2[currentThumb]+'<\/strong>';
		}
	} else {
        vistaHtml+=' <strong>  '+arr_vistaNom1[currentThumb]+'<\/strong>';
        vistaHtml+=' | <a onclick="loadLinkViewDetail('+arr_vistaCurr[currentThumbDetail]+');" style="cursor:pointer;" class="texto_vistas_gris" href="#">'+arr_vistaNomCurr[currentThumb]+'<\/a>';        
    }
    vistaHtml+='<\/em>';    
    elmVistas.innerHTML=vistaHtml;
}

/*
 * Selecciono la informacion de la vista actual e inicio la animacin para
 * el detalle de la cmara
 */
function loadLinkViewDetail(id_vista){
    ///llenar los current con los nuevos valores
    if(id_vista == arr_vista1[currentThumb]) {
        arr_vistaCurr[currentThumb]=arr_vista2[currentThumb];
        arr_vistaNomCurr[currentThumb]=arr_vistaNom2[currentThumb];
        arr_vistaUrlCurr[currentThumb]=arr_vistaUrl2[currentThumb];
        arr_dirsCurr[currentThumb]=arr_dirs2[currentThumb];
    } else {
        arr_vistaCurr[currentThumb]=arr_vista1[currentThumb];
        arr_vistaNomCurr[currentThumb]=arr_vistaNom1[currentThumb];
        arr_vistaUrlCurr[currentThumb]=arr_vistaUrl1[currentThumb];
        arr_dirsCurr[currentThumb]=arr_dirs1[currentThumb];
    }
    ///detengo la imagen grande
    stopDetail();
    ///Se refresca la imagen detalle
    refreshDetail();
    ///Cargo los links de las vistas
    loadViewDetail();
    ///Cargo la direccin de la vista
    loadDetailDireccion();
}

/*
 * abre la ventana para imprimir
 */
function friendlyVersion(){
    ventanaHija = window.open('imprimir.html', 'vImprimir','scrollbars=NO,resizable=YES,width=660px, top=0, left=0";');
}

/*
 * Muestra la hora y fecha actual en el formato: hh:mm am/pm, DD Mes AAAA
 */
function muestraReloj(){
     var Digital=new Date();
     var hours=Digital.getHours();
     var minutes=Digital.getMinutes();
     var dn="AM";
     var day=Digital.getUTCDate();
     var month_array=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
     var month=month_array[Digital.getUTCMonth()];
     var year=Digital.getUTCFullYear();
     if (hours>12){
         dn="PM";
         hours=hours-12;
     }
     if (hours==0) {
        hours=12;
     }
     if (minutes<=9) {
        minutes="0"+minutes;
     }
    var hora_txt=hours+":"+minutes+" "+dn+", "+day+" "+month+" "+year;
    document.getElementById("labelHora").innerHTML=hora_txt;
 }
