function IsEmpty(str)
{
	return (str.replace(/ /g,"").length == 0);
}

/* 
Parametri
	form: la form (mettere tutto il nome della form es. document.forms[0])
	il resto dei parametri sono triplette:
	1:	Stringa nome campo form es. 'nome' -> document.forms[0].nome
	2:	Stringa messaggio errore es. 'E\' necessario inserire un valore'
	3:	Stringa contenete due numeri es: '10' -> Obbligatorio Numerico
		il secondo numero puņ essere omesso se semplicemente obbligatorio o select obbligtoria
		1: se richiesto o select
			0: non richiesto
			1: obbligatorio
			2: data (ci devono essere tutti e tre i campi della data separati da una virgola nel parametro 1)
		2: tipo di dato
			se data:
			0: non obbligatorio
			1: obbligatorio
			altrimenti:
			0: numerico
			1: email
			2: alfanumerico
			3: almento un checkbox o un radiobutton selezionato
			4: un indirizzo internet (senza @ per non confonderla con l'email)
*/
function Control(form)
{
	var args=Control.arguments;
	var Err=false;
	var chr1;
	var chr2;
	var str;
	for(var i=1; i < args.length; i+=3)
	{
		chr1=""+args[i+2].substring(0,1);
		chr2=""+args[i+2].substring(1,2);
		switch(chr1)
		{
			case '0':
			case '1':
				if(""+form[args[i]]=="undefined")
				{
					alert(args[i+1]);
					return false;
				}

				if(""+form[args[i]].type=="select-one" || ""+form[args[i]].type=="select-multiple")
					str=""+form[args[i]][form[args[i]].selectedIndex].value; 
				else
					str=""+form[args[i]].value;

				if(IsEmpty(str) && chr1=="1")
				{
					Err=true;
					break;
				}
				if(!IsEmpty(str))
				{
					switch(chr2)
					{
						case "0":	// Numerico
							if(isNaN(str))
								Err=true;
							break;
						case "1":	// E-Mail
							if(!IsEmail(str))
								Err=true;
							break;
						case "2":	// Alfanumerico
							var stringa=""+str;
							for(var po=0; po < stringa.length; po++)
							{
								if(!(stringa.charCodeAt(po) >= 97 && stringa.charCodeAt(po) <= 122 || stringa.charCodeAt(po)==32)) // Lettere minuscole e lo spazio
								{
									if(!(stringa.charCodeAt(po) >= 65 && stringa.charCodeAt(po) <= 90)) // Lettere maiuscole
									{
										if(!(stringa.charCodeAt(po) >= 48 && stringa.charCodeAt(po) <= 57)) // Numeri
										{
											Err=true;
											break;
										}
									}
								}
							}
							break;
						case "3":	// Checkbox / Radio - Almeno uno selezionato
							var Chk=false;
							if(""+form[args[i]].length!="undefined")
							{
								for(var kk=0; kk < form[args[i]].length; kk++)
								{
									if(form[args[i]][kk].checked)
									{
										Chk=true;
										break;
									}
								}
								Err=!Chk;
							}
							else
								Err=!form[args[i]].checked;
							break;
						case "4":
							if(""+str.indexOf("@")!=-1)
								Err=true;
							break;
						case "5":	// Username
							if(str.length<6)
							{
								Err=true;
							}
							else
							{
								var stringa=""+str;
								for(var po=0; po < stringa.length; po++)
								{
									if(!(stringa.charCodeAt(po) >= 97 && stringa.charCodeAt(po) <= 122)) // Lettere minuscole
									{
										if(!(stringa.charCodeAt(po) >= 65 && stringa.charCodeAt(po) <= 90)) // Lettere maiuscole
										{
											if(!(stringa.charCodeAt(po) >= 48 && stringa.charCodeAt(po) <= 57)) // Numeri
											{
												Err=true;
												break;
											}
										}
									}
								}
							}
							break;
						case "6":	// Password
							if(str.length<8)
								Err=true;
							break;
						case "7":	// Conferma password
							if(str!=""+form[args[i].substring(2)].value)
								Err=true;
							break;
					}
				}
				break;
			case '2':
				{
					var params=args[i].split(",");
					var hrs="0";
					if(""+params[3]!="undefined")
						hrs=form[params[3]].value;
					var min="0";
					if(""+params[4]!="undefined")
						min=form[params[4]].value;
					if(!isDate(""+form[params[0]][form[params[0]].selectedIndex].value,""+form[params[1]][form[params[1]].selectedIndex].value,""+form[params[2]][form[params[2]].selectedIndex].value,(""+chr2=="0"),hrs,min))
					{
						alert(args[i+1]);
						if(""+form[params[0]].type!="hidden" && ""+form[params[0]].disabled != "true")
							form[params[0]].focus();
						return false;
					}
				}
				break;
		}
		if(Err)
			break;
	}
	if(Err)
	{
		alert(args[i+1]);
		if(""+form[args[i]].length!="undefined")
		{
			if(""+form[args[i]][0].type=="checkbox" || ""+form[args[i]][0].type=="radio") 
			{
				if(""+form[args[i]][0].type!="hidden" && ""+form[args[i]][0].disabled != "true")
				{
					form[args[i]][0].focus();
				}
			}
			else
			{
				if(""+form[args[i]].type!="hidden" && ""+form[args[i]].disabled != "true")
					form[args[i]].focus();
			}
		}
		else
		{
			if(""+form[args[i]].type!="hidden" && ""+form[args[i]].disabled != "true")
				form[args[i]].focus();
		}
		return false;
	}
	return true;
}

