/**
 * Trigger de modification DOM, manipulation d'element
 * @param event
 * @param option
 * @return
 */
var majDOM = function (event, option) {
	if(		option['objMap'] != null && option['idGmap'] != null &&
			option['id'] 	 != null && option['x']	 	 != null &&
		    option['y'] 	 != null && option['z'] 	 != null) {
		ShowMap(option['objMap'],
				option['idGmap'],
				option['id'],
				option['x'],
				option['y'],
				option['z']);
				option['objMap'].gmap.checkResize();
	} else if ( option['idGmap'] != null && option['id'] != null) {
		HideMap(option['idGmap'],option['id']);
	}
};

/**
 * Trigger de mise a jour de formulaire
 * @param event
 * @param name
 * @param id
 */
var majForm = function (event, name, id, option)
{
	if(name=='formAdapt' && option['zoom'] != null) {
		
		// Point d'arrêt regional
		if(option['zoom'] >= 0) {
			$('#checkbox_districtStopArea').removeAttr('disabled');
		} else {
			$('#checkbox_districtStopArea').attr('disabled','disabled');
			$('#checkbox_districtStopArea').attr('checked', false)
		}
		
		// Point d'arrêt principal
		if(option['zoom'] > 8) {
			$('#checkbox_mainStopArea').removeAttr('disabled');
		} else {
			$('#checkbox_mainStopArea').attr('disabled','disabled');
			$('#checkbox_mainStopArea').attr('checked', false)
		}
		
		// Point d'arrêt
		if(option['zoom'] > 8) {
			$('#checkbox_stopArea').removeAttr('disabled');
		} else {
			$('#checkbox_stopArea').attr('disabled','disabled');
			$('#checkbox_stopArea').attr('checked', false)
		}
	
		// POIs
		if(option['zoom'] >= 16) {
			$('.checkbox-poi').each(function(){
				$(this).removeAttr('disabled');
			});
		} else {
			$('.checkbox-poi').each(function(){
				$(this).attr('disabled','disabled');
				$(this).attr('checked', false);
			});
		}
	}
};

/**
 * Trigger de mise a jour de la carto
 * @param event
 * @param name
 * @param id
 */
var majMap = function(event, name, id, option)
{

	/* --- Recupere l'objet GMap --- */
	var mapObj;
	if(option['gmap'] != null) {
		mapObj = option['gmap'];
	}
	
	/* --- Genere les Favoris depuis KML */
	if(name == 'favoriteKml') {
		if( typeof(option['hideCluster']) == 'undefined' )
			option['hideCluster'] = true;
		
		mapObj.DrawKmlFavorites(name, option);
	}
	
	/* --- Genere les StopArea depuis KML */
	if(name == 'stopAreaKml' || name == 'stopAreaKmlBis') {
		option['hideCluster'] = true;
		mapObj.DrawKmlStopAreas(name, option);
	}
	
	/* --- Genere les StopArea multimodaux depuis KML */
	if(name == 'stopAreaKmlMultimodal') {
		option['hideCluster'] = false;
		mapObj.DrawKmlStopAreas(name, option);
	}

	/* --- Genere les markers des villes a l'echelle regionale --- */
	if(name == 'cityRegionKml') {
		mapObj.DrawMarkerCity(name, option);
	}

	/* --- Genere les markers des villes a l'echelle departementale --- */
	if(name == 'cityDeptKml') {
		mapObj.DrawMarkerCity(name, option);
	}

	if(typeof(option['zoom']) == 'number' && option['ezp_kml'] == true) {
		for(var i = 0 ; i < mapObj.kmlManager.length; i++)
			mapObj.DrawKmlMap(i, option);
	}
		

	/* --- Genere les POIS --- */
	if(mapObj.clusterManager[name] == null && id.indexOf('afficher') != -1){
		mapObj.DrawMarkerSite(name, option);
	} else if (mapObj.clusterManager[name] != null) {
		if(id.indexOf('afficher') != -1) {
			mapObj.clusterManager[name].showAllMarkers();
		} else if (id.indexOf('masquer') != -1) {
			mapObj.clusterManager[name].hideAllMarkers();
		}
	}
	
	/* Points d'arrêt régionaux (ismain=1, ismultimodal=1) */
	if(name == 'stopAreaKmlMultimodalZoomAdapt') {
		if(typeof(mapObj.clusterManager['stopAreaKmlMultimodal']) == "object") {
			if(option['zoom'] > 15) {
				mapObj.clusterManager['stopAreaKmlMultimodal'].hideAllMarkers();
			}
		}
	}
	
	/* Points d'arrêt principaux (ismain=1) */
	if(name == 'stopAreaKmlZoomAdapt') {
		if(typeof(mapObj.clusterManager['stopAreaKml']) == "object") {
			if(option['zoom'] <= 8) {
				mapObj.clusterManager['stopAreaKml'].hideAllMarkers();
			}
		}
	}
	
	/* Points d'arrêt */
	if(name == 'stopAreaKmlBisZoomAdapt') {
		if(typeof(mapObj.clusterManager['stopAreaKmlBis']) == "object") {
			if(option['zoom'] <= 8) {
				mapObj.clusterManager['stopAreaKmlBis'].hideAllMarkers();
			}
		}
	}

	/* --- Affiche / Masque les POIS selon le zoom --- */
	if(name == 'poiZoomAdapt') {
		if(option['zoom'] < 16) {
			for(var i in mapObj.clusterManager) {
				if ( i != 'in_array' &&  
					 i != 'stopAreaKml' && 
					 i != 'stopAreaKmlBis' && 
					 i != 'stopAreaKmlMultimodal' && 
					 i != 'favoriteKml' ) {
					if (typeof(mapObj.clusterManager[i].hideAllMarkers) != 'undefined') {
							mapObj.clusterManager[i].hideAllMarkers();
					}
				}
			}
		} else {
			if (mapObj.clusterManager['poiItineraire'] != null)  {
				mapObj.clusterManager['poiItineraire'].showAllMarkers();
			}
		}
	}
	
	/* --- Affiche / Masque les City selon le zoom --- */
	if(name == 'cityZoomAdapt') {
		if(typeof(option['zoom']) != "number" || typeof(option['minZoom']) != "number" || typeof(option['maxZoom']) != "number") {
			return false;
		} else {
			if(option['zoom'] >= option['minZoom'] && option['zoom'] <= option['maxZoom'])
				mapObj.clusterManager[id].showAllMarkers();
			else
				mapObj.clusterManager[id].showAllMarkers();
			return true;
		}
	}
	
	if(name == 'kmlHybride') {
		mapObj.DrawKmlHybride(id, option);	
	}
	
	if(name == 'zoomTo') {
		if(typeof(option['value']) != "number") {
			return false;
		} else {
			if(option['value'] >= option['minZoom'] && option['value'] <= option['maxZoom'])
				mapObj.MapZoom(16);
			else
				mapObj.MapZoom(16);
			return true;
		}
	}

	/* Affichage du point de recherche et ses arrêts à proximité */
	if(name == 'proximityMarker' && option['coordJsTab'] != null) {
		mapObj.DrawProximityMarker(option['coordJsTab'],option['pictoMaker']);
	}
};

