// JavaScript Document

/*
 *	Initialisation variable carto et popin
 */
var photos		= "";	// pour Panoramio (carto)
var gmap		= "";	// pour la cartoGoogleMap (carto)
var myPano		= "";	// pour StreetView (popin)
var gAdresse	= "";	// adresse a afficher (popin)
var gId			= "";	// photo a afficher (popin)
var idDiv		= "";	// slideDiv a utiliser

// Woerth
var lon			= 7.74; 
var lat			= 48.96;
var zoom		= 12;
	
// paris
var lon			= 2.34; 
var lat			= 48.86;
var zoom		= 12;
	
// center
var lon			= 1.9; 
var lat			= 46.9;
var zoom		= 5;

// definition par defaut du centre de la France
var glnmin		= 0;
var glnmax		= 0;
var gltmin		= 0;
var gltmax		= 0;


// liste des points (panoramio)
var gplots		= Array();

// init point maison
var lots		= "";
var mCount		= 0;

/*
 *	Creation de la GMAP
 */
function createGMap ()
{
	geoData	= new GLatLng(lat,lon);	
	
	// initialisation de la map si compatible
	if (GBrowserIsCompatible()) {
		gmap = new GMap2($('map'));				// creation map
		gmap.addControl(new GSmallMapControl());	// controle sur la carte
		gmap.setCenter(geoData, zoom);				// centrage de la carte
		GEvent.addListener(gmap, "zoomend", function() {	gmapChangeZoom();	});
		GEvent.addListener(gmap, "move", 	function() {	panoDataLoad(false);	});
		//gmap.addOverlay(new GLayer("com.panoramio.all"));

	}
	panoDataLoad(true);
	loadLots();
}

function panoDataLoad(init) {
	var center	= gmap.getCenter();
	var bounds	= gmap.getBounds();
	var NE		= bounds.getNorthEast();
	var SW		= bounds.getSouthWest();
	var NEln	= NE.lng();
	var NElt	= NE.lat();
	var SWln	= SW.lng();
	var SWlt	= SW.lat();
	var width	= Math.abs(NEln-SWln);
	var height	= Math.abs(NElt-SWlt);
	gln			= center.lng();
	glt			= center.lat();
	
	if (gln > (glnmin+width*3/2) || gln < (glnmax-width*3/2) || glt > (gltmin+height*3/2) || glt < (gltmax-height*3/2) || init)	{
		glnmin		= 1*SWln-width/2;
		glnmax		= 1*NEln+width/2;
		gltmin		= 1*SWlt-height/2;
		gltmax		= 1*NElt+height/2;
		
		var photoNum	= 20;
		var photoIndex	= 0;
	
		for (i = 0; i < 5; i++) {
			start	= photoIndex + photoNum*i;
			end		= photoIndex + photoNum*(i+1) - 1;
			var JSurl			= "/panoramio/getData/?order=popularity&set=public&from="+start+"&to="+end+"&minx="+glnmin+"&miny="+gltmin+"&maxx="+glnmax+"&maxy="+gltmax+"&size=square&callback=dispPanoPhoto";
			var myRequest = new Request({url : JSurl, onComplete : function(data){eval(data)}}).get();
		}
	}
}

/*
 *	Action lors du changement de Zoom
 */
function gmapChangeZoom()
{
	if (gmap.getZoom() != zoom) {
		zoom	= gmap.getZoom();
		gplots	= Array();
		gmap.clearOverlays();
		mCount	= 0;
		loadLots();
		//gmap.addOverlay(new GLayer("com.panoramio.all"));
		panoDataLoad(true);
	}
}

/*
 *	Chargement des data panoramio
 */
function panoDataLoad_OLD() {
	var photoNum	= 20;
	var photoIndex	= 0;

	for (i = 0; i < 5; i++) {
		start	= photoIndex + photoNum*i;
		end		= photoIndex + photoNum*(i+1) - 1;
		var JSurl			= "/panoramio/getData/?order=popularity&set=public&from="+start+"&to="+end+"&minx="+glnmin+"&miny="+gltmin+"&maxx="+glnmax+"&maxy="+gltmax+"&size=square&callback=dispPanoPhoto";
		var myRequest = new Request({url : JSurl, onComplete : function(data){eval(data)}}).get();
	}
}

