/* javascript for East Midlands Trains */

//this server
var thisServer = document.location.protocol + "//" + document.location.host;

$(document).ready( function() {
	//initialise page
	accordian();
	qttButtonTag('qttSubmit');
	qttRailcards();
	bffButtonTag('bffSubmit');
	bffButtonTag('bffSubmit_pop');
	bffStations();
	bffButton();
	stfTag('stfSubmit');
	stationAutocomplete();
	
	readMore();
	seatSaleCalendar();
	
	mjLoginChoice();
	jsOn();
	
	popup_init('a.popupbox');
	ticketFinder();
	tagCloudControls();
	
	destinationStations();
	
	bookingHorizons();
	
	parkwayMap();
	
	cmsNav();
	
	attractionsEqualise();
});


// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// courtesy of http://www.scottandrew.com/js/js_util.js

function addEvent(elm, evType, fn, useCapture)
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be added");
  }
}


function setPageTracker()
{
	//Following code RELOCATED to PageFooter.aspx
    //assumes google analytics code has been loaded
    //pageTracker = _gat._getTracker("UA-3023383-1");
    //pageTracker._setDomainName("eastmidlandstrains.co.uk");
    //pageTracker._initData();
    //pageTracker._trackPageview();
    
    //extra tracking for parkway microsite
	if ( document.location.hostname.replace("www.", "") == "parkwaystation.co.uk" ) {
		pageTracker = _gat._getTracker("UA-7193574-1");
		pageTracker._setDomainName("parkwaystation.co.uk");
		pageTracker._initData();
		pageTracker._trackPageview();
		var exitTracker = pageTracker._createEventTracker('Exit Points');
    }
}


function ticketsform(url)
{
	//quick bodge
	if ( document.location.host == "localhost" || document.location.host == "mcmsdev" || document.location.host == "emtrains.iln.co.uk" ) {
		url = 'http://www.buytickets.test.eastmidlandstrains.co.uk/datapassedin.aspx';
	}
	
	//define promo code for use
	var promo_code = "";
	if ( document.location.pathname.toLowerCase() == "/emtrains/campaigns/winfirstclasstravel.htm" ) {
		promo_code = "href=winfirstclass&";
	}
	
	//alert(promo_code);
	
	var frm = document.forms[0];

    //var oldUrl = frm.action;
    //var oldTarget = frm.target;
    //var oldOnSubmit = frm.onsubmit;

    //frm.action = url;
    //frm.method = "GET"
    //frm.target = "buytickets";
    //frm.onsubmit = function() { pageTracker._linkByPost( document.forms[0] ); }

	//save values
	var origin = frm['OutFrom'].value.replace( "&", "%26" );
	var destination = frm['OutTo'].value.replace( "&", "%26" );
	var outwardDate = frm['OutDate'].value;
	var outHour = frm['OutHour'].value;
	var outMin = frm['OutMins'].value;
	var returnDate = frm['ReturnDate'].value;
	var returnHour = frm['ReturnHour'].value;
	var returnMin = frm['ReturnMin'].value;
	var adults = frm['AdultsTravelling'].value;
	var children = frm['ChildrenTravelling'].value;
	var railcardType_0 = frm['RailcardType_0'].value;
	var railcardNumber_0 = frm['RailcardNumber_0'].value;
	var railcardType_1 = frm['RailcardType_1'].value;
	var railcardNumber_1 = frm['RailcardNumber_1'].value;
	var railcardType_2 = frm['RailcardType_2'].value;
	var railcardNumber_2 = frm['RailcardNumber_2'].value;
	
	if (origin == 'Leaving from') {		origin = '';	}
	if (destination == 'Going to' || destination == 'Destination station') {		destination = '';	}
    if (outwardDate == 'dd/mm' || outwardDate == 'Outward date') {		outwardDate = '';	}
	if (returnDate == '' || returnDate == 'Return date') {		returnDate = '';	}
	if (returnHour == '') {		returnHour = '00';	}
	if (returnMin == '') {		returnMin = '00';	}
	
	//define railcard query
	var railcardCount = 0;
	var railcardCode = '';
	var railcardString = '';
	if ( railcardType_0 != 'None' ) {
		railcardCount ++;
		if ( railcardCount ==1 ) {
			railcardCode = '';
		}
		else {
			railcardCode = railcardCount;
		}
		railcardString += "&rcCode" + railcardCode + "=" + railcardType_0  + "&rcNum" + railcardCode + "=" + railcardNumber_0;
	}
	if ( railcardType_1 != 'None' ) {
		railcardCount ++;
		if ( railcardCount ==1 ) {
			railcardCode = '';
		}
		else {
			railcardCode = railcardCount;
		}
		railcardString += "&rcCode" + railcardCode + "=" + railcardType_1  + "&rcNum" + railcardCode + "=" + railcardNumber_1;
	}
	if ( railcardType_2 != 'None' ) {
		railcardCount ++;
		if ( railcardCount ==1 ) {
			railcardCode = '';
		}
		else {
			railcardCode = railcardCount;
		}
		railcardString += "&rcCode" + railcardCode + "=" + railcardType_2  + "&rcNum" + railcardCode + "=" + railcardNumber_2;
	}
	
    isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
    
    var isAOL = false;
    if ( navigator.userAgent.indexOf('AOL') != -1 || navigator.userAgent.indexOf('America Online') != -1 ) {
		isAOL = true;
	}
   
    exitTracker._trackEvent('Click', 'QTT - '+getPageName(), 1); 
    
    var query_single = url+"?" + promo_code + "ori="+origin+"&dest="+destination+"&outDate="+outwardDate+"&outHourField="+outHour+"&outMinuteField="+outMin+"&inDate="+returnDate+"&inHourField=&inMinuteField=&noa=" + adults + "&noc=" + children + railcardString;
    var query_return = url+"?" + promo_code + "ori="+origin+"&dest="+destination+"&outDate="+outwardDate+"&outHourField="+outHour+"&outMinuteField="+outMin+"&inDate="+returnDate+"&inHourField="+returnHour+"&inMinuteField="+returnMin + "&noa=" + adults + "&noc=" + children + railcardString;

	if ( returnDate == '' ) {    
	
		//alert (query_single);
	
		if ( isIE6 || isAOL ){
			window.open( query_single );
		}
		else{
			window.parent.location = query_single;
		}
	}
	else {
	
		//alert (query_return);
	
		if ( isIE6 || isAOL ){
			window.open( query_return );
		}
		else{
			window.parent.location = query_return;
		}
	}
	
	//reset form so .NET works again!
    //frm.action = oldUrl;    
    //frm.target = oldTarget;    
    //frm.onsubmit = oldOnSubmit;   
    //frm['OutFrom'].value = origin;	
    //frm['OutTo'].value = destination;	
    //frm['OutDate'].value = outwardDate;	
    //frm['ReturnDate'].value = returnDate;	
    //frm['ReturnHour'].value = returnHour;	
    //frm['ReturnMin'].value = returnMin;
    
	return false;
}

