/* 
GOOGLE MAP INTEGRATION IN THE ARTICLE VIEW PAGE
V 2.0.3 by Julien Silva/Pascal Mollet @ ricardo.ch | 09.03.2010 - 10:45

*/

/*
Modified by Marco Ciarfaglia 17.05.2010 - 14:00
gets parameters from url and split
*/
function getGETParameter( name ){
	name = name.replace(/[\[]/,'\\\[').replace(/[\]]/,'\\\]');
	var regexS = '[\\?&]'+name+'=([^&#]*)';
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
	  return '';
		else
		  return results[1];
}

//gets city out of <span> tag in article view page
var urlstring=(location.href);
if (urlstring.indexOf("/v/an")!=-1 || urlstring.indexOf("/viewitem.asp")!=-1) {
	var citySpan = document.getElementById('city');
	var sellerView = getGETParameter('ComeFromMyPages');
	if (sellerView == '1'){
		citySpan.innerHTML = '<img src="https://images.qxlricardo.com/ImgWeb/2/V4/googlemaps/house.png" alt="Google Maps"> '+citySpan.innerHTML+' ';
	}else{
	citySpan.innerHTML = '<a href="javascript:usePointFromPostcodeViaCache(\''+citySpan.innerHTML+', Schweiz\')" onClick="javascript:pageTracker._trackPageview(\'/gmaps\');"><img src="https://images.qxlricardo.com/ImgWeb/2/V4/googlemaps/house.png" alt="Google Maps"></a> <a href="javascript:usePointFromPostcodeViaCache(\''+citySpan.innerHTML+'\')" onClick="javascript:pageTracker._trackPageview(\'/gmaps\')">'+citySpan.innerHTML+'</a>';
	}
}

var map = null; // map is cleared
var geocoder = null; // geocode is cleared
var aucwatch = document.getElementById('aucwatch1'); // anchor within article view page
var divClose = document.createElement("div"); // close gmap app div
divClose.setAttribute("id", "googleclose");
var div = document.createElement("div");
div.setAttribute("id", "map_canvas");

//creates div after the aucwatch link in the article view page
function insertAfter(newElement,targetElement) {
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	} else {
		parent.insertBefore(newElement,targetElement.nextSibling);
	}
}

//starts map app and creates map in div
function initialize() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas"));
	}
}

//clears divs and remove them afterwards
function closeGoogle() {
	//clears map div
	while (div.firstChild) {
		div.removeChild(div.firstChild);
	}
	// clears div with closing link
	while (divClose.firstChild) {
		divClose.removeChild(divClose.firstChild);
	}
	// clears the remaining 2 divs (the now empty "close google" and map divs)
	var i = 0;  
	while (i < 2) { 
		aucwatch.parentNode.removeChild(aucwatch.nextSibling);
		i++;
	}  
}

function createRequest() {
// create an Ajax Request
var ajaxRequest;
try {
	ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e1) {
	try {
		ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (e2) {
		ajaxRequest = new XMLHttpRequest();
	}
}
return ajaxRequest;
}

function usePointFromPostcodeViaCache(city) {
	var postalCode = city.split(' ');
	var postcode = postalCode[0];
		
	insertAfter(divClose, aucwatch);
	insertAfter(div, divClose);
	initialize();  
	var localSearch = new GlocalSearch();
	var ajax_connection = createRequest();
	ajax_connection.open('get', "/ajax/googlemaps/inc/geocode.php?postcode=" + postcode);

	// setup the function to deal with the reply
	ajax_connection.onreadystatechange = function(){
	if (ajax_connection.readyState == 4) {
		map.clearOverlays();
		var xmlDoc = ajax_connection.responseXML;
		var markers = xmlDoc.documentElement.getElementsByTagName("location");
		if (markers.length > 0) {
			var resultLat = markers[0].getAttribute('latitude');
			var resultLng = markers[0].getAttribute('longitude');
			var point = new GLatLng(resultLat,resultLng);
			var marker = new GMarker(point);
			var urlString = (location.href);
			if (urlString.indexOf("www.ricardo.ch")!=-1) {
				var html = '<div style="width:240px;line-height:1.6em;text-align:left;font-size:12px"><span style="font-size:10px;color:grey">Markierung auf Karte ist ein N&auml;herungswert</span><br>In dieser Ortschaft wohnt der Verk&auml;ufer.<br> <a href="http://maps.google.com/maps?saddr=&daddr=' + point.toUrlValue() + '" target ="_blank">Route nach hierhin</a>';
			} else {
				var html = '<div style="width:240px;line-height:1.6em;text-align:left;font-size:12px">Le vendeur habite dans ces alentours.<br> <a href="http://maps.google.com/maps?saddr=&daddr=' + point.toUrlValue() + '" target ="_blank">Route vers cette r&eacute;gion</a>';
			};
			map.setCenter(point, 11);
			map.addOverlay(marker);
			marker.openInfoWindowHtml(html);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
		} else {
			localSearch.setSearchCompleteCallback(null, 
				function() {
					if (localSearch.results[0]) {		
						var resultLat = localSearch.results[0].lat;
						var resultLng = localSearch.results[0].lng;
						var point = new GLatLng(resultLat,resultLng);
						var marker = new GMarker(point);
						var urlString = (location.href);
						if (urlString.indexOf("www.ricardo.ch")!=-1) {
							var html = '<div style="width:240px;line-height:1.6em;text-align:left;font-size:12px"><span style="font-size:10px;color:grey">Markierung auf Karte ist ein N&auml;herungswert</span><br>In dieser Ortschaft wohnt der Verk&auml;ufer.<br> <a href="http://maps.google.com/maps?saddr=&daddr=' + point.toUrlValue() + '" target ="_blank">Route nach hierhin</a>';
						} else {
							var html = '<div style="width:240px;line-height:1.6em;text-align:left;font-size:12px">Le vendeur habite dans ces alentours.<br> <a href="http://maps.google.com/maps?saddr=&daddr=' + point.toUrlValue() + '" target ="_blank">Route vers cette r&eacute;gion</a>';
						};
						map.setCenter(point, 11);
						map.addOverlay(marker);
						marker.openInfoWindowHtml(html);
						map.addControl(new GLargeMapControl());
						map.addControl(new GMapTypeControl());
						var ajax_connection = createRequest();
						ajax_connection.open('get', "/ajax/googlemaps/inc/cache.php?postcode=" + postcode + "&latitude=" + resultLat + "&longitude=" + resultLng);
						ajax_connection.send(null);
					} else {
						alert("Postcode not found!");
					}
				});
			localSearch.execute(city +", Switzerland");
		}
	}
}
	divClose.style.display = "block";
	div.style.display = "block";
	ajax_connection.send(null);
	divClose.innerHTML = '<a href="javascript:closeGoogle();"><img src="https://images.qxlricardo.com/ImgWeb/2/V4/googlemaps/cancel.png" alt="Schliessen"></a> <a href="javascript:closeGoogle();">Schliessen</a>';
	window.location.hash = "#aucwatch";
}

// lol.
if ( window.addEventListener )
{
	var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
	window.addEventListener("keydown", function(e)
	{
		kkeys.push(e.keyCode);
		if (kkeys.toString().indexOf(konami) >= 0 )
		{
			$('body').css('background-image','url(https://images.qxlricardo.com/ImgWeb/2/V4/misc/ricardo_hand.png)');
			$('#main').css('background-color','white');
			$('#main').css('padding','15px');
		}
	}, true);
}
