/*
File : game.js 
18/01/09

geolinko project
copyright : Geolinko
*/
var NB_ENIGMES = 10;

var TEXT_SEARCHING_NOUNOURS;
var TEXT_BRAVO;
var TEXT_NEXT_STEP;
var TEXT_GOOD_TRIP;
var TEXT_NOUNOURS_SAVED;
var TEXT_WINNER;
var TEXT_GAGNE;
var TEXT_SAVE_OK;
var TEXT_GAME_RESTORED;

//french
var TEXT_SEARCHING_NOUNOURS_FR = "A la recherche de Nounours...";
var TEXT_BRAVO_FR = "Bravo !!!";
var TEXT_NEXT_STEP_FR = "<u>Prochaine &eacute;tape</u> :";
var TEXT_GOOD_TRIP_FR = "Bonne route !";
var TEXT_NOUNOURS_SAVED_FR = "Enfin... MERCI !!!";
var TEXT_WINNER_FR = "Toutes nos f&eacute;licitations, vous avez retrouv&eacute; Nounours !<br>Pour savoir si vous &ecirc;tes le premier, sauvegardez votre partie...<br>";
var TEXT_GAGNE_FR = "GAGN&Eacute; !!!";
var TEXT_SAVE_OK_FR = "Votre partie a &eacute;t&eacute; sauvegard&eacute;e.";
var TEXT_GAME_RESTORED_FR = "Partie restaur&eacute;e.";
var TEXT_GAME_NO_SAVE_FR = "Aucune partie enregistr&eacute;e.";
var TEXT_FIRST_WINNER_FR = "<b>Vous &ecirc;tes le premier &agrave; avoir retrouv&eacute; Nounours ! Vous &ecirc;tes le GAGNANT !!!</b><br><br>Pour recevoir la visite de Nounours, envoyez-nous un mail &agrave; geolinko@free.fr avec votre nom et votre adresse.";
var TEXT_NOT_FIRST_WINNER_FR = "D&eacute;sol&eacute;, une autre personne avait d&eacute;j&agrave; retrouv&eacute; Nounours...";

//english
var TEXT_SEARCHING_NOUNOURS_EN = "Saving Teddy bear...";
var TEXT_BRAVO_EN = "Congratulations !!!";
var TEXT_NEXT_STEP_EN = "<u>Next step</u> :";
var TEXT_GOOD_TRIP_EN = "Have a good trip !";
var TEXT_NOUNOURS_SAVED_EN = "Fine... MANY THANKS !!!";
var TEXT_WINNER_EN = "Congratulations, you've found Teddy bear !<br>To find out if you're the first, save your game...<br>";
var TEXT_GAGNE_EN = "WON !!!";
var TEXT_SAVE_OK_EN = "Game saved.";
var TEXT_GAME_RESTORED_EN = "Game restored.";
var TEXT_GAME_NO_SAVE_EN = "No game registred.";
var TEXT_FIRST_WINNER_EN = "<b>You're the first to find Teddy bear ! You are the WINNER !!!</b><br><br>To receive a visit from Teddy bear, send us a mail at geolinko@free.fr with your name and address.";
var TEXT_NOT_FIRST_WINNER_EN = "Sorry... you are not the first registred winner...";

var start_game_place = "Paris, France";
var start_game_lat ="48.8566667";
var start_game_lng ="2.3509871";

var nounoursFound = new Array();

var title_photo = new Array();
title_photo[2] = 'etoile285';
title_photo[3] = 'newyork423';
title_photo[4] = 'victoriafalls190';
title_photo[5] = 'pisetour427';
title_photo[6] = 'citeinterdite801';
title_photo[7] = 'sphinx662';
title_photo[8] = 'tajmahal305';
title_photo[9] = 'berlincharlie598';