function bffForm(url)
{
    var frm = document.forms[0];

    //var oldUrl = frm.action;
    //var oldTarget = frm.target;
    //var oldOnSubmit = frm.onsubmit;

    //frm.action = url;
    //frm.target = "buytickets";
    //frm.onsubmit = function() { pageTracker._linkByPost( document.forms[0] ); }

	var origin = frm['ucAccordian_ddlBffOrigin'].value;
	var dest = frm['ucAccordian_ddlBffDestination'].value;
	var date = frm['ucAccordian_bffOut'].value;
	var inDate = frm['ucAccordian_bffReturn'].value;
	var inDateFormat = "";
	if ( inDate != '' && inDate.length == 8)
	{
		inDateFormat = "&rtn=20"+inDate.substring(6, 8) + inDate.substring(3, 5) + inDate.substring(0, 2);
	}
	var outDate = "20"+date.substring(6, 8) + date.substring(3, 5) + date.substring(0, 2) + inDateFormat;
	
	if ( origin != '' && dest != '' && date != '' && date.length == 8){
		//alert("orig="+origin+"&dest="+dest+"&out="+outDate);
		exitTracker._trackEvent('Click', 'BFF - '+getPageName(), 1); 
		isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
		if ( isIE6 ){
			window.open(url+"?orig="+origin+"&dest="+dest+"&out="+outDate);
		}
		else{
		window.location = url+"?orig="+origin+"&dest="+dest+"&out="+outDate;	
		}
	}
	else{
		//alert("nay data");
	}
	
    //reset form so .NET works again!
    //frm.action = oldUrl;
    //frm.target = oldTarget;
    //frm.onsubmit = oldOnSubmit;
    
    //frm['ucAccordian_ddlBffOrigin'].value = origin;
	//frm['ucAccordian_ddlBffDestination'].value = dest;
	//frm['ucAccordian_bffOut'].value = date;
	//frm['ucAccordian_bffReturn'].value = inDate;
	
	return false;
}

function bffForm_pop(url)
{
    var frm = document.forms[0];

    //var oldUrl = frm.action;
    //var oldTarget = frm.target;
    //var oldOnSubmit = frm.onsubmit;

    //frm.action = url;
    //frm.target = "buytickets";
    //frm.onsubmit = function() { pageTracker._linkByPost( document.forms[0] ); }

	var origin = frm['ucFormPersonalisationBFF_ddlBffOrigin'].value;
	var dest = frm['ucFormPersonalisationBFF_ddlBffDestination'].value;
	var date = frm['ucFormPersonalisationBFF_bffOut'].value;
	var inDate = frm['ucFormPersonalisationBFF_bffReturn'].value;
	var inDateFormat = "";
	
	if ( inDate != '' && inDate.length == 8) {
		inDateFormat = "&rtn=20"+inDate.substring(6, 8) + inDate.substring(3, 5) + inDate.substring(0, 2);
	}
	var outDate = "20"+date.substring(6, 8) + date.substring(3, 5) + date.substring(0, 2) + inDateFormat;
	
	if ( origin != '' && dest != '' && date != '' && date.length == 8) {
		//alert("orig="+origin+"&dest="+dest+"&out="+outDate);
		exitTracker._trackEvent('Click', 'BFF - '+getPageName(), 1); 
		window.parent.location = url+"?orig="+origin+"&dest="+dest+"&out="+outDate;	
	}
	else {
		//alert("nay data");
	}
	

    //reset form so .NET works again!
    //frm.action = oldUrl;
    //frm.target = oldTarget;
    //frm.onsubmit = oldOnSubmit;
    
    //frm['ucFormPersonalisationBFF_ddlBffOrigin'].value = origin;
	//frm['ucFormPersonalisationBFF_ddlBffDestination'].value = dest;
	//frm['ucFormPersonalisationBFF_bffOut'].value = date;
	//frm['ucFormPersonalisationBFF_bffReturn'].value = inDate;
	
	return false;
}


