// CONTROLLI VARI DEI FORM

// ARRAY LISTA MESI
var arr_mesi = new Array();
arr_mesi[0] = "Gennaio";
arr_mesi[1] = "Febbraio";
arr_mesi[2] = "Marzo";
arr_mesi[3] = "Aprile";
arr_mesi[4] = "Maggio";
arr_mesi[5] = "Giugno";
arr_mesi[6] = "Luglio";
arr_mesi[7] = "Agosto";
arr_mesi[8] = "Settembre";
arr_mesi[9] = "Ottobre";
arr_mesi[10] = "Novembre";
arr_mesi[11] = "Dicembre"; 

// ARRAY LISTA GIORNI
var arr_giorni = new Array();
arr_giorni[0] = "Domenica";
arr_giorni[1] = "Lunedì";
arr_giorni[2] = "Martedì";
arr_giorni[3] = "Mercoledì";
arr_giorni[4] = "Giovedì";
arr_giorni[5] = "Venerdì";
arr_giorni[6] = "Sabato";

//CONTROLLO SE E' UN NUMERO
function NumeroValido(val) 
{ 
	if (parseInt(navigator.appVersion)>=4)	return !isNaN(parseInt(val));
	return true;
}

//CONTROLLO CAMPO NUMERICO
function controllaNum(obj,min,max,str,dec,obblig) 
{
	len=obj.value.length;

	if (len==0&&!obblig)	return true;
	
	if (len<=0)	
	{	
		alert("Devi inserire un valore nel campo '"+str+"'.");
		obj.focus();    	return false;  	
	}
	
	// NO DECIMALI
	if (!dec && (obj.value.indexOf(",")!=-1 || obj.value.indexOf(".")!=-1))	
	{	
		alert("Utilizzare solo numeri interi nel campo '"+str+"'.");
		obj.focus();    	
		return false;  	
	}

	// CONTROLLA PUNTO DECIMALE
	if (dec && obj.value.indexOf(",")!=-1)	
	{	
		alert("Utilizzare il punto (.) per separare i decimali nel campo '"+str+"'.");
		obj.focus();    	
		return false;  	
	}

	if (!NumeroValido(obj.value)) 
	{	
		alert("Inserire solo valori numerici nel campo '"+str+"'.");
		obj.focus();    	
		return false;  	
	}

	if (obj.value<min)	
	{	
		alert("Il valore minimo per il campo '"+str+"' e' "+min+".");
		obj.focus();    	
		return false;  	
	}

	if (obj.value>max)	
	{	
		alert("Il valore massimo per il campo '"+str+"' e' "+max+".");
		obj.focus();    	
		return false;  	
	}

	return true;
}

// CONTROLLA LUNGHEZZA DI UNA STRINGA
function controllaLen(obj,max,str)
{
	len=obj.value.length;
	if (len>max)
	{
		alert("Il campo '"+str+"' e' troppo lungo.\nCi sono "+(len-max)+" caratteri in eccesso.");
		obj.focus();    	
		return false;
	}
	return true;
}


// CONTROLLA LUNGHEZZA MINIMA DI UNA STRINGA
function controllaLenMin(obj,min,str)
{
	if (obj.value.length<min)
	{
		alert("Occorre completare il campo '"+str+"'\n(minimo "+min+" caratteri).");
		obj.focus();    	
		return false;
	}
	return true;
}

// CONTROLLO INDIRIZZO WEB
function controllaUrl (obj,nome,obblig) 
{	
	val=obj.value;
	
	if (obblig&&val.length<4) 
	{		
		alert("L'indirizzo web "+nome+" e' troppo corto.");
		obj.focus();    	
		return false;		
	}

	if (!obblig&&val=="")	return true;
		
	if (val.length<4) 
	{
		alert("L'indirizzo web "+nome+" e' troppo corto.");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf('.')==-1) 
	{
		alert("L'indirizzo web "+nome+" non e' valido.");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf(':')!=-1&&val.indexOf(':')<8) 
	{
		alert("L'indirizzo web "+nome+" non e' valido.\nNon utilizzare il prefisso http://");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf(' ')!=-1) 
	{
		alert("L'indirizzo web "+nome+" non e' valido.\nNon utilizzare spazi.");
		obj.focus();    	
		return false;  	
	}

	return true;	
}

