


var data_inizio_small=['0101'];	
	
var data_fine_small=['1231'];


var daysToView1_small=[];	
	
var daysToView2_small=[];		
	
var nMinimoNotti_small=0;


var dateNew_small=new Date();

var mNew_small = dateNew_small.getMonth()+1, dNew_small = dateNew_small.getDate(), yNew_small = dateNew_small.getFullYear();

dNew_small=(String(dNew_small).length==1)?'0'+dNew_small:dNew_small;
mNew_small=(String(mNew_small).length==1)?'0'+mNew_small:mNew_small;
	
var dataNewShort_small=''+mNew_small+dNew_small;

var dataNewShort_small2='0101';

var anno_small=dateNew_small.getFullYear();

var annoEnd_small=anno_small;

var nextAnno_small=anno_small+1;



$j(function () {
	 
	updateFormPrenotaSmall(1);
	
	
	$j('.calendarioRange #prenota_data_arrivo_small').datepicker({
		showOn: "both",
		buttonImage: root+"img/form/calendar.gif",
		buttonImageOnly: true,
		beforeShow: customRange1_small,
		beforeShowDay: isDayToView1_small,
		onSelect: updateFormPrenotaBigCalendarSmall

    });
	
	$j('.calendarioRange #prenota_data_partenza_small').datepicker({
		showOn: "both",
		buttonImage: root+"img/form/calendar.gif", 
		buttonImageOnly: true,
		beforeShow: customRange2_small,
		beforeShowDay: isDayToView2_small,
		onSelect: updateFormPrenotaBigCalendarSmall
    });


	$j(".calendario input").datepicker({ 
		showOn: "both", 
		buttonImage: root+"img/form/calendar.gif", 
		buttonImageOnly: true 
	});
	
	$j(".dataCalendario").datepicker({ 
		showOn: "both", 
		buttonImage: root+"img/form/calendar.gif", 
		buttonImageOnly: true 
	});


	$j('#prenotaSmall').submit( function (e) {	
		thisObj=$j(this).attr('id');		  
		sendable=true;				
		sendableSecondLevel=true;
		
		
		$j('#'+thisObj+' em').each(function(intIndex) {	
				
			thisObj=$j(this);
			
			if(sendable && thisObj.text() == "*")	{	
				var next = thisObj.parent().next();					
				var nm = next.attr('id');
				var val = next.attr('value');
				var father = thisObj.parent().parent();
												
				var isCatalogo=(nm=="catalogo_id_small");
					
				if(isCatalogo){
																
					if(!val){
						
						alert(_PRENOTA_ERRORE_1);
						sendable=false;	
						next.focus();
					}
					
				}				
				
									
				var isData=(nm=="prenota_data_arrivo_small");
				
				if(isData){
					
					var data1 = $j("#prenota_data_arrivo_small").attr('value');
					var data2 = $j("#prenota_data_partenza_small").attr('value');
					
					if(!data1 || !data2){	
					
						sendable=false;	
						
						if(!data1) $j("#prenota_data_arrivo_small").focus();
						
						else if(!data2) $j("#prenota_data_partenza_small").focus();
						
					} else {
										
						var isGiusto = isRightDates_small();
												
						if(!isGiusto){
							
							alert(_PRENOTA_ERRORE_2);
							sendable=false;	
						}
					
					}
					
				}
				
			}
		});	
		
		if(sendable) {
						
			return true;		
		
		}
		return false;
		
	});		


});




	
function isDayToView1_small(date) {
	
	return isDayToView_small(1,date,daysToView1_small);
	
}

function isDayToView2_small(date) {

	return isDayToView_small(2,date,daysToView2_small);
}

function isDayToView_small(numero,date,daysToView) {	
	
	var data1 = $j("#prenota_data_arrivo_small").attr('value');
		
	var m = date.getMonth()+1, d = date.getDate(), y = date.getFullYear();
	
	d=(String(d).length==1)?'0'+d:d;
	m=(String(m).length==1)?'0'+m:m;
	
	var data2=d+'/'+m+'/'+y;
	
	var dataNum=''+y+m+d;
	
	//
	
	var num=date.getDay();
	
	var isFounded=0;
	
	if($j.inArray(num,daysToView) != -1 || !daysToView.length) isFounded=1;
	
	
	//gestione minimo 7 notti
	
	if(isFounded && numero==2 && nMinimoNotti_small && data1){
												
		isFounded=isAfterNDays_small(data1,data2);
		
	}

	//gestione periodi
	
	if(isFounded){
				
		isFounded=isBetweenDates_small(dataNum);
		
	}
	
	if(!isFounded) return [false];
			
	else return [true];
}

