var mouseX = 0;
var mouseY = 0;
var verbose;
jQuery(document).ready(function(){
   $().mousemove(function(e){
      mouseX = e.pageX;
      mouseY = e.pageY;
   });
})

// Select first possible nonzero value in the array
function setOptionSelectedArray (options, selected_value_array) {
	//consolelog("searching for " + selected_value);
	//verbose = 1;
	for (var j = 0; j < selected_value_array.length; j++) {
		var selected_value = selected_value_array[j];
		if (verbose) consolelog("try option " + selected_value);
		//if (isNaN(selected_value)) continue;
		//if (selected_value == 0) continue;
		for (var i = 0; i < options.length; i++) {
			if (verbose) consolelog("opt " + options[i].value + ' ' + selected_value);
			if (options[i].value == selected_value) {
				options[i].selected = true;
				return;
			}
		}
	}
	//verbose = 0;
}


function chkDate(chk) {
	if (chk != 1) {
		document.getElementById('dropOffDay').selectedIndex = document.getElementById('pickUpDay').selectedIndex;
		document.getElementById('dropOffMon').selectedIndex = document.getElementById('pickUpMon').selectedIndex;
		document.getElementById('dropOffYear').selectedIndex = document.getElementById('pickUpYear').selectedIndex;
		document.getElementById('dropOffHour').selectedIndex = document.getElementById('pickUpHour').selectedIndex;
		document.getElementById('dropOffMin').selectedIndex = document.getElementById('pickUpMin').selectedIndex;
		updateOpenTime();
	} else {
		updateCloseTime();
	}

	var pickUpDay = $('#pickUpDay').val();
	var pickUpMon = $('#pickUpMon').val();
	var pickUpYear = $('#pickUpYear').val();
	var pickUpHour = $('#pickUpHour').val();
	var pickUpMin = $('#pickUpMin').val();

	if (pickUpMon < 10) pickUpMon = '0' + pickUpMon*1;
	if (pickUpHour < 10) pickUpHour = '0' + pickUpHour*1;
	if (pickUpMin < 10) pickUpMin = '0' + pickUpMin*1;

	var dropOffDay = $('#dropOffDay').val();
	var dropOffMon = $('#dropOffMon').val();
	var dropOffYear = $('#dropOffYear').val();
	var dropOffHour = $('#dropOffHour').val();
	var dropOffMin = $('#dropOffMin').val();

	if (dropOffMon < 10) dropOffMon = '0' + dropOffMon*1;
	if (dropOffHour < 10) dropOffHour = '0' + dropOffHour*1;
	if (dropOffMin < 10) dropOffMin = '0' + dropOffMin*1;

    var date = new Date();
    var day = date.getDate()
    var month = date.getMonth()+1
    var year = date.getFullYear()
	if (day < 10) day = '0' + day*1;
	if (month < 10) month = '0' + month*1;
	if ('' + dropOffYear + dropOffMon + (dropOffDay + 11) < '' + pickUpYear + pickUpMon + (pickUpDay + 10)) {
		$('#alertMsg').css('display', '');
	} else {
		$('#alertMsg').css('display', 'none');
	}
	if ('' + year + month + day > '' + pickUpYear + pickUpMon + pickUpDay) {
		$('#alertMsg2').css('display', '');
	} else {
		$('#alertMsg2').css('display', 'none');
	}
}
function updatePickUpLocations(productType, selected) {
	var options2 = document.getElementById('dropOffLoc').options;
	options2.length = 1;

	var options = document.getElementById('pickUpLoc').options;
	options.length = 1;

	$.getJSON('/en/process/pickuplocationsrq/' + productType, function(data) {

		var selected_id = 0;

		for(var i = 0; i < data.length; i++) {
			var newOption = new Option(data[i]['name'], data[i]['id']);
			if (data[i]['id'] == selected) {
				newOption.selected='selected';
				selected_id = data[i]['id'];
			}
			options.add(newOption);
		}
		if (selected_id != 0) {
			updateDropOffLocations(selected_id);
		}
	});
}
function updateDropOffLocations(location) {
	var options = document.getElementById('dropOffLoc').options;
	var dropoffCity = 0;
	options.length = 1;

	var params = location.split('-');
	var pickUpLocElement = document.getElementById('pickUpLoc');
	var pickUpName = pickUpLocElement.options[pickUpLocElement.selectedIndex].text;

	if (params[0] > 0 && params[1] > 0) {
		$.getJSON('/en/process/droplocationrq/' + params[1] + '/0/', function(data) {
			for(var i = 0; i < data.length; i++) {
				var newOption = new Option('-' + data[i]['name'], data[i]['id']);
				if (data[i]['id'] == params[1] && dropOffLocationId == 0) {
					newOption.selected='selected';
				}
				if (pickUpName == '-Delivery within 15 miles of branch' && data[i]['name'] == 'Same as pick up location' ) {
					newOption.selected='selected';
				} else if (data[i]['id'] == dropOffLocationId && dropOffLocationId != 0) {
					newOption.selected='selected';
				}
				options.add(newOption);
			}
			dropOffLocationId = 0;
			updateOpenTime();
		});
	} else {
		updateOpenTime();
	}
}
function updateOpenTime() {
	if (!$('#pickUpLoc').val()) return false;

	var params = $('#pickUpLoc').val().split('-');
	var openDate = $('#pickUpDay').val() + '-' + $('#pickUpMon').val() + '-' + $('#pickUpYear').val();
	var pickupHour = parseInt($('#pickUpHour').val());
	var options = document.getElementById('pickUpHour').options;

	if ($('#pickUpLoc').val() == 0 || $('#pickUpYear').val() == 0
		|| $('#pickUpMon').val() == 0 || $('#pickUpDay').val() == 0) {
		options.length = 0;
		for (var i = 0; i < 24; i++) {
			options.add(new Option(i, i));
		}
		if (options.length == 0) {
			options.add(new Option('Closed', 'Closed'));
			$('#pickUpMin').disable();
		} else {
			//$('#pickUpMin').enable();
			$('#pickUpMin').attr('disabled', '');
		}
		setOptionSelectedArray (options, new Array(pickupHour, 12));
		updateCloseTime();
	} else {
		$.getJSON('/en/process/locationopentimerq/' + params[1] + '/' + openDate, function(data) {
			options.length = 0;
			for(var i = 0; i < data.length; i++) {
				options.add(new Option(data[i], data[i]));
			}
			if (options.length == 0) {
				options.add(new Option('Closed', 'Closed'));
				$('#pickUpMin').attr('disabled', true);
			} else {
				$('#pickUpMin').attr('disabled', false);
			}
			setOptionSelectedArray (options, new Array(pickupHour, 12));
			updateCloseTime();
		});
	}
}
function updateCloseTime() {
	if (!$('#dropOffLoc').val()) return false;

	var locId = $('#dropOffLoc').val();
	var openDate = $('#dropOffDay').val() + '-' + $('#dropOffMon').val() + '-' + $('#dropOffYear').val();
	var dropOffHour = parseInt($('#dropOffHour').val());
	var options = document.getElementById('dropOffHour').options;

	if ($('#dropOffLoc').val() == 0 || $('#dropOffYear').val() == 0
		|| $('#dropOffMon').val() == 0 || $('#dropOffDay').val() == 0) {
		options.length = 0;
		for (var i = 0; i < 24; i++) {
			options.add(new Option(i, i));
		}
		if (options.length == 0) {
			options.add(new Option('Closed', 'Closed'));
			$('#dropOffMin').attr('disabled', true);
		} else {
			$('#dropOffMin').attr('disabled', false);
		}
		setOptionSelectedArray (options, new Array(dropOffHour, 12));
	} else {
		$.getJSON('/en/process/locationopentimerq/' + locId + '/' + openDate, function(data) {
			options.length = 0;
			for(var i = 0; i < data.length; i++) {
				options.add(new Option(data[i], data[i]));
			}
			if (options.length == 0) {
				options.add(new Option('Closed', 'Closed'));
				$('#dropOffMin').attr('disabled', true);
			} else {
				$('#dropOffMin').attr('disabled', false);
			}
			// Copy-paste from if-clause, Asynchrouneus getJSON!!
			setOptionSelectedArray (options, new Array(dropOffHour, 12));
		});
	}
}
function updateVehicleCount() {
	if (vehicleCount == 0) {
		$("#vehicle_count").html("Quotation Results: no vehicles found");
	} else if (vehicleCount == 1) {
		$("#vehicle_count").html("Quotation Results: found " + vehicleCount + " vehicle");
	} else {
		$("#vehicle_count").html("Quotation Results: found " + vehicleCount + " vehicles");
	}
}
function loadNextCars(filter) {
	url = '/en/process/vehiclerq/&filter=' + filter;
	$.getJSON(url, function(data) {
		for(var i = 0;i < data.length; i++) {
			$("#result").append(data[i]);
		}
		vehicleCount += data.length;
		updateVehicleCount();
		$("#loading").fadeOut('slow');
		if (vehicleCount > 0) {
			$('#found_cars').show();
		} else {
			$('#found_no_cars').show();
			$('#nothingFoundPopup').show();
		}
		$("body").css('cursor', 'auto');
		progress = -1;
	});
}
function loadCars(filter) {
	vehicleCount = 0;
	$("#result").html('');
	$("#vehicle_count").html('Searching... <img src="/images/searching.gif" alt="searching" style="vertical-align: middle;"/>');
	loadNextCars(filter);
}
function updateExtraCost(amount, extraId, vehicleId, price, maxPrice, perWhat, noDays, one) {
	if (one == true && $('#extra_' + extraId + '_' + vehicleId).attr('checked') != true) amount = 0;
	var cost = price * amount;
	if (perWhat == 'per day') cost = cost * noDays;
	if (cost > maxPrice) cost = maxPrice;
	var costBefore = $('#cost_' + vehicleId + '_' + extraId).val();
	$('#cost_' + vehicleId + '_' + extraId).val(cost + '');
	var totalCost = parseFloat($('#totalcost_' + vehicleId).val()) + parseFloat(cost) - parseFloat(costBefore);
	$('#totalcost_' + vehicleId).val(totalCost.toFixed(2));
}
function showPopup(message, pos, messageTitle) {
	if (pos) document.getElementById('priceInclPopup').style = pos;
	if (!messageTitle) messageTitle = '';
	$('#priceInc2').html(messageTitle);
	$('#priceIncl').html(message);
	$('#priceInclPopup').css('left', (mouseX + 70) + 'px');
	$('#priceInclPopup').css('top', (mouseY - 150) + 'px');
	$('#priceInclPopup').css('display', 'block');
}

