<!--
var currentAppletNumber = 0;
var formUpload;

/* PASSWORD FUNCTIONS!*/
function changePw(key,idvalue,classname,path)
{
	window.open("../include/common_allowed/changePw.php?idvalue="+idvalue+"&key="+key+"&classname="+escape(classname) + "&path=" + escape(path),"userPw","menubar=no,scrollbars=no,top=100,left=100,width=600,height=250");
}

//cont è il messaggio, x è la form da processare, itmsToIgnore sono gli elementi separati da virgola da ignorare
function testa(cont,x,itmsToIgnore){
formUpload = x;
for (k=0;k< x.elements.length;k++)//ciclo padre
	{
	for (g=0;g< x.elements.length;g++) //ciclo figlio!
		{
		if (x.elements[g].name.substring(2,x.elements[g].name.length)==(x.elements[k].name) && itmsToIgnore.indexOf(x.elements[k].name+',') == -1)
			{
			//seleziona il caso!
			switch (x.elements[g].name.substring(0,2)) {
				case "o_" : //campo obbligatorio!
					{
					if (stringmagzero(x.elements[k],x.elements[g].value)==false) 
						{
						if(document.applets["app_upload_" + x.elements[k].name] == null)
							{
							x.elements[k].focus(); 
							}
						return false; 
						}
					}
				break;
				case "P_"://campo password
					{
					x.elements[k].value = trim(x.elements[k].value);
					x.elements[x.elements[k].name + "_conf"].value = trim(x.elements[x.elements[k].name + "_conf"].value);
					if(x.elements[k].value == "")
						{
						alert("Il campo '" + x.elements[g].value + "' è obbligatorio!");
						x.elements[k].focus();
						return false;
						}
					if (x.elements[x.elements[k].name + "_conf"].value == "")
					{
						alert("Il campo 'Conferma " + x.elements[g].value + "' è obbligatorio!");
						x.elements[x.elements[k].name + "_conf"].focus();
						return false;
					}
					if (x.elements[k].value != x.elements[x.elements[k].name + "_conf"].value)
						{
						alert("Il valore inserito per il campo 'Conferma"  + x.elements[g].value + "' non corrisponde al valore inserito per il campo '" + x.elements[g].value+"'");
						x.elements[k].focus();
						return false;
						}
					}
				break;
				case "n_" : //campo euro o numerico con la virgola come sep decimale
					{
					if (isEuro(x.elements[k],x.elements[g].value)==false) {x.elements[k].select();x.elements[k].focus(); return false; }
					}
				break;
				case "i_":// campo intero
					{
					if (isInt(x.elements[k],x.elements[g].value)==false) {x.elements[k].select();x.elements[k].focus(); return false;}
					}
				break;
				case "D_":// campo decimal,float,double
					{
					if (isDouble(x.elements[k],x.elements[g].value)==false) {x.elements[k].select();x.elements[k].focus(); return false;}
					}
				break;
				case "e_" : //campo email
					{
					if (isEmail(x.elements[k],x.elements[g].value)==false) {x.elements[k].select();x.elements[k].focus(); return false; }
					}
				break;				
				case "d_" : //campo data in formato gg/mm/aaaa;
					{
					if (isDate(x.elements[k],x.elements[g].value)==false) {x.elements[k].select();x.elements[k].focus(); return false; }
					}
				break;
				case "S_" : //select Multipla per un campo esterno alla tabella;
					{
						for (l=0;l<x.elements[k].options.length;l++)
						{
							if (l>0)
							{
								break;
							}
						}
						if (l==0) 
							{
							alert(x.elements[g].value);return false;
							}
					}
				break;
				case "s_" : //select singola;
					{
					if (x.elements[k].selectedIndex == -1) {alert(x.elements[g].value);return false;}
					}
				break;
				case "r_" : //campo radio button;
					{
					check = false;
					for(k=0;k<x[x.elements[k].name].length;k++)
						{
						if (x[x.elements[k].name][k].checked){check = true}
						}
					if (!check){alert(x.elements[g].value); return false;}
					}
				break;
				case "T_" : //AdvancedTextarea obbligatoria;
				case "V_" : //AdvancedTextarea non obbligatoria;
					{
					//stringaeditor = FCKeditorAPI.GetInstance(x.elements[k].name).GetXHTML();   x.elements[k].value
					//s = FCKeditorAPI.GetInstance(x.elements[k].name);
					//alert("presa l'istanza");
					//alert(frames['itinerari_programma___Frame'].document.body.innerHTML);
					//return;
					stringaeditor = replace(replace(FCKeditorAPI.GetInstance(x.elements[k].name).GetXHTML(),'&nbsp;',''),' ','');
					if (x.elements[g].name.substring(0,2) == "T_")
						{
						if (stringaeditor.replace(/(<([^>]+)>)/ig,'')=='') 
							{
							alert(x.elements[g].value);
							return false;
							}
						}
					}
				break;
				/*
				case "V_": //Advanced TextArea non obbligatoria!
					{
						x.elements[k].value = frames.message.document.body.innerHTML;
					}
				break;
				*/
				}
			}
		}	
	}
if (cont.length==0)
	{
	return true;
	}
else
	{
	if (confirm(cont))
		{
		if(formUpload.elements['btn_Invia'] != null)
			{
				formUpload.elements['btn_Invia'].disabled = true;
				formUpload.elements['btn_Invia'].value = "Invio dati in corso\n...attendere...";
			}
		if(document.applets.length > 0)
			{
			StartJavaUpload();
			}
		else
			{
			formUpload.submit();
			//return true;
			}
		}
	else
		{
		return false;
		}
	}
}

