var destinations=new Hash();var outItin=new Array();var retItin=new Array();var depdateArray=new Array();var depdateArray2=new Array();var depdateMap=new Hash();var retdateArray=new Array();var retdateArray2=new Array();var retdateMap=new Hash();var depdateManager=null;var retdateManager=null;function railDateChange(){log("railDateChange("+this.id+")");updateItin(this.id)}function stationChange(d){var a=$F("origin");var b=$F("destination");if(d=="origin"){if(destinations.get(a)!=null){setDestinations($("destination"),destinations.get(a))}else{var c=urlBase+"rail/ajax/destinations.jsp";$("destination").disable();new Ajax.Request(c,{method:"post",parameters:{origin:a,userType:$F("utr")},evalJS:"force",onComplete:function(e){setDestinations($("destination"),destinations.get(a),a);stationChange("dest");$("destination").enable()}})}}if(b=="NULL"){getDates("depdate",a)}else{getDates("depdate",a,b);getDates("retdate",b,a)}updateItin()}function setDestinations(d,e){var a=new Array();for(var c=0;c<e.length;c++){if(e[c].terminus){a[a.length]=e[c]}}var b=$F(d);AniteDDB.clear(d);if($(d).id!="destination"){$(d).options[0]=new Option("Please Select:","NULL")}else{$(d).options[0]=new Option("Arrival","NULL")}AniteDDB.addOptionGroup(d,"Popular",a);AniteDDB.addOptionGroup(d,"All stations",e);AniteDDB.setValue(d,b)}function getDates(c,b,a,d){log("getDates("+c+","+b+","+a+")");new Ajax.Request(urlBase+"rail/ajax/routeDates.jsp",{method:"post",parameters:{dateName:c,origin:b,destination:a,userType:$F("utr")},evalJS:"force",onComplete:new Function('getDatesSuccess("'+c+'")')})}function getDatesSuccess(prefix){if(prefix=="depdate"){depdateManager.setValidDates(depdateArray2)}else{if(prefix=="retdate"){retdateManager.setValidDates(retdateArray2)}else{if(prefix.indexOf("CIdate_")==0){var leg=parseFloat(prefix.substring(7));MultipleRail.dateManagers[leg-1].setValidDates(eval(prefix+"Array2"))}}}}function updateItin(d){var b=$F("origin");var c=$F("destination");var a=$F("depdate");var e=$F("retdate");if(d=="depdate"){if(b!="NULL"&&c!="NULL"&&a.length==6){if(!itinMatches(outItin,b,c,a)){outItin=null;getItinerary("outItin",b,c,a,function(){setArrival(outItin,"outArrival")})}}else{$("outArrival").hide()}}else{if(d=="retdate"){if(b!="NULL"&&c!="NULL"&&e.length==6&&$("type_return").checked){if(!itinMatches(retItin,c,b,e)){retItin=null;getItinerary("retItin",c,b,e,function(){setArrival(retItin,"retArrival")})}}else{$("retArrival").hide()}}}}function itinMatches(b,c,a,d){if(b==null||b.length<1){return false}if(b[0].origin.code!=c){return false}if(b[b.length-1].dest.code!=a){return false}if(b[0].date==null||formatDate(b[0].date,"yyMMdd")!=d){return false}return true}var arrivalTemplate=new Template('Arrives in <span class="place">#{place}</span>, <span class="date">#{date}</span> at <span class="time">#{time}</span>#{services}.');var serviceTemplate=new Template(', travelling on <span class="service">#{service}</span>');var ciArrivalTemplate=new Template("#{date}");function setArrival(c,f,b,g){if(b==null){b=false}var a=arrivalTemplate;if(g&&g.template!=null){a=g.template}if(c.length>0){var e=c[0].service.name;if(c.length>1){e=e+" and "+c[c.length-1].service.name}var d=c[c.length-1];$(f).update(a.evaluate({place:d.dest.name,date:formatDate(d.arrives,dateFormat_day),time:formatDate(d.arrives,"hh:mma"),services:(b?serviceTemplate.evaluate({service:e}):"")}));$(f).show()}else{$(f).hide()}}function getItinerary(d,b,a,c,e){log("getItinerary("+d+","+b+","+a+","+c+")");if(b!="NULL"&&a!="NULL"&&c.length==6){new Ajax.Request(urlBase+"rail/ajax/serviceAjax.jsp",{parameters:{name:d,startPoint:b,endPoint:a,depdate:c,userType:$F("utr")},evalJS:"force",onComplete:e})}}Ajax.Responders.register({onComplete:function(a){log("Complete: "+a.request.url)}});function initRailSearch(){if(!$("railForm")){return}$$("fieldset.paxSubset").invoke("hide");$("railForm").reset();Event.observe($("origin"),"change",function(){stationChange("origin")});Event.observe($("destination"),"change",function(){stationChange("dest")});depdateManager=new DateManager({months:$("depdate_mon"),days:$("depdate_day"),hidden:$("depdate"),hasBlankMonth:false,hasBlankDay:true,onChange:function(){updateItin("depdate")},after:new Date(),afterOffset:railLeadTime});retdateManager=new DateManager({months:$("retdate_mon"),days:$("retdate_day"),hidden:$("retdate"),after:[depdateManager,function(){if(outItin&&outItin.length>0){return outItin[outItin.length-1].arrives}else{return null}}],afterOffset:1,hasBlankMonth:false,hasBlankDay:true,onChange:function(){updateItin("retdate")}});Event.observe($("type_oneway"),"click",function(){tripTypeSelect()});Event.observe($("type_return"),"click",function(){tripTypeSelect()});$("railForm").select("select.paxType").each(function(b){var a=b.id.substring(4);if(paxTypes.get(a)&&paxTypes.get(a).popup&&!b.hasClassName("ageRestricted")){Event.observe(b,"change",showWarning.bindAsEventListener(b,a))}});stationChange("origin");tripTypeSelect()}function submitSearch(){var f=new Array();var a=$("fs_tripType").select('input[type="radio"]');if(noneSelected(a)){submitPackageSearch();return false}updateItin();if($F("origin")=="NULL"){f[f.length]=errorMessage(ERR_RAIL_NEED_ORIGIN)}else{if($F("destination")=="NULL"){f[f.length]=errorMessage(ERR_RAIL_NEED_DEST)}else{if($F("origin")==$F("destination")){f[f.length]=errorMessage(ERR_RAIL_TRAIN_TO_NOWHERE)}}}if($("type_return").checked){var d=$F("depdate");var i=$F("retdate");if($F("depdate_day")==" "){f[f.length]=errorMessage(ERR_RAIL_SELECT_DATE,{type:"departure"})}if($F("retdate_day")==" "){f[f.length]=errorMessage(ERR_RAIL_SELECT_DATE,{type:"return"})}if(i<d){f[f.length]=errorMessage(ERR_RAIL_RETURN_BEFORE_DEPARTURE)}else{if(outItin&&outItin.length>0&&retItin&&retItin.length>0){var b=outItin[outItin.length-1].arrives;var g=retItin[0].departs;if(g.getTime()<b.getTime()){f[f.length]=errorMessage(ERR_RAIL_RETURN_BEFORE_ARRIVAL)}}}}else{if($("type_oneway").checked){if($F("depdate_day")==" "){f[f.length]=errorMessage(ERR_RAIL_SELECT_DATE,{type:"departure"})}$("retdate").value=""}}var h=$("railForm");var e=countPax(h);var c=countAdults(h);if(e==0){f[f.length]=errorMessage(ERR_RAIL_NO_PAX)}else{if(e>9){f[f.length]=errorMessage(ERR_RAIL_TOO_MANY_PAX)}else{if(c<1){f[f.length]=errorMessage(ERR_RAIL_NO_ADULTS)}}}if(f.length>0){alert(f.join("\n"));return false}else{return true}}function tripTypeSelect(a){var b=$("fs_tripType").select('input[type="radio"]');if(a==null){a=getRadioSetValue(b)}if(a=="OW"){$("origin","destination").invoke("enable");depdateManager.enable();retdateManager.disable();$("retArrival").hide();updateItin();$("fs_depdate").show();$("executeSearch").show()}else{if(a=="RT"){if(retdateManager.validDates.length==0&&$F("origin")!="NULL"&&$F("destination")!="NULL"){noValidReturnDates();return}$("origin","destination").invoke("enable");depdateManager.enable();retdateManager.enable();updateItin();$("fs_depdate").show();$("executeSearch").show()}else{if(a=="CX"){}else{if(a=="PKG"){}}}}}Event.observe(window,"load",initRailSearch);function multipleRail(){var c="";if(outItin!=null&&outItin.length>0){for(var b=0;b<outItin.length;b++){c+='<input type="hidden" name="serviceId" value="'+outItin[b].id+'"/>'}if($("type_return").checked&&retItin!=null&&retItin.length>0){for(var a=0;a<retItin.length;a++){c+='<input type="hidden" name="serviceId" value="'+retItin[a].id+'"/>'}}}else{c+='<input type="hidden" name="startPoint" value="'+($F("origin")=="NULL"?"":$F("origin"))+'"/>';c+='<input type="hidden" name="endPoint" value="'+($F("destination")=="NULL"?"":$F("destination"))+'"/>';c+='<input type="hidden" name="depDate" value="'+$F("depdate")+'"/>'}$$("select.paxType","input.paxType").each(function(e){c+='<input type="hidden" name="'+e.id+'" value="'+$F(e)+'"/>'});if($("brochureCode")){c+='<input type="hidden" name="brochureCode" value="'+$F("brochureCode")+'"/>'}var d=new Cookie(document,"multipleRail",null,urlBase);d.xml="";d.store();if($("agentData_rail")){c+='<input type="hidden" name="agentData" value="'+$F("agentData_rail")+'"/>'}$("multiForm").update(c);$("multiForm").submit()}function noValidReturnDates(){if($("type_return").checked){$("type_oneway").checked=true;$("type_return").checked=false;tripTypeSelect();alert(errorMessage(ERR_RAIL_NO_SERVICE,{destination:AniteDDB.getText($("origin")),origin:AniteDDB.getText($("destination"))}))}};