/*
 *	Rajout de photoPanoramio
 */
function dispPanoPhoto(panoramio)
{
	photos = panoramio.photos;			// initialisation des photos Panoramio
		
	var picon = new GIcon();
	picon.image = "/img/rin/popin/puce_appareil_photo.png";
	picon.shadow = "/img/rin/popin/puce_appareil_photo_s.png";
	picon.iconSize = new GSize(18, 18);
	picon.shadowSize = new GSize(22, 22);
	picon.iconAnchor = new GPoint(9, 9);
	picon.infoWindowAnchor = new GPoint(9, 0);
	
	for (var i = 0; i < photos.length; i++)
	{
		if(gplots[photos[i].photo_id] != 1) {
			gplots[photos[i].photo_id]	= 1;
			var marker = new GMarker(new GLatLng(photos[i].latitude, photos[i].longitude), picon);
			marker.photo = photos[i];
			gmap.addOverlay(marker, picon);
		}
	}

	GEvent.addListener(gmap, "click", function(overlay, point) {
		if (!overlay || !overlay.photo)
			return;

		var p = overlay.photo;
		
		if (p.photo_title.length > 33) {
			p.photo_title = p.photo_title.substring(0, 33) + "&#8230;";
		}
		
		overlay.openInfoWindowHtml(
		"<div style='height:" + (p.height + 80) + "px'>" +
		"<p><a href='http://www.panoramio.com/' target='_blank' class='popin_link'><img src='http://www.panoramio.com/img/logo-small.gif' width='60px' height='12px' border='0' /><\/a></p>" +
		"<a target='_blank' href='" + p.photo_url + "' class='popin_link'>" +
		"<img width='" + p.width + "' height='" + p.height + "' src='" + p.photo_file_url + "' style='border: 1px #000 solid' /><\/a>" +
		"<div style='overflow: hidden; width: 150px;'>" +
		"<p><a target='_blank' class='popin_link' href='" + p.photo_url +
		"'><strong>" + p.photo_title + "<\/strong><\/a></p>" +
		"<p>Posted by <a target='_blank' href='" + p.owner_url + "' class='popin_link'>" +
		p.owner_name + "<\/a>" + (p.height + 80) + "</p><\/div>" +
		"<\/div>");
	});
}

/*
 *	Rajout des lots
 */
function loadLots()
{
	gAdresses		= lots.split("@@@");
	//count			= gAdresses.length-1;
	
	//for(i = 0; i < count; i++) {
	lData		= gAdresses[mCount].split("###");
	adr			= lData[3];
	cp			= lData[2];
	ville		= lData[1];
	id			= lData[0];
	gAdresse	= adr+"###"+cp+"###"+ville;
	gId			= id;
	
	geocoder	= new GClientGeocoder();
	searchData	= adr + ", " + cp + ", " + ville + ", france";
	geocoder.getLocations(searchData, lotLocalise);
}

function lotLocalise(response) {
	//alert(response.Status.code);
	
	if (!response || response.Status.code != 200) {
		searchArray	= searchData.split(", ");
		if(searchArray.length == 4) {
			searchData	= searchArray[1]+", "+searchArray[2]+", france";
			geocoder.getLocations(searchData, lotLocalise);
		}
		
		if(searchArray.length == 3) {
			searchData	= searchArray[1]+", france";
			geocoder.getLocations(searchData, lotLocalise);
		}
	}
	else {
		place = response.Placemark[0].Point;
		dispLot (new GLatLng(place.coordinates[1], place.coordinates[0]));
		if (mCount < lots.split("@@@").length-2) {
			mCount++;
			loadLots();
		}
	}
}