function initializeGame(langue) {
	switch (langue) {
		case 'french' :
			TEXT_SEARCHING_NOUNOURS = TEXT_SEARCHING_NOUNOURS_FR;
			TEXT_BRAVO = TEXT_BRAVO_FR;
			TEXT_NEXT_STEP = TEXT_NEXT_STEP_FR;
			TEXT_GOOD_TRIP = TEXT_GOOD_TRIP_FR;
			TEXT_NOUNOURS_SAVED = TEXT_NOUNOURS_SAVED_FR;
			TEXT_WINNER = TEXT_WINNER_FR;
			TEXT_GAGNE = TEXT_GAGNE_FR;
			TEXT_SAVE_OK = TEXT_SAVE_OK_FR;
			TEXT_GAME_RESTORED = TEXT_GAME_RESTORED_FR;
			TEXT_GAME_NO_SAVE = TEXT_GAME_NO_SAVE_FR;
			TEXT_FIRST_WINNER = TEXT_FIRST_WINNER_FR;
			TEXT_NOT_FIRST_WINNER = TEXT_NOT_FIRST_WINNER_FR;			
			break;
		default :
			TEXT_SEARCHING_NOUNOURS = TEXT_SEARCHING_NOUNOURS_EN;
			TEXT_BRAVO = TEXT_BRAVO_EN;
			TEXT_NEXT_STEP = TEXT_NEXT_STEP_EN;
			TEXT_GOOD_TRIP = TEXT_GOOD_TRIP_EN;
			TEXT_NOUNOURS_SAVED = TEXT_NOUNOURS_SAVED_EN;
			TEXT_WINNER = TEXT_WINNER_EN;
			TEXT_GAGNE = TEXT_GAGNE_EN;
			TEXT_SAVE_OK = TEXT_SAVE_OK_EN;				
			TEXT_GAME_RESTORED = TEXT_GAME_RESTORED_EN;
			TEXT_GAME_NO_SAVE = TEXT_GAME_NO_SAVE_EN;
			TEXT_FIRST_WINNER = TEXT_FIRST_WINNER_EN;
			TEXT_NOT_FIRST_WINNER = TEXT_NOT_FIRST_WINNER_EN;				
			break;				
		}
	if (isIE6()) jAlertWarning(ALERT_IE6, '');
	if (langue) userLanguage = langue;
	document.getElementById('map_canvas_consultation').innerHTML = '<table width="100%"><tr><td align="center"><br><br><br><br><br><br>'+TEXT_WAITING_END_OF_LOAD+'</td></tr></table>';
	if (!isIE6()) initializeCentrageCSS('centrage_consult');
	mode = 5;

	MAX_SEARCH_AREA = 10000;
	
	document.getElementById('loading').style.display='none';
	setSmallHeader(false);					
	
	initializeMap('map_canvas_consultation');	
	latlngAnnounce = new GLatLng(start_game_lat, start_game_lng);	
	polyZoneIntervention = drawKmCircle_A({radius:0.5, polygon: true});	
	savePoly = copyPolyzone(polyZoneIntervention);
	map.addOverlay(polyZoneIntervention);
	document.getElementById('address').value = start_game_place;	
	setMarkerAddressGame(start_game_place);
//	showServices();
	document.getElementById('address').focus();
}

function setMarkerPositionGame(latlng) {
var point;
    if (!latlng) {
        jAlertWarning(ALERT_NAH_AJAX_MESS1, '');
        } else {
				map.panTo(latlng);					
				setLatLngCookies(latlng);
				document.getElementById('gpsLat').value = latlng.lat();
				document.getElementById('gpsLng').value = latlng.lng();
				if (markerLocalisation) {		
					markerLocalisation.setLatLng(latlng);
					point = latlngAnnounce;
					latlngAnnounce=latlng; // ajout 26/08/09
					movePolyzoneGame(polyZoneIntervention, point, latlngAnnounce);
					showNounours();				
					}
					else {				
						if (isIE6()) var ico = new GIcon(G_DEFAULT_ICON);
							else var ico = new GIcon(G_DEFAULT_ICON, plainIcon('iconwhite'));
						markerLocalisation = new GMarker(latlng, {clickable:false, draggable:true, icon:ico});
						latlngAnnounce=latlng;
						GEvent.addListener(markerLocalisation, "dragend", function() {					
							point = latlngAnnounce;
							latlngAnnounce=markerLocalisation.getLatLng();
							document.getElementById('gpsLat').value = latlngAnnounce.lat();
							document.getElementById('gpsLng').value = latlngAnnounce.lng();								
							setLatLngCookies(latlngAnnounce);
							if (point) movePolyzoneGame(polyZoneIntervention, point, latlngAnnounce);
							showNounours();
							});					
						map.addOverlay(markerLocalisation);
						showNounours();							
						}
				}			
}

