/* 13.2.2009 - JaLat */

/* PAKOLLISET MUUTTUJAT KARTOILLE */
var ops;
var fonectaMap;
	
/**
 * Etuovi.com haun karttarajauksen oletusasetukset.
 * 
 * map_url_param = proxyn urli, jonka kautta karttatiedot kierrätetään, 
 * että saadaan kartalta koordinaatit poimittua.
 * 
 * Alustetaan kartan optionssit. 
 */			

var mapIsLoaded = false;		//Karttarajaukseen tarvittava muuttuja. Muutetaan muuttujaan arvoon true, kun kartta on ladattu/ladataan uudelleen. 

function searchpage_InitMap(map_url_param)
{
	ops = FonectaMap.options();
	//ops.url = 'http://maps.fonecta.fi'; /* alkuperäisen kartan urli */	
  	ops.url = map_url_param; /* proxyn urli jota kautta kartta ja kartan tiedot tulee */
	ops.mapAreaId = 'MapArea'; /* div johon kartta tuodaan */
	ops.width = 764;
	ops.height = 530;
	ops.centerX = 64.82864; /* oletus x- ja y-koordinaatit. */	
	ops.centerY = 26.14746;	
	ops.locationCallback = "showLocation"; /*javascript funktio jota kutsutaan kun kartta rajautuu ja josta saadaan koordinaatit */
  //ops.storeLocation = true;
	ops.scale = 11; /* widest scale is 11 */ 
	ops.showOverview = true;
	ops.showTileSwitcher = true;
	ops.showSmallControls = true;
	ops.showCrosshair = false;
	ops.tooltipsEnabled = true;
	fonectaMap = new FonectaMap(ops);
}

/**
 * Etuovi.com kohdesivun kartan oletusasetukset.
 * Vaihdettu käyttämään mapproxyä, silloin kun ollaan kirjautuneena + käyttäjällä omia karttasijainteja.
 */			
function itempage_InitMapProxy(map_url_param) 
{
	ops = FonectaMap.options();
	//ops.url = 'http://maps.fonecta.fi';
	ops.url = map_url_param;
 	//ops.clickUrl = ''; //annetaan kohdesivulla dynaamisesti luotuna.
	ops.mapAreaId = 'MapArea';
	ops.width = 495; 		//ops.width = 234;
	ops.height = 140;		//ops.height = 175;
	//ops.centerX = 64.82864;	
	//ops.centerY = 26.14746;
	ops.locationCallback = "ip_showLocation";
  	//ops.storeLocation = true;
	ops.scale = 6; /* widest scale is 11 */ 
	ops.showOverview = true;
	ops.showTileSwitcher = false;
	//ops.showSmallControls = false;
	//ops.showCrosshair = true;
	//ops.tooltipsEnabled = false;
	fonectaMap = new FonectaMap(ops);
}

/**
 * Etuovi.com kohdesivun kartan oletusasetukset.
 * Tämä silloin kun käyttäjä ei ole kirjautuneena
 */			
function itempage_InitMap() 
{
	ops = FonectaMap.options();
	ops.url = 'http://maps.fonecta.fi';
 	//ops.clickUrl = ''; //annetaan kohdesivulla dynaamisesti luotuna.
	ops.mapAreaId = 'MapArea';
	ops.width = 495; 		//ops.width = 234;
	ops.height = 140;		//ops.height = 175;
	//ops.centerX = 64.82864;	
	//ops.centerY = 26.14746;
	//ops.locationCallback = "ip_showLocation";
  	//ops.storeLocation = true;
	ops.scale = 6; /* widest scale is 11 */ 
	ops.showOverview = true;
	ops.showTileSwitcher = false;
	//ops.showSmallControls = false;
	//ops.showCrosshair = true;
	//ops.tooltipsEnabled = false;
	fonectaMap = new FonectaMap(ops);
}

/**
 * Kohdesivun karttaa varten.
 * Tämä funktio ajetaan, kun kartta on latautunut kohdesivulle.
 */
function ip_showLocation(l){
	//Kohdesivun kartan koordinaatit talteen
	document.getElementById("location_start_lat").value = l.minLat;
	document.getElementById("location_start_lon").value = l.minLon;
	document.getElementById("location_end_lat").value 	= l.maxLat;
	document.getElementById("location_end_lon").value 	= l.maxLon;
	
	//Mikäli käyttäjällä on tallennettuna omiasijainteja niin piirretään ne kartalle
	if(myMapLocations.length > 0){
		drawMyMapLocations();
	}
}

