// JavaScript Document

window.addEvent('domready', function() {

	 new SmoothScroll({ duration:1000 }, window);
	 
	/* *********************** */
	/* 			infobox    	   */
	/* *********************** */
	var infoBox = function(text) {
		$('fdbk').set('html', text);
		var sSize = $(window).getScroll();
		var pos = $(window).getSize();
		var box = $('fdbk').getSize();
		var coord = $('fdbk').getCoordinates();
		var sCenterX = ( window.getWidth()/2 ) - 210;
		var sCenterY = sSize.y+(window.getHeight() - coord['height'])/2;
		$('fdbk').setStyles({'top': -(2*box.y), 'left': sCenterX}); // position initiale
		var show = new Fx.Morph('fdbk', {
			link: 'chain',
			duration: 2000,
			transition: 'quart:out'
		});
		show.start({
			'top': sCenterY, 
			'left' : sCenterX,
			'display': 'block', 
			'opacity' : 1
		}).chain(function(){
			var d = $random(0, 1);
			var top = (d==0) ? sCenterX : -(2*box.y);
			//var left = (d==0) ? -(2*box.x) : sCenterX;
			var left = sCenterX;
			this.start.delay(1000, this, {
				'top': top, 
				'left': left,
				'opacity': 0
			});
		});
	}
	
	if( $('infobox') ) infoBox( $('infobox').get('html') );
	
	/* *********************** */
	/* 			ZOOM    	   */
	/* *********************** */
		var f = 1.5;	// facteur du zoom sur l'image finale. Si elle est suffisament grande laisser tel quel, sinon risque de dégradation si f >> 1
		
		$$('.zoom').each( function(item, index){
			var reg = new RegExp("[ ,:]+", "g");
			var orig = item.get('name');
			var oSize = orig.split(reg);
			var fromX = oSize[0];
			var fromY = oSize[1];
			item.getParent('.box').setStyles({
				'width': fromX + 'px', 
				'height': fromY + 'px'
			});
			item.set({
				'width': fromX,
				'height': fromY
			});
		});
		
		$$('.zoom').addEvents({
			'mousedown': function(e){
				e.stop();
				var boxSize = this.getParent('.box').getSize();
				var reduce = new Fx.Morph(this, {duration: 100, transition: Fx.Transitions.Cubic.easeOut});
				reduce.start({
					'width': boxSize.x,
					'height': boxSize.y,
					'margin-left': 0,
					'margin-top': 0
				});
				this.removeEvent('mouseenter');
				this.removeEvent('mousemove');
			},
			'mouseup': function(e){
				e.stop();
				var boxPos = this.getParent('.box').getCoordinates(document);
				var boxSize = this.getParent('.box').getSize();
				
				var img = this.get('rel');
				var reg = new RegExp("[ ,:]+", "g");
				var size = img.split(reg);
				var toX = f*size[0]; 
				var toY = f*size[1];
				
				var mX = e.page.x-boxPos.left;
				var mY = e.page.y-boxPos.top;
				var x = -Math.ceil((mX*(toX/boxSize.x))-mX);
				var y = -Math.ceil((mY*(toY/boxSize.y))-mY);
				var grow = new Fx.Morph(this, {duration: 100, transition: Fx.Transitions.Cubic.easeOut});
				grow.start({
					'width': toX,
					'height': toY,
					'margin-top': y,
					'margin-left': x
				});
				
			},
			'mouseenter': function(e){
				e.stop();
				var boxPos = this.getParent('.box').getCoordinates(document);
				var boxSize = this.getParent('.box').getSize();
				
				var img = this.get('rel');
				var reg = new RegExp("[ ,:]+", "g");
				var size = img.split(reg);
				var toX = f*size[0]; var toY = f*size[1];
				
				var mX = e.page.x-boxPos.left;
				var mY = e.page.y-boxPos.top;
				var x = -Math.ceil((mX*(toX/boxSize.X))-mX);
				var y = -Math.ceil((mY*(toY/boxSize.y))-mY);
				var grow = new Fx.Morph(this, {duration: 1000, transition: Fx.Transitions.Cubic.easeOut});
				grow.set({
					'width': toX,
					'height': toY,
					'margin-top': y,
					'margin-left': x
				});
			},
			'mouseleave': function(e) {
				e.stop();
				var boxSize = this.getParent('.box').getSize();
				var reduce = new Fx.Morph(this, {duration: 250, transition: Fx.Transitions.Cubic.easeOut});
				reduce.set({
					'width': boxSize.x,
					'height': boxSize.y,
					'margin-left': 0,
					'margin-top': 0
				});
			},
			'mousemove':function moveZoom(e) {
	
				e.stop();
				var boxPos = this.getParent('.box').getCoordinates(document);
				var boxSize = this.getParent('.box').getSize();
				var img = this.get('rel');
				var reg = new RegExp("[ ,:]+", "g");
				var size = img.split(reg);
				var toX = f*size[0]; var toY = f*size[1];
				var mX = e.page.x-boxPos.left;
				var mY = e.page.y-boxPos.top;
				var x = -Math.ceil((mX*(toX/boxSize.x))-mX);
				var y = -Math.ceil((mY*(toY/boxSize.y))-mY);
				this.setStyles({
					'margin-top': y,
					'margin-left': x
				});
				//$('coordonnes').set('text', 'x:'+ x + ' y:' + y );
			} 
		});


		// Ajout position travaux
		if( $('get_coord') ) {
			$('get_coord').addEvent('submit', function(e) {
				e.stop();
				var lat = $('lat').get('value');
				var lon = $('lon').get('value');
				var com = $('commentaire').get('value');
				var proche = $('address').get('value');
				
				//alert('Vous avez essayé d\'enregistrer : \nlat = ' + lat + ' \nlon = ' + lon + '\nzoom = ' + zoom + '\ncommentaire = ' + com + '\n\nPrêt pour la requête ajax' );
				
				var req = new Request.HTML({ 
					method: 'post', 
					url: 'http://www.mazan.fr/assets/ajax/save_travaux_pos.php', 
					data : { 
						'lat': lat, 
						'lon': lon, 
						'com': com, 
						'proche': proche 
					},
					update: $('response'), 
					evalScripts: true, 
					onComplete: function(response) {
						var req = new Request.HTML({ 
							method: 'post', 
							url: 'http://www.mazan.fr/assets/ajax/update_travaux_pos.php', 
							update: $('geo_list'), 
							evalScripts: true, 
							onComplete: function(response) {
								delGeo();
							}
						}).send(); 
					}
				}).send(); 
				
			});
		}
		
		
		// Del geo pos
		var delGeo = function() {
			$$('.del_geo').addEvent('click', function(e) {
				e.stop();
				if( confirm('Attention vous allez supprimer définitivement ce marqueur de position.\n Êtes-vous sûr ?') ) {
					var id_geo = this.get('rel');
					var req = new Request.HTML({ 
						method: 'post', 
						url: 'http://www.mazan.fr/assets/ajax/del_travaux_pos.php', 
						data : { 
							'id_geo': id_geo
						},
						update: $('geo_list'), 
						evalScripts: true, 
						onComplete: function(response) {
							delGeo();
						}
					}).send(); 

				}
			});
		}
		
		if( $$('.del_geo') ) delGeo();


	// VERIFICATION DES CHAMPS REQUIS : CSS CLASSE "verif"
		if( $$('input[type=submit]') ) {
			// verif on click
			$$('input[type=submit]').addEvents({
				'click': function(e){
					var allVar = '';
					var separateur = '- ';
					var txtReponse = '• Les champs suivants doivent être renseignés : ' + "\n\n";
					
					var thisForm = this.getParent('form');	//alert( thisForm.get('id') );
					var oldColor = '#444';
	
					// Vérif
					thisForm.getElements( '.verif' ).each(function(champ) {
						if(champ.get('value').length==0) {
							if(champ.getPrevious('label')){
								var monLabel = champ.getPrevious('label'); //alert(monLabel.get('text'));
								monLabel.setStyles( {'color': '#ff0000'} );
								var texte = monLabel.get('text').replace('*', '');
							}
							else { var texte = champ.get('id'); }
							
							allVar += separateur + texte + "\n";
						}
						else {
							if(champ.getPrevious('label')){
								var monLabel = champ.getPrevious('label'); //alert(monLabel.get('text'));
								monLabel.setStyles( {'color': oldColor} );
							}
						}
					});
					
	
					// Bis - utilisations multiples par form (deux par deux bien sûr)
						var bis = thisForm.getElements( '.bis' );
						var nbBis = bis.length;
						var cpt = 0;
						for(var i=0; i<nbBis; i++) {
							//var pair = (i%2==0)? true : false;
							if(i%2==0){
								if( bis[i].get('value') != bis[i+1].get('value')){
									var first = bis[i].getPrevious('label').get('text');
									allVar += "\n" + '• Vous devez confirmer : ' + first + "\n";
									var monLabel1 = bis[i].getPrevious('label');
									monLabel1.setStyles( {'color': '#ff0000'} );
									var monLabel2 = bis[i+1].getPrevious('label');
									monLabel2.setStyles( {'color': '#ff0000'} );
								}
								else {
									allVar += '';
									var monLabel1 = bis[i].getPrevious('label');
									monLabel1.setStyles( {'color': oldColor} );
									var monLabel2 = bis[i+1].getPrevious('label');
									monLabel2.setStyles( {'color': oldColor} );
								}
							}
						}
	
					
					// e-mail
					if(thisForm.getElement( '.mail' )){
						var email = thisForm.getElement( '.mail' );
						var mail = email.get('value');
						var filter = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
						if (!filter.test(mail)) {
							allVar += "\n" + '• Vous devez entrer un email valide' + "\n";
							var mailLabel = email.getPrevious('label');
							mailLabel.setStyles( {'color': '#ff0000'} );
							email.focus();
						}
					}
					
					
					// pass
					if(thisForm.getElement( '.pass' )){
						var pass = thisForm.getElement('.pass');
						var passv = pass.get('value');
						if (passv.length<8) {
							allVar += "\n" + '• Votre mot de passe doit contenir au moins 8 caractères' + "\n";
							var passLabel = pass.getPrevious('label');
							passLabel.setStyles( {'color': '#ff0000'} );
							pass.focus();
						}
					}
					
					// ANALYSE FORM
					if(allVar.length!=0) {
						alert(txtReponse + allVar);
						return false;
					}
					else {
						return true;
					}
				}
			});
		}

		
	// VERIFICATION TEXTAREA MAXLENGTH : HTML rel="MAXLENGTH" / CSS CLASSE "max"
		if( $$('.max') ) {
			$$('.max').addEvent('keyup', function(k) {
				var entered = this.get('value')
				var txtSize = entered.length;
				var maxLength = (this.get('rel')!='')? this.get('rel') : 600;
				
				if( txtSize>maxLength ){
					entered = entered.substr(0, maxLength);
					this.set('value', entered);
				}
			});
		}
	
	
	
	// Slide actus accueil
	/*
		var doSlide = function() {
			new NivooSlider($('slider'), {
				effect: 'random',
				interval: 3000,
				orientation: 'random'
			});
		}
		if( $chk($('slider')) ) doSlide();
	*/

	
});


