
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function FindAndClick(form,pattern){
  //pattern = /fornitori__ROW_(\d)_seleziona/; 
  for(n=0;n<document.forms[form].elements.length;n++){
    box = document.forms[form].elements[n];
  	if (box.name.match(pattern)) box.click();

  }
}
function SetApp(idagenda,idappuntamento,data,hstart,hstop,duratamin){
  xdata  = window.parent.document.getElementById('app_data'+idappuntamento);
  xstart = window.parent.document.getElementById('app_start'+idappuntamento);
  xstop  = window.parent.document.getElementById('app_stop'+idappuntamento);
  xdata.value=data;
  xstart.value=hstart;
  xstop.value=hstop;
  setDisplayRow(window.parent.document.getElementById('rowapp'+idappuntamento),0); 
  toggleLayerDisplay(window.parent.document.getElementById('closeapp'+idappuntamento)); 
  toggleLayerDisplay(window.parent.document.getElementById('openapp'+idappuntamento));
}
function showMenu(link,elem){
    var ce = 0;
    if(elem.style.display == 'none' || elem.style.display == ''){
        elem.style.display='block';
        //document.getElementById(link).innerHTML='Chiudi Menu';
	      link.src=wwwpath+wwwskin+'/xp_butt_up.gif';
    } else {
        elem.style.display='none';
        //document.getElementById(link).innerHTML='Apri Menu';
	link.src=wwwpath+wwwskin+'/xp_butt_down.gif';
    }
}
  function toggleLayerDisplay(layer,forceon){        
    
    if (!forceon){
      //if(layer.style.display == 'none' || layer.style.display == '' || !layer.style.display)
      if(layer.style.display == 'none')
        if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,true); 
        else layer.style.display='block';
      else
        if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,false);
        else layer.style.display='none';
    }else{            
      if (forceon=='hidden')  if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,false); else layer.style.display='none';
      if (forceon=='visible') if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,true); else layer.style.display='block';
    }
      
  }
  function toggleLayerDisplay2(layername,forceon){        
    layer = document.getElementById(layername);
    if (!forceon){
      if(layer.style.display == 'none')
        if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,true); 
        else PrenoteVisibility(layername,0); //layer.style.display='block';
      else
        if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,false);
        else PrenoteInvisibility(layername,1); //layer.style.display='none';
    }else{            
      if (forceon=='hidden' && layer.style.display != 'none')  if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,false); else PrenoteInvisibility(layername,1); //layer.style.display='none';
      if (forceon=='visible' && layer.style.display == 'none') if(layer.tagName=='TD' || layer.tagName=='TR') setDisplayRow(layer,true); else PrenoteVisibility(layername,0); //layer.style.display='block';
    }
      
  }  
  function LayerOn(layer){
    toggleLayerDisplay(layer,'visible');
  }
  function LayerOff(layer){
    toggleLayerDisplay(layer,'hidden');
  }  
  function PrenoteInvisibility(layername,op){
    layer = document.getElementById(layername);
    if(op>=0){
      clearTimeout(timerID);
      nop=op - 0.1;
      layer.style.opacity = nop;
      layer.style.filter = "alpha(opacity="+(nop*100)+")";     
      timerID = setTimeout(function () {PrenoteInvisibility(layername,nop);}, 50);

    }else{
      //bene... ora si può renderlo invisibile
      LayerOff(layer);
    }  
  }
  function PrenoteVisibility(layername,op){
    layer = document.getElementById(layername);
    LayerOn(layer);
    if(op<1){      
      clearTimeout(timerID);
      nop=op + 0.1;
      layer.style.opacity = nop;
      layer.style.filter = "alpha(opacity="+(nop*100)+")";          
      timerID = setTimeout(function () {PrenoteVisibility(layername,nop);}, 50);

    }else
      LayerOn(layer);  
  }   
function showHour(link,elem1,elem2,elem3){
    var ce = 0;
    if(elem1.style.display == 'none' || elem1.style.display == ''){
        setDisplayRow(elem1, 1);
        setDisplayRow(elem2, 1);
        setDisplayRow(elem3, 1);
        //document.getElementById(link).innerHTML='Chiudi Menu';
	      link.src=wwwpath+wwwskin+'/xp_butt_up.gif';
    } else {
        setDisplayRow(elem1, 0);
        setDisplayRow(elem2, 0);
        setDisplayRow(elem3, 0);
        //document.getElementById(link).innerHTML='Apri Menu';
	link.src=wwwpath+wwwskin+'/xp_butt_down.gif';
    }
}
function setDisplayRow(layer, on)
	    {
	        if (on) {
	            if (DOM) {
	                if (IE)
	                    layer.style.display = "block";
	                else
	                    layer.style.display = "table-row";
	            } else {
	                layer.style.display = "block";
	            }
	        } else {
	            if (DOM) {
	                layer.style.display = "none";
	            } else {
	                layer.style.display = "none";
	            }
	        }
	    }