/**
 * Trigger recherche de lieu/commune (carte interactive)
 * @param event
 * @param mapObj
 * @param options
 */
var LocalitySearch = function(event,mapObj,options)
{	
	mapObj.LocalitySearch(options);
};

/*
 *gestion de l'affichage du formulaire ajout des favoris
*/
var displayFavoriteForm = function(coordX,coordY) {
	if(mapFull.isConnected) {
		coordX = coordX.toString().replace('.','_');;
		coordY = coordY.toString().replace('.','_');
		$("#stop-fav-form-"+coordX+coordY).attr("class","clearfix");
		//$("#stop-fav-form-"+coordX+coordY).css('display','block');
	} else {
		$("#form-login").css('display','block');
	}
};
	
var AddingFavorite = function(coordX,coordY) {
	return AddFavorite('stop-fav-form','start',coordX,coordY);
};

/*
 * Fonction permettant d'afficher les messages d'erreurs
 */
function ShowErrorBulle(errMsg,section,coordX,coordY) {
	var errorMsg = $.trim(errMsg);
	if(typeof(section)=='string')
		var errDom = $('#'+ section + '-error-display-'+coordY+coordY);
	else
		var errDom = $('#error-display');
	errDom.empty();
	if(typeof(errorMsg) == 'string' && errorMsg != '') {
		errDom.append(errorMsg);
		return true;
	} else {
		return false;
	}
}
/**
*Formulaire d'ajout des favoris
*/	
function drawFormAddFavorite(name,cityname,type,line,network,coordX,coordY,externalCode) {
	var coord_X = coordX.toString().replace('.','_');;
	var coord_Y = coordY.toString().replace('.','_');
		
	var content = '<form id="stop-fav-form-'+coord_X+coord_Y+'" name="stop-fav-form-'+coord_X+coord_Y+'" method="post" action="" class="hide">';
	content += '<fieldset><div class="large">';
	content += '<label for="stop-fav-title">Nom du favori*: </label>';
	content += '<input type="text" class="text inpt" value="'+name+'" name="title" id="stop-fav-title">';
	content += '<p><input type="button" onClick="AddingFavorite('+coordX+','+coordY+')" class="button" value="Valider" id="stop-fav-submit"></p>';
	content += '</div><div class="sub">';
	content += '<input type="hidden" value="true" name="ajax" id="stop-fav-ajax">';
	content += '<input type="hidden" value="create" name="action" id="stop-fav-action">';
	content += '<input type="hidden" value="'+type+'" name="type" id="stop-fav-type">';
	content += '<input type="hidden" value="'+name+'|'+externalCode+'|'+cityname+'|'+coordX+':'+coordY+'" name="entryPoint" id="stop-fav-entrypoint">';
	content += '<input type="hidden" value="'+line+'" name="line" id="stop-fav-line">';
	content += '<input type="hidden" value="'+network+'" name="network" id="stop-fav-network">';
	content += '<div id="start-error-display-'+coord_X+coord_Y+'" style="color:red;"></div></div></fieldset></form>';
	return content;
}
	
