// JavaScript Document
MooTools.lang.setLanguage("it-IT");

window.addEvent('domready',function(){$$('a[href=#]').each(function(el){el.addEvent('click', function(e) {e.stop();});});});

Form.Validator.Balloon = new Class({
	
	Extends: Form.Validator,
	
	options: {
		color: 'white',
		cssPath: 'include/formcheck/',
		contWidth: 150,
		offsetX: -150,
		offsetY: 0,
		scrollToErrorsOnSubmit: true,
		scrollFxOptions: {
			transition: 'quad:out',
			offset: {
				y: -20
			}
		}
	},
	initialize: function(form, options){
		this.parent(form, options);
		this.addEvent('onElementValidate', function(isValid, field, className, warn){
			var validator = this.getValidator(className);
			if (!isValid && validator.getError(field)){
				if (warn) field.addClass('warning');
				this.makeAdvice(className, field, validator.getError(field), warn);
			}
		});
		var cssPath = this.options.cssPath;
		if (cssPath.substr(-1,1) != '/') cssPath+='/';
		new Element('link', {
			'rel': "stylesheet",
			'type': "text/css",
			'href': cssPath+this.options.color+'/validator.css'
		}).inject(document.getElement('head'));
	},
	getFieldId : function(field){
		return field.id ? field.id : field.id = 'input_' + field.name;
	},
	validateField: function(field, force){
		this.createContainer(field);
		var result = this.parent(field, force);
		if (result) {
			this.hideAdvice(field);
		}
		else {
			this.insertAdvice(field);
			this.showAdvice(field);
		}
		return result;
	},
	createContainer: function(field) {
		if (!field.retrieve('advices-container', false)) {
			var errorHtml = '<div class="top"><div class="tl"></div><div class="tr"></div><div class="t"></div></div>';
			errorHtml += '<div class="center"><div class="l"><div class="r"><div class="c"><a class="close"></a><div class="err">';
			errorHtml += '</div></div></div></div></div>';
			errorHtml += '<div class="bottom"><div class="bl"></div><div class="br"></div><div class="b"></div></div>';
			var el2Wrap = field.getParent().get('tag') == 'label' ? field.getParent() : field;
			var p = new Element('span').wraps(el2Wrap);
			p.setStyle('position', 'relative');
			var div = new Element('div', {
				'class': 'validation-advice',
				'styles': { 
					'visibility': 'hidden',
					'position': 'absolute',
					'left': field.getCoordinates(p).right + this.options.offsetX,
					'width': this.options.contWidth+'px'
				},
				'html': errorHtml
			});
			field.store('advices-container',div);
			div.inject(p);
			if (div.fade) div.fade('hide');
			var fv = this;
			div.getElement('a.close').addEvent('click', function(e) {
				fv.resetField(field);
			});
		}
		var am;
		if (typeof(am = field.retrieve('advices-messages', false)) == 'array') {
			am.empty();
		}
		else {
			field.store('advices-messages', new Array())
		}
	},
	makeAdvice: function(className, field, error, warn){
		var errorMsg = (warn)?this.warningPrefix:this.errorPrefix;
			errorMsg += (this.options.useTitles) ? field.title || error:error;
		var cssClass = (warn) ? 'warning-message' : 'validation-message';
		var fv = this;
		var advice = new Element('p', {
			html: errorMsg,
			id: 'advice-' + className + '-' + this.getFieldId(field)
		}).addClass(cssClass);
		field.retrieve('advices-messages', new Array()).include(advice);
	},
	insertAdvice: function(field){
		var adviceMsg = field.retrieve('advices-messages', new Array());
		var cont = field.retrieve('advices-container', new Element('div')).getElement('div.err');
		cont.empty();
		adviceMsg.each(function(el) {
			el.inject(cont);
		});
	},
	showAdvice: function(field){
		var advice = field.retrieve('advices-container', new Element('div'));
		var p = field.getParent('span');
		var h = advice.getCoordinates().height;
		var t = field.getCoordinates(p).top;
		advice.setStyle('top', (t-h-this.options.offsetY)+'px');
		if (advice.fade) advice.fade('in');
		else advice.setStyle('visibility', 'visible');
	},
	hideAdvice: function(field){
		var advice = field.retrieve('advices-container', new Element('div'));
		if (advice.fade) advice.fade('out');
		else advice.setStyle('visibility', 'hidden');
	},
	resetField: function(field){
		field = document.id(field);
		if (!field) return this;
		this.parent(field);
		this.hideAdvice(field);
		return this;
	}
});

function eliminaRiga(id, messaggio, op) {
	var f, i;
	if (window.confirm(messaggio)) {
		f = new Element('form', {
				'action': addQSLink("op",op),
				'method': 'post',
				'styles': { 'display': 'none' }
			});
		i = new Element('input', {
				'type' : 'hidden',
				'name': 'id',
				'value': id
			});
		
		i.inject(f);
		
		f.inject(document.body);
		
		f.submit();
		
	}
}