function isBetweenDates_small(date) {  
	
	var isFounded=0;
	
	//date=20100901;
	
	var start;
	var end;
	var startN;
	var endN;										
					
	
	var mese = date.substr(4,2);
			
	var giorno = date.substr(6,2);
	
	var dateShort = ''+mese+giorno;
	
	for(i=0; i<data_inizio_small.length; i++){
		
		start=data_inizio_small[i];
		end=data_fine_small[i];
		
		annoEnd_small=anno_small;
		
		if(end<start) annoEnd_small=nextAnno_small;
		
		start1=''+anno_small+start;
		end1=''+annoEnd_small+end;
		
		start2=''+nextAnno_small+start;
		end2=''+nextAnno_small+end;
		
		start3=''+start;
		end3=''+end;
		
		
		isFounded=((date>=start1 && date<=end1) || (date>=start2 && date<=end2) || (end3<start3 && dateShort<=end3));
		
		//alert(start2+"-"+end2);
		
		if(isFounded) return isFounded;
		
	}
	
	return isFounded;
		
}

function isAfterNDays_small(data1,data2) {  
	
	
	var foo_date1 = getDateFromFormat(data1, "d/M/y");
	var foo_date2 = getDateFromFormat(data2, "d/M/y");

	var diff_date = Math.round((foo_date2 - foo_date1)/days);
			
	var isFounded=(diff_date>=nMinimoNotti_small);
	
	return isFounded;
		
}


function customRange1_small(input){ 
	
	var dateMin = getDateMin_small();		
		
	return {
		minDate: dateMin
    };
}

function customRange2_small(input){ 

	var dayRange = 1; 
	
	
	var data_arrivo_small=$j('#prenota_data_arrivo_small').attr('value');	
	
	
	if(data_arrivo_small){
	
		var dateMin = $j("#prenota_data_arrivo_small").datepicker("getDate");
			
	} else {
						
		var dateMin = getDateMin_small();		
		
	}
		
	
	var date = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate() + dayRange);
				
		
	return {
		minDate: date
    };
}


function getDateMin_small(){	

		var dateFounded=[];		
		var modalitaPrimoPeriodoACavallo=0;
		var modalitaDataAttuale=0;
				
		for(i=0; i<data_inizio_small.length; i++){
		
			start=data_inizio_small[i];	
			end=data_fine_small[i];				
				
			if(dataNewShort_small<start) {
				
				if(start>end) {
					
					modalitaPrimoPeriodoACavallo=(dataNewShort_small>end);
					
				} else {
				
					dateFounded.push(start);
			
				}
			
			}
						
			if((dataNewShort_small>=start && dataNewShort_small<end) || (start>end && (dataNewShort_small>=start || dataNewShort_small<end))) modalitaDataAttuale=1;

		}
		
		
		
		var anno_tmp=anno_small;
		
		if(dateFounded.length==0 && !modalitaPrimoPeriodoACavallo && !modalitaDataAttuale){
		
			var dateFounded2=[];		
			
			
			for(i=0; i<data_inizio_small.length; i++){
		
				start=data_inizio_small[i];	
				end=data_fine_small[i];			
					
				if(dataNewShort_small2<start) {
										
					if(start<end) {
					
						dateFounded2.push(start);
				
					}
				}
				
			}
				
			//alert(dateFounded2.length);
			//alert(data_inizio_small.length);
						
			if(dateFounded2.length==data_inizio_small.length) {
				
				if(dateFounded2) dateFounded=dateFounded2;
										
				anno_tmp=nextAnno_small;
				
			
			}
			
		
		} 	
		
		if(modalitaPrimoPeriodoACavallo && dateFounded.length>0 && !modalitaDataAttuale){
			
			
			var dateFounded2=[];		
			
			
			for(i=0; i<data_inizio_small.length; i++){
		
				start=data_inizio_small[i];	
				end=data_fine_small[i];			
					
				if(dataNewShort_small2<start) {
								
					dateFounded2.push(start);
									
				}
				
			}
				
			//alert(dateFounded2.length);
			//alert(data_inizio_small.length);
			
			
			if(dateFounded2.length==data_inizio_small.length) {
				
				if(dateFounded2) dateFounded=dateFounded2;									
			
			}
		
		}
		
		if(modalitaPrimoPeriodoACavallo && dateFounded.length==0 && !modalitaDataAttuale){
			
			
			var dateFounded=[];		
			
			
			for(i=0; i<data_inizio_small.length; i++){
		
				start=data_inizio_small[i];	
								
				dateFounded.push(start);
									
				
			}
		
		}
		
		if(dateFounded.length==data_inizio_small.length){
			
			
			var dateFounded2=[];	

			for(i=0; i<data_inizio_small.length; i++){
	
				start=data_inizio_small[i];	
				end=data_fine_small[i];				
					
						
				if(dataNewShort_small<start) {					
						
					dateFounded2.push(start);						
				
				}
								
			}

			if(dateFounded2.length>0) dateFounded=dateFounded2;	
			
			
			var dateTmp=dateFounded.min();
			
			dateTmp=(String(dateTmp).length==3)?'0'+dateTmp:dateTmp;
			
			dateTmp=String(dateTmp);
			
			
			var mese = Number(dateTmp.substr(0,2))-1;
			
			var giorno = dateTmp.substr(2,2);
			
			var dateMin = new Date(anno_tmp, mese, giorno);
		
		} else {
						
			if(!modalitaDataAttuale){

				var dateTmp=dateFounded.min();
				
				dateTmp=(String(dateTmp).length==3)?'0'+dateTmp:dateTmp;
				
				dateTmp=String(dateTmp);
				
				
				var mese = Number(dateTmp.substr(0,2))-1;
				
				var giorno = dateTmp.substr(2,2);
				
				var dateMin = new Date(anno_tmp, mese, giorno);
			
			} else {
					
				var dateMin=new Date();
			}
			
			
		}
		
		return dateMin;
}

