function RailDataProvider(){this.transaction=new Array();this.lastCommunication=new Date();this.initialRequest=true}function convertDates(C){for(var A in C){var B=C[A];if(typeof (B)=="string"){if(B.length==18&&B.charAt(0)=="@"&&B.charAt(17)=="@"){C[A]=new Date(B.substr(1,4),B.substr(6,2)-1,B.substr(9,2),B.substr(12,2),B.substr(15,2),0);continue}}else{if(typeof (B)=="object"){convertDates(B)}}}}RailDataProvider.prototype.SetTimeout=function(A){this.timeout=A};RailDataProvider.prototype.SetErrorFunction=function(B,A){railDataProviderErrorObject=B;railDataProviderErrorFunctionName=A};RailDataProvider.prototype.GetRailDataSuccess=function(E){try{var D=JSON.parse(E.responseText);var C=E.argument[0];var A=E.argument[1];if(D.status=="no session"){window.location=mixingDeck.sessionTimeoutPage}else{if(mixingDeck.debug&&D.status=="error"&&A!=mixingDeck.ProcessExtensionData){railDataProviderErrorObject[railDataProviderErrorFunctionName]("Error returned from journey planning service in page "+E.argument[3])}else{convertDates(D);C["RailDataProviderCallbackFunction"]=A;C["RailDataProviderCallbackFunction"](D,E.argument[2]);C["RailDataProviderCallbackFunction"]=null}}}catch(B){railDataProviderErrorObject[railDataProviderErrorFunctionName]("GetRailDataSuccess",B)}};RailDataProvider.prototype.GetRailDataFailure=function(E){if(mixingDeck.debug){if(E){var A=E.argument[3];railDataProviderErrorObject[railDataProviderErrorFunctionName]("GetRailDataFailure "+A+" "+E.status+" "+E.statusText)}else{railDataProviderErrorObject[railDataProviderErrorFunctionName]("GetRailDataFailure")}}else{if(E){var D=E.argument[0];var C=E.argument[1];var B=new Object();B.complete=false;D["RailDataProviderCallbackFunction"]=C;D["RailDataProviderCallbackFunction"](B,E.argument[2]);D["RailDataProviderCallbackFunction"]=null}else{}}};RailDataProvider.prototype.DoCallback=function(D,F,I,E,G){try{var A=new Date();if(F.length>0){F+="&"}F+="date="+A.getTime()+"&sess="+escape(mixingDeck.sessionId);I[3]=G+" "+F;this.lastCommunication=new Date();var B=this.transaction[D];if(B==undefined||!YAHOO.util.Connect.isCallInProgress(B)){var H={success:RailDataProvider.prototype.GetRailDataSuccess,failure:RailDataProvider.prototype.GetRailDataFailure,timeout:this.timeout,argument:I};this.transaction[D]=YAHOO.util.Connect.asyncRequest(E,document.location.protocol+"//"+document.location.host+G+"?"+F,H)}}catch(C){railDataProviderErrorObject[railDataProviderErrorFunctionName]("DoCallback",C)}};RailDataProvider.prototype.SendKeepAliveMessage=function(D,C,B){var A="&d=0";this.DoCallback("KeepAlive",A,[D,C,B],"GET",BasePath+"/JourneyPlanning/KeepAlive.aspx")};RailDataProvider.prototype.GetInitialFareData=function(E,D,C){var B="";var A=0;while(E[A]!=undefined){B=B+"&id"+A+"="+E[A];A++}B="cnt="+A+B;if(this.initialRequest){B+="&resend=Y";this.initialRequest=false}this.DoCallback("InitialFareData",B,[D,C],"GET",BasePath+"/JourneyPlanning/CheckForFTAEnquiryCompletion.aspx")};RailDataProvider.prototype.GetInitialTimetableData=function(C,B){var A="&d=0";this.DoCallback("InitialTimetableData",A,[C,B],"GET",BasePath+"/JourneyPlanning/GetTimetableEnquiryResults.aspx")};RailDataProvider.prototype.GetInitialFareOnlyData=function(C,B){var A="&d=0";this.DoCallback("InitialFareData",A,[C,B],"GET",BasePath+"/JourneyPlanning/GetFareEnquiryResults.aspx")};RailDataProvider.prototype.StartFTAEnquiryExtension=function(F,E,C,B){var A="journeydir="+F+"&extensiondir="+E;var D=(F=="R")?inward:outward;this.DoCallback("StartFTAEnquiryExtension"+F+E,A,[C,B,[D,E]],"GET",BasePath+"/JourneyPlanning/StartFTAEnquiryExtension.aspx")};RailDataProvider.prototype.TimetableExtensionEnquiry=function(F,E,C,B){var A="journeydir="+F+"&extensiondir="+E;var D=(F=="R")?inward:outward;this.DoCallback("TimetableExtensionEnquiry"+F+E,A,[C,B,[D,E]],"GET",BasePath+"/JourneyPlanning/TimetableExtensionEnquiry.aspx")};RailDataProvider.prototype.CheckForFTAExtensionCompletion=function(F,E,D,C){var B="";var A=0;while(F[A]!=undefined){B=B+"&id"+A+"="+F[A];A++}B="cnt="+A+B;this.DoCallback("CheckForFTAExtensionCompletion"+C[0]+C[1],B,[E,D,C],"GET",BasePath+"/JourneyPlanning/CheckForFTAEnquiryCompletion.aspx")};RailDataProvider.prototype.GetStoppingPoints=function(B,G,D,C,F){var A="sId="+B.serviceId;if(F!=undefined&&F==true){A+="&timetables=Y"}var E="GetStoppingPoints";var H=this.transaction[E];if(H!=undefined&&!YAHOO.util.Connect.isCallInProgress(H)){YAHOO.util.Connect.abort(H)}this.DoCallback(E,A,[G,D,C],"GET",BasePath+"/JourneyPlanning/GetStoppingPoints.aspx")};RailDataProvider.prototype.GenerateSelectionPostbackData=function(D,E,B,C){var A="";if(D!=undefined){A+="outFareId="+D}else{A+="outFareId=0"}if(E!=undefined){A+="&returnFareId="+E}else{A+="&returnFareId=0"}if(B!=undefined){A+="&outServiceId="+B}if(C!=undefined){A+="&returnServiceId="+C}return A};RailDataProvider.prototype.SaveJourney=function(B,C,A,I,G,F,H){var E=this.GenerateSelectionPostbackData(B,C,A,I);var D="SaveJourney";this.DoCallback(D,E,[G,F,H],"GET",BasePath+"/JourneyPlanning/SaveJourney.aspx")};RailDataProvider.prototype.SetPendingSavedJourney=function(B,C,A,I,G,F,H){var E=this.GenerateSelectionPostbackData(B,C,A,I);var D="SetPendingSavedJourney";this.DoCallback(D,E,[G,F,H],"GET",BasePath+"/JourneyPlanning/SetPendingSavedJourney.aspx")};RailDataProvider.prototype.ClearPendingSavedJourney=function(D,C,B){var A="&d=0";this.DoCallback("ClearPendingSavedJourney",A,[D,C,B],"GET",BasePath+"/JourneyPlanning/ClearPendingSavedJourney.aspx")}