//$(document).ready(init_booking);

function initBooking()
{
	if($('form.vehicle_group_form').length)
   		get_group_prices_from_webservice();
	initCompleteDetailsForm();
}




function initBookingIndex() 
{

	step1 = false, step2 = false, step3 = false, step4 = false;		

	
	//call from the engine in each case corresponding	
	if (typeof(initEngine) == 'function')
		initEngine();	
		
	//common
	
  $('#user_age_ok').change(function()
  {
  	if ($(this).is(':checked')) 
  	{  	
  		$('#user_age_input_wrap').hide();
  	}
  	else {
  		$('#user_age_input_wrap').show();
  		$('#driver_age').focus().select();
  	}
  });		
  
}


//update offices for a city
function updateOffices(self)
{  
  var inputId = self.attr('id');
  var destId = '';
  
  if ('-1' != self.val())
    self.find('option[value="-1"]').remove();
  
  if ('pickup_city_id' == inputId)
    destId = 'pickup_office_id';  
  else if ('dropoff_city_id' == inputId)
    destId = 'dropoff_office_id';
    
  var office = $('#'+destId);
  
  $.ajax({
    type: 'POST',
    url: '/'+mm_frontend+'/booking/ajax_get_offices/',
    data: { id: self.val() },
    beforeSend: function() {
      office.addClass('loading');
    },
    complete: function() {        
      office.removeClass('loading');        
    },
    success: function(response) {
    	updateOfficesCallback(office, response);
  		showHiddenSelects();
    }      
  });
}


//show select if more than one action
function showHiddenSelects()
{
	var show_checkbox=false;
	$('.hidden select').each(function(){
		if($(this).find('option').length>1)
		{
			$(this).parent('.hidden').removeClass('hidden');
			show_checkbox=true;
		}
	});
	if(show_checkbox)
		$('#dropoff_same_place').parent('.hidden').removeClass('hidden');
}




function initCompleteDetailsForm()
{

	updateLabels();
	if($('#require_payment').val())
	{
		$('div#card_details').show();
		if($('div#full_or_deposit input').length>1)
			$('div#full_or_deposit').show();
	}	
	
	if ( $('#driver_like_user').is(':checked') == false)
		$('#driver_details').show();
		
	if ( $('#flight_unknown').is(':checked') == true)
		$('#flight_number_wrap').hide();		
		
	$('#flight_unknown').change(function()
	{
		if ($(this).is(':checked'))
			$('#flight_number_wrap').hide();
		else
			$('#flight_number_wrap').show();
	});
}




function initBookingUserDetails()
{
  $('#driver_like_user').live('change',function(){
    if ( $(this).is(':checked') )
      $('#driver_details').hide('fast');
    else
      $('#driver_details').show('fast');
  });
  
  
  //$('.field label').keyup(function()
  
  $('.field input[type="text"]').live('focus',function() 
  {
  	$(this).siblings('label').addClass('fade');
  });
  
  
  $('.field input[type="text"]').live('blur',function() 
  {
  	$(this).siblings('label').removeClass('fade');
  });
  
  
  $('.field input[type="text"]').live('keyup',function()
  {
    var self = $(this);
    if (self.val())
      self.siblings('label').hide();
    else
      self.siblings('label').show();
  });
  
}


function initBookingSearchResults()
{

	$('#age_over_26').change(function()
	{
		if ( !$(this).is(':checked') )
		{
			displayOverlay();
			$('#user_age_and_license').show();			
			$('#driver_age').focus().select();
		}
		else
		{
			$('#user_age_and_license').hide();
			hideOverlay();
		}
	});
	
	$('#user_age_and_license .close').click(function()
	{
		$('#age_over_26').attr('checked', 'checked');
		$('#user_age_and_license').hide();			
		hideOverlay();		
	});
	
	
	$('#update_user_age_and_license').click(function()
	{	
		updateUserAgeAndLicense();
	});

	//launch on intro
	$('#user_age_and_license input').keypress(function(e) {
    if(e.keyCode == 13) { 
    	updateUserAgeAndLicense(); 
    	e.preventDefault();
    }    
	});	
	
	$('#change_age_and_license').click(function() 
	{
		displayOverlay();
		$('#user_age_and_license').show();		
		$('#driver_age').focus().select();		
	});
	
	
	$('.book_link').live('click', function(e)
	{
		$(this).siblings('form').submit();
		e.preventDefault();
	});
	
	
}//initBookingSearchResults


function initBookingBudgetSearch() 
{

	step1 = false, step2 = false, step3 = false, step4 = false;		

	setupDateFields();

	updateRequestDataFromForm();
	
	//$('#trigger_date_change').click(function()
	$('#budget_dates').click(function()	
	{		
		//set 'search' action
		var search_action = $('#search_action').val();
		$('#budget_dates_form').attr('action', search_action);
		
		displayOverlay();
		$('#budget_dates_box').show();
	});
	
	$('#cancel_submit_dates').click(function(){
		$('#budget_dates_box').hide();
		hideOverlay();
	});
	
	refreshBudgets();

	//change city
	$('#pickup_city_id').change(function()
	{
		budgets_city_id = $(this).val();
		refreshBudgets();	
	});
	
	//change office type
	$('input[name=office_type]').change(function(){
		budgets_office_type = $(this).val();
		refreshBudgets();
	});
	
	//change payment type
	$('input[name=requires_payment]').change(function(){
		budgets_requires_payment = $(this).val();
		refreshBudgets();
	});
	
	//change dates
	$('#submit_dates').click(function()
	{
		$('.call_to_action').hide();
		$('.action_loading').show();
		$('#budget_dates_form').submit();
	});
	
	$('.next_link').live('click', function()
	{
		var row = $(this).parents('.vehicle_group_row');
		var groupId = row.attr('common_vehicle_group_id');
		
		$('#group_id').val(groupId);
		
		//set book action
		var book_action = $('#book_action').val();
		$('#budget_dates_form').attr('action', book_action);	
		
		//dates lightbox
		displayOverlay();
		$('#budget_dates_box').show();
		
		return false;
	});
	
	
}


