﻿var map;
var latlng__ = null;
var zoom__ = 5;
var myoptions = null;
var list_objets = [];
var h_mvolador__ = 0;
var msj_ruta_visible__ = false;
var bandera_ruta__ = false;
var aux_msj_ruta = null;
var posicion_encontrada__ = false;
var final_ruta__;
var marker_ruta__ = null;
var opc_ruta__ = google.maps.DirectionsTravelMode.DRIVING;
var bounds__ = new google.maps.LatLngBounds();
var bounds__ruta__ = new google.maps.LatLngBounds();
var sv__ = new google.maps.StreetViewService();
var panorama__;
var seleccion_init__ = false;
//ruta
var rendererOptions = {
    draggable: true,
	suppressMarkers: true
};
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);;
var directionsService = new google.maps.DirectionsService();
//direccion view nos sirve para ver un modulo especifico elegido por el usuario y llevarlo hasta su ubicacion dentro del mapa
var valor_view_marker__ = -1;
var str_view_marker__ = '';


//--
var estados__ = eval("[{id:0, nombre:'Selecciona un estado'},{id:1, nombre:'Aguascalientes'},{id:2, nombre:'Baja California'},{id:3, nombre:'Baja California Sur'},{id:4, nombre:'Campeche'},{id:5, nombre:'Coahuila'},{id:6, nombre:'Colima'},{id:7, nombre:'Chiapas'},{id:8, nombre:'Chihuahua'},{id:9, nombre:'Distrito Federal'},{id:10, nombre:'Durango'},{id:11, nombre:'Guanajuato'},{id:12, nombre:'Guerrero'},{id:13, nombre:'Hidalgo'},{id:14, nombre:'Jalisco'},{id:15, nombre:'México'},{id:16, nombre:'Michoacán'},{id:17, nombre:'Morelos'},{id:18, nombre:'Nayarit'},{id:19, nombre:'Nuevo León'},{id:20, nombre:'Oaxaca'},{id:21, nombre:'Puebla'},{id:22, nombre:'Querétaro'},{id:23, nombre:'Quintana Roo'},{id:24, nombre:'San Luis Potosí'},{id:25, nombre:'Sinaloa'},{id:26, nombre:'Sonora'},{id:27, nombre:'Tabasco'},{id:28, nombre:'Tamaulipas'},{id:29, nombre:'Tlaxcala'},{id:30, nombre:'Veracruz'},{id:31, nombre:'Yucatán'},{id:32, nombre:'Zacatecas'}]");

function fill_combo(valor){
	var _combo = document.getElementById(valor);
	for(var i = 0; i < estados__.length; i++){
		var opt = document.createElement("option");
		opt.text = estados__[i].nombre;
		opt.value = estados__[i].id;
		_combo.options.add(opt);
	}
	_combo.selectedIndex = 0;
}

function get_valor(){
	if(!seleccion_init__){
		if($.browser.msie){
			$('#navigation').stop().animate({'marginLeft':'-2px'},200);
		}else{
			$('#navigation').stop().animate({'marginLeft':'-385px'},1000);
			$('#navigation').hover(
				function () {
					$(this).stop().animate({'marginLeft':'-2px'},200);
				},
				function () {
					$(this).stop().animate({'marginLeft':'-385px'},200);
				}
			);
		}
		seleccion_init__ = true;
	}
	restart_all();
	msj_ruta_visible__ = false;
	var val = $('#estados').val();
	if(val != 0){
		var url = 'consultar_nuiutm?edo=' + val;
		get_ajax(url,1);
	}
}