function GetAppletsCount()
{
	return document.applets.length+"";
}

function GetAppletNumber(name)
{
	for(i=0;i<document.applets.length;i++)
	{
		if (document.applets[i].name == ("app_upload_" + name))
		{
			return i+"";
		}
	}
	alert("Errore durante la valutazione del numero Applet ('"+ name +"')!");
	return -1;
}

function StartJavaUpload()
{
	//controllo che i files scelti per i vari applet non siano lo stesso file!
	for(i=0;i<document.applets.length;i++)
	{	
		if (formUpload.elements[document.applets[i].name + "_tmpFile"].value != "")
		{
			for(g=0;g < document.applets.length;g++)
			{
				if (g != i && formUpload.elements[document.applets[g].name + "_tmpFile"].value != "")
				{
					//if (document.applets[i].filename.equalsIgnoreCase(document.applets[g].filename))
					if(formUpload.elements[document.applets[i].name + "_tmpFile"].value == formUpload.elements[document.applets[g].name + "_tmpFile"].value)
					{
						alert("Il file scelto per il campo '" + document.applets[i].fileAlias + "' è uguale a quello scelto per il campo '" + document.applets[g].fileAlias + "'")
						if(formUpload.elements['btn_Invia'] != null)
						{
							formUpload.elements['btn_Invia'].disabled = false;
							formUpload.elements['btn_Invia'].value = "Invia Dati";
						}
						return;
					}
				}				
			}
		}
	}
	JSInitApplet(0);
}

function JSInitApplet(AppletNumber)
{
	document.applets[AppletNumber].JsInitUpload();
}

function JavaOutputError(msg)
{
	alert(msg);
	if(formUpload.elements['btn_Invia'] != null)
	{
		formUpload.elements['btn_Invia'].disabled = false;
		formUpload.elements['btn_Invia'].value = "Invia Dati";
	}
}

function JavaDoSubmit()
{
	formUpload.submit();
}


function isEmail(ele,messaggio) {
x = ele.value;
if (x.length <= 0)
{
	return true;
}
	//var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9\-]{0,})+(\.{0,})+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) 
	{
		return true;
	}
	else {
		alert(messaggio);	
		return false;
		}
}
function isInt(ele,messaggio)
{
	Chars = "0123456789";	
	ele.value = trim(ele.value);
	for (i = 0; i < ele.value.length; i++) 
	{ 
	    if (Chars.indexOf(ele.value.charAt(i)) == -1) 
	    { 
	    alert(messaggio);
	    return false; 
	    } 
	}
	return true;
}

function isDouble(ele,messaggio)
{
	Chars = "0123456789,";	
	for (i = 0; i < ele.value.length; i++) 
	{ 
	    if (Chars.indexOf(ele.value.charAt(i)) == -1) 
	    { 
		alert("Usare il carattere ',' come separatore decimale per il campo '"+messaggio.replace(/(\(\d*,\d*\))/,"")+"'");	
	    return false; 
	    } 
	}
	reg = messaggio.replace(/[^0-9,]/g,"");
	messaggio = messaggio.replace(/(\()\d*(,){0,1}(\d*)(\))/,"");
	interiLen = reg.replace(/,\d*/,"");
	decimaliLen = reg.replace(/\d*,/,"");
	if (ele.value.indexOf(",") == -1)
		{
		if(ele.value.length > parseInt(interiLen))
			{
			alert("Il campo '"+messaggio+"' può contenere al massimo "+interiLen+" cifre intere\n\ne al massimo "+decimaliLen+" cifre decimali!");
			return false;
			}
		}
	else
		{
		ValInt = ele.value.replace(/,\d*/,"");
		ValDec = ele.value.replace(/\d*,/,"");
		check = true;
		if ((ValInt.length > parseInt(interiLen)) || (ValDec.length > parseInt(decimaliLen)))
			{
			check = false;
			}		
		if (check == false)
			{			
			alert("Il campo '"+messaggio+"' può contenere al massimo "+interiLen+" cifre intere\n\ne al massimo "+decimaliLen+" cifre decimali!");
			return false;
			}
		}
	return true;
}