function SwapHourDisp(elem0,elem1,elem2,elem3){
    if(elem0.checked==true){
        elem1.checked=true;
        elem2.checked=true;
        elem3.checked=true;
    } else {
        elem1.checked=false;
        elem2.checked=false;
        elem3.checked=false;
    }
}
function SwapAllHours(base,val){
  //var elems = Array();
  var obj;
  var h;

  
  for(i=8;i<21;i++){
    h = (i<=9)?('0'+i):(i);
    //alert(base+'h'+h+'m00');
    obj = document.getElementById(base+'h'+h+'m00');
    obj.checked=val;
    obj = document.getElementById(base+'h'+h+'m15');
    obj.checked=val;
    obj = document.getElementById(base+'h'+h+'m30');
    obj.checked=val;
    obj = document.getElementById(base+'h'+h+'m45');
    obj.checked=val;            
  }
  

}

function SvuotaInputSelect(obj){

// 	if (obj.length>0)
//    for (i=(obj.length-1); i>=0; i--)
//    	obj.options[i]=null;
	while( v = obj.firstChild)
		obj.removeChild(v);

}
function SpostaSelectOptions(form,field_src,field_dst){
  source = document.forms[form].elements[field_src];
  dest   = document.forms[form].elements[field_dst];
  if(source && dest){ 
    for(i=0;i<source.length;i++){   
      if (source.options[i].selected==true){
        new_Option(form,field_dst,source.options[i].text,source.options[i].value,true,true);
      }      
    }      
  }
  //SvuotaInputSelect(source);
  DeleteSelectedOptions(source);
  
}
function MoveSelectedOptionsEsami(form,field_src,field_dst){
  //tiene conto dei raggruppamenti
  var source = document.forms[form].elements[field_src];
  var dest = document.forms[form].elements[field_dst];
  var curGroup;
  var DeleteGroups = new Array();
  var pattern = /a(\d)+e(\d)+/i;
  if(source && dest){
    var children = source.childNodes;
    for (var i = 0; i < children.length; i++){
      //memorizza l'etichetta del gruppo di appartenenza
      if (children[i].tagName=='OPTGROUP') {
        if (numGC==0) DeleteGroups.push(curGroup);
        curGroup=children[i];
        var numGC=0;
      }
      //se l'opzione è stata selezionata...
      if (children[i].tagName=='OPTION'){
        if (children[i].selected==true){
            //deve provare ad inserire il valore nell'oggetto destinatario
            //se vi sono elementi dello stesso gruppo, accoda; se non ve ne sono accoda prima il gruppo e poi l'elemento.
            var mmS = children[i].value.match(pattern);
            //cerca nel destinatario
            //<-----
            //var sons = dest.childNodes;
            flag=true;
            before=null;
            for (var j=0;j<dest.length;j++){
              //if (sons[j].tagName=='OPTGROUP' && sons[j].label==curGroup) //ho trovato il gruppo di appartenenza
               var mmD = dest.options[j].value.match(pattern);
               if (mmD[1]==mmS[1]) //ho trovato un nodo dello stesso gruppo
                var before = dest.options[j];
               if (children[i].value==dest.options[j].value) flag=false; //evita duplicati               
            }
            if (flag==true){
              //elemento
            	var optobj = document.createElement("option");    
	            var textobj = document.createTextNode(children[i].text);
              optobj.appendChild(textobj) ;
              optobj.value=children[i].value;              
              optobj.selected=true;
                optobj.style.color = '#003366';          
	            //gruppo
              var optgobj = document.createElement("optgroup");
              optgobj.label=curGroup.label;
                optgobj.style.fontStyle='normal';
                optgobj.style.color='#003366';
                optgobj.style.backgroundColor='#D6DFF7';    
              
              
              if (before)
                dest.insertBefore(optobj,before);
              else{
                dest.appendChild(optgobj);
                dest.appendChild(optobj);
              }
            
            }
            //----->   
        }else
          numGC++;
      }
    }
    if (numGC==0) DeleteGroups.push(curGroup);
  }
  DeleteSelectedOptions(source);
  for(d=0;d<DeleteGroups.length;d++)
    source.removeChild(DeleteGroups[d]);

}
function CopySelectedOptions(form,field_src,field_dst){
  source = document.forms[form].elements[field_src];
  dest   = document.forms[form].elements[field_dst];
  var e;
  if(source && dest){ 
    for(i=0;i<source.length;i++){      
      if (source.options[i].selected==true){
        e = new_Option(form,field_dst,source.options[i].text,source.options[i].value,true,false);
      }      
    }      
  }
  //SvuotaInputSelect(source);
  //DeleteSelectedOptions(source);
  
}
function DeleteOption(caller,id){
  if (caller){
    if (caller.length>0)
		  for (i=(caller.length-1); i>=0; i--)
        if (caller.options[i].value==id)
			      	caller.options[i]=null;
  }
}
function DeleteSelectedOptions(caller){
  //ad uso dei campi select (sia singoli che multipli)
  if (caller){
    if (caller.length>0)
		  for (i=(caller.length-1); i>=0; i--)
        if (caller.options[i].selected==true)
			      	caller.options[i]=null;
        }
}
function SelectAllOptions(caller){
         //ad uso del campi select
         if (caller){
           	if (caller.length>0)
		      for (i=0;i<caller.length;i++){
		      	caller.options[i].selected=true;
                //caller.options[i].fontWeight='bold';
              }
         }
}
function DeselectAllOptions(caller){
         //ad uso del campi select
         if (caller){
           	if (caller.length>0)
		      for (i=0;i<caller.length;i++)
		      	caller.options[i].selected=false;
         }
}
function new_Option(form,field,text,value,selected,permittduplicate){
  var obj = document.forms[form].elements[field];
	var optobj = document.createElement("option");
    //optobj.text=text;
	var textobj = document.createTextNode(text);
  optobj.appendChild(textobj) ;
  optobj.value=value;
  if (selected==true) optobj.selected=true;
  flag=true;
  
  if (permittduplicate==false && obj.length>0){            
      for (j=0;j<obj.length;j++)
        	if (obj.options[j].value==value){
             	flag=false;
              break;
          }
  }
  if (flag==true){        
    obj.appendChild(optobj);
    return true;
  }else return false;
//    caller = document.forms[form].elements[field];
//    caller.options[caller.length] = new Option(text,value);
//	            if (selected==true) caller.options[caller.length-1].selected = true;

}
function new_OptGroup(form,field,label){
	  var optobj = document.createElement("optgroup");
    optobj.label=label;
    document.forms[form].elements[field].appendChild(optobj);
}

