/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/******************************************** UTILITIES ************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/

/** define EN langvars **/
var langEn = new Object();
langEn.urlShuttleTransfers = '/en/shuttle-transfer/';
langEn.urlCartTransfers = '/en/transfer-reservation/';
langEn.urlIndividualTransfers = '/en/individual-transfer/';
langEn.urlMFRSTransfers = '/en/mf-rs-shuttle-transfer-reservation/'; 
langEn.errorValidDate = 'Please enter a valid date (dd.mm.yyyy)';
langEn.errorValidTime = 'Please enter valid time (hh:mm)';
langEn.selNone = 'none';
langEn.passengerSingle = 'Passenger is';
langEn.passnegerMulti = 'Passengers are';
langEn.errorPassengerNameSurname = 'Please enter name and surname of the passenger!';
langEn.errorPassengerPhone = 'Please enter mobile/cell number of the passenger!';
langEn.errorPassengerQuantity = 'Please select number of the passengers!';
langEn.errorSelectDirection = 'Please select if the passengers are coming or leaving Slovenia!';
langEn.errorFlightTimeToSlovenia = 'Please enter flight time when the passenger will arrive to Slovenia!';
langEn.errorFlightNumberToSlovenia = 'Please enter flight number on which the passenger will arrive to Slovenia!';
langEn.errorErrorDepartAirport = 'Please enter name of the airport from which the passenger departed!';
langEn.errorDestinationToSlovenia = 'Please enter address to which you wish us to drive the passengers when they arrive to Slovenia!';
langEn.errorFlightTimeFromSlovenia = 'Please enter flight time when the passenger will leave Slovenia!';
langEn.errorFlightNumberFromSlovenia = 'Please enter flight number on which the passenger will leave Slovenia!';
langEn.errorDestinationAirport = 'Please enter name of the airport to which the passenger will leave to!';
langEn.errorDepartFromSlovenia = 'Please enter address from which you wish us to pickup the passengers when they leave Slovenia!';
langEn.errorSubmit = 'There was an error while submitting entered information';
langEn.selectCountry = 'select country';
langEn.selectDeparture = 'select departure';
langEn.selectDestination = 'select destination';
langEn.selectCity = 'select city';
langEn.pleaseWait = 'please wait...';
langEn.selectPersons = 'select persons';
langEn.sum = 'SUM: ';
langEn.errorLoginMissing = "Prosimo vpisite uporabniško ime in geslo";
langEn.errorLoginInvalid = 'Vpisana kombinacija uporabniskega imena in gesla ni prava!\nProsimo poiskusite ponovno!';
langEn.errorPaymentProcess = 'There was an error processing your payment. Please try again or check with your credit card issuer.';
langEn.errorSubmitReservation = 'There was an error while trying to submit your reservation!\nPlease try again or contact us for additional informations!';
langEn.paypalRedirect = 'You will be redirected to PayPal to complete your payment.';
langEn.errorSubmitCommand = 'There was an error while processing command! Please try again or contact us!';
langEn.btnSelectPayment = 'Select payment type';
langEn.btnProceedPayment = 'Proceed to payment';
langEn.btnSubmitReservation = 'Submit reservation';
langEn.noReservations = "Your reservation sheet is empty.\n";
langEn.errorMissingHolderFirstName = "Missing first name of reservation holder.\n";
langEn.errorMissingHolderLastName = "Missing last name of reservation holder.\n";
langEn.errorMissingHolderAddress = "Missing address of reservation holder.\n";
langEn.errorMissingHolderCity = "Missing city of reservation holder.\n";
langEn.errorMissingHolderPostal = "Missing postal code of reservation holder.\n";
langEn.errorMissingHolderCountry = "Missing country of reservation holder.\n";
langEn.errorMissingHolderPhone = "Missing phone number of reservation holder.\n";
langEn.errorMissingHolderEmail = "Missing or invalid email address of reservation holder.\n";
langEn.errorRemoveAdditional = 'There was an error while trying to delete selected additional! Please try again or contact us for help.';
langEn.confirmRemoveAdditional = 'Do you really wish to remove additional %s: %s\n'+'for transfer from %s-%s to %s-%s\n'+'for %s?';
langEn.confirmRemoveTransfer = 'Do you really wish to remove transfer\nfrom %s-%s to %s-%s\nfor %s?'; 
langEn.errorTransferMissingPassengerQuantity = 'Please select your departure, destination and passenger quantity';
langEn.errorTransferMissingDepartureAddress = 'Please enter address where you want to be picked up';
langEn.errorTransferMissingDepartureDateTime = 'Please enter date and time when you wish to depart!';
langEn.errorTransferMissingDestinationAddress = 'Please enter address where you wish to be dropped off'; 
langEn.errorTransferMissingPassengerName = 'Please enter name and surname of the passenger!';
langEn.errorTransferMissingPassengerPhone = 'Please enter mobile/cell number of the passenger!'; 
langEn.btnRemoveTransfer = 'Remove transfer';
langEn.btnRemoveAdditional = 'Remove transfer additional';
langEn.lnkRoundTrip = 'Click here to add "round trip" for this transfer';
langEn.lblDateTime = 'Date & time';
langEn.lblAddress = 'Address';
langEn.lblFlight = 'Flight';
langEn.lblSUM = 'SUM:';
/************************/
/** define SI langavars */
var langSi = new Object();
langSi.urlShuttleTransfers = '/si/shuttle-prevoz/';
langSi.urlCartTransfers = '/si/rezervacija-prevoza/';
langSi.urlIndividualTransfers = '/si/individualni-prevoz/';
langSi.urlMFRSTransfers = '/si/mf-rs-shuttle-rezervacija/'; 
langSi.errorValidDate = 'Prosimo vpišite datum v pravi obliki (dd.mm.yyyy)';
langSi.errorValidTime = 'Prosimo vpišite čas v pravi obliki (hh:mm)';
langSi.selNone = 'brez';
langSi.passengerSingle = 'Potnik(i)';
langSi.passnegerMulti = 'Potniki';
langSi.errorPassengerNameSurname = 'Prosimo vpišite ime in priimek potnika!';
langSi.errorPassengerPhone = 'Prosimo vpišite GSM številko potnika!';
langSi.errorPassengerQuantity = 'Prosimo izberite število potnikov!';
langSi.errorSelectDirection = 'Prosimo izberite ali potniki prihajajo v Slovenijo ali zapuščajo Slovenijo!';
langSi.errorFlightTimeToSlovenia = 'Prosimo vpišite čas leta kdaj potniki prispejo v Slovenijo!';
langSi.errorFlightNumberToSlovenia = 'Prosimo vpišite oznako leta s katerim potniki prispejo v Slovenijo!';
langSi.errorErrorDepartAirport = 'Prosimo vpišite naziv letališča iz katerega potniki vzletijo!';
langSi.errorDestinationToSlovenia = 'Prosimo vpišite naslov kamor želite da peljemo potnike, ko prispejo v Slovenijo!';
langSi.errorFlightTimeFromSlovenia = 'Prosimo vpišite čas leta kdaj potniki zapuščajo Slovenijo!';
langSi.errorFlightNumberFromSlovenia = 'Prosimo vpišite oznako leta s katerim potniki zapuščajo Slovenijo!';
langSi.errorDestinationAirport = 'Prosimo vpišite oznako letališča kamor letijo potniki!';
langSi.errorDepartFromSlovenia = 'Prosimo vpišite naslov kjer naj poberemo potnike ki zapuščajo Slovenijo!';
langSi.errorSubmit = 'Prišlo je do napake pri pošiljanju podatkov';
langSi.selectCountry = 'izberi državo';
langSi.selectDeparture = 'izberi odhodno mesto';
langSi.selectDestination = 'izberi destinacijo';
langSi.selectCity = 'izberi mesto';
langSi.pleaseWait = 'prosimo počakajte...';
langSi.selectPersons = 'izberi št. oseb';
langSi.sum = 'Skupaj: ';
langSi.errorLoginMissing = "Prosimo vpisite uporabniško ime in geslo";
langSi.errorLoginInvalid = 'Vpisana kombinacija uporabniskega imena in gesla ni prava!\nProsimo poiskusite ponovno!';
langSi.errorPaymentProcess = 'Prišlo je do napake pri procesiranju plačila! Prosimo poiskusite ponovno ali preverite težavo pri izdajatelju kartice.';
langSi.errorSubmitReservation = 'There was an error while trying to submit your reservation!\nPlease try again or contact us for additional informations!';
langSi.paypalRedirect = 'You will be redirected to PayPal to complete your payment.';
langSi.errorSubmitCommand = 'There was an error while processing command! Please try again or contact us!';
langSi.btnSelectPayment = 'Izberi način plačila';
langSi.btnProceedPayment = 'Nadaljuj s plačilom';
langSi.btnSubmitReservation = 'Pošlji rezervacijo';
langSi.noReservations = "Vaš rezervacijski list je prazen.\n";
langSi.errorMissingHolderFirstName = "Manjka ime nosilca rezervacije.\n";
langSi.errorMissingHolderLastName = "Manjka priimek nosilca rezervacije.\n";
langSi.errorMissingHolderAddress = "Manjka naslov nosilca rezervacije.\n";
langSi.errorMissingHolderCity = "Manjka mesto nosilca rezervacije.\n";
langSi.errorMissingHolderPostal = "Manjka poštna številka nosilca rezervacije.\n";
langSi.errorMissingHolderCountry = "Manjka država nosilca rezervacije.\n";
langSi.errorMissingHolderPhone = "Manjka telefonske številka nosilca rezervacije.\n";
langSi.errorMissingHolderEmail = "Manjka naslov elektronske pošte nosilca rezervacije.\n";
langSi.errorRemoveAdditional = 'Prišlo je do napake pri brisanju zapisov! Prosimo poiskusite ponovno ali nas kontaktirajte.';
langSi.confirmRemoveAdditional = 'Do you really wish to remove additional %s: %s\n'+'for transfer from %s-%s to %s-%s\n'+'for %s?';
langSi.confirmRemoveTransfer = 'Ali želite res izbrisati prevoz\nod %s-%s do %s-%s\n za %s?'; 
langSi.errorTransferMissingPassengerQuantity = 'Prosimo izberite odhodno in ciljno mesto ter število potnikov';
langSi.errorTransferMissingDepartureAddress = 'Prosimo vpišite naslov kjer želite da Vas poberemo';
langSi.errorTransferMissingDepartureDateTime = 'Prosimo vpišite datum in čas kdaj želite da Vas poberemo!';
langSi.errorTransferMissingDestinationAddress = 'Prosimo vpišite ciljni naslov kamor želite da Vas peljemo!'; 
langSi.errorTransferMissingPassengerName = 'Prosimo vpišite ime in priimek potnika!';
langSi.errorTransferMissingPassengerPhone = 'Prosimo vpišite GSM številko potnika!'; 
langSi.btnRemoveTransfer = 'Odstrani prevoz';
langSi.btnRemoveAdditional = 'Odstrani dodatek k prevozu';
langSi.lnkRoundTrip = 'Klikni tukaj da dodaš povratni prevoz';
langSi.lblDateTime = 'Datum in čas';
langSi.lblAddress = 'Naslov';
langSi.lblFlight = 'Let';
langSi.lblSUM = 'Skupaj:';
/********************/

