/*-----------------------------------------------------------------------------------------------*/
// Init Page
/*-----------------------------------------------------------------------------------------------*/
Event.observe(window, 'load',function(){
	if($('pro_accueil')){
		map = new GMap2($("map"));
		map.addControl(new GMapTypeControl());
		map.addControl(new GSmallMapControl());
		var spec = 0;
		if( $F('specialite') != "" ) spec = parseInt($F('specialite'));
		initialize(0,0,$F('ville'),spec);
		if($('page_s')) {
			Event.observe('page_s', 'click', function(){
				initialize(parseInt($F('num_page'))+1, parseInt($F('tri')), $F('ville'), spec);
			});	
		}
		if($('page_p')){
			Event.observe('page_p', 'click', function(){
				initialize(parseInt($F('num_page'))-1, parseInt($F('tri')), $F('ville'), spec);
			});	
		}
		Event.observe('tri', 'change', function(){
			initialize(0,0,$F('ville'), spec);
		});	
	}
	if($('fiche_pro') && $("situation_map")){
		mapGeo();
	}
	if($('relation')){
		Event.observe('animal', 'change', function(){
			if($F('animal')!=''){
				new Ajax.Request('./_ajax.php?ACT=choixRace2',{
					parameters : {animal : $F('animal')},
					onComplete: function(transport){
						$('race').update(transport.responseText);
						$('race').disabled = '';
						$('race').removeClassName('disabled');
					}
				});
			}else{
				$('race').disabled = 'disabled';
				$('race').selectedIndex = 0;
				$('race').addClassName('disabled');
			}
		});
	}
});
Event.observe(window,'unload',function(){
	if($('pro_accueil') || $('fiche_pro')){
		GUnload();
	}
});

var map = null;
tab_marker = new Array();
url_page = '?goto=52&id=';

function tri_nombres(a,b){
	return a-b;
}

var calculCoord = function(calcul){
	var tab_lat = new Array();
	var tab_lng = new Array();
	tab_point.each( function(e){
		tab_lat.push(e.latitude);
		tab_lng.push(e.longitude);
	});
	var lat_min = parseFloat(tab_lat.sort(tri_nombres).first());
	var lat_max = parseFloat(tab_lat.sort(tri_nombres).last());
	var lng_min = parseFloat(tab_lng.sort(tri_nombres).first());
	var lng_max = parseFloat(tab_lng.sort(tri_nombres).last());
	if(calcul=='lat_moy'){return (lat_min+lat_max)/2;}
	if(calcul=='lng_moy'){return (lng_min+lng_max)/2;}
	if(calcul=='lat_min'){return lat_min;}
	if(calcul=='lat_max'){return lat_max;}
	if(calcul=='lng_min'){return lng_min;}
	if(calcul=='lng_max'){return lng_max;}
}

var initialize = function(page,sort,city,spec) {
	$('f_liste').update('<img src="./images/commun/loading1.gif" alt="" id="loading_liste" />');
	new Ajax.Request('./_ajax.php?ACT=gmap_pro&num_page='+page+'&cmbSort='+sort+'&efCity='+city+'&cmbSpec='+spec,{
		parameters : {tri : $F('tri')},
		onComplete: function(transport){
			map.clearOverlays();
			var results = transport.responseText;
			var isempty = true;
			tab_point = results.evalJSON();
			if( results != "" && tab_point != "" ) 
			{
				// INIT
				var sw = new GLatLng(calculCoord('lat_min'), calculCoord('lng_min'));
				var ne = new GLatLng(calculCoord('lat_max'), calculCoord('lng_max'));
				var bounds = new GLatLngBounds(sw, ne);
				level  = map.getBoundsZoomLevel(bounds);
				map.setCenter(new GLatLng(calculCoord('lat_moy'), calculCoord('lng_moy')), level);
				creerPoint();
				creerListe();
				isempty = false;
			} else {
				isempty = true;
				page = 0;
			}
			if(parseInt(page)==0 || isempty ){
				$('page_p').style.visibility="hidden";
				// $('page_p').style.disabled = true;
			}else{
				$('page_p').style.visibility="visible";	
				// $('page_p').style.disabled = false;
			}
			if(parseInt(page)==$F('nb_page')-1 || isempty ){
				$('page_s').style.visibility="hidden";
				// $('page_s').style.disabled = true;
			}else{
				$('page_s').style.visibility="visible";	
				// $('page_s').style.disabled = false;
			}
			$('num_page').value = page;
			$('loading_liste').remove();
		}
	});	
};

