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")
					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";
	var p = 1;
	var n = 1;
	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];
	if(PopUp.arguments.length>5)
		p=PopUp.arguments[5];
	if(PopUp.arguments.length>6)
		n=PopUp.arguments[6];

	var l=(window.screen.width/2)-(w/2);
	var t=(window.screen.height/2)-(h/2);

	if (n > 1)
	{
		var di = (window.screen.width/n);
		l = (di * p) - (di/2) - (w/2);
	}

	window.open(win,page,"width=" + w + ",height=" + h + ",left=" + l + ",top=" + t + ",scrollbars=" + scroll);
}

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(id,idcat,altro)
{
	PopUp('/concilia/informazioni/func.asp?ID=' + id + '&IDCat=' + idcat + ((""+altro!="undefined" && ""+altro!="null" && ""+altro!="")?"&" + altro:""),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]);
		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 Submit()
{
	for(var i=0; i < Submit.arguments.length; i+=2)
		document.frm[Submit.arguments[i]].value=Submit.arguments[i+1];
	document.frm.submit();
}

function SwitchEl(name)
{
	var m=name.substring(name.indexOf("_"), name.length);
	try
	{
		var hide=(document.frm[name][document.frm[name].selectedIndex].value!="");
		/*if(hide && (""+document.frm["Nome"+m].value=="" || ""+document.frm["Nome"+m].value=="NULL"))
			document.frm["Nome"+m].value="NULL";
		else if(""+document.frm["Nome"+m].value=="NULL")
			document.frm["Nome"+m].value="";*/
		for(var i=0; i < document.frm.length; i++)
		{
			el=document.frm[i];
			if(el.name!=name && el.name.indexOf(m)!=-1)
			{
				if(""+el.tagName=="SELECT")
				{
					if(hide && (""+el[el.selectedIndex].value=="" || ""+el[el.selectedIndex].value=="NULL"))
						el[el.selectedIndex].value="NULL";
					else if(""+el[el.selectedIndex].value=="NULL")
						el[el.selectedIndex].value="";
				}
				else
				{
					if(hide && (""+el.value=="" || ""+el.value=="NULL"))
						el.value="NULL";
					else if(""+el.value=="NULL")
						el.value="";
				}

				tr=document.getElementById("tr"+el.name);
				if(tr!=null)
					tr.className=((hide)?"hide":"");
			}
		}
	}
	catch(e){}
}

function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function FillZero()
{
	var str="";
	var pos=2;
	var inp="";
	if(""+FillZero.arguments[0]!="undefined")
		str=FillZero.arguments[0];
	if(""+FillZero.arguments[1]!="undefined")
		pos=FillZero.arguments[1];
	while((""+str).length<pos)
		str="0"+str;

	return str;
}

function addDatePrint(name, days)
{
	var data=new Date();

	if(""+name!="")
	{
		if (""+document.frm[name+"_cal"].value == "1")
		{
			var val = parseInt(document.frm[name+"a"].value,10);
			if (!isNaN(val))
				data.setYear(val);
			val = parseInt(document.frm[name+"m"].value,10);
			if (!isNaN(val))
				data.setMonth(val - 1);
			val = parseInt(document.frm[name+"g"].value,10);
			if (!isNaN(val))
				data.setDate(val);
			val = parseInt(document.frm[name+"n"].value,10);
			if (!isNaN(val))
				data.setMinutes(val);
			val = parseInt(document.frm[name+"h"].value,10);
			if (!isNaN(val))
				data.setHours(val);
		}
		else
		{
			data.setHours(0);
			data.setMinutes(0);
			data.setDate(data.getDate()+parseInt(days,10));
		}

		data.setSeconds(0);
	}
	else
	{
		data.setHours(0);
		data.setMinutes(0);
		data.setSeconds(0);

		data.setDate(data.getDate()+parseInt(days,10));
	}

	return ""+FillZero(data.getDate()) + "/" + FillZero(data.getMonth()+1) + "/" + data.getFullYear() + " " + FillZero(data.getHours()) + ":" + FillZero(data.getMinutes()) + ":" + FillZero(data.getSeconds());
}


function setFilter(iframe,el,val)
{
	window.parent.frames[iframe].document.resetForm();
	window.parent.frames[iframe].document.frm[el].value=val;
	window.parent.frames[iframe].document.frm.p.value=1;
	window.parent.frames[iframe].document.frm.submit();
}

function setPage(iframe,val)
{
	window.parent.frames[iframe].window.document.location=val;
}

function changeHeight(iframe)
{
	try
	{
		var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
		if (innerDoc.body.offsetHeight) //ns6 syntax
		{
			iframe.height = innerDoc.body.offsetHeight + 32; //Extra height FireFox
		}
		else if (iframe.Document && iframe.Document.body.scrollHeight) //ie5+ syntax
		{
			iframe.height = iframe.Document.body.scrollHeight;
		}
	}
	catch(err)
	{
		alert(err.message);
	}
}

function LinkTo(url)
{
	window.opener.location=url;
	//window.close();
}


function CloseWindow()
{
	window.open('','_self','');
	window.close();
}

function tab_to_tab(ev, elm)
{
	var e = (ev || window.event);
	var el = (elm || this);
	//A function to capture a tab keypress in a textarea and insert 4 spaces and NOT change focus.
	//9 is the tab key, except maybe it's 25 in Safari? oh well for them ...
	if (e.keyCode == 9)
	{
		var oldscroll = el.scrollTop; //So the scroll won't move after a tabbing
		e.returnValue = false;  //This doesn't seem to help anything, maybe it helps for IE

		// Check if we're in a firefox deal
		if (el.setSelectionRange)
		{
			var pos_to_leave_caret=el.selectionStart+4;
			el.value = el.value.substring(0, el.selectionStart) + '\t' + el.value.substring(el.selectionEnd, el.value.length);
		}
		else	//Handle IE
		{
			document.selection.createRange().text='\t';
		}
		el.scrollTop = oldscroll; //put back the scroll
		
		return false;
	}

	return true;
}

function enter_to_tab(ev, elm)
{
	var e = (ev || window.event);
	var el = (elm || this);
	if (e.keyCode == 13 && el.form != null)
	{
		var i;
		for (i = 0; i < el.form.elements.length; i++)
			if(el == el.form.elements[i])
				break;
		if (i < el.form.elements.length - 1)
			el.form.elements[i + 1].focus();
		else
			el.form.elements[0].focus();
		
		return false;
	}

	return true;
}