/** select lang **/
var lang = langEn;
/*****************/

function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
//				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
			       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
			       if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
			       if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
			       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
			       if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}

var uiPickerZCount = 0;
var uiPickerZInterval = null;
var datePickerSettings = { 
	showOtherMonths: true,	
	selectOtherMonths: true, 
	minDate: +1,
	beforeShow: function(input, inst) {
		uiPickerZCount = 0;
		uiPickerZInterval = setInterval('uiPickerZ()', 100);
	},
	onChangeMonthYear: function(year, month, inst) {
		uiPickerZCount = 0;
		uiPickerZInterval = setInterval('uiPickerZ()', 100);
	}
};

function uiPickerZ() {
	uiPickerZCount++;
	$('#ui-datepicker-div').find('a').each(function(idx,elem) { $(elem).css('z-index', '99'); });
	if (uiPickerZCount >= 10) clearInterval(uiPickerZInterval);
}
function encodeDateTime(dat, tim, humanReadable) {
	var rxDate = /^\d{1,2}\.\d{1,2}\.\d{4}$/;
	var rxTime = /^\d{1,2}\:\d{1,2}$/;
	var str = '';
	str = $('#'+dat).val();
	if (!str.match(rxDate)) { alert(lang.errorValidDate); return; }
	str = $('#'+tim).val();
	if (!str.match(rxTime)) { alert(lang.errorValidTime); return; }
	str = $('#'+dat).val();
	var d = new Date();
	d.setYear(2000); d.setDate(1); d.setMonth(0); d.setHours(0); d.setMinutes(0);
	var dD = str.substr(0,str.indexOf('.'));
	str = str.substr(str.indexOf('.')+1);
	var dM = str.substr(0,str.indexOf('.'));
	var dY = str.substr(str.indexOf('.')+1);
        if (dM.substr(0,1) == '0') { dM = dM.substr(1); }
        if (dD.substr(0,1) == '0') { dD = dD.substr(1); }
	d.setYear(parseInt(dY));
	d.setMonth(parseInt(dM)-1);
	d.setDate(parseInt(dD));
	str = $('#'+tim).val();
	d.setSeconds(0); d.setMilliseconds(0);
	var tH = str.substr(0,str.indexOf(':'));
	var tM = str.substr(str.indexOf(':')+1);
        if (tM.substr(0,1) == '0') { tM = tM.substr(1); }
        if (tH.substr(0,1) == '0') { tH = tH.substr(1); }
	d.setHours(parseInt(tH)); 
	d.setMinutes(parseInt(tM));
	var tTime = new Date().getTime()+(24*3600*1000);
	var t = new Date(tTime);
	t.setHours(0);
	t.setMinutes(0);
	t.setSeconds(0);
	if (d <= t) return null;
	if (!humanReadable) return d.format('yyyy-mm-dd HH:MM:ss');
	if (humanReadable) return d.format('dd.mm.yyyy HH:MM:ss');
}

function validEmail(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}

function disableForm(eName) {
	$('#'+eName).attr('disabled', 'true');
	$('#'+eName+' input').each(function(index, elem) { $(elem).attr('disabled', 'true'); });
	$('#'+eName+' select').each(function(index, elem) { $(elem).attr('disabled', 'true'); });
	$('#'+eName+' textarea').each(function(index, elem) { $(elem).attr('disabled', 'true'); });
}

function enableForm(eName) {
	$('#'+eName).removeAttr('disabled');
	$('#'+eName+' input').each(function(index, elem) { $(elem).removeAttr('disabled'); });
	$('#'+eName+' select').each(function(index, elem) { $(elem).removeAttr('disabled'); });
	$('#'+eName+' textarea').each(function(index, elem) { $(elem).removeAttr('disabled'); });
}

/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*************************************** GENERAL READ FUNCTIONS ****************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
var phoneCodes = [];
$(document).ready(function(){
	if ($('select[rel=call_code]').length) {
		$.getJSON('/transfers.0.904.pccms', function(data) {
			$('select[rel=call_code]').each(function(index, elem) {
				$(elem).removeOption(/./);
				for (var i = 0; i < data.length; i++) {
					$(elem).addOption(data[i], data[i], false);
				}
				for (var j = 0; j < phoneCodes.length; j++) {
					if (phoneCodes[j].name == $(elem).attr('id')) $(elem).val(phoneCodes[j].code);
				}
			});
		});
	}
});