function eurostarform()
{
    var frm = document.forms[0];

    var url = '';
    var direction = 'oneway';
    var returnDate = '';
    var returnTime = '';

    if (frm['ReturnDate'].value != '')
    {
        direction = 'return';
        returnDate = frm['ReturnDate'].value;
        returnTime = frm['ReturnTime'].value;
    }

    var departureCity = frm['OutFrom'].value;
    var arrivalCity = frm['OutTo'].value;
    var outwardDate = frm['OutDate'].value;
    var outwardTime = frm['OutTime'].value;

    if (direction == 'oneway') {
        url = 'http://clkuk.tradedoubler.com/click?p=63935&a=1111098&g=17098554&url=http://www.eastmidlandstrains.co.uk/tracking/ntlinktrack.exe?http://www.eurostar.com/dynamic/booking.search?country=UK&lang=UK&VT=LS&direction=' + direction + '&departureCity=' + departureCity + '&arrivalCity=' + arrivalCity + '&outwardChoice=trainLeaving&outwardDate=' + outwardDate + '&outwardTime=' + outwardTime + '&nbPaxAdult=1&nbPaxSenior=0&nbPaxChild=0&nbPaxYouth=0';
    }
    else {
        url = 'http://clkuk.tradedoubler.com/click?p=63935&a=1111098&g=17098554&url=http://www.eastmidlandstrains.co.uk/tracking/ntlinktrack.exe?http://www.eurostar.com/dynamic/booking.search?country=UK&lang=UK&VT=LS&direction=' + direction + '&departureCity=' + departureCity + '&arrivalCity=' + arrivalCity + '&outwardChoice=trainLeaving&outwardDate=' + outwardDate + '&outwardTime=' + outwardTime + '&returnChoice=trainLeaving&returnDate=' + returnDate + '&returnTime=' + returnTime + '&nbPaxAdult=1&nbPaxSenior=0&nbPaxChild=0&nbPaxYouth=0';
    }

    //alert(url);
    
    exitTracker._trackEvent('Click', 'EuroStarQTT - '+getPageName(), 1); 
    window.open(url, 'eurotickets', '');

	return false;
}


function qttButtonTag( buttonId )
{

    if ( document.getElementById( buttonId ) )
    {
		var qttButton = document.getElementById( buttonId );
	
		//adapt anchor for post to TTL and any tracking tags
		qttButton.name = qttButton.href; //save href somewhere useful
	
		//eval( "qttButton.onclick = function() { pageTracker._link('" + qttButton.name + "'); ticketsform('" + qttButton.name + "'); }" );
		eval( "qttButton.onclick = function() { ticketsform('" + qttButton.name + "'); }" );
	
		qttButton.href = 'javascript: void 0;';
		qttButton.target = '';

    }

}

function bffButtonTag( buttonId )
{

    if ( document.getElementById( buttonId ) )
    {
		var bffButton = document.getElementById( buttonId );
	
		//adapt anchor for post to TTL and any tracking tags
		bffButton.name = bffButton.href; //save href somewhere useful
		
		if ( buttonId == 'bffSubmit' ){
			eval( "bffButton.onclick = function() { bffForm('" + bffButton.name + "'); }" );
		}
		else{
			eval( "bffButton.onclick = function() { bffForm_pop('" + bffButton.name + "'); }" );
		}
	
		bffButton.href = 'javascript: void 0;';
		bffButton.target = '';

    }

}


function getPageName() {
	return $('#page-path').text();
}


//hover state for CMS nav in IE<7
function cmsNav() {
	if ( $.browser.msie ) {
		$("#nav-cms").mouseover( function() {
			$(this).find("ul").addClass("over");
		});
		$("#nav-cms").mouseout( function() {
			$(this).find("ul").removeClass("over");
		});
	}
}


// Popup ***************** 

// Apply onclick event to links with 'popupbox' class
function popup_init(dom){
	$(dom).click(function(){
		var a = $(this).attr('href');
		var topBar = "";
		
		//check if variation of style
		if ( $(this).hasClass('popup-attraction') ) {
			topBar = "popup-attraction";
		}
		
		popup_show(a, topBar);
		this.blur();
		return false;
	});
}

// Function called when the user clicks on a popupbox link
function popup_show(url, styleVariant) {
	//do we need to show the close (x) symbol?
	closeButton = "<a href='#' id='popup-close'><span>Close</span></a>";
    //if ( arguments[1] ) {
    //   closeButton = "";
    //}

	try {
		if(document.getElementById("popup-overlay") === null){
			$("body").append("<div id='popup-overlay'></div><div id='popup-window' class='" + styleVariant + "'></div>");
		}
		$("#popup-overlay").addClass("popup-overlay-bg");
		$("#popup-overlay").height( $(document).height() ); //stretch overlay to fill document
		$("#popup-window").css({ top: $(window).scrollTop() + "px" }); //position popup at optimum viewpoint
		if ( $.browser.msie ) {
			$("select").hide(); //hide ddls so IE looks better
		}
		$("body").append("<div id='popup-load'><img src='/emtrains/images/loader_popup.gif' /></div>");
		$('#popup-load').css({ top: $(window).scrollTop() + "px" }); //position optimally
		$('#popup-load').show();//show loader

		$("#popup-iframe-content").remove();
		$("#popup-window").append("<div id='popup-top'>" + closeButton + "</div><iframe class='autoHeight' scrolling='no' frameborder='0' hspace='0' src='" + url + "' id='popup-iframe-content' name='popup-iframe-content' onload='tb_showIframe(this)' style='width:500px;'></iframe><div id='popup-bottom'></div>");
		
		//use this to change inner document - it works better than changing "src" in iframe element 
		var addressBits = url.split("/");
		//alert( addressBits[1] );
		if ( addressBits[1] == "emtrains" ) {
			var iframeDoc = document.getElementById("popup-iframe-content");
			var iframeDocInner = (iframeDoc.contentDocument) ? iframeDoc.contentDocument : iframeDoc.contentWindow.document;
			iframeDocInner.location.href = url;
		}
		
		$("#popup-close").click(popup_remove);
	} 
	catch(e) { alert(e); }
}