function PopUpWin_scr(pageurl,pagename,width,height)
{
	  if (width==0 || width>screen.availWidth) width=screen.availWidth-150;
    if (height==0 || height>screen.availHeight) height=screen.availHeight-250;
    var left = (screen.availWidth - width)/2;
    var top = (screen.availHeight - height)/2;
  var winpopup;
	winpopup = open(pageurl,pagename,"location=0,status=0,toolbar=0,directories=0,menubar=0,scrollbars=1,resizable=0,width="+width+",height="+height+",left="+left+",top="+top);
	return winpopup;
}
        function FiltraNumeri(e){
        //da chiamare onkeypress
        //45,109=-
        //46=. e canc
        //8=backspace
        //9=tab
		    //110,190=.
		    //35,36 = inizio,fine
        //37,38,39,40=frecce
        //numeri dal 48 al 57
        //39 = ' ==>(bug)
         if (e.which){
         	if (e.which!=219 && (e.which==45 || e.which==46 || e.which==8 || e.which==9 || e.which==0 || (e.which>=48 && e.which<=57) || e.which==13 || e.which==37 || e.which==38 || e.which==39 || e.which==40 || e.which==109 || e.which==110 || e.which==190))
            	return 1;
            else
            	return 0;
         }else{
         	if (e.keyCode!=219 && (e.keyCode==45 || e.keyCode==46 || e.keyCode==8 || e.keyCode==9 || e.keyCode==0 || (e.keyCode>=48 && e.keyCode<=57) || e.keyCode==13 || e.keyCode==37 || e.keyCode==38 || e.keyCode==39 || e.keyCode==40 || e.keyCode==109 || e.keyCode==110 || e.keyCode==190))
            	return 1;
            else
            	return 0;
         }
        }
        
        //per Numeri naturali (interi e >0)
        function FiltraNumeriN(e){
        //da chiamare onkeypress
        //45,109=-
        //46=. e canc
        //8=backspace
        //9=tab
		    //110,190=.
		    //35,36 = inizio,fine
        //37,38,39,40=frecce
        //numeri dal 48 al 57
        //39 = ' ==>(bug)
         if (e.which){
          //alert(e.which);
         	if (e.which==8 || e.which==9 || e.which==0 || (e.which>=48 && e.which<=57) || e.which==13 || e.which==35 || e.which==36 || e.which==37 || e.which==38 ||  e.which==40 )
            	return 1;
            else
            	return 0;
         }else{
          //alert(e.keyCode);
         	if (e.keyCode==8 || e.keyCode==9 || e.keyCode==0 || (e.keyCode>=48 && e.keyCode<=57) || e.keyCode==13 || e.keyCode==35 || e.keyCode==36 || e.keyCode==37 || e.keyCode==38 || e.keyCode==40 )
            	return 1;
            else
            	return 0;
         }
        }
        
        //per numeri Naturali Relativi (interi e >0 o <0)
        function FiltraNumeriNZ(e){
        //da chiamare onkeypress
        //45,109=-
        //46=. e canc
        //8=backspace
        //9=tab
		    //110,190=.
		    //35,36 = inizio,fine
        //37,38,39,40=frecce
        //numeri dal 48 al 57
        //39 = ' ==>(bug)
         if (e.which){
          //alert(e.which);
         	if (e.which==109 ||e.which==45 || e.which==8 || e.which==9 || e.which==0 || (e.which>=48 && e.which<=57) || e.which==13 || e.which==35 || e.which==36 || e.which==37 || e.which==38 ||  e.which==40 )
            	return 1;
            else
            	return 0;
         }else{
          //alert(e.keyCode);
         	if (e.keyCode==109 || e.keyCode==45 || e.keyCode==8 || e.keyCode==9 || e.keyCode==0 || (e.keyCode>=48 && e.keyCode<=57) || e.keyCode==13 || e.keyCode==35 || e.keyCode==36 || e.keyCode==37 || e.keyCode==38 || e.keyCode==40 )
            	return 1;
            else
            	return 0;
         }
        }
        
        //per numeri reali (quindi frazionari >0)
        function FiltraNumeriR(e){
        //da chiamare onkeypress
        //45,109=-
        //46=. e canc
        //8=backspace
        //9=tab
		    //110,190=.
		    //35,36 = inizio,fine
        //37,38,39,40=frecce
        //numeri dal 48 al 57
        //39 = ' ==>(bug)
         if (e.which){
          //alert(e.which);
         	if (e.which==46 || e.which==110 ||e.which==190 || e.which==8 || e.which==9 || e.which==0 || (e.which>=48 && e.which<=57) || e.which==13 || e.which==35 || e.which==36 || e.which==37 || e.which==38 ||  e.which==40 )
            	return 1;
            else
            	return 0;
         }else{
          //alert(e.keyCode);
         	if (e.keyCode==46 || e.keyCode==110 || e.keyCode==190 || e.keyCode==8 || e.keyCode==9 || e.keyCode==0 || (e.keyCode>=48 && e.keyCode<=57) || e.keyCode==13 || e.keyCode==35 || e.keyCode==36 || e.keyCode==37 || e.keyCode==38 || e.keyCode==40 )
            	return 1;
            else
            	return 0;
         }
        }
        
        //per numeri reali realtivi (quindi frazionari >0 o <0)
        function FiltraNumeriRZ(e){
        //da chiamare onkeypress
        //45,109=-
        //46=. e canc
        //8=backspace
        //9=tab
		    //110,190=.
		    //35,36 = inizio,fine
        //37,38,39,40=frecce
        //numeri dal 48 al 57
        //39 = ' ==>(bug)
         if (e.which){
          //alert(e.which);
         	if (e.which==46 ||e.which==110 ||e.which==190 || e.which==109 ||e.which==45 || e.which==8 || e.which==9 || e.which==0 || (e.which>=48 && e.which<=57) || e.which==13 || e.which==35 || e.which==36 || e.which==37 || e.which==38 ||  e.which==40 )
            	return 1;
            else
            	return 0;
         }else{
          //alert(e.keyCode);
         	if (e.keyCode==46 || e.keyCode==110 || e.keyCode==190 || e.keyCode==109 || e.keyCode==45 || e.keyCode==8 || e.keyCode==9 || e.keyCode==0 || (e.keyCode>=48 && e.keyCode<=57) || e.keyCode==13 || e.keyCode==35 || e.keyCode==36 || e.keyCode==37 || e.keyCode==38 || e.keyCode==40 )
            	return 1;
            else
            	return 0;
         }
        }