/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/******************************************* SHUTTLE FORM **********************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
$(document).ready(function(){ 
	if ($('#shuttleForm').length) {
		/* clear form */
		$('input[type=text]', '#shuttleForm').each(function () {
			$(this).val('');
		});
		$('input[name=\'smer\']').each(function() { 
			$(this).removeAttr("checked"); 
		}); 
		$('#odhodDatum').datepicker(datePickerSettings);
		$('#prihodDatum').datepicker(datePickerSettings);
		shuttleChange(); 
		changeSmer();
	}
	if (!$('#shuttleAdditionals').length) return;
	$.getJSON('/transfers.0.903.pccms?_r='+getRnd()+'&idtransfergroup=2', function(data) {
		transferAdditionalsData = data;
		if (data.length) $('#shuttleAdditionals').show();
		var addHtml = '';
		for (var j = 0; j < data.length; j++) {
			addHtml = '';
			var gTitle = data[j].group_title;
			if ((typeof data[j].group_langs.si !== 'undefined') && curLang == 'si') gTitle = data[j].group_langs.si;
			if ((typeof data[j].group_langs.en !== 'undefined') && curLang == 'en') gTitle = data[j].group_langs.en;
			addHtml = addHtml + '<div class="fieldRow"><div class="fieldTitle"><label for="additionalRow'+data[j].idgroup+'">'+gTitle+'</label></div>';
			addHtml = addHtml + '<div id="fieldInput"><select name="additional_'+data[j].idgroup+'" id="additionalRow'+data[j].idgroup+'" rel="transfer_additional" onChange="selectSAdditional(this);">';
			addHtml = addHtml + '<option value="NULL">'+lang.selNone+'</option>';
			for (var k = 0; k < data[j].prices.length; k++) {
				var aTitle = data[j].prices[k].title;
				if ((typeof data[j].prices[k].langs !== 'undefined') && (typeof data[j].prices[k].langs.si !== 'undefined') && curLang == 'si') aTitle = data[j].prices[k].langs.si;
				if ((typeof data[j].prices[k].langs !== 'undefined') && (typeof data[j].prices[k].langs.en !== 'undefined') && curLang == 'en') aTitle = data[j].prices[k].langs.en;
				addHtml = addHtml + '<option value="'+data[j].prices[k].id+'">'+aTitle+' ('+data[j].prices[k].price.toFixed(2)+' &euro;)</option>';
			}
			addHtml = addHtml + '</select></div></div>';
			$('#shuttleAdditionals').after(addHtml);
		}
	});
});
			
function shuttleChange() {
	$('#shuttlePrice').html('= '+($('#potnikStevilo').val() * 9).toFixed(2)+' &euro;');
	if ($('#potnikStevilo').val()==1) { $('#lblShuttleSmer').html(lang.passengerSingle); } else { $('#lblShuttleSmer').html(lang.passengerMulti); }
	shuttleCalc();	
}

function changeSmer() {
	$('#shuttleArrive').hide();
	$('#shuttleDepart').hide();
	$('#shuttleAdditional').hide();
	if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 1) {
		$('#shuttleArrive').show();					
		$('#shuttleAdditional').show();
	} else
	if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 2) {
		$('#shuttleDepart').show();					
		$('#shuttleAdditional').show();
	}
}

function selectSAdditional(elem) {
	shuttleCalc();
}

function shuttleCalc() {
	var transferPrice = 0;
	var additionalPrice = 0;
	/* get transfer price first */
	var depCountry = $('#TodhodDrzava').val();
	var depCity = $('#TodhodMesto').val();
	var desCountry = $('#TprihodDrzava').val();
	var desCity = $('#TprihodMesto').val();
	var pasNo = $('#TpotnikStevilo').val();
	if (!$('#shuttleSUM').length) return;
	transferPrice=($('#potnikStevilo').val() * 9);
	/* get additional prices */
	$('select[rel=transfer_additional]').each(function(index, elem) {
		if ($(elem).val() != "NULL") {
			for (var j = 0; j < transferAdditionalsData.length; j++) {
				for (var k = 0; k < transferAdditionalsData[j].prices.length; k++) {
					if (transferAdditionalsData[j].prices[k].id == $(elem).val()) {
						additionalPrice = additionalPrice + transferAdditionalsData[j].prices[k].price;
					}
				}
			}
		}
	});
	/* output sum */
	$('#shuttleSUM').html(lang.lblSUM+' '+(transferPrice+additionalPrice).toFixed(2)+' &euro;');
}

function shuttleGo() {
	console.log('check if passenger data entered');
	if (!$('#potnikNaziv').val()) { console.warn('Missing name/surname'); alert(lang.errorPassengerNameSurname); return false; }
	if (!$('#potnikGSM').val()) { console.warn('Missing passenger gsm'); alert(lang.errorPassengerPhone); return false; }
	if (!$('#potnikStevilo').val()) { console.warn('Missing no. passengers'); alert(lang.errorPassengerQuantity); return false; }
	console.log('check if direction selected');
	if (!($('input[name=\'smer\']:checked', '#shuttleForm').val() == 1 || $('input[name=\'smer\']:checked', '#shuttleForm').val() == 2)) {
		console.warn('Missing direction'); 
		alert(lang.errorSelectDirection);
		return false;
	}
	console.log('check if data entered');
	var shuttleDateTime = '0000-00-00 00:00:00';
	var note = '';
	var destAddress = '';
	var pickupAddress = '';
	var passengerPhone = '';
	if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 1) {
		/* prihod */
		if (!$('#prihodCas').val() || !$('#prihodDatum').val()) { alert(lang.errorFlightTimeToSlovenia); return false; }
		/* if (!$('#prihodOznaka').val()) { alert(lang.errorFlightNumberToSlovenia); return false; } */ /* not mandatory */
		if (!$('#prihodLetalisce').val()) { alert(lang.errorDepartAirport); return false; }
		if (!$('#prihodNaslov').val()) { alert(lang.errorDestinationToSlovenia); return false; }
		shuttleDateTime=encodeDateTime('prihodDatum', 'prihodCas', false);
		destAddress = $('#prihodNaslov').val();
		note=lang.lblFlight+': '+$('#prihodOznaka').val()+' / '+$('#prihodLetalisce').val()+' / '+encodeDateTime('prihodDatum', 'prihodCas', true);
		if (!shuttleDateTime) { alert(lang.errorFlightTimeToSlovenia); return false; }
	}
	if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 2) {
		/* prihod */
		if (!$('#odhodCas').val() || !$('#odhodDatum').val()) { alert(lang.errorFlightTimeFromSlovenia); return false; }
		/* if (!$('#odhodOznaka').val()) { alert(lang.errorFlightNumberFromSlovenia); return false; } */ /* not mandatory */
		if (!$('#odhodLetalisce').val()) { alert(lang.errorDestinationAirport); return false; }
		if (!$('#odhodNaslov').val()) { alert(lang.errorDepartFromSlovenia); return false; }
		shuttleDateTime=encodeDateTime('odhodDatum', 'odhodCas', false);
		pickupAddress = $('#odhodNaslov').val();
		note=lang.lblFlight+': '+$('#odhodOznaka').val()+' / '+$('#odhodLetalisce').val()+' / '+encodeDateTime('odhodDatum', 'odhodCas', true);
		if (!shuttleDateTime) { alert(lang.errorFlightTimeFromSlovenia); return false; }
	}
	if (!shuttleDateTime) return false;
	passengerPhone = $('#potnikGSMCode').val()+'-'+$('#potnikGSM').val();
	console.log('submit shuttle');
	/* add to cart */
	/* prepare add cart request */
	$('#submitDiv').hide();
	$('#submitWait').show();
	var addCartUrl = '/transfers.0.11.pccms?_r='+getRnd()+'&';
	addCartUrl = addCartUrl + 'transfer_id='+$('input[name=\'smer\']:checked', '#shuttleForm').val();
	if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 2) {	
		addCartUrl = addCartUrl + '&destination_time='+shuttleDateTime;
	} else {
		addCartUrl = addCartUrl + '&pickup_time='+shuttleDateTime;
	}
	addCartUrl = addCartUrl + '&passenger_name='+encodeURIComponent($('#potnikNaziv').val());
	addCartUrl = addCartUrl + '&passenger_phone='+encodeURIComponent(passengerPhone);
	addCartUrl = addCartUrl + '&pickup_address='+encodeURIComponent(pickupAddress);
	addCartUrl = addCartUrl + '&destination_address='+encodeURIComponent(destAddress);
	addCartUrl = addCartUrl + '&quantity='+$('#potnikStevilo').val();
	if ($('#shuttleAdditional').length && typeof($('#shuttleDodatki:checked').val()) !== "undefined") {
		// go to shuttle screen!
		var rtURL = lang.urlShuttleTransfers+'?';
  	rtURL = rtURL + 'destination_address='+encodeURIComponent(destAddress)+'&';
	  rtURL = rtURL + 'pickup_address='+encodeURIComponent(pickupAddress)+'&';
		if ($('input[name=\'smer\']:checked', '#shuttleForm').val() == 2) {	
			rtURL = rtURL + 'flight_number='+$('#odhodOznaka').val()+'&';
			rtURL = rtURL + 'flight_airport='+$('#odhodLetalisce').val()+'&';
			rtURL = rtURL + 'flight_datetime='+encodeDateTime('odhodDatum', 'odhodCas', true)+'&';
			rtURL = rtURL + 'destination_time='+shuttleDateTime;
		} else {
			rtURL = rtURL + 'flight_number='+$('#prihodOznaka').val()+'&';
			rtURL = rtURL + 'flight_airport='+$('#prihodLetalisce').val()+'&';
			rtURL = rtURL + 'flight_datetime='+encodeDateTime('prihodDatum', 'prihodCas', true)+'&';
			rtURL = rtURL + 'pickup_time='+shuttleDateTime;
		}
	  rtURL = rtURL + '&idgroup=2&id='+$('input[name=\'smer\']:checked', '#shuttleForm').val();
	  rtURL = rtURL + '&passenger_name='+encodeURIComponent($('#potnikNaziv').val());
	  rtURL = rtURL + '&passenger_phone='+encodeURIComponent(passengerPhone);
	  rtURL = rtURL + '&passengers=1';
	  rtURL = rtURL + '&quantity='+$('#potnikStevilo').val()+'&additionals=1';
  	parent.location.href = rtURL;
		return;
	}
	$.getJSON(addCartUrl, function(data) { 
		if (typeof(data.error) == 'undefined' && data.cart_content_id > 0) {
			console.debug('set cookie '+data.cart_ident);
			$.cookie('_pccms_cart_ident', data.cart_ident, {path: '/'} );
			
			console.log('add additionals if any');
			/* add additionals*/
			$('select[rel=transfer_additional]').each(function(index, elem) {
				if ($(elem).val() != "NULL") {
					$.ajax({url: '/transfers.0.16.pccms?_r='+getRnd()+'&cart_content_id='+data.cart_content_id+'&additional_id='+$(elem).val(), async: false});
				}
			});
				
			console.log('add note');
			/* add note to this content */
			if (note) {
				var addNoteUrl = '/transfers.0.18.pccms?_r='+getRnd()+'&cart_content_id='+data.cart_content_id+'&note='+note; 
				$.getJSON(addNoteUrl, function() {
					console.log('switch location');
					parent.location.href=lang.urlCartTransfers;
				});
			}	else {
				console.log('switch location');
				parent.location.href=lang.urlCartTransfers;
			}
		} else { 
			$('#submitDiv').show();
			$('#submitWait').hide();
			alert(lang.errorSubmit+' ('+data.error.code+'/'+data.error.msg+')'); 
		}
	});
}

