// JavaScript Document
var mcCarte = Class.create();

mcCarte.prototype = {
	initialize:function(typeCarte,idContener){
		this.finnish = false;
		this.currentTime =  new Date();			
		this.typeCarte = typeCarte;
		this.action;
		this.actionType;
		this.idMap = 'mcMap_'+this.currentTime.getTime();
		this.idCarte = 'mcCarte_'+this.currentTime.getTime();
		this.callBack;
		if($(idContener))
			this.idContener = idContener;
		else
			alert("element '"+idContener+"' not found");
	},
	//-> récupère les données des Régions/Département
	getData:function(){
		var urlAjax = this.getUrlWebservice();
		new Ajax.Request(urlAjax,{
				method:'get',
				onComplete:function(dataResult){
					this.build(dataResult.responseText);
				}.bind(this)				 
		});
	},
	create:function(){
		//-> création de la MAP
		var mapArea = new Element('map',{'id':this.idMap,'name':this.idMap});
		$(this.idContener).insert(mapArea );

		//-> récupération des données
		this.getData();		
	},
	build:function(data){
		try{
			var dataJson = eval('('+data+')');

			var imgDirectory = dataJson.imgDirectory;
			var imgCarte = imgDirectory+dataJson.imgCarte;
			var imgType = dataJson.imgExtention;
			var totalCreate = 0;
			//-> création de la carte
			var carte = new Element('img',{'id':this.idCarte,'usemap':'#'+this.idMap,'src':imgCarte,'border':'0'});
			$(this.idMap).insert({before:carte});
			
			//-> ajout des areas
			for(cptRegion = 0;cptRegion<dataJson.dataArea.length;cptRegion++){
				var laRegion = dataJson.dataArea[cptRegion];
				if(laRegion.visible == "true"){
					var hrefArea = "#";
					// definit l'action
					switch(this.actionType){
						case 'redirect':
							hrefArea = this.action+laRegion.id;
						break;
						case 'js':
							hrefArea = 'javascript:'+this.action+'(\''+laRegion.id+'\')';
						break;
					}
					
					var newArea = new Element('area',{'shape':'poly','coords':laRegion.coord,'alt':laRegion.nom,'href':hrefArea,'id':laRegion.id});
					$(this.idMap).insert(newArea);
//					$(laRegion.id).observe('click',function(e){
//							alert("just a click");
//					}.bind(this));	
					
					$(laRegion.id).observe('mouseover',function(e){
					   var currentElement = e.element();
					   $(this.idCarte).writeAttribute("src", imgDirectory+currentElement.id+imgType);
					   
					}.bind(this));	
					
					totalCreate++;
				}
			}
			
			//-> ajout des areas vide
			for(cptWhite = 0;cptWhite<dataJson.dataAreaWhite.length;cptWhite++){
				var areaWhite = dataJson.dataAreaWhite[cptWhite];
				var newArea = new Element('area',{'shape':'poly','coords':areaWhite.coord});
				Event.observe(newArea,'mouseover',function(event){
								   var currentElement = Event.element(event);									   
								   $(this.idCarte).setAttribute("src",imgCarte);
							}.bind(this));
				$(this.idMap).insert(newArea);
				
			}
			this.finnish = true;
			this.launchCallBack();
		}
		catch(e){
				alert(e);
		}
	},
	//-> définit la page de redirection
	setActionUrl:function(pageUrl){
		if(pageUrl && pageUrl != ""){
			this.action = pageUrl;
			this.actionType = 'redirect';
		}
	},
	//-> défini l'action JS
	setActionJs:function(action){
		this.action = action;
		this.actionType = 'js';		
	},
	//-> execute le call back
	launchCallBack:function(){
		if(this.callBack && this.finnish == true){
			eval(this.callBack);
		}
	},
	//-> défini un callback
	setCallBack:function(script){
		if(script)
			this.callBack = script;
		else
			alert("empty");
	},
	//-> récupère l'url AJAX
	getUrlWebservice:function(){
		var urlWebService;
		switch(this.typeCarte){
			case 'default':
				urlWebService = "/library/js/components/dataRegion.txt";
			break;
			case 'neige':
				urlWebService = "/library/js/components/dataNeige.txt";
			break;
			case 'plage':
				urlWebService = "/library/js/components/dataPlage.txt";
			break;			
			case 'world':
				urlWebService = '/library/js/components/dataWorld.txt';
			break;						
			default:
				urlWebService = "/library/js/components/dataRegion.txt";
			break;
		}
		return urlWebService;
	}
}