function trim(str) {
  return str.replace(/^\s*|\s*$/g,"");
}
function prepareMenuPlus(thisObj,toCase,firstTimeout,x,y,firstText,myaxIDMOD,myaxACT,myaxP1,myaxP2,myaxP3,myaxP4,myaxP5){
    if (timerIDmenuplus) clearTimeout(timerIDmenuplus); 
    timerIDmenuplus = setTimeout(function () {toggleLayerDisplay(document.getElementById('legendplus'));}, firstTimeout);
    showMenePlus(thisObj,document.getElementById('legendplus'),x,y,firstText); 

}
function prepareLegendPlus(thisObj,toCase,firstTimeout,x,y,firstText,myaxIDMOD,myaxACT,myaxP1,myaxP2,myaxP3,myaxP4,myaxP5){
    if(toCase=='upper') thisObj.value=thisObj.value.toUpperCase();
    if(toCase=='lower') thisObj.value=thisObj.value.toLowerCase(); 
    if (timerIDlegendplus) clearTimeout(timerIDlegendplus); 
    timerIDlegendplus = setTimeout(function () {toggleLayerDisplay(document.getElementById('legendplus'));}, firstTimeout);
    showToolTipPlus(thisObj,document.getElementById('legendplus'),x,y,firstText); 
    myax(myaxIDMOD,'raw-rewrite-intolayer',myaxACT,'','legendplus',myaxP1,myaxP2,myaxP3,myaxP4,myaxP5);
}
function showToolTipPlus(box,layer,offsetX,offsetY,text){	
		layer.style.display  = "block";
		var br = getAbsolutePos(box);
		//inserisce l'html nel layer (così da farlo dimensionare)
    layer.innerHTML = text;
		var x = br.x + offsetX
		if (x<0) x = 0;
		var y = br.y + offsetY;	

		showAt(layer,x, y);
		
}
function showToolTip(box,layer,text){	
		layer.style.display  = "block";
		var br = getAbsolutePos(box);
		//inserisce l'html nel layer (così da farlo dimensionare)
    layer.innerHTML = text;
    //ora è possibile ottenere la larghezza del layer
		var x = br.x - layer.offsetWidth;
		if (x<0) x = 0;
		var y = br.y;	

		showAt(layer,x, y);
}
function showAt(el,x, y) {	
	el.style.left = x + "px";
	el.style.top = y + "px";
	el.style.display = 'block';
};
function getAbsolutePos(el) {
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};

