function implode(glue,input){var tmp_arr='';var key='';for(key in input){tmp_arr+=glue+input[key]}return tmp_arr}function implodeAssoc(glue,input){var tmp_arr={},cnt=0;var key='';var glue='=';for(key in input){tmp_arr[cnt]=key+glue+input[key];cnt++}return implode('&',tmp_arr)}
function onclickResetPopup() { $(document).click(function() { resetPopup(); }); }
function resetPopup() { $("#cover").hide(); $("#loading-popup").css("margin-left","-9999px"); $(document).unbind("click"); $("#temporary-div").remove(); $("#loading-popup").find("h4").html("Calculating..."); $("#loading-popup-content").show(); return false; }

function updateDisabled()
{
  $(".disabled").click(function() {return false;});
  $(".go").unbind('click');
  
  return true;
}

function singleOnly()
{
  $("#bookingform_is_single").attr('checked',true);
  $(".returnonly").addClass("disabled").removeClass("go");
  $(".singleonly").removeClass("disabled");
  extra_data['is_return'] = 0;
}

function setCopy(obj,value) {
  obj.each(function() {
    if($(this).is('input')) {
      $(this).val(value); 
    } else {
      $(this).html(value); 
    }
  });
}

function step1(is_special) {
  is_special = typeof(is_special) != 'undefined' ? is_special : 0;
  
  extra_data['vehicle'] = null;
  extra_data['is_multiple_vehicles'] = 0;
  extra_data['is_special'] = is_special;
  extra_data['quote_level'] = 0;
  
  singleOnly()
  
  calculatePrice(step1success);

  return false;
}

function step1success(php) {
  $(".special-sticker").hide();
  
  try { 
    setCopy($(".pickup_point_copy"),php[8]);
    setCopy($(".destination_copy"),php[9]);
  } catch (err) {}
  
  if (extra_data['is_special']) {
    $("#li-car-"+extra_data['vehicle']).children(".special-sticker").show();
  }
  
  gotostep(2);
  return true;  
}

function step2() { 
  extra_data['is_multiple_vehicles'] = 1;
  extra_data['quote_level'] = 1;
  
  calculatePrice(step2success);
  
  return false;
}

function step2success() {
  
  try {
    setCopy($(".pickupdate_copy"),$("#bookingform_outbounddate").val());
    setCopy($(".pickuptime_copy"),$("#pickuptimehour").val()+':'+$("#pickuptimemin").val());
    
    if (extra_data['is_return']) {
      setCopy($(".returndate_copy"),$("#bookingform_returndate").val());
      setCopy($(".returntime_copy"),$("#returntimehour").val()+':'+$("#returntimemin").val());  
    } else {
      setCopy($(".returndate_copy"),'N/A');
      setCopy($(".returntime_copy"),'N/A');      
    }
  } catch (err) {}   
  
  gotostep(3);
  
  if (extra_data['is_special']) {
    $("#li-car-"+extra_data['vehicle']).click();
  }    
  
  return true;  
}

function step3() {
  extra_data['quote_level'] = 2;
  $(".hidden_vehicle").val(getVehicleName(extra_data['vehicle']));
  calculatePrice(step3success);
}

function step3success(php) {
  
  try { 
    setCopy($(".distance_copy"),php[0]+' miles');
    setCopy($(".journey_time_copy"),php[1]);
    setCopy($(".vehicle_copy"),php[6]);
    setCopy($(".hidden_vehicle"),php[7]);
    setCopy($(".txid_copy"),php[5]);
    setCopy($(".price_copy"),'&pound;'+php[2]+'.00');
  } catch (err) {}
  
  extra_data['txid'] = php[5];
  
  gotostep(4);
  return true;
}

function step4() {
  extra_data['quote_level'] = 3;
  calculatePrice(step4success);
}

function step4success(php) {
  
  try { 
    setCopy($(".is_special_copy"),extra_data['is_special']);
    setCopy($(".hidden_is_cash"),extra_data['is_cash']);  
  } catch (err) {}
  
  updateDisabled();
  resetPopup();
  
  /* Then submit the form and commit the payment! */
  can_sumit = true;
  $("#form-booking-form").submit();
  
  return true;
}