/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/***************************************** INDIVIDUAL TRANSFER *****************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
var transferDataDepartCountry = {};
var transferDataDepartCity = {};
var transferDataDestCountry = {};
var transferDataDestCity = {};
var transferDataPrices = {};
var transferAdditionalsData = {};
var transferSelected = 0;

function clearTransferForm(source) {
	if (source == 'country') {
		transferDataDepartCity = {};
		transferDataDestCountry = {};
		transferDataDestCity = {};
		transferDataPrices = {};
		$('#TodhodMesto').removeOption(/./);
		$('#TprihodDrzava').removeOption(/./);
		$('#TprihodMesto').removeOption(/./);
		$('#TpotnikStevilo').removeOption(/./);
		$('#TodhodMesto').addOption('NULL', lang.selectCountry);
		$('#TprihodDrzava').addOption('NULL', lang.selectDeparture);
		$('#TprihodMesto').addOption('NULL', lang.selectDeparture);
		$('#TpotnikStevilo').addOption('NULL', lang.selectDeparture);
	}
	if (source == 'city') {
		transferDataDestCountry = {};
		transferDataDestCity = {};
		transferDataPrices = {};
		$('#TprihodDrzava').removeOption(/./);
		$('#TprihodMesto').removeOption(/./);
		$('#TpotnikStevilo').removeOption(/./);
		$('#TprihodDrzava').addOption('NULL', lang.selectDeparture);
		$('#TprihodMesto').addOption('NULL', lang.selectDeparture);
		$('#TpotnikStevilo').addOption('NULL', lang.selectDeparture);
	}
	if (source == 'country_dest') {
		transferDataDestCity = {};
		transferDataPrices = {};
		$('#TprihodMesto').removeOption(/./);
		$('#TpotnikStevilo').removeOption(/./);
		$('#TprihodMesto').addOption('NULL', lang.selectCountry);
		$('#TpotnikStevilo').addOption('NULL', lang.selectDestination);
	}
	if (source == 'city_dest') {
		transferDataPrices = {};
		$('#TpotnikStevilo').removeOption(/./);
		$('#TpotnikStevilo').addOption('NULL', lang.selectCity);
	}
	$('#transferPrice').html('');
}

function transferChangeDepartDrzava() {
	var selCountry = $('#TodhodDrzava').val();
	clearTransferForm('country');
	if (selCountry == 'NULL') return;
	$('#TodhodMesto').removeOption(/./);
 	$('#TodhodMesto').addOption('NULL', lang.pleaseWait);
 	$.getJSON('/transfers.0.902.pccms?_r='+getRnd()+'&idtransfergroup=1&depart_country='+selCountry, function(data) {
		$('#TodhodMesto').removeOption(/./);
	 	$('#TodhodMesto').addOption('NULL', lang.selectCity);
	 	transferDataDepartCity = data;
	 	for (var i = 0; i<data.length; i++) {
			$('#TodhodMesto').addOption(data[i], readStr(data[i]), false);
	 	}
	 	if ($.url.param('round_trip') == "1") {
			$('#TodhodMesto').val($.url.param('pickup_city'));
			$('#TodhodMesto').change();
	 	} else
 		if (transferSelected) {
			$('#TodhodMesto').val($.url.param('depart_city'));
			$('#TodhodMesto').change();
	 	}
 	});
}

function transferChangeDepartMesto() {
	var selCountry = $('#TodhodDrzava').val();
  var selCity = $('#TodhodMesto').val();
  clearTransferForm('city');
	if (selCity == 'NULL') return;
	$('#TprihodDrzava').removeOption(/./);
 	$('#TprihodDrzava').addOption('NULL', lang.pleaseWait);
 	$.getJSON('/transfers.0.902.pccms?_r='+getRnd()+'&idtransfergroup=1&depart_country='+selCountry+'&depart_city='+encodeURIComponent(selCity), function(data) {
		$('#TprihodDrzava').removeOption(/./);
	 	$('#TprihodDrzava').addOption('NULL', lang.selectCountry);
	 	transferDataDestCountry = data;
	 	for (var i = 0; i<data.length; i++) {
			$('#TprihodDrzava').addOption(data[i].ident, readStr(data[i].title), false);
	 	}
	 	if ($.url.param('round_trip') == "1") {
			$('#TprihodDrzava').val($.url.param('destination_country'));
			$('#TprihodDrzava').change();
	 	} else
 		if (transferSelected) {
			$('#TprihodDrzava').val($.url.param('dest_country'));
			$('#TprihodDrzava').change();
	 	}
 	});
}

function transferChangeDestDrzava() {
	var depCountry = $('#TodhodDrzava').val();
	var depCity = $('#TodhodMesto').val();
	var desCountry = $('#TprihodDrzava').val();
	clearTransferForm('country_dest');
	if (desCountry == 'NULL') return;
	$('#TprihodMesto').removeOption(/./);
	$('#TprihodMesto').addOption('NULL', lang.pleaseWait);	
 	$.getJSON('/transfers.0.902.pccms?_r='+getRnd()+'&idtransfergroup=1&depart_country='+depCountry+'&depart_city='+encodeURIComponent(depCity)+'&dest_country='+desCountry, function(data) {
		$('#TprihodMesto').removeOption(/./);
	 	$('#TprihodMesto').addOption('NULL', lang.selectCity);
	 	transferDataDestCity = data;
	 	for (var i = 0; i<data.length; i++) {
			$('#TprihodMesto').addOption(data[i], readStr(data[i]), false);
	 	}
	 	if ($.url.param('round_trip') == "1") {
			$('#TprihodMesto').val($.url.param('destination_city'));
			$('#TprihodMesto').change();
	 	} else
	 	if (transferSelected) {
			$('#TprihodMesto').val($.url.param('dest_city'));
			$('#TprihodMesto').change();
	 	}
 	});
}

function transferChangeDestMesto() {
	var depCountry = $('#TodhodDrzava').val();
	var depCity = $('#TodhodMesto').val();
	var desCountry = $('#TprihodDrzava').val();
	var desCity = $('#TprihodMesto').val();
	clearTransferForm('city_dest');
	if (desCity == 'NULL') return;
	$('#TpotnikStevilo').removeOption(/./);
 	$.getJSON('/transfers.0.902.pccms?_r='+getRnd()+'&idtransfergroup=1&depart_country='+depCountry+'&depart_city='+encodeURIComponent(depCity)+'&dest_country='+desCountry+'&dest_city='+encodeURIComponent(desCity), function(data) {
		$('#TpotnikStevilo').removeOption(/./);
	 	$('#TpotnikStevilo').addOption('NULL', lang.selectPersons);
	 	transferDataPrices = data;
	 	for (var i = 0; i<data.length; i++) {
	 		$('#TpotnikStevilo').addOption(data[i].id, data[i].persons, false);
	 	}
	 	if ($.url.param('round_trip') == "1") {
		 	for (i = 0; i<data.length; i++) {
			 	if (data[i].persons == $.url.param('passengers')) {
				 	transferSelected = data[i].id;
				 	break;
			 	}
		 	}
		 	if (transferSelected) {
				$('#TpotnikStevilo').val(transferSelected);
				$('#TpotnikStevilo').change();
			}
	 	} else
	 	if (transferSelected) {
			$('#TpotnikStevilo').val(transferSelected);
			$('#TpotnikStevilo').change();
	 	}
 	});
 	transferChangePotnik();
}

function transferChangePotnik() {
	var depCountry = $('#TodhodDrzava').val();
	var depCity = $('#TodhodMesto').val();
	var desCountry = $('#TprihodDrzava').val();
	var desCity = $('#TprihodMesto').val();
	var pasNo = $('#TpotnikStevilo').val();
	$('#transferPrice').html('');
	for (var i = 0; i<transferDataPrices.length; i++) {
		if (transferDataPrices[i].id == pasNo) {
		 	$('#transferPrice').html('= '+(transferDataPrices[i].price.toFixed(2)+' &euro;'));
	 	}
 	}
 	transferCalc();			
	return;
 	for (var i = 0; i<transferData.length; i++) {
	 	if (transferData[i].depart_country_ident == depCountry && 
	 			transferData[i].depart_city == depCity &&
	 			transferData[i].destination_country_ident == desCountry &&
	 			transferData[i].destination_city == desCity) {
		 	for (j = 0; j < transferData[i].prices.length; j++) {
			 	if (transferData[i].prices[j].id == pasNo) {
				 	$('#transferPrice').html('= '+(transferData[i].prices[j].price.toFixed(2)+' &euro;'));
			 	}
	 		}
	 	}
 	}
 	transferCalc();
}

function transferGo() {
	var transferDateTime=encodeDateTime('TodhodDatum', 'TodhodCas', false);
	if (!transferDateTime)  { alert(lang.errorTransferMissingDepartureDateTime); return false; }
	if ($('#TpotnikStevilo').val() == 'NULL') { alert(lang.errorTransferMissingPassengerQuantity); return false; }
	if (!$('#TodhodNaslov').val()) { alert(lang.errorTransferMissingDepartureAddress); return false; }
	if (!$('#TodhodCas').val() || !$('#TodhodDatum').val()) { alert(lang.errorTransferMissingDepartureDateTime); return false; }
	if (!$('#TprihodNaslov').val()) { alert(lang.errorTransferMissingDestinationAddress); return false; }
	if (!$('#TpotnikNaziv').val()) { alert(lang.errorTransferMissingPassengerName); return false; }
	if (!$('#TpotnikGSM').val()) { alert(lang.errorTransferMissingPassengerPhone); return false; }

	/* add to cart */
	/* prepare add cart request */
	$('#TsubmitDiv').hide();
	$('#TsubmitWait').show();
	var note = '';
	var pickupAddress = $('#TodhodNaslov').val();
	var destAddress = $('#TprihodNaslov').val();
  var passengerPhone = $('#TpotnikGSMCode').val()+'-'+$('#TpotnikGSM').val();
  if ($('#transferForm').attr('rel')=="complete") {
	  /* complete form - submit to database */
		var addCartUrl = '/transfers.0.11.pccms?_r='+getRnd()+'&';
		addCartUrl = addCartUrl + 'transfer_id='+$('#TpotnikStevilo').val();
		addCartUrl = addCartUrl + '&pickup_time='+encodeURIComponent(transferDateTime);
		addCartUrl = addCartUrl + '&passenger_name='+encodeURIComponent($('#TpotnikNaziv').val());
		addCartUrl = addCartUrl + '&passenger_phone='+encodeURIComponent(passengerPhone);
		addCartUrl = addCartUrl + '&pickup_address='+encodeURIComponent(pickupAddress);
		addCartUrl = addCartUrl + '&destination_address='+encodeURIComponent(destAddress);
		$.getJSON(addCartUrl, function(data) { 
			if (typeof(data.error) == 'undefined' && data.cart_content_id > 0) {
				console.debug('set cookie '+data.cart_ident);
				$.cookie('_pccms_cart_ident', data.cart_ident, {path: '/'} );
				console.log('add additionals if any');
				/* add additionals*/
				$('select[rel=transfer_additional]').each(function(index, elem) {
					if ($(elem).val() != "NULL") {
						$.ajax({url: '/transfers.0.16.pccms?_r='+getRnd()+'&cart_content_id='+data.cart_content_id+'&additional_id='+$(elem).val(), async: false});
					}
				});
				console.log('add note');
				/* add note to this content */
				if (note) {
					var addNoteUrl = '/transfers.0.18.pccms?_r='+getRnd()+'&cart_content_id='+data.cart_content_id+'&note='+note; 
					$.getJSON(addNoteUrl, function() {
						console.log('switch location');
						parent.location.href=lang.urlCartTransfers;
					});
				}	else {
					console.log('switch location');
					parent.location.href=lang.urlCartTransfers;
				}
			} else { 
				$('#submitDiv').show();
				$('#submitWait').hide();
				alert(lang.errorSubmit+' ('+data.error.code+'/'+data.error.msg+')'); 
			}
		});
  } else {
	  /* form from first page - redirect to complete form */
		var addCartUrl = lang.urlIndividualTransfers+'?_r='+getRnd()+'&';
		addCartUrl = addCartUrl + 'transfer_id='+$('#TpotnikStevilo').val();
		addCartUrl = addCartUrl + '&pickup_time='+encodeURIComponent(transferDateTime);
		addCartUrl = addCartUrl + '&passenger_name='+encodeURIComponent($('#TpotnikNaziv').val());
		addCartUrl = addCartUrl + '&passenger_phone='+encodeURIComponent(passengerPhone);
		addCartUrl = addCartUrl + '&pickup_address='+encodeURIComponent(pickupAddress);
		addCartUrl = addCartUrl + '&destination_address='+encodeURIComponent(destAddress);
		addCartUrl = addCartUrl + '&depart_country='+encodeURIComponent($('#TodhodDrzava').val());
		addCartUrl = addCartUrl + '&depart_city='+encodeURIComponent($('#TodhodMesto').val());
		addCartUrl = addCartUrl + '&dest_country='+encodeURIComponent($('#TprihodDrzava').val());
		addCartUrl = addCartUrl + '&dest_city='+encodeURIComponent($('#TprihodMesto').val());
		parent.location.href=addCartUrl;
	}
}