function get_ajax(_url,opc){
	$.ajax({
		url: _url,
		dataType: "html",
		beforeSend: function(){
			$("#loading").fadeIn("fast");
		},
		success: function(txt){
			$("#loading").fadeOut("fast");
			opc_ajax(opc,txt);
        },
		error: function(txt, info, otro){
			$("#loading").fadeOut("fast");
			alert(txt.data + '\n--\n' + info + '\n--\n' + otro);
		}
	});
}
function opc_ajax(opc,txt){
	switch(opc){
		case 1:{
			put_valores(txt);
			$('#navigationm').stop().animate({'marginLeft':'-2px'},200);
			break;
		}
		case 2:{
			put_valores(txt);
			limpiar_markers();
			if(valor_view_marker__ > -1){
				list_objets[valor_view_marker__].setIcon('/img/_point32_nuiutm.png');
				list_objets[valor_view_marker__].setAnimation(google.maps.Animation.BOUNCE);
				var aux_bounds = new google.maps.LatLngBounds();
				aux_bounds.extend(list_objets[valor_view_marker__].getPosition());
				map.fitBounds(aux_bounds);
				var aux_zoom_ = map.getZoom();
				aux_zoom_ = aux_zoom_ - 3;
				if(aux_zoom_ <= 0){
					aux_zoom_ = 2;
				}
				map.setZoom(aux_zoom_);
			}
			$('#navigationm').stop().animate({'marginLeft':'-2px'},200);
			break;
		}
		default:{
			
			break;
		}
	}
}
function limpiar_markers(){
	if(list_objets.length > 0){
		var i = 0;
		for(i = 0; i < list_objets.length; i++){
			list_objets[i].setIcon('/img/point32_nuiutm.png');
		}
	}
}
function clear_map(){
	clear_infowindow();
	if(list_objets.length > 0){
		var i = 0;
		for(i = 0; i < list_objets.length; i++){
			list_objets[i].setMap(null);
		}
		list_objets.length = 0;
		bounds__ = new google.maps.LatLngBounds();
	}
}
function clear_infowindow(){
	if(list_objets.length > 0){
		var i = 0;
		for(i = 0; i < list_objets.length; i++){
			if(list_objets[i].infowindow){				
				list_objets[i].infowindow.close();
			}
		}
	}
}
function remp(text,val1,val2){//Remplaza el val1 por el val2 en text
	tmp = "" + text;
	while (tmp.indexOf(val1)>-1){
		p = tmp.indexOf(val1);
	    tmp = "" + (tmp.substring(0, p) + val2 + tmp.substring((p + val1.length), tmp.length));
	}
	return tmp;
}
function get_point_coordenadas(coordenada){
	var tmp = coordenada.split(',');
	var val1 = tmp[1];
	var val2 = tmp[0];
	var punto = new google.maps.LatLng(val1,val2);
	return punto;
}
function set_center(p,z){
	map.setCenter(p);
	map.setZoom(z);
}
function put_promo_msj(){
	var html = '<div class="box_margen" style="height:auto;">';
	html += '<img src="img/promo-nuiutm_.jpg" border="0" /><div class="limpiar" style="height:3px;"></div>';
	html += '<div class="limpiar" style="height:5px;"></div>';
	html += '</div>';
	put_message(html,5000);
}
function put_us_msj(){
	var html = '<div class="box_margen" style="height:auto;">';
	html += '<img src="img/_ife.png" border="0" /><div class="limpiar" style="height:3px;"></div>';
	html += '<p class="map_text">Registro Federal de Electores</p>';
	html += '<p class="map_text" style="margin-left:4px;">Dirección de Cartografía Electoral</p><div class="limpiar"></div>';
	html += '<a href="http://www.w3.org/html/logo/"><img src="img/html5-nuiutm.png" height="42" border="0" alt="HTML5 Powered with Device Access, and Semantics" title="HTML5 Powered with Device Access, and Semantics"></a>';
	html += '<div class="limpiar" style="height:3px;"></div>'
	html += '<img src="img/appengine-nuiutm.gif" alt="Powered by Google App Engine" border="0" />';
	html += '<div class="limpiar" style="height:3px;"></div>'
	html += '<p class="map_text" style="margin-left:4px;"><b>SS</b></p><div class="limpiar"></div>';
	html += '<div class="limpiar" style="height:10px;"></div>'
	html += '<div class="limpiar" style="height:5px;"></div>';
	html += '</div>';
	$('#msj_us').hover(
		function () {
			if(!msj_ruta_visible__){
				put_message(html,0);
			}
		},
		function () {
			if(!msj_ruta_visible__){
				hide_message();
			}
		}
	);
}
function put_cita_msj(){
	var html = '<div class="box_margen" style="height:auto;">';
	html += '<b>Citas Programadas</b><div class="limpiar" style="height:5px;"></div>';
	html += '<div style="display:block; width:44px; height:60px; margin:0; padding:0; float:left; background:#FFF url(../img/_cita44_nuiutm.png) no-repeat center center; "></div>';
	html += '<p class="map_text" style="margin-left:4px;"><b>Módulo con servicio de cita programada</b></p>';
	html += '<p class="map_text" style="margin-left:4px;">Si desea programar una cita para tramitar su credencial para votar con fotografía en este módulo llame a IFETEL al teléfono:</p>';
	html += '<div class="limpiar" style="height:3px;"></div>'
	html += '<p class="map_text" style="margin-left:4px; text-align:center;"><b>01 800 433 2000</b></p>';
	html += '</div>';
	$('p.opc-map-cita').hover(
		function () {
			if(!msj_ruta_visible__){
				put_message(html,0);
			}
		},
		function () {
			if(!msj_ruta_visible__){
				hide_message();
			}
		}
	);
}
function put_red_msj(){
	var html = '<div class="box_margen" style="height:auto;">';
	html += '<b>Módulo en RED</b><div class="limpiar" style="height:5px;"></div>';
	html += '<div style="display:block; width:44px; height:60px; margin:0; padding:0; float:left; background:#FFF url(../img/_red44_nuiutm.png) no-repeat center center; "></div>';
	html += '<p class="map_text" style="margin-left:4px;">El tiempo en que podrás recoger tu credencial en este módulo es de siete días hábiles, en trámites de residentes en el extranjero, que no requieran validación adicional.</p>';
	html += '<div class="limpiar" style="height:3px;"></div>'
	html += '</div>';
	$('p.opc-map-red').hover(
		function () {
			if(!msj_ruta_visible__){
				put_message(html,0);
			}
		},
		function () {
			if(!msj_ruta_visible__){
				hide_message();
			}
		}
	);
}
function put_ruta_msj(cl,cor,n){
	bounds__ruta__ = new google.maps.LatLngBounds();
	bounds__ruta__.extend(list_objets[n].getPosition());
	msj_ruta_visible__ = true;
	restart_all();
	put_marker_ruta();
	limpiar_markers();	
	list_objets[n].setIcon('/img/_point32_nuiutm.png');
	var html = '<div class="box_margen" style="height:auto;">';
	html += '<div style="display:block; width:280px; height:20px; margin:0; padding:0;"><div class="exit" onclick="hide_message(); msj_ruta_visible__ = false; restart_all();"></div></div>';
	html += '<b>Ruta a Módulo '+cl.toString()+'</b>';
	html += '<div style="display:block; width:280px; height:20px; margin:0; padding:0;"><div style="display:block; width:auto; height:20px; margin:auto;"><label><input id="r_opc_0" type="radio" name="opc_ruta" value="0" checked="checked" />En automóvil</label><label><input id="r_opc_1" type="radio" name="opc_ruta" value="1" />A pie</label></div></div>';
	html += '<p class="map_text">Cuando aparezca  el punto en el mapa arrástralo a tu ubicación y <b>presiona</b>:</p>';
	html += '<div class="limpiar" style="height:5px;"></div>';
	html += '<div style="display:block; margin:auto; width:auto; text-align:center;">';
	html += '<p class="button button-orange" onclick="calcular_ruta(\''+cor+'\')">¿Como llegar al Módulo?</p>'
	html += '</div><div class="limpiar" style="height:2px;"></div>';
	html += '<p class="map_text map_text_link" style="margin-left:32px;" onclick="force_put_marker_r()">¿No aparece tu posición?</p>';
	html += '</div><div class="limpiar" style="height:5px;">';
	//html += '<p class="map_text map_text_link" style="text-align:center;" onclick="calcular_ruta(\''+cor+'\')">¿Como llegar al Módulo?</p>';
	html += '</div>';
	hide_message();
	put_message(html,0);
}
function put_marker_r(){
	if(posicion_encontrada__){
		var image = '/img/_inicio_nuiutm.png';
		var shadow = '/img/_inicio_nuiutm_shadow.png';
		if(marker_ruta__ == null){
			marker_ruta__ = new google.maps.Marker({
			    position: inicio_ruta__,
			    map: map,
				icon: image,
				shadow: shadow,
				draggable: true,
				title:'De aquí'
			});
			google.maps.event.addListener(marker_ruta__, 'dragend', function(){
				if(bandera_ruta__){
					put_ruta(marker_ruta__.getPosition(),final_ruta__);
				}
			});
			bounds__ruta__.extend(inicio_ruta__);
			map.fitBounds(bounds__ruta__);
		}else{
			marker_ruta__.setPosition(inicio_ruta__);
		}
		marker_ruta__.setAnimation(google.maps.Animation.BOUNCE);
	}
}
function put_marker_r_(){
	if(!posicion_encontrada__){
		var point = map.getCenter();
		var image = '/img/_inicio_nuiutm.png';
		var shadow = '/img/_inicio_nuiutm_shadow.png';
		if(marker_ruta__ == null){
			marker_ruta__ = new google.maps.Marker({
			    position: point,
			    map: map,
				icon: image,
				shadow: shadow,
				draggable: true,
				title:'De aquí'
			});
			google.maps.event.addListener(marker_ruta__, 'dragend', function(){
				if(bandera_ruta__){
					put_ruta(marker_ruta__.getPosition(),final_ruta__);
				}
			});
			bounds__ruta__.extend(point);
			map.fitBounds(bounds__ruta__);
		}else{
			marker_ruta__.setPosition(inicio_ruta__);
		}
		marker_ruta__.setAnimation(google.maps.Animation.BOUNCE);
	}
}
function force_put_marker_r(){
	var point = map.getCenter();
	var image = '/img/_inicio_nuiutm.png';
	var shadow = '/img/_inicio_nuiutm_shadow.png';
	if(marker_ruta__ == null){
		marker_ruta__ = new google.maps.Marker({
		    position: point,
		    map: map,
			icon: image,
			shadow: shadow,
			draggable: true,
			title:'De aquí'
		});
		google.maps.event.addListener(marker_ruta__, 'dragend', function(){
			if(bandera_ruta__){
				put_ruta(marker_ruta__.getPosition(),final_ruta__);
			}
		});
		bounds__ruta__.extend(point);
		map.fitBounds(bounds__ruta__);
	}else{
		marker_ruta__.setPosition(inicio_ruta__);
	}
	marker_ruta__.setAnimation(google.maps.Animation.BOUNCE);
}
function put_marker_ruta(){
	get_ubicacion();
}
function get_ubicacion(){
	var point = map.getCenter();
	if(navigator.geolocation){
		navigator.geolocation.getCurrentPosition(function(position){
			posicion_encontrada__ = true;
			point = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
			inicio_ruta__ = point;
			put_marker_r();
	  	},put_marker_r,function(){
			put_marker_r_();
		});
	}else{
		put_marker_r_();
	}
}
function calcular_ruta(c){
	if(marker_ruta__){
		marker_ruta__.setAnimation(null);
		var inicio = marker_ruta__.getPosition();
		final_ruta__ = get_point_coordenadas(c);
		opc_ruta__ = google.maps.DirectionsTravelMode.DRIVING;
		if(document.getElementById('r_opc_1').checked){
			opc_ruta__ = google.maps.DirectionsTravelMode.WALKING;
		}
		hide_message();
		msj_ruta_visible__ = false;
		put_ruta(inicio,final_ruta__);
	}else{
			var html = '<div class="box_margen" style="height:auto;">';
			html += '<div style="display:block; width:280px; height:20px; margin:0; padding:0;"><div class="exit" onclick="hide_message()"></div></div>';
			html += '<div class="box_alerta"><p>Ocurrió un problema al calcular la ruta.</p><div class="limpiar"></div><p><b>Verifica que la opción de ubicación este activada o desactívala.</b></p></div>';
			html += '</div>';
			put_message(html,0);
	}
	//aki
}
function put_ruta(p1,p2){
	$("#loading").fadeIn("fast");
	var request = {
		origin: p1,
		destination: p2,
		travelMode: opc_ruta__
	};
	directionsService.route(request, function(response, status) {
		if (status == google.maps.DirectionsStatus.OK) {
			bandera_ruta__ = true;
			$("#loading").fadeOut("fast");
			directionsDisplay.setMap(map);
			aux_msj_ruta = response;
			directionsDisplay.setDirections(response);
			$('#navigationr').stop().animate({'marginLeft':'-385px'},200);
		}else{
			//Muestra mensaje de no encontro rutas y kita mapita
			$("#loading").fadeOut("fast");
			bandera_ruta__ = false;
			$('#box_response_ruta').html('');
			directionsDisplay.setMap(null);
			if(marker_ruta__){
				marker_ruta__.setMap(null);
				marker_ruta__ = null;
			}
			var html = '<div class="box_margen" style="height:auto;">';
			html += '<div style="display:block; width:280px; height:20px; margin:0; padding:0;"><div class="exit" onclick="hide_message()"></div></div>';
			html += '<div class="box_alerta"><p>No se encontraron rutas para el módulo.</p></div>';
			html += '</div>';
			put_message(html,0);
			//alert('fallo validacion\n' + status);
		}
	});
}
function check_sv(point,name){
	sv__.getPanoramaByLocation(point, 50, function(data, status){
			var aux_name = '#b_sv_' + name.toString();
			var aux_name2 = '#b_s_sv_' + name.toString();
			if(status == google.maps.StreetViewStatus.OK){
				$(aux_name).css('display','block');
				if($(aux_name2)){
					$(aux_name2).css('display','block');
				}
			}
		});
}
function put_street_view(c){
	panorama__.setPosition(get_point_coordenadas(c));
	/*panorama.setPov({
		heading: 265,
		zoom:1,
		pitch:0}
	);*/
	var toggle = panorama__.getVisible();
	if (toggle == false) {
      panorama__.setVisible(true);
    }
}
function change_street_ruta(){
	if(!bandera_ruta__){
		restart_all();
	}
}
function change_marker(n){
	limpiar_markers();
	list_objets[n].setIcon('/img/_point32_nuiutm.png');
}
function restart_all(){
	hide_message();
	limpiar_markers();
	clear_infowindow();
	var toggle = panorama__.getVisible();
	if (toggle == true) {
      panorama__.setVisible(false);
    }
	bandera_ruta__ = false;
	if(marker_ruta__){
		marker_ruta__.setMap(null);
		marker_ruta__ = null;
	}
	directionsDisplay.setMap(null);
	$('#navigationr').stop().animate({'marginLeft':'-2px'},200);
	$('#box_response_ruta').html('');
}
function put_ss_tooltip(){
	$('.tooltip').hover( 
		function (){  // Muestra
			var str_ = $(this).attr("rel");
			var tmp = str_.split('::');
			var title_ = tmp[0];
			var cnt_ = tmp[1];
			if(title_ == '' || title_ == null || title_ == undefined){
				title_ = '';
			}
			if(cnt_ == '' || cnt_ == null || cnt_ == undefined){
				cnt_ = '';
			}
			$("#ss-tooltip .ss-tooltip-title").html(title_);
			$("#ss-tooltip .ss-tooltip-cnt").html(cnt_);
			var p_ = $(this).position();
			var aux_left_ = p_.left;
			if((aux_left_ + $("#ss-tooltip").width()) >= w__){
				aux_left_ = w__ - ($("#ss-tooltip").width() + 10);
			}
			var aux_top_ = ($('#navigationm').position().top + p_.top) - ($("#ss-tooltip").height() + 10);
			if(aux_top_ <= 0){
				aux_top_ = $(this).height() + 10;
			}
			$("#ss-tooltip").css('left',aux_left_);
			$("#ss-tooltip").css('top',aux_top_);
			$("#ss-tooltip").show(); 
		}, 
		function (){ // Oculta
			$("#ss-tooltip").hide();
		}
	);
}