// Show iframe
function tb_showIframe(e){
	$('#popup-load').hide();//hide loader
	$("#popup-window").css({display:"block"});
	
	try {
		var innerDoc = (e.contentDocument) ? e.contentDocument : e.contentWindow.document;
	
		if (innerDoc.body.offsetHeight) {
			e.height = innerDoc.body.offsetHeight;
		}
		else if (iframe.Document && iframe.Document.body.scrollHeight){ 
			e.height = e.Document.body.scrollHeight;
		}
		
		var bits = innerDoc.location.href.split( '/' );
		if ( bits[bits.length-1] == 'return.htm' ) {
			$('#popup-close').css({ visibility: 'hidden' }); // hide popup's close button
		}
	}
	catch(e) {
		var iframeHeight = "392px";
		//if ( $.browser.msie ) {
		//	iframeHeight = "400px";
		//}
		$("#popup-iframe-content").css({ height: iframeHeight }); //height of Kadfire window
	} 
}

// Close popup
function popup_remove() {
	$("#popup-close").unbind("click");
	$("#popup-iframe-content").unbind("load").remove();
	$("#popup-window").fadeOut("fast",function(){$('#popup-window,#popup-overlay').unbind().remove();});
	$("#popup-load").remove(); //remove loader
	if ( $.browser.msie ) {
		$("select").show(); //restore ddls so IE looks better
	}
	return false;
}

function tagCloudControls() {
	//add controls to tag cloud editor
	$('#tag-list').append('<label for="txtAddTag">Add a new tag:</label><input class="tag-textbox" type="text" id="txtAddTag" name="txtAddTag" /><a href="#" onclick="addTag();">Add</a>');
	
	$('#tag-list li').append(' <a href="#" onclick="deleteTag( this );">Delete</a>');
	if ( $.browser.msie ) {
		$('#tag-list li').hover( function() {
			$(this).find('a').show();
		}, function() {
			$(this).find('a').hide();
		});
	}
}

var addTag = function() {
	var tagString = $('#txtAddTag').attr('value');
	var tags = tagString.split(" ");
	var url = $('#hdnUrl').attr('value');
	
	var allowedExpression = /^[0-9a-zA-Z\_\ \-]+$/;
	if ( !tagString.match( allowedExpression ) ) {
		$('#tag-list').append('<p class="error">Character not allowed</p>').find('.error').fadeOut(1000, function() { $(this).remove(); });
	}
	else {
		for ( var i = 0; i < tags.length; i ++ ) {
			if ( tags[i] != "" ) {
				var query = "?action=insert&url=" + url + "&tag=" + tags[i];
				
				$('#tag-list').append('<iframe class="invisible" src="/emtrains/newstag.aspx' + query + '" onload="addTagToList( this, \'' + tags[i] + '\')" width="1" height="1"></iframe>');
			}
		}
		
		$('#txtAddTag').attr({ value: "" }); 
	}
	
	return false;
}


var addTagToList = function( e, tag ) {
	var response = e.contentWindow.document.getElementById('hdnDataResponse').value;
	
	if ( response == "True" ) {
		$(e).remove();
		$('#tag-list ul').append('<li>' + tag + ' <a href="#" onclick="deleteTag( this );">Delete</a></li>').find('li:last').hide().fadeIn();
		if ( $.browser.msie ) {
			$('#tag-list li:last').hover( function() {
				$(this).find('a').show();
			}, function() {
				$(this).find('a').hide();
			});
		}
	}
}

var deleteTag = function(e) {
	var tag = $(e).parent().text().substr( 0, $(e).parent().text().length - 7 );
	var url = $('#hdnUrl').attr('value');
	var query = "?action=delete&url=" + url + "&tag=" + tag;	
		
	$('#tag-list').append('<iframe class="invisible" src="/emtrains/newstag.aspx' + query + '" onload="deleteTagFromList( this, \'' + tag + '\')" width="1" height="1"></iframe>');
	
	return false;
}

var deleteTagFromList = function( e, tag ) {

	var response = e.contentWindow.document.getElementById('hdnDataResponse').value;
	
	if ( response == "True" ) {
		$(e).remove();
		$('#tag-list li').each( function() {
			if ( $(this).text() == tag + " Delete" ) {
				$(this).fadeOut( function() { $(this).remove(); });
			}
		});
	}
}

var getJourneyData = function(variable) {
	var query = $("#this-journey").attr("value");
  
	var vars = query.split("|");
	for (var i=0; i<vars.length; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	}
}

/* ===== ticket finder stations ===== */
function ticketFinder() {
    var defaultOutFrom = 'Leaving from';
	var defaultOutTo = 'Going to'
    var path = document.location.pathname;
	var dir = path.substring(path.indexOf('/', 1)+1, path.lastIndexOf('/'));
	var page = path.substring(path.lastIndexOf('/') + 1);
	

	if ( dir.toLowerCase() == "myjourneys") 
	{
		/*if ( page.ToLowerCase() == "" )
		{*/
			try
			{
				var stationStart = getJourneyData("stationStart");
				var stationEnd = getJourneyData("stationEnd");
				defaultOutFrom = stationStart;
				defaultOutTo = stationEnd;
			}
			catch(err)
			{
			}

		/*}*/
	}

	$('#OutFrom').val( defaultOutFrom );
	$('#OutFrom').click( function() {
		$(this).val( inputClick ( $(this).val(), defaultOutFrom ) );
	});
	$('#OutFrom').blur( function() {
		$(this).val( inputBlur ( $(this).val(), defaultOutFrom ) );
	});
	
	$('#OutTo').val( defaultOutTo );
	$('#OutTo').click( function() {
		$(this).val( inputClick ( $(this).val(), defaultOutTo ) );
	});
	$('#OutTo').blur( function() {
		$(this).val( inputBlur ( $(this).val(), defaultOutTo ) );
	});
	
}