function hideNoCarsPopup() {
	$('#nothingFoundPopup').hide();
}

function hidePopup() {
	$('#priceInclPopup').css('display', 'none');
}
function sendMail(mail, branchId) {
	$('#mailResult').load('/en/sendterms/' + mail + '/' + branchId);
}
function validateStep1() {
	$('#errorArea').html('');
	if ($('#alertMsg').css('display') == 'block' || $('#alertMsg2').css('display') == 'block' || $('#dropOffLoc').val() == 0 || $('#pickUpLoc').val() == 0 || $('#carGroup').val() == 0) {
		if ($('#carGroup').val() == 0) {
			$('#errorArea').html('<li>Choose vehicle</li>');
		}
		if ($('#pickUpLoc').val() == 0) {
			$('#errorArea').html('<li>Pick up: can not be less than 2 characters.</li>');
		}
		if ($('#dropOffLoc').val() == 0) {
			$('#errorArea').html($('#errorArea').html() + '<li>Drop off: can not be less than 2 characters.</li>');
		}
		if ($('#driverAge').val() == '') {
    		$('#errorArea').html($('#errorArea').html() + '<li>Driver age: is required.</li>');
		}
		$('#errorArea').html('<ul>' + $('#errorArea').html() + '</ul>');
    	return false;
	} else if ($('#driverAge').val() == '') {
    	$('#errorArea').html($('#errorArea').html() + '<li>Driver age: is required.</li>');
    	$('#errorArea').html('<ul>' + $('#errorArea').html() + '</ul>');
    	return false;
	} else if ($('#driverAge').val() < 16 || $('#driverAge').val() > 100) {
	    $('#errorArea').html($('#errorArea').html() + '<li>Driver age: is not in the range 16 through 100.</li>');
	    $('#errorArea').html('<ul>' + $('#errorArea').html() + '</ul>');
		return false;
	} else if ($('#pickUpHour').val() == 'Closed') {
		$('#errorArea').html($('#errorArea').html() + '<li>Pick up location is closed!</li>');
	} else if ($('#dropOffHour').val() == 'Closed') {
		$('#errorArea').html($('#errorArea').html() + '<li>Drop off location is closed!</li>');
	} else {
    	$('#errorArea').html('');
    	$('#inputBean').submit();
    	return true;
	}
}
function validateStep3() {
	if ($('#agree').attr('checked') == false) {
		alert('Please read terms & conditions');
		return false;
	}
	var errorMessage = '';
	if (!$('#email2').val()) errorMessage = errorMessage + '<li>Email: is required.</li>';
	if (!$('#confirmEmail').val()) errorMessage = errorMessage + '<li>Confirm email: is required.</li>';
	if ($('#confirmEmail').val() && $('#email2').val() != $('#confirmEmail').val()) errorMessage = errorMessage + '<li>Email and confirm email are different..</li>';
	if (!$('#firstname').val()) errorMessage = errorMessage + '<li>First name: is required.</li>';
	if (!$('#lastname').val()) errorMessage = errorMessage + '<li>Surname: is required.</li>';
	if (!$('#gsm').val()) errorMessage = errorMessage + '<li>Mobile number: is required.</li>';
	if (!$('#cardholder').val()) errorMessage = errorMessage + '<li>Cardholder\'s name: is required.</li>';
	if (!$('#cardExpireMon').val() || !$('#cardExpireYear').val()) errorMessage = errorMessage + '<li>Expiry date: is required.</li>';
	if (!$('#cardNum').val()) errorMessage = errorMessage + '<li>Credit card number: is required.</li>';
	if ($('#cardNum').val() && $('#cardNum').val().length != 16) errorMessage = errorMessage + '<li>Credit card number: is not a valid credit card number.</li>';
  	if (errorMessage) {
		$('#errorsList').html('<ul>' + errorMessage + '</ul>');
		return false;
  	}
  	$('#errorsList').html();
  	$('#bookingForm').submit();
  	return false;
}

function updateCardExpMon(currentYear, currentMonth) {
	var selected = $('#cardExpireMon').val();
	$('#cardExpireMon').attr('options').length = 1;
	if ($('#cardExpireYear').val() == currentYear) {
		var start = currentMonth;
	} else {
		var start = 1;
	}
	for (var i = start; i <= 12; i++) {
		if (i < 10) {
			var value = "0" + i;
		} else {
			var value = i;
		}
		var option = new Option(value, i);
		if (i == selected) {
			option.selected = "selected";
		}
		$('#cardExpireMon').attr('options').add(option);
	}
}