function setMarkerAddressGame(address) {
      if (geocoder) {
        geocoder.getLatLng(address, function (point) {
            if (!point) {
              jAlertWarning(address + ALERT_NAH_AJAX_MESS2, '');
            } else {
				setMarkerPositionGame(point);
				}
			});
        }
    }

function movePolyzoneGame(p, from, to) {
var pnts = [];
var deltaLat = to.lat() - from.lat();
var deltaLng = to.lng() - from.lng();
if (p) {
	for (var i=0; i<p.getVertexCount() ; i++) {
		var point = new GLatLng(p.getVertex(i).lat()+deltaLat, p.getVertex(i).lng()+deltaLng);
		pnts.push(point);
		}
	var newp = 	new GPolygon(pnts,
						OPT_POLY['normal']['color_line'],
						OPT_POLY['normal']['width_line'],
						OPT_POLY['normal']['opacity_line'],
						OPT_POLY['normal']['color_zone'],
						OPT_POLY['normal']['opacity_zone'],
						{clickable:false});
	map.addOverlay(newp);							
	deletePolyzone(polyZoneIntervention);
	polyZoneIntervention = newp;
	}
}	

function showNounours() {
	var dataBounds = getZoneBounds(polyZoneIntervention);
	var data = '&action=select&nrow='+dataBounds[0]+'&ncol='+dataBounds[1]+'&srow='+dataBounds[2]+'&scol='+dataBounds[3];
	var xhr=getHTTPObject();
	if (xhr) {	
		xhr.onreadystatechange = function() { showNounours_rep(xhr); }; 
		xhr.open("POST", "nounours.php", true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.send(entete()+'&'+data+dataZoneParameters());
		document.getElementById('loading').style.display='block';
		}
}


function showNounours_rep(xhr) {
	if (xhr.readyState==4) {
		if (xhr.status == 200) {		
			var xml = xhr.responseXML;
			displayNounours(xml);
			document.getElementById('loading').style.display='none';
			}
		}
}

function displayNounours(xml) {
if (xml && xml.getElementsByTagName('nah_nounours')) {
		if (xmlService = xml.getElementsByTagName('nah_nounours')[0]) {
			var id = xmlService.getElementsByTagName('nah_id')[0].firstChild.nodeValue;
			var lat = xmlService.getElementsByTagName('nah_lat')[0].firstChild.nodeValue;
			var lng = xmlService.getElementsByTagName('nah_lng')[0].firstChild.nodeValue;
			var title = xmlService.getElementsByTagName('nah_title')[0].firstChild.nodeValue;			
			var desco = xmlService.getElementsByTagName('nah_desco')[0].firstChild.nodeValue;
			if (inZone(new GLatLng(lat, lng), polyZoneIntervention)) {	
				if (previousFound(id)) {
					if (!in_nounoursFound(id)) {
						add_nounours(id, lat, lng, title, desco);
						clickNounours(id-1);
						displayResults();
						}
					}
//					else alert('trouvé mais précédents non trouvés');
				}
			}
	}
}

function add_nounours(id, lat, lng, title, desco) {
	var nounours = new Array();
	nounours['id'] = id;
	nounours['lat'] = lat;
	nounours['lng'] = lng;
	nounours['title'] = title;						
	nounours['desco'] = desco;
	if (isIE6()) var ico = new GIcon(G_DEFAULT_ICON);
		else if (id < NB_ENIGMES) var ico = new GIcon(G_DEFAULT_ICON, plainIcon('icon'+id));
				else var ico = new GIcon(G_DEFAULT_ICON, plainIconFlash('icon10'));
	var marker = new GMarker(new GLatLng(lat, lng), { icon: ico});
	if (id > 1)	var prec = "<i>\""+nounoursFound[id-2]['title'] + "\"</i><br><br>";
		else var prec = "";
	if (id < NB_ENIGMES)
		if (id == 1)
			var info = "<table><tr><td class='titleN'><img src='images/nounours1.gif'><b>"+TEXT_SEARCHING_NOUNOURS+"</b></td></tr><tr><td class='descoN'><br>"+TEXT_NEXT_STEP+"<br><br><i>\""+desco+"...\"</i><br><br>"+TEXT_GOOD_TRIP+"<br></td></tr></table>";
			else var info = "<table width='400px' height='380'><tr><td><table><td class='titleN'><img src='images/nr/nr"+title_photo[id]+".jpg'></td><td class='titleN'>"+prec+"<b>"+TEXT_BRAVO+"</b></td></table></td></tr><tr><td class='descoN'><br>"+TEXT_NEXT_STEP+"<br><br><i>\""+desco+"...\"</i><br><br>"+TEXT_GOOD_TRIP+"<br></td></tr></table>";
		else var info = "<table width='400px' height='380'><tr><td><table><td class='titleN'><img src='images/nr/nr10a.jpg'></td></table></td></tr><tr><td class='winnerN'><b>"+TEXT_NOUNOURS_SAVED+"</b><br><br>"+TEXT_WINNER+"</td></tr></table>";
	GEvent.addListener(marker, "click",
		function() {
			marker.openInfoWindowHtml(info);
			}
		);
	map.addOverlay(marker);
	nounours['marker'] = marker;
	nounoursFound.push(nounours);
	if (id>1) {
		var pp = new Array();
		pp[0] = new GLatLng(nounoursFound[id-2]['lat'],nounoursFound[id-2]['lng']);
		pp[1] = new GLatLng(nounoursFound[id-1]['lat'],nounoursFound[id-1]['lng']);
		var trace = new GPolyline(pp, '#f00',5, 0.5);
		map.addOverlay(trace);
		}
}

function in_nounoursFound(id) {
	for (var i=0; i<nounoursFound.length; i++)
		if (nounoursFound[i]['id'] == id)
			return true;
	return false;
}

function previousFound(id){
	for (var i=1; i<id; i++)
		if (!in_nounoursFound(i))
			return false;
	return true;
}

function displayResults() {
	var res = '<table width="100%" cellspacing="0" cellpadding="0"><td>';
	for (var i=0; i<NB_ENIGMES; i++) {
		if (i<nounoursFound.length) {
			if (i==0)
				var text = TEXT_SEARCHING_NOUNOURS;
				else var text = nounoursFound[i-1]["title"];
			if (i<NB_ENIGMES-1)
				res += '<tr><td><div class="resN" onmouseover="javascript:this.className=\'resN_hover\'" onmouseout="javascript:this.className=\'resN\'" onclick="javascript:clickNounours('+i+')"><img src="'+ICON_DIR+'icon'+nounoursFound[i]["id"]+ICON_SMALL_CODE+ICON_FILE_EXT+'"> <b>"'+text+'"</b><br> '+TEXT_NEXT_STEP+' <i>"'+nounoursFound[i]["desco"]+'..."</i></div></td></tr>';
				else res += '<tr><td><div class="resN" onmouseover="javascript:this.className=\'resN_hover\'" onmouseout="javascript:this.className=\'resN\'" onclick="javascript:clickNounours('+i+')"><table><tr><td><img src="images/nounours.gif"></td><td><b>'+TEXT_GAGNE+'</b></td></tr></table></div></td></tr>';
			} else {
				if (i<NB_ENIGMES-1)
					res += '<tr><td><div class="resN"><img src="'+ICON_DIR+'iconpale'+ICON_SMALL_CODE+ICON_FILE_EXT+'"></div></td></tr>';				
					else res += '<tr><td><div class="resN"><table><td><img src="images/nounours1.gif"></div></td></table></td></tr>';
				}
		}
	res += '</td></table>';
	document.getElementById("results").innerHTML = res;
}

function clickNounours(i) {
	map.panTo(new GLatLng(nounoursFound[i]["lat"], nounoursFound[i]["lng"]));
	GEvent.trigger(nounoursFound[i]["marker"], "click");
}

function setWhereIam() {
	map.panTo(markerLocalisation.getLatLng());
}

function saveGame() {
	var xhr=getHTTPObject();
	if (xhr) {	
		xhr.onreadystatechange = function() { saveGame_rep(xhr, nounoursFound.length); }; 
		xhr.open("POST", "nounours.php", true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		var data = '&score='+nounoursFound.length;
		data += '&last_lat='+ markerLocalisation.getLatLng().lat();
		data += '&last_lng='+ markerLocalisation.getLatLng().lng();
		xhr.send(entete()+'&action=save'+data+dataZoneParameters());
		document.getElementById('loading').style.display='block';
		}
}

function saveGame_rep(xhr, score) {
	if (xhr.readyState==4) {
		if (xhr.status == 200) {		
			var xml = xhr.responseXML;
			if (score == NB_ENIGMES) {
				if (XMLwinner(xml))
					jAlert(TEXT_FIRST_WINNER, '');
					else jAlert(TEXT_NOT_FIRST_WINNER, '');
				}
				else if (XMLsuccess(xml))
					jAlert(TEXT_SAVE_OK, '');
					else jAlertWarning(XMLmessage(xml), '');
			document.getElementById('loading').style.display='none';
			}
		}
}

function XMLwinner(xml) {
	if (xml && xml.getElementsByTagName('success')&& (xml.getElementsByTagName('success')[0]) && (xml.getElementsByTagName('success')[0].firstChild.nodeValue=='2'))
		return true;
	else return false;
}

function restoreGame() {
	var xhr=getHTTPObject();
	if (xhr) {	
		xhr.onreadystatechange = function() { restoreGame_rep(xhr); }; 
		xhr.open("POST", "nounours.php", true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.send(entete()+'&action=restore'+dataZoneParameters());
		document.getElementById('loading').style.display='block';
		}
}

function restoreGame_rep(xhr) {
	if (xhr.readyState==4) {
		if (xhr.status == 200) {		
			var xml = xhr.responseXML;
			if (XMLsuccess(xml)) {
				if (xml.getElementsByTagName('nah_nounours') && xml.getElementsByTagName('nah_nounours')[0]) {
					nounoursFound = new Array();
					for (var i=0; i<xml.getElementsByTagName('nah_nounours').length; i++) {
						var xmlService = xml.getElementsByTagName('nah_nounours')[i];
						var id = xmlService.getElementsByTagName('nah_id')[0].firstChild.nodeValue;
						var lat = xmlService.getElementsByTagName('nah_lat')[0].firstChild.nodeValue;
						var lng = xmlService.getElementsByTagName('nah_lng')[0].firstChild.nodeValue;
						var title = xmlService.getElementsByTagName('nah_title')[0].firstChild.nodeValue;			
						var desco = xmlService.getElementsByTagName('nah_desco')[0].firstChild.nodeValue;
						add_nounours(id, lat, lng, title, desco);
						}
					displayResults();
					setMarkerPositionGame(XMLlatlng(xml));
					map.panTo(XMLlatlng(xml));
					jAlert(TEXT_GAME_RESTORED, '');					
					}
					else jAlertWarning(TEXT_GAME_NO_SAVE, '');
				}
				else jAlertWarning(XMLmessage(xml), '');
			document.getElementById('loading').style.display='none';
			}
		}
}

function invitation() {
	window.open(HTTP_SERVER+'/contact_nounours.php', '', 'dependent=yes, directories=no, menubar=no, resizable=no, location=no, top=100,left=100, width=335, height=510, status=no, scrollbars=no');
}

