$(document).ready(function() { 
	
	// Ajax get airports for taxi search form
	$('#t_country_id').change(function() { 
		var country_id = $(this).attr('value');
	
		$.post(site_url+'taxis/ajax_get_airports', { country_id : country_id }, function(data) {
			
			var options = '<option value="">destination airport/port</option><option value="airport_not_listed">airport not listed</option>';	
			for(var i = 0; i < data.airports.length; i++ ) {
				options += '<option value="' + data.airports[i]['id'] + '">' + data.airports[i]['title'] + '</option>';
			}
			options += '<option value="airport_not_listed">airport not listed</option>';
			
			$('#t_airport').html(options).prev().html($('#t_airport option:first').html());
						
			$('#t_resort').html('<option value="">destination resort</option><option value="">please select an airport first</option>').prev().html('destination resort');
			
			if(data.world_area_id != '1') {
				$('#t_currency option').removeAttr("selected");
				$('#t_currency option').each(function() { if($(this).val() == 'GBP') $(this).attr({'selected': 'selected'}); });
				$('#t_currency').prev().html($('#t_currency option[selected]').html());
				
				$('#t_currency').attr({disabled: "disabled"});
				$('#t_currency_wrapper').append('<div class="disable_input"></div>');
				$('.disable_input').fadeTo(10, 0.66);
			}
			else {
				$('#t_currency_wrapper .disable_input').remove();
				$('#t_currency').removeAttr("disabled");
			} 
			
		}, 'json');
	});
	
	// Ajax get routes/resorts for taxi search form
	$('#t_airport').change(function() { 
		var airport_id = $(this).attr('value');
		
		if(airport_id == 'airport_not_listed') { location.href=site_url+'taxis/bespoke_booking'; }
		
		$.post(site_url+'taxis/ajax_get_resorts', { airport_id : airport_id }, function(data) {
			
			var options = '<option value="">destination resort</option><option value="resort_not_listed">resort not listed</option>';	
			for(var i = 0; i < data.length; i++ ) {
				options += '<option value="' + data[i]['id'] + '">' + data[i]['title'] + '</option>';
			}
			options += '<option value="resort_not_listed">resort not listed</option>';
			
			$('#t_resort').html(options).prev().html($('#t_resort option:first').html());

		}, 'json');
	});
	
	// Fade out departure field if single journey selected
	$('#t_cb_single').click(function() { 
		if($('#t_direction_of_travel').attr('value') == 'to_airport') {
			fadeOutArrival();
		} else {
			fadeOutDepart();
		}
	});

	$('#t_cb_return').click(function() { 
		fadeInDepart();	
		fadeInArrival();			
	});
		
	$('#t_direction_of_travel').change(function() { 
		if($('#t_cb_single').attr('checked')) {
			if($(this).attr('value') == 'to_airport') { fadeOutArrival(); fadeInDepart(); } 
			if($(this).attr('value') == 'from_airport' || $(this).attr('value') == '') { 
				if(!$('#t_depart_wrapper').hasClass('alreadyFadedOut')) {
					fadeOutDepart(); fadeInArrival();
				}
			}
		}
	});
	
	// Redirect to bespoke booking
	$('#t_resort').change(function() { 
		if($(this).attr('value') == 'resort_not_listed') { location.href = site_url+'taxis/bespoke_booking'; }
	});
	
	// Submit form
	$('#search_form .footer a').click(function() { 
		$(this).prev().click();
		return false;
	});
	
	$('#taxis_payment_form').submit(function () {
		if(validateStep(6)) {
			$('#submit_payment').attr("value", "processing");
		}
		else { return false; }
	});	
	
	// Currency Selector (fares list)
	$('.currency_selector a').click(function () {
		
		var currency = $(this).attr('href');
				
		$.post(site_url+'home/ajax_change_currency', { currency: currency }, function() {
			location.reload();
		} ,'json');
		
		return false;
	});	
});

