
var map = null;

var ICON_FILE_PATH = "../icons/";
var ICON_EXTENSION = ".png";
var DEFAULT_ZOOM = 16;

var METROS_EN_UN_GRADO = 111352;

var CAR_1_ID = 1031;
var CAR_2_ID = 832;
var CAR_3_ID = 1234;
var CAR_4_ID = 234;

var SECTOR_ID = 3450;
var THEORETICAL_SECONDS = 10;

//Definition of icon classes
//the default google icon (accessed with icon="default")
var defaultIcon = new GIcon();
defaultIcon.shadow = "../icons/defaultshadow.png";
defaultIcon.iconSize = new GSize(20, 34);
defaultIcon.shadowSize = new GSize(37, 34);
defaultIcon.iconAnchor = new GPoint(9, 34);
defaultIcon.infoWindowAnchor = new GPoint(9, 2);
defaultIcon.infoShadowAnchor = new GPoint(18, 25);

//the car icon (accessed with icon="car")
var carBaseIcon = new GIcon();
carBaseIcon.shadow = "../icons/carshadow.png";
carBaseIcon.iconSize = new GSize(51, 29);
carBaseIcon.shadowSize = new GSize(51, 29);
carBaseIcon.iconAnchor = new GPoint(0, 29);
carBaseIcon.infoWindowAnchor = new GPoint(30, 6);
carBaseIcon.infoShadowAnchor = new GPoint(30, 6);

//the mini google icon (accessed with icon="mini")
var miniBaseIcon = new GIcon();
miniBaseIcon.shadow = "../icons/minishadow.png";
miniBaseIcon.iconSize = new GSize(12, 20);
miniBaseIcon.shadowSize = new GSize(22, 20);
miniBaseIcon.iconAnchor = new GPoint(6, 20);
miniBaseIcon.infoWindowAnchor = new GPoint(5, 1);

//the simple circle (accessed with icon="circle")
var circleIcon = new GIcon();	
circleIcon.iconAnchor = new GPoint(5, 5);
circleIcon.iconSize = new GSize(10, 10);
circleIcon.shadowSize = new GSize(10, 10);
circleIcon.shadow = "../icons/circleshadow.png";
circleIcon.infoWindowAnchor = new GPoint(5, 5);


var g_marker = [];
var g_tabs = [];
var g_reported_rows = [];




function distanceBetweenTwoPoints(point1, point2) {
  var base = Math.abs( point1.lng() - point2.lng() );
  var altura = Math.abs( point1.lat() - point2.lat() );
  var hipotenusa = Math.sqrt((base*base) + (altura*altura));


  return hipotenusa * METROS_EN_UN_GRADO;
}


function distanceBetweenCoordinates(x1, y1, x2, y2) {
	var point1 = new GLatLng(x1, y1);
	var point2 = new GLatLng(x2, y2);

	return distanceBetweenTwoPoints(point1, point2);
}


function pendiente(x1, y1, x2, y2) {
  if(x1 < x2) {
	  return (y2 - y1)/(x2 - x1);
  }
  else {
	  return (y1 - y2)/(x1 - x2);
  }
}


