// wait for the DOM to be loaded 
$(document).ready(function() { 
	
	// $('#theform').validate();

	submitBooking();
	//start form at first step
	step1();
	
	// Date picker functionality
	$("#checkin_date").datepicker({beforeShow: getCheckinMax, showOn: 'button', buttonImage: 'images/calendar-min.gif', minDate: 'd', dateFormat: 'dd-mm-yy',buttonImageOnly: true});//minimum date today.
	$("#checkout_date").datepicker({beforeShow: getCheckoutMin, showOn: 'button', buttonImage: 'images/calendar-min.gif', minDate: 'd',dateFormat: 'dd-mm-yy',buttonImageOnly: true});//minimum date today.
	
	function getCheckoutMin() { 
		var checkout = $('#checkin_date').val();
		var date = $.datepicker.parseDate("dd-mm-yy",checkout);
		return {minDate :date};
	}
	
	function getCheckinMax() { 
		var checkout = $('#checkout_date').val();
		if(checkout !='dd-mm-yyyy'){
			var date = $.datepicker.parseDate("dd-mm-yy",checkout);		
		}else{
			date = null;
		}
		
		return {maxDate :date};
	}
	
}); 


function submitBooking(){
	var options = { 
        target:        '#response',   // target element(s) to be updated with server response 
        // beforeSubmit:  validate,  // pre-submit callback 
        success:       showResponse  // post-submit callback 
    }; 

    // bind form using 'ajaxForm' 
    $('#theform').ajaxForm(options);

	
	function validate(formData, jqForm, options) {
		
	 	var queryString = $.param(formData); 
		
		// console.log(queryString)
		var error = '';
		var checkin_date = formData[0]['value'];
		var checkout_date = formData[1]['value'];
		var suite_id = formData[2]['value'];
		
		// console.log("Suite id"+suite_id);
		
		// Highlight fields with errors
		if(reg_ex_test(checkin_date,'date') != ''){
			error += reg_ex_test(checkin_date,'date');
			$('input[@name=checkin_date]').css({border:'1px',borderStyle:'solid',borderColor:'red'});
			
		}else{
			$('input[@name=checkin_date]').css({border:'1px',borderStyle:'solid',borderColor:'#999'});
			console.log('validation called.');
			
		}
		
		if(reg_ex_test(checkout_date,'date') != ''){
			error += reg_ex_test(checkout_date,'date');
			$('input[@name=checkout_date]').css({border:'1px',borderStyle:'solid',borderColor:'red'});
			
		}else{
			$('input[@name=checkout_date]').css({border:'1px',borderStyle:'solid',borderColor:'#999'});
			console.log('validation called.');
			
		}

		error += reg_ex_test(suite_id,'suite');
		
		if(error == ''){
			return true;
		}else{
			return false;
		}
		
		// clear error
		error = '';
		console.log('validation called.');
		
		
	}
	
	// post-submit callback 
	function showResponse(responseText, statusText)  { 

	    // alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + '\n\nThe output div should have already been updated with the responseText.'); 
		window.location = '/index.php?target=register';
	}
	
	
}

function prebooking(){
	
	//alert("prebooking working");
	var options = { 
        target:        '#price',   // target element(s) to be updated with server response 
        //beforeSubmit:  showRequest,  // pre-submit callback 
        success:       showResponse,  // post-submit callback 

        url:       "libs/functions/prebook.php"         // override for form's 'action' attribute 
    };
	

	
	//alert("prebooking working");
	// $('#price').append(" $700!!!");
	
	$("#theform").ajaxSubmit(options);
	
	// pre-submit callback 
	function showRequest(formData, jqForm, options) { 

	    var queryString = $.param(formData); 

	    // alert('About to submit: \n\n' + queryString); 

	    return true; 
	}
	
	// post-submit callback 
	function showResponse(responseText, statusText)  { 
	    // alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
	        // '\n\nThe output div should have already been updated with the responseText.'); 
	}
}