function makeScrollable(selector) {
	/*
	Impostare overflow:auto ai div coinvolti
	farà funzionare il tutto anche senza javascript!
	
	Aggiungere i seguenti stili css:
		.sliderCont {
			// Contenitore di slider + frecce
			float: right // posizione dello slider
		}
		.frSu, .frGiu {
			// frecce
		}
		.slider {
			// slider
		}
		.knob {
			// pomello che si muove
		}
	*/
	$$(selector).each(function(el) {
		el.setStyle('overflow','hidden');
		
		var scrollCorpo;
		var inScroll = false;
		var currPos = 0;
		var mySlider;
		
		var div = new Element('div');
		var cont = new Element('div',{
			'class': 'scrollContainer'
		});
		
		var sliderCont = new Element('div',{
			'class': 'sliderCont'
		});
		var frSu = new Element('a',{
			'class': 'frSu',
			'href': '#',
			'events': {
				'click': function(e) {
					e.stop();
					currPos -=10;
					if (currPos < 0)
						currPos = 0;
					mySlider.set(currPos);
				}
			}
		});
		var frGiu = new Element('a',{
			'class': 'frGiu',
			'href': '#',
			'events': {
				'click': function(e) {
					e.stop();
					currPos +=10;
					if (currPos > (altCon - altFin))
						currPos = altCon - altFin;
					mySlider.set(currPos);
				}
			}
		});
		var slider = new Element('div',{
			'class': 'slider'
		});
		var knob = new Element('div',{
			'class': 'knob'
		});
		knob.inject(slider);
		
		frSu.inject(sliderCont);
		slider.inject(sliderCont);
		frGiu.inject(sliderCont);
		
		div.setStyles({
			'width': 'auto',			  
			'height': el.getStyle('height'),
			'overflow': 'hidden'
		});
		div.wraps(el);
		
		var frH = parseInt(frSu.getStyle('height')) + parseInt(frGiu.getStyle('height'));
		frH += parseInt(frSu.getStyle('margin-top')) + parseInt(frGiu.getStyle('margin-top'));
		frH += parseInt(frSu.getStyle('padding-top')) + parseInt(frGiu.getStyle('padding-top'));
		frH += parseInt(frSu.getStyle('border-top-width')) + parseInt(frGiu.getStyle('border-top-width'));
		frH += parseInt(frSu.getStyle('margin-bottom')) + parseInt(frGiu.getStyle('margin-bottom'));
		frH += parseInt(frSu.getStyle('padding-bottom')) + parseInt(frGiu.getStyle('padding-bottom'));
		frH += parseInt(frSu.getStyle('border-bottom-width')) + parseInt(frGiu.getStyle('border-bottom-width'));
		
		slider.setStyle('height', (el.getCoordinates().height - frH)+'px');
		
		el.setStyles({
			'width': 'auto',
			'height': 'auto',
			'overflow': 'visible'
		});
		
		var altFin = div.getCoordinates().height;
		var altCon = el.getCoordinates().height;
		
		if (altCon > altFin) {
			cont.wraps(div);
			sliderCont.inject(cont,'top');
			scrollCorpo = new Fx.Scroll(div, {
									link: 'cancel'
								});
	
			scrollCorpo.addEvent('start', function() { 
									inScroll = true;
								});
	
			scrollCorpo.addEvent('complete', function() { 
									inScroll = false;
									mySlider.set(currPos);
								});
	
			mySlider = new Slider(slider, knob, {
				onChange: function(pos){
						scrollCorpo.set(0,pos);
						currPos = pos;
					},
				mode: 'vertical',
				steps: altCon - altFin
			});
			
			cont.addEvent('mousewheel', function(e) {
				e.stop();
	
				if (e.wheel < 0) {
					currPos +=10;
					if (currPos > (altCon - altFin))
						currPos = altCon - altFin;
					mySlider.set(currPos);
				}
				if (e.wheel > 0) {
					currPos -=10;
					if (currPos < 0)
						currPos = 0;
					mySlider.set(currPos);
				}
			});
		}
	});
}

var pufApri;
var apriFin = function (lnk) {
	var u, t, l, w, h;
	
	w = Math.round(screen.height*2/3);
	h = Math.round(screen.height*2/3);
	l = Math.round((screen.width - w)/2);
	t = Math.round((screen.height - h)/2);
	u = lnk.href;

	if (u != "")
		pufApri = window.open(u,"Immgagine","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width="+w+",height="+h+",top="+t+",left="+l+"");
	
	return false;
	
}

function rollover(img, src) {
	$(img).set('src', src);
}
function addRollover(target, img, src, srcOut) {
	if (!srcOut) srcOut = img.get('src');
	target.addEvent('mouseover', function() {
		$(img).set('src', src);
	});
	target.addEvent('mouseout', function() {
		$(img).set('src', srcOut);
	});
}
function addQSLink(key, value) {
	var qst = location.search.substr(1);
	var dati = new Array();
	if (qst.length > 0) {
		dati=qst.split("&");
	}
	var l = "?";
	for (i=0; i < dati.length; i++) {
		if (dati[i].substr(0,key.length) != key)
			l += dati[i]+"&";
	}
	l += key + "=" + value;
	return l;
}
function addQS(key, value) {
	location = addQSLink(key, value);
}

function simplePreload()
{ 
  var args = simplePreload.arguments;
  document.imageArray = new Array(args.length);
  for(var i=0; i<args.length; i++)
  {
	document.imageArray[i] = new Image;
	document.imageArray[i].src = args[i];
  }
}


