/**
 * Sexy Alert Box - for mootools 1.2 - jQUery 1.3
 * @name sexyalertbox.v1.2.js
 * @author Eduardo D. Sada - http://www.coders.me/web-js-html/javascript/sexy-alert-box
 * @version 1.2
 * @date 07-Feb-2009
 * @copyright (c) 2009 Eduardo D. Sada (www.coders.me)
 * @license MIT - http://es.wikipedia.org/wiki/Licencia_MIT
 * @example http://www.coders.me/ejemplos/sexy-alert-box/
 * @based in <PBBAcpBox> (Pokemon_JOJO, <http://www.mibhouse.org/pokemon_jojo>)
 * @thanks to Pokemon_JOJO!
 * @features:
 * * Chain Implemented (Cola de mensajes)
 * * More styles (info, error, alert, prompt, confirm)
 * * ESC would close the window
 * * Focus on a default button
*/

$(document).ready(function(){Sexy.initialize()});jQuery.bind=function(c,d){var e=Array.prototype.slice.call(arguments,2);return function(){var b=[this].concat(e,$.makeArray(arguments));return d.apply(c,b)}};jQuery.fn.delay=function(b,c){return this.each(function(){setTimeout(c,b)})};jQuery.fn.extend({$chain:[],chain:function(b){this.$chain.push(b);return this},callChain:function(b){return(this.$chain.length)?this.$chain.pop().apply(b,arguments):false},clearChain:function(){this.$chain.empty();return this}});(function(a){Sexy={getOptions:function(){return{name:'SexyAlertBox',zIndex:65555,onReturn:false,onReturnFunction:function(b){},BoxStyles:{'width':500},OverlayStyles:{'backgroundColor':'#000','opacity':0.7},showDuration:200,closeDuration:100,moveDuration:500,onCloseComplete:a.bind(this,function(){this.options.onReturnFunction(this.options.onReturn)})}},initialize:function(d){this.i=0;this.options=a.extend(this.getOptions(),d);a('body').append('<div id="BoxOverlay"></div><div id="'+this.options.name+'-Box"><div id="'+this.options.name+'-InBox"><div id="'+this.options.name+'-BoxContent"><div id="'+this.options.name+'-BoxContenedor"></div></div></div></div>');this.Content=a('#'+this.options.name+'-BoxContenedor');this.Contenedor=a('#'+this.options.name+'-BoxContent');this.InBox=a('#'+this.options.name+'-InBox');this.Box=a('#'+this.options.name+'-Box');a('#BoxOverlay').css({position:'absolute',top:0,left:0,opacity:this.options.OverlayStyles.opacity,backgroundColor:this.options.OverlayStyles.backgroundColor,'z-index':this.options.zIndex,height:a(document).height(),width:a(document).width()}).hide();this.Box.css({display:'none',position:'absolute',top:0,left:0,'z-index':this.options.zIndex+2,width:this.options.BoxStyles.width+'px'});this.preloadImages();a(window).bind('resize',a.bind(this,function(){if(this.options.display==1){a('#BoxOverlay').css({height:0,width:0});a('#BoxOverlay').css({height:a(document).height(),width:a(document).width()});this.replaceBox()}}));this.Box.bind('keydown',a.bind(this,function(b,c){if(c.keyCode==27){this.options.onReturn=false;this.display(0)}}));a(window).bind('scroll',a.bind(this,function(){this.replaceBox()}))},replaceBox:function(){if(this.options.display==1){this.Box.stop();this.Box.animate({left:((a(document).width()-this.options.BoxStyles.width)/2),top:(a(document).scrollTop()+(a(window).height()-this.Box.outerHeight())/2)},{duration:this.options.moveDuration,easing:'easeOutBack'});a(this).delay(this.options.moveDuration,a.bind(this,function(){a('#BoxAlertBtnOk').focus();a('#BoxPromptInput').focus();a('#BoxConfirmBtnOk').focus()}))}},display:function(b){if(this.options.display==0&&b!=0||b==1){if(!a.support.maxHeight){a('embed, object, select').css({'visibility':'hidden'})}this.togFlashObjects('hidden');this.options.display=1;a('#BoxOverlay').stop();a('#BoxOverlay').fadeIn(this.options.showDuration,a.bind(this,function(){this.Box.css({display:'block',left:((a(document).width()-this.options.BoxStyles.width)/2)});this.replaceBox()}))}else{this.Box.css({display:'none',top:0});this.options.display=0;a(this).delay(500,a.bind(this,this.queue));a(this.Content).empty();this.Content.removeClass();if(this.i==1){a('#BoxOverlay').stop();a('#BoxOverlay').fadeOut(this.options.closeDuration,a.bind(this,function(){a('#BoxOverlay').hide();if(!a.support.maxHeight){a('embed, object, select').css({'visibility':'visible'})}this.togFlashObjects('visible');this.options.onCloseComplete.call()}))}}},messageBox:function(c,d,e,f){a(this).chain(function(){e=a.extend({'textBoxBtnOk':'OK','textBoxBtnCancel':'Annulla','textBoxInputPrompt':null,'password':false,'onComplete':function(b){}},e||{});this.options.onReturnFunction=e.onComplete;this.Content.append('<div id="'+this.options.name+'-Buttons"></div>');if(c=='alert'||c=='info'||c=='error'){a('#'+this.options.name+'-Buttons').append('<input id="BoxAlertBtnOk" type="submit" />');a('#BoxAlertBtnOk').val(e.textBoxBtnOk).css({'width':70});a('#BoxAlertBtnOk').bind('click',a.bind(this,function(){this.options.onReturn=true;this.display(0)}));if(c=='alert'){clase='BoxAlert'}else if(c=='error'){clase='BoxError'}else if(c=='info'){clase='BoxInfo'}this.Content.addClass(clase).prepend(d);this.display(1)}else if(c=='confirm'){a('#'+this.options.name+'-Buttons').append('<input id="BoxConfirmBtnOk" type="submit" /> <input id="BoxConfirmBtnCancel" type="submit" />');a('#BoxConfirmBtnOk').val(e.textBoxBtnOk).css({'width':70});a('#BoxConfirmBtnCancel').val(e.textBoxBtnCancel).css({'width':70});a('#BoxConfirmBtnOk').bind('click',a.bind(this,function(){this.options.onReturn=true;this.display(0)}));a('#BoxConfirmBtnCancel').bind('click',a.bind(this,function(){this.options.onReturn=false;this.display(0)}));this.Content.addClass('BoxConfirm').prepend(d);this.display(1)}else if(c=='prompt'){a('#'+this.options.name+'-Buttons').append('<input id="BoxPromptBtnOk" type="submit" /> <input id="BoxPromptBtnCancel" type="submit" />');a('#BoxPromptBtnOk').val(e.textBoxBtnOk).css({'width':70});a('#BoxPromptBtnCancel').val(e.textBoxBtnCancel).css({'width':70});c=e.password?'password':'text';this.Content.prepend('<input id="BoxPromptInput" type="'+c+'" />');a('#BoxPromptInput').val(e.input);a('#BoxPromptInput').css({'width':250});a('#BoxPromptBtnOk').bind('click',a.bind(this,function(){this.options.onReturn=a('#BoxPromptInput').val();this.display(0)}));a('#BoxPromptBtnCancel').bind('click',a.bind(this,function(){this.options.onReturn=false;this.display(0)}));this.Content.addClass('BoxPrompt').prepend(d+'<br />');this.display(1)}else{this.options.onReturn=false;this.display(0)}});this.i++;if(this.i==1){a(this).callChain(this)}},queue:function(){this.i--;a(this).callChain(this)},chk:function(b){return!!(b||b===0)},togFlashObjects:function(b){var c=new Array("embed","iframe","object");for(y=0;y<c.length;y++){var d=document.getElementsByTagName(c[y]);for(i=0;i<d.length;i++){d[i].style.visibility=b}}},preloadImages:function(){var b=new Array(2);b[0]=new Image();b[1]=new Image();b[2]=new Image();b[0].src=this.Box.css('background-image').replace(new RegExp("url\\('?([^']*)'?\\)",'gi'),"$1");b[1].src=this.InBox.css('background-image').replace(new RegExp("url\\('?([^']*)'?\\)",'gi'),"$1");b[2].src=this.Contenedor.css('background-image').replace(new RegExp("url\\('?([^']*)'?\\)",'gi'),"$1")},alert:function(b,c){this.messageBox('alert',b,c)},info:function(b,c){this.messageBox('info',b,c)},error:function(b,c){this.messageBox('error',b,c)},confirm:function(b,c){this.messageBox('confirm',b,c)},prompt:function(b,c,d){this.messageBox('prompt',b,d,c)}}})(jQuery);

