// UI Functions for main booking form.
var StopField = '';
var DialogID = '#StopList';
var DataDelim = ["|","\n"];
var LookUpScript = '/ajax/stop_lookup/';
var TestEnvironment = '';

function parseData(data) {
	if (!data) return null;
	var parsed = [];
	var rows = data.split(DataDelim[1]);
	for (var i=0; i < rows.length; i++) {
		var row = $.trim(rows[i]);
		if (row) {
			parsed[parsed.length] = row.split(DataDelim[0]);
		}
	}
	return parsed;
}

function fnLoadRegion() {
	$.get(LookUpScript + 'r', function(data) {
		data = parseData(data);
		$(DialogID).html('<ul class="Regions"></ul>');
		for (var i=0; i < data.length; i++) {
			var row = data[i];
			if (row[2].length > 0) {
				$(DialogID + " ul").append('<li class="Stop" onclick="fnSelectStop(this); return false;" title="' + row[1] + '">' + row[0] + '</li>');
			}
			else if (row[4].length > 0) {
				$(DialogID + " ul").append('<li class="Region" onclick="fnPopulateRgnStops(this); return false;" rgn="' + row[4] + '">' + row[0] + '</li>');
			}
			else {
				$(DialogID + " ul").append('<li title="' + row[1] + '">' + row[0] + '</li>');
			}
		}
	}, 'text');
}
function fnLoadAreas() {
	$.get(LookUpScript + 'a', function(data) {
		data = parseData(data);
		$(DialogID).html('<ul class="Areas"></ul>');
		for (var i=0; i < data.length; i++) {
			$(DialogID + " ul").append('<li onclick="fnPopulateStops(this); return false;">' + data[i][0] + '</li>');
		}
	}, 'text');
}

function fnPopulateStops(areaLi) {
	areaLi = $(areaLi);
	if ( !areaLi.children().is('ul') ) {
		areaLi.addClass('loading');
		areaLi.append('<ul class="Stops"></ul>');
		$.get(LookUpScript + 'a/' + areaLi.text(), function(data) {
			data = parseData(data);
			for (var i=0; i < data.length; i++) {
				areaLi.children("ul.Stops").append('<li onclick="fnSelectStop(this); return false;" title="' + data[i][1] + '">' + data[i][0] + '</li>');
			}
			areaLi.removeClass('loading');
		}, 'text');
	} // Populate on first call
	areaLi.toggleClass('open');
}
function fnPopulateRgnStops(rgnLi) {
	rgnLi = $(rgnLi);
	if ( !rgnLi.children().is('ul') ) {
		rgnLi.addClass('loading');
		rgnLi.append('<ul class="Stops"></ul>');
		$.get(LookUpScript + 'r/' + rgnLi.attr('rgn'), function(data) {
			data = parseData(data);
			for (var i=0; i < data.length; i++) {
				var row = $.trim();
				rgnLi.children("ul.Stops").append('<li onclick="fnSelectStop(this); return false;" title="' + data[i][1] + '">' + data[i][0] + '</li>');
			}
			rgnLi.removeClass('loading');
		}, 'text');
	} // Populate on first call
	rgnLi.toggleClass('open');
}


function fnSelectStop(stopLi) {
	$('#' + StopField).val($(stopLi).text());
	$(DialogID).dialog('close');
}

function fnOpenDialog(btn) {
	if ( $('.ui-dialog').css('display') != 'none' && StopField == (btn.id == 'fromPicker' ? 'from' : 'to')) {
		$(DialogID).dialog('close');
	} else {
		StopField = (btn.id == 'fromPicker' ? 'from' : 'to');
		$('span.ui-dialog-title').text('Select ' + (btn.id == 'fromPicker' ? 'From Stop' : 'To Stop') );
		$(DialogID).dialog('option', 'position', [btn.offsetLeft + 65,$(btn).parents('#BookingForm').offset().top]);
		$(DialogID).dialog('open');
	}
}

(function($) {
	$(document).ready(function () {
		
		var dates = $('input.calendar').datepicker({
			dateFormat: 'dd-mm-yy',
			minDate: 0,
			maxDate: '1y',
			duration: 'fast',
			showOn: 'button',
			buttonImageOnly: true,
			buttonImage: '/bookingform/images/calendar.gif',
			buttonText: '...',
			onSelect: function(selectedDate) {
				var option = this.id == 'date_from' ? 'minDate' : 'maxDate';
				var instance = $(this).data("datepicker");
				var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
				dates.not(this).datepicker("option", option, date);
			}
		});

		$('input#from, input#to').autocomplete({
			source: function(request, response) {
				$.get(LookUpScript + 'q/' + request.term, function(data) {
					var parsed = [];
					var rows = data.split(DataDelim[1]);
					for (var i = 0; i < rows.length; i++) {
						var row = $.trim(rows[i]);
						if (row) {
							temp = row.split(DataDelim[0]);
							parsed[parsed.length] = temp[0];
						}
					}
					response(parsed);
				}, 'text');
			},
			minLength: 2
		});

		$('button#fromPicker, button#toPicker').click(function(e) {
			e.preventDefault();
			fnOpenDialog(this);
			return false;
		});

		$('#pass_code').change(function () {
			$('#buyapass').submit();
		});

		$(DialogID).dialog({
			autoOpen: false,
			height: 426,
			width: 260,
			open: function() {
				if ($(DialogID).html() == '') fnLoadRegion();
			}
		});

	});
})(jQuery);