function selectAdditional(elem) {
	transferCalc();
}

function transferCalc() {
	var transferPrice = 0;
	var additionalPrice = 0;
	/* get transfer price first */
	var depCountry = $('#TodhodDrzava').val();
	var depCity = $('#TodhodMesto').val();
	var desCountry = $('#TprihodDrzava').val();
	var desCity = $('#TprihodMesto').val();
	var pasNo = $('#TpotnikStevilo').val();
	for (var i = 0; i<transferDataPrices.length; i++) {
		if (transferDataPrices[i].id == pasNo) {
		 	transferPrice = transferDataPrices[i].price;
		 	break;
	 	}
 	}
	/* get additional prices */
	$('select[rel=transfer_additional]').each(function(index, elem) {
		if ($(elem).val() != "NULL") {
			for (var j = 0; j < transferAdditionalsData.length; j++) {
				for (var k = 0; k < transferAdditionalsData[j].prices.length; k++) {
					if (transferAdditionalsData[j].prices[k].id == $(elem).val()) {
						additionalPrice = additionalPrice + transferAdditionalsData[j].prices[k].price;
					}
				}
			}
		}
	});
	/* output sum */
	$('#transferSUM').html(lang.sum+(transferPrice+additionalPrice).toFixed(2)+' &euro;');
}