// CONTROLLO EMAIL
function controllaMail (obj,nome,obblig) 
{	
	val=obj.value;
	
	if (obblig&&val.length<6) 
	{		
		alert("L'email "+nome+" e' troppo corta\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;		
	}

	if (!obblig&&val=="")	return true;
	
	if (val.length<6) 
	{
		alert("L'email "+nome+" e' troppo corta.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf('.')==-1) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf('@')==-1) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf('@')!=val.lastIndexOf('@')) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf(':')!=-1) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf('"')!=-1) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf("'")!=-1) 
	{
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}
	
	if (val.indexOf(' ')!=-1) 
	{
		alert("L'email "+nome+" non e' valida.\nNon utilizzare spazi.\n(es: nome@nomedominio.com)");
		obj.focus();    	
		return false;  	
	}

	return true;	
}




// CONTROLLO/AIUTO IMMISSIONE DATA
function easydata(evento,nomeform,campo1,campo2,tipocampo)
{
	if(evento.keyCode!=9&&evento.keyCode!=16&&evento.keyCode!=37&&evento.keyCode!=38&&evento.keyCode!=39&&evento.keyCode!=40)
	{
		controllo1=eval("document."+nomeform+"."+campo1);
		if (campo2!="") controllo2=eval("document."+nomeform+"."+campo2);
		else controllo2="";
		if(evento.keyCode==188||evento.keyCode==190) controllo1.value=""; //disabilito punti e virgole
		if(isNaN(controllo1.value)) controllo1.value="";
		if(tipocampo=="giorno")
		{
			if(controllo1.value>31) 
			{
				controllo1.value="";
			}
			else if(controllo1.value>3&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
			else if(controllo1.value.length==2&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
		}
		else if(tipocampo=="mese")
		{
			if(controllo1.value>12) 
			{
				controllo1.value="";
			}
			else if(controllo1.value>1&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
			else if(controllo1.value.length==2&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
		}
		else if(tipocampo=="anno")
		{
			if(controllo1.value>3000) 
			{
				controllo1.value="";
			}
			else if(controllo1.value<1970&&controllo1.value.length==4) 
			{
				controllo1.value="";
			}
			else if(controllo1.value.length==4&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
		}
	}
}

// CONTROLLO/AIUTO IMMISSIONE ORA MINUTI
function easyorario(evento,nomeform,campo1,campo2,tipocampo)
{
	if(evento.keyCode!=9&&evento.keyCode!=16&&evento.keyCode!=37&&evento.keyCode!=38&&evento.keyCode!=39&&evento.keyCode!=40)
	{
		controllo1=eval("document."+nomeform+"."+campo1); 
		if (campo2!="") controllo2=eval("document."+nomeform+"."+campo2);
		else controllo2="";
		if(evento.keyCode==188||evento.keyCode==190) controllo1.value=""; //disabilito punti e virgole
		if(isNaN(controllo1.value)) controllo1.value="";
		if(tipocampo=="ora")
		{
			if(controllo1.value>23) 
			{
				controllo1.value="";
			}
			else if(controllo1.value>2&&controllo2!="") 
			{
				controllo2.focus();
				controllo2.select();
			}
			else if(controllo1.value.length==2&&controllo2!="")
			{
				controllo2.focus();
				controllo2.select();
			}
		}
		else if(tipocampo=="min")
		{
			if(controllo1.value>59) 
			{
				controllo1.value="";
			}
			else if(controllo1.value>6&&controllo2!="")
			{
				controllo2.focus();
				controllo2.select();
			}
			else if(controllo1.value.length==2&&controllo2!="")
			{
				controllo2.focus();
				controllo2.select();
			}
		}
	}
}

//VERIFICA MASSIMO GIORNI MESE/ANNO
function maxgiornidata(mm,aaaa)
{
	maxgiorni=0;
	mm=mm+"";
	aaaa=aaaa+"";
	if(!isNaN(parseInt(mm))&&!isNaN(parseInt(aaaa)))
	{
		if(mm.indexOf(",")==-1&&mm.indexOf(".")==-1&&aaaa.indexOf(",")==-1&&aaaa.indexOf(".")==-1) 
		{
			if(aaaa>=1970&&aaaa<=3000&&mm>=1&&mm<13)
			{
				bisestile="N";
				if(aaaa % 4==0 && aaaa % 100==0)
				{
					if(aaaa % 400==0)	bisestile="S";
				}
				else if(aaaa % 4==0)
				{
					bisestile="S";
				}
				if(mm==4||mm==6||mm==9||mm==11) maxgiorni=30;
				else if(mm==2&&bisestile=="S") maxgiorni=29;
				else if(mm==2) maxgiorni=28;
				else maxgiorni=31;
			}
		}
	}
	return maxgiorni;
}

//VERIFICA ESATTEZZA DATA
function verificadata(gg,mm,aaaa)
{
	errata=false;
	if(isNaN(parseInt(gg))||isNaN(parseInt(mm))||isNaN(parseInt(aaaa)))
	{
		errata=true;
	}
	else
	{
		if(gg.indexOf(",")!=-1||gg.indexOf(".")!=-1||mm.indexOf(",")!=-1||mm.indexOf(".")!=-1||aaaa.indexOf(",")!=-1||aaaa.indexOf(".")!=-1)
		{
			errata=true;
		}
		else
		{
			if(aaaa<1970||aaaa>3000||mm<1||mm>12)
			{
				errata=true;
			}
			else
			{
				maxgiorni=maxgiornidata(mm,aaaa);
				if(gg>maxgiorni) errata=true;
			}
		}
	}
	return errata;
}

// FUNZIONE PER CREARE IL CALENDARIO VIRTUALE
// Requisiti: funzione maxgiornidata e verificadata, FACOLTATIVE: pos_calendario, gira_calendario, up_calendario
// Paramentri: nome del form, nome campo giono,mese,anno, nome div dove apparirà
//			   valori numerici giorno/mese/anno passato da form e gg/mm/aaaa preselezionati, che si passa da pagina in pagina
// HTML: <div id="calendario" style="display: none; background-color: #FFFFFF; position:absolute; 
//		margin-top: 5px; width: 210px; height: 160px; border: 1px solid #000000;"></div>
// inoltre: se sotto il calendario c'è una select occorre mettere un ulteriore div con un'iframe PRIMA del div del calendario
// 		    questo div deve chiamarsi guscio_<NOME_CALENDARIO> (con le stesse dimensioni del div del calendario) es:
//	       <div id="guscio_calendario" style="display: none; position:absolute; width: 210px; height: 160px; z-index:100;">
//	       <iframe frameborder="0" src="" style="position:absolute; width:100%; height:100%; z-index:-1;"></iframe> (chiudere il div alla fine)
function crea_calendario(nomeform,nomegiorno,nomemese,nomeanno,nomediv,gg,mm,aaaa,gg_sel,mm_sel,aaaa_sel)
{
	if(top.cale_timerID)
	{
		if(top.cale_timerID!=0) clearTimeout(top.cale_timerID);
	}
	oggi=new Date();
	gg_oggi=oggi.getDate();
	mm_oggi=oggi.getMonth()+1;
	aaaa_oggi=oggi.getFullYear();
	errata=verificadata(gg,mm,aaaa);
	if(errata==true)
	{
		gg=gg_oggi;
		mm=mm_oggi;
		aaaa=aaaa_oggi;
	}
	errata_sel=verificadata(gg_sel,mm_sel,aaaa_sel);
	if(!errata_sel)
	{
		data_sel=new Date(aaaa_sel,mm_sel,gg_sel);
		gg_sel_num=data_sel.getDay();
	}
	var nextdate=new Date(aaaa,mm,1);
	gg_next=1;
	mm_next=nextdate.getMonth()+1;
	if(mm_next>12)
	{
		mm_next=1;
		aaaa_next=nextdate.getFullYear()+1;
	}
	else
	{
		aaaa_next=nextdate.getFullYear();
	}
	var prevdate=new Date(aaaa,mm-1,1);
	gg_prev=1;
	mm_prev=prevdate.getMonth();
	if(mm_prev<1)
	{
		mm_prev=12;
		aaaa_prev=prevdate.getFullYear()-1;
	}
	else
	{
		aaaa_prev=prevdate.getFullYear();
	}
	document.getElementById(nomediv).style.display="block";
	if(document.getElementById("guscio_"+nomediv)) document.getElementById("guscio_"+nomediv).style.display="block";
	contenuto="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"100%\">"
	contenuto=contenuto+"<tr>"
	contenuto=contenuto+"<td bgcolor=\"#ECE9D8\" height=\"1%\" align=\"center\"><font face=\"Arial\" style=\"font-size: 13px; color: Black;\">"
	contenuto=contenuto+"<a href=\"javascript:crea_calendario('"+nomeform+"','"+nomegiorno+"','"+nomemese+"','"+nomeanno+"','"+nomediv+"','"+gg_prev+"','"+mm_prev+"','"+aaaa_prev+"','"+gg_sel+"','"+mm_sel+"','"+aaaa_sel+"');\" title=\"Clicca per andare al mese precedente\" style=\"color: Black; text-decoration: none; background-color: transparent;\" onmouseover=\"style.color='#FF0000'\" onmouseout=\"style.color='Black'\"><<</a> "
	contenuto=contenuto+"<b>"+arr_mesi[mm-1]+" "+aaaa+"</b>"
	contenuto=contenuto+" <a href=\"javascript:crea_calendario('"+nomeform+"','"+nomegiorno+"','"+nomemese+"','"+nomeanno+"','"+nomediv+"','"+gg_next+"','"+mm_next+"','"+aaaa_next+"','"+gg_sel+"','"+mm_sel+"','"+aaaa_sel+"');\" title=\"Clicca per andare al mese successivo\" style=\"color: Black; text-decoration: none; background-color: transparent;\" onmouseover=\"style.color='#FF0000'\" onmouseout=\"style.color='Black'\">>></a>"
	contenuto=contenuto+"</font></td>"
	contenuto=contenuto+"</tr>"
	contenuto=contenuto+"<tr>"
	contenuto=contenuto+"<td height=\"99%\" valign=\"top\">"
	maxgiorni=maxgiornidata(mm,aaaa);
	var d=new Date(aaaa,mm-1,1);
	gg_num=d.getDay();
	d.setDate(1);
	primogiorno=d.getDay();
	if(primogiorno==0) primogiorno=7;
	contenuto=contenuto+"<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">"
	contenuto=contenuto+"<tr valign=\"top\" align=\"center\">"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">lun</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">mar</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">mer</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">giov</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">ven</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">sab</font></td>"
	contenuto=contenuto+"<td style=\"border-bottom: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">dom</font></td>"
	contenuto=contenuto+"</tr>"
	conta=1;
	iniziaprint=false;
	for(i=1; i<=6; i++)
	{
		contenuto=contenuto+"<tr valign=\"top\" align=\"center\">"
		for(o=1; o<=7; o++)
		{
			if(conta==gg_oggi&&mm==mm_oggi&&aaaa==aaaa_oggi) bgcol="#e0e0e0";
			else bgcol="#FFFFFF";
			if(conta==gg_sel&&mm==mm_sel&&aaaa==aaaa_sel) stile=" style=\"border: 1px solid #FF0000;\"";
			else stile="";
			if(o==primogiorno&&iniziaprint==false)
			{
				iniziaprint=true;
			}
			if(iniziaprint==true&&conta<=maxgiorni)
			{
				contenuto=contenuto+"<td bgcolor=\""+bgcol+"\""+stile+" onmouseover=\"style.backgroundColor='#ffff99'\" onmouseout=\"style.backgroundColor='"+bgcol+"'\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">"
				contenuto=contenuto+"<a href=\"javascript:;\" onclick=\"javascript:document."+nomeform+"."+nomegiorno+".value="+conta+";document."+nomeform+"."+nomemese+".value="+mm+";document."+nomeform+"."+nomeanno+".value="+aaaa+";document.getElementById('"+nomediv+"').style.display='none';if(document.getElementById('guscio_"+nomediv+"')) document.getElementById('guscio_"+nomediv+"').style.display='none';\" style=\"color: Black; text-decoration: none; background-color: transparent;\" title=\"Clicca per selezionare questa data\">"+conta+"</a>";
				conta++;
			}
			else
			{
				contenuto=contenuto+"<td bgcolor=\""+bgcol+"\"><font face=\"Arial\" style=\"font-size: 12px; color: Black;\">"
				contenuto=contenuto+"&nbsp;"
			}
			contenuto=contenuto+"</font></td>"
		}
		contenuto=contenuto+"</tr>"
	}
	contenuto=contenuto+"<tr>"
	contenuto=contenuto+"<td colspan=\"6\" align=\"center\" style=\"border-bottom: 1px solid #cecece; border-top: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 10px; color: Black;\">"
	if(!errata_sel) contenuto=contenuto+"Corrente: "+arr_giorni[gg_sel_num]+" "+gg_sel+" "+arr_mesi[mm_sel-1]+" "+aaaa_sel+"";
	else contenuto=contenuto+"&nbsp;";
	contenuto=contenuto+"</font></td>"
	contenuto=contenuto+"<td align=\"center\" style=\"border-bottom: 1px solid #cecece; border-top: 1px solid #cecece;\"><font face=\"Arial\" style=\"font-size: 11px; color: Black;\">"
	contenuto=contenuto+"<a href=\"javascript:;\" onclick=\"javascript:document.getElementById('"+nomediv+"').style.display='none';if(document.getElementById('guscio_"+nomediv+"')) document.getElementById('guscio_"+nomediv+"').style.display='none';\" style=\"color: Black; text-decoration: none; background-color: transparent;\" onmouseover=\"style.color='#FF0000'\" onmouseout=\"style.color='Black'\" title=\"Clicca per chiudere il calendario\">[<b>x</b>]</a>"
	contenuto=contenuto+"</font></td>"
	contenuto=contenuto+"</tr>"
	contenuto=contenuto+"</table>"
	contenuto=contenuto+"</td>"
	contenuto=contenuto+"</tr>"
	contenuto=contenuto+"</table>"
	document.getElementById(nomediv).innerHTML=contenuto;
}

// FUNZIONE FACOLTATIVA PER FAR SPARIRE IL CALENDARIO 
// mettendola sull'onclick si chiude solo col click del mouse, mettendola su onmousemove, bisogna mettere il tempo di chiusura
function gira_calendario(evt,tempo)
{
	if(!top.cale_quale) top.cale_quale="";
	if(!top.cale_timerID) top.cale_timerID=0;
	if(!top.cale_minX) top.cale_minX=0;
	if(!top.cale_maxX) top.cale_maxX=0;
	if(!top.cale_minY) top.cale_minY=0;
	if(!top.cale_maxY) top.cale_maxY=0;
	if(top.cale_quale!="")
	{
		tempX=evt.clientX||evt.pageX;
		tempY=evt.clientY||evt.pageY;
		if(tempX>0) 
		{
			if(document.documentElement&&document.documentElement.scrollLeft) tempX=document.documentElement.scrollLeft+tempX;
        	else tempX=document.body.scrollLeft+tempX;
		}
		else 
		{
			tempX=0;
		}
		if(tempY>0) 
		{
			if(document.documentElement&&document.documentElement.scrollTop) tempY=document.documentElement.scrollTop+tempY;
        	else tempY=document.body.scrollTop+tempY;
		}
		else 
		{
			tempY=0;
		}
		if(tempo>0)
		{
			if(tempX<top.cale_minX||tempX>top.cale_maxX||tempY<top.cale_minY||tempY>top.cale_maxY) 
			{
				if(top.cale_timerID<1) top.cale_timerID=setTimeout("document.getElementById('"+top.cale_quale+"').style.display='none';", tempo);
			}
			else if (top.cale_timerID>0) 
			{
				clearTimeout(top.cale_timerID);
				top.cale_timerID=0;
			}
		}
		else
		{
			document.getElementById(top.cale_quale).style.display='none';
		}
	}
}

// FUNZIONE FACOLTATIVA PER INDIVIDUARE IL CALENDARIO 
// necessita della funzione: gira_calendario e up_calendario
// da mettere nell'immagine che apre il calendario, se gli si passa il tempo si chiude dopo X secondi
// es: onmouseover="up_calendario('calendario');" onmouseout="pos_calendario('calendario',2000);"
// IMPORTANTE: il doctype della pagina deve essere così: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
function pos_calendario(quale,tempo)
{
	top.cale_quale=quale;
	qualecal=document.getElementById(quale);
	top.cale_minX=qualecal.offsetLeft;
	top.cale_maxX=top.cale_minX+qualecal.offsetWidth;
	top.cale_minY=qualecal.offsetTop;
	top.cale_maxY=top.cale_minY+qualecal.offsetHeight;
	if(tempo>0)
	{
		if (top.cale_timerID>0) 
		{
			clearTimeout(top.cale_timerID);
			top.cale_timerID=0;
		}
		else
		{
			top.cale_timerID=setTimeout("document.getElementById('"+top.cale_quale+"').style.display='none';", tempo);
		}
	}
}

// FUNZIONE FACOLTATIVA PER CHIUDERE IL CALENDARIO 
// necessita della funzione: gira_calendario e pos_calendario
// da mettere nell'immagine che apre il calendario
// es: onmouseover="up_calendario('calendario');" onmouseout="pos_calendario('calendario',2000);"
function up_calendario(quale)
{
	if (quale!=top.cale_quale&&top.cale_quale!="") 
	{
		document.getElementById(top.cale_quale).style.display="none";
		top.cale_quale="";
	}
	if(top.cale_timerID!=0) clearTimeout(top.cale_timerID);
}