function moveMarkerBetweenTwoPoints(id, x1, y1, x2, y2, t, pParada, listener) {

  //alert( "DISTANCIA PENDIENTE: " +  distanceBetweenCoordinates(x1, y1, x2, y2) );
  var timeout = 100;
  var randomnumber=Math.round(Math.random()*100)
  if(randomnumber < pParada) {
    //alert("RANDOM: " + randomnumber);
    var point = new GLatLng(y1, x1);
    moveMarker(id, point);
    g_marker[id].closeInfoWindow();
    window.setTimeout(function(){moveMarkerBetweenTwoPoints(id, x1, y1, x2, y2, t, pParada, listener) }, timeout);
    return;
  }

  //alert("RANDOM pasado: " + randomnumber + " pParada: " + pParada);
  
  var espacio_pendiente = distanceBetweenCoordinates(x1, y1, x2, y2);
  var velocidad = espacio_pendiente/t;
  var espacio_a_recorrer = velocidad * (timeout/1000);
  //alert("VELOCIDAD: " +  velocidad + "ESPACIO A RECORRER: " + espacio_a_recorrer) ;

  var real_x2 = x2;
  var multiplicador = espacio_a_recorrer / METROS_EN_UN_GRADO;
  var m = pendiente(x1, y1, x2, y2);

  if(x1 > x2) {
	multiplicador = multiplicador * (-1);    
  }

 
  var coef = y2 -(m * x2)
  var new_x = x1;
  var new_y = 0;


	new_x = new_x + multiplicador;
	new_y = (m * new_x) + coef;
        if(x1 < x2) {
           if(new_x > x2) {
             new_x = x2;
             new_y = y2;
           }
        }
        else {
           if(new_x < x2) {
             new_x = x2;
             new_y = y2;
           }
        }


	var point = new GLatLng(new_y, new_x);
	moveMarker(id, point);
        if( (multiplicador > 0) && (new_x >= x2) ) {
           //alert("Derecha rebasada")
           listener.done();
        }
        else if( (multiplicador < 0) && (new_x <= x2) ) {
           listener.done();
           //alert("Izquierda rebasada:" + new_x + " " +  x2)
        }
        else {
		g_marker[id].closeInfoWindow();
		window.setTimeout(function(){moveMarkerBetweenTwoPoints(id, new_x, new_y, x2, y2, (t - (timeout/1000)), pParada, listener) }, timeout);
	} 

}


//create an icon with the wished properties
function createIconBase(iconBaseName){
	if(iconBaseName=="car"){
		return carBaseIcon;
	}
	else if(iconBaseName=="default"){
		return defaultIcon;
	}
	else if(iconBaseName=="circle"){
		return circleIcon;
	}
	else if(iconBaseName=="mini"){
		return miniBaseIcon;
	}
	else{
		return null;
	}
}


//returns the filename to look for the icon
function createIconFilename(iconBaseName,iconColor){
	return ICON_FILE_PATH + iconBaseName + iconColor +  ICON_EXTENSION;
}


function resize() {
	//set the size of the map
	var myMap = document.getElementById("map");
	//alert(myMap.style.height);
	myMap.style.height=f_clientHeight() + "px";
	//alert(myMap.style.height);
	myMap.style.width=f_clientWidth() + "px";


        var myLoading = document.getElementById("player")
	//myLoading.style.visibility="hidden";
	
}



function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}


function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}


function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}



function drawMarker(id, point, color, html_text){
	var marker = null;
				
	//recreating the marker
	var marker = createMarker(id, point, color, html_text);

	map.addOverlay(marker);

	return marker;
}


function createMarker(id, point, color, html_text){
	//create the marker wih correct Id
	//and correct style
	var iconClass = "car";
	var iconColor = color;
	var iconDeco = "";
	var icon = new GIcon(createIconBase(iconClass));
	icon.image = createIconFilename(iconClass,iconColor,iconDeco);

	var marker = new GMarker(point,icon);

	marker.id=id;


	var defaultInfoTab = new GInfoWindowTab("SECTION", html_text);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);
	var lat = point.lat();
	var lng = point.lng();
        var new_point = new GLatLng(lat + 0.0001, lng + 0.00015);

        g_tabs[id] = infoTabs;

	g_marker[id] = marker;
	return marker;
}


function moveMarker(id, point) {
        if(point == null) {
	  alert("point null");
	  point = new GLatLng(41.3818202, 2.1688261);
        }
/*
	var lat = point.lat();
	var lng = point.lng();
        var new_point = new GLatLng(lat + 0.0001, lng + 0.00015);
	var vpoints = [];
	vpoints[0] = point;
	vpoints[1] = new_point;
	var rect = new GBounds(vpoints);

        var myLoading = document.getElementById("player")

	myLoading.style.left= rect.min().x + "px";
	myLoading.style.top=  rect.min().y + "px";
*/
	g_marker[id].setLatLng(point) 
	g_marker[id].openInfoWindowTabsHtml(g_tabs[0]);
}

function refresh() {
  moveMarker(0, null);
}




