/**
 * TAD Registro de Aplicaciones Abiertas
 *
 * @autor: Pablo Prieto
 */

var openApps = new Array();  // Vector de nombres de aplicación
var handlers = new Array();  // Vector de manejadores de ventana

function infoTAD()
{
      alert('TAD Registro de Aplicaciones Abiertas');
}

/**
 * Agrega una aplicación al registro
 * @param name Nombre de la nueva aplicación
 * @param hand Manejador de la ventana de la aplicación
 */
function addApp(name,hand)
{
	var id = findApp(name);
	var ind = openApps.length;
	
	if (id == -1)
	{
		openApps[ind] = name;
		handlers[ind] = hand;
	}
}



/**
 * Busca en el registro la aplicación especificada y devuelve su identificador
 * @param name Nombre de la aplicación
 * @return Identificador de la aplicación (-1 en caso que no exista)
 */
function findApp(name)
{
	var id = -1;
	
	for (var i = 0; (i < openApps.length) && (id == -1); i++)
		if (openApps[i] == name)
			id = i;
	
	return id;
}



/**
 * Verifica si la aplicación especificada se encuentra abierta
 * @param name Nombre de la aplicación
 * @return Booleano indicando si la aplicación se encuentra abierta
 */
function openApp(name)
{
	var open = false;
	var id = findApp(name);
	
	if (id != -1)
	{
		if (handlers[id].closed)
			delApp(name);
		else
			open = true;
	}
	
	return open;
}



/**
 * Obtiene el manejador de la ventana de la aplicación especificada
 * @pre La aplicación se encuentra abierta
 * @param name Nombre de la aplicación
 * @return Mandejador de la ventana de la aplicación
 */
function getHandler(name)
{
	var id = findApp(name);
	return handlers[id];
}

/**
 * Elimina del registro la aplicación especificada
 * @param name Nombre de la aplicación
 */
function delApp(name)
{
	var openNew = new Array();
	var handNew = new Array();
	var id = findApp(name);
	var j = 0;
	
	if (id != -1)
	{
		for (var i = 0; i < openApps.length; i++)
		{
			if (i != id)
			{
				openNew[j] = openApps[i];
				handNew[j] = handlers[i];
				j++;
			}
		}
	}
	
	openApps = openNew;
	handlers = handNew;
}



/**
 * Abre el montevimap, o vuelve a cargarlo si ya se encuentra abierto
 * @pre Ninguna
 * @param winname - Nombre de la ventana a abrir (y po el cual buscar paraç
 *					ver si está abierta
 * @param dir - Dirección a cargar (template a usar)
 * @param params - Parámetros a pasarle a la aplicación
 * @param busqueda - La verdad que no sé bien
 * @return Mandejador de la ventana de la aplicación
 */