function dispLot(point) {
	var micon = new GIcon();
	micon.image = "/img/rin/popin/puce_maison.png";
	micon.shadow = "/img/rin/popin/puce_maison_s.png";
	micon.iconSize = new GSize(18, 18);
	micon.shadowSize = new GSize(22, 22);
	micon.iconAnchor = new GPoint(9, 9);
	micon.infoWindowAnchor = new GPoint(9, 0);
	
	if (gId != "") {
		gPhoto	= $('media_'+gId).src;
		if (gPhoto == "") {
				media		= "";
		}
		else {
			media		= "<br/><br/><img src='"+gPhoto+"' border='0' /><br/>";
		}
		if (gAdresse	!= "") {
			lData		= gAdresse.split("###");
			eval("picto_"+gId+" = new GMarker(point, micon);");
			eval("GEvent.addListener(picto_"+gId+", \"click\", function(listener) {gmap.openInfoWindowHtml(point, \"<div style='height:160px'><center><a href='/annonce/detail/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+media+"<br /><b>"+lData[1]+"</b>("+lData[2]+")</a><center></div>\");}); gmap.addOverlay(picto_"+gId+");");
		}
	}
}

/*
 *	Gestion Popin localisation (street view ou carto)
 */
function loadStreetView(id, vData, cpData, aData)
{
	$('popin_title').innerHTML	= "Localisation du bien";
	gAdresse		= aData + "###" + vData + "###" + cpData;
	
	var geocoder	= new GClientGeocoder();
	geocoder.getLatLng(aData + " " + cpData + " " + vData,
	function(point) {
		if (!point) {
			geocoder.getLatLng( cpData + " " + vData, function(point) {
			if (!point) {
				geocoder.getLatLng( cpData, function(point) {
				if (!point) {
					alert(aData + " " + cpData + " " + vData + " n'a pas pu etre localise");
				} else {
					geoData	= point;
					dispStreetView ();
				}});
			} else {
				geoData	= point;
				dispStreetView ();
			}});
		} else {
			geoData	= point;
			dispStreetView ();
		}});
	
	$('popin').setStyle("left", $("popin_"+id).getPosition().x);
	$('popin').setStyle("top", $("popin_"+id).getPosition().y-65);
	
	gId	= id;
}

/*
 *	Affichage street view
 */
function dispStreetView ()
{
	$('popin').setStyle('display', 'block');
	$('popin').setStyle('height', '330px');
	$('popin').setStyle('width', '634px');
	$('popin_content').setStyle('height', '300px');
	$('popin_content').setStyle('width', '634px');
	$('popin').setStyle('z-index', '99999999');
	//$('popin_title').set("text", "Localisation du bien");
	
	//if (pData != "")	geoData	= pData;
	panoramaOptions = { latlng:geoData };
	myPano = new GStreetviewPanorama($('popin_content'), panoramaOptions);
	
	$('popin_title').innerHTML	= "Localisation du bien <a href='javascript:defaultMap( );' style='font-size:10px;'>(version carte)</a>";
	GEvent.addListener(myPano, "error", defaultMap);
}

/*
 *	En cas d'erreur street view, la carte est affichee par defaut
 */
function defaultMap(errorCode)
{	
	if (errorCode == "600") {
		$('popin_title').innerHTML	= "Localisation du bien";
	}
	else {
		$('popin_title').innerHTML	= "Localisation du bien <a href='javascript:dispStreetView( );' style='font-size:10px;'>(version rue)</a>";
	}
	streetMap	= new GMap2($('popin_content'));	// creation map
	streetMap.addControl(new GLargeMapControl());	// controle sur la carte
	streetMap.setCenter(geoData, 14);
	
	var micon = new GIcon();
	micon.image = "/img/rin/popin/puce_maison.png";
	micon.shadow = "/img/rin/popin/puce_maison_s.png";
	micon.iconSize = new GSize(18, 18);
	micon.shadowSize = new GSize(22, 22);
	micon.iconAnchor = new GPoint(9, 9);
	micon.infoWindowAnchor = new GPoint(9, 0);
	
	picto = new GMarker(geoData, micon);
	streetMap.addOverlay(picto);
	
	
	
	gPhoto	= $('media_'+gId).src;
	if (gPhoto == "") {
		media		= "";
	}
	else {
		media		= "<br/><br/><img src='"+gPhoto+"' border='0' /><br/>";
	}
	if (gAdresse	!= "") {
		lData		= gAdresse.split("###");
		var content	= "<div style='height:160px'><center><a href='/annonce/detail/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+media+"<br /><b>"+lData[1]+"</b> ("+lData[2]+")</a><center></div>";
		streetMap.openInfoWindowHtml(geoData, content);
		GEvent.addListener(picto, "click", function(listener) {	streetMap.openInfoWindowHtml(geoData, content);});
	}
}