function inputClick( currentValue, defaultValue ) {
	//blank out the input box if it contains the default value when clicked
	if ( currentValue == defaultValue ) {
		currentValue = '';
	}
	
	if ( $.browser.msie && $.browser.version == "6.0" ) {
		$('#qtt select').css({ visibility: 'hidden' });
	}
	
	return currentValue;
}

function inputBlur( currentValue, defaultValue ) {
	//when exiting the input box, display the default value instead of leaving it blank
	if ( currentValue == '' ) {
		currentValue = defaultValue;
	}
	
	if ( $.browser.msie && $.browser.version == "6.0" ) {
		$('#qtt select').css({ visibility: 'visible' });
	}
	
	return currentValue;
}

function accordian() {
	//set up accordian
	var accordianDefault = $('#accordian-default').val();
	
	//add statuses
	$('#accordian-body li#' + accordianDefault ).addClass('open');
	$('#accordian-body li:not(#' + accordianDefault + ')').addClass('closed');
	
	//display accordian
	$('#accordian').css({ display: 'block' });
	
	//hide unwanted panels
	$('#accordian-body .closed .accordian-content').hide();
	//convert headers to buttons
	$('.accordian-header span').wrap('<a onclick="accordianOpen(this);"></a>');	
}

function accordianOpen(e) {
	//alert( $(e).parent().attr('id') );
	if ( $(e).parent().parent().hasClass('closed') ) {
		//open it
		$(e).parent().parent().find('.accordian-content').slideDown(250);
		//close the other
		$('#accordian-body .open .accordian-content').slideUp(250);
		//change statuses
		$('#accordian-body .open').removeClass('open').addClass('closed');
		$(e).parent().parent().removeClass('closed').addClass('open');
	}
}

function bffStations() {
	//set up Best Fare Finder for AJAX
	
	//remove button
	$('#bff-origin input').hide();
	
	//add onchange event to origin ddl
	$('#bff-origin select').change( function(event) {
		var originSelected = $('#bff-origin :selected').attr('value');
		bffDestinationStations( originSelected );
		$('#bff-destination select').attr({ disabled: '' });
		$('#bff-destination input').val('');
		if ( originSelected == '' ) {
			//clear options
			$('#bff-destination option').remove();
			$('#bff-destination select').attr({ disabled: 'disabled' });
		}
	});
	
	//add onchange event to destination ddl
	$('#bff-destination select').change( function(event) {
		var destinationSelected = $('#bff-destination :selected').attr('value');
		$('#bff-destination input').val( destinationSelected );
	});
	
	//disable destination ddl
	$('#bff-destination select').attr({ disabled: 'disabled' });
}

function bffDestinationStations( origin ) {

	$('#bff-destination option').remove();
	$('#bff-destination select').append( '<option value="">Select...</option>' );

	$.ajax({
		url: thisServer + "/emtrains/BffStations.aspx?origin=" + origin,
		type: "GET",
		dataType: "xml",
		cache: false,
		success: function(xml) {

			try {
				$(xml).find('station').each(function(){
					var crs = $(this).attr('crs');
					var name = $(this).attr('name');
					var option = '<option value="' + crs + '">' + name + '</option>';
					$('#bff-destination select').append( option );
				});
			}
			catch(e) {
			}
			
		},
		error: function (xml, textStatus, errorThrown) { 
			//Use the following line to diagnose problems:
			//alert("Disruptions: " + textStatus + " | " + errorThrown); 
			$('<p></p>')
				.html('<p>An error prevented any stations from being displayed.</p>')
				.appendTo('#bff-destinations');
		}
	});
}


function bffButton() {
	//add rollover to BFF "Book now" button

	$('#bff .row-button input').hover( function() {
		$(this).attr({ src: "/emtrains/images/button_qtt_booknow_on.gif" });
	}, function() {
		$(this).attr({ src: "/emtrains/images/button_qtt_booknow_off.gif" });

	});
}


function mjLoginChoice() {
	//modify form according to radio button selected
	$('#form-my-journeys-login #rbtLogin_0:checked, #booking-register #rbtLogin_0:checked').each( function() {
		mjSelectRegister();
	});
	
	$('#form-my-journeys-login #rbtLogin_1:checked, #booking-register #rbtLogin_1:checked').each( function() {
		mjSelectLogin();
	});

	$('#form-my-journeys-login #rbtLogin_0, #booking-register #rbtLogin_0').click( function() {
		mjSelectRegister();
	});
	
	$('#form-my-journeys-login #rbtLogin_1, #booking-register #rbtLogin_1').click( function() {
		mjSelectLogin();
	});
	
	//set up button roll-overs
	$('#btnLogin').hover( function() {
			$(this).attr({ src: '/emtrains/images/button_login_over.gif' });
		}, function() {
			$(this).attr({ src: '/emtrains/images/button_login.gif' });
	});
		
	$('#form-my-journeys-login #button-my-journeys-register').hover( function() {
			$(this).find('img').attr({ src: '/emtrains/images/button_createnewaccount_over.gif' });
		}, function() {
			$(this).find('img').attr({ src: '/emtrains/images/button_createnewaccount.gif' });
	});
	
	$('#booking-register #button-my-journeys-register').hover( function() {
			$(this).find('img').attr({ src: '/emtrains/images/button_createnewaccount_short_over.gif' });
		}, function() {
			$(this).find('img').attr({ src: '/emtrains/images/button_createnewaccount_short.gif' });
	});
}