function createRutaCoche(markerId, listener) {
	var rc = {};
	rc.markerId = markerId;
	rc.listener = listener;
	rc.elapsedTime = 0;
	rc.iniTime = 0;
	rc.endTime = 0;
	rc.edges = Array();


	rc.createEdge = function(point_ini, point_end, t, pParada) {
		var edge = {};

		edge.ruta = this;
		edge.index = 0;
		edge.point_ini = point_ini;
		edge.point_end = point_end;
		edge.t = t;
		edge.pParada = pParada;


		edge.done = function () {
			this.ruta.edgeDone(this.index);
		}

		edge.move = function () {
			moveMarkerBetweenTwoPoints(this.ruta.markerId, this.point_ini.lng(), this.point_ini.lat(), this.point_end.lng(), this.point_end.lat(), this.t, this.pParada, this);
		}

		return edge;
        }

	rc.addEdge = function(edge) {
		var size = this.edges.length;
		this.edges[size] = edge;
		edge.index = this.edges.length - 1;
	}

	rc.edgeDone = function (index) {
		if(index < (this.edges.length - 1) ) {
			this.edges[index + 1].move();
		}
		else {
			this.listener();
			//alert("RUTA COCHE: ALL EDGES DONES");
		}
	}

	rc.move = function () {
		var d = new Date();
		this.iniTime = d.getTime();
		this.edges[0].move();
	}

	rc.edgeDone = function (edgeIndex) {
		//alert("RUTA.edgeDone: edgeIndex: " + edgeIndex + "(this.edges.size - 1) " + (this.edges.length - 1) );
		if(edgeIndex < (this.edges.length - 1) ) {
			this.edges[edgeIndex + 1].move();
		} 
		else {
			//alert("RUTA COCHE: ALL EDGES DONE");
			var d = new Date();
			this.endTime = d.getTime();
			this.elapsedTime = (this.endTime - this.iniTime) / 1000;
			//alert("ELAPSED TIME: " + this.elapsedTime);
			this.listener(this.elapsedTime);
		}
	}


	return rc;
}


function createRouteSinAtasco(){
	//get color and width...
	var color = "blue";
	var width= 3;
	var id= 1;

	var points = new Array();

	points.push(new GLatLng(41.3796512964627, 2.159602136559886));
	points.push(new GLatLng(41.37951986936458, 2.159785566815398));

	points.push(new GLatLng(41.37993055797418, 2.160430131959866));
	points.push(new GLatLng(41.38221873229611, 2.163546353799502));
	points.push(new GLatLng(41.3853568762844, 2.163989342925856));
	points.push(new GLatLng(41.38592569906663, 2.164608332341662));
	points.push(new GLatLng(41.38567881278191, 2.16758446004873));
	points.push(new GLatLng(41.38557810732831, 2.168940725158617));

	var polyline = new GPolyline(points,color,width,1);

	polyline.id=id;
	return polyline;
}


function createRouteConAtasco(){
	//get color and width...
	var color = "red";
	var width= 3;
	var id= 2;

	var points = new Array();

	points.push(new GLatLng(41.3796512964627, 2.159602136559886));
	points.push(new GLatLng(41.37951986936458, 2.159785566815398));
	points.push(new GLatLng(41.37993502660309, 2.160435544932686));
	points.push(new GLatLng(41.37994797982132, 2.160442371188184));
	points.push(new GLatLng(41.38036508836285, 2.16097221749589));
	points.push(new GLatLng(41.38203090726476, 2.158788818021168)); 
	points.push(new GLatLng(41.38614300311269, 2.164278260779862)); 
	points.push(new GLatLng(41.38590829086025, 2.164594384041854)); 
	points.push(new GLatLng(41.38566799688157, 2.167564978975396)); 
	points.push(new GLatLng(41.38556694888184, 2.168923641418896));


	var polyline = new GPolyline(points,color,width,1);

	polyline.id=id;
	return polyline;
}

function createRouteMonitorizada() {
	//get color and width...
	var color = "orange";
	var width= 12;
	var id= 3;

	var points = new Array();

	points.push(new GLatLng(41.3819933, 2.1631896));
	points.push(new GLatLng(41.3812231, 2.1621645));

	var polyline = new GPolyline(points,color,width,0.5);

	polyline.id=id;
	return polyline;
}