/**
 * Kohdesivun karttaa varten.
 * Palauttaa koordinaattipisteillä ja kuvan korkeuden avulla x-pikselimäärän kuvalle
 */
function getXPixelsOflocation(lat,lon,theWidth){
	var location_start_lat = document.getElementById("location_start_lat").value;
	var location_start_lon = document.getElementById("location_start_lon").value;
	var location_end_lat = document.getElementById("location_end_lat").value;
	var location_end_lon = document.getElementById("location_end_lon").value;
	var mapwidth = ops.width;

	var x = Math.round((mapwidth/(location_end_lon-location_start_lon))*(lon-location_start_lon));
	x = x - (theWidth/2);
	return x;
}

/**
 * Kohdesivun karttaa varten.
 * Palauttaa koordinaattipisteillä ja kuvan leveyden avulla y-pikselimäärän kuvalle
 */
function getYPixelsOflocation(lat,lon,theHeight){
	var location_start_lat = document.getElementById("location_start_lat").value;
	var location_start_lon = document.getElementById("location_start_lon").value;
	var location_end_lat = document.getElementById("location_end_lat").value;
	var location_end_lon = document.getElementById("location_end_lon").value;
	var mapheight = ops.height;
	
	var y = mapheight-(Math.round((mapheight/(location_end_lat-location_start_lat))*(lat-location_start_lat)));
	y = y - theHeight;
	return y;
}

/**
 * Kohdesivun karttaa varten.
 * Piirtää divejä kartan päälle. Divit sisältävät kuvan karttasijainnin tyypin mukaan
 */
function drawMyMapLocations(){
	//Kohdetiedot saadaan jsp:ltä string arraysta myMapLocations
	var theWidth = 38;
	var theHeight = 40;
	var dh;
	var imagePath ="/static_images/etuovi-kuluttaja/v2/icons/kartta/";
	for(var i=0; i < myMapLocations.length; i++ ){
		dh=myMapLocations[i];
		var newdiv = document.createElement('div');
	   	newdiv.setAttribute('id', "mapLocation_"+i);
	    newdiv.style.width = theWidth+"px";
		newdiv.style.height = theHeight+"px";
	   	newdiv.style.position = "absolute";
	   	newdiv.style.left = getXPixelsOflocation(dh.lat,dh.lon,theWidth)+"px";
	    newdiv.style.top = getYPixelsOflocation(dh.lat,dh.lon,theHeight)+"px";
	   	newdiv.style.zIndex = "101";
	   	var image = "";
	   	var description = "";
	   	if(dh.type == 1){image = "map_home.png";}
	   	else if(dh.type == 2){image = "map_work.png";}
	   	else if(dh.type == 3){image = "map_school.png";}
	   	else if(dh.type == 4){image = "map_kindergarten.png";}
	   	else {
		   	image = "map_other.png";
		   	description = dh.name;
		}
		var innerHtmlContent = "<img src='"+imagePath+image+"' title='"+description+"' height='"+theHeight+"' width='"+theWidth+"' />";
		newdiv.innerHTML = innerHtmlContent;
		document.getElementById('map_canvas').appendChild(newdiv);
	}
	//Tällä korjataan IE6:sella png-kuvien läpinäkyvyys.
	$(document).pngFix();
}

/**
 * Etuovi.com kohdesivun kartan oletusasetukset.
 * Alustetaan kartan optionssi. Karttaa käytetään suoraan fonectan sivuilta, 
 * ei proxyn kautta, koska koordinaatteja jne ei tarvita kuten haussa.
 */			
function realtycomplex_InitMap() 
{
	ops = FonectaMap.options();
	ops.url = 'http://maps.fonecta.fi';	
 	//ops.clickUrl = ''; //annetaan kohdesivulla dynaamisesti luotuna.
	ops.mapAreaId = 'MapArea';
	ops.width = 234; 	
	ops.height = 175;	
	//ops.centerX = 64.82864;	
	//ops.centerY = 26.14746;
	//ops.locationCallback = "showLocation";
  	//ops.storeLocation = true;
	ops.scale = 6; /* widest scale is 11 */ 
	ops.showOverview = true;
	ops.showTileSwitcher = false;
	//ops.showSmallControls = false;
	//ops.showCrosshair = true;
	//ops.tooltipsEnabled = false;
	fonectaMap = new FonectaMap(ops);
}