/* CREATION DES POINTS */
var creerPoint = function(){
	tab_point.each( function(e,i){
		var adresse = e.address;
		var geocoder = new google.maps.ClientGeocoder();
		geocoder.setBaseCountryCode(e.lnd);
		geocoder.getLatLng(adresse, function (coord) {
			if( coord != null ) {
				e.latitude = coord.lat();
				tab_point[i].latitude = e.latitude;
				e.longitude = coord.lng();
				tab_point[i].longitude = e.longitude ;
				var point = new GLatLng(e.latitude,e.longitude);
				map.addOverlay(createMarker(point, i));
				var sw = new GLatLng(calculCoord('lat_min'), calculCoord('lng_min'));
				var ne = new GLatLng(calculCoord('lat_max'), calculCoord('lng_max'));
				var bounds = new GLatLngBounds(sw, ne);
				level  = map.getBoundsZoomLevel(bounds);
				map.setCenter(new GLatLng(calculCoord('lat_moy'), calculCoord('lng_moy')), ( map_level > 0 ? map_level : level ) );
			}
		});
	});
};

var createMarker = function(point,i) {
	var baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "images/commun/gmap/ombre.png";
	baseIcon.iconSize = new GSize(24, 29);
	baseIcon.shadowSize = new GSize(39, 29);
	baseIcon.iconAnchor = new GPoint(12, 29);
	baseIcon.infoWindowAnchor = new GPoint(0, 0);
	var IconType = new GIcon(baseIcon);
	IconType.image = "images/commun/gmap/marker"+(i+1)+".png";
	
	markerOptions = {
		title : tab_point[i].nom,
		icon:IconType
	};
	var marker = new GMarker(point, markerOptions);

	GEvent.addListener(marker, "click", function() {
		m = marker;
		m_i = i;
		etiquette(point,i);
		deplaceListe(i);
	});
	tab_marker.push(marker);
	return marker;
};

var etiquette = function(point,i){
	var infoOptions = {
		pixelOffset : new GSize(-5,-8),
		onOpenFn : 	openInfo,
		onCloseFn : closeInfo
	}
	var myHtml = '<div class="visuel"><img src="'+tab_point[i].visuel+'" alt=""></div>';
	myHtml+= '<div class="info">';
	myHtml+= '	<a href="'+tab_point[i].url+'" class="nom">'+tab_point[i].nom+'</a><br/>';
	myHtml+= '	<strong class="ville">'+tab_point[i].ville+'</strong><br/><br/>';
	myHtml+= '	<strong class="specialite">Sp&eacute;cialit&eacute;s :</strong><br/>';
	myHtml+= '	<p>'+tab_point[i].description+'</p>';
	myHtml+= '</div>';
	myHtml+= '<div class="note"><strong>Note moyenne :</strong><span class="note'+tab_point[i].note+'"></span>';
	myHtml+= '<strong>('+tab_point[i].nbvote+' note'+(tab_point[i].nbvote>1?'s':'')+')</strong></div>';
	myHtml+= '<div class="lien"><a href="'+tab_point[i].url+'">Voir sa fiche</a></div>';
 
	map.openInfoWindowHtml(point,'<div style="width:300px; height:130px;" class="etiquette">'+myHtml+'</div>', infoOptions);
}

