var dateIni = null;
var dateFin = null;
ms1day=24*60*60*1000;
ms7day=ms1day*7;
ms6day=ms1day*6;
ms4week=ms7day*4;
nweek_durata=0;
function pageglobalsinitialized(){
  // questa funzione DEVE essere ridefinita a livello di pagina
  return false;
}
function init(){
	if(pageglobalsinitialized()){
	  getbackdates();
	  applydates();
	  return;
	}
	dateIni = new Date();
  dateFin = new Date();
  while(dateIni.getDay() != 1){
          dateIni.setTime( dateIni.getTime() - ms1day );
  }
  dateFin=datemonday2sunday(dateIni);
  applydates();
}
function dates_getfromscreen(){
	  getbackdates();
	  applydates();
}
function dates_coldinit(){
	dateIni = new Date(2008,0,7);
  dateFin = new Date(2008,11,28);
  while(dateIni.getDay() != 1){
          dateIni.setTime( dateIni.getTime() - ms1day );
  }
  dateFin=datemonday2sunday(dateIni);
  applydates();
}

function date2str(adate){
  d=adate.getDate()+"/";
  if(d.length<3){
		d='0'+d;
  }
  m=(adate.getMonth()+1)+"/";
  if(m.length<3){
		m='0'+m;
  }
  s =d+m+adate.getFullYear();
  return s;
}
function str2date(adatestring){
	gma=adatestring.split("/");
	giorno=gma[0];
	mese  =gma[1]-1;
	anno  =gma[2];
  a=new Date(anno,mese,giorno);
  a.setHours(12);       // per forzare alle 12:00 l'ora ed evitare errori di arrotondamento nelle operazioni di move << e >> 
  //alert(a);
  return a;
}
function applydates(){
  f=document.getElementById('Form2')
  f.dataini.value=date2str(dateIni);
  f.datafin.value=date2str(dateFin);
  applydates_post();
}
function applydates_post(){
}
function getbackdates(){
  f=document.getElementById('Form2')
  dateIni=str2date(f.dataini.value);
  dateFin=str2date(f.datafin.value);
}
function datemonday2sunday(monday){
  sunday=new Date();
  sunday.setTime( monday.getTime() + ms6day );
  return sunday;
}
function datesunday2monday(sunday){
  //alert(sunday);
  monday=new Date();
  monday.setTime( sunday.getTime() - ms6day );
  //alert(monday);
  return monday;
}
function dateback_nweek(adate,nweek){
  adate.setTime( adate.getTime() - (ms7day*nweek) );
}
function dateforw_nweek(adate,nweek){
  adate.setTime( adate.getTime() + (ms7day*nweek) );
}
function datefix_fin(){
	if(nweek_durata<1){
	  // durata libera
		if(dateIni>dateFin){
		  // abbiamo finito col trascinare la data iniziale oltre quella finale
		  // mettiamo a posto le cose in modo che l'estensione sia usabile
		  // (modifichiamo la data finale in modo da portarla alla domenica della data iniziale)
		  dateFin=datemonday2sunday(dateIni);
		}
	}else{
		// durata definita
		// calcoliamo direttamente la data finale sulla base della data iniziale
		nw=nweek_durata-1;
		dt=ms7day*nw;
		//alert('datefix_fin nw='+nw+' dateFin='+dateFin);
		dateFin.setTime( dateIni.getTime() + dt );
		// adesso dateFin punta al luned́ della settimana finale
		// dobbiamo convertirla alla domenica
		dateFin=datemonday2sunday(dateFin);
	}
}
function datefix_ini(){
	if(nweek_durata<1){
	  // durata libera
		if(dateIni>dateFin){
		  // abbiamo finito col trascinare la data finale oltre quella iniziale
		  // mettiamo a posto le cose in modo che l'estensione sia usabile
		  // (modifichiamo la data iniziale in modo da portarla al luned́ della data fnale)
		  //datesunday2monday(dateFin,dateIni);
		  dateIni=datesunday2monday(dateFin);
		}
	}else{
		// durata definita
		// calcoliamo direttamente la data iniziale sulla base della data finale
		nw=nweek_durata-1;
		dt=ms7day*nw;
		//alert('datefix_ini nw='+nw+' dateFin='+dateFin);
		dateIni.setTime( dateFin.getTime() - dt );
		// adesso dateIni punta alla domenica della settimana iniziale
		// dobbiamo convertirla al luned́
	  //datesunday2monday(dateIni,dateIni);
	  dateIni=datesunday2monday(dateIni);
	}
}
function on_sceltadurata(nweek){
	//var HighDate = new Date();
	var HighDate = new Date(2008,11,22);
	var NewDate = new Date();
	
	if(nweek==nweek_durata){
		return;
	}
	//
	nw=nweek-1;
  dt=ms7day*nw;
  NewDate = dateIni.getTime() + dt;
  if (NewDate > HighDate) {
//    alert("La data finale non puo' essere successiva alla data odierna.");
    alert("La data finale non puo' essere successiva al 31/12/2008.");  // 16/02/09 per nuovo Queen Erse
    f=document.getElementById('Form2')
    f.sceltadurata.selectedIndex = 0;
    return;
  }
  //
	//alert('datefix_fin nw='+nw+' dateFin='+dateFin);
	dateFin.setTime( dateIni.getTime() + dt );
	
	nweek_durata=nweek;
	datefix_fin();
	applydates();
}
function on_datemove_ini(nweek){
  var LowDate = new Date(2005,0,1);
  //var HighDate = new Date();
  var HighDate = new Date(2008,11,22);
  var NewIniDate = new Date();
  var NewEndDate = new Date();
  
	dt=ms7day*nweek;
  NewIniDate = dateIni.getTime() + dt;
  NewEndDate = NewIniDate + ms7day*nweek_durata;
  
  if ((nweek < 0) && (NewIniDate < LowDate)) {
    alert("La data iniziale non puo' essere minore del 02/01/2005.");
    return;
  }
  if ((nweek > 0) && ((NewIniDate > HighDate) || (NewEndDate > HighDate))) {
//    alert("La data iniziale non puo' essere successiva alla data odierna.");
    alert("La data iniziale non puo' essere successiva al 31/12/2008.");    // 16/02/09 per nuovo Queen Erse
    return;
  }
	//alert('on_datemove_ini - begin - dateIni='+dateIni);
	dateIni.setTime( dateIni.getTime() + dt );
	datefix_fin();
	applydates();
}
function on_datemove_fin(nweek){
  var LowDate = new Date(2005,0,1);
  //var HighDate = new Date();
  var HighDate = new Date(2008,11,28);
  var NewIniDate = new Date();
  var NewEndDate = new Date();
  
	dt=ms7day*nweek;
  NewEndDate = dateFin.getTime() + dt;
  NewIniDate = NewEndDate - ms7day*nweek_durata;
  
  if ((nweek < 0) && ((NewEndDate < LowDate) || (NewIniDate < LowDate))) {
    alert("La data finale non puo' essere minore del 02/01/2005.");
    return;
  }
  if ((nweek > 0) && (NewEndDate > HighDate)) {
    alert("La data finale non puo' essere successiva al 31/12/2008."); // 16/02/09 per nuovo Queen Erse
    return;
  }
	//alert('on_datemove_fin - begin - dateFin='+dateFin);
	dateFin.setTime( dateFin.getTime() + dt );
	datefix_ini();
	applydates();
}
function compute_weekspan(){
	a=dateIni.getTime();
	b=dateFin.getTime();
	delta=b-a;
	weekspan=delta/ms6day;
	return weekspan;
}

function hasany_ckbox(ck){
	var n = ck.length;
	var i=0;
	for(i=0;i<n;i++){
		if (ck[i].checked){
			return true;
		}
	}
	return false;  
}
function disable_ckboxlist(ck,v){
	var n = ck.length;
	var i=0;
	for(i=0;i<n;i++){
		ck[i].disabled=v;
	}
}
function mark_ckboxlist(ck,v){
	var n = ck.length;
	var i=0;
	for(i=0;i<n;i++){
		ck[i].checked=v;
	}
}

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_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_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 WithoutSelectionValue(ss) {
for(var i = 0; i < ss.length; i++) {
	if(ss[i].selected) {
		if(ss[i].value.length) { return false; }
		}
	}
return true;
}
function NoneWithCheck(ss) {
for(var i = 0; i < ss.length; i++) {
	if(ss[i].checked) { return false; }
	}
return true;
}

function RapideNonDisponibili(SelDate, FwDate) {
  var D1 = null;
  var D2 = null;
  D1 = str2date(SelDate);  
  D2 = str2date(FwDate);  
  if (D1 < D2)
    return true;
  else
    return false;
}