function updateUserAgeAndLicense()
{

	var age = $('#driver_age').val();
	//var license = $('#license_time').val();
	
	$.ajax({
		type: 'POST',
		url: '/' + mm_frontend + '/booking/update_age_and_license/',
		data: { age: age }, //, license: license },
		beforeSend: function() {
			$('#user_age_and_license .ajax_loading').show();
		},
		success: function(result_html) 
		{
			if (result_html == 'OK') 
			{
				get_group_prices_from_webservice();
				$('#user_age_and_license .ajax_loading').hide();
				$('#user_age_and_license').hide();
				hideOverlay();		
				
				$('#user_age_check').hide();
				$('#user_age_text .age').text(age);
				//$('#user_age_text .license').text(license);
				$('#user_age_text').show();
	
			}
			//todo
			//else display error					
				
		}
	});

}


//(budgets) update global js variables based on form data
function updateRequestDataFromForm()
{
	budgets_city_id = $('#pickup_city_id').val();
	budgets_office_type = $('input[name=office_type]').val();
	budgets_requires_payment = $('input[name=requires_payment]').val();
}


//(budgets)
function refreshBudgets() 
{

	if (budgets_count > 0) {

		$.ajax({
			type: 'POST',
			url: budgets_ajax_url,				
			data: { city_id: budgets_city_id, office_type: budgets_office_type, requires_payment: budgets_requires_payment },
			beforeSend: function() {
				$('#loading_info .no_results').hide();		
				$('#loading_info .loaded').hide();
				$('#loading_info .loading').show();			
			},
			success: function(result_html) 
			{
				$('#loading_info .loading').hide();
				
				if (!result_html)
					$('#loading_info .no_results').show();		
				else			
					$('#loading_info .loaded').show();
					
				$('#results_container').html (result_html);
			}
		});
	
	}
	
}


//user details form
function updateLabels()
{
	$('.field input[type="text"]').each(function(){
		var self = $(this);
		if (self.val())
			self.siblings('label').hide();
	})
}


function show_terms_and_conditions_light_box(vehicle_group_id)
{
	window.scrollTo(0,0);
	if(typeof(vehicle_group_id)!='undefined')
	{
		//$('[common_vehicle_group_id="'+vehicle_group_id+'"] .terms_and_conditions_lightbox_link').hide('slow');
		$('[common_vehicle_group_id="'+vehicle_group_id+'"] #terms_and_conditions_lightbox').show('slow');
	}
	else
	{
		//$('.terms_and_conditions_lightbox_link').hide('slow');
		displayOverlay();
		$('#terms_and_conditions_lightbox').show();
	}
}


function hide_terms_and_conditions_light_box(vehicle_group_id)
{
	if(typeof(vehicle_group_id)!='undefined')
	{
		//$('[common_vehicle_group_id="'+vehicle_group_id+'"] .terms_and_conditions_lightbox_link').show('slow');
		$('[common_vehicle_group_id="'+vehicle_group_id+'"] #terms_and_conditions_lightbox').hide('slow');
	}
	else
	{
		//$('.terms_and_conditions_lightbox_link').show('slow');
		$('#terms_and_conditions_lightbox').hide();
		hideOverlay();
	}
}

function get_group_prices_from_webservice()
{	
	$.ajax({
		  timeout: 60000,
			url: "/"+mm_frontend+"/booking/ajax_get_prices/",
			beforeSend: function(){
				$('.vehicle_price').hide();
				$('#loading_info .loaded').hide();
				$('#loading_info .no_results').hide();
				$('#loading_info .loading').show();				
				$('.vehicle_group_row .vehicle_group_row_price').html("");
				$('.vehicle_group_row .vehicle_group_row_restrictions').html("");
				$('.vehicle_wrap').append('<span class="price_loading"></span>');
			},
			success: function(groupListHtml){
				$('#age_over_26').removeAttr('disabled');
				$('#results_container').html(groupListHtml);
				$("terms_and_conditions_lightbox_link").show();
				$('#loading_info .loading').hide();				
				
				if ( $('.vehicle_group_row').length )
				{
					$('.vehicle_price').show();
					$('#loading_info .loaded').show();
					//$('#user_age_and_license').show();
				}
				else
					$('#loading_info .no_results').show();
					
				$('.item_group').show();
					
				//events
				$('.vehicle_group_row	.bt').live('click', function() {
					var formId = $(this).attr('rel');
					$('#'+formId).submit();
					return false;
				});
				
//				var result_array=jsonParse(html);
//				var param_array=result_array.prices;
				
//				$('#action_result_container').html(result_array['actionResult']);

//				update_prices_in_html(param_array);
				
		  }
		});
}

function make_and_string_ampersand(string_to_convert)
{
	return string_to_convert.replace(/(and)([a-zA-Z]+;)/g,"&$2").replace(/(and)(#[0-9]+;)/g,"&$2");
}