function mjSelectLogin() {
	$('#new-customer').removeClass('new-customer-on').addClass('new-customer-off');
	$('#existing-customer').addClass('existing-customer-on').removeClass('existing-customer-off');
	$('#button-my-journeys-register').hide();
	$('#btnLogin').show();
	$('#txtPassword').attr({ disabled: '' }); 
}

function mjSelectRegister() {
	$('#existing-customer').removeClass('existing-customer-on').addClass('existing-customer-off');
	$('#new-customer').addClass('new-customer-on').removeClass('new-customer-off');
	$('#btnLogin').hide();
	$('#button-my-journeys-register').show();
	$('#txtPassword').attr({ disabled: 'disabled' });  
}

function jsOn() {
	$('#javascript-off').hide();
	$('#javascript-on').show();
}


/* ====== "read more" section ====== */

function readMore() {
	$('.read-more').hide().append('<a class="button-read-more-close" href="#" onclick="readMore_close(this); return false;">...read less</a>');
	$('.read-more').wrap('<div class="read-more-outer"></div>');
	$('.read-more-outer').prepend('<a class="button-read-more-open" href="#" onclick="readMore_open(this); return false;">Read more...</a>');
}

function readMore_open(t) {
	$(t).next().slideDown(250);
	$(t).slideUp(250);
}

function readMore_close(t) {
	$(t).parent().slideUp(250);
	$(t).parent().parent().find('.button-read-more-open').slideDown(250);
}


/* ====== destinations map station list animation ====== */

function destinationStations() {
	//hide station list
	$('#destination-map').addClass('destination-map-animation');
	
	//add header to station list
	$('#destination-map-station-list').prepend('<a id="destination-map-station-list-header" href="#" onclick="stationListClose(); return false;"><span>All stations - close</span></a>');
	
	//make header into button
	$('#destination-map-station-header').empty().append('<a href="#" onclick="stationListOpen(); return false;"><span>All stations</span></a>');
}

function stationListOpen() {
	$('#destination-map-station-list').animate({
		marginTop: "-464px"
	}, 600 );
}

function stationListClose() {
	$('#destination-map-station-list').stop().animate({
		marginTop: "0"
	}, 600 );
}

/* ====== autocomplete ====== */

function stationAutocomplete() {
	$('.station-autocomplete').autocomplete('/emtrains/SearchStations.aspx', {
		minChars: 3,
		scrollHeight: 100,
		autoFill: true
	});
}

/* ====== seat sale calendar ====== */

function seatSaleCalendar() {
	//$('.seat-sale-mechanics #qttSubmit').

	//append pop-over box to table and hide it
	$('#seat-sale-ticket-availability').append('<div id="seat-sale-calendar-over"></div>');
	$('#seat-sale-calendar-over').hide();

	$('#seat-sale-calendar .has-ticket').hover( function() {
			//get date
			var month = $('#seat-sale-calendar-month').text();
			var year = $('#seat-sale-calendar-year').text();
			var day = $(this).find('.date').text();
			var periodString = $(this).attr('perioddata');
			var periods = periodString.split(',');
			
			if ( periodString == "" ) {
				periods[0] = "Unknown";
				periods[1] = "Unknown";
				periods[2] = "Unknown";
				periods[3] = "Unknown";
			}
			
			$('#seat-sale-calendar-over')
				.empty()
				.append('<h3>Availability ' + day + ' ' + month + '</h3><table class="ticket-availability-detail" cellspacing="0" cellpadding="0"><tr><th><span class="small-text">Early morning</span><br />Before 0900</th><td><p class="ticket-availability-detail-' + periods[0].toLowerCase() + '">' + periods[0] + '</p></td></tr><tr><th>0901 - 1400</th><td><p class="ticket-availability-detail-' + periods[1].toLowerCase() + '">' + periods[1] + '</p></td></tr><tr><th>1401 - 2000</th><td><p class="ticket-availability-detail-' + periods[2].toLowerCase() + '">' + periods[2] + '</p></td></tr><tr><th><span class="small-text">Late evening</span><br />2001 - 2300</th><td><p class="ticket-availability-detail-' + periods[3].toLowerCase() + '">' + periods[3] + '</p></td></tr><table>');
				
			$(this).find('.date').addClass('over');
			$('#seat-sale-calendar-over').show();
			
		}, function() {
			$('#seat-sale-calendar-over').hide();
			$(this).find('.date').removeClass('over');
	});
	
	$('#seat-sale-calendar .has-ticket').mousemove( function(e) {
		var parentPosition = $('#seat-sale-ticket-availability').offset();
		var thisPosition = $(this).offset();
		//var x = e.pageX - parentPosition.left;
		//var y = e.pageY - parentPosition.top;
		var x = thisPosition.left - parentPosition.left - 169;
		var y = thisPosition.top - parentPosition.top;
		if ( thisPosition.left - parentPosition.left < 150 ) {
			x = thisPosition.left - parentPosition.left + 97;
		}
		
		$('#seat-sale-calendar-over').css({ left: x, top: y });	
	});
}


// multi-tab calendar 
function bookingHorizons() {
	//build calendars
	styleCalendar("#calendar-london");
	styleCalendar("#calendar-liverpoolnorwich");
	
	recoverCalendarDates("#calendar-london");
	recoverCalendarDates("#calendar-liverpoolnorwich");
	
	//initialise nav and panels
	stylePage();
	bindMainNav();
	
	//bind click to radio buttons
	$('#booking-header input').bind( 'click', bookingHorizonsRadioClicks );
	$('#booking-header input:first').attr({ checked: 'checked' }).click();
}