function suiteCheck($value){
		//alert("prebooking working");
		var options = { 
	        target:        '#pt2',   // target element(s) to be updated with server response 
	        beforeSubmit:  checkin,  // pre-submit callback 
	        success:       showResponse,  // post-submit callback 

	        url:       "libs/functions/js/suiteCheck.php"         // override for form's 'action' attribute 
	    };



		//alert("prebooking working");
		// $('#price').append(" $700!!!");

		$("#theform").ajaxSubmit(options);

		// Before  
		function checkin(formData, jqForm, options) { 

			var checkin = $('#checkin_date').val();
			var checkout = $('#checkout_date').val();
			
			if(checkout !=='dd-mm-yyyy'){
				submit = true;
			}else{
				submit = false;
			}

			return submit; 
		}

		// post-submit callback 
		function showResponse(responseText, statusText)  { 
		    // alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
		        // '\n\nThe output div should have already been updated with the responseText.'); 
		}
}


	function suiteClick($value){
		//if clicked for the second time, make sure that all selected element are hidden show all unselected.
		for(i=1;i<7;i++){
			$('#suite'+i+'-select').hide();
			$('#suite'+i).show();
		}
	
		switch($value){
			case 1:
				$('#suite1').hide();
				$('#suite1-select').show();
				break;
			case 2:
				$('#suite2').hide();
				$('#suite2-select').show();
				break;
			case 3:
				$('#suite3').hide();
				$('#suite3-select').show();
				break;
			case 4:
				$('#suite4').hide();
				$('#suite4-select').show();
				break;
			case 5:
				$('#suite5').hide();
				$('#suite5-select').show();
				break;
			case 6:
				$('#suite6').hide();
				$('#suite6-select').show();
				break;
		}

		step3();
		$('#suite_id').val($value);
	
		getBedConfigs($value);
		getOccupancy($value);
		getOccupancyChild($value);
		occupancyRules();
		//alert("suite click works");
		prebooking();
	}

	function getBedConfigs($suite_id){
		url = 'libs/functions/js/getBedConfigs.php';
		$.get(url,{id: $suite_id},
			function(data){
				$('#bed_configuration').html(data);
			});
	}
	
	function getOccupancy($suite_id){
		url = 'libs/functions/js/getOccupancy.php';
		$.get(url,{id: $suite_id},
			function(data){
				$('#extra_guests').html(data);
			});
	}
	
	function getOccupancyChild($suite_id){
		url = 'libs/functions/js/getOccupancyChild.php';
		$.get(url,{id: $suite_id},
			function(data){
				$('#children_under_12').html(data);
			});
	}
	
	function occupancyRules(){
		//read suite id value
		// $suite_id = $('#suite_id').val();
		//read number of adults val
		
		var suite_id_test = parseInt($('#suite_id').val());
		
		//Convert textfield values to int 
		var adults = parseInt($('#adults').val());
		var extra_guest = parseInt($('#extra_guests').val());
		var children = parseInt($('#children_under_12').val());
		
		//if suite is 1 then apply the following rules
		switch(suite_id_test){
			case 1:
			case 2:
				if(extra_guest > 1){
					$('#children_under_12').attr("disabled","disabled");
				}else{
					$('#children_under_12').removeAttr("disabled");
				}
				
				if(children > 1){
					$('#extra_guests').attr("disabled","disabled");
				}else{
					$('#extra_guests').removeAttr("disabled");
				}
				break;
			 
				/*if(adults > 1){
					$('#children_under_12').attr("disabled","disabled");
					$('#extra_guests').attr("disabled","disabled");
				}	else{
						$('#children_under_12').removeAttr("disabled");
						$('#extra_guests').removeAttr("disabled");
				}
				
				if(extra_guest >0){
					$('#children_under_12').attr("disabled","disabled");
				}
				
				if(children >0){
					$('#extra_guests').attr("disabled","disabled");
				}
				break;*/
			case 3:
				if(extra_guest > 1){
					$('#children_under_12').attr("disabled","disabled");
				}else{
					$('#children_under_12').removeAttr("disabled");
				}
			
				if(children > 1){
					$('#extra_guests').attr("disabled","disabled");
				}else{
					$('#extra_guests').removeAttr("disabled");
				}
				break;
			case 4:
				if(extra_guest > 1){
					$('#children_under_12').attr("disabled","disabled");
				}else{
					$('#children_under_12').removeAttr("disabled");
				}
			
				if(children > 1){
					$('#extra_guests').attr("disabled","disabled");
				}else{
					$('#extra_guests').removeAttr("disabled");
				}
				break;
			case 5:
				if(adults > 1){
					$('#children_under_12').attr("disabled","disabled");
					$('#extra_guests').attr("disabled","disabled");
				}	else{
						$('#children_under_12').removeAttr("disabled");
						$('#extra_guests').removeAttr("disabled");
				}
				
				if(extra_guest >0){
					$('#children_under_12').attr("disabled","disabled");
				}
				
				if(children >0){
					$('#extra_guests').attr("disabled","disabled");
				}
				break;
			case 6:
				$('#children_under_12').attr("disabled","disabled");
				$('#extra_guests').attr("disabled","disabled");
				break;
		}
	
		// if(adults ==2){
		// 
		// }else{
		// 	$('#pt3 > label > #children_under_12').removeAttr("disabled");
		// }
	}

/*
 *These 3 functions step1, step2, step3 enable or disable the elements in a fieldset. 
 */
function step1(){
	/*$('#pt1 >p').css("font-weight","bold");*/
	/*$('#pt1').css("background","#f9f3f0");*/
	// alert('this is working');
	//find all input elements in fieldset 2 and 3
	$('#pt3 > label > :input').attr("disabled","disabled");
}
function step2(){
	//reset previous changes made in step1
	/*$('#pt1 >p').css("font-weight","normal");*/
	/*$('#pt1').css("background","#f1ede8");*/
	
	//focus attention on step 2
	/*$('#pt2 >p').css("font-weight","bold");*/
	/*$('#pt2').css("background","white");*/
	
	$('#suite3').attr("onclick","test");
	$("#booking_overlay_step2").hide();
}

//called inside suiteClick
function step3(){
	//reset previous changes made in step2
	/*$('#pt2 >p').css("font-weight","normal");*/
	/*$('#pt2').css("background","#f1ede8");*/
	
	//focus attention on step 3
	/*$('#pt3 >p').css("font-weight","bold");*/
	/*$('#pt3').css("background","white");*/
	
	//enable fields
	$('#pt3 > label > :input').removeAttr("disabled");
	$("#booking_overlay_step3").hide();
}