/**
 * Käynnistetään (näytetään) kartta.
 */
function startFonectaMap(){
	fonectaMap.start();
}

/**
 * Keskitetään kartta annettuihin koordinaatteihin ja
 * asetetaan kartalle urli johon klikkaus vie.
 * Nämä tekee kartasta klikattavan, ei raahattavan. 
 */
function set_map_clickUrl(url, map_x, map_y){
	ops.centerX = map_x;
	ops.centerY = map_y;
	ops.clickUrl = url;
	ops.clickUrlTarget = '_blank';
	//asetetaan etuoven markkeri
	fonectaMap.addMarkerByCoordinates('id', map_x, map_y, '', '', 'etuovi');
}

/**
 * Kartan kohdistus haun karttarajauksessa käyttäen parametreja address, city.<b>
 * @param address	= Katuosoite
 * @param city		= Kaupunki / Kunta
 * @param address_default_text = Katuosoite-kentän oletusteksti (vihjeteksti). Voi olla myös tyhjä "".
 * @param city_default_text = Kaupunki-kentän oletusteksti (vihjeteksti). Voi olla myös tyhjä "".
 *  
 */
function searchpage_centerpointFonectaMap(address, city, address_default_text, city_default_text) 
{
	var do_execute = false;
	
	/* Tarkistetaan onko käyttäjä antanut kohdistuspaikkoja (kaupunki, kaupunginosa tai katuosoite */ 
 	if(city != city_default_text && city != ''){
		ops.city = city;
  	do_execute = true;	
  }else{
  	colorChangerBlack('centerpoint_city_field')
  	document.centerpoint_form.centerpoint_city_field.value = "";
  	document.centerpoint_form.centerpoint_city_field.focus();
  }
  						 
  if(address != address_default_text && address != ''){
  	ops.address = address;
  	do_execute = true;	
  }else{
  	colorChangerBlack('centerpoint_address_field')
  	document.centerpoint_form.centerpoint_address_field.value = "";
  	document.centerpoint_form.centerpoint_address_field.focus();
  }	    	
  		    	
	/* Mikäli on, niin kohdistetaan kartta. Muutoin asetetaan focus tekstikenttään. */	    		
  if(do_execute == true){
		ops.scale = 5;
		fonectaMap.refreshMap();
	}else{
		ops.scale = 11;
		fonectaMap.refreshMap();   			
		colorChangerBlack('centerpoint_city_field')
		document.centerpoint_form.centerpoint_city_field.value = "";
		document.centerpoint_form.centerpoint_city_field.focus();
	}
			
	/* lopuksi nollataan optionit, ettei ne jää seuraavaan hakuun muistiin */
	ops.city = "";
	ops.address = "";
}			

/**
 * Kun tullaan muokkaamaan edellistä karttarajausta, asetetaan koordinaatit ja scale oikein.
 */
function modify_last_centerpoint(param_x, param_y, param_scale)
{
	ops.centerX = param_x;
	ops.centerY = param_y;	
	ops.scale = param_scale;
}

/**
 * Asettaa kulmien ja keskipisteen koordinaatit nimettyihin hidden-parametreihin sivulle.
 */
function showLocation(l) 
{
	document.getElementById("location_start_lat").value = l.minLat;
	document.getElementById("location_start_lon").value = l.minLon;
	document.getElementById("location_end_lat").value 	= l.maxLat;
	document.getElementById("location_end_lon").value 	= l.maxLon;	
	document.getElementById("location_center_lat").value = l.centerLat;
	document.getElementById("location_center_lon").value = l.centerLon;
	document.getElementById("location_scale").value = l.zoomLevel;
	if(!mapIsLoaded){
		initStableBoxes();
		mapIsLoaded=true;
	}
}
	    
/**
 * Haku-tekstikentille tekstien värien säätöä
 */	    
function colorChangerBlack(element_id){
	document.getElementById(element_id).style.color='#333333';
}					
function colorChangerGrey(element_id){
	document.getElementById(element_id).style.color='#666666';
}	 