function styleCalendar( dom ) {
	var firstTab = ' class="on"';
	// get london current month
	var numCount = $("#LondonMonth").attr("value");
	// if it's liverpool switch it to local current month
	if ( dom == "#calendar-liverpoolnorwich")
	{
		numCount = $("#LocalMonth").attr("value");
	}
	var tabCount = 1;
	//build nav
	$(dom).prepend('<ul class="nav"></ul>');
	//build a tab per table
	$(dom).find('table').each( function()
	{		
		$(dom + ' caption').hide();
		if ( numCount == tabCount ) {
			firstTab = ' class="on"';
		}
		else{
			firstTab = "";
		}
		$(dom + ' ul').append('<li id="' + $(this).attr('id') + '-nav"' + firstTab + '><a href="#" onclick="slideIntoView(\'' + $(this).attr('id') + '\'); return false;">' + $(this).find('caption').text() + '</a></li>');
		tabCount = tabCount+1;	
	}
	);
}


function slideIntoView( calendar ) {
	//turn all nav tabs off
	$('#' + calendar).parent().parent().parent().find('.nav li').removeClass('on');
	//move to selected month
	$('#' + calendar).parent().stop().animate({
		marginLeft: "-" + ( ( parseInt( calendar.substr( calendar.length-1, 1 ) ) - 1 ) * 168 ) + "px"
	}, 500 );
	//turn selected tab on
	$('#' + calendar).parent().parent().parent().find('.nav #' + calendar + '-nav').addClass('on');
}


function bindCalendar( dom ) {
	//add click events to all calendar dates
	$( dom + ' table a').click( function() {
		if ( $(this).hasClass('selected') ) {
			//change colour of date			
			$(this).removeClass('selected');
			//remove date from list
			var thisDate = $(this).attr('date');
			var listedDates = $( dom ).parent().find('.date-list input').val();
			$( dom ).parent().find('.date-list input').val( listedDates.replace( thisDate + ";", "" ) );
			
			return false;
		}
		else {
			//change colour of date
			$(this).addClass('selected');
			//add date to list
			var thisDate = $(this).attr('date');
			var listedDates = $( dom ).parent().find('.date-list input').val();
			$( dom ).parent().find('.date-list input').val( listedDates + thisDate + ";" );
			
			return false;
		}
	});
}

function recoverCalendarDates( dom ) {
	//populate .NET control with initial dates
	//essential to recover page data in case of page refresh!
	$( dom + ' .date-list input').val( $( dom + ' .date-recovery').text() );
}

function stylePage() {
	//hide/show pages according to nav selection
	$('.bh-panel:visible').hide();
	//$( '#' + $('#bh-nav .selected').parent().attr('id').substr( 0, 10 ) ).show();	
}

function bindMainNav() {
	//add click events to main nav
	$('#bh-nav a').click( function() {
		//reset nav and hide page
		$('#bh-nav a').removeClass('selected');
		$('.bh-panel:visible').hide();
		//select nav item and display page
		$(this).addClass('selected');
		$( '#' + $(this).parent().attr('id').substr( 0, 10 ) ).show();
		
		return false;
	});
}

function FlipCalendarToLondon( )
{
	$('#london').removeClass('invisible');
	$('#local').addClass('invisible');
	if ( $('input[@name=rbtServices]:checked').val() == 1 )
	{
		$('input[@name="rbtServices"]')[0].checked = true;
		
	}
	// gets the london month
	slideIntoView('calendar-london-' + $("#LondonMonth").attr("value"));
	$('#OutDate').val( $('#londonLatestDate').attr("value") );
}

function FlipCalendarToLocal( )
{
	$('#local').removeClass('invisible');
	$('#london').addClass('invisible');
	if ( $('input[@name=rbtServices]:checked').val() == 0 )
	{
		$('input[@name="rbtServices"]')[1].checked = true;
		
	}
	// gets the local month
	slideIntoView('calendar-liverpoolnorwich-' + $("#LocalMonth").attr("value"));
	$('#OutDate').val( $('#localLatestDate').attr("value") );
	//$('#OutDate').val( "works" );
	
}

function bookingHorizonsRadioClicks()
{
	// if the checked value is zero then we want to be on the london route
	if ( $('input[@name=rbtServices]:checked').val() == 0 )
	{
		FlipCalendarToLondon();
	}
	else{
		// otherwise let's go local
		FlipCalendarToLocal();
	}
	
}

function ttListOpen(type) {
	// set everything to invisible
	$('#SAS').addClass('invisible');
	$('#SSS').addClass('invisible');
	$('#SVS').addClass('invisible');
	$('#SOS').addClass('invisible');
	$('#1IS').addClass('invisible');
	$('#FPB').addClass('invisible');
	$('#FPP').addClass('invisible');
	$('#SDS').addClass('invisible');
	$('#CDS').addClass('invisible');
	$('#7DF').addClass('invisible');
	$('#PSF').addClass('invisible');
	$('#7DS').addClass('invisible');
	$('#PSS').addClass('invisible');
	$('#FBP').addClass('invisible');
	$('#SPG').addClass('invisible');
	
	$('#'+type).removeClass('invisible');
	/*$('#destination-map-station-list').animate({
		marginTop: "-464px"
	}, 600 );*/
}

function ttListClose() {
	// set everything to invisible
	$('#SAS').addClass('invisible');
	$('#SSS').addClass('invisible');
	$('#SVS').addClass('invisible');
	$('#SOS').addClass('invisible');
	$('#1IS').addClass('invisible');
	$('#FPB').addClass('invisible');
	$('#FPP').addClass('invisible');
	$('#SDS').addClass('invisible');
	$('#CDS').addClass('invisible');
	$('#7DF').addClass('invisible');
	$('#PSF').addClass('invisible');
	$('#7DS').addClass('invisible');
	$('#PSS').addClass('invisible');
	$('#FBP').addClass('invisible');
	$('#SPG').addClass('invisible');
	
	/*$('#destination-map-station-list').stop().animate({
		marginTop: "0"
	}, 600 );*/
}