/*

	UGUALE A Control(), ma senza l' email obbligatoria

*/
function Control2(form)
{
	var args=Control2.arguments;
	var Err=false;
	var chr1;
	var chr2;
	var str;
	for(var i=1; i < args.length; i+=3)
	{
		chr1=""+args[i+2].substring(0,1);
		chr2=""+args[i+2].substring(1,2);
		switch(chr1)
		{
			case '0':
			case '1':
				if(""+form[args[i]]=="undefined")
					return false;

				if(""+form[args[i]].type=="select-one" || ""+form[args[i]].type=="select-multiple")
					str=""+form[args[i]][form[args[i]].selectedIndex].value; 
				else
					str=""+form[args[i]].value;

				if(IsEmpty(str) && chr1=="1")
				{
					Err=true;
					break;
				}
				if(!IsEmpty(str))
				{
					switch(chr2)
					{
						case "0":	// Numerico
							if(isNaN(str))
								Err=true;
							break;
						case "1":	// E-Mail
							if(!IsEmail(str))
								Err=true;
							break;
						case "2":	// Alfanumerico
							var stringa=""+str;
							for(var po=0; po < stringa.length; po++)
							{
								if(!(stringa.charCodeAt(po) >= 97 && stringa.charCodeAt(po) <= 122 || stringa.charCodeAt(po)==32)) // Lettere minuscole e lo spazio
								{
									if(!(stringa.charCodeAt(po) >= 65 && stringa.charCodeAt(po) <= 90)) // Lettere maiuscole
									{
										if(!(stringa.charCodeAt(po) >= 48 && stringa.charCodeAt(po) <= 57)) // Numeri
										{
											Err=true;
											break;
										}
									}
								}
							}
							break;
						case "3":	// Checkbox / Radio - Almeno uno selezionato
							var Chk=false;
							if(""+form[args[i]].length!="undefined")
							{
								for(var kk=0; kk < form[args[i]].length; kk++)
								{
									if(form[args[i]][kk].checked)
									{
										Chk=true;
										break;
									}
								}
								Err=!Chk;
							}
							else
								Err=!form[args[i]].checked;
							break;
						case "4":
							if(""+str.indexOf("@")!=-1)
								Err=true;
							break;
					}
				}
				break;
			case '2':
				{
					var params=args[i].split(",");
					var hrs="";
					if(""+params[3]!="undefined")
						hrs=form[params[3]].value;
					var min="";
					alert(form[params[4]].value);
					if(""+params[4]!="undefined")
					{
						min=form[params[4]].value;
						alert(min);
					}
					if(!isDate(""+form[params[0]][form[params[0]].selectedIndex].value,""+form[params[1]][form[params[1]].selectedIndex].value,""+form[params[2]][form[params[2]].selectedIndex].value,(""+chr2=="0"),hrs,min))
					{
						alert(args[i+1]);
						if(""+form[params[0]].type!="hidden" && ""+form[params[0]].disabled != "true")
							form[params[0]].focus();
						return false;
					}
				}
				break;
		}
		if(Err)
			break;
	}
	if(Err)
	{
		alert(args[i+1]);
		if(""+form[args[i]].length!="undefined")
		{
			if(""+form[args[i]][0].type=="checkbox" || ""+form[args[i]][0].type=="radio") 
			{
				if(""+form[args[i]][0].type!="hidden" && ""+form[args[i]][0].disabled != "true")
				{
					form[args[i]][0].focus();
				}
			}
			else
			{
				if(""+form[args[i]].type!="hidden" && ""+form[args[i]].disabled != "true")
					form[args[i]].focus();
			}
		}
		else
		{
			if(""+form[args[i]].type!="hidden" && ""+form[args[i]].disabled != "true")
				form[args[i]].focus();
		}
		return false;
	}
	return true;
}