$(document).ready(function(){ 
	if (!$('#transferForm').length) return;
	
	/* clear form */
	$('input[type=text]', '#transferForm').each(function () {
		$(this).val('');
	});
	$('select[rel=load]', '#transferForm').each(function() {
		$(this).removeOption(/./);
		$(this).addOption('NULL', lang.pleaseWait);
	});
	$('#TodhodDrzava').change(function() { transferChangeDepartDrzava(); });
	$('#TodhodMesto').change(function() { transferChangeDepartMesto(); });
	$('#TprihodDrzava').change(function() { transferChangeDestDrzava(); });
	$('#TprihodMesto').change(function() { transferChangeDestMesto(); });
	$('#TpotnikStevilo').change(function() { transferChangePotnik(); });
	$('#TodhodDatum').datepicker(datePickerSettings);
	
	$.getJSON('/transfers.0.902.pccms?_r='+getRnd()+'&idtransfergroup=1', function(data) {
		transferDataDepartCountry = data;
		$('select[rel=load]', '#transferForm').each(function() {
			$(this).removeOption(/./);
		});
	  $('#TodhodDrzava').addOption('NULL', lang.selectCountry);
		for (var i = 0; i < data.length; i++) {
		  $('#TodhodDrzava').addOption(data[i].ident, readStr(data[i].title), false);
	  }
	  clearTransferForm('country');
		/* select transfer */
		if ($.url.param('round_trip') == "1") {
			$('#TodhodDrzava').val($.url.param('pickup_country'));
			$('#TodhodDrzava').change();
		} else
		if (transferSelected) {
			$('#TodhodDrzava').val($.url.param('depart_country'));
			$('#TodhodDrzava').change();
		}
	});
	if (!$('#transferAdditionals').length) return;
	$.getJSON('/transfers.0.903.pccms?_r='+getRnd()+'&idtransfergroup=1', function(data) {
		transferAdditionalsData = data;
		if (data.length) $('#transferAdditionals').show();
		var addHtml = '';
		for (var j = 0; j < data.length; j++) {
			var gTitle = data[j].group_title;
			if ((typeof data[j].group_langs.si !== 'undefined') && curLang == 'si') gTitle = data[j].group_langs.si;
			if ((typeof data[j].group_langs.en !== 'undefined') && curLang == 'en') gTitle = data[j].group_langs.en;
			addHtml = '';
			addHtml = addHtml + '<div class="fieldRow"><div class="fieldTitle"><label for="additionalRow'+data[j].idgroup+'">'+gTitle+'</label></div>';
			addHtml = addHtml + '<div id="fieldInput"><select name="additional_'+data[j].idgroup+'" id="additionalRow'+data[j].idgroup+'" rel="transfer_additional" onChange="selectAdditional(this);">';
			addHtml = addHtml + '<option value="NULL">'+lang.selNone+'</option>';
			for (var k = 0; k < data[j].prices.length; k++) {
				var aTitle = data[j].prices[k].title;
				if ((typeof data[j].prices[k].langs !== 'undefined') && (typeof data[j].prices[k].langs.si !== 'undefined') && curLang == 'si') aTitle = data[j].prices[k].langs.si;
				if ((typeof data[j].prices[k].langs !== 'undefined') && (typeof data[j].prices[k].langs.en !== 'undefined') && curLang == 'en') aTitle = data[j].prices[k].langs.en;
				addHtml = addHtml + '<option value="'+data[j].prices[k].id+'">'+aTitle+' ('+data[j].prices[k].price.toFixed(2)+' &euro;)</option>';
			}
			addHtml = addHtml + '</select></div></div>';
			$('#transferAdditionals').after(addHtml);
		}
	});
});



/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/**********************************************   CART PAGE   ******************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
var cartData = {};
var thankYou = '';

$(document).ready(function() {
	/********/
	/* CART */
	/********/
	if ($('#cart').length && $('#cartDetails').length) {
		showCartDetail = false;
		/* get country list */
		$('#cart_country').removeOption(/./);
		$('#cart_country').ajaxAddOption('/transfers.0.901.pccms?ajax_option=True', {}, false);
		getCartPayment();
		getCartContent();
	}
});

function getCartPayment() {
	/* get payment options */
	$('#payment_type_paypal').hide();
	$('#payment_type_bill').hide();
	$('#payment_type_onsite').hide();
	$('#payment_type_credit_card').hide();
	$.getJSON('/transfers.0.19.pccms?_r='+getRnd(), function(data) {
		for (var i = 0; i < data.length; i++) {
			$('#payment_type_'+data[i].type+'_fee').html('');
			$('#payment_type_'+data[i].type).show();
		}
	});
}

function readStr(str) { 
	var res = str;
	if (res.substr(0,2)=='//') {
		res = res.substr(2);
		res = Base64.decode(res);
	}
	return res;
}