/**
 * FormDOM
 * @author Davide Magnan
 * @version 2.5
 * @date 03-Apr-2008
*/
function controlla_esistenza(campo,nome) {
	if (document.getElementById(campo).value=="") {
		FD_avviso+='<p>Il campo «'+nome+'» è obbligatorio!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_check(campo,nome) {
	if (document.getElementById(campo).checked!=true) {
		FD_avviso+='<p>E\' necessario spuntare il campo «'+nome+'».</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_numero(campo,nome) {
	if ( isNaN(document.getElementById(campo).value) || document.getElementById(campo).value=='' ) {
		FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_mail(campo,nome) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if( !filter.test(document.getElementById(campo).value) ) { 
		FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_data(campo,nome) {
	var month_it = new Array("", "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
	val=document.getElementById(campo).value;
	if ((val.length==10) && (val.substring(2,3)=='/') && (val.substring(5,6)=='/') ) {
		var dd = parseInt(val.substring(0,2), 10);
		var mm = parseInt(val.substring(3,5), 10);
		var yy = parseInt(val.substring(6,10), 10);
		if(dd>31 || mm>12 || dd<1 || mm<1 || yy<1900) {
			FD_avviso+='- Verificare l\'esattezza del campo «'+nome+'»!\n\n';
			errore_layout(campo);
			FD_errore=1;
		}
		else {
			switch(mm) {
				case 4:
				case 6:
				case 9:
				case 11:
					if (dd > 30) {
						FD_avviso += "- "+month_it[mm]+" ha 30 giorni!\n\n";
						errore_layout(campo);
						FD_errore=1;
					}
				break;
			}
			if ((yy % 4) == 0) {
				if ((mm == 2) && (dd > 29)) {
						FD_avviso += "- Nell'anno "+yy+", "+ month_it[mm]+" ha 29 giorni!\n\n";
						errore_layout(campo);
						FD_errore=1;
				}
			}
			else {
				if ((mm == 2) && (dd > 28)) {
						FD_avviso += "- Nell'anno "+yy+", "+ month_it[mm]+" ha 28 giorni!\n\n";
						errore_layout(campo);
						FD_errore=1;
				}
			}
			if ((dd!=parseInt(dd))||(mm!=parseInt(mm))||(yy!=parseInt(yy))) {
				FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
				errore_layout(campo);
				FD_errore=1;
			}
		}
	}
	else {
		FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function confronta_data(campo1,nome1, campo2,nome2) {
	data1=document.getElementById(campo1).value;
	data2=document.getElementById(campo2).value;
	//trasformo le date nel formato aaaammgg (es. 20081103)
	data1str = data1.substr(6)+data1.substr(3, 2)+data1.substr(0, 2);
	data2str = data2.substr(6)+data2.substr(3, 2)+data2.substr(0, 2);
	//controllo se la seconda data è successiva alla prima
	if (data2str-data1str<0) {
		FD_avviso+='<p>«'+nome1+'» deve essere precedente a «'+nome2+'»!</p>';
		errore_layout(campo1); errore_layout(campo2);
		FD_errore=1;
	}
}

function controlla_ora(campo,nome) {
	pi = document.getElementById(campo).value;
	if(pi!='') {
		if (!pi.match(/^([01]\d|2[0-3]):([0-5]\d)$/)) {
			FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
			errore_layout(campo);
			FD_errore=1;
		}
	}
}

function controlla_lunghezza(campo,nome,lunghezza) {
	if (document.getElementById(campo).value.length<lunghezza) {
		FD_avviso+='<p>Il campo «'+nome+'» non può essere più corto di '+lunghezza+' caratteri!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_dipendenza(campo1,nome1,campo2,nome2,tipo) {
	// tipo 1: "se a allora b", tipo 2: "se a allora b e se b allora a"
	if (tipo=="1") {
		if ((document.getElementById(campo1).value!='')&&(document.getElementById(campo2).value=='')) {
			FD_avviso+='<p>Essendo presente il campo «'+nome1+'» deve essere presente anche il campo «'+nome2+'»!</p>';
			errore_layout(campo2);
			FD_errore=1;
		}
	}
	if (tipo=="2") {
		if ((document.getElementById(campo2).value!='')&&(document.getElementById(campo1).value=='')) {
			FD_avviso+='<p>Essendo presente il campo «'+nome2+'» deve essere presente anche il campo «'+nome1+'\'!</p>';
			errore_layout(campo1);
			FD_errore=1;
		}
	}
}
function controlla_esistenza_2(campo1,nome1,campo2,nome2) {
	// tipo 1: "se a allora b", tipo 2: "se a allora b e se b allora a"
	if ((document.getElementById(campo1).value=="") && (document.getElementById(campo2).value=="")) {
		FD_avviso+='<p>Deve essere presente almeno uno tra i campi «'+nome1+'» e «'+nome2+'»!</p>';
		//errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_uguaglianza(campo1,nome1,campo2,nome2,tipo) {
	// tipo 1: "se a = b OK", tipo 2: "se a = b KO"
	if (tipo=="1") {
		if ((document.getElementById(campo1).value!=document.getElementById(campo2).value)) {
			FD_avviso+='<p>Il campo «'+nome1+'» deve essere uguale al campo «'+nome2+'»!</p>';
			errore_layout(campo2);
			FD_errore=1;
		}
	}
	if (tipo=="2") {
		if ((document.getElementById(campo2).value!=document.getElementById(campo1).value)) {
			FD_avviso+='<p>Il campo «'+nome1+'» deve essere diverso dal campo «'+nome2+'»!</p>';
			errore_layout(campo2);
			FD_errore=1;
		}
	}
}
function controlla_codice_fiscale(campo,nome){
   var cf = document.getElementById(campo).value.toUpperCase();
	if(cf!='') {
		document.getElementById(campo).value = cf;
		var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
		if (!cfReg.test(cf)) {
			FD_avviso+='- Verificare l\'esattezza del campo «'+nome+'»!\n\n';
			errore_layout(campo);
			FD_errore=1;
		} else {
			var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
			var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
			var s = 0;
			for( i = 1; i <= 13; i += 2 )
				s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
			for( i = 0; i <= 14; i += 2 )
				s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
			if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ) {
				FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
				errore_layout(campo);
				FD_errore=1;
			}
		}
	} else {
		FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function controlla_piva(campo,nome) {
	pi = document.getElementById(campo).value;
	if(pi!='') {
		if (!pi.match(/^\w{2}\d{9}$/i)) {
			FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
			errore_layout(campo);
			FD_errore=1;
		}
	}
}

function controlla_url(campo,nome) {
	pi = document.getElementById(campo).value;
	
	var v = new RegExp();
	v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
	
	if(pi!='') {
		if (!v.test(pi)) {
        FD_avviso+='<p>Verificare l\'esattezza del campo «'+nome+'»!</p>';
			errore_layout(campo);
			FD_errore=1;
    }
	}
}

function controlla_estensione(campo,nome,ext_ok) {
	path = document.getElementById(campo).value;
	posizione_punto=path.lastIndexOf(".");
	lunghezza_stringa=path.length;
	estensione=path.substring(posizione_punto+1,lunghezza_stringa);
	if(ext_ok.indexOf(estensione)=='-1') {
		FD_avviso+='<p>Verificare l\'estensione del campo «'+nome+'»!</p>';
		errore_layout(campo);
		FD_errore=1;
	}
}
function errore_layout(campo) {
	document.getElementById(campo).style.borderColor='#FF6F6F';
	if(FD_errore==0)
		document.getElementById(campo).focus();
}
function controlla_form() {
	// es: "e"=esistenza, "m"=e-mail, "d"=data, "c"=checked, "n"=numero, "l"=lunghezza, "x"=dipendenza, "u"=uguaglianza
	var FD_args = controlla_form.arguments;
	FD_avviso=''; FD_errore=0;
	for (var i=0; i<FD_args.length; i++) {
		if (FD_args[i]!='') {
			document.getElementById(FD_args[i+1]).style.borderColor='';//ripristino la fomattazione iniziale
			if (FD_args[i]=="e")
				{controlla_esistenza(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="m")
				{controlla_mail(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="d")
				{controlla_data(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="c_d")
				{confronta_data(FD_args[i+1],FD_args[i+2],FD_args[i+3],FD_args[i+4]); i=i+4}
			if (FD_args[i]=="c")
				{controlla_check(FD_args[i+1],FD_args[i+2]);i=i+2}
			if (FD_args[i]=="o")
				{controlla_ora(FD_args[i+1],FD_args[i+2]);i=i+2}
			if (FD_args[i]=="n")
				{controlla_numero(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="l")
				{controlla_lunghezza(FD_args[i+1],FD_args[i+2],FD_args[i+3]); i=i+3}
			if (FD_args[i]=="x")
				{controlla_dipendenza(FD_args[i+1],FD_args[i+2],FD_args[i+3],FD_args[i+4],FD_args[i+5]); i=i+5}
			if (FD_args[i]=="e2")
				{controlla_esistenza_2(FD_args[i+1],FD_args[i+2],FD_args[i+3],FD_args[i+4]); i=i+4}
			if (FD_args[i]=="u")
				{controlla_uguaglianza(FD_args[i+1],FD_args[i+2],FD_args[i+3],FD_args[i+4],FD_args[i+5]); i=i+5}
			if (FD_args[i]=="cf")
				{controlla_codice_fiscale(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="piva")
				{controlla_piva(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="url")
				{controlla_url(FD_args[i+1],FD_args[i+2]); i=i+2}
			if (FD_args[i]=="ext")
				{controlla_estensione(FD_args[i+1],FD_args[i+2],FD_args[i+3]); i=i+3}
		}
	}
	if (FD_errore==0) {
		return true;
	}
	else {
		Sexy.alert("<h1>Attenzione!</h1>"+FD_avviso);
		return false;
	}
}