function LayerFixPosition(box) {
		if (box.x < 0)
			box.x = 0;
		if (box.y < 0)
			box.y = 0;
    var cp = document.createElement("div");
		var s = cp.style;
		s.position = "absolute";
		s.right = s.bottom = s.width = s.height = "0px";	
    document.body.appendChild(cp);
		var br = getAbsolutePos(cp);
		document.body.removeChild(cp);
		if (( /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) )) {
			br.y += document.body.scrollTop;
			br.x += document.body.scrollLeft;
		} else {
			br.y += window.scrollY;
			br.x += window.scrollX;
		}
		var tmp = box.x + box.width - br.x;
		if (tmp > 0) box.x -= tmp;
		tmp = box.y + box.height - br.y;
		if (tmp > 0) box.y -= tmp;
};
function calday_select(curobj){
    if (last_calday){
      if (!last_caldaycss) last_caldaycss = null;
      last_calday.className = last_caldaycss;
      
    }
    last_calday = curobj;
    last_caldaycss = last_calday.className;
    last_calday.className='calendario_current';
  
}

/* 
funzioni personalizzate per MYAX
*/
function getHTTPObject() {
  if (typeof XMLHttpRequest != 'undefined') return new XMLHttpRequest(); 
  try {return new ActiveXObject("Msxml2.XMLHTTP");} 
  catch (e) { 
    try {return new ActiveXObject("Microsoft.XMLHTTP");} 
    catch (e) { 
      if (window.createRequest){
        try {return window.createRequest();}
        catch (e){}
      }
    } 
  } 
  return false; 
} 
function sendHTTPRequest(method,url,param,callback,xml){
          var xmlhttp = getHTTPObject();
          if (method=='POST'){
            var params = param;
            xmlhttp.open("POST", url,true);            
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-length", params.length);
            xmlhttp.setRequestHeader("Connection", "close");
          }else{
            var params;            
            xmlhttp.open("GET", url + '&'+param,true);            
          }         
         xmlhttp.onreadystatechange=function (){
            if (xmlhttp.readyState==4 && xmlhttp.status==200) 
              if (xml) var response = callback(xmlhttp.responseXML);
              else var response = callback(xmlhttp.responseText);
        
         }
        
         xmlhttp.send(params)   
}
function myax(idmodulo,type,action,form,field,param1,param2,param3,param4,param5){
  //effettua richiesta al server
    var url = wwwpath + "/index.php";
    var base = "idmodulo="+idmodulo+"&Azione=myax&mode=file";
    var params = "act="+action+"&param1="+param1+"&param2="+param2+"&param3="+param3+"&param4="+param4+"&param5="+param5;
    var xml = true;
    if (type=='raw-rewrite-into' || type=='raw-rewrite-intolayer' || type=='javaexec') xml =false;
    var callback=function(XMLData) {
        switch(type){
          case 'dinamic-selectbox':
            SvuotaInputSelect(document.forms[form].elements[field]);
            myax_dinselectbox(form,field,XMLData,param2);
            break;
          case 'dinamic-tree-selectbox':
            SvuotaInputSelect(document.forms[form].elements[field]);
            myax_dintreeselectbox(form,field,XMLData,param2);
            break;
          case 'raw-rewrite-into': //invia richiesta, riceve resposto di testo e lo riscrive dentro un oggetto
            myax_ObjReWrite(field,XMLData,false);
            break;
          case 'raw-rewrite-intolayer': //invia richiesta, riceve resposto di testo e lo riscrive dentro un oggetto
            myax_ObjReWrite(field,XMLData,true);
            break;    
          case 'javaexec': //riceve ed esegue semplici istruzioni javascript
            myax_JavaExec(XMLData);
            break; 
          case 'inputboxvalue':
            myax_inputbox(form,field,XMLData,param3);
            break;                      
          //CASISTICHE RESPONSI-RISCRITTURE          
          case 'raw-rewrite-fromxml':
            myax_ReWriteFromXml(XMLData);
            break;              
            

        }
    } 
    sendHTTPRequest('POST',url + '?'+ base,params,callback,xml); 
}
function myax_JavaExec(htmlscript){
  if (htmlscript) eval(htmlscript);
}
function myax_ObjReWrite(ObjID,html,islayer){
 //ricerca l'oggetto dall'ID
 var element = window.document.getElementById(ObjID);
 //svuotalo
  if (islayer) {
    element.innerHTML = html;
    
  }else{
 //riscrivi testo ricevuto
    html = typeof html == 'undefined' ? '' : html.toString();
    if (element.outerHTML) {
      //ie => l'html viene renderizzato      
      element.outerHTML = html.stripScripts();
    } else {
      //ff=> l'html non viene renderizzato
      var range = element.ownerDocument.createRange();
      range.selectNodeContents(element);
      element.parentNode.replaceChild( range.createContextualFragment(html.stripScripts()), element );
    }
  }
}
function myax_ReWriteFromXml(xmlDocument){
  
  var Response = xmlDocument.documentElement;
  if (Response.nodeName=="Responses"){
    //estrae tutti i nodi Params
    var Rows = Response.getElementsByTagName('Row');
    var c_cod;    
    for (i=0;i<Rows.length;i++){      
      var Param = Rows[i].getElementsByTagName('param');      
      for(j=0;j<Param.length;j++){
        var o_id;
        var o_label;
        var o_codice;
        var tmp = null;
        //output(Param[j].getAttribute('type') + ' => ' + Param[j].textContent);
        tmp = Param[j].text;
      	if (IE) tmp = Param[j].text;
      	if (SAFARI) tmp = Param[j].firstChild.nodeValue;
      	//if (KONQUEROR) tmp = Param[j].nodeValue;
      	if (OPERA) tmp = Param[j].text;
      	if (FF) tmp = Param[j].textContent;        
        //output(Param[j].getAttribute('type') + ' => ' + Param[j].textContent);
        switch (Param[j].getAttribute('type')){
          case 'id':     var o_id    = tmp; break;
          case 'codice': var o_codice= tmp; break;
          case 'label':  var o_label = tmp; break;
          
        }
      }
      //riscrive l'oggetto layer
      //per riscrivere un layer utilizza : myax_ObjReWrite(idlayer,html,true);
      myax_ObjReWrite(o_id,o_label, ((o_codice=='layer')?(true):(false)) );              
    }
        
  }
    
}
function myax_inputbox(form,field,xmlDocument,predefval){
 //ricerca l'oggetto destinatario 
 var element = document.forms[form].elements[field];
 //sostituisci valore
 element.value = ((xmlDocument=='' && predefval)?(predefval):(xmlDocument));

}
function myax_dinselectbox(form,field,xmlDocument,value){
  
  var Response = xmlDocument.documentElement;
  if (Response.nodeName=="Responses"){
    //estrae tutti i nodi Params
    var Rows = Response.getElementsByTagName('Row');
    //var c_cod;    
    for (i=0;i<Rows.length;i++){      
      var Param = Rows[i].getElementsByTagName('param');      
      for(j=0;j<Param.length;j++){
        
        var o_id;
        var o_label;
        var o_codice;
        var o_scodice;
        var tmp = null;
        //output(Param[j].getAttribute('type') + ' => ' + Param[j].textContent);
        tmp = Param[j].text;
      	if (IE) tmp = Param[j].text;
      	if (SAFARI) tmp = Param[j].firstChild.nodeValue;
      	//if (KONQUEROR) tmp = Param[j].nodeValue;
      	if (OPERA) tmp = Param[j].text;
      	if (FF) tmp = Param[j].textContent;

        switch (Param[j].getAttribute('type')){
          case 'id':      var o_id      = tmp; break;
          case 'label':   var o_label   = tmp; break;
          case 'codice':  var o_codice  = tmp; break;
          case 'supercodice': var o_scodice = tmp; break;
        }
      }
      //if (o_codice!=c_cod) new_OptGroup(form,field,o_codice);
      //c_cod=o_codice;
      //inserisce la voce

      new_Option(form,field,o_label,o_id);        
    }
        
  }

}
function myax_dintreeselectbox(form,field,xmlDocument,value){
  
  var Response = xmlDocument.documentElement;
  if (Response.nodeName=="Responses"){
    //estrae tutti i nodi Params
    var Rows = Response.getElementsByTagName('Row');
    var c_cod;    
    for (i=0;i<Rows.length;i++){      
      var Param = Rows[i].getElementsByTagName('param');      
      for(j=0;j<Param.length;j++){
        var o_id;
        var o_label;
        var o_codice;
        var tmp = null;
        //output(Param[j].getAttribute('type') + ' => ' + Param[j].textContent);
        tmp = Param[j].text;
      	if (IE) tmp = Param[j].text;
      	if (SAFARI) tmp = Param[j].firstChild.nodeValue;
      	//if (KONQUEROR) tmp = Param[j].nodeValue;
      	if (OPERA) tmp = Param[j].text;
      	if (FF) tmp = Param[j].textContent;        
        //output(Param[j].getAttribute('type') + ' => ' + Param[j].textContent);
        switch (Param[j].getAttribute('type')){
          case 'id':     var o_id    = tmp; break;
          case 'label':  var o_label = tmp; break;
          case 'codice': var o_codice= tmp; break;
        }
      }
      if (o_codice!=c_cod) new_OptGroup(form,field,o_codice);
      c_cod=o_codice;
      //inserisce la voce
      new_Option(form,field,o_label,o_id);        
    }
        
  }

}