/*
 *	affichage video listing
 */
function loadVideo(id, url)
{	
	$('popin').setStyle("left", $("popin_"+id).getPosition().x);
	$('popin').setStyle("top", $("popin_"+id).getPosition().y-200);
	
	$('popin').setStyle('display', 'block');
	$('popin').setStyle('height', '475px');
	$('popin').setStyle('width', '634px');
	$('popin_content').setStyle('height', '435px');
	$('popin_content').setStyle('width', '634px');
	$('popin').setStyle('z-index', '99999999');
	
	$('popin_title').innerHTML		= "Video Agence";
	$('popin_content').innerHTML	= "<iframe src="+url+" height='435' width='634' frameborder='0'><iframe>";
}


/*
 *	Cartographie de la page detail
 */
function dispBienDetail(id, adresse, type)
{	
	lData		= adresse.split("###");
	adr			= lData[0];
	cp			= lData[1];
	ville		= lData[2];
	gAdresse	= adresse;
	gId			= id;
	
	searchData	= adr + ", " + cp + ", " + ville + ", france";
	
	var geocoder	= new GClientGeocoder();
	geocoder.getLatLng(adr + " " + cp + " " + ville,
	function(point) {
		if (!point) {
			geocoder.getLatLng(cp + " " + ville, function(point) {
			if (!point) {
				geocoder.getLatLng(cp, function(point) {
				if (!point) {
					alert(adr + " " + cp + " " + ville + " n'a pas pu etre localise");
				} else {
					geoData	= point;
					loadBienDetail(type);
				}});
			} else {
				geoData	= point;
				loadBienDetail(type);
			}});
		} else {
			geoData	= point;
			loadBienDetail(type);
		}});
}

/*
 *	Chargement cartographie de la page detail
 */
function loadBienDetail(type) {
	if (GBrowserIsCompatible()) {
		gmap = new GMap2($('map'));				// creation map
		gmap.addControl(new GSmallMapControl());	// controle sur la carte
		gmap.setCenter(geoData, 14);				// centrage de la carte
		
		var micon = new GIcon();
		micon.image = "/img/rin/popin/puce_maison.png";
		micon.shadow = "/img/rin/popin/puce_maison_s.png";
		micon.iconSize = new GSize(18, 18);
		micon.shadowSize = new GSize(22, 22);
		micon.iconAnchor = new GPoint(9, 9);
		micon.infoWindowAnchor = new GPoint(9, 0);
		picto = new GMarker(geoData, micon);
		gmap.addOverlay(picto);
		
		gPhoto	= $('media_'+gId).src;
		if (gPhoto == "") {
			media		= "";
		}
		else {
			media		= "<br/><br/><img src='"+gPhoto+"' border='0' height='60' width='80' /><br/>";
		}
		if (gAdresse	!= "") {
			lData		= gAdresse.split("###");
			
			if (type == 'programme') {
				var content	= "<div style='height:160px'><center><a href='/programme/fiche/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+media+"<br /><b>"+lData[2]+"</b> ("+lData[1]+")</a><center></div>";
			}
		  else {
				var content	= "<div style='height:160px'><center><a href='/annonce/detail/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+media+"<br /><b>"+lData[2]+"</b> ("+lData[1]+")</a><center></div>";
			}
			gmap.openInfoWindowHtml(geoData, content);
			GEvent.addListener(picto, "click", function(listener) {	gmap.openInfoWindowHtml(geoData, content);});
		}
	}
}

/*
 *	Cartographie de la page detail no photo
 */