function fadeOutDepart()
{
	$('#t_depart_wrapper input, #t_depart_time_wrapper select').attr({disabled: "disabled"});
	$('#t_depart_wrapper, #t_depart_time_wrapper').append('<div class="disable_input"></div>');
	$('.disable_input').fadeTo(10, 0.66);
	$('#t_depart_wrapper').addClass('alreadyFadedOut');
}

function fadeInDepart()
{
	$('#t_depart_wrapper .disable_input, #t_depart_time_wrapper .disable_input').remove();
	$('#t_depart_wrapper input, #t_depart_time_wrapper select').removeAttr("disabled");
	$('#t_depart_wrapper').removeClass('alreadyFadedOut');
}

function fadeOutArrival()
{
	$('#t_arrival_wrapper input, #t_arrival_time_wrapper select').attr({disabled: "disabled"});
	$('#t_arrival_wrapper, #t_arrival_time_wrapper').append('<div class="disable_input"></div>');
	$('.disable_input').fadeTo(10, 0.66);
}

function fadeInArrival()
{
	$('#t_arrival_wrapper .disable_input, #t_arrival_time_wrapper .disable_input').remove();
	$('#t_arrival_wrapper input, #t_arrival_time_wrapper select').removeAttr("disabled");
}

function showBookingAids(panel) 
{
	$('#wrapper_booking_details').toggle();
	$('#'+panel+'_content').show();
	$('#'+panel+'_content ' + '#fares_books_scoller_area').addClass('customScrollerLight').children('.scroller').jScrollPane({showArrows:true, scrollbarWidth: 30, arrowSize: 12});
	
	$('.light_full_box .bottom').css({bottom: '1px'}).css({bottom: '0px'});
}

function close_all() 
{
	$('#hidden_details_container .hidden_details').hide();
	$('#wrapper_booking_details').show();
	
	$('.light_full_box .bottom').css({bottom: '1px'}).css({bottom: '0px'});
}

function showBookingAidsBottom(panel) 
{
	$('#bottom_extra_option').toggle();
	$('#'+panel+'_content').show();
	$('#'+panel+'_content ' + '#fares_books_scoller_area_bottom').addClass('customScrollerDark').children('.scroller').jScrollPane({showArrows:true, scrollbarWidth: 30, arrowSize: 12});
}
	
function close_allBottom() 
{
	$('#bottom_extra_details_wrapper .hidden_details').hide();
	$('#bottom_extra_option').show();
}

// Taxis payment form function
function nextTaxisStep(id) {

	if(validateStep(id)) {
		if(id == 6) {
			$('#step5_nextstage').html('Processing');
			$('#submit_payment').click();
			$('#submit_payment').attr("disabled", "true");
			$('#step5_nextstage').attr("onclick", "return false");
			
			return false;
		}
		else {
			$('.taxis_payment').hide();
			$('#step'+id).show();
			$('#bc_step'+id).addClass('green_text');
			$('#arrow_step'+id).addClass('completed');
			
			$.post(site_url+"taxis/update_details", $("#taxis_payment_form").serialize());
		}
	}
	else {
		return false;
	}
}

// Taxis payment form function
function prevTaxisStep(id) {
	$('.taxis_payment').hide();
	$('#step'+id).show();
	
	var old_id = parseInt(id) + 1;
	
	$('#bc_step'+old_id).removeClass('green_text');
	$('#arrow_step'+old_id).removeClass('completed');
	
	$.post(site_url+"taxis/update_details", $("#taxis_payment_form").serialize());
}