function cargarMapa(winname,dir, modo_uso, params,busqueda, i_perfil)
{
	var open = openApp(winname);

	if (open)
	{
		var handler = getHandler(winname);
		handler.frames['titleframe'].init_herramientas();
		handler.frames['titleframe'].apagar_botones();
		handler.frames['layerframe'].descheckarTemas();
		handler.frames['layerframe'].document.map.busqueda.value = busqueda;
		handler.frames['layerframe'].document.map.layers.value = '';
		
		if (busqueda != 0)
		{
			if (params[2] != null)
				handler.frames['layerframe'].document.map.mapext.value = params[2];
			else
				handler.frames['layerframe'].document.map.mapext.value = '';
			
			if (params[5] != null)
				handler.frames['layerframe'].document.map.temporalLayers.value = params[5];
			else
				handler.frames['layerframe'].document.map.temporalLayers.value = '';
				
			if (params[7] != null)
				handler.frames['layerframe'].document.map.capasPinta.value = params[7];
			else
				handler.frames['layerframe'].document.map.capasPinta.value = '';
			
			if (params[8] != null)
				handler.frames['layerframe'].document.map.gid2.value = params[8];
			else
				handler.frames['layerframe'].document.map.gid2.value = '';
			
			if (params[9] != null)
				handler.frames['layerframe'].document.map.marca.value = params[9];
			else
				handler.frames['layerframe'].document.map.marca.value = '';
			
			if (params[10] != null)
				handler.frames['layerframe'].document.map.colorPinta.value = params[10];
			else
				handler.frames['layerframe'].document.map.colorPinta.value = '';
			
			if (params[0] != null)
				handler.frames['layerframe'].document.map.x_coord.value = params[0];
			else
				handler.frames['layerframe'].document.map.x_coord.value = '';
			
			if (params[1] != null)
				handler.frames['layerframe'].document.map.y_coord.value = params[1];
			else
				handler.frames['layerframe'].document.map.y_coord.value = '';
			
			if (params[3] != null)
				handler.frames['layerframe'].document.map.x_coord2.value = params[3];
			else
				handler.frames['layerframe'].document.map.x_coord2.value = '';
			
			if (params[4] != null)
				handler.frames['layerframe'].document.map.y_coord2.value = params[4];
			else
				handler.frames['layerframe'].document.map.y_coord2.value = '';
    	
			/*if (params[10] != null)
				handler.frames['layerframe'].document.map.indice_perfil.value = params[10];
			else
				handler.frames['layerframe'].document.map.indice_perfil.value = '';*/
			if (i_perfil != null)
				handler.frames['layerframe'].document.map.indice_perfil.value = i_perfil;
			else
				handler.frames['layerframe'].document.map.indice_perfil.value = '';
		}
		else
		{
			if (params[2] != null)
				handler.frames['layerframe'].document.map.mapext.value = params[2];
			else
				handler.frames['layerframe'].document.map.mapext.value = '';
				
			handler.frames['layerframe'].document.map.temporalLayers.value = '';
			handler.frames['layerframe'].document.map.x_coord.value = '';
			handler.frames['layerframe'].document.map.y_coord.value = '';
			handler.frames['layerframe'].document.map.x_coord2.value = '';
			handler.frames['layerframe'].document.map.y_coord2.value = '';
			handler.frames['layerframe'].document.map.gid2.value = '';
			handler.frames['layerframe'].document.map.capasPinta.value = '';
			handler.frames['layerframe'].document.map.colorPinta.value = '';
			//handler.frames['layerframe'].document.map.indice_perfil.value = '';
		}
	
		handler.frames['layerframe'].document.map.submit();
		handler.focus();
	}
	else
	{
		var parametros = '?buffer=';
		if (params[2]!=null)
			parametros += params[2];

		parametros += '&mapxy=';
		if (params[0]!=null&&+params[1]!=null)
			parametros += params[0]+'+'+params[1];

		parametros += '&aplicacion=';
		if (params[6]!=null)
			parametros += params[6];

// agregado por Victoria 11/10/2006	
		parametros +=  '&temporalLayers=';
		if (params[5]!=null)
			parametros +=  params[5];
		parametros +=  '&capasPinta=';
		if (params[7]!=null)
			parametros +=  params[7];
		parametros +='&gid2=';
		if (params[8]!=null)
			parametros += params[8];
		parametros +='&marca=';
		if (params[9]!=null)
			parametros += params[9];
// las coordenadas		
		parametros +='&x_coord=';
		if (params[0]!=null)
			parametros += params[0];
		parametros +='&y_coord=';
		if (params[1]!=null)
			parametros += params[1];
		parametros +='&x_coord2=';
		if (params[2]!=null)
			parametros += params[2];
		parametros +='&y_coord2=';
		if (params[3]!=null)
			parametros += params[3];
//window.alert(parametros);
    parametros +='&indice_perfil=';
    /*if (params[10]!=null)
		  parametros += params[10];*/
		if (i_perfil!=null)
		  parametros += i_perfil;
		var address = dir + parametros;
		
	/***********************/
    if (modo_uso == 'Edicion')    
		    var ops = 'menubar=yes,width=985,height=650,resizable=yes,status=yes,toolbar=no';
    else
         var ops = 'menubar=yes,width=785,height=520,resizable=yes,status=yes,toolbar=no';
    /*********************/ 
		var winmap = window.open(address,winname,ops);

		if (winmap != null)
			addApp(winname,winmap);
		else
			alert('No se puede abrir la ventana del Montevimap.\nAsegurese de no tener bloqueadas las ventanas emergentes o "popups".');
	}
}

