/* Google Maps -funktioita */

/* Mapponator
	-- Google Maps Apu
	-- Sisältää kartat ja niiden markkerit
	-- Mm. markkereiden infowindow-lomakkeiden html-hallinta	
*/

/* Kartan asennus tarkistuslista:
    I. Mapponator requires (ks. alla)
    II. Maps Key rekisteröinti & solu.configiin
*/


mapX = 0;

function Mapponator() {
	//Olio joka helpottaa karttojen luontia ja hallintaa
	
	//Note: Wrapper - not a Gmap2-prototype!! 
  //Note2: Gmaps2 -namespace transitional. See google api docs.

	//requires: Google Maps Scripts+Key && ExtInfoWindow.js
	//requires: <div class="map_canvas" /> && <div class="directions" />
	//requires: Toimipaikka js obj
	//requires: olettaa tällä hetkellä karttaolion nimeksi mapX !
	
	//usage: munKartta = new Mapponator(); //kartta sivulle
	//usage: munKartta = new Mapponator(myDiv); //kartta sivulle containeriin jonka id="myDiv"
	
	//usage with gmarkers:
	//1. in js create a gmarkerobject (toimipaikka etc) argument array.
	//2. in js: munKartta.createMarkerObject(argArray, markerType);
	
	//TODO
	//Zoomikerroin - kannasta?
	
	//Future features
	//- Toimii Warmasti vain yhdellä kartalla, yksi per sivu - gmaps pitäisi sisältää omat gmarkerobsit ymsit shit

	this.canvasDivRef; //html div -> map
	
	this.gmapobj = 0;
	this.gmaps = []; //Google-Maps karttaoliot (GMap2) //tulevaa käyttöä varten

  this.gmarkerobjs = []; //sisältää gmarkereita sisältäviä olkkuja, esim. toimipaikka
	this.bbox; //bounding-box karttakoordinaattipisteille
	
	this.gdirections; //reittihakuolkku
	this.direlem; //rudus_saddr || rudus_daddr
	
	//New map ********************************************************************
	this.createNewMap = function(canvasRefStr) {
		if (!canvasRefStr) { this.canvasDivRef = "map_canvas"; } else { this.canvasDivRef = canvasRefStr; }

		//GMap options (delimiter: ',')
		mapOptions = { size:new GSize(600,480) }; //not in use, use by adding to GMap2 constructor call as an arg (, mapOptions)
				
		//GMap olio
		this.gmapobj = new GMap2(document.getElementById(this.canvasDivRef));
		
		tmpgp = new GLatLng(63.5, 25);
		this.gmapobj.setCenter(tmpgp, 6);
		
		//TODO dynaamiset keskitykset
		
		//Kontrollit - ei gyproc-issa
		this.gmapobj.addControl(new GLargeMapControl());
		//this.gmapobj.addControl(new GMapTypeControl());
		
		//viite talteen
		this.gmaps.push(this.gmapobj);
		
		return this.gmapobj;
	}
	
	
	//Markerit *********************************************************************
	this.createMarkerObject = function(markArgArr, markType) {
		//Katso markArgArr ja markTypen muoto Toimipaikka-oliosta.
		
		//toimipaikan numero
		tmpn = this.gmarkerobjs.length; 
		
		//New Marker
		tmpm = new Toimipaikka(markArgArr, this.gmapobj, markType, tmpn);

		this.gmarkerobjs.push(tmpm);
		
		//Laske bounding box ja keskitä kartta
		//this.getBoundingBoxPoints();
		
		return tmpm;
	}
	
	this.addMarkerObj = function(markerObjRef) {
		this.gmarkerobjs.push(markerObjRef);
		//todo set markerobj map ref? muuten toimii vain yhdellä kartalla
		//todo set markerobj number? muuten toimii ilman iw
		
		//Laske bounding box ja keskitä kartta
		//this.getBoundingBoxPoints();
	}
	
	
	////Infowindow helpers ********************************************************
	// functions that open the directions forms
	// modeStr a: basic html, b: to-html, c:from-html
	this.showiwtohere = function(intI) { this.gmarkerobjs[intI].openInfoWindowExpHtml('b'); }
	this.showiwfromhere = function(intI) { this.gmarkerobjs[intI].openInfoWindowExpHtml('c');  }

	//Errorit
	
	//Eventit
	
	//Rajaus / Zoom / Bounding Box  *********************************************
	/* Yksittäisen toimipaikan keskitys kartalle - toimii vain jos vain yksi marker objekti */
	this.centerAndZoomOnSinglePoint = function() {
			this.gmapobj.setCenter(new GLatLng(this.gmarkerobjs[0].coordx, this.gmarkerobjs[0].coordy)); //keskitetään siihen
			this.gmapobj.setZoom(13);
	}

	this.focusAndOpenInfoWindow = function(mark_n_int, zoom_int) {
      this.gmarkerobjs[mark_n_int].openInfoWindowExpHtml('a');
      //this.setCenter(this.gmarkerobjs[mark_n_int].gpoint);
 			this.gmapobj.setCenter(this.gmarkerobjs[mark_n_int].gpoint, zoom_int);
			//this.gmapobj.setZoom(zoom_int);
	}	

	/* Lasketaan toimipisteille bounding box josta kartan keskipiste, zoomitaso */
	this.getBoundingBoxPoints = function() {

		xarr = new Array();	
		yarr = new Array();
		
		//Koordinaatit jonoihin
		var j = this.gmarkerobjs.length;
		
		if (j<1) { //Ei toimipaikkoja
			this.gmapobj.setCenter(new GLatLng(64,24), 5); //suomen kartta
			
		} else { //toimipaikkoja monta
			//Lasketaan toimipaikoista kaakkoisin ja lounaisin ja asetetaan keskipiste ja mittakaava sen mukaan
			for (var i=0; i<j; i=i+1) {
				xarr.push(this.gmarkerobjs[i].coordx);  
				yarr.push(this.gmarkerobjs[i].coordy);
			}
			
			xarr.sort(sortNumber); //suurin=pohjoisin
			yarr.sort(sortNumber); //suurin=itäisin
			
			//Luodaan bounding box joka suurempi kuin pisteiden rajaama alue jotta kontrollit tai reunat eivät peitä pisteitä
			var bb_north_east = new GLatLng((xarr[(xarr.length-1)]*1.00275), (yarr[(yarr.length-1)]*1.0));
  		var bb_south_west = new GLatLng((xarr[0]*1.003), (yarr[0]*1.01));
			
			this.bbox = new GLatLngBounds(bb_south_west, bb_north_east);
			this.gmapobj.setCenter(this.bbox.getCenter(), this.gmapobj.getBoundsZoomLevel(this.bbox));
		} //end if
  }
	
	//APUFUNKTIOITA/HELPERS **********************************************
	//numeroiden sorttausapu (bboxi)
	function sortNumber(a, b) { return a - b;  }
	
	//Errors on page (to eliminate alert boxes)
	this.printMsg = function(errorTextStr) {
		var errDiv = document.createElement('div');
		errDiv.setAttribute('class', 'errorDiv');
		errDiv.id = "errorDiv"; //IE haxx

		var txtNode = document.createTextNode(errorTextStr);
		errDiv.appendChild(txtNode);
		
		var tgDiv = document.getElementById("directions");
		tgDiv.appendChild(errDiv);
		
	}

	// ALUSTUS/INIT *********************************************************
	
	if (GBrowserIsCompatible()) { //Selain yhteensopiva?

		//kartan alustus
		this.createNewMap();
		
		// === create a GDirections Object ===
		this.gdirections = new GDirections(this.gmapobj, document.getElementById("directions"));
		
		//Directions
		//Get directions
		this.getDirections = function(fromStr) {
			//jos selain on firefox, lisätään kommentti reittihaun tulostumattomuudesta
			if (navigator.appName == "Netscape") { 
				msgText = "Käyttämäsi selain ei tue täysin reittigrafiikan tulostamista. Kartalla näkyvä reitti ei välttämättä näy tulosteissa.";
				//alert(msgText);
				this.printMsg(msgText); //tulosta viesti
			}

			//asetetaan potentiaalista error-viestiä varten haku-input-boxin elementti
			if (fromStr == 'a') { this.direlem = "rudus_daddr"; } 
			if (fromStr == 'b') { this.direlem = "rudus_saddr"; }
			var ru_saddr = document.getElementById("rudus_saddr").value;
			var ru_daddr = document.getElementById("rudus_daddr").value;

			this.gdirections.load("from: "+ ru_saddr+" to: "+ ru_daddr);
			
			//TODO gdirections debug
		}
		
		// === Array for decoding the failure codes ===
		this.reasons=[];
		this.reasons[G_GEO_SUCCESS]            = "Koordinaattihaku onnistui"; //TODO käännetään loput mikäli tarwitaan.
		this.reasons[G_GEO_MISSING_ADDRESS]    = "Puuttuva osoite: Osoite puuttui tai oli tyhjä. Missing Address: The address was either missing or had no value.";
		this.reasons[G_GEO_UNKNOWN_ADDRESS]    = "Tuntematon osoite: Osoitteelle ei löytynyt maantieteellistä sijaintia. Unknown Address:  No corresponding geographic location could be found for the specified address.";
		this.reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Osoite ei saatavilla: Osoitteen sijaintia ei voitu palauttaa laillisista tai sopimusteknisistä syistä. Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
		this.reasons[G_GEO_BAD_KEY]            = "Virheellinen google-avain: API-avain on virheellinen tai ei sovi verkkotunnukseen jolle se on myönnetty. Bad Key: The API key is either invalid or does not match the domain for which it was given";
		this.reasons[G_GEO_TOO_MANY_QUERIES]   = "Liian monta hakua: Päivittäinen hakumäärä tälle verkkopalvelulle on ylitetty. Too Many Queries: The daily geocoding quota for this site has been exceeded.";
		this.reasons[G_GEO_SERVER_ERROR]       = "Palvelinvirhe: geokoodauspyyntöä ei voitu käsitellä. Server error: The geocoding request could not be successfully processed.";
		this.reasons[G_GEO_BAD_REQUEST]        = "Reirrihakupyyntöä ei voitu onnistuneesti käsitellä. A directions request could not be successfully parsed.";
		this.reasons[G_GEO_MISSING_QUERY]      = "Syötteelle ei määritelty hakua. No query was specified in the input.";
		this.reasons[G_GEO_UNKNOWN_DIRECTIONS] = "Reittihaku-objekti ei voinut laskea ajo-ohjeita pisteiden välille. The GDirections object could not compute directions between the points.";
		
		var tmpMap = this;
		
		// === catch Directions errors ===
		this.gDirectionsStatus = function() {
			var code = tmpMap.gdirections.getStatus().code;
			var reason="Code "+code;
			if (tmpMap.reasons[code]) {
				reason = tmpMap.reasons[code]
			}
			
			//Lisätään epäonnistuneen haun pisteet
			var searchAddr = document.getElementById(tmpMap.direlem).value;
			
			msgText = "Reittihaku '" + searchAddr + "' epäonnistui, ";
			
			alert(msgText+reason);
			tmpMap.printMsg((msgText+reason)); //errorize
		}
		
		GEvent.addListener(this.gdirections, "error", this.gDirectionsStatus);
		
		return this; //*palautetaan viite mapponaattoriin*
		
	} else { <!-- Ei yhteensopiva selain -teksti esille -->
				this.printMsg("Selaimesi ei valitettavasti ole yhteensopiva karttapalvelun kanssa. Your Browser is not compatible with maps.");
				return false;
	}
} /* end Mapponator */

