Type.registerNamespace("Apaq.UI");window.onunload=function(){if(typeof(GUnload)=="function"){GUnload()}};if(typeof(Apaq.UI.ItinerarySearch)=="undefined"){Apaq.UI.ItinerarySearch=new function(){var z;var t=null;var G;var y;var F;var C;var x;var v;var A;var s;var u=false;var D=false;var w=false;var E=false;var B="";this.initialize=function(a,d,h,g,c,b,e,f,l){if(!a||!d||!h||!g||!c||!b||!e||!f){throw"Invalid arguments"}if(typeof(GClientGeocoder)!="undefined"){z=new GClientGeocoder()}G=a;y=d;F=h;C=g;x=c;v=b;A=e;s=f;if(l!=null&&l!=""){t=Sys.Serialization.JavaScriptSerializer.deserialize(l)}if(t!=null&&t.IsDepartureInQuebec){Apaq.UI.ItinerarySearch.FareManager.init(t.TripFares,t.StudentFare)}if(t!=null){Apaq.UI.ItinerarySearch.MapManager.init();Apaq.UI.ItinerarySearch.MapManager.show(t)}};this.setPostbackUrl=function(a){B=a};this.validateDepartureDate=function(b,d){var e=new Date();e.setHours(0,0,0,0);var a=$get(b.controltovalidate);var c=new Date(Date.parseLocale(a.value));if(c<e){d.IsValid=false}};this.handleResponse=function(b,a){if(a){D=true}else{w=true}if(!b||b.Status.code!=200||b.Placemark.length!=1||!this.isInCanadaOrUS(b)){if(a){x.isvalid=b&&b.Status.code==200&&this.isInCanadaOrUS(b);A.isvalid=!(b&&b.Status.code==200&&this.isInCanadaOrUS(b))||(b.Placemark.length==1);ValidatorUpdateDisplay(x);ValidatorUpdateDisplay(A)}else{v.isvalid=b&&b.Status.code==200&&this.isInCanadaOrUS(b);s.isvalid=!(b&&b.Status.code==200&&this.isInCanadaOrUS(b))||(b.Placemark.length==1);ValidatorUpdateDisplay(v);ValidatorUpdateDisplay(s)}}else{place=b.Placemark[0];point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);if(a){u=true;G.value=place.address;$get("hidDepLat").value=point.lat();$get("hidDepLng").value=point.lng();if(place.AddressDetails.Country.AdministrativeArea!=null){$get("hidIsDepInQuebec").value=place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName=="QC"?"true":"false"}else{$get("hidIsDepInQuebec").value="true"}}else{E=true;y.value=place.address;$get("hidDestLat").value=point.lat();$get("hidDestLng").value=point.lng()}if(u&&E){WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(C,"",false,"ItinerarySearch",B,false,true))}}if(D&&w){F.disabled=false}};this.isInCanadaOrUS=function(a){place=a.Placemark[0];return place.AddressDetails.Country!=null&&(place.AddressDetails.Country.CountryNameCode=="CA"||place.AddressDetails.Country.CountryNameCode=="US")};this.getAddresses=function(a){F.disabled=true;x.isvalid=true;v.isvalid=true;$get("hidDepLat").value=null;$get("hidDepLng").value=null;$get("hidDestLat").value=null;$get("hidDestLng").value=null;if(Page_ClientValidate(a)){D=false;w=false;u=false;E=false;if(G.value.indexOf(",")==-1){G.value=G.value+", QC, Canada"}if(y.value.indexOf(",")==-1){y.value=y.value+", QC, Canada"}z.getLocations(G.value,function(b){return Apaq.UI.ItinerarySearch.handleResponse(b,true)});z.getLocations(y.value,function(b){return Apaq.UI.ItinerarySearch.handleResponse(b,false)})}else{F.disabled=false}};this.getItinerary=function(){return t};this.reverseAddresses=function(){var a;a=G.value;G.value=y.value;y.value=a;a=$get("hidDepLat").value;$get("hidDepLat").value=$get("hidDestLat").value;$get("hidDestLat").value=a;a=$get("hidDepLng").value;$get("hidDepLng").value=$get("hidDestLng").value;$get("hidDestLng").value=a}}}if(typeof(Apaq.UI.ItinerarySearch.FareManager)=="undefined"){Apaq.UI.ItinerarySearch.FareManager=new function(){var s=false;var l;var o;var m=16;var p;var r;var q;var n;this.init=function(c,b){l=c;o=b;s=true;p=new Array($get("txtAge1"),$get("txtAge2"),$get("txtAge3"),$get("txtAge4"),$get("txtAge5"));r=new Array($get("cbxStudent1"),$get("cbxStudent2"),$get("cbxStudent3"),$get("cbxStudent4"),$get("cbxStudent5"));q=new Array($get("cbxRetour1"),$get("cbxRetour2"),$get("cbxRetour3"),$get("cbxRetour4"),$get("cbxRetour5"));n=new Array($get("lblPrice1"),$get("lblPrice2"),$get("lblPrice3"),$get("lblPrice4"),$get("lblPrice5"));var a=0;for(a=0;a<5;a++){if(p[a]!=null){p[a].onblur=function(){Apaq.UI.ItinerarySearch.FareManager.recalculateItineraryFare()}}if(r[a]!=null){r[a].onchange=function(){Apaq.UI.ItinerarySearch.FareManager.recalculateItineraryFare()};r[a].onclick=function(){Apaq.UI.ItinerarySearch.FareManager.recalculateItineraryFare()}}if(q[a]){q[a].onchange=function(){Apaq.UI.ItinerarySearch.FareManager.recalculateItineraryFare()};q[a].onclick=function(){Apaq.UI.ItinerarySearch.FareManager.recalculateItineraryFare()}}}};this.recalculateItineraryFare=function(){var e=0;var b=0;var h=0;for(e=0;e<5;e++){var v=parseInt(p[e].value);var d=0;if(!isNaN(v)){var c=q[e].checked;var a=r[e].checked&&v>=m;d=c?o.TwoWaysPrice:o.OneWayPrice;var g=c?o.TwoWaysTax:o.OneWayTax;if(!a){var f=0;var w=true;for(f=0;f<l.length;f++){if(l[f].AgeLimit>=v){d=c?l[f].TwoWaysPrice:l[f].OneWayPrice;g=c?l[f].TwoWaysTax:l[f].OneWayTax;w=false;break}}if(w){throw"Invalid age. Age: "+v+" not found"}}b=b+d;h=h+g}else{p[e].value="";r[e].checked=false;q[e].checked=false}n[e].innerHTML=d.toFixed(2)}$get("lblSubTotal").innerHTML=b.toFixed(2);$get("lblTaxes").innerHTML=h.toFixed(2);$get("lblTotal").innerHTML=(b+h).toFixed(2)};this.isFaresShown=function(){return s}}}if(typeof(Apaq.UI.ItinerarySearch.MapManager)=="undefined"){var _map=null;var _markers=null;Apaq.UI.ItinerarySearch.MapManager=new function(){this.init=function(){};this.show=function(e){_markers=Apaq.UI.ItinerarySearch.MapManager.createMarkers(e);_map=GoogleMapHelper.ShowComponentMap(Apaq.UI.ItinerarySearch.MapManager.toPoint(e.DepartureCoordinate),_markers,"map_canvas");var f=Apaq.UI.ItinerarySearch.MapManager.getPolylinePoints(e);if(_map!=null){var d=new GPolyline(f,"#ff0000",10);_map.addOverlay(d)}};this.centerMap=function(c,d){_map.setCenter(new GLatLng(c,d))};this.showMarker=function(c){$get("map_canvas").scrollIntoView();var d=_markers[c];d.show();GEvent.trigger(d,"click");_map.setZoom(15)};this.createMarkers=function(d){var c=new Array();c[0]=Apaq.UI.ItinerarySearch.MapManager.createMarkerForCoordinate(d.DepartureCoordinate,"A");i=0;if(d.TripSegments.length>0){for(i=0;i<d.TripSegments.length;i++){c[i+1]=Apaq.UI.ItinerarySearch.MapManager.createMarkerForDepartureTerminal(d.TripSegments[i],i+1)}c[i+1]=Apaq.UI.ItinerarySearch.MapManager.createMarkerForArrivalTerminal(d.TripSegments[i-1],i+1)}c[i+2]=Apaq.UI.ItinerarySearch.MapManager.createMarkerForCoordinate(d.ArrivalCoordinate,"B");return c};this.createMarkerForCoordinate=function(c,d){return Apaq.UI.ItinerarySearch.MapManager.createMarker(c.Latitude,c.Longitude,"",c.Address,d)};this.createMarkerForDepartureTerminal=function(g,f){var e=g.DepartureCoordinate;var h=g.DepartureTerminal;if(h!=null){return Apaq.UI.ItinerarySearch.MapManager.createMarker(e.Latitude,e.Longitude,h.Name,Apaq.UI.ItinerarySearch.MapManager.getTerminalDescription(h),f)}else{return Apaq.UI.ItinerarySearch.MapManager.createMarker(e.Latitude,e.Longitude,g.DepartureStopName,"",f)}};this.createMarkerForArrivalTerminal=function(g,e){var f=g.ArrivalCoordinate;var h=g.ArrivalTerminal;if(h!=null){return Apaq.UI.ItinerarySearch.MapManager.createMarker(f.Latitude,f.Longitude,h.Name,Apaq.UI.ItinerarySearch.MapManager.getTerminalDescription(h),e)}else{return Apaq.UI.ItinerarySearch.MapManager.createMarker(f.Latitude,f.Longitude,g.ArrivalStopName,"",e)}};this.createMarker=function(n,q,o,p,l){var r="/images/google/marker"+l+".png";var m=new GLatLng(n,q);var s=GoogleMapHelper.CreateMarker(m,o,p,"",r,200);return s};this.getTerminalDescription=function(b){return b.Address+"<br/>"+b.Phone};this.toPoint=function(b){return new GLatLng(b.Latitude,b.Longitude)};this.getPolylinePoints=function(f){var h=new Array();var g=0;h[g++]=Apaq.UI.ItinerarySearch.MapManager.toPoint(f.DepartureCoordinate);for(j=1;j<f.DepartureGeometry.length-1;j++){h[g++]=Apaq.UI.ItinerarySearch.MapManager.toPoint(f.DepartureGeometry[j])}for(k=0;k<f.TripSegments.length;k++){var e=f.TripSegments[k];for(j=0;j<e.Geometry.length;j++){h[g++]=Apaq.UI.ItinerarySearch.MapManager.toPoint(e.Geometry[j])}}for(j=1;j<f.ArrivalGeometry.length-1;j++){h[g++]=Apaq.UI.ItinerarySearch.MapManager.toPoint(f.ArrivalGeometry[j])}h[g]=Apaq.UI.ItinerarySearch.MapManager.toPoint(f.ArrivalCoordinate);return h}}}if(typeof(Apaq.UI.ItinerarySearch.DirectionManager)=="undefined"){Apaq.UI.ItinerarySearch.DirectionManager=new function(){var r=null;var u=null;var q=1000*60*60;var o=function(b,a){if(a<10){a="0"+a}return b+":"+a};var t=function(b){var c=b.getHours();var a=b.getMinutes();var d=c>12?"PM":"AM";if(a<10){a="0"+a}return(c%12)+":"+a+d};var s=function(a,b){a=v(a);b=v(b);return(a.getYear()==b.getYear())&&(a.getDay()==b.getDay())};var n=function(a){return o(Math.floor(a.TotalHours),a.Minutes)};var w=function(b,d){b=v(b);d=v(d);var a=d.getTime()-b.getTime();var e=a/q;var c=60*(e-parseInt(e));return o(parseInt(e),parseInt(c))};var v=function(b){if(typeof(b)=="string"){var a=parseInt(b.substring(6,b.length-2));b=new Date(a)}return b};var p=function(b){b=v(b);var c=b.getHours();if(c<10){c="0"+c}var a=b.getMinutes();if(a<10){a="0"+a}return c+":"+a};this.initialize=function(a,b){r=$get(a);u=$get(b)};this.updateArrivalUrbanUrl=function(b){var c=Apaq.UI.ItinerarySearch.getItinerary();var a=Date.parseLocale(u.value);alert(a);b.href=c.ArrivalUrbanTransportationUrl+"&time="+t(a)};this.updateDepartureUrbanUrl=function(b){var c=Apaq.UI.ItinerarySearch.getItinerary();var a=Date.parseInvariant(r.value,"yyyy-MM-dd HH:mm:ss");b.href=c.DepartureUrbanTransportionUrl+"&time="+t(a)};this.timeChange=function(b){var e=b.selectedIndex;var f=Apaq.UI.ItinerarySearch.getItinerary();$get("spanTotalDuration").innerHTML=n(f.TripDurations[e]);r.selectedIndex=e;u.selectedIndex=e;for(var c=0;c<f.TripSegments.length;c++){$get("divTravelTime"+c).innerHTML=n(f.TripSegments[c].TravelDurations[e]);var d=f.TripSegments[c].ArrivalTimes[e];var a=f.TripSegments[c].DepartureTimes[e];$get("imgTravelDayChange"+c).style.display=s(d,a)?"none":"inline";if(c<f.TripSegments.length-1){$get("divArrivalDate"+(c+1)).innerHTML=p(f.TripSegments[c].ArrivalTimes[e]);var d=f.TripSegments[c].ArrivalTimes[e];var a=f.TripSegments[c+1].DepartureTimes[e];$get("divTransit"+(c+1)).innerHTML=w(d,a);$get("imgTransitDayChange"+(c+1)).style.display=s(d,a)?"none":"inline"}if(c!=0){$get("divDepartureDate"+c).innerHTML=p(f.TripSegments[c].DepartureTimes[e])}}}}};