/* ====== Parkway Map Launch ====== */

function parkwayMap() {
	$('#parkway-directions-launch').click(function(){
		var a = $(this).attr('href');

		parkwayPopupShow();
		this.blur();
		return false;
	});
}

// Function called when the user clicks on "view large map" link
function parkwayPopupShow() {
	var url = "/emtrains/parkwaypopup.aspx";

	closeButton = "<a href='#' id='parkway-popup-close'><img src=\"/emtrains/images/popup_close.gif\" alt=\"close\" /></a>";

	try {
		if(document.getElementById("parkway-popup-overlay") === null){
			$("body").append("<div id='parkway-popup-overlay'></div><div id='parkway-popup-window-wide'></div>");
		}
		$("#parkway-popup-overlay").addClass("parkway-popup-overlay-bg");
		$("#parkway-popup-overlay").height( $(document).height() ); //stretch overlay to fill document
		$("#parkway-popup-window-wide").css({ top: $(window).scrollTop() + "px" }); //position popup at optimum viewpoint
		if ( $.browser.msie ) {
			$("select").hide(); //hide ddls so IE looks better
		}
		$("body").append("<div id='parkway-popup-load'><img src='/emtrains/images/loader_popup.gif' /></div>");
		$('#parkway-popup-load').css({ top: $(window).scrollTop() + "px" }); //position optimally
		$('#parkway-popup-load').show();//show loader

		$("#parkway-popup-iframe-content-wide").remove();
		$("#parkway-popup-window-wide").append("<div id='parkway-popup-wide-top'>" + closeButton + "</div><iframe scrolling='no' frameborder='0' hspace='0' src='" + url + "' id='parkway-popup-iframe-content-wide' name='parkway-popup-iframe-content-wide' onload='parkwayPopupShowIframe(this)'></iframe><div id='parkway-popup-wide-bottom'></div>");
		
		//use this to change inner document - it works better than changing "src" in iframe element 
		var addressBits = url.split("/");
		//alert( addressBits[1] );
		if ( addressBits[1] == "emtrains" ) {
			var iframeDoc = document.getElementById("parkway-popup-iframe-content-wide");
			var iframeDocInner = (iframeDoc.contentDocument) ? iframeDoc.contentDocument : iframeDoc.contentWindow.document;
			iframeDocInner.location.href = url;
		}
		
		$("#parkway-popup-close").click(parkwayPopupClose);
	} 
	catch(e) { alert(e); }
}

function parkwayPopupShowIframe(e){
	$('#parkway-popup-load').hide();//hide loader
	$("#parkway-popup-window-wide").css({display:"block"});
}

// Close popup
function parkwayPopupClose() {
	$("#parkway-popup-close").unbind("click");
	$("#parkway-popup-window-wide").fadeOut("fast", function(){
		$("#parkway-popup-iframe-content-wide").unbind("load").remove();
		$('#parkway-popup-window-wide,#parkway-popup-overlay').unbind().remove();
	});
	$("#parkway-popup-load").remove(); //remove loader
	if ( $.browser.msie ) {
		$("select").show(); //restore ddls so IE looks better
	}
	return false;
}

function popupHeight( h ) {
	$('#popup-iframe-content').height(h);
}

function stfTag( buttonId ) {
	//stf input fields - hide <select> elements in IE6
	if ( $.browser.msie && $.browser.version == "6.0" ) {
		$('#fromfield').focus( function() {
			$('#stf select').css({ visibility: 'hidden' });
		});
		$('#fromfield').blur( function() {
			$('#stf select').css({ visibility: 'visible' });
		});
		$('#tofield').focus( function() {
			$('#stf select').css({ visibility: 'hidden' });
		});
		$('#tofield').blur( function() {
			$('#stf select').css({ visibility: 'visible' });
		});
	}

	//stf button - submit form to TTL
	$('#' + buttonId).click( function() {	
		//get .NET form
		var frm = document.forms[0];

		var oldUrl = frm.action;
		var oldTarget = frm.target;
		//var oldOnSubmit = frm.onsubmit;
		
		exitTracker._trackEvent('Click', 'STF - '+getPageName(), 1);

		frm.action = "http://www.eastmidlands.trainsfares.co.uk/season/Requirements/st_qtt.asp";
		frm.target = "_top";
		frm.submit();

		//reset form so .NET works again!
		frm.action = oldUrl;
		frm.target = oldTarget;
		//frm.onsubmit = oldOnSubmit;
		
		return false;
    });

}


function qttRailcards() {
	//set up railcard selector for accordian
	$('#qttRailcard_1').hide();
	$('#qttRailcard_2').hide();
	
	$('a#lnkAddMore').click(function()
		{
		if ($('#qttRailcard_1').is(":visible"))
			{
			$('#qttRailcard_2').show();
			}
		else
			{	
			$('#qttRailcard_1').show();
			}
			
		if ($('#qttRailcard_1').is(":visible") && $('#qttRailcard_2').is(":visible"))
			{
			$('a#lnkAddMore').css({ visibility:'hidden'});
			}
			
		return false;
		});

	$('a#lnkRemoveRailcard_1').click(function()
		{
		$('#qttRailcard_1').hide();
		$('a#lnkAddMore').css({ visibility:'visible'});
		return false;
		})

	$('a#lnkRemoveRailcard_2').click(function()
		{
		$('#qttRailcard_2').hide();
		$('a#lnkAddMore').css({ visibility:'visible'});
		return false;
		})
}

function attractionsEqualise() {
	//equalise the height of attractions
	$('.attraction').each( function() {
		$(this).css({ height: $(this).parent().height() + "px" });
	});
}