function route_con_atasco_calculated() {
	map.setZoom(DEFAULT_ZOOM);

	g_marker[3].closeInfoWindow();



	//var point = new GLatLng(41.381112, 2.169311);
	//var point = new GLatLng(41.382124, 2.147482);
	var point = new GLatLng(41.382124, 2.1535);

	//var textNode = "<p><table><tr><td><img src='con_atasco.png' WIDTH='600' HEIGHT='351'/></td></tr></table></p>"
	var textNode = "<p><table><tr><td><img src='con_atasco.png' width='400' height='234'/></td></tr></table></p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	//g_marker[3].openInfoWindowTabsHtml(infoTabs)
	map.openInfoWindowTabsHtml(point, infoTabs);


	var ruta_con_atasco = createRouteConAtasco();
	ruta_con_atasco.show();
	map.addOverlay(ruta_con_atasco);
}


function launch_calculating_route_con_atasco() {

	var textNode = "<p><strong>Calculating Route</strong></p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(route_con_atasco_calculated, 5000);   
}

function reporting_car3_fin() {

	var textNode = "<p><strong>VEHICLE ID: </strong>"+ CAR_4_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>REPORTED TIMES: </strong></p><table style='BORDER-COLLAPSE: collapse' bgcolor=F3F7FD  bordercolor=C7D2E2 border=1 cellpadding=4 cellspacing=8 valign=center><tr><th></th><th>Vehicle ID</th><th>Reporting Time</th><th>Reported Seconds</th></tr>";
	for(i = 0; i < 3 ; i++){
		textNode = textNode + g_reported_rows[i];
	}
	textNode = textNode + "</table>";

	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[2].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(launch_calculating_route_con_atasco, 5000);  

}


function reporting_car3_transfering_info(elapsedTime) {

	var defaultInfoTab = new GInfoWindowTab("SECTION", "<p><strong>Receiving sector information from vehicle " + CAR_3_ID + "</strong></p>");
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[2].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(reporting_car3_fin, 3000);  
}

function reporting_car3_ini() {
	var rc = createRutaCoche(2, reporting_car3_transfering_info);


	var point_ini = new GLatLng(41.38111910059193, 2.157699310045957);
	var point_end = new GLatLng(41.37965462122786, 2.159598016558381);

	var edge = rc.createEdge(point_ini, point_end, 5, 0);
	rc.addEdge(edge);


	g_marker[0].hide();
	g_marker[1].hide();
	g_marker[2].show();
	g_marker[3].show();

	rc.move();
}


function reporting_car2_fin() {

	var textNode = "<p><strong>VEHICLE ID: </strong>"+ CAR_4_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>REPORTED TIMES: </strong></p><table style='BORDER-COLLAPSE: collapse' bgcolor=F3F7FD  bordercolor=C7D2E2 border=1 cellpadding=4 cellspacing=8 valign=center><tr><th></th><th>Vehicle ID</th><th>Reporting Time</th><th>Reported Seconds</th></tr>";
	for(i = 0; i < 2 ; i++){
		textNode = textNode + g_reported_rows[i];
	}
	textNode = textNode + "</table>";

	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[1].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(reporting_car3_ini, 5000);
}


function reporting_car2_transfering_info(elapsedTime) {

	var defaultInfoTab = new GInfoWindowTab("SECTION", "<p><strong>Receiving sector information from vehicle " + CAR_2_ID + "</strong></p>");
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[1].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(reporting_car2_fin, 3000);  
}

function reporting_car2_ini() {
	var rc = createRutaCoche(1, reporting_car2_transfering_info);


	var point_ini = new GLatLng(41.38111910059193, 2.157699310045957);
	var point_end = new GLatLng(41.37965462122786, 2.159598016558381);

	var edge = rc.createEdge(point_ini, point_end, 5, 0);
	rc.addEdge(edge);


	g_marker[0].hide();
	g_marker[1].show();
	g_marker[2].hide();
	g_marker[3].show();

	rc.move();
}


function reporting_car1_fin() {

	var textNode = "<p><strong>VEHICLE ID: </strong>"+ CAR_4_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>REPORTED TIMES: </strong></p><table style='BORDER-COLLAPSE: collapse' bgcolor=F3F7FD  bordercolor=C7D2E2 border=1 cellpadding=4 cellspacing=8 valign=center><tr><th></th><th>Vehicle ID</th><th>Reporting Time</th><th>Reported Seconds</th></tr>";
	for(i = 0; i < 1 ; i++){
		textNode = textNode + g_reported_rows[i];
	}
	textNode = textNode + "</table>";

	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[0].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(reporting_car2_ini, 5000);
}