function getCartContent() {
	/* get cart content */	
	$.getJSON('/transfers.0.10.pccms?_r='+getRnd(), function(data) {
		cartData = data;
		setSubmitButton();
		$('#cartSum').html(data.sum.toFixed(2)+' &euro;');
		/* $('#cartSumTax').html(data.sum_tax.toFixed(2)+' &euro;'); */
		$('#cartSumFee').html(data.sum_fee.toFixed(2)+' &euro;');
		$('#cartSumPayment').html(data.sum_payment.toFixed(2)+' &euro;');
		$('#paymentType_bill').removeAttr("checked");
		$('#paymentType_onsite').removeAttr("checked");
		$('#paymentType_credit_card').removeAttr("checked");
		($('#paymentType_'+data.payment_type).attr('checked', 'true'));
		
		$('#cart_first_name').val(readStr(data.first_name));
		$('#cart_last_name').val(readStr(data.last_name));
		$('#cart_address').val(readStr(data.address));
		$('#cart_city').val(readStr(data.city));
		$('#cart_postal').val(readStr(data.postal));
		$('#cart_country').val(readStr(data.country));
		/* $('#cart_phone').val(readStr(data.phone)); */
		$('#cart_email').val(readStr(data.email));
		
		var phoneInput = readStr(data.phone); 
		var phoneCode = phoneInput.substr(0, phoneInput.indexOf('-'));
		var phoneNum = phoneInput.substr(phoneInput.indexOf('-')+1, 100);
		console.debug(phoneInput);
		console.debug(phoneCode);
		console.debug(phoneNum);
		var pCode = {"name": "cart_phone_code", "code": phoneCode};
		phoneCodes.push(pCode);
		$('#cart_phone').val(phoneNum);
		$('#cart_phone_code').val(phoneCode);
		
		/* get cart content rows */
		$('.cartRow').remove();
		var htmlRow = '';
		if (data.content.length == 0) {
			htmlRow = '';
			htmlRow = htmlRow + '<tr rel="NULL" class="cartRow">';
			htmlRow = htmlRow + '  <td colspan="7" style="text-align: center; font-weight: bold;">Currently you do not have any transfers to confirm. Click to make <a href="/en/shuttle-transfer/">SHUTTLE TRANSFER</a> or <a href="/en/individual-transfer/">INDIVIDUAL TRANSFER</a> reservation.</td>';
			htmlRow = htmlRow + '</tr>';
			$('#cartContentHeader').after(htmlRow);
		} else
		for (i = data.content.length-1; i >= 0; i--) {
			htmlRow = '';
			htmlRow = htmlRow + '<tr rel="'+data.content[i].id+'" class="cartRowHeader cartRow">';
			htmlRow = htmlRow + '  <td colspan="7">'+data.content[i].group_title+': '+readStr(data.content[i].passenger_name)+' ('+data.content[i].passenger_phone+')</td>';
			htmlRow = htmlRow + '</tr>';
			
			htmlRow = htmlRow + '<tr rel="'+data.content[i].id+'" class="cartRow">';
			htmlRow = htmlRow + '  <td style="vertical-align: top">'+readStr(data.content[i].pickup_country)+' - '+readStr(data.content[i].pickup_city);
			if (readStr(data.content[i].pickup_address)) {
				htmlRow = htmlRow + '<br><i>'+lang.lblAddress+': '+readStr(data.content[i].pickup_address)+'</i>';
			}
			if (data.content[i].pickup_datetime > 0) {
				var d = new Date();
				var offsetHours = -d.getTimezoneOffset()/60;
				var dat = new Date(data.content[i].pickup_datetime*1000-3600000*offsetHours);
				htmlRow = htmlRow + '<br><i>'+lang.lblDateTime+': '+dat.format('dd.mm.yyyy HH:MM')+'</i>';
			}
			htmlRow = htmlRow + '  </td>'; /* pickup */
			
			htmlRow = htmlRow + '  <td style="vertical-align: top">'+readStr(data.content[i].destination_country)+' - '+readStr(data.content[i].destination_city);
			if (readStr(data.content[i].destination_address)) {
				htmlRow = htmlRow + '<br><i>'+lang.lblAddress+': '+readStr(data.content[i].destination_address)+'</i>';
			}
			if (data.content[i].destination_datetime > 0) {
				var d = new Date();
				var offsetHours = -d.getTimezoneOffset()/60;
				var dat = new Date(data.content[i].destination_datetime*1000-3600000*offsetHours);
				htmlRow = htmlRow + '<br><i>'+lang.lblDateTime+': '+dat.format('dd.mm.yyyy HH:MM')+'</i>';
			}
			htmlRow = htmlRow + '  </td>'; /* destination */
			
			htmlRow = htmlRow + '  <td style="text-align: center; vertical-align: top">'+data.content[i].passengers+'</td>'; /* persons */
			htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: top">'+data.content[i].price.toFixed(2)+' &euro;</td>'; /* price */
			htmlRow = htmlRow + '  <td style="text-align: center; vertical-align: top">'+data.content[i].quantity+'</td>'; /* quantity */
			htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: top">'+data.content[i].sum.toFixed(2)+' &euro;</td>'; /* sum */
			htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: top; cursor: pointer;" onClick="removeTransfer(this)"><img src="/images/button_remove.png" title="'+lang.btnRemoveTransfer+'" width="25" height="25"></td>';
			htmlRow = htmlRow + '</tr>';
			for (var j = 0; j < data.content[i].notes.length; j++) {
				htmlRow = htmlRow + '<tr rel="'+data.content[i].id+'" class="cartRow">';
				htmlRow = htmlRow + '  <td colspan="7" style="padding-left: 50px; font-size: 9pt; font-weight: normal; font-style: italic;">'+readStr(data.content[i].notes[j].note)+'</td>';
				htmlRow = htmlRow + '</tr>';
			}
			for (j = 0; j < data.content[i].additionals.length; j++) {
				htmlRow = htmlRow + '<tr rel="'+data.content[i].id+'_'+data.content[i].additionals[j].id+'" class="cartRow">';
				htmlRow = htmlRow + '  <td colspan="3" style="padding-left: 30px; font-size: 9pt; font-weight: normal;">'+readStr(data.content[i].additionals[j].group_title)+': '+readStr(data.content[i].additionals[j].title)+'</td>';
				htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: top">'+data.content[i].additionals[j].price.toFixed(2)+'&euro;</td>';
				htmlRow = htmlRow + '  <td style="text-align: center; vertical-align: top">1</td>';
				htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: top">'+data.content[i].additionals[j].price.toFixed(2)+'&euro;</td>';
				htmlRow = htmlRow + '  <td style="text-align: right; vertical-align: middle; cursor: pointer;" onClick="removeTransferAdditional(this)"><img src="/images/button_remove.png" title="'+lang.btnRemoveAdditional+'" width="12" height="12"></td>';
				htmlRow = htmlRow + '</tr>';
			}
			htmlRow = htmlRow + '<tr rel="'+data.content[i].id+'" class="cartRow">';
			htmlRow = htmlRow + '  <td colspan="7" style="padding-left: 20px; font-size: 9pt; font-weight: bold; font-style: italic; cursor: pointer;" class="bottom cartRow" onClick="roundTrip(this);">'+lang.lnkRoundTrip+'</td>';
			htmlRow = htmlRow + '</tr>';
			$('#cartContentHeader').after(htmlRow);
			getCartPayment();
		}
	});
}

function setPaymentType(elem) {
	disableForm('cartDetails');
	$.getJSON('/transfers.0.20.pccms?payment_type='+$(elem).val()+'&_r='+getRnd(), function(data) {
		if (typeof(data.error) != "undefined") {
			$.getJSON('/transfers.0.22.pccms?_r='+getRnd());
			alert(lang.errorSubmitCommand); 
			getCartContent();
		} else
		if (!data.set_payment_type) {
			alert(lang.errorSubmitCommand); 
		} else { 
			getCartContent(); 
		}
		enableForm('cartDetails');
	});
}

function setHolder() {
	$.getJSON('/transfers.0.21.pccms?_r='+getRnd()+
						'&first_name='+encodeURIComponent($('#cart_first_name').val())+
						'&last_name='+encodeURIComponent($('#cart_last_name').val())+
						'&address='+encodeURIComponent($('#cart_address').val())+
						'&city='+encodeURIComponent($('#cart_city').val())+
						'&postal='+encodeURIComponent($('#cart_postal').val())+
						'&country='+encodeURIComponent($('#cart_country').val())+
						'&phone='+encodeURIComponent($('#cart_phone_code').val()+'-'+$('#cart_phone').val())+
						'&email='+encodeURIComponent($('#cart_email').val()));
}

function removeTransfer(elem) {
	if ($('#cartDetails').attr('disabled')) return;
	var transferId = $(elem).parent().attr('rel');
	for (var i = 0; i < cartData.content.length; i++) {
		if (cartData.content[i].id == transferId) {
			if (confirm(sprintf(lang.confirmRemoveTransfer, 
								readStr(cartData.content[i].pickup_country),
								readStr(cartData.content[i].pickup_city),
								readStr(cartData.content[i].destination_country),
								readStr(cartData.content[i].destination_city),
								readStr(cartData.content[i].passenger_name)))) {
//			if (confirm('Do you really wish to remove transfer\nfrom '+readStr(cartData.content[i].pickup_country)+'-'+readStr(cartData.content[i].pickup_city)+' to '+readStr(cartData.content[i].destination_country)+'-'+readStr(cartData.content[i].destination_city)+'\nfor '+readStr(cartData.content[i].passenger_name)+'?')) {
				$.getJSON('/transfers.0.12.pccms?_r='+getRnd()+'&cart_content_id='+cartData.content[i].id, function(data) { getCartPayment(); getCartContent(); });
			}
			break;
		}
	}
}

function removeTransferAdditional(elem) {
	if ($('#cartDetails').attr('disabled')) return;
	var rowIdent = $(elem).parent().attr('rel');
	var transferId = rowIdent.substr(0, rowIdent.indexOf('_'));
	var additionalId = rowIdent.substr(rowIdent.indexOf('_')+1, 20);
	for (var i = 0; i < cartData.content.length; i++) {
		if (cartData.content[i].id == transferId) {
			for (var j = 0; j < cartData.content[i].additionals.length; j++) {
				if (cartData.content[i].additionals[j].id == additionalId) {
/*					if (confirm('Do you really wish to remove additional '+readStr(cartData.content[i].additionals[j].group_title)+': '+readStr(cartData.content[i].additionals[j].title)+'\n'+
				  	          'for transfer from '+readStr(cartData.content[i].pickup_country)+'-'+readStr(cartData.content[i].pickup_city)+' to '+readStr(cartData.content[i].destination_country)+'-'+readStr(cartData.content[i].destination_city)+'\n'+
				    	        'for '+readStr(cartData.content[i].passenger_name)+'?')) {*/
					if (confirm(sprintf(lang.confirmRemoveAdditional, 
										readStr(cartData.content[i].additionals[j].group_title), 
										readStr(cartData.content[i].additionals[j].title),
										readStr(cartData.content[i].pickup_country),
										readStr(cartData.content[i].pickup_city),
										readStr(cartData.content[i].destination_country),
										readStr(cartData.content[i].destination_city),
										readStr(cartData.content[i].passenger_name)))) {
						$.getJSON('/transfers.0.17.pccms?_r='+getRnd()+'&cart_content_id='+cartData.content[i].id+'&cart_additional_id='+additionalId, function(data) {
							if (data.del_cart_additional) {
								getCartPayment();
								getCartContent();
							} else {
								alert(lang.errorRemoveAdditional);
							}
						});
					}
					break;
				}
			}
			break;
		}
	}			
}

