var _prestate = false;
var _predate = [];
var _prestateOut = false;
var _predateOut = [];

var u = 0;
var w = 0;
var pickedIn = false;
var data_arrivo = '';
var data_partenza = '';
var startDate = 0;
var endDate = 0;

var projectLength = 0;

var path = '/';

var steps = 4;

$(function() {
	$('#adulti_num,#bimbi_num,#adults_in,#kids_in').val(0);
	$('#loft_in,#date_in,#date_out').val('');
		
		_prestate = true;
		_prestateOut = true;

		$('#adulti_num').numeric();
		$('#bimbi_num').numeric();
		
		$('#adulti_num').blur( function(e) {
			$('#adulti_num').numeric();
			var number_adulti = $(this).val();
			$('.numero-adulti').html(number_adulti);
			$('#adults_in').val(number_adulti);
			if(stepsOk()){
				$('#next').css({opacity:1}).attr('disabled','');
			}
		});
		
		$('#bimbi_num').blur( function(e) {
			$('#bimbi_num').numeric();
			var number_bambini = $(this).val();
			$('.numero-bambini').html(number_bambini);
			
			$('#kids_in').val(number_bambini);
			if(stepsOk()){
				$('#next').css({opacity:1}).attr('disabled','');
			}
		});
		
		$('#a').cycle({ 
			fx:    'fade', 
			speed:  2500 
		});
		
		$('#next').click(function(){
			if($('#bill').val()!='' && $('#loft_in').val!='' && $('#date_out').val()!='' && $('#date_in').val()!='' && (+$('#adults_in').val() + +$('#kids_in').val())>0){
				$('#ajax-loader').remove();
				$('.messaggio-errore').hide();
				$('#send').css({'visibility':'visible'});
				$('#step1').fadeOut(function(){
					$('#rtotale').html($('#totale').html());
					$('.numero-bambini').html($('#bimbi_num').val());
					$('.numero-adulti').html($('#adulti_num').val());
					$('.giorni').html($('#giorni').html());
					$('#step2').fadeIn();
				});
			}
		});
		
		$('#prev').click(function(){
			$('#step2').fadeOut(function(){
				$('#step1').fadeIn();
			});
		});
		
		$('#reset').click(function(){
			location.href = urlBuild;
		});
});

	function datePick(dateText, inst) {
		pickedIn = !pickedIn;
		if(pickedIn){
			data_arrivo = '';
			data_partenza = '';
			$('.data-partenza').html('');
			$('#date_in').val('');
			$('#date_out').val('');
			$('#totale,#giorni').html('0');
			$('#bill').val(0);
			datePickIn(dateText, inst);
		}else{
			datePickOut(dateText, inst);
		}
	}
	
	function datePickIn(dateText, inst) {
		$('#flat-number-wrapper li').removeClass('free').addClass('busy');
		data_arrivo = dateText;
		
		$('.qtip').remove();
		
		$('#calendar').qtip(
	      {
	         content: {
	         	text: $('#scegli-partenza').html()
	         },
	         hide: {
	            fixed: true // Make it fixed so it can be hovered over
	         },
	         position:{
	         	corner:{
	         		target: 'topRightCenter',
	 				tooltip: 'bottomLeft',
	 				referTo: '.next-month a'
	         	}
	         },
	         style: 'myCream'
	    });
		$('#calendar').trigger('mouseover');
		
		$('#date_in').val(data_arrivo);
		var data = data_arrivo.split('/');

		startDate = new Date(data[2],data[1]-1,data[0]);
		
		$('.data-arrivo').html(dateText);
		
		if(data_arrivo!= '' && data_partenza!= ''){
			projectLength = daysBetween(startDate,endDate);
			//ciclo(startDate,endDate);
		}
	}
	function datePickOut(dateText, inst) {
		data_partenza = dateText;
		
		$('.qtip').remove();
		$('#flat-number-wrapper').qtip(
	       {
	         	content: {
	       	  	text: $('#scegli-appartamento').html()
	   	      },
	    	     hide: {
	   	         fixed: true // Make it fixed so it can be hovered over
	   	      },
	   	      position:{
	   	      	corner:{
	         		target: 'topMiddle',
	 				tooltip: 'bottomLeft',
	 				referTo: '#title-catalogo-step1'
	         	}
	       	  },
	      	   style: 'myCreamBig'
	       });
		$('#flat-number-wrapper').trigger('mouseover');
		$('#calendar').click(function(){
			$('.people_in,#flat-number-wrapper').qtip('destroy');
		});
		
		$('#date_out').val(data_partenza);
		
		var data = data_partenza.split('/');
		endDate = new Date(data[2],data[1]-1,data[0]);
		$('.data-partenza').html(dateText);
		if(data_arrivo!= '' && data_partenza!= ''){
			projectLength = daysBetween(startDate,endDate);
			if(projectLength<0){
					if(projectLength<0){
						alert(_selectOneOrMoreDays);
					}
	    			$('.data-arrivo,.data-partenza').html('');
	    			$('#date_in,#date_out').val('');
	    			$('.qtip').remove();
	    			$('#calendar').qtip(
		    	       {
		    	         content: {
	    		         	text: $('#scegli-arrivo').html()
	    	       	  },
		    	         hide: {
		    	            fixed: true // Make it fixed so it can be hovered over
	    		         },
	    	       	  position:{
		    	         	corner:{
		    	         		target: 'topRightCenter',
	    		 				tooltip: 'bottomLeft',
	    	 					referTo: '.next-month a'
		    	         	}
		    	         },
	    		         style: 'myCream'
		    	       });
		    		$('#calendar').trigger('mouseover');
			}
			checkRooms(startDate.getTime(),endDate.getTime());
		}
	}
	
	var calinit = 0;
	var calfirst = true;
	
	function selectFlat(id){
		if($('#flat-number-wrapper li[rel="'+id+'"]').hasClass('free')){
			signFlat(id);
			$('#maxp').val($('#maxp'+id).attr('rel'));
			ciclo(startDate,endDate);
		}
	}
	function arrangeFlat(id){
		$('#flat-number-wrapper li[rel="'+id+'"]').addClass('active');
	}
	function changeMonthYear(month,year,endMonth,endYear,flat) {
		$('#ajax-loader3').remove();
		var img = new Image();
		$(img).load(function(){
			$('#action').css({'position':'relative'}).append($(this));
		}).css({'position':'absolute','top':'0','left':'270px','marginTop':'8px','zIndex':'1000'}).attr('id','ajax-loader3').attr('src','/images/ajax-loader.gif');
		//alert(urlBuild+'prenotazioni.jsp?id='+flat+'&appartamento='+flat+'&da='+year+'-'+month+'-01&a='+endYear+'-'+endMonth+'-01')
		$.post(urlBuild+'prenotazioni.jsp?id='+flat+'&appartamento='+flat+'&da='+year+'-'+month+'-01&a='+endYear+'-'+endMonth+'-01',function(data,responseText){
			$('#ajax-loader3').remove();
			if(responseText=='success'){
				$('#calendar').html(data);
			}
			
		    $('#calendar').trigger('mouseover');
		});
	}
	
	function enabledDays(date) { 
		date = new Date(date);
		  var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
		  
		  var redate = new Date(y,m-1,d);
		 
		  if(selected_flat_from==null || selected_flat_to==null){
			  u = -1;
			  no_flat = true;
			  var _daysInMonth = daysInMonth(_predate[1]-1,_predate[0]);
		 		
			  for(ui=0;ui<_arrays.length;ui++){
				  
		 			var a = _arrays[ui];
		 			
			 		var x = a[0];
			 		var z = a[1];
			 		
			 		if(x!=null && z!=null && x[0]!=null && z[0]!=null){
			 			for(j=0;j<x.length;j++){
			 				var date_from = new Date(x[j][0],x[j][1]-1,x[j][2]-1);
					 		var date_to = new Date(z[j][0],z[j][1]-1,z[j][2]);
					 		if(compare(date_from,date)>=0 && compare(date_to,date)<=0){
					 			u = ui;
					 			return [true];
						 	}else{
						 		u = -1;
						 	}
				 		}
			 		}
			  }
			  
			  if(u>-1){
				  return [true];
			  }
			
		  }else{
			var t = selected_flat_to.length; if(selected_flat_from.length<t) t = selected_flat_from.length;
			
			for(ui=0;ui<_arrays.length;ui++){
				var x = _arrays[ui][0];
				var z = _arrays[ui][1];
				
				if(x==selected_flat_from && z==selected_flat_to){
					if(x==null || z == null) continue;
					for(u=0;u<x.length;u++){
						var xx = x[u]; var zz = z[u];
						var date_from = new Date(xx[0],xx[1]-1,xx[2]-1);
						var date_to = new Date(zz[0],zz[1]-1,zz[2]);
						if(compare(date_from,date)>=0 && compare(date_to,date)<=0){
						
							return [true];
						}
					}
					break;
				}
			  }
			  
			  
		  }
			return [false];
	}
	

	function cycle(id){
		$('#'+id).cycle({ 
			fx:    'fade', 
			speed:  2500 
		});
	}
	
	function daysBetween(date1, date2) {
	    var DSTAdjust = 0;
	    // constants used for our calculations below
	    oneMinute = 1000 * 60;
	    var oneDay = oneMinute * 60 * 24;
	    // equalize times in case date objects have them
	    date1.setHours(0);
	    date1.setMinutes(0);
	    date1.setSeconds(0);

	    date2.setHours(0);
	    date2.setMinutes(0);
	    date2.setSeconds(0);
	    // take care of spans across Daylight Saving Time changes
	    if (date2 > date1) {
	        DSTAdjust = 
	            (date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute;
	    } else {
	        DSTAdjust = 
	            (date1.getTimezoneOffset() - date2.getTimezoneOffset()) * oneMinute;    
	    }
	    var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust;
	    return Math.ceil(diff/oneDay);
	}
	
	function compare(date1, date2) {
	    var DSTAdjust = 0;
	    // constants used for our calculations below
	    oneMinute = 1000 * 60;
	    var oneDay = oneMinute * 60 * 24;
	    // equalize times in case date objects have them
	    date1.setHours(0);
	    date1.setMinutes(0);
	    date1.setSeconds(0);

	    date2.setHours(0);
	    date2.setMinutes(0);
	    date2.setSeconds(0);
	    // take care of spans across Daylight Saving Time changes
	    if (date2 == date1) {
	    	return 0;
	    } else if (date2 > date1) {
	        return 1
	    } else {
	        return -1;    
	    }
	}
	function isIE(){
		  return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
	}
	function ciclo(date1, date2){
		var totale = 0;
		var DSTAdjust = 0;
	    // constants used for our calculations below
	    oneMinute = 1000 * 60;
	    var oneDay = oneMinute * 60 * 24;
	    // equalize times in case date objects have them
	    date1.setHours(0);
	    date1.setMinutes(0);
	    date1.setSeconds(0);

	    date2.setHours(0);
	    date2.setMinutes(0);
	    date2.setSeconds(0);
	    
	    DSTAdjust = (date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute;
		
		var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust;
		durataSoggiorno = Math.ceil(diff/oneDay);
	    
		$('#giorni').html(durataSoggiorno);
		
	    var startInt = -1;
	    var endInt = -1;
	    var maxp = $('#maxp').val();
		var dataDDA = date1.getYear()+1900;
		var dataAAA = date2.getYear()+1900;
		if(isIE()){
			dataDDA = +dataDDA - 1900; 
			dataAAA = +dataAAA - 1900;
		}
		$('#ajax-loader2').remove();
		var img = new Image();
		$(img).load(function(){
			$('#action').css({'position':'relative'}).append($(this));
		}).css({'position':'absolute','top':'0','left':'270px','marginTop':'8px','zIndex':'1000'}).attr('id','ajax-loader2').attr('src','/images/ajax-loader.gif');
			
		$.post(urlBase+'prenotazioni_checkPrices.jsp?da='+(dataDDA+'-'+(date1.getMonth()+1)+'-'+date1.getDate())+'&a='+(dataAAA+'-'+(date2.getMonth()+1)+'-'+date2.getDate())+'&maxp='+maxp,function(data,responseText){
			$('#ajax-loader2').remove();
			if(data=="0" || data=="-"){
				alert(_selectOneOrMoreDays);
				$('#flat-number-wrapper li').removeClass('free').addClass('busy');
	    			$('.data-arrivo,.data-partenza').html('');
    				$('#date_in,#date_out').val('');
    				$('.qtip').remove();
    				$('#calendar').qtip(
		    	       {
		    	         content: {
    			         	text: $('#scegli-arrivo').html()
    	       		  },
		    	         hide: {
		    	            fixed: true // Make it fixed so it can be hovered over
    			         },
    	       		  position:{
		    	         	corner:{
	    		         		target: 'topRightCenter',
    		 				tooltip: 'bottomLeft',
    	 					referTo: '.next-month a'
		    	         	}
		    	         },
    			         style: 'myCream'
	    		       });
	    			$('#calendar').trigger('mouseover');
				$('#totale').html("-");
				$('#bill').val("-");
				$('#next').css({opacity:0.3}).attr('disabled','true');
			}else{
				totale = +data;
				$('#totale').html(totale+',00');
				$('#bill').val(totale);
				if(stepsOk()){
					$('#next').css({opacity:1}).attr('disabled','');
				}
			}	
		});
	}
	function stepsOk(){
		return ($('#adults_in').val()>0 || $('#kids_in').val()>0) && $('#loft_in').val()!='' && $('#date_in').val()!='' && $('#date_out').val()!=''; 	
	}
	function _checkRooms(da,a,entra,esci,sigla){
		if(entra==null || esci == null) return;
		var i = 0;
		while(i<entra.length){
			
			var tempFrom = entra[i];
			tempFromDate = new Date(tempFrom[0],tempFrom[1]-1,tempFrom[2]).getTime();
			var tempTo = esci[i];
			tempToDate = new Date(tempTo[0],tempTo[1]-1,tempTo[2]).getTime();
			if(da>=tempFromDate && da<tempToDate && a>tempFromDate && a<=tempToDate){
				
				$('#flat-number-wrapper li[rel="'+sigla.toLowerCase()+'"]').removeClass('busy').addClass('free');
				break;
			}else{
				
				$('#flat-number-wrapper li[rel="'+sigla.toLowerCase()+'"]').removeClass('free').addClass('busy');
			}
			
			i++;
		}
	}
	function checkEndDate(){
		var ret = false;
		for(u=0;u<_arrays.length;u++){	
			var tempFrom = _arrays[u][0][0];
			
			tempFromDate = new Date(tempFrom[0],tempFrom[1]-1,tempFrom[2]);
			
			tempFromDate.setHours(0);
			tempFromDate.setMinutes(0);
			tempFromDate.setSeconds(0);
			
		    var tempTo = _arrays[u][1][0];
		    tempToDate = new Date(tempTo[0],tempTo[1]-1,tempTo[2]+1);
		    
		    tempToDate.setHours(0);
		    tempToDate.setMinutes(0);
		    tempToDate.setSeconds(0);
			//alert([startDate,tempFromDate,endDate,tempToDate]);
		    //determino in quale intervallo cadono le date di ingresso e di uscita
		    if(compare(startDate,tempFromDate)<=0 && compare(startDate,tempToDate)>0 && compare(endDate,tempFromDate)<=0 && compare(endDate,tempToDate)>=0)
			{
		    	ret = true;
		    	break;
			}
		}
		return ret;
	}
	function checkUrlFlat(urlBuild,queryString)
	{
		if(urlBuild!=queryString){
			var lunghezza01 = urlBuild.length;
			//alert(lunghezza01);
			var lunghezza02 = queryString.length;
			//alert(lunghezza02);
			if(lunghezza01<lunghezza02){
				//passo la lettera dell'appartamento
				signFlat(queryString.charAt(lunghezza02-2));
			}
		}else{
			$('.flat-details').css('display','none');
			$('.flat-details:first').fadeIn();
		}
	}
	
	//setto acceso l'apparatamento selezionato
	function signFlat(num){
		numUP = num.toUpperCase();
		$('.qtip').remove();
		$('.people_in').qtip(
	      {
	         content: {
	         	text: $('#inserisci-persone').html()
	         },
	         hide: {
	            fixed: true // Make it fixed so it can be hovered over
	         },
	         position:{
	         	corner:{
	         		target: 'topLeftCenter',
	 				tooltip: 'bottomRight',
	 				referTo: '#adulti_num'
	         	}
	         },
	         style: 'myCreamLeft'
	    });
		$('.people_in').trigger('mouseover');
		
		$('.appartamento-letter').html(num);
		$('#flats-wrapper li').each(function(){
			$(this).hide();
		});
		
		$('#loft_in').val(num);
		
		$('#flats-wrapper div#'+num).parent().show();
		
		$('.flat-details').each(function(){
			$(this).hide();
		});
		
		$('.flat-details[rel='+numUP+']').fadeIn();
		$('#adulti_num,#bimbi_num').blur(function(){
			if($(this).val()!=''){
				$('.qtip').remove();
				$('#next').qtip(
			      {
			         content: {text: $('#next-message').html()},
			         hide: {fixed: true},
			         position:{
			         	corner:{target: 'topLeft',tooltip: 'bottomLeft',referTo: '#next'}
			         },
			         style: 'myCreamBig'
			    });
				$('#next').trigger('mouseover');
			}			
		});
		if(stepsOk()){
			$('#next').css({opacity:1}).attr('disabled','');
		}
	}

	function daysInMonth(iMonth, iYear)
	{
		return 32 - new Date(iYear, iMonth, 32).getDate();
	}