function gotostep(bookingid) {
  
  $("#booking-process").children(".go").removeClass("active").removeClass("go").addClass("disabled");
  $("#booking-"+bookingid).addClass("active");
  
  for (i=bookingid;i>0;i=i-1) {
    $("#booking-"+i).addClass("go").removeClass("disabled");
  }
  
  updateDisabled();
  resetPopup();
  
  $('html,body').animate({scrollTop: $("#booking-"+bookingid).offset().top}, 1000);
  
  return true;
}

function calculatePrice(callback) {
  
  var php = '';
    
  var url = "/wp-content/themes/default.orange/calculatePrice.php";
  var post_data = $("#form-booking-form").serialize()+implodeAssoc('&',extra_data);
  
  $("#cover").css({"height":$(document).height(),"width":$(document).width(),"margin-left":"0px"}).show();
  $("#loading-popup").css("margin",$(window).scrollTop()-550+"px 0px 0px 0px");

	$.ajax({
	  type: 'POST',
	  url: url,
	  async: false,
	  data: post_data,
	  success: function(data) {

	 //alert(data);
	  
		php = data.split("<|>");

		if (php[0] == "E") {
			
			if (php[1] == "") {
				php[1] = "An error has occured.";
			}
			
			$("#loading-popup").find("h4").html("A booking error has occured");
			$("#loading-popup-content").hide();
			
			if(php[1] == 'Please enter a pickup date.') {
			  $("#loading-popup-content").after("<div class='content' id='temporary-div'><br />"+php[1]+"<br /><br /><button id=\"sel_cal\">Go back</button><br class='clear' /></div>");
			  $("#sel_cal").click( function () { jQuery("#form_pickup_date").click(); } );
			}
			else {

			  $("#loading-popup-content").after("<div class='content' id='temporary-div'><br />"+php[1]+"<br /><br /><button>Go back</button><br class='clear' /></div>");
			}
			
			//gotostep(1);
			callback = false;
      onclickResetPopup();

		} else if(php[0] == "M") {
		  
		  var locations = eval("(" + php[3] + ")");
  
			$("#loading-popup").find("h4").html(php[1]);
			$("#loading-popup-content").hide();  
		  $("#loading-popup-content").after("<div class='content' id='temporary-div'><br />"+locations+"<br class='clear' /></div>");
		  
 		  $("#didyoumean-form").submit(function() { 		    
  		    $("#"+php[2]).val( $('#didyoumean-form input[type=radio]:checked').val() );
  		    $("#"+php[2]).parent().prev().prev().attr('checked', true);
  		    resetPopup();
  		    step1();
  		    return false;
  		});

  		callback = false;
  		return false;
		
		} else {
		  
			if (extra_data['is_multiple_vehicles'] == 1 && extra_data['is_special'] == 0) {
			  
			  $(".vehicles").show();
			  
				var nbElem = (php.length)-1;
				var priceset = false;
				
				for(i = 0; i < nbElem ; ++i) {
					$("#car-"+i).html("&pound;"+php[i]+".00 <small>(click to book)</small>");
					
					if (php[i] == 1) {
					  $("#car-"+i).parent().hide();
					} else if(php[i] == 0) {
					  $("#car-"+i).html("Call <small>(call to book)</small>");
					} else {
					  $("#car-"+i).parent().show();
					}
					
					if (i == extra_data['vehicle']) {
				    priceset = php[i];
				  }
				}
				
				if (!priceset)
				  priceset = php[0];
				
				$("#theprice").html('&pound;'+priceset);
				
				$("#cover").hide();
				$("#loading-popup").css("margin-left","-9999px");
				$("#temporary-div").remove();
				
			} else {
			  
				var miles 			 	= php[0];
				var journey_time 	= php[1];
				var price				 	= parseInt(php[2]);
				var returnjour		= php[3];
				var vehicle				= php[4];
				var txid					= php[5];
				var clean_vehicle = php[6];
				var vehicle_var   = php[7];
				
				$(".vehicles").hide();

        if ($(".vehicle-type-"+vehicle_var).length) {
			    extra_data['vehicle'] = $(".vehicle-type-"+vehicle_var).attr("id").replace("li-car-","");
			  }
				
				$("#theprice").html('&pound;'+price);

			}
			
		}
	
	}
  });	

  if(typeof callback == 'function') { callback(php); }
	
}