function reporting_car1_transfering_info(elapsedTime) {

	var defaultInfoTab = new GInfoWindowTab("SECTION", "<p><strong>Receiving sector information from vehicle " + CAR_1_ID + "</strong></p>");
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[0].hide();
	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(reporting_car1_fin, 3000);  
}

function reporting_car1_ini() {
	var rc = createRutaCoche(0, reporting_car1_transfering_info);


	var point_ini = new GLatLng(41.38111910059193, 2.157699310045957);
	var point_end = new GLatLng(41.37965462122786, 2.159598016558381);

	var edge = rc.createEdge(point_ini, point_end, 5, 0);
	rc.addEdge(edge);


	g_marker[0].show();
	g_marker[1].hide();
	g_marker[2].hide();
	g_marker[3].show();

	rc.move();
}

function ini_fase_reporting(elapsedTime) {

	window.setTimeout(reporting_car1_ini, 1000);  
}



function capturing_car3_ended(elapsedTime) {
	var d = new Date();
	g_reported_rows[2] = "<tr><td><img src='../icons/carred.png'/></td><td align='center'>" + CAR_3_ID + "</td><td align='center'>" + d.toLocaleTimeString() +"</td><td align='center'>" + Math.floor(elapsedTime) + "</td></tr>";


	var textNode = "<p><strong>VEHICLE ID: </strong>" + CAR_1_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>CURRENT SECONDS: </strong>" + Math.floor(elapsedTime) +"</p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[0].openInfoWindowTabsHtml(infoTabs);
	g_marker[2].show();
	g_marker[2].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(launch_calculating_route_sin_atasco, 5000);   

}

function capturing_car3() {

	var rc = createRutaCoche(2, capturing_car3_ended);

	var point_end = new GLatLng(41.3819933, 2.1631896);
	var point_ini = new GLatLng(41.3812231, 2.1621645);

	var edge = rc.createEdge(point_ini, point_end, 10, 1);
	rc.addEdge(edge);

	g_marker[0].hide();
	g_marker[1].hide();
	g_marker[2].show();

	rc.move();
}

function launch_capturing_car3(elapsedTime) {
	var d = new Date();
	g_reported_rows[1] = "<tr><td><img src='../icons/caryellow.png'/></td><td align='center'>" + CAR_2_ID + "</td><td align='center'>" + d.toLocaleTimeString() +"</td><td align='center'>" + Math.floor(elapsedTime) + "</td></tr>";

	var textNode = "<p><strong>VEHICLE ID: </strong>" + CAR_2_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>CURRENT SECONDS: </strong>" + Math.floor(elapsedTime) +"</p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[1].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(capturing_car3, 5000);   
}


function capturing_car2() {
	var rc = createRutaCoche(1, launch_capturing_car3);

	var point_end = new GLatLng(41.3819933, 2.1631896);
	var point_ini = new GLatLng(41.3812231, 2.1621645);

	var edge = rc.createEdge(point_ini, point_end, 10, 30);
	rc.addEdge(edge);

	g_marker[0].hide();
	g_marker[1].show();

	rc.move();
}

function launch_capturing_car2(elapsedTime) {
	var d = new Date();
	g_reported_rows[0] = "<tr><td><img src='../icons/cargreen.png'/></td><td align='center'>" + CAR_1_ID + "</td><td align='center'>" + d.toLocaleTimeString() +"</td><td align='center'>" + Math.floor(elapsedTime) + "</td></tr>";

	var textNode = "<p><strong>VEHICLE ID: </strong>" + CAR_1_ID + "</p><p><strong>SECTOR ID: </strong>" + SECTOR_ID + "</p><p><strong>THEORETICAL SECONDS: </strong>" + THEORETICAL_SECONDS + "</p><p><strong>CURRENT SECONDS: </strong>" + Math.floor(elapsedTime) +"</p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[0].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(capturing_car2, 5000);   
}

