// utilita_data.js

function odierna() {
   var oggi = new Date();
   var dan = oggi.getMonth()+1;
   data = changeDate(oggi.getDate().toString()+"/"+dan.toString()+"/"+oggi.getFullYear().toString());
   return data;
}
function meseodierno(pindexmese) {
   var oggi = new Date();
   var dan = oggi.getMonth()+1+pindexmese;
   data = changeDate("01"+"/"+dan.toString()+"/"+oggi.getFullYear().toString());
   return data;
}

function changeDate(value) {
  arr1 = split(value,SEPDATA);
  if (arr1[0].length==1)
    var giorno = "0"+arr1[0];
  else
    var giorno = arr1[0];
  if (arr1[1].length==1)
    var mese = "0"+arr1[1];
  else
    var mese = arr1[1];
	return giorno+"/"+mese+"/"+arr1[2];
}

	function fnMax3Date(data1,data2,data3) {
    if (fnDiffDate(data1,data2)!=dataNull1 && fnDiffDate(data1,data2)!=dataNull2 && fnDiffDate(data1,data2)>=0) {
	   	 if (fnDiffDate(data1,data3)!=dataNull1 && fnDiffDate(data1,data3)!=dataNull2 && fnDiffDate(data1,data3)>=0) {
				//DATA1 NON NULLA DATA2 NON NULLA E DATA3 DATA3 NON NULLA DATA1 > di DATA2 E DATA3
        return data1;
    	  }
			else if (fnDiffDate(data1,data3)!=dataNull1 && fnDiffDate(data1,data3)!=dataNull2) {
				//DATA1 NON NULLA DATA2 NON NULLA E DATA3 NON NULLA DATA3 > di DATA1 E DATA2
        return data3;
    	 }
	    else if (data1!="") return data1;
  	  else if (data3!="") return data3;
   	}
    else if (fnDiffDate(data1,data2)!=dataNull1 && fnDiffDate(data1,data2)!=dataNull2) {
	   	 if (fnDiffDate(data2,data3)!=dataNull1 && fnDiffDate(data2,data3)!=dataNull2 && fnDiffDate(data2,data3)>=0) {
				//DATA 1 E DATA2 DIVERSI DA NULLO E DATA3 DIVERSO DA NULLO DATA2 MAGGIORE DI DATA1 E DI DATA3
        return data2;
	     }
			else if (fnDiffDate(data2,data3)!=dataNull1 && fnDiffDate(data2,data3)!=dataNull2) {
			//DATA 1 E DATA2 DIVERSI DA NULLO E DATA3 DIVERSO DA NULLO DATA3 MAGGIORE DI DATA1 E DI DATA2
        return data3;
      }
	    else if (data2!="") return data2;
  	  else if (data3!="") return data3;
    }
    else if (fnDiffDate(data1,data3)!=dataNull1 && fnDiffDate(data1,data3)!=dataNull2 && fnDiffDate(data1,data3)>=0) {
			//DATA 1 DIVERSO DA NULLO E DATA3 DIVERSO DA NULLO DATA1 MAGGIORE DI DATA3
        return data1;
          }
    else if (fnDiffDate(data1,data3)!=dataNull1 && fnDiffDate(data1,data3)!=dataNull2) {
			//DATA 1 DIVERSO DA NULLO E DATA3 DIVERSO DA NULLO DATA3 MAGGIORE DI DATA1
        return data3;
    }
    else if (fnDiffDate(data2,data3)!=dataNull1 && fnDiffDate(data2,data3)!=dataNull2 && fnDiffDate(data2,data3)>=0) {
			//DATA 2 DIVERSO DA NULLO E DATA3 DIVERSO DA NULLO DATA2 MAGGIORE DI DATA3
        return data2;
          }
    else if (fnDiffDate(data2,data3)!=dataNull1 && fnDiffDate(data2,data3)!=dataNull2) {
			//DATA 2 DIVERSO DA NULLO E DATA3 DIVERSO DA NULLO DATA3 MAGGIORE DI DATA2
        return data3;
    }
    else if (data1!="") return data1;
    else if (data2!="") return data2;
    else if (data3!="") return data3;
    else return "";
	}

  //Funzione che realizza il calcolo data1-data2 e lo esprime in giorni.
  function fnDiffDate(data1,data2){
    //alert(data1 + " - " + data2)

    if (data1=='') return dataNull1;
    if (data2=='') return dataNull2;
    if(isDate(data1,"ddMMyyyy")==false&&isDate(data1,"dd/MM/yyyy")==false)return dataNull1;
    if(isDate(data2,"ddMMyyyy")==false&&isDate(data2,"dd/MM/yyyy")==false)return dataNull2;
    var diff  = new Date();
    var date1 = fnParseData(data1,0,0,0);
    var date2 = fnParseData(data2,0,0,0);

	diff.setTime(/*Math.abs(*/date1.getTime() - date2.getTime())/*)*/;
	var timediff = diff.getTime();
	var days=0;
  	days=Math.floor(timediff / (1000 * 60 * 60 * 24));
  	return days*1;
  }


  //Funzione per leggere il giorno da una data
  function getDay(dtStr){
		var pos1=dtStr.indexOf(dtCh);
  	var strDay=dtStr.substring(0,pos1);
  	if (Trim(dtStr)=="/  /" || Trim(dtStr)=="") return "";
  	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
  	return 	strDay;
  }

  //funzione per ricavare da una data il mese
  function getMonth(dtStr){
  	var pos1=dtStr.indexOf(dtCh);
  	var pos2=dtStr.indexOf(dtCh,pos1+1);
		var strMonth=dtStr.substring(pos1+1,pos2);
    if (Trim(dtStr)=="/  /" || Trim(dtStr)=="") return "";
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
    return strMonth;
  }

  //funzione per ricavare da una data l'anno
  function getYear(dtStr){
  	var pos1=dtStr.indexOf(dtCh);
  	var pos2=dtStr.indexOf(dtCh,pos1+1);
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
  	if (Trim(dtStr)=="/  /" || Trim(dtStr)=="") return true;
  	for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		return strYr;
  }

//Funzione per la gestione della coerenza fra data di verbale/preavviso e tutte le date caratteristiche
//di eventi successivi
//Input:
//idCampoA				:id del campo con la data da raffrontare al verbale
//dtVerbale				:id del campo con la data del verbale
function fnControllaDate(idCampoA,dtVerbale){
  if((pagemode=="VARIAZIONE") || (pagemode=="INSERIMENTO")) return true;
  var dataVerbale=document.getElementById(dtVerbale).value;
  var valDiff=fnDiffDate(dataVerbale,document.getElementById(idCampoA).value);
	if(valDiff==dataNull1) return true;
	if(valDiff==dataNull2) return true;
	if(valDiff>=0){
    alert("Date incoerenti. Ridigitare la data.");
    document.getElementById(idCampoA).focus();
    return false
	}
  return true;
}


//controlla se un range di date inserite in due stringhe ? giusto (TRUE)
//(cio? controlla che, se le date non sono nulle, allora devono essere date
//in ordine crescente)
function testRangeDate(szd1,szd2){
	if (!(verificaData(szd1) && verificaData(szd2))){
   return true;
	}
  if (verificaData(szd1) && verificaData(szd2)){
    if(fnDiffDate(szd1,szd2)>0){
      return false;
    }
    else{
      return true;
    }
  }
  else return false;
}