function getVehicleName(id) {
  if ($("#li-car-var"+id).length)
    return $("#li-car-var"+id).val();
  else
    return null;
}

function radioRevealer(obj) {
  $(".radioreveal").each(function() {
    if($(this).prev().prev().is(':checked')) {
      $(this).removeClass("disabled");  
    } else {
      $(this).addClass("disabled");  
    }
  });  
}

$(document).ready(function() {

  can_sumit = false;

  extra_data = new Array();
  extra_data['is_multiple_vehicles'] = 0;
  extra_data['is_special']           = 0;
  extra_data['quote_level']          = 0;
  extra_data['is_vehicles_quote']    = 0;
  extra_data['is_return']            = 0;
  extra_data['vehicle']              = 0;
  extra_data['is_cash']              = 0;
  extra_data['txid']                 = 0;

  /*Cufon.replace('.journey-from');
  Cufon.replace('.journey-vehicle');
  Cufon.replace('.vehicle-name');
  Cufon.replace('h3');
  Cufon.replace('h1');
  Cufon.replace('h2');
  Cufon.replace('#booking-line');
  Cufon.replace('.cufonit');*/
  
  $(".dodatepicker").datepicker({ 
    dateFormat: 'dd-mm-yy',
    defaultDate: +1,
    minDate: +1,
    yearRange: +1
    });
  
  $("#mini-booking-form").validate();
  $("#home-slider").easySlider({
    auto: true,
    pause: 8000,
    continuous: true,
    controlsShow: false
  });
  
  $("#form-booking-form").submit(function() {
    if(can_sumit)
      return true;
    return false;
  });
  
  $("#booking-lookup").focus(function() {
    $(this).val('');
  }).blur(function() {
    if (!$(this).val().length)
      $(this).val('Enter your booking TXID ...');
  });
  
  $(".selectradio").click(function() {
    $(this).parent().prev().prev().attr({'checked': true});
    radioRevealer();
  });
  
  /* Unhide the selected radio next input */
  $(".revealnext").change(function() {
    radioRevealer();
  });

  /* This must get a normal journey price for the most basic vehicle*/
  $("#step1next").click(function() {
    step1();
    return false;
  });
  
  /* This must get the special journey price for the set car */
  $("#step1nextspecial").click(function() {
    step1(1);
    return false;
  });
  
  /* This only sets a single journey and updates the price */
  $("#step2nextsingle").click(function() {
    singleOnly();
    step2();
    return false
  });
  
  /* This only sets a return journey and updates the price */
  $("#step2nextreturn").click(function() {
    step2();
    return false
  });  
  
  /* Keep the booking price in view */
	$(window).scroll(function () {
		obj = $("#booking-price");		
		if ( $(window).scrollTop() > 550  ) {	
			obj.stop().animate({"marginTop": ($(window).scrollTop()-550)+"px"}, 'slow');
		} else {
			obj.css('margin-top',"0px");
		}
	}); 
	
	/* Go to next step for single journey */
	$("#bookingform_is_single").click(function() {
    singleOnly();
	});

  /* Go to next step for return journey */
	$("#bookingform_is_return").click(function() {
	  $(".returnonly").removeClass("disabled").addClass("go");
	  extra_data['is_return'] = 1;
	  updateDisabled();
	});
	
	/* Select a vehicle and go to next step */
	$(".vehicle-select").click(function() {
	  extra_data['vehicle'] = $(this).attr('id').replace('li-car-','');
	  extra_data['is_multiple_vehicles'] = 0;
	  step3();
	});
	
	/* Validate and go to paypal */
	$("#submitpaypal").click(function () {
	  step4();
	  return false;
	});
	
	$("#submitcash").click(function() {
	  extra_data['is_cash'] = "yes";
	  step4();
	  return false;
	});

  updateDisabled();
  radioRevealer();

});