function updateFormPrenotaSmall(isFirstCreation){	
	
	
	var gallery=root+"moduli/prenota_small/updateFormPrenota.php?langAttuale="+lang;
	
	
	
	if(isFirstCreation) {
		
		var catalogo_id_small=$j('#catalogo_id_small').attr('value');	
		
		gallery+="&catalogo_id_small="+catalogo_id_small;
						
	} 
	
	
	$j("#selectHotelPrenotaSmall").load(gallery, function(){});

	if(isFirstCreation) {
				
		updateFormPrenotaBigSmall();
						
	} 
	
	
}

function getDatiAlbergoSmall(){
	
		var catalogo_id_small=$j('#catalogo_id_small').attr('value');		
		
		if(catalogo_id_small){
		
			var data_arrivo_small=$j('#prenota_data_arrivo_small').attr('value');
						
			var dataNumTmp='';
			
			if(data_arrivo_small) dataNumTmp=convertDate_small(data_arrivo_small).substr(4);
			
			$j.ajax({
			   type: "POST",
			   url: root+"moduli/prenota_small/getDatiAlbergo.php",
			   data: "catalogo_id_small="+catalogo_id_small+"&data_arrivo_small="+dataNumTmp,
			   async: false,
			   success: function(msg){			
			   
					//alert(msg);
					eval(msg);
					
					checkDates_small();
			   }
			});	
		
		}
}

function updateFormPrenotaBigCalendarSmall(){
	
	updateFormPrenotaBigSmall();
}

function updateFormPrenotaBigSmall(isChangingHotel){	



	var catalogo_id_small=$j('#catalogo_id_small').attr('value');	

	var data_arrivo_small=$j('#prenota_data_arrivo_small').attr('value');	
	
	var data_partenza_small=$j('#prenota_data_partenza_small').attr('value');
	
	

	if(catalogo_id_small) {
			

			getDatiAlbergoSmall();
			
	} 
	
}



function checkDates_small(){	

	var data1 = $j("#prenota_data_arrivo_small").attr('value');
	var data2 = $j("#prenota_data_partenza_small").attr('value');
				
	
	var isWeek=(daysToView1_small.length);
	
	//data arrivo
	
	if(data1){
			
		var dataNum1=convertDate_small(data1);
		
		var dtm = Date.fromString(data1);
	
		var num1 = dtm.getDay();					
		
		var isFounded=0;
		
		if($j.inArray(num1,daysToView1_small) != -1 || !isWeek) isFounded=1;
		
		
		//gestione periodi
		
		if(isFounded){
					
			isFounded=isBetweenDates_small(dataNum1);
			
		}
		
		if(!isFounded){						
			
			$j("#prenota_data_arrivo_small").attr('value','');
									
		}
	
	}
	
	//data partenza

	if(data2){
		
		var dataNum2=convertDate_small(data2);
	
		var dtm = Date.fromString(data2);
	
		var num2 = dtm.getDay();
		
		var isFounded=0;
		
		if($j.inArray(num2,daysToView2_small) != -1 || !isWeek) isFounded=1;
	
	
		//gestione minimo 7 notti
	
		if(isFounded && nMinimoNotti_small && data1){
														
			isFounded=isAfterNDays_small(data1,data2);
			
		}
		
		//gestione periodi
		
		if(isFounded){
					
			isFounded=isBetweenDates_small(dataNum2);
			
		}

		if(!isFounded || (data1 && !isRightDates_small())){						
			
			$j("#prenota_data_partenza_small").attr('value','');
									
		}
			
	}


}

function isRightDates_small(){	

	var data1 = $j("#prenota_data_arrivo_small").attr('value');
	var data2 = $j("#prenota_data_partenza_small").attr('value');
	
	var isGiusto=0;
	
	if(data1 && data2){	
						
		var dataNum1=convertDate_small(data1);		
		
		var dataNum2=convertDate_small(data2);
		
		var isGiusto = (dataNum1 < dataNum2);		
			
	}
			

	return isGiusto;
}


function convertDate_small(data) {
	
	var tmpArray=data.split('/');
	
	var giorno=tmpArray[0];
	giorno=(giorno.length==1)?'0'+giorno:giorno;
	
	var mese=tmpArray[1];
	mese=(mese.length==1)?'0'+mese:mese;
	
	
	var dataNum=tmpArray[2]+mese+giorno;
	
	return dataNum;
	
}



Array.prototype.max = function() {
    return Math.max.apply(null, this);
};

Array.prototype.min = function() {
    return Math.min.apply(null, this);
};