function capturing_car1() {
	map.setZoom(DEFAULT_ZOOM + 1);

	var rc = createRutaCoche(0, launch_capturing_car2);

	var point_end = new GLatLng(41.3819933, 2.1631896);
	var point_ini = new GLatLng(41.3812231, 2.1621645);

	var edge = rc.createEdge(point_ini, point_end, 10, 10);
	rc.addEdge(edge);

	g_marker[0].show();

	rc.move();
}

function route_sin_atasco_calculated() {
	map.setZoom(DEFAULT_ZOOM);

	g_marker[3].closeInfoWindow();


	//var point = new GLatLng(41.381112, 2.169311);
	//var point = new GLatLng(41.382124, 2.147482);
	//var point = new GLatLng(41.382124, 2.149982);
	var point = new GLatLng(41.382124, 2.1535);

	var textNode = "<p><table><tr><td><img src='sin_atasco.png' width='400' height='234' /></td></tr></table></p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	//g_marker[3].openInfoWindowTabsHtml(infoTabs)
	map.openInfoWindowTabsHtml(point, infoTabs);

	var ruta_sin_atasco = createRouteSinAtasco();
	ruta_sin_atasco.show();
	map.addOverlay(ruta_sin_atasco);

	window.setTimeout(ini_fase_reporting, 10000);   
}

function launch_calculating_route_sin_atasco() {

	g_marker[2].hide();
	g_marker[2].closeInfoWindow();
	g_marker[3].show();

	var textNode = "<p><strong>Calculating Route</strong></p>"
	var defaultInfoTab = new GInfoWindowTab("SECTION", textNode);
	var infoTabs = [];
	infoTabs.push(defaultInfoTab);

	g_marker[3].openInfoWindowTabsHtml(infoTabs);

	window.setTimeout(route_sin_atasco_calculated, 5000);   
}


function hide_video1() {
        var myLoading = document.getElementById("player")
        myLoading.style.visibility="hidden";
}

function play_video1() {

        var myLoading = document.getElementById("player")
	myLoading.style.position="absolute";
	myLoading.style.left="0px";
	myLoading.style.top="0px";	
	myLoading.style.width="425px";
	myLoading.style.height="300px"
	myLoading.style.zIndex=999999999;
        myLoading.style.visibility="visible";

	//flowplayer("player", "flowplayer/flowplayer-3.1.4.swf", "file:///home/rgonzalez67/Proyectos/2009-008-BIONETS-DEMO/web/html/video.flv"); 
	flowplayer("player", "flowplayer/flowplayer-3.1.4.swf",  { 
	    clip: { 
		 
		// these two configuration variables does the trick 
		url: "out.flv",
		autoPlay: true,  
		onFinish: function () { hide_video1() },
		autoBuffering: true // <- do not place a comma here   
	    } 
	});
}



function load() {

	var point = new GLatLng(41.3812231, 2.1621645);
	var point_ini_zoom = new GLatLng(41.38036508836285, 2.16097221749589);
	var point_ini_routing = new GLatLng(41.3796512964627, 2.159602136559886);

	resize();

	//initialization of the map
	map = new GMap2(document.getElementById("map"));

	//centering in Barcelona...
	map.setCenter(point_ini_zoom, DEFAULT_ZOOM);

	//adding arrows + zoom  control
	map.addControl(new GLargeMapControl());


	var htmlText = "";

	var marker_car4 = drawMarker(3, point_ini_routing, "blue", htmlText);
        g_marker[3] = marker_car4;
	marker_car4.hide();

	var marker_car3 = drawMarker(2, point, "red", htmlText);
        g_marker[2] = marker_car3;
	marker_car3.hide();

	var marker_car2 = drawMarker(1, point, "yellow",  htmlText);
        g_marker[1] = marker_car2;
	marker_car2.hide();

	var marker_car1 = drawMarker(0, point, "green",  htmlText);
        g_marker[0] = marker_car1;
	marker_car1.hide()

	var ruta_monitorizada = createRouteMonitorizada();
	ruta_monitorizada.show();
	map.addOverlay(ruta_monitorizada);



	window.setTimeout(capturing_car1, 5000); 
	//window.setTimeout(play_video1, 4000); 
	//window.setTimeout(play_video1, 40000); 

}