//TEMPORARY MARKER VARS

/* Toimipaikkaolio */

function Toimipaikka(argArray, mapRefe, behaviourType, markerNum) {
	
	//Requires: reittihaku olettaa että sivulla oleva kartta on 'mapX'
	
	//Toimipaikka-muuttujat *************************

	this.tpnum = argArray[0]; //ID toimipaikkakortista linkkejä varten
	this.tpnimi = argArray[1];
	this.katuosoite = argArray[2];
	this.paikkakunta = argArray[3];
	this.puhelin = argArray[4];
	this.puhelin2 = argArray[5];
	this.coordy = argArray[6];
	this.coordx = argArray[7];
	this.ltietoja = argArray[8];

	this.raine = "";
	this.aukiolo = "";

	// Mapponator-muuttujat *************************
	this.markerNumber = markerNum;
	this.myMap = mapRefe;
	
	//Behaviour -types (onClick): 
	//a = basic IW, b = ExtInfoWindow, c = onClick2Url@id
	this.behaviourType = behaviourType; 
	
	// GMaps-muuttujat ******************************
	this.addr = this.tpnimi + "@" + this.coordx + "," + this.coordy;
	this.gpoint = 0;
	this.geokoodaaja = 0;
	this.gicon = 0;
	this.gmarker = 0;
	
	//HTML-sisällöt ********************************** 
	this.getIWHTML = function() {
		var tmpStr = '<div class="karttaIW"><h2>';
		if (this.tpnimi.length > 1) {	tmpStr += this.tpnimi + '</h2>'; }
		if (this.katuosoite.length > 1) {	tmpStr += '</div><div class="tpinfo">' + this.katuosoite; }
		if (this.paikkakunta.length > 1) {	tmpStr += '</div><div class="tpinfo">' + this.paikkakunta; }
		if (this.puhelin.length > 1) {	tmpStr += '</div><div class="tpinfo">' + this.puhelin; }
		if (this.puhelin2.length > 1) {	tmpStr += '</div><div class="tpinfo">' + this.puhelin2; } 
		if (this.ltietoja.length > 1) {	tmpStr += '</div><div class="tpinfo">' + this.ltietoja; }

		//Reittihakulinkit
		tmpStr += '<table class="reitthaku" cellpadding="0" cellspacing="0"><tr><td><br/></td></tr>';
		tmpStr += '<tr><th>Reittihaku:</th></tr><tr><td><a href="javascript:mapX.showiwtohere(' + this.tpnum + ');">Reitti toimipisteeseen</a>&#160';
		tmpStr += '<tr><td><a href="javascript:mapX.showiwfromhere(' + this.tpnum + ');">Reitti toimipisteestä</a>&#160';
		
		tmpStr += '</table>';
		tmpStr += '<div class="height_padder"><br /></div>';
		
		/* tmpStr += '<div id="rudus_iw_beak2"></div>'; // tätä tarvitaan vain extended infowindow'n kanssa */
		/* <img src="/images/customer/rudus_iw_beak_wide.gif" />*/
		
		this.gmarker_iw_html = tmpStr;
	}
	
	this.getIWToHTML = function () {
		var tmpStr = this.gmarker_iw_html + 'Reittihaku toimipaikasta<br/>Syötä katuosoite ja kaupunki:<br/><span style="font-size: smaller; color: grey;">(esim.  Jaakonkatu 2, Vantaa).</span><form action="javascript:mapX.getDirections(' + "'a'" + ');">' +
						   '<input type="text" SIZE="40" MAXLENGTH="40" name="rudus_daddr" id="rudus_daddr" value="" /><br/><INPUT class="reittiSubmit" value="Hae Reitti" TYPE="SUBMIT" />' +
						   '<input type="hidden" id="rudus_saddr" name="rudus_saddr" value="'+ this.addr + '"/></form><br/>';
		this.gmarker_iw_to_html = tmpStr; 
	}
	
	this.getIWFromHTML = function () {
		var tmpStr = this.gmarker_iw_html + 'Reittihaku toimipaikkaan<br/>Syötä katuosoite ja kaupunki:<br/><span style="font-size: smaller; color: grey;">(esim. Jaakonkatu 2, Vantaa).</span><form action="javascript:mapX.getDirections(' + "'b'" + ');">' +
							'<input type="text" SIZE="40" MAXLENGTH="40" name="rudus_saddr" id="rudus_saddr" value="" /><br/><INPUT class="reittiSubmit" value="Hae Reitti" TYPE="SUBMIT" />' +
							'<input type="hidden" id="rudus_daddr" name="rudus_daddr" value="'+ this.addr + '"/></form><br/>';
		this.gmarker_iw_from_html	=  tmpStr; 
	}
	
	this.getIWHTML();
	this.getIWToHTML();
	this.getIWFromHTML();
    
	//markers ****************************************
	//Normaali Infowindow
	this.createMarkerWithInfoWindow = function(mapRef, point, htmlcontent) {
		//Ikoni ja InfoWindow -muotoilu
		
		//Icon
		ucon = new GIcon(G_DEFAULT_ICON); //this.createTpIcon();
		ucon.infoWindowAnchor = new GPoint(15, 0);	
		
		//GMarkerOptions
		markerOptions = { icon:ucon, title: this.tpnimi }; //TODO ICONREF
		
		//Marker
		this.gmarker = new GMarker(this.gpoint, markerOptions); 
		
		var tmpTp = this;
		
		//IW onclick listener
    GEvent.addListener(this.gmarker, "click", function() {
      tmpTp.myMap.setCenter(mapX.gmarkerobjs[tmpTp.tpnum].gpoint, 12);
    });

		GEvent.addListener(this.gmarker, "mouseover", function() {
				//Infowindow
				tmpTp.gmarker.openInfoWindow(tmpTp.gmarker_iw_html + "<br/>"); //toimii, ei tyylitetty
				tmpTp.myMap.setCenter(this.gpoint); //keskitys klikattuun markeriin
		});

		
		mapRef.addOverlay(this.gmarker);
		
		return this.gmarker;
	}

	//Extended Info Window
	this.createMarkerWithExtInfoWindow = function(mapRef, point, htmlcontent) {
		//Ikoni ja InfoWindow -muotoilu
		
		//Icon
		ucon = new GIcon(G_DEFAULT_ICON); //this.createTpIcon();
		
		//GMarkerOptions
		markerOptions = { icon:ucon, title: this.tpnimi }; //TODO ICONREF
		
		//Marker
		this.gmarker = new GMarker(this.gpoint, markerOptions); 
		
		var tmpTp = this;
		
		//IW onclick listener
		GEvent.addListener(this.gmarker, "click", function() {
				tmpTp.gmarker.openExtInfoWindow(mapRef, "rudus_iw", tmpTp.gmarker_iw_html, {beakOffset: 3});
				tmpTp.myMap.setCenter(this.gpoint); //keskitys klikattuun markeriin? 
		});
		
		mapRef.addOverlay(this.gmarker);
		
		return this.gmarker;
	}
	
	//Normaali Infowindow
	this.createMarkerWithOnClickToUrl = function(mapRef, point) {
		//Ikoni ja InfoWindow -muotoilu
		
		//Icon
		ucon = new GIcon(G_DEFAULT_ICON); //this.createTpIcon();
		ucon.infoWindowAnchor = new GPoint(15, -35);	
		
		//GMarkerOptions
		markerOptions = { icon:ucon, title: this.tpnimi }; //TODO ICONREF
		
		//Marker
		this.gmarker = new GMarker(this.gpoint, markerOptions); 
		
		var tmpTp = this;
		
		//IW onclick listener
		GEvent.addListener(this.gmarker, "click", function() {
				//Klikatessa toinen sivu toimipaikkaolion idllä
				theUrl =  window.location.href + "/?intProductID=" + tmpTp.tpid;
				location.href = theUrl;
		});
		
		mapRef.addOverlay(this.gmarker);
		
		return this.gmarker;
	}

	
	//Marker openers ***********
	this.openInfoWindowExpHtml = function(mode) {
		if (mode=='a') {
			this.gmarker.openInfoWindow(this.gmarker_iw_html);
		}
		if (mode=='b') {
			this.gmarker.openInfoWindow(this.gmarker_iw_from_html);
		}
		if (mode=='c') {
			this.gmarker.openInfoWindow(this.gmarker_iw_to_html);
		}
	}
	
	this.openExtInfoWindowExpHtml = function(mode) {
		if (mode==0) {
			this.gmarker.openExtInfoWindow(this.myMap, "rudus_iw", this.gmarker_iw_html, {beakOffset: 3});
		}
		if (mode==1) {
			this.gmarker.openExtInfoWindow(this.myMap, "rudus_iw", this.gmarker_iw_to_html, {beakOffset: 3});
		}
		if (mode==2) {
			this.gmarker.openExtInfoWindow(this.myMap, "rudus_iw", this.gmarker_iw_from_html, {beakOffset: 3});		
		}
	}
	
	/* function closeExtInfoWindowHtml() {
		//todo, hide jos tarvitsee, tai offset off-map
	} */
	
	//Geokoodaaja ***********************************
	this.geoEncodeCallback = function(returnedArg) {
		if (!returnedArg) { //jos vastaus tyhjä
			//TODO Osoitetta ei löytynyt error on page
			this.myMap.printMsg("Osoitetta ei löytynyt");
			this.geokoodaaja = 0;
		} else {
			//alert("OUT: " +returnedArg + " urlval " + returnedArg.toUrlValue());
			this.gpoint = returnedArg;
			this.addr = '<xsl:value-of select="$kartta_nimi"/>@';
			this.addr += returnedArg.toUrlValue();
			this.geokoodaaja = 0;
		}
	}
	
	this.geoEncodeAddress = function (osoiteStr) {
		// Geokoodaaja osoitteen selvittämiseksi
		this.geokoodaaja = new GClientGeocoder();
		
		// sijainti osoitteella, vastausfunktio
		this.geokoodaaja.getLatLng(osoiteStr, this.geoEncodeCallback);
	}
	
	//ALUSTUS/INIT ***********************************
	//*************************************************
	
	//--coords from coords or address
	if (this.coordx.length>3 && this.coordy.length>3) { //Coords ok?
		//gpoint
		this.gpoint = new GLatLng(this.coordx, this.coordy);
		//addr
		this.addr = this.tpnimi + '@' + this.gpoint.toUrlValue();
	} else if (this.katuosoite.length>10) {	//else Address ok?
		//geocode
		this.geoEncodeAddress(this.katuosoite);
	}
	
	if (this.behaviourType=='a') { //Normal
		this.gmarker = this.createMarkerWithInfoWindow(this.myMap, this.gpoint, this.gmarker_iw_html);
	} else if (this.behaviourType=='b') { //Extended
		this.gmarker = this.createMarkerWithExtInfoWindow(this.myMap, this.gpoint, this.gmarker_iw_html);
	} else if (this.behaviourType=='c') { // On Click 2 Toimipaikka
		this.gmarker = this.createMarkerWithOnClickToUrl(this.myMap, this.gpoint);
	}
	
	return this;
	
} //end toimipaikkaolio

