function SeasonTicketSearchControl(E,B,A,D,C){this.ticketSearchControlId=E;this.ticketSearchControlIdPrefix=B;this.ticketSearchControlNamePrefix=A;this.locationControlsValid=new Object;this.dtEarliestAvailable=new Date(D);this.dtLatestAvailable=new Date(C);this.untilDateChanged=false}SeasonTicketSearchControl.prototype.Initialise=function(){this.locationsValid=true;if(this.seasonTicketSearchControl==undefined){this.seasonTicketSearchControl=document.getElementById(this.ticketSearchControlId);this.divErrorSection=document.getElementById(this.ticketSearchControlIdPrefix+"divError");this.divErrorText=document.getElementById(this.ticketSearchControlIdPrefix+"divErrorText");this.divPassengerError=document.getElementById(this.ticketSearchControlIdPrefix+"divPassengerError");this.divRailcardDetails=document.getElementById(this.ticketSearchControlIdPrefix+"divRailcardDetails");this.pnlReturnTravelDates=document.getElementById(this.ticketSearchControlIdPrefix+"pnlReturnTravelDates");this.divSeasonValid=document.getElementById(this.ticketSearchControlIdPrefix+"divSeasonValid");this.closeButtons=new Array();var B=0;do{var A=document.getElementById(this.ticketSearchControlIdPrefix+"btnClose"+B);if(A==undefined){break}else{this.closeButtons.push(A);B++}}while(true);if(this.divErrorText){this.SetError(this.divErrorText.innerHTML)}this.lcOrigin=document.getElementById(this.ticketSearchControlIdPrefix+"lcOrigin");if(this.lcOrigin){this.lcOrigin.checkValidityEvent=new YAHOO.util.CustomEvent("CheckValidity");this.lcOrigin.checkValidityEvent.subscribe(this.CheckLocationValidity,this,true);this.locationControlsValid[this.lcOrigin.id]=(this.lcOrigin.value.length!=0)}this.lcDestination=document.getElementById(this.ticketSearchControlIdPrefix+"lcDestination");if(this.lcDestination){this.lcDestination.checkValidityEvent=new YAHOO.util.CustomEvent("CheckValidity");this.lcDestination.checkValidityEvent.subscribe(this.CheckLocationValidity,this,true);this.locationControlsValid[this.lcDestination.id]=(this.lcDestination.value.length!=0)}this.lcOptionLocation=document.getElementById(this.ticketSearchControlIdPrefix+"lcOptionLocation");if(this.lcOptionLocation){this.lcOptionLocation.checkValidityEvent=new YAHOO.util.CustomEvent("CheckValidity");this.lcOptionLocation.checkValidityEvent.subscribe(this.CheckLocationValidity,this,true);this.lcOptionLocation.zeroLengthValid=true;this.locationControlsValid[this.lcOptionLocation.id]=true}this.lstOutwardDay=document.getElementById(this.ticketSearchControlIdPrefix+"lstOutwardDay");this.lstOutwardMonthYear=document.getElementById(this.ticketSearchControlIdPrefix+"lstOutwardMonthYear");this.lstOutwardHour=document.getElementById(this.ticketSearchControlIdPrefix+"lstOutwardHour");this.lstOutwardMinute=document.getElementById(this.ticketSearchControlIdPrefix+"lstOutwardMinute");this.lstTravelOutwardDay=document.getElementById(this.ticketSearchControlIdPrefix+"lstTravelOutwardDay");this.lstTravelOutwardMonthYear=document.getElementById(this.ticketSearchControlIdPrefix+"lstTravelOutwardMonthYear");this.lstSeasonValidDays=document.getElementById(this.ticketSearchControlIdPrefix+"lstSeasonValidDays");this.lstSeasonValidMonths=document.getElementById(this.ticketSearchControlIdPrefix+"lstSeasonValidMonths");this.lstReturnDay=document.getElementById(this.ticketSearchControlIdPrefix+"lstReturnDay");this.lstReturnMonthYear=document.getElementById(this.ticketSearchControlIdPrefix+"lstReturnMonthYear");this.lstReturnHour=document.getElementById(this.ticketSearchControlIdPrefix+"lstReturnHour");this.lstReturnMinute=document.getElementById(this.ticketSearchControlIdPrefix+"lstReturnMinute");YAHOO.util.Event.addListener(this.lstOutwardDay,"change",this.OutwardDateChanged,this,true);YAHOO.util.Event.addListener(this.lstOutwardMonthYear,"change",this.OutwardDateChanged,this,true);YAHOO.util.Event.addListener(this.lstTravelOutwardDay,"change",this.UntilDateChanged,this,true);YAHOO.util.Event.addListener(this.lstTravelOutwardMonthYear,"change",this.UntilDateChanged,this,true);YAHOO.util.Event.addListener(this.lstSeasonValidDays,"change",this.OrForDateChanged,this,true);YAHOO.util.Event.addListener(this.lstSeasonValidMonths,"change",this.OrForDateChanged,this,true);YAHOO.util.Event.addListener(this.lcOptionLocation,"keyup",this.LocationOptionChanged,this,true);this.chkFirstClass=document.getElementById(this.ticketSearchControlIdPrefix+"chkFirstClass");this.chkStandardClass=document.getElementById(this.ticketSearchControlIdPrefix+"chkStandardClass");this.chkShowItsoSmartCard=document.getElementById(this.ticketSearchControlIdPrefix+"chkShowItsoSmartCard");this.chkWeeklySeason=document.getElementById(this.ticketSearchControlIdPrefix+"chkWeeklySeason");this.chkMonthlySeason=document.getElementById(this.ticketSearchControlIdPrefix+"chkMonthlySeason");this.chkAnnualSeason=document.getElementById(this.ticketSearchControlIdPrefix+"chkAnnualSeason");this.chkCustomSeason=document.getElementById(this.ticketSearchControlIdPrefix+"chkCustomSeason");this.chkShowServices=document.getElementById(this.ticketSearchControlIdPrefix+"chkShowServices");YAHOO.util.Event.addListener(this.chkShowServices,"click",this.LocationOptionChanged,this,true);this.rdoAdult=document.getElementById(this.ticketSearchControlIdPrefix+"rdoAdult");this.rdoChild=document.getElementById(this.ticketSearchControlIdPrefix+"rdoChild");this.passengersValid=true;this.chkOpenReturn=document.getElementById(this.ticketSearchControlIdPrefix+"chkOpenReturn");YAHOO.util.Event.addListener(this.chkOpenReturn,"click",this.SetOpenReturn,this,true);this.chkRailcards=document.getElementById(this.ticketSearchControlIdPrefix+"chkRailcards");this.rdoOneWay=document.getElementById(this.ticketSearchControlIdPrefix+"rdoOneWay");this.rdoReturn=document.getElementById(this.ticketSearchControlIdPrefix+"rdoReturn");if(this.rdoOneWay){if(this.rdoOneWay.checked){this.rdoOneWay.click()}YAHOO.util.Event.addListener(this.rdoOneWay,"click",this.CheckDateValidity,this,true);YAHOO.util.Event.addListener(this.rdoOneWay,"click",this.EnableReturnPanel,this,true)}if(this.rdoReturn){if(this.rdoReturn.checked){this.rdoReturn.click()}YAHOO.util.Event.addListener(this.rdoReturn,"click",this.CheckDateValidity,this,true);YAHOO.util.Event.addListener(this.rdoReturn,"click",this.EnableReturnPanel,this,true)}this.divOutwardDepartureError=document.getElementById(this.ticketSearchControlIdPrefix+"divOutwardDepartureError");this.divSeasonValidError=document.getElementById(this.ticketSearchControlIdPrefix+"divSeasonValidError");this.searchButton=document.getElementById(this.ticketSearchControlIdPrefix+"btnSearch");this.datesValid=true;this.btnShowOptions=document.getElementById(this.ticketSearchControlIdPrefix+"btnShowOptions");this.divOptionDetails=document.getElementById(this.ticketSearchControlIdPrefix+"divOptionDetails");timer.SetTimer(100,this,this.SetInitialControlState);this.GetRailcardArray();if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked){this.UpdateUntilDate()}}};SeasonTicketSearchControl.prototype.SearchForNonDirectTrains=function(){var A=document.getElementById(this.ticketSearchControlIdPrefix+"chkNoChanges");A.checked=false;this.searchButton.parentNode.onclick()};SeasonTicketSearchControl.prototype.SearchForNonSmartcardFares=function(){var A=document.getElementById(this.ticketSearchControlIdPrefix+"chkItsoSmartCard");A.checked=false;this.searchButton.parentNode.onclick()};SeasonTicketSearchControl.prototype.SetInitialControlState=function(){if(this.rdoOneWay){this.EnableReturnPanel()}if(this.chkRailcards&&this.chkRailcards.checked){this.chkRailcards.onclick()}if(this.chkOpenReturn&&this.chkOpenReturn.checked){this.SetOpenReturn()}if(this.lcOrigin){this.locationControlsValid[this.lcOrigin.id]=(this.lcOrigin.value.length!=0)}if(this.lcDestination){this.locationControlsValid[this.lcDestination.id]=(this.lcDestination.value.length!=0)}this.locationsValid=true;for(var A in this.locationControlsValid){this.locationsValid=this.locationsValid&&this.locationControlsValid[A]}if(this.lcOptionLocation){if(this.lcOptionLocation.value.length>0){SetWTButtonText(this.btnShowOptions.parentNode,"hide options");ShowElement(this.divOptionDetails,true)}}this.SetSearchButtonState()};SeasonTicketSearchControl.prototype.ToggleMoreOptions=function(B,A){var C=document.getElementById(A);if(C.style.display=="block"){ShowElement(C,false);SetWTButtonText(B,this.moreOptions)}else{ShowElement(C,true);SetWTButtonText(B,this.hideOptions)}};SeasonTicketSearchControl.prototype.SetRailcardListboxNames=function(A){for(var B=0;B<this.lstDetails.length;B++){this.lstDetails[B].id=this.ticketSearchControlIdPrefix+"lstRailcardDetails"+B;this.lstDetails[B].name=this.ticketSearchControlNamePrefix+"lstRailcardDetails"+B;this.lstNumber[B].id=this.ticketSearchControlIdPrefix+"lstRailcardNumber"+B;this.lstNumber[B].name=this.ticketSearchControlNamePrefix+"lstRailcardNumber"+B;this.lstDetailsAdults[B].id=this.ticketSearchControlIdPrefix+"lstRailcardDetailsAdults"+B;this.lstDetailsAdults[B].name=this.ticketSearchControlNamePrefix+"lstRailcardDetailsAdults"+B;this.lstDetailsChildren[B].id=this.ticketSearchControlIdPrefix+"lstRailcardDetailsChildren"+B;this.lstDetailsChildren[B].name=this.ticketSearchControlNamePrefix+"lstRailcardDetailsChildren"+B}};SeasonTicketSearchControl.prototype.SetRailcardDetailsVisibility=function(D){var C=D.parentNode;var A=YAHOO.util.Dom.getElementsByClassName("RailcardDetailsLine",undefined,C);for(var B=0;B<A.length;B++){ShowElement(A[B],D.value.charAt(3)!="0")}};SeasonTicketSearchControl.prototype.SetAddRemoveButton=function(B,A){if(A){SetWTButtonText(B,this.removeRailcards);B.className="liremove"}else{SetWTButtonText(B,this.addMoreRailcards);B.className="liarrowpr"}};SeasonTicketSearchControl.prototype.SetAllRailcardDetailsVisibility=function(C){var E=document.getElementById(C);var F=YAHOO.util.Dom.getElementsByClassName("RailcardDetails",undefined,E);for(var B=0;B<F.length;B++){this.SetRailcardDetailsVisibility(F[B])}var D=YAHOO.util.Dom.getElementsByClassName("liarrowpr",undefined,E);for(var A=0;A<D.length;A++){this.SetAddRemoveButton(D[A],(A!=0))}};SeasonTicketSearchControl.prototype.AddRemoveRailcard=function(A){var D=A.parentNode.parentNode;if(A.className=="liremove"){D.parentNode.removeChild(D)}else{var B=D.cloneNode(true);D.parentNode.appendChild(B);this.RemoveRailcardErrorMessage(B);this.SetRailcardDetailsVisibility(GetChildWithStyle(B,"RailcardDetails",true));var C=YAHOO.util.Dom.getElementsByClassName("liarrowpr",undefined,B)[0];this.SetAddRemoveButton(C,true)}this.GetRailcardArray();this.SetRailcardListboxNames(D.parentNode)};SeasonTicketSearchControl.prototype.RemoveRailcardErrorMessage=function(B){var A=GetChildWithStyle(B,"ErrorText",false);if(A){A.parentNode.removeChild(A)}};SeasonTicketSearchControl.prototype.GetRailcardArray=function(){this.lstDetails=YAHOO.util.Dom.getElementsByClassName("RailcardDetails",undefined,this.divRailcardDetails);this.lstNumber=YAHOO.util.Dom.getElementsByClassName("RailcardNumber",undefined,this.divRailcardDetails);this.lstDetailsAdults=YAHOO.util.Dom.getElementsByClassName("RailcardDetailsAdults",undefined,this.divRailcardDetails);this.lstDetailsChildren=YAHOO.util.Dom.getElementsByClassName("RailcardDetailsChildren",undefined,this.divRailcardDetails)};SeasonTicketSearchControl.prototype.EnableReturnPanel=function(B,A){ShowElement(this.pnlReturnTravelDates,this.rdoReturn.checked)};SeasonTicketSearchControl.prototype.CopyListOptions=function(A,C){C.length=A.length;for(var B=0;B<A.length;B++){C[B]=A[B]}};SeasonTicketSearchControl.prototype.SetOpenReturn=function(){var B=YAHOO.util.Dom.get(this.chkOpenReturn.parentNode.parentNode.parentNode);var C=B.getElementsByTagName("SELECT");for(var D=0;D<C.length;D++){if(C[D].disabled!=this.chkOpenReturn.checked){if(this.chkOpenReturn.checked){C[D].currentlySelctedIndex=C[D].selectedIndex;if(C[D].disabledOptions==undefined){C[D].disabledOptions=new Array()}this.CopyListOptions(C[D].options,C[D].disabledOptions);C[D].options.length=0}else{this.CopyListOptions(C[D].disabledOptions,C[D].options);C[D].selectedIndex=C[D].currentlySelctedIndex}C[D].disabled=this.chkOpenReturn.checked}}var A=B.getElementsByTagName("IMG");if(this.chkOpenReturn.checked){A[0].src=ImagePath+"CalendarDisabled.gif"}else{A[0].src=ImagePath+"Calendar.gif"}this.CheckDateValidity()};SeasonTicketSearchControl.prototype.SelectFavourite=function(B,F,D,H,E){var A=B.value.split("~");if(A.length==17){document.getElementById(F).value=A[0];document.getElementById(D).value=A[1];document.getElementById(H).value=A[2];document.getElementById(E).value=A[3];if(this.chkStandardClass!=undefined){this.chkStandardClass.checked=A[4]!="0"}if(this.chkFirstClass!=undefined){this.chkFirstClass.checked=A[5]!="0"}this.lstOutwardDay.value=A[6];this.lstOutwardMonthYear.value=A[7];this.rdoAdult.checked=A[8]!="0";this.rdoChild.checked=A[9]!="0";if(parseInt(A[10])>0){this.chkRailcards.checked=true;ShowElement(this.divRailcardDetails,true);var I=A[11].split("@@");var C=I[0].split(",");var G=0;for(i=0;i<this.lstDetails[G].length;i++){if(this.lstDetails[G].options[i].value.substring(0,3)==C[3]){this.lstDetails[G].value=this.lstDetails[G].options[i].value;this.SetRailcardDetailsVisibility(this.lstDetails[G])}}}else{this.chkRailcards.checked=false;ShowElement(this.divRailcardDetails,false)}if(this.chkWeeklySeason!=undefined){this.chkWeeklySeason.checked=A[13]!="0"}if(this.chkMonthlySeason!=undefined){this.chkMonthlySeason.checked=A[14]!="0"}if(this.chkAnnualSeason!=undefined){this.chkAnnualSeason.checked=A[15]!="0"}if(A[16]!=""&&A[16]!="00007"&&A[16]!="01000"&&A[16]!="12000"){if(this.chkCustomSeason!=undefined){this.chkCustomSeason.checked=true}}else{if(this.chkCustomSeason!=undefined){this.chkCustomSeason.checked=false}}if(this.chkCustomSeason!=undefined){this.IsEnableDisableSeasonValid(this.chkCustomSeason.checked)}this.SetInitialControlState()}};SeasonTicketSearchControl.prototype.SetSearchButtonState=function(){if(this.searchButton){DisableWTButton(this.searchButton,!this.datesValid||!this.locationsValid||!this.passengersValid)}};SeasonTicketSearchControl.prototype.GetDate=function(D,A,E,F){var C=A.value.split("/");var B=new Date(C[1],C[0]-1,D.value,E,E,0);if(!B||B.getDate()!=D.value){return undefined}else{return B}};SeasonTicketSearchControl.prototype.SetErrorText=function(A,B){A.innerHTML=B;if(B.length>0){ShowElement(A,true)}else{ShowElement(A,false)}};SeasonTicketSearchControl.prototype.AreDatesValid=function(){var C=true;this.SetErrorText(this.divOutwardDepartureError,"");if(this.chkCustomSeason!=null){this.SetErrorText(this.divSeasonValidError,"")}if(this.lstOutwardDay==undefined){return C}var A=this.GetDate(this.lstOutwardDay,this.lstOutwardMonthYear,23,59);if(this.chkCustomSeason!=null){var B=this.GetDate(this.lstTravelOutwardDay,this.lstTravelOutwardMonthYear,23,59)}if(!A){this.SetErrorText(this.divOutwardDepartureError,this.notValid);C=false}else{if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked&&!B){this.SetErrorText(this.divSeasonValidError,this.notValid);C=false}else{if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked&&A>B){this.SetErrorText(this.divSeasonValidError,this.untilEarliestDate);C=false}else{if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked){if(this.lstSeasonValidMonths.value==12&&this.lstSeasonValidDays.value>0){this.SetErrorText(this.divSeasonValidError,this.untilLatestDate);C=false}else{if(this.lstSeasonValidMonths.value==0&&this.lstSeasonValidDays.value<7){this.SetErrorText(this.divSeasonValidError,this.notValidSeason);C=false}else{var D;if(B.getMonth()==1){D=this.daysInMonth(B.getMonth(),B.getFullYear())}else{if(B.getMonth()==2){D=this.daysInMonth(B-1,B.getFullYear())}else{D=this.daysInMonth(A.getMonth(),A.getFullYear())}}A.setDate(A.getDate()+6);if(B>A){A.setDate(A.getDate()-7);A.setDate(A.getDate()+D);if(B<A){this.SetErrorText(this.divSeasonValidError,this.notValidSeason);C=false}}}}}}}}A=this.GetDate(this.lstOutwardDay,this.lstOutwardMonthYear,23,59);if(this.chkCustomSeason!=null){B=this.GetDate(this.lstTravelOutwardDay,this.lstTravelOutwardMonthYear,23,59)}if(A<this.dtEarliestAvailable){this.SetErrorText(this.divOutwardDepartureError,this.outwardEarliestDate);this.setOutwardDate(this.dtEarliestAvailable);if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked){this.UpdateUntilDate()}}else{if(A>this.dtLatestAvailable){this.SetErrorText(this.divOutwardDepartureError,this.outwardLatestDate);this.setOutwardDate(this.dtLatestAvailable);if(this.chkCustomSeason!=null&&this.chkCustomSeason.checked){this.UpdateUntilDate()}}}return C};SeasonTicketSearchControl.prototype.CheckDateValidity=function(){this.datesValid=this.AreDatesValid();this.SetSearchButtonState()};SeasonTicketSearchControl.prototype.OutwardDateChanged=function(){if(!(this.untilDateChanged||this.OrForDateChanged)){this.setUntilDefaultDate()}if(this.untilDateChanged){this.UpdateOrForDate()}else{this.UpdateUntilDate()}this.CheckDateValidity()};SeasonTicketSearchControl.prototype.UntilDateChanged=function(){this.untilDateChanged=true;this.orForDateChanged=false;this.CheckDateValidity()};SeasonTicketSearchControl.prototype.OrForDateChanged=function(){this.orForDateChanged=true;this.untilDateChanged=false;this.CheckDateValidity()};SeasonTicketSearchControl.prototype.CalendarDateChanged=function(B,A){if(B==this.lstTravelOutwardDay){this.UntilDateChanged();this.UpdateOrForDate();this.CheckDateValidity()}else{this.OutwardDateChanged()}};SeasonTicketSearchControl.prototype.CheckLocationValidity=function(C,D){var B=D[0]._oTextbox;var E=D[1];if(!B.zeroLengthValid){E=E&&B.value.length>2}this.locationControlsValid[B.id]=E;var A=true;for(var F in this.locationControlsValid){A=A&&this.locationControlsValid[F]}this.locationsValid=A;this.SetSearchButtonState()};SeasonTicketSearchControl.prototype.SetError=function(A,B){this.divErrorText.innerHTML=A;ShowElement(this.divErrorSection,A.length>0);if(this.closeButtons[0]){ShowWTButton(this.closeButtons[0],B)}if(this.closeButtons[1]){ShowWTButton(this.closeButtons[1],A.length==0)}};SeasonTicketSearchControl.prototype.DisableClose=function(){if(this.closeButtons[0]){ShowWTButton(this.closeButtons[0],false)}if(this.closeButtons[1]){ShowWTButton(this.closeButtons[1],false)}};SeasonTicketSearchControl.prototype.EnsureOneClassIsSelected=function(A){if(!A.checked){if(this.chkStandardClass!=null&&this.chkFirstClass!=null&&A==this.chkStandardClass){this.chkFirstClass.checked=true}else{if(this.chkStandardClass!=null&&this.chkFirstClass!=null){this.chkStandardClass.checked=true}}}};SeasonTicketSearchControl.prototype.EnsureOneSeasonTypeIsSelected=function(A){if(!A.checked){if(this.chkWeeklySeason!=null&&this.chkMonthlySeason!=null&&this.chkAnnualSeason!=null&&!this.chkWeeklySeason.checked&&!this.chkMonthlySeason.checked&&!this.chkAnnualSeason.checked){if(A==this.chkWeeklySeason){this.chkMonthlySeason.checked=true}else{if(A==this.chkMonthlySeason){this.chkAnnualSeason.checked=true}else{this.chkWeeklySeason.checked=true}}}}};SeasonTicketSearchControl.prototype.FillListBox=function(C,B,A){var D=C.value;C.options.length=0;for(var E=B;E<=A;E++){C.options[C.options.length]=new Option(E,E)}C.value=D};SeasonTicketSearchControl.prototype.ShowTicketSearchControl=function(A,B){ShowElement(document.getElementById(ticketSearchControlColapsableContentsClientID),A);ShowElement(document.getElementById(ticketSearchControlHeaderContentClientID),!A);if(this.rdoOneWay){this.CheckDateValidity();this.EnableReturnPanel()}if(typeof (helpPanels)!="undefined"){helpPanels.SetTicketSearchControlHelpZIndex(!A)}if(typeof (mixingDeck)!="undefined"){if(B){this.rdoReturn.checked=true;this.rdoReturn.onclick()}this.showing=A;mixingDeck.filterPanel.Show(!A);if(mixingDeck.lowestFareFinder){mixingDeck.lowestFareFinder.ShowMinimised(!A);mixingDeck.lowestFareFinder.ShowMaximised(false)}mixingDeck.ShowTransparentDiv(A)}};SeasonTicketSearchControl.prototype.EnableDisableSeasonValid=function(A){this.IsEnableDisableSeasonValid(A.checked)};SeasonTicketSearchControl.prototype.IsEnableDisableSeasonValid=function(A){this.lstTravelOutwardDay.disabled=!A;this.lstTravelOutwardMonthYear.disabled=!A;this.lstSeasonValidDays.disabled=!A;this.lstSeasonValidMonths.disabled=!A;this.setUntilDefaultDate();this.UpdateUntilDate();this.datesValid=this.AreDatesValid();this.SetSearchButtonState()};function CalcEndDate(C,H,F){var O;var P=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);var K,G,D,B,L;var E=false;var A=false;var I=false;var N=new Date();N=C;K=N.getDate();G=N.getMonth();D=N.getYear();G=G+H;while(G>12){D++;G-=12;I=true}if(K==1){if(G==1){G=12;D--}else{G--;A=true}K=99}else{K--}B=D%4;if((B==0)&&(G==1)){if(K>29){K=29}}else{if((!A&&!I)&&(D!=N.getYear())){if(K>P[G]){K=P[G]}}else{var M=G;if(G<12){M=G+1}if(K>P[M]){K=P[M]}}}K=K+F;E=false;while(!E){B=D%4;if((B==0)&&(G==1)){if(K>29){K-=29;G++}else{E=true}}else{if((G==1)&&(K==29||K==30)&&(F==0)){if(B==0){K=29}else{K=28}E=true}else{if(!A&&D!=N.getYear()){var J=G;if(I&&(K>P[J])){J+=1}if(K>P[J]){K=K-P[J];G++}else{E=true}}else{if(K>P[G+1]){K=K-P[G+1];G++}else{E=true}}}}if(G>12){D++;G=1}}untilDate=new Date(D,G,K);return untilDate}SeasonTicketSearchControl.prototype.UpdateUntilDate=function(){try{if(!this.chkCustomSeason.checked){return }if(parseInt(this.lstSeasonValidMonths.value)>=12&&this.lstSeasonValidDays.value>0){return }var A;var D=this.GetDate(this.lstOutwardDay,this.lstOutwardMonthYear,23,59);var E=parseInt(this.lstSeasonValidMonths.value);var C=(parseInt(this.lstSeasonValidDays.value));A=CalcEndDate(D,E,C);this.lstTravelOutwardDay.value=A.getDate();this.lstTravelOutwardMonthYear.value=(parseInt(A.getMonth())+1)+"/"+A.getFullYear();this.UpdateOrForDate()}catch(B){}};SeasonTicketSearchControl.prototype.UpdateOrForDate=function(){try{if(!this.chkCustomSeason.checked){return }var K=0,M;var H=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var L=0;var O=new Date();var J=new Date();var I=new Date();var B=this.GetDate(this.lstOutwardDay,this.lstOutwardMonthYear,23,59);var E=this.GetDate(this.lstTravelOutwardDay,this.lstTravelOutwardMonthYear,23,59);var C=E.getDate();var D=E.getMonth();var G=E.getYear();var A=B.getDate();var N=B.getMonth();J=new Date(B.toDateString());E=new Date(E.toDateString());B=new Date(B.toDateString());while(J<E){O=J;J=CalcEndDate(B,K,0);K++}if(J>E){K--}if(K>0){if(J.getTime()==E.getTime()){K--;L=0}else{K--;if(C>=A){L=C-A+1}else{M=D-1;if(A==31&&M==1){M=D;L=this.daysInMonth(M,G)+C-A}else{L=this.daysInMonth(M,G)+C-A+1}}}}else{L=C-A+1;K=0}if(L<0||L==undefined){L=0}this.lstSeasonValidDays.value=L;this.lstSeasonValidMonths.value=K}catch(F){}};SeasonTicketSearchControl.prototype.setUntilDefaultDate=function(){var A=this.GetDate(this.lstOutwardDay,this.lstOutwardMonthYear,23,59);var B=this.GetDate(this.lstTravelOutwardDay,this.lstTravelOutwardMonthYear,23,59);if(A>B){if(this.lstTravelOutwardDay){this.lstTravelOutwardDay.value=this.lstOutwardDay.value}if(this.lstTravelOutwardMonthYear){this.lstTravelOutwardMonthYear.value=this.lstOutwardMonthYear.value}}};SeasonTicketSearchControl.prototype.setOutwardDate=function(A){if(this.lstOutwardDay){this.lstOutwardDay.value=A.getDate()}if(this.lstOutwardMonthYear){this.lstOutwardMonthYear.value=A.getMonth()+1+"/"+A.getFullYear()}};SeasonTicketSearchControl.prototype.monthsBetween=function(A,B){if(A>B){return this.monthsBetween(B,A)}var C=0;if(B.getFullYear()>A.getFullYear()){C=C+(B.getFullYear()-A.getFullYear()-1)*12}else{return B.getMonth()-A.getMonth()}if(B.getMonth()>A.getMonth()){C=C+12+B.getMonth()-A.getMonth()}else{C=C+(12-A.getMonth())+B.getMonth()}return C};SeasonTicketSearchControl.prototype.daysInMonth=function(B,A){return 32-new Date(A,B,32).getDate()};SeasonTicketSearchControl.prototype.totalDaysBetweenTwoDates=function(A,C){var B=1000*60*60*24;return(Math.ceil((C.getTime()-A.getTime())/(B)))};SeasonTicketSearchControl.prototype.LocationOptionChanged=function(){if(YAHOO.lang.trim(this.lcOptionLocation.value).length>0){this.chkShowServices.checked=true}};SeasonTicketSearchControl.prototype.UpdateOnlySmartcardFares=function(A){if(this.chkShowItsoSmartCard!=null){mixingDeck.ShowOnlySmartCardFares(this.chkShowItsoSmartCard.checked)}if(typeof (mixingDeck)!="undefined"){mixingDeck.UpdateFilter()}}