/*jsMapper - iFacta - Samuel Desnoes - 2009-02-06*/

DOMAssistant.jsMapper = function () {
	return {
	
		mode: 2,
		dataRec : [],
		mapT: null,
		mapForm: null,
		mapFormX: null,
		mapFormY: null,
		cW: null,
		cH: null,
		cT: null,
		cL: null,
	
		publicMethods : [
			"setPoint",
			"mapIt"
		],
		
		setPoint: function (vx, vy, title, url, actif, id) {
			//setting already defined x:y points
			var dataS = [parseInt(vx), parseInt(vy), title, url, actif];
			return this.dataRec[id] = dataS;
		},
		
		mapIt: function (mode) {
			if (mode) {
				DOMAssistant.jsMapper.mode = mode;
			}
			DOMAssistant.jsMapper.mapT = $$(this);
			DOMAssistant.jsMapper.cW = "undefined";
			DOMAssistant.jsMapper.cH = "undefined";
			DOMAssistant.jsMapper.cT = "undefined";
			DOMAssistant.jsMapper.cL = "undefined";
			DOMAssistant.jsMapper.mapForm = "undefined";
			DOMAssistant.jsMapper.mapFormX = "undefined";
			DOMAssistant.jsMapper.mapFormY = "undefined";
			switch (DOMAssistant.jsMapper.mode) {
				case 1 :
					//admin - ajout
					DOMAssistant.jsMapper.mapForm = $(this).cssSelect("form#jsMapF").first();
					$(DOMAssistant.jsMapper.mapForm).setStyle("display", "none");
					DOMAssistant.jsMapper.mapFormX = $(this).cssSelect("input#iX").first();
					DOMAssistant.jsMapper.mapFormY = $(this).cssSelect("input#iY").first();
					DOMAssistant.jsMapper.listenA();
				break;
				case 2 :
					//admin - modif
					DOMAssistant.jsMapper.mapForm = $(this).cssSelect("form#jsMapF").first();
					$(DOMAssistant.jsMapper.mapForm).setStyle("display", "none");
					DOMAssistant.jsMapper.mapFormX = $(this).cssSelect("input#iX").first();
					DOMAssistant.jsMapper.mapFormY = $(this).cssSelect("input#iY").first();
					DOMAssistant.jsMapper.listenM();
				break;
				default :
					return $(this);
				break;
			}
			
			//alert(DOMAssistant.jsMapper.mapT);//debug
			
			return $(this);
		},
		
		listenA: function () {
			/*gestionnaire d'evenements pour l'ajout*/
			//alert(DOMAssistant.jsMapper.dataRec.join("\n"));//debug
			$(DOMAssistant.jsMapper.mapT).cssSelect("a").addEvent("click", DOMAssistant.jsMapper.getMousePos);
		},
		
		listenM: function () {
			/*gestionnaire d'evenements pour l'ajout*/
			//alert(DOMAssistant.jsMapper.dataRec.join("\n"));//debug
			$(DOMAssistant.jsMapper.mapT).cssSelect("a.dataPoint").addEvent("click", function () {
				var idP = $(this).id.substr(8);
				//alert(idP);//debug
				DOMAssistant.jsMapper.fillModForm(idP);
				return false;
			});
		},
		
		getBlockPos: function () {
			/*récupère la position du bloc conteneur pour le calcul des coordonnées internes*/
			DOMAssistant.jsMapper.cW = parseInt($(DOMAssistant.jsMapper.mapT).getStyle("width"));
			DOMAssistant.jsMapper.cH = parseInt($(DOMAssistant.jsMapper.mapT).getStyle("height"));
			DOMAssistant.jsMapper.cT = $(DOMAssistant.jsMapper.mapT).offsetTop + parseInt($$("global").offsetTop);
			DOMAssistant.jsMapper.cL = $(DOMAssistant.jsMapper.mapT).offsetLeft + parseInt($$("global").offsetLeft);
			//alert(DOMAssistant.jsMapper.cL);//debug
		},
		
		getMousePos: function (e) {
			/*récupère les coordonnées de la souris au moment du click*/
			//alert("click !");//debug
			var D, de, sx, sy, x, y, aw, ah;
			
			if (DOMAssistant.jsMapper.cW === "undefined") {
				DOMAssistant.jsMapper.getBlockPos();
			}
			
			D = document;
			//Gecko
			gk = window.Event;
			// IE6 XHTML
			de = (!D.documentElement.clientWidth) ? D.body : D.documentElement;
			
			sx = (gk) ? pageXOffset : de.scrollLeft;      //scroll h
			sy = (gk) ? pageYOffset : de.scrollTop;       //scroll v
			x = ((gk) ? e.pageX : event.clientX + sx) - DOMAssistant.jsMapper.cL;       //curseur x
			y = ((gk) ? e.pageY : event.clientY + sy) - DOMAssistant.jsMapper.cT;       //curseur y
			
			//alert("x = " + x +"\ny = " + y);//debug
			
			if (DOMAssistant.jsMapper.mode === 1) {
				/*si le mode l'autorise, envoi des coordonnées au formulaire d'ajout*/
				//alert('mode admin!');//debug
				DOMAssistant.jsMapper.updateFormAdd(x, y);
			}
			
			return false;
		},
		
		updateFormAdd: function (px, py) {
			//alert("update demandé : "+px+":"+py);//debug
			if ($(DOMAssistant.jsMapper.mapForm).getStyle("display") === "none") {
				$(DOMAssistant.jsMapper.mapForm).setStyle("display", "block");
			}
			//alert($(DOMAssistant.jsMapper.mapFormX));//debug
			$(DOMAssistant.jsMapper.mapFormX).value = px;
			$(DOMAssistant.jsMapper.mapFormY).value = py;
		},
		
		fillModForm: function (idP) {
			/*remplit les champs du formulaire de modif avec les valeurs du point cliqué*/
			var v = DOMAssistant.jsMapper.dataRec[idP];
			if ($(DOMAssistant.jsMapper.mapForm).getStyle("display") === "none") {
				$(DOMAssistant.jsMapper.mapForm).setStyle("display", "block");
			}
			$(DOMAssistant.jsMapper.mapForm).cssSelect("input#idP").first().value = idP;
			$(DOMAssistant.jsMapper.mapFormX).value = v[0];
			$(DOMAssistant.jsMapper.mapFormY).value = v[1];
			$(DOMAssistant.jsMapper.mapForm).cssSelect("input#iNom").first().value = v[2];
			if (v[4] == 1){
				//alert("actif !");//debug
				$(DOMAssistant.jsMapper.mapForm).cssSelect("input#actif").first().checked = true;
			}
			else {
				$(DOMAssistant.jsMapper.mapForm).cssSelect("input#actif").first().checked = false;
			}
			//$(DOMAssistant.jsMapper.mapForm).cssSelect("input#iUrl").first().value = v[3];
		}
	};
	
}();

DOMAssistant.attach(DOMAssistant.jsMapper);