<!--
//cont è il messaggio, x è la form da processare
function testa(cont,x){
var i,g;
for (i=0;i< x.elements.length;i++)//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[i].name))
			{
			//seleziona il caso!
			switch (x.elements[g].name.substring(0,2)) {
				case "o_" : //campo obbligatorio!
					{
					if (stringmagzero(x.elements[i],x.elements[g].value)==false) {x.elements[i].focus(); return false; }
					}
				break;
				case "n_" : //campo euro o numerico con la virgola come sep decimale
					{
					if (isEuro(x.elements[i],x.elements[g].value)==false) {x.elements[i].select();x.elements[i].focus(); return false; }
					}
				break;
				case "i_":// campo intero
					{
					if (isInt(x.elements[i],x.elements[g].value)==false) {x.elements[i].select();x.elements[i].focus(); return false;}
					}
				break;
				case "D_":// campo decimal,float,double
					{
					if (isDouble(x.elements[i],x.elements[g].value)==false) {x.elements[i].select();x.elements[i].focus(); return false;}
					}
				break;
				case "e_" : //campo email
					{
					if (isEmail(x.elements[i],x.elements[g].value)==false) {x.elements[i].select();x.elements[i].focus(); return false; }
					}
				break;				
				case "d_" : //campo data in formato gg/mm/aaaa;
					{
					if (isDate(x.elements[i],x.elements[g].value)==false) {x.elements[i].select();x.elements[i].focus(); return false; }
					}
				break;
				case "S_" : //select Multipla per un campo esterno alla tabella;
					{
						for (l=0;l<x.elements[i].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[i].selectedIndex == -1) {alert(x.elements[g].value);return false;}
					}
				break;
				case "r_" : //campo radio button;
					{
					var check = false;
					for(k=0;k<x[x.elements[i].name].length;k++)
						{
						if (x[x.elements[i].name][k].checked){check = true}
						}
					if (!check){alert(x.elements[g].value); return false;}
					}
				break;
				case "T_" : //AdvancedTextarea obbligatoria;
				case "V_" : //AdvancedTextarea non obbligatoria;
					{
					//alert(x.elements[i].name.substring(0,x.elements[i].name.length -4)+"texteditor");
					//var editore = eval(x.elements[i].name.substring(0,x.elements[i].name.length -4)+"texteditor");
					var editore = eval(x.elements[i].name+"editor");
					var stringaeditor = editore.getHTML();
					if (x.elements[g].name.substring(0,2) == "T_")
						{
						var re = /<\S[^>]*>/g;
						if (!stringaeditor.replace(re,'')) 
							{
							alert(x.elements[g].value);
							return false;
							}
						}
					x.elements[i].value = stringaeditor;
					}
				break;
				/*
				case "V_": //Advanced TextArea non obbligatoria!
					{
						x.elements[i].value = frames.message.document.body.innerHTML;
					}
				break;
				*/
				}
			}
		}	
	}
if (cont.length==0)
	{
	return true;
	}
else
	{
	if (confirm(cont))
		return true;
	else
		return false;
	}
}

function isEmail(ele,messaggio) {
var 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})+$/;
	if (filter.test(x)) return true;
	else {
		alert(messaggio);	
		return false;
		}
}
function isInt(ele,messaggio)
{
	var Chars = "0123456789";	
	for (var 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)
{
	var Chars = "0123456789,";	
	for (var 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; 
	    } 
	}
	var reg = messaggio.replace(/[^0-9,]/g,"");
	messaggio = messaggio.replace(/(\()\d*(,){0,1}(\d*)(\))/,"");
	var interiLen = reg.replace(/,\d*/,"");
	var 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
		{
		var ValInt = ele.value.replace(/,\d*/,"");
		var 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) 
{ 
   var Chars = "0123456789,€"; 
   for (var 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){
ele.value = trim(ele.value);
if (ele.value.length <=0)
	{
	alert(messaggio);
	return false;
	}
}

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var 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){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var 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++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    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 (var 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 (var 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) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

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;
	var Chars = "0123456789";	
	for (var i = 0; i < val.length; i++) 
	{ 
	    if (Chars.indexOf(val.charAt(i)) == -1) 
	    { 
	    return false; 
	    } 
	}
	return true; 
}

function DateDiff( start, end, interval, rounding ) {

    var 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];
	
    // Create 2 error messages, 1 for each argument. 
    var startMsg = "Check the Start Date and End Date\n"
        startMsg += "must be a valid date format.\n\n"
        startMsg += "Please try again." ;
		
    var intervalMsg = "Sorry the dateAdd function only accepts\n"
        intervalMsg += "d, h, m OR s intervals.\n\n"
        intervalMsg += "Please try again." ;

    var bufferA = Date.parse( start ) ;
    var bufferB = Date.parse( end ) ;
    	
    // check that the start parameter is a valid Date. 
    if ( isNaN (bufferA) || isNaN (bufferB) ) {
        alert( startMsg ) ;
        return null ;
    }
	
    // check that an interval parameter was not numeric. 
    if ( interval.charAt == 'undefined' ) {
        // the user specified an incorrect interval, handle the error. 
        alert( intervalMsg ) ;
        return null ;
    }
    
    var 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(intervalMsg) ;
        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) { 

	var opt; 
	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[o++]) 
	
		{
		if (opt.selected && !inDest(dest, opt.text, opt.value)) 
	
			{
	
			dest.options[dest.length] = new Option(opt.text,opt.value); 
	
			s.remove(o-1);
	
			}
	
		}
	}
	
	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);
	
	/*
	if (navigator.appName == 'Netscape' && 
	
	(navigator.appVersion.indexOf('Win') != -1 || 
	
	navigator.appVersion.indexOf('Mac') != -1)) 
	
	history.go(0); 
	*/
	
	return false;
} 



function inDest(dest, text, value) { 

var 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) { 

//alert(select.name);
if (select.selectedIndex != -1) 
{ 

	if (down) 
	{ 
	
	if (select.selectedIndex != select.options.length - 1) 
	
	
		var x = select.selectedIndex + 1; 
	
	else 
	
		return false; 
	
	} 

	else 
	{ 
	
	if (select.selectedIndex != 0) 
	
		var x = select.selectedIndex - 1; 
	
	else 
	
		return false; 
	
	} 

	var 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 (var property in swapOption) 
	{
		//alert(property);
		select.options[select.selectedIndex][property] = select.options[x][property]; 
	}
	for (var property in swapOption) 
		select.options[x][property] = swapOption[property]; 
	
} 
return false;
} 



function setHidden(f,d) { 

var 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 gli input

function lighton(ctr){
ctr.style.backgroundColor='yellow';
}
function lightoff(ctr){
ctr.style.backgroundColor='white';
}
//-->