function IsEmail(email)
{
	var at, punto;
	at=email.indexOf("@",0);
	if(at==-1) // Se manca la chiocciola
		return false;
	if(email.substring(0,at) == "") // Se manca il nome dell'utente
		return false;
	punto=email.indexOf(".",at+1);
	if(punto==-1) // Se manca il punto
		return false;
	if(email.substring(at+1,punto) == "") // Se manca il nome del server
		return false;
	if(email.substring(punto+1,email.length) == "") // Se manca il tipo del server
		return false;

	return true;
}

function MaxChar(E,max)
{
	if(E.value.length >= max)
		E.value=E.value.substring(0,(max-1))
}

function NoFrame()
{
	if(""+window.name!="")
	{
		window.parent.location=""+window.location;
	}
}

var T1;
function BlankStatus(txt)
{
	window.status=""+txt;
	T1=setTimeout("Blank('" + txt+ "')",0);
}

function TypeWriterStatus(StatusTxt)
{
	//clearTimeout(T1);
	var str=""+window.status;
	if(str != "undefined" && str.length < StatusTxt.length)
	{
		window.status+=""+StatusTxt.charAt(str.length);
		setTimeout("TypeWriterStatus('" + StatusTxt + "')",100);
	}
	else
	{
		//Blank(""+window.status);
		//setTimeout("clearTimeout(T1); Blank('');",1500)
		setTimeout("window.status=''",1500)
		setTimeout("TypeWriterStatus('" + StatusTxt + "')",2500);
	}
}

function ScrollTextStatus(StatusTxt)
{
	var str=""+window.status;
	if(str.replace(/ /g,"")!="" && str.replace(/ /g,"")!="undefined")
	{
		window.status=""+str.substring(1,str.length)+str.charAt(0);
		setTimeout("ScrollTextStatus('" + StatusTxt + "')",100);
	}
	else
	{
		window.status="                                                                                                                                "+StatusTxt;
		ScrollTextStatus(StatusTxt);
	}
}

// Il secondo parametro (boolean) specifica se puņ essere vuota
function isValid(str)
{
	var canBeEmpty=true;
	if(isValid.arguments.length>1)
		canBeEmpty=isValid.arguments[1];
	if(""+str=="null" || ""+str=="undefined" || (((canBeEmpty)?false:((IsEmpty(str))?true:false))))
		return false;
	return true;
}

function isDate(day, month, year)
{
	var cbe=true;
	var hours="0";
	var minutes="0";
	if(isDate.arguments.length>3)
		cbe=isDate.arguments[3];
	if(isDate.arguments.length>4)
		hours=isDate.arguments[4];
	if(isDate.arguments.length>5)
		minutes=isDate.arguments[5];

	if(day=="" && month=="" && year=="" && cbe)
		return true;
	if(isValid(day,false) && isValid(month,false) && isValid(year,false) && isValid(hours,false) && isValid(minutes,false))
	{
		var days4month=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

		if(parseInt(day) <= (parseInt(days4month[parseInt(month)-1]) + (((parseInt(month) == 2) && ((parseInt(year) % 4 == 0) && ((!(parseInt(year) % 100 == 0)) || (parseInt(year) % 400 == 0))))?1:0)) && (parseInt(hours)>=0 && parseInt(hours)<=24) && (parseInt(minutes)>=0 && parseInt(minutes)<=60))
			return true;
	}
	return false;
}