function isEuro(ele,messaggio) 
{ 
   Chars = "0123456789,€"; 
   for (i = 0; i < ele.value.length; i++) 
   { 
       if (Chars.indexOf(ele.value.charAt(i)) == -1) 
       { 
		alert(messaggio);
        return false; 
       } 
   }
   return true;
} 
function stringmagzero(ele,messaggio){
stringa = ele.value;
stringa = trim(ele.value);
if (stringa.length <=0)
	{
	alert(messaggio);
	return false;
	}
return true;
}

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   if(inputString == ""){ return ""; }
   retValue = inputString;
   ch = retValue.substring(0, 1);
   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function


var dtCh= "/";
var minYear=1600;
var maxYear=2100;

function isInteger(s){
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        //c = s.charAt(i);
        if (((s.charAt(i) < "0") || (s.charAt(i) > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
    returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
	{   
        //c = s.charAt(i);
        if (bag.indexOf(s.charAt(i)) == -1) returnString += s.charAt(i);
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(ele,messaggio){
	if (ele.value.length<=0){return true;}
	dtStr = ele.value;
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert(messaggio)
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Inserire un mese valido!")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Inserire un giorno valido!")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Inserire un anno compreso tra "+minYear+" e "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert(messaggio)
		return false
	}
return true;
}

function replace(string,text,by) {
	if (string == null)
	{
		return string;
	}
	// Replaces text with by in string
	return string.replace(/text/gi, by);
	
	while(string.indexOf(text)!=-1)
	{
		string = string.replace(text, by)
	}
	return string;
}

function textCounter(field,cntfield,maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
	field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
	cntfield.value = maxlimit - field.value.length;
}

function isNumeric(val)
{
	if (val == null)
		return false;
	if (val.length <= 0)
		return false;
	Chars = "0123456789,";	
	for (i = 0; i < val.length; i++) 
	{ 
	    if (Chars.indexOf(val.charAt(i)) == -1) 
	    { 
	    return false; 
	    } 
	}
	return true; 
}

function DateDiff( start, end, interval, rounding ) {

    iOut = 0;
    
	//metto la data da italiano a inglese
	start = start.split("/");
	start = start[1]+"/"+start[0]+"/"+start[2];
	
	if (end=="")
	{
		now = new Date();
		end = now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getYear();
	}
	end = end.split("/");
	end = end[1]+"/"+end[0]+"/"+end[2];
	
     bufferA = Date.parse( start ) ;
     bufferB = Date.parse( end ) ;
    // check that the start parameter is a valid Date. 
    if ( isNaN (bufferA) || isNaN (bufferB) ) {
        alert('Errore DateDiff 1!!!');
        return null;
    }
	
    // check that an interval parameter was not numeric. 
    if ( interval.charAt == 'undefined' ) {
        // the user specified an incorrect interval, handle the error. 
        alert('Intervallo di tempo non specificato') ;
        return null ;
    }
    
    number = bufferB-bufferA ;
    
    // what kind of add to do? 
    switch (interval.charAt(0))
    {
		case 'y':case 'Y':
			iOut = parseInt(number / 31536000000) ;
            if(rounding) iOut += parseInt((number % 31536000000)/15768000365) ;
			break;
        case 'd': case 'D': 
            iOut = parseInt(number / 86400000) ;
            if(rounding) iOut += parseInt((number % 86400000)/43200001) ;
            break ;
        case 'h': case 'H':
            iOut = parseInt(number / 3600000 ) ;
            if(rounding) iOut += parseInt((number % 3600000)/1800001) ;
            break ;
        case 'm': case 'M':
            iOut = parseInt(number / 60000 ) ;
            if(rounding) iOut += parseInt((number % 60000)/30001) ;
            break ;
        case 's': case 'S':
            iOut = parseInt(number / 1000 ) ;
            if(rounding) iOut += parseInt((number % 1000)/501) ;
            break ;
        default:
        // If we get to here then the interval parameter
        // didn't meet the d,h,m,s criteria.  Handle
        // the error. 		
        alert('Errore DateDiff 2!!!') ;
        return null ;
    }
    return iOut ;
}

function testCheckbox(nomeCheck,mess)
{
	if (nomeCheck.length == null)
	{
		if (!nomeCheck.checked)
		{
			if (mess != "")
			{
				alert(mess);
			}
			return false;
		}
	}
	else
	{
		check = false;
		for(i=0;i<nomeCheck.length;i++)
		{
			if (nomeCheck[i].checked)
			{
				check = true;
			}
		}
		if (!check)
		{
			if (mess != "")
			{
				alert(mess);
			}
			return false;
		}
	}
	return true;
}

function testSelect(sel,mess)
{
	if (sel.selectedIndex == -1)
	{
		if (mess != "")
		{
			alert(mess);
		}
		return false;
	}
	return true;
}

function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}


//---------------------------------------------------------------------------------------  funzioni per quando c'è due select 

function FromSelectToAnother(s, dest)
{ 
	i=0;
	hdText = s.form.elements[s.name.substring(0,s.name.lastIndexOf('_'))];
	sel = s.form.elements[s.name.substring(0,s.name.lastIndexOf('_')) + "_in"];
	hdText.value = "";
	for(o=0;o<s.options.length;o++)
	{
		if (s.options[o].selected)
		{
			i++;
		}
	}
	for(g=0;g<i;g++)
	{
		o=0;
		while (opt = s.options[o]) 
		{
			if (opt.selected)//&& !inDest(dest, opt.text, opt.value)
			{
				dest.options[dest.length] = new Option(opt.text,opt.value); 
				s.remove(o);
			}
			o++;
		}
	}
	for(o=0;o<sel.options.length;o++)
	{
		hdText.value = hdText.value + sel.options[o].value + ",";
	}
	hdText.value = hdText.value.substring(0,hdText.value.length-1);
	return false;
} 

function inDest(dest, text, value) 
{ 
	opt, o = 0; 
	while (opt = dest[o++]) if (opt.value == value && opt.text == text) return true; 
	return false;
} 
//------------------------------------------------------------------------------- funzioni per spostare gli options in una select
function moveSelected (select, down) { 

if (select.selectedIndex != -1) 
{ 

	if (down) 
	{ 
	
	if (select.selectedIndex != select.options.length - 1) 
	
	
		x = select.selectedIndex + 1; 
	
	else 
	
		return false; 
	
	} 

	else 
	{ 
	
	if (select.selectedIndex != 0) 
	
		x = select.selectedIndex - 1; 
	
	else 
	
		return false; 
	
	} 

	swapOption = new Object(); 
	
	swapOption.text = select.options[select.selectedIndex].text; 
	
	swapOption.value = select.options[select.selectedIndex].value; 
	
	swapOption.selected = select.options[select.selectedIndex].selected; 
	
	//swapOption.defaultSelected = select.options[select.selectedIndex].defaultSelected; 



	for (property in swapOption) 
	{
		//alert(property);
		select.options[select.selectedIndex][property] = select.options[x][property]; 
	}
	for (property in swapOption) 
		select.options[x][property] = swapOption[property]; 
	//setto il campo hidden che ha il vero nome del campo nell'archivio
	hidd = select.name.substring(4,select.name.length-2);
	select.form.elements[hidd].value = "";
	
	for (i=0;i<select.options.length;i++)
	{
		select.form.elements[hidd].value += select.options[i].value + ",";
	}
	select.form.elements[hidd].value = select.form.elements[hidd].value.substring(0,select.form.elements[hidd].value.length-1);
} 
return false;
} 



function setHidden(f,d) { 

destVals = new Array(), opt = 0, separator = ',';//, d = f.select; 

while (d[opt]) destVals[opt] = d[opt++].value; 

f.destItems.value = destVals.join(separator)+separator; 

if (confirm("Reimpostare l'ordine?"))

	{return true;}

else

	{return false;}

} 

//funzione per selezionare tutti i checkboxes nella displaylistadmin
function selCheckbox(ctr,nome)
{
	if (isArray(ctr.form.elements[nome + '[]']))
	{
		for(i=0;i<ctr.form.elements[nome + '[]'].length;i++)
		{
			ctr.form.elements[nome + '[]'][i].checked = ctr.checked;
		}
	}
	else
	{
		ctr.form.elements[nome + '[]'].checked = ctr.checked;
	}
	
}
//----------------------------------------------------------------- funzioni per accendere spengere gli input

function lighton(ctr){
ctr.style.backgroundColor='yellow';
}
function lightoff(ctr){
ctr.style.backgroundColor='white';
}
//----------------------------------------------------------------- FINE funzioni per accendere spengere gli input

//-->

