function StartDateCheck( cb ) {
   if( cb != null && cb.selectedIndex == 0 ) { clearAll(cb.form); return true; }
   var myf = !cb ? document.formricerca : cb.form;
   var today = new Date();
   var day = today.getDate();
   var month = today.getMonth() + 1 ;
   var year = today.getFullYear();

   if(!myf) myf = document.formricerca;

   var mysd = myf.giornoinizio.selectedIndex;

   if (mysd == 0) { return true; }

   var tmp = myf.mese_anno_inizio.selectedIndex;

   if (tmp == 0) { return true; }

   var mysm = month + tmp - 1;
   var mysy = year;

   if (mysm > 12) { mysy = mysy + 1; mysm = mysm - 12; }

   if (mysd == 31) {
      if ((mysm == 4) || (mysm == 6) || (mysm == 9) || (mysm == 11)) mysd = 30;
   }

   if ((mysd > 29) && (mysm == 2)) mysd = 29;

   if ((mysy %4 != 0) && (mysm == 2) && (mysd > 28)) mysd = 28;
   
   //bug 2396
   if (mysm == month && mysy == year){
      if (mysd < day)
         mysd = day
   }// end bug 2396
   
   myf.giornoinizio.selectedIndex = mysd;
   var myed = mysd + 1;
   var myem = mysm;
   var myey = mysy;
   if (myed > 31) myed = -1;

   if (myed == 31) {
      if ((myem == 4) || (myem == 6) || (myem == 9) || (myem == 11)) myed = -1;
   }

   if ((myed > 29) && (myem == 2)) myed = -1;

   if ((myey %4 != 0) && (myem == 2) && (myed > 28)) myed = -1;
   
   if (myed == -1) { myed = 1;   tmp = tmp + 1; }

   myf.giornofine.selectedIndex = myed;
   myf.mese_anno_fine.selectedIndex = tmp;

   // set default person and room value
   if( myf.giornoinizio.selectedIndex > 0 && myf.mese_anno_inizio.selectedIndex &&
       myf.giornofine.selectedIndex > 0 && myf.mese_anno_fine.selectedIndex > 0 &&
       myf.singola.selectedIndex == 0 && myf.doppia.selectedIndex == 0 && 
	   myf.triple.selectedIndex == 0 && myf.quadruple.selectedIndex == 0 )
   {
        myf.doppia.selectedIndex = 1;
//        myf.rval.selectedIndex = 1;
   }
      
}



function EndDateCheck( cb ) {

   if( cb != null && cb.selectedIndex == 0 ) { clearAll(cb.form); return true; }

   var today = new Date();
   var day = today.getDate();
   var month = today.get = today.getMonth() + 1 ;
   var year = today.getFullYear();
   if(!cb)
      myf = document.formricerca;
   else
      myf = cb.form;

   tmp_s=myf.mese_anno_inizio.value;
    tmp_s_start=myf.mese_anno_inizio.value.indexOf('/');
   tmp_s_stop=myf.mese_anno_inizio.value.length;
    tmp_s_m=tmp_s.slice(0,tmp_s_start);
//   tmp_sMonth() + 1 ;
   var year = today.getFullYear();
   myf = document.formricerca;

   myed = myf.giornofine.selectedIndex;
   if (myed == 0) return true;

   tmp = myf.mese_anno_fine.selectedIndex;
   if (tmp == 0) return true;
   
   myem = month + tmp - 1;
   myey = year;
   if (myem > 12) { myey = myey + 1; myem = myem - 12; }

   if (myed == 31) {
      if ((myem == 4) || (myem == 6) || (myem == 9) || (myem == 11)) myed = 30;
   }
   if ((myed > 29) && (myem == 2)) myed = 29;
   if ((myey %4 != 0) && (myem == 2) && (myed > 28)) myed = 28;
   
   /** extra check on start - end date range **/
   var sd = myf.giornoinizio.value;
   var sm = tmp_s_m;
   var sy = tmp_s.slice(tmp_s_start+1);
   var startDate = new Date(sy,sm-1,sd);
   var endDate = new Date(myey,myem-1,myed);    
   var maxDelta = 90 * 24 * 3600 * 1000
   if( endDate.getTime() - startDate.getTime() > maxDelta ) {
	  endDate.setTime( startDate.getTime()+maxDelta );
	  myed = String(endDate.getDate()); while( myed.length < 2 ) myed = String("0") + myed;
	  myem = String(endDate.getMonth()+1); while( myem.length < 2 ) myem = String("0") + myem;
	  myey = String(endDate.getFullYear());
      // reset month / year combo box
	  myf.mese_anno_fine.value = String(myem) + "/" + myey;
   } 
   
   myf.giornofine.selectedIndex = myed;

}


	function testdate(who) {
		var pattern = /^(((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))$/i;
//		var email=/^(((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))$/i;
		return(pattern.test(who));
	}


	function checkForm5(formRef) {
		datainizio = formRef.giornoinizio.value +"/"+formRef.mese_anno_inizio.value;
		datafine = formRef.giornofine.value + "/" + formRef.mese_anno_fine.value;
		// controllo che i campi sono stati riempiti
		if ( datainizio == '') {
			alert('Please fill the CHECK-IN');
			formRef.giornoinizio.focus();
			return false;
		}
		if ( datafine == '') {
			alert('Please fill the CHECK-OUT');
			formRef.giornofine.focus();
			return false;
		}
		if ( testdate(datainizio) ) {
		} else {
			alert('Please insert the date in the gg/mm/aaaa format');
			formRef.giornoinizio.focus();
			return false;
		}
		
		if ( testdate(datafine) ) {
		} else {
			alert('Please insert the date in the gg/mm/aaaa format');
			formRef.giornofine.focus();
			return false;
		}
		
		giorno = new Date();
		oggi = (giorno.getYear()*10000)+((giorno.getMonth()+1)*100)+(giorno.getDate());
		prova = datainizio.split('/');
		primogiorno = (prova[2]*10000)+(prova[1]*100)+(prova[0]*1);
		prova = datafine.split('/');
		ultimogiorno = (prova[2]*10000)+(prova[1]*100)+(prova[0]*1);
		if ( oggi > primogiorno ) {
			alert('Room search service is not available for the past days.');
			formRef.giornoinizio.focus();
			return false;
		}
		
		if ( oggi > ultimogiorno ) {
			alert('Room search service is not available for the past days.');
			formRef.giornofine.focus();
			return false;
		}
		
		if ( primogiorno > ultimogiorno ) {
			alert('Check Out Date is previous the Check In Date. Please Check.');
			formRef.giornofine.focus();
			return false;
		}
		
		if (( primogiorno == oggi ) || ( primogiorno < oggi ))  {
			alert('Room search serivice is not available for today\'s date.\nPlease change the check-in date starting from tomorrow');
			formRef.giornoinizio.focus();
			return false;
		}		
		
		if (( formRef.singola.value == "" ) && ( formRef.doppia.value == "" ) && ( formRef.triple.value == "" ) && ( formRef.quadruple.value == "" ) ) {
			alert('Select at least one room.');
			return false;
		}

		return true;
	}