function dispBienDetailNoPhoto(id, adresse)
{	
	lData		= adresse.split("###");
	adr			= lData[3];
	cp			= lData[2];
	ville		= lData[1];
	gAdresse	= adresse;
	gId			= id;
	
	searchData	= adr + ", " + cp + ", " + ville + ", france";
	
	var geocoder	= new GClientGeocoder();
	geocoder.getLatLng(adr + " " + cp + " " + ville,
	function(point) {
		if (!point) {
			geocoder.getLatLng(cp + " " + ville, function(point) {
			if (!point) {
				geocoder.getLatLng(cp, function(point) {
				if (!point) {
					alert(adr + " " + cp + " " + ville + " n'a pas pu etre localise");
				} else {
					geoData	= point;
					loadBienDetailNoPhoto();
				}});
			} else {
				geoData	= point;
				loadBienDetailNoPhoto();
			}});
		} else {
			geoData	= point;
			loadBienDetailNoPhoto();
		}});
}

/*
 *	Chargement cartographie de la page detail no photo
 */
function loadBienDetailNoPhoto() {
	if (GBrowserIsCompatible()) {
		gmap = new GMap2($('map'));				// creation map
		gmap.addControl(new GSmallMapControl());	// controle sur la carte
		gmap.setCenter(geoData, 14);				// centrage de la carte
		
		var micon = new GIcon();
		micon.image = "/img/rin/popin/puce_maison.png";
		micon.shadow = "/img/rin/popin/puce_maison_s.png";
		micon.iconSize = new GSize(18, 18);
		micon.shadowSize = new GSize(22, 22);
		micon.iconAnchor = new GPoint(9, 9);
		micon.infoWindowAnchor = new GPoint(9, 0);
		picto = new GMarker(geoData, micon);
		gmap.addOverlay(picto);
		
		if (gAdresse	!= "") {
			lData		= gAdresse.split("###");
			
			var content	= "<div style='height:160px'><center><a href='/annonce/detail/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+"<br /><b>"+lData[2]+"</b> ("+lData[1]+")</a><center></div>";
			gmap.openInfoWindowHtml(geoData, content);
			GEvent.addListener(picto, "click", function(listener) {	gmap.openInfoWindowHtml(geoData, content);});
		}
	}
}

/*
 *	Popup iti
 */
function dispItineraire (start, end) {
	var url	= "http://maps.google.fr/maps?f=d&source=s_d&saddr="+end+"&daddr="+start+"";	
	window.open(url);
}

/*
 *	affichage video listing
 */
function loadVideoDetail(id, url)
{	
	$('popin').setStyle("left", $("media_"+id).getPosition().x);
	$('popin').setStyle("top", $("media_"+id).getPosition().y-50);
	
	$('popin').setStyle('display', 'block');
	$('popin').setStyle('height', '478px');
	$('popin').setStyle('width', '638px');
	$('popin_content').setStyle('height', '458px');
	$('popin_content').setStyle('width', '638px');
	$('popin').setStyle('z-index', '99999999');
	
	$('popin_title').innerHTML		= "Video Agence";
	$('popin_content').innerHTML	= "<iframe src="+url+" height='458' width='638' frameborder='0'><iframe>";
}

function cutTxt(txt) {
	return txt.replace(" et ", "<br />et ");	
}


function swapSlideDiv(id, vData, cpData, aData) {
	if (eval('selection'+id+'Slide.open') == true) {
		eval('selection'+id+'Slide.toggle()');
	}
	
	if (eval('telephone'+id+'Slide.open') == true) {
		eval('telephone'+id+'Slide.toggle()');
	}
	
	if (eval('email'+id+'Slide.open') == true) {
		eval('email'+id+'Slide.toggle()');
	}
	
	if (eval('gmap'+id+'Slide.open') != true) {
		loadListingStreetView(id, vData, cpData, aData);
	}
	eval('gmap'+id+'Slide.toggle()');
	
	
}

/*
 *	Gestion Popin localisation (street view ou carto)
 */
function loadListingStreetView(id)
{
	gId		= id;
	idDiv	= id;
	
	$('slide_title_'+id).innerHTML	= "Localisation du bien";
	
	eval("aData		= lots_adr_"+id);
	eval("vData		= lots_ville_"+id);
	eval("cpData	= lots_cp_"+id);
	
	gAdresse		= aData + "###" + vData + "###" + cpData;
	
	var geocoder	= new GClientGeocoder();
	geocoder.getLatLng(aData + " " + cpData + " " + vData,
	function(point) {
		if (!point) {
			geocoder.getLatLng( cpData + " " + vData, function(point) {
			if (!point) {
				geocoder.getLatLng( cpData, function(point) {
				if (!point) {
					alert(aData + " " + cpData + " " + vData + " n'a pas pu etre localise");
				} else {
					geoData	= point;
					dispListingStreetView (idDiv);
				}});
			} else {
				geoData	= point;
				dispListingStreetView (idDiv);
			}});
		} else {
			geoData	= point;
			dispListingStreetView (idDiv);
		}
	});
}