function load(strArea) {

  var tpArr = new Array(); <!-- //jono tp-argumenteille -->

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Finland Oy, Hallinto ja markkinointi");
	tmpArgArr.push("Malminkatu 30, 7. kerros");
	tmpArgArr.push("00100 Helsinki");
	tmpArgArr.push("Puh +358-(0)46-710 2500");
	tmpArgArr.push("");
	tmpArgArr.push("24.927693");
	tmpArgArr.push("60.167877");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Kamppi");
	tmpArgArr.push("Malminkatu 30, 1. krs");
	tmpArgArr.push("00100 Helsinki");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2540");
	tmpArgArr.push("24.927693");
	tmpArgArr.push("60.167877");
	tmpArgArr.push("<br/><h2>Adecco Finland Oy</h2>Hallinto ja markkinointi<br/>Malminkatu 30, 7. kerros<br/>00100 Helsinki<br/>Puh +358-(0)46-710 2500");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Dataset");
	tmpArgArr.push("Opastinsilta 8 B");
	tmpArgArr.push("00520 Helsinki");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2535");
	tmpArgArr.push("24.939702");
	tmpArgArr.push("60.199460	");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Espoo");
	tmpArgArr.push("Metsänneidonkuja 10 (Spektri)");
	tmpArgArr.push("02130 Espoo");
	tmpArgArr.push("Puh. +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax: +358- (0)46-710 2537");
	tmpArgArr.push("24.805830");
	tmpArgArr.push("60.187657");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Vantaa");
	tmpArgArr.push("Jaakonkatu 2");
	tmpArgArr.push("01620 Vantaa");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2541");
	tmpArgArr.push("24.853108");
	tmpArgArr.push("60.284296");
	tmpArgArr.push("");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Tampere");
	tmpArgArr.push("Hallituskatu 7");
	tmpArgArr.push("33100 Tampere");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2552");
	tmpArgArr.push("23.758989");
	tmpArgArr.push("61.496584");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco - TTY Urapalvelut");
	tmpArgArr.push("Korkeakoulunkatu 10, PL 527");
	tmpArgArr.push("33101 Tampere");
	tmpArgArr.push("Puh +358-(0)3-3115 3500");
	tmpArgArr.push("Fax +358-(0)3-3115 3778");
	tmpArgArr.push("23.858825");
	tmpArgArr.push("61.449541");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Turku");
	tmpArgArr.push("Mehiläisentalo, Kauppiaskatu 8");
	tmpArgArr.push("20100 Turku");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2553");
	tmpArgArr.push("22.266788");
	tmpArgArr.push("60.452769");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Oulu");
	tmpArgArr.push("Saaristonkatu 2");
	tmpArgArr.push("90100 Oulu");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2549");
	tmpArgArr.push("25.465457");
	tmpArgArr.push("65.011979");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Jyväskylä");
	tmpArgArr.push("Yliopistonkatu 18");
	tmpArgArr.push("40100 Jyväskylä");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2545");
	tmpArgArr.push("25.740656");
	tmpArgArr.push("62.241496");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Lahti");
	tmpArgArr.push("Hämeenkatu 20 (sisäänkäynti Kauppakeskuksen kautta)");
	tmpArgArr.push("15110 Lahti");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2548");
	tmpArgArr.push("25.658830");
tmpArgArr.push("60.981876");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Vaasa");
	tmpArgArr.push("Pitkäkatu 42");
	tmpArgArr.push("65100 Vaasa");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2554");
	tmpArgArr.push("21.619992");
	tmpArgArr.push("63.094983");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Joensuu");
	tmpArgArr.push("Siltakatu 12 A, 2. kerros,");
	tmpArgArr.push("80100 Joensuu");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2544");
	tmpArgArr.push("29.750669");
	tmpArgArr.push("62.603551");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Seinäjoki");
	tmpArgArr.push("Keskuskatu 11");
	tmpArgArr.push("60100 Seinäjoki");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Tel +358-(0)46-710 2551");
	tmpArgArr.push("22.837785");
	tmpArgArr.push("62.790836");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Kotka");
	tmpArgArr.push("Koulukatu 12");
	tmpArgArr.push("48100 Kotka");
	tmpArgArr.push("Puh +358-(0)46- 710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2546");
	tmpArgArr.push("26.935909");
	tmpArgArr.push("60.462214");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Hyvinkää");
	tmpArgArr.push("Uudenmaankatu 1 A 15");
	tmpArgArr.push("05800 Hyvinkää");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2536");
	tmpArgArr.push("24.857795");
	tmpArgArr.push("60.629758");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Rauma");
	tmpArgArr.push("Satamakatu 1");
	tmpArgArr.push("26100 Rauma");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2550");
	tmpArgArr.push("21.491965");
	tmpArgArr.push("61.129282");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Kuopio");
	tmpArgArr.push("Kauppakatu 18");
	tmpArgArr.push("70100 Kuopio");
	tmpArgArr.push("Puh +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("Fax +358-(0)46-710 2547");
	tmpArgArr.push("27.681549");
	tmpArgArr.push("62.891788");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Lohja");
	tmpArgArr.push("Suurlohjankatu 10, 3.krs,");
	tmpArgArr.push("08100 Lohja");
	tmpArgArr.push("puh. +358-(0)46-710 2500 (vaihde)");
	tmpArgArr.push("");
	tmpArgArr.push("24.069308");
	tmpArgArr.push("60.251179");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Rovaniemi");
	tmpArgArr.push("Valtakatu 20");
	tmpArgArr.push("96200 Rovaniemi");
	tmpArgArr.push("");
	tmpArgArr.push("");
	tmpArgArr.push("25.734024");
	tmpArgArr.push("66.502005");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Salo");
	tmpArgArr.push("Turuntie 9, 2. krs");
	tmpArgArr.push("24240 Salo");
	tmpArgArr.push("Puh. 046 710 2500 (vaihde)");
	tmpArgArr.push("");
	tmpArgArr.push("23.124323");
	tmpArgArr.push("60.388197");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Pori");
	tmpArgArr.push("Pohjoisranta 11 A");
	tmpArgArr.push("28100 Pori");
	tmpArgArr.push("Puh. 046 710 2500 (vaihde)");
	tmpArgArr.push("");
	tmpArgArr.push("21.798576");
	tmpArgArr.push("61.492436");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Porvoo");
	tmpArgArr.push("Linnankoskenkatu 41 A 5");
	tmpArgArr.push("06100 Porvoo");
	tmpArgArr.push("Puh. 046 710 2500 (vaihde)");
	tmpArgArr.push("");
	tmpArgArr.push("25.672966");
	tmpArgArr.push("60.389421");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

	var tmpArgArr = new Array();
	tmpArgArr.push(tpArr.length);
	tmpArgArr.push("Adecco Salo");
	tmpArgArr.push("Turuntie 9, 2krs");
	tmpArgArr.push("24240 Salo");
	tmpArgArr.push("Puh. 046 710 2500 (vaihde)");
	tmpArgArr.push("");
	tmpArgArr.push("23.124323");
	tmpArgArr.push("60.388197");
	tmpArgArr.push("");
	tpArr.push(tmpArgArr);

  mapX = new Mapponator(); //karttaa sivuun!

  y = tpArr.length;
	for(i=0; i < y; i++) {
		mapX.createMarkerObject(tpArr[i], 'a'); <!-- //onClickToToimipaikkakortti -markers -->
	}

	//Arvioidaan sijainti ja keskitetään kartta sijaintiin
	switch(strArea) {
		case "Helsinki":
			mapX.gmapobj.setCenter(new GLatLng(60.185, 24.938), 12);
			break;  
		case "Espoo":
			mapX.gmapobj.setCenter(new GLatLng(60.187, 24.805), 13);
			break;  
		case "Vantaa":
			mapX.gmapobj.setCenter(new GLatLng(60.284, 24.853), 13);
			break;
		case "Tampere":
			mapX.gmapobj.setCenter(new GLatLng(61.479, 23.799), 11);
			break;
		case "Turku":
			mapX.gmapobj.setCenter(new GLatLng(60.452, 22.266), 13);
			break;
		case "Oulu":
			mapX.gmapobj.setCenter(new GLatLng(65.011, 25.465), 13);
			break;
		case "Jyv%c3%a4skyl%c3%a4":
			mapX.gmapobj.setCenter(new GLatLng(62.241, 25.740), 13);
			break;
		case "Lahti":
			mapX.gmapobj.setCenter(new GLatLng(60.981, 25.658), 13);
			break;
		case "Vaasa":
			mapX.gmapobj.setCenter(new GLatLng(63.094, 21.619), 13);
			break;
		case "Joensuu":
			mapX.gmapobj.setCenter(new GLatLng(62.603, 29.750), 13);
			break;
		case "Sein%c3%a4joki":
			mapX.gmapobj.setCenter(new GLatLng(62.790, 22.837), 13);
			break;
		case "Kotka":
			mapX.gmapobj.setCenter(new GLatLng(60.462, 26.935), 13);
			break;
		case "Hyvink%c3%a4%c3%a4":
			mapX.gmapobj.setCenter(new GLatLng(60.629, 24.857), 13);
			break;
		case "Rauma":
			mapX.gmapobj.setCenter(new GLatLng(61.129, 21.491), 13);
			break;
		case "Kuopio":
			mapX.gmapobj.setCenter(new GLatLng(62.891, 27.681), 13);
			break;
		case "Lohja":
			mapX.gmapobj.setCenter(new GLatLng(60.251, 24.069), 13);
			break;
		case "Rovaniemi":
			mapX.gmapobj.setCenter(new GLatLng(66.502, 25.734), 13);
			break;
		case "Salo":
			mapX.gmapobj.setCenter(new GLatLng(60.388, 23.124), 13);
			break;
		case "Pori":
			mapX.gmapobj.setCenter(new GLatLng(61.492, 21.798), 13);
			break;
		case "Porvoo":
			mapX.gmapobj.setCenter(new GLatLng(60.389, 25.672), 13);
			break;
		default:
			mapX.gmapobj.setCenter(new GLatLng(60.185, 24.938), 12);
//			mapX.getBoundingBoxPoints(); //keskitetään kartta
		}
}