function getParams()
{
	var strurl=""+window.document.location;
	strurl=((strurl.indexOf("?")==-1)?"":strurl.substring(strurl.indexOf("?")+1,strurl.length));
	var splitstr=strurl.split("&");
	var a;
	var paramarray=new Array();
	for(var i in splitstr)
	{
		a=splitstr[i].split("=");
		paramarray[""+a[0]]=""+a[1];
	}
	return paramarray;
}

function PopUp(win)
{
	var w=600;
	var h=400;
	var scroll=1;
	var page="_blank";
	if(PopUp.arguments.length>1)
		w=PopUp.arguments[1];
	if(PopUp.arguments.length>2)
		h=PopUp.arguments[2];
	if(PopUp.arguments.length>3)
		page=PopUp.arguments[3];
	if(PopUp.arguments.length>4)
		scroll=PopUp.arguments[4];
	var l=(window.screen.width/2)-(w/2);
	var t=(window.screen.height/2)-(h/2);
	window.open(win,page,"width=" + w + ",height=" + h + ",left=" + l + ",top=" + t + ",scrollbars=" + scroll);
}

function OpenWin(win)
{
	window.open(win,"_blank");
}

function checkAll(el, mod)
{
	if(""+el.length!="undefined")
	{
		for(var i=0; i < el.length; i++)
			el[i].checked=mod.checked;
	}
	else
		el.checked=mod.checked;
}

function func(link)
{
	PopUp(link,835,500,'_blank',1);
}

function popup() { 
	theURL = "http://www.tinnova.it/portali_lista.asp";
	features=",width=330,height=350,scrollbars=yes";
	winName = "";
  window.open(theURL,winName,features);
}

function Switch()
{
	var el;
	for(var i=0; i < Switch.arguments.length; i++)
	{
		el=document.getElementById(Switch.arguments[i]);
		if(el!=null)
		{
			if (el.tagName == "IMG")
			{
				el.className=((el.className=="inline")?"hide":"inline");
			}
			 else el.className=((el.className=="")?"hide":"");
		}
		
		
	}
}

function Switch2()
{
	
	var el;
	for(var i=0; i < Switch2.arguments.length; i+=2)
	{
		el=document.getElementById(Switch2.arguments[i]);
		el.className=((Switch2.arguments[i+1]!='')?"hide":"");
	}
}

var tm;
function Open(id)
{
	var el=document.getElementById(id+'tab');
	el.className="";
	el=document.getElementById(id+'plus');
	el.className="hide";
	el=document.getElementById(id+'minus');
	el.className="";
	clearTimeout(tm);
}

function Close(id)
{
	var el=document.getElementById(id+'tab');
	el.className="hide";
	el=document.getElementById(id+'plus');
	el.className="";
	el=document.getElementById(id+'minus');
	el.className="hide";
}

function Closing(id)
{
	tm=setTimeout("Close('" + id + "')",100);
}

function OpenWin2(win)
{
	var w=792;
	var h=550;
	if(OpenWin2.arguments.length>1)
		w=OpenWin2.arguments[1];
	if(OpenWin2.arguments.length>2)
		h=OpenWin2.arguments[2];
	var l=(window.screen.availWidth - w - 10) / 2;
	var t=(window.screen.availHeight - h - 20) / 2;
	var opt="";
	if(OpenWin2.arguments.length>3)
		opt=""+OpenWin2.arguments[3];
	if(opt!="" && opt.charAt(0)!=",")
		opt="," + opt;
		
	window.open(win,"_blank","width=" + w + ",height=" + h + ",left=" + l + ",top=" + t + opt);
}

function conta(el)
{
    var testo = el.value;
    var messaggio = "";
    if (testo.length == 0)
    {
        messaggio += "Inserisci un testo da valutare!";
        el.value = "";
        el.focus();
    }
    else
    {
        var senza_spazi = testo.replace(/ /g,"");
        messaggio += "Con gli spazi: " + testo.length + "\n";
        messaggio += "Senza gli spazi: " + senza_spazi.length;
    }
    alert(messaggio);
}

function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}