/*
 *	Affichage street view
 */
function dispListingStreetView (id)
{	
	panoramaOptions = { latlng:geoData };
	myPano = new GStreetviewPanorama($('slide_content_'+id), panoramaOptions);
	
	$('slide_title_'+id).innerHTML	= "Localisation du bien <a href='javascript:loadListingCarto(\""+id+"\");' style='font-size:10px;'>(version carte)</a>";
	GEvent.addListener(myPano, "error", defaultListingMap);
}

/*
 *	Chargement vue carto
 */
function loadListingCarto (id)
{	
	$('slide_title_'+id).innerHTML	= 'Localisation du bien <a href="javascript:loadListingStreetView(\''+id+'\');" style="font-size:10px;">(version rue)</a>';
	
	idDiv	= id;
	eval("aData		= lots_adr_"+id);
	eval("vData		= lots_ville_"+id);
	eval("cpData	= lots_cp_"+id);
	
	gAdresse		= aData + "###" + vData + "###" + cpData;
	
	var geocoder	= new GClientGeocoder();
	geocoder.getLatLng(aData + " " + cpData + " " + vData,
	function(point) {
		if (!point) {
			geocoder.getLatLng( cpData + " " + vData, function(point) {
			if (!point) {
				geocoder.getLatLng( cpData, function(point) {
				if (!point) {
					alert(aData + " " + cpData + " " + vData + " n'a pas pu etre localise");
				} else {
					geoData	= point;
					dispListingCarto ();
				}});
			} else {
				geoData	= point;
				dispListingCarto ();
			}});
		} else {
			geoData	= point;
			dispListingCarto ();
		}
	});
}

/*
 *	Affichage vue carto
 */
function dispListingCarto (errorCode)
{	
	if (errorCode == "600") {
		$('popin_title').innerHTML	= "Localisation du bien";
	}
	else {
		$('popin_title').innerHTML	= 'Localisation du bien <a href="javascript:loadListingStreetView(\''+id+'\');" style="font-size:10px;">(version rue)</a>';
	}
	
	streetMap	= new GMap2($('slide_content_'+idDiv));	// creation map
	streetMap.addControl(new GLargeMapControl());	// controle sur la carte
	streetMap.setCenter(geoData, 14);
	
	var micon = new GIcon();
	micon.image = "/img/rin/popin/puce_maison.png";
	micon.shadow = "/img/rin/popin/puce_maison_s.png";
	micon.iconSize = new GSize(18, 18);
	micon.shadowSize = new GSize(22, 22);
	micon.iconAnchor = new GPoint(9, 9);
	micon.infoWindowAnchor = new GPoint(9, 0);
	
	picto = new GMarker(geoData, micon);
	streetMap.addOverlay(picto);

	gPhoto	= $('media_'+gId).src;
	if (gPhoto == "") {
		media		= "";
	}
	else {
		media		= "<br/><br/><img src='"+gPhoto+"' border='0' /><br/>";
	}
	if (gAdresse	!= "") {
		lData		= gAdresse.split("###");
		var content	= "<div style='height:160px'><center><a href='/annonce/detail/id/"+gId+"' class='popin_link'>"+cutTxt(lData[0])+media+"<br /><b>"+lData[1]+"</b> ("+lData[2]+")</a><center></div>";
		streetMap.openInfoWindowHtml(geoData, content);
		GEvent.addListener(picto, "click", function(listener) {	streetMap.openInfoWindowHtml(geoData, content);});
	}
}

/*
 *	En cas d'erreur street view, la carte est affichee par defaut
 */
function defaultListingMap(errorCode)
{	
	$('slide_title_'+idDiv).innerHTML	= "Localisation du bien";
	dispListingCarto();
}
//]]>