var openInfo = function(){};
var closeInfo = function(){
	$$('.item').each(function(e){
		e.removeClassName('in');
	});
};

var creerListe = function(){
	tab_point.each( function(e,i){
		var tpl='<div class="item" id="item#{id}">';
		tpl+='		<div class="f_item">';
		tpl+='			<div class="num">#{num}</div>';
		tpl+='			<div class="visuel">';
		tpl+='				<img src="#{avatar}" alt="#{nom}" class="avatar" />';
		if(tab_point[i].connexion == true){
			tpl+='				<img src="images/commun/pictos/patte.gif" alt="" />';
		}
		tpl+='			</div>';
		tpl+='			<div class="texte">';
		tpl+='				<h4><a href="javascript:void(0);">#{nom}</a></h4>';
		tpl+='				<strong>#{ville}</strong>';
		tpl+='				<span class="note#{note}"></span>';
		tpl+='				<p>#{description}</p>';
		tpl+='			</div>';
		tpl+='			<div class="picto"><span class="num#{num}"></span></div>';
		tpl+='		</div>';
		tpl+='</div>';

		var valeur_template = {id:tab_point[i].id, num:(i+1), nom:tab_point[i].nom, avatar:tab_point[i].avatar, ville:tab_point[i].ville, note:tab_point[i].note, description:tab_point[i].description};
		var template = new Template(tpl);
		var nouveau = template.evaluate(valeur_template);	
		$('f_liste').insert({bottom:nouveau});
	});
	
	$$('.item').each(function(e,i){
		// roll over sur l'item
		Event.observe(e, 'mouseover', function(){
			e.addClassName('on');							   
		});
		// roll over sur l'item
		Event.observe(e, 'mouseout', function(){
			e.removeClassName('on');							   
		});
		// clic sur l'item
		var div = $$('#'+e.id+' div.f_item')[0];
		Event.observe(div, 'click', function(){
			/*
			var adresse = tab_point[i].address;
			var geocoder = new google.maps.ClientGeocoder();
			geocoder.setBaseCountryCode(tab_point[i].lnd);
			geocoder.getLatLng(adresse, function (coord) {
				tab_point[i].latitude = coord.lat();
				tab_point[i].longitude = coord.lng();
				var point = new GLatLng(tab_point[i].latitude,tab_point[i].longitude);
				etiquette(point,i);
				deplaceListe(i);
				var point = new GLatLng(tab_point[i].latitude,tab_point[i].longitude);
				etiquette(point,i);
				deplaceListe(i);
			});
			*/
			var point = new GLatLng(tab_point[i].latitude,tab_point[i].longitude);
			etiquette(point,i);
			deplaceListe(i);
		});
	});
};

var deplaceListe = function(i){
	var id = tab_point[i].id;
	var hauteur = 0;
	$('item'+id).previousSiblings().each( function(e){
		hauteur = hauteur + e.offsetHeight;
	});
	$('f_liste').scrollTop = hauteur;
	$$('.item').each(function(e){
		e.removeClassName('in');
	});
	$('item'+id).addClassName('in');
};

var frmAppel = function() {
	var ani = "";
	if( $('animal') ) ani = $('animal').value;
	var srv = "";
	if( $('service') ) srv = $('service').value;
	var god = "";
	if( $('bien') ) god = $('bien').value;

	if( ani == "" && srv == "" && god == "" ) {
		$('verifSelect').value = '';
	} else {
		$('verifSelect').value = '1';
	}
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		verifSelect: {alerte:'L\'objet de votre recherche est obligatoire'},
		departement: {alerte:'La zone g&eacute;ographique est obligatoire'},	
		demande: {alerte:'Le d&eacute;tail de votre demande est obligatoire'}
	};
	return formVerif('frm_recherche', champs_form, param_form, {idMsgGlobal:'msgGlobalAppel'});
};