function formLogin() {
	var content = '<br /><div id="form-login" style="display:none" class="step1">';
	content += 'Veuillez <a href="'+urlSite+'/ma-sts/identification" class="log">vous connecter</a> ';
	content += 'ou <a href="'+urlSite+'/ma-sts/inscription">vous inscrire</a>.</div>';
	return content;
}	
/* 
* Fonction permettant de créer un favori 
**/
function AddFavorite(FormId,section,coordX,coordY) {
	coord_X = coordX.toString().replace('.','_');;
	coord_Y = coordY.toString().replace('.','_');
	 
	var title = $.trim($("#"+FormId+"-"+coord_X+coord_Y+" input[name$='title']").val());
	var type = $.trim($("#" + FormId+"-"+coord_X+coord_Y+" input[name$='type']").val());
	var entryPoint = $.trim($("#" + FormId +"-"+coord_X+coord_Y+" input[name$='entryPoint']").val());
	var line = $.trim($("#" + FormId +"-"+coord_X+coord_Y+" input[name$='line']").val());
	var network = $.trim($("#" + FormId +"-"+coord_X+coord_Y+" input[name$='network']").val());
	 
	var reponse = $.ajax({
		url: urlMap+"/cu/favorite?ajax=true&action=create&type=" + type + "&title=" + title + "&entryPoint=" +encodeURIComponent(entryPoint) + "&line=" + line + "&network=" + network,
		async: false
	}).responseText;
	 
	$('#'+ section +'-error-display'+'-'+coordX+coordY).empty();
	$("#"+FormId+"-"+coord_X+coord_Y).removeClass("clearfix").addClass("hide");
	 
	if(reponse == 'OK') {
		$("#" + section + "-tool-fav-"+coord_X+coord_Y).removeAttr('onclick').removeAttr('target').empty().append("Favori enregistr&eacute;").attr("href",urlMap+"/cu/favorite");
		var arrayEntryPoint = entryPoint.split('|');
		var Name = arrayEntryPoint[0];
		var CName = arrayEntryPoint[2];
		var arrayCoord = arrayEntryPoint[3].split(':');
		var CoordX = arrayCoord[0];
		var CoordY = arrayCoord[1];
		
		var typeName = '';
		switch(type) {
			case '0':
				typeName = 'stoparea';
			break;
			case '1':
					typeName = 'address';
				break;
			case '2':
					typeName = 'site';
			break;
		}
		var arrayEntryPoint = entryPoint.split('|');
		var id =arrayEntryPoint[1];
		
		var content = mapFull.infoWindowContent(Name,CName,CoordX,CoordY,type,"",typeName,false,mapFull.imgFavori);
		var minZoom = confDrawKmlFavorites.config[0].minZoom;
		var maxZoom = confDrawKmlFavorites.config[0].maxZoom;
		var marker = iMap.CreateMarkerSelection(id,CoordX,CoordY,content,mapFull.imgFavori,minZoom,maxZoom);
		mapFull.markerFavorites.push(marker);
	} else if(reponse == 'FAVORITE_TITLE_EXIST') {
		$("#" + section + "-tool-fav-"+coord_X+coord_Y).removeAttr('onclick').removeAttr('target').empty().append("Favori d&eacute;ja enregistr&eacute;").attr("href",urlMap+"/cu/favorite");
		var arrayEntryPoint = entryPoint.split('|');
		var Name = arrayEntryPoint[0];
		var CName = arrayEntryPoint[2];
		var arrayCoord = arrayEntryPoint[3].split(':');
		var CoordX = arrayCoord[0];
		var CoordY = arrayCoord[1];
		mapFull.infoWindowFavoriContent(Name,CName,coordX,coordY,false);
	} else {
		$("#" + section + "-tool-fav-"+coord_X+coord_Y).removeAttr('onclick').removeAttr('target').empty().append("Erreur: Favori non enregistr&eacute;").attr("href",urlMap+"/cu/favorite");
	}
	return false;
}