function roundTrip(elem) {
	if ($('#cartDetails').attr('disabled')) return;
	var transferId = $(elem).parent().attr('rel');
	for (var i = 0; i < cartData.content.length; i++) {
		if (cartData.content[i].id == transferId) {
			var destinationCountry = cartData.content[i].pickup_country;
			var destinationCity = cartData.content[i].pickup_city;
			var destinationAddress = readStr(cartData.content[i].pickup_address);
			
			var pickupCountry = cartData.content[i].destination_country;
			var pickupCity = cartData.content[i].destination_city;
			var pickupAddress = readStr(cartData.content[i].destination_address);
			
			var idGroup = cartData.content[i].idgroup;
			var idTransfer = cartData.content[i].idtransfer;
			
			var passengerName = readStr(cartData.content[i].passenger_name);
			var passengerPhone = cartData.content[i].passenger_phone;
			var passengers = cartData.content[i].passengers;
			var quantity = cartData.content[i].quantity;
			
			if (idGroup == 2) {
				var rtURL = lang.urlShuttleTransfers+'?';
	  	} else {
		  	var rtURL = lang.urlIndividualTransfers+'?';
	  	}
	  	rtURL = rtURL + 'destination_country='+destinationCountry+'&destination_city='+encodeURIComponent(destinationCity)+'&destination_address='+encodeURIComponent(destinationAddress)+'&';
	  	rtURL = rtURL + 'pickup_country='+pickupCountry+'&pickup_city='+encodeURIComponent(pickupCity)+'&pickup_address='+encodeURIComponent(pickupAddress)+'&';
	  	rtURL = rtURL + 'idgroup='+idGroup+'&id='+idTransfer+'&passenger_name='+encodeURIComponent(passengerName)+'&passenger_phone='+encodeURIComponent(passengerPhone)+'&passengers='+passengers+'&quantity='+quantity+'&round_trip=1';
	  	parent.location.href = rtURL;
			break;
		}
	}
}

function setSubmitButton() {
	if (!cartData.payment_type) {
		$('#btnSubmit').attr('disabled', 'true');
		$('#btnSubmit').val(lang.btnSelectPayment);
	} else
	if (cartData.payment_type == "credit_card") {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmit').val(lang.btnProceedPayment);
	} else {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmit').val(lang.btnSubmitReservation);
	}
}

function cartSubmit() {
	var res = true;
	var errMsg = '';
	/* load cart again */
	disableForm('cartDetails');
	$('#btnSubmit').val(lang.pleaseWait);
	$.getJSON('/transfers.0.21.pccms?_r='+getRnd()+'&first_name='+$('#cart_first_name').val()+'&last_name='+$('#cart_last_name').val()+'&address='+$('#cart_address').val()+'&city='+$('#cart_city').val()+'&postal='+$('#cart_postal').val()+'&country='+$('#cart_country').val()+'&phone='+$('#cart_phone').val()+'&email='+$('#cart_email').val(), function (data) {
		$.getJSON('/transfers.0.10.pccms?_r='+getRnd(), function(data) {
			if (data.sum <= 0)				{ res = false; errMsg = errMsg + lang.noReservations; }
			if (!readStr(data.first_name)) 	{ res = false; errMsg = errMsg + lang.errorMissingHolderFirstName; }
			if (!readStr(data.last_name)) 	{ res = false; errMsg = errMsg + lang.errorMissingHolderLastName; }
			if (!readStr(data.address))		{ res = false; errMsg = errMsg + lang.errorMissingHolderAddress; }
			if (!readStr(data.city))		{ res = false; errMsg = errMsg + lang.errorMissingHolderCity; }
			if (!readStr(data.postal))		{ res = false; errMsg = errMsg + lang.errorMissingHolderPostal; }
			if (!readStr(data.country))		{ res = false; errMsg = errMsg + lang.errorMissingHolderCountry; }
			if (!readStr(data.phone))		{ res = false; errMsg = errMsg + lang.errorMissingHolderPhone; }
			if (!readStr(data.email) || !validEmail(readStr(data.email)))	{ res = false; errMsg = errMsg + lang.errorMissingHolderEmail; }
			if (!res) {
				alert(errMsg);
				setSubmitButton();
  			enableForm('cartDetails');
  			return;
			}
			$.getJSON('/transfers.0.13.pccms?_r='+getRnd(), function(data) {
				if (data.close_cart) {
					if (data.bankart) {
						thankYou = readStr(data.message);
						showPP(data.bankart_url);
					} else if (data.paypal) {
						$.getJSON('/transfers.0.22.pccms?_r1='+getRnd()); /* clear cart */
						alert(readStr(data.message)+'\n'+lang.paypalRedirect);
						parent.location.href=data.paypal_url;
					} else {
						$.getJSON('/transfers.0.22.pccms?_r1='+getRnd()); /* clear cart */
						alert(readStr(data.message));
						parent.location.href='/';
					}
				} else {
					if (data.error.code >= 600 && data.error.code < 700) { /* bankart error */
						alert(lang.errorSubmitReservation+'\n('+data.error.msg+')');
						setSubmitButton();
  					enableForm('cartDetails');
						getCartContent();
  					return;
					} else {
						$.getJSON('/transfers.0.22.pccms?_r2='+getRnd()); /* clear cart */
						alert(lang.errorSubmitReservation+'\n('+data.error.msg+')');
						setSubmitButton();
  					enableForm('cartDetails');
						getCartContent();
  					return;
					}
				}
			});
		});
	});
}

function showPP(newUrl) {
  $('#ajax_loader').show();
  appendedTo = false;
  tb_show('Payment page',newUrl+'&TB_iframe=true&width=770&height=550'); /* show payment page */
  $('#ajax_loader').hide();
  checkTBInterval = setInterval('checkTB()', 500);
}
var checkTBInit = 0;

function checkTB() {
  if ($('#TB_window').length) return;
  clearInterval(checkTBInterval);
  $('#ajax_loader_status').show();
  /* check status and move appropriately */
  var url = "/transfers.0.14.pccms/?_r="+Math.random();
  $.getJSON(url, function (data) {
    if (data.cart_status == 'paid') {
			$.getJSON('/transfers.0.22.pccms?_r1='+getRnd()); /* clear cart */
			alert(thankYou);
			parent.location.href='/';
    } else
    if (data.cart_status != "paid" && checkTBInit >= 2) {
			checkTBInit=0;
      /*  failed payment */
    	$('#ajax_loader').hide();
    	$('#ajax_loader_status').hide();
    	$('#TB_iframeContent').remove(); 
		  $.getJSON("/transfers.0.15.pccms/?_pccms_bkerror=true&_r="+Math.random());
	    alert(lang.errorPaymentProcess);
			setSubmitButton();
			enableForm('cartDetails');
			getCartContent();
    } else {
      /* we don't have the answer yet */
      checkTBInit++;
      if (checkTBInit < 3) {
        setTimeout('checkTB()', 2500); /* set to check again in 2.5sec */
      }
    }
  });  
}
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/********************************************** MF RS **************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
/*******************************************************************************************************/
$(document).ready(function() {
	$( "#dialog-form" ).dialog({
			autoOpen: false,
			height: 350,
			width: 350,
			modal: false,
			buttons: {
				"Prijava": function() {
					var bValid = true;

					if ( $('#name').val() && $('#password').val() ) {
						/* login user */
						$.getJSON('/users.0.10.pccms?username='+encodeURIComponent($('#name').val())+'&password='+encodeURIComponent($('#password').val())+'&_r+'+getRnd(), function(data) { 
							if (data.error) {
								alert(lang.errorLoginInvalid);
							} else {
								parent.location.href = lang.urlMFRSTransfers;
							}
						});
						$( this ).dialog( "close" );
					} else {
						alert(lang.errorLoginMissing);
					}
				},
				Cancel: function() {
					$( this ).dialog( "close" );
				}
			},
			close: function() {
			}
		});
	$( "#dialog-form" ).css('height', '170px');
});

function MFRS() {
	if (!userLogged) {
		$('#dialog-form').dialog("option", "modal", true);
		$('#dialog-form').dialog("open");
		$('#dialog-form').css('height', '170px');
		return false;
	}
	parent.location.href = lang.urlMFRSTransfers;
	return true;
}