function checkform(form){
   var ret=1;
   var ret2=1;
   var rel=null;
   var name;
   var alter;
   var reg;
   var src;
   var app;
   var error = [];

   for(i=0;i<form.elements.length;i++){             
     //-----begin     
     ret=1;
     ret2=1;
     rel = null;     
     src = form.elements[i];
     name = src.name;
     alter=null;
     reg=null;
  
     for(j=0;j<src.attributes.length;j++) {
      if(src.attributes[j].name=='rel') rel=src.attributes[j].value;
      if(src.attributes[j].name=='alt') name=src.attributes[j].value;
      if(src.attributes[j].name=='alter') alter=form.elements[src.attributes[j].value];
      if(src.attributes[j].name=='reg') reg=src.attributes[j].value;

     }

     if (rel=='notnull'){     
       switch(src.type){
         case 'text':
         case 'textarea': if (!src.value || (reg && !src.value.match(reg)) ) {ret=0;  error[error.length] = name;} 
                break;
         case 'select-multiple':
         case 'select-one':
         case 'select':
                app=0;
                for(k=0;k<src.options.length;k++) if (src.options[k].selected==true && src.options[k].value!='') app++;
                if (app==0) {ret=0; error[error.length] = name;}
                break;
         case 'checkbox':
                if (!src.checked){ret=0; error[error.length] = name;}
                break;                 
         default: alert(src.type);
       }
      //valuta alternativa se 
      if (ret==0 && alter){
       switch(alter.type){
         case 'text':
         case 'textarea': if (!alter.value) {ret2=0; error[error.length-1] = name;} 
                break;
         case 'select-multiple':
         case 'select-one':
         case 'select':
                app=0;
                for(k=0;k<alter.options.length;k++) if (alter.options[k].selected==true && alter.options[k].value!='') app++;
                if (app==0) {ret2=0; error[error.length-1] = name;}
                break;
         case 'checkbox':
                if (!alter.checked){ret=0; error[error.length] = name;}
                break;                  
         default: alert(alter.type);
       }
      
        if (ret2==1){ //ho recuperato l'errore
          ret=1;
          error.pop();
        }
      }     
     }


     //-----end
  }
  if (error.length>0){
    var msg = "I seguenti campi non sono stati compilati correttamente:";
	  var i = 0;
    for (i=0; i<error.length; i++) {
      msg += "\n- " + error[i];
    }
    alert(msg);
    return false;
  }else
    return true;
}
function getDateDiff(input1,input2,diff,human){
  //riceve una data in formato umano o sql

  if (human){
    datastring = document.getElementById(input1).value;
    
    var YYYY = datastring.substr(6,4);
    var MM   = datastring.substr(3,2);
    var DD   = datastring.substr(0,2);
    var HH   = datastring.substr(11,2);
    var II   = datastring.substr(14,2);
    data1 = new Date(YYYY,MM,DD,HH,II);

    datastring = document.getElementById(input2).value;
    
    var YYYY = datastring.substr(6,4);
    var MM   = datastring.substr(3,2);
    var DD   = datastring.substr(0,2);
    var HH   = datastring.substr(11,2);
    var II   = datastring.substr(14,2);
    data2 = new Date(YYYY,MM,DD,HH,II); 
       
  }else{
    datastring = document.getElementById(input1).value;
    var YYYY = datastring.substr(0,4);
    var MM   = datastring.substr(3,2);
    var DD   = datastring.substr(6,2);
    var HH   = datastring.substr(11,2);
    var II   = datastring.substr(14,2);
    data1 = new Date(YYYY,MM,DD,HH,II);    
    
    datastring = document.getElementById(input2).value;
    var YYYY = datastring.substr(0,4);
    var MM   = datastring.substr(3,2);
    var DD   = datastring.substr(6,2);
    var HH   = datastring.substr(11,2);
    var II   = datastring.substr(14,2);
    data2 = new Date(YYYY,MM,DD,HH,II);    
  
  }
  if (diff=='minutes') div=60;
  else div=1;
  
  
  return (data2-data1)/1000/div;
  

}
/*
 variabili globali
*/
var last_calday;
var last_caldaycss='';
var DOM = (document.getElementById) ? 1 : 0;
var NS4 = (document.layers) ? 1 : 0;
var IE = (navigator.userAgent.indexOf('MSIE') > -1) ? 1 : 0;
var FF = (navigator.userAgent.indexOf('Firefox') > -1) ? 1 : 0;
var SAFARI = (navigator.userAgent.indexOf('Safari') > -1) ? 1 : 0;
var KONQUEROR = (navigator.userAgent.indexOf('Konqueror') > -1) ? 1 : 0;
var OPERA = (navigator.userAgent.indexOf('Opera') > -1) ? 1 : 0;
var wwwpath = '/dea800';
var wwwskin = '/grafica';
var MF_Values = new Array();
var timerIDmenuplus;
var timerID;