// Validate taxis payement steps
function validateStep(step_id) {
	var stepToValidate = parseInt(step_id) - 1;
	var validationStatus = true;
	var notEmptySelectors = null;
	var notRegExSelectors = null;
	
	// RegEx
	var REXP_EMAIL = '^[^@]+@[^@]+$';
	
	$('#taxis_payment_form .error').removeClass('error');
	
	if(stepToValidate == 1)
	{
		if($('#skip_option').val() != 1) {
			notEmptySelectors = new Array('#lead_passenger_name', '#mob_number');
		} else {
			notEmptySelectors = new Array('#lead_passenger_name');
		}
		
		notRegExSelectors = new Array(
			new Array('#email_address', REXP_EMAIL)
		);
	}
	
	if(stepToValidate == 2 && $('#skip_option').val() != 1)
	{
		if($('#depart_flight_number').length) {
			notEmptySelectors = new Array('#arrive_flight_number', '#depart_flight_number');
		} 
		else {
			notEmptySelectors = new Array('#arrive_flight_number');
		}
	}
	
	if(stepToValidate == 3 && $('#skip_option').val() != 1)
	{
		notEmptySelectors = new Array('#hotel_address');
	}
	
	if(stepToValidate == 5)
	{
		notEmptySelectors = new Array('#card_holder_name', '#card_number', '#card_address', '#card_postcode');
		
		if(empty($('#card_type').attr('value'))) {
			var $addErrorTo = $('#card_type').parent().parent().parent();
			$addErrorTo.addClass('error');
		}
		
		if(empty($('#expiry_date_mm').attr('value')) || empty($('#expiry_date_yyyy').attr('value'))) {
			var $addErrorTo = $('#expiry_date_mm').parent().parent().parent();
			$addErrorTo.addClass('error');
		}
		
		if((empty($('#start_date_mm').attr('value')) && !empty($('#start_date_yyyy').attr('value'))) 
			|| (!empty($('#start_date_mm').attr('value')) && empty($('#start_date_yyyy').attr('value')))) {
			var $addErrorTo = $('#start_date_mm').parent().parent().parent();
			$addErrorTo.addClass('error');
		}
		
		if(empty($('#cv2_number').attr('value'))) {
			var $addErrorTo = $('#cv2_number').parent();
			$addErrorTo.addClass('error');
		}
				
		if(!$('#check_terms').attr('checked')) {
			$('#check_terms_label, #check_terms_label a').css({color: "red"});
			validationStatus = false;
		}
	}
	
	if(checkValuesEntered != null) checkValuesEntered(notEmptySelectors);
	if(notRegExSelectors != null) checkRegEx(notRegExSelectors);
	
	$('#taxis_payment_form .error').each(function() {
		if($(this).length) validationStatus = false;
	});
	
	return validationStatus;
}

function checkValuesEntered(jquery) {	
	for (selector in jquery)
	{
		if(empty($(jquery[selector]).attr('value'))) {
			var $addErrorTo = $(jquery[selector]).parent();
			$addErrorTo.addClass('error');
		}
	}
}

function checkRegEx(jquery) {
	var regEx = new RegExp();
	
	for (selector in jquery)
	{
		regEx.compile(jquery[selector][1]);
		
		if(!regEx.test($(jquery[selector][0]).attr('value'))) {
			var $addErrorTo = $(jquery[selector][0]).parent();
			$addErrorTo.addClass('error');
		}
	}
}

// Simple validation for 'Tell a Friend'
function tellAFriend(code) {
	var email = $('#friends_email').attr('value');
	if(email == '') {
		return false;
	}
	else {
		
		$.post(site_url+'home/tell_a_friend/'+code, { email: email }, function() {
			$('#taf_msg').show();
			$('#friends_email').attr({value : ''});	
		} ,'json');
		
	}
}

/**
 * PHP TO JAVASCRIPT FUNCTIONS
 **/

function empty( mixed_var ) {  
    // http://kevin.vanzonneveld.net  
    // +   original by: Philippe Baumann  
    // +      input by: Onno Marsman  
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)  
    // +      input by: LH  
       
    if (mixed_var === ""   
        || mixed_var === 0     
        || mixed_var === "0"  
        || mixed_var === null    
        || mixed_var === false  
        || mixed_var === undefined      
        || ((typeof mixed_var == 'array' || typeof mixed_var == 'object') && mixed_var.length === 0) ){  
        return true;  
    }  
      
	return false;  
}
