var resultsServices,cipServices;app.service("resultsServices",["utilityServices","$timeout","$translate","$filter",function(n,t,i,r){resultsServices=this;var u=function(n){var t=n.toString();return t.includes(",")&&(t=t.replace(/,/g,"")),websiteCurrency=="TMN"?parseInt(t)*10:parseInt(t)};this.flights=new function(){this.initializeResultList=function(t,i,f){var e,o;$("html,body").animate({scrollTop:0},"slow");e=(new Date).getTime();filtered=this.filter.filtered;list=f.dirrectSearch?t:t.FlightProposals;(f.existenceAirlines==undefined||f.SearchFlightRequest.WebSocketEnabled&&f.WebSocketReceiveDataCount!==1)&&(f.existenceAirlines=[[],[]],f.existenceAirlinesMinPrices=[[],[]],f.existenceStops=[[],[]],f.existenceStopsMinPrices=[[],[]],f.existenceTimes=[[],[]],f.existenceTimesMinPrices=[[],[]],f.existenceServiceProviders=[[],[]],f.existenceServiceProvidersMinPrices=[[],[]],f.existenceCabinClasses=[[],[]],f.existenceCabinClassesMinPrices=[[],[]],f.existenceFlightTypes=[[],[]],f.existenceFlightTypesMinPrices=[[],[]],f.existenceFlightValid=[[],[]],f.priceRange=[{min:null,max:null},{min:null,max:null}],f.pagingModel=[[],[]],f.suggestedFlightIds=[{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null},{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null}],f.suggestedFlightsList=[[],[]],f.cheaperPrice=[null,null]);angular.forEach(f.SearchFlightRequest.OriginDestinationInformations,function(n,t){if(f.domHasReturn&&t==i||!f.domHasReturn){if(f.reservationType==1){var u="";f.TripType[1]==1?(t==0&&(u=r("translate")("OriginPath")),t==1&&(u=r("translate")("DestinationPath"))):f.TripType[1]==2&&(u=r("translate")("Route")+f.indexToOrdinalform(t,!0));f.mobileOrederOptionsForInt.push({value:"FlightGroups["+t+"].Departure",text:r("translate")("SoonerFlight")+u});f.mobileOrederOptionsForInt.push({value:"-FlightGroups["+t+"].Departure",text:r("translate")("LaterFlight")+u});f.mobileOrederOptionsForInt.push({value:"FlightGroups["+t+"].DurationTotalMinutes",text:r("translate")("LowerFLightTime")+u});f.mobileOrederOptionsForInt.push({value:"-FlightGroups["+t+"].DurationTotalMinutes",text:r("translate")("HigherFLightTime")+u})}f.existenceStops[i].push([]);f.existenceStopsMinPrices[i].push([]);f.existenceTimes[i].push([]);f.existenceTimesMinPrices[i].push([]);filtered[i].stops.push([]);filtered[i].times.push([]);f.filtered[i].stops.push({});f.filtered[i].times.push({});f.filtered[i].stopsCount.push(0);f.filtered[i].timesCount.push(0)}});angular.forEach(list,function(t,r){t.hide=!1;t.StaticIndex=r;t.TotalSingleAdultFare?t.System=="Y"?(t.TotalPrice=t.TotalSingleAdultFare,t.TotalPriceForView=f.strToMiss(t.TotalPrice,!0)):(t.TotalPrice=t.TotalSingleAdultFare-t.Pricing[0].WebsiteDiscount,t.TotalPriceForView=f.strToMiss(t.TotalPrice,!0)):(t.TotalPrice=null,t.TotalPriceForView=0);t.SystemForView=f.serviceProviderName(t.System);t.TotalSingleAdultFare?t.System=="Y"?(t.TotalPriceWithoutDiscount=t.TotalSingleAdultFare,t.TotalPriceWithoutDiscountForView=f.strToMiss(t.TotalPriceWithoutDiscount,!0)):(t.TotalPriceWithoutDiscount=t.TotalSingleAdultFare+t.Pricing[0].Discount,t.TotalPriceWithoutDiscountForView=f.strToMiss(t.TotalPriceWithoutDiscount,!0)):(t.TotalPriceWithoutDiscount=0,t.TotalPriceWithoutDiscountForView=0);angular.forEach(t.Pricing,function(n){n.FareForView=f.strToMiss(n.Fare,!0);n.TaxForView=f.strToMiss(n.Tax,!0);n.TotalForView=f.strToMiss(n.Total-n.WebsiteDiscount,!0);n.DiscountForView=f.strToMiss(n.Discount+n.WebsiteDiscount,!0)});t.Total==0&&(t.Total=null);f.reservationType!=0||f.dirrectSearch||(t.FlightGroups[0].Status=="A"&&(t.FlightGroups[0].Status=10),t.FlightGroups[0].Status=t.FlightGroups[0].Status==="A"||parseInt(t.FlightGroups[0].Status)>0?parseInt(t.FlightGroups[0].Status):0);angular.forEach(t.FlightGroups,function(r,e){if(r.AirlineCode=r.AirlineCode.toUpperCase(),r.AirlineCodeForView=f.airlineCodeToName(r.AirlineCode),r.DurationForView=f.durationFormater(r.Duration),r.Duration=parseInt(r.Duration),r.OriginForViewEn=r.Origin,r.DestinationForViewEn=r.Destination,r.OriginForViewFa=r.Origin,r.DestinationForViewFa=r.Destination,r.ClassTypeForView=f.reservationType==0?f.cabinClasses(r.ClassType,!0):f.cabinClasses(r.ClassType,!1),angular.forEach(r.FlightDetails,function(n){n.DurationForView=f.durationFormater(n.Duration);n.OriginForViewEn=n.Origin;n.DestinationForViewEn=n.Destination;n.OriginForViewFa=n.Origin;n.DestinationForViewFa=n.Destination;f.airportCodesList.indexOf(n.Origin)==-1&&f.airportCodesList.push(n.Origin.toUpperCase());f.airportCodesList.indexOf(n.Destination)==-1&&f.airportCodesList.push(n.Destination.toUpperCase())}),r.Status!==0){var s=t.FlightGroups[0].AirlineCode,o=t.TotalPrice,h=r.FlightDetails.length-1,p=parseInt(moment(r.Departure).format("HH")),c=n.calendar.hourToDayPart(p),l=t.System,a=t.FlightGroups[0].ClassType,v=t.IsCharter,y=t.OwnerCompanyName,w=$.inArray(s,f.existenceAirlines[i])>-1,b=$.inArray(h,f.existenceStops[i][e])>-1,k=$.inArray(c,f.existenceTimes[i][e])>-1,d=$.inArray(l,f.existenceServiceProviders[i])>-1,g=$.inArray(a,f.existenceCabinClasses[i])>-1,nt=$.inArray(v,f.existenceFlightTypes[i])>-1,tt=$.inArray(y,f.existenceFlightValid[i])>-1,it=o<f.priceRange[i].min&&o!==null||f.priceRange[i].min==null&&o!==null,rt=o>f.priceRange[i].max&&o!==null||f.priceRange[i].max==null&&o!==null,ut=o>f.priceRange[i].min&&o<f.cheaperPrice[i]&&o!==null||f.cheaperPrice[i]==null&&o!==null;w||f.existenceAirlines[i].push(s);f.dirrectSearch||((f.existenceAirlinesMinPrices[i][s]===undefined&&o!==null||u(f.existenceAirlinesMinPrices[i][s])>o&&o!==null)&&(f.existenceAirlinesMinPrices[i][s]=f.strToMiss(o,!0)),b||f.existenceStops[i][e].push(h),(f.existenceStopsMinPrices[i][e][h]===undefined&&o!==null||u(f.existenceStopsMinPrices[i][e][h])>o&&o!==null)&&(f.existenceStopsMinPrices[i][e][h]=f.strToMiss(o,!0)),k||f.existenceTimes[i][e].push(c),(f.existenceTimesMinPrices[i][e][c]===undefined&&o!==null||u(f.existenceTimesMinPrices[i][e][c])>o&&o!==null)&&(f.existenceTimesMinPrices[i][e][c]=f.strToMiss(o,!0)),d||f.existenceServiceProviders[i].push(l),(f.existenceServiceProvidersMinPrices[i][l]===undefined&&o!==null||u(f.existenceServiceProvidersMinPrices[i][l])>o&&o!==null)&&(f.existenceServiceProvidersMinPrices[i][l]=f.strToMiss(o,!0)),g||f.existenceCabinClasses[i].push(a),(f.existenceCabinClassesMinPrices[i][a]===undefined&&o!==null||u(f.existenceCabinClassesMinPrices[i][a])>o&&o!==null)&&(f.existenceCabinClassesMinPrices[i][a]=f.strToMiss(o,!0)),nt||f.existenceFlightTypes[i].push(v),(f.existenceFlightTypesMinPrices[i][v]===undefined&&o!==null||u(f.existenceFlightTypesMinPrices[i][v])>o&&o!==null)&&(f.existenceFlightTypesMinPrices[i][v]=f.strToMiss(o,!0)),it&&(f.priceRange[i].min=o,f.suggestedFlightIds[i].cheaperFlightId=f.suggestedFlightIds[i].cheapestFlightId,f.suggestedFlightIds[i].cheapestFlightId=t.Id),rt&&(f.priceRange[i].max=o,f.suggestedFlightIds[i].mostExpensiveFlightId=t.Id),ut&&(f.cheaperPrice[i]=o,f.suggestedFlightIds[i].cheaperFlightId=t.Id),tt||f.existenceFlightValid[i].push(y))}});f.dirrectSearch||(f.reservationType==1||f.domHasReturn?(r==0&&f.pagingModel[i].push({from:0,to:14}),r==15&&f.pagingModel[i].push({from:15,to:29}),r==30&&f.pagingModel[i].push({from:30,to:44}),r==45&&f.pagingModel[i].push({from:45,to:59}),r==60&&f.pagingModel[i].push({from:60,to:74}),r==75&&f.pagingModel[i].push({from:75,to:89}),r==90&&f.pagingModel[i].push({from:90,to:104}),r==105&&f.pagingModel[i].push({from:105,to:119}),r==120&&f.pagingModel[i].push({from:120,to:134}),r==135&&f.pagingModel[i].push({from:135,to:149}),r==150&&f.pagingModel[i].push({from:150,to:164}),r==165&&f.pagingModel[i].push({from:165,to:179}),r==180&&f.pagingModel[i].push({from:180,to:194}),r==195&&f.pagingModel[i].push({from:195,to:209}),r==210&&f.pagingModel[i].push({from:210,to:224}),r==225&&f.pagingModel[i].push({from:225,to:239}),r==240&&f.pagingModel[i].push({from:240,to:254}),r==255&&f.pagingModel[i].push({from:255,to:269}),r==270&&f.pagingModel[i].push({from:270,to:284}),r==285&&f.pagingModel[i].push({from:285,to:299}),r==300&&f.pagingModel[i].push({from:300,to:314}),r==315&&f.pagingModel[i].push({from:315,to:329}),r==330&&f.pagingModel[i].push({from:330,to:344}),r==345&&f.pagingModel[i].push({from:345,to:359}),r==360&&f.pagingModel[i].push({from:360,to:374}),r==375&&f.pagingModel[i].push({from:375,to:389}),r==390&&f.pagingModel[i].push({from:390,to:404})):f.reservationType==0&&(r==0&&f.pagingModel[i].push({from:0,to:199}),r==200&&f.pagingModel[i].push({from:200,to:399})))});f.dirrectSearch||(f.priceSlider[i].from=f.priceRange[i].min,f.priceSlider[i].to=f.priceRange[i].max,f.priceSlider[i].min=f.priceRange[i].min,f.priceSlider[i].max=f.priceRange[i].max,filtered[i].price=f.priceRange[i]);f.GetCitiesList(f.airportCodesList,!1,i,"ResultList");f.dirrectSearch||(o=function(){var n=list.find(function(n){return n.Id==f.suggestedFlightIds[i].cheapestFlightId}),t=list.find(function(n){return n.Id==f.suggestedFlightIds[i].cheaperFlightId}),r=list.find(function(n){return n.Id==f.suggestedFlightIds[i].mostExpensiveFlightId});f.suggestedFlightsList[i].push(n);f.suggestedFlightsList[i].push(t);f.suggestedFlightsList[i].push(r)},o());console.log("Filters Intializing Time: "+((new Date).getTime()-e)+" ms")};this.initializeFlightPrposalItem=function(n,t){t.TotalSingleAdultFare?(t.TotalPrice=t.TotalSingleAdultFare-t.Pricing[0].WebsiteDiscount,t.TotalPriceForView=n.strToMiss(t.TotalPrice,!0),t.TotalPriceWithoutDiscount=t.TotalSingleAdultFare+t.Pricing[0].Discount,t.TotalPriceWithoutDiscountForView=n.strToMiss(t.TotalPriceWithoutDiscount,!0)):(t.TotalPrice=null,t.TotalPriceForView=0,t.TotalPriceWithoutDiscount=0,t.TotalPriceWithoutDiscountForView=0);t.SystemForView=n.serviceProviderName(t.System);angular.forEach(t.Pricing,function(t){t.FareForView=n.strToMiss(t.Fare,!0);t.TaxForView=n.strToMiss(t.Tax,!0);t.TotalForView=n.strToMiss(t.Total-t.WebsiteDiscount,!0);t.DiscountForView=n.strToMiss(t.Discount+t.WebsiteDiscount,!0)});angular.forEach(t.FlightGroups,function(t){t.AirlineCode=t.AirlineCode.toUpperCase();t.AirlineCodeForView=n.airlineCodeToName(t.AirlineCode);t.DurationForView=n.durationFormater(t.Duration);t.OriginForViewEn=t.Origin;t.DestinationForViewEn=t.Destination;t.OriginForViewFa=t.Origin;t.DestinationForViewFa=t.Destination;t.ClassTypeForView=n.reservationType==0?n.cabinClasses(t.ClassType,!0):n.cabinClasses(t.ClassType,!1);angular.forEach(t.FlightDetails,function(t){t.DurationForView=n.durationFormater(t.Duration);t.OriginForViewEn=t.Origin;t.DestinationForViewEn=t.Destination;t.OriginForViewFa=t.Origin;t.DestinationForViewFa=t.Destination;!0})})};this.translateCities=function(n,t){angular.forEach(n,function(n){angular.forEach(n.FlightGroups,function(n){n.OriginForViewEn=t.citiesDictionary(n.Origin);n.DestinationForViewEn=t.citiesDictionary(n.Destination);n.OriginForViewFa=t.citiesDictionary(n.Origin,!0);n.DestinationForViewFa=t.citiesDictionary(n.Destination,!0);angular.forEach(n.FlightDetails,function(n){n.OriginForViewEn=t.citiesDictionary(n.Origin);n.DestinationForViewEn=t.citiesDictionary(n.Destination);n.OriginForViewFa=t.citiesDictionary(n.Origin,!0);n.DestinationForViewFa=t.citiesDictionary(n.Destination,!0)})})})};this.filter=new function(){this.do=function(t,i,r){i.resultFiltering=!0;i.filtered[t].allCount=0;var u=this;angular.forEach(i.FlightResultList[t].FlightProposals,function(r){var e=function(){var n=!0;return angular.forEach(r.FlightGroups,function(i,r){if(n){var f=i.FlightDetails.length-1;if(u.filtered[t].stops[r].indexOf(f)!==-1||u.filtered[t].stops[r].length==0)return!0;n=!1}}),n},o=function(){var i=!0;return angular.forEach(r.FlightGroups,function(r,f){if(i){var e=n.calendar.hourToDayPart(parseInt(moment(r.Departure).format("HH")));if(u.filtered[t].times[f].indexOf(e)!==-1||u.filtered[t].times[f].length==0)return!0;i=!1}}),i},s=r.FlightGroups[0].AirlineCode,h=r.System,c=r.FlightGroups[0].ClassType,l=r.IsCharter,a=r.FlightGroups[0].Status,v=r.OwnerCompanyName,f=r.TotalPrice,y=o(),p=e(),w=u.filtered[t].airlines.indexOf(s)!==-1||u.filtered[t].airlines.length==0,b=u.filtered[t].serviceProvider.indexOf(h)!==-1||u.filtered[t].serviceProvider.length==0,k=u.filtered[t].cabinClasses.indexOf(c)!==-1||u.filtered[t].cabinClasses.length==0,d=u.filtered[t].flightTypes.indexOf(l)!==-1||u.filtered[t].flightTypes.length==0,g=u.filtered[t].flightValid.indexOf(v)!==-1||u.filtered[t].flightValid.length==0,nt=u.filtered[t].price.min<=f&&u.filtered[t].price.max>=f||a==0;y&&w&&p&&nt&&b&&k&&d&&g?r.hide=!1:(r.hide=!0,i.filtered[t].allCount+=1)});r(function(){$("html,body").animate({scrollTop:110},"normal");i.resultFiltering=!1},600)};this.filtered=[{classType:[],price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[],cabinClasses:[],flightTypes:[],flightValid:[],ownFlight:[]},{classType:[],price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[],cabinClasses:[],flightTypes:[],flightValid:[],ownFlight:[]}];this.price=function(n,t,i){this.filtered[n].price.min=t.priceSlider[n].min;this.filtered[n].price.max=t.priceSlider[n].max;var r=this;i(function(){r.do(n,t,i)},100)};this.time=function(n,t,i,r,u){this.filtered[t].times[n].indexOf(i)!==-1?(this.filtered[t].times[n].splice(this.filtered[t].times[n].indexOf(i),1),r.filtered[t].times[n][i]=!1,r.filtered[t].timesCount[n]-=1):(this.filtered[t].times[n].push(i),r.filtered[t].times[n][i]=!0,r.filtered[t].timesCount[n]+=1);this.do(t,r,u)};this.airline=function(n,t,i,r){this.filtered[n].airlines.indexOf(t)!==-1?(this.filtered[n].airlines.splice(this.filtered[n].airlines.indexOf(t),1),i.filtered[n].airlines[t]=!1,i.filtered[n].airlinesCount-=1):(this.filtered[n].airlines.push(t),i.filtered[n].airlines[t]=!0,i.filtered[n].airlinesCount+=1);this.do(n,i,r)};this.cabinClass=function(n,t,i,r){this.filtered[n].cabinClasses.indexOf(t)!==-1?(this.filtered[n].cabinClasses.splice(this.filtered[n].cabinClasses.indexOf(t),1),i.filtered[n].cabinClasses[t]=!1,i.filtered[n].cabinClassesCount-=1):(this.filtered[n].cabinClasses.push(t),i.filtered[n].cabinClasses[t]=!0,i.filtered[n].cabinClassesCount+=1);this.do(n,i,r)};this.stop=function(n,t,i,r,u){this.filtered[t].stops[n].indexOf(i)!==-1?(this.filtered[t].stops[n].splice(this.filtered[t].stops[n].indexOf(i),1),r.filtered[t].stops[n][i]=!1,r.filtered[t].stopsCount[n]-=1):(this.filtered[t].stops[n].push(i),r.filtered[t].stops[n][i]=!0,r.filtered[t].stopsCount[n]+=1);this.do(t,r,u)};this.serviceProvider=function(n,t,i,r){this.filtered[n].serviceProvider.indexOf(t)!==-1?(this.filtered[n].serviceProvider.splice(this.filtered[n].serviceProvider.indexOf(t),1),i.filtered[n].serviceProvider[t]=!1,i.filtered[n].serviceProvidersCount-=1):(this.filtered[n].serviceProvider.push(t),i.filtered[n].serviceProvider[t]=!0,i.filtered[n].serviceProvidersCount+=1);this.do(n,i,r)};this.flightType=function(n,t,i,r){this.filtered[n].flightTypes.indexOf(t)!==-1?(this.filtered[n].flightTypes.splice(this.filtered[n].flightTypes.indexOf(t),1),i.filtered[n].flightTypes[t]=!1,i.filtered[n].flightTypesCount-=1):(this.filtered[n].flightTypes.push(t),i.filtered[n].flightTypes[t]=!0,i.filtered[n].flightTypesCount+=1);this.do(n,i,r)};this.flightsValid=function(n,t,i,r){this.filtered[n].flightValid.indexOf(t)!==-1?(this.filtered[n].flightValid.splice(this.filtered[n].flightValid.indexOf(t),1),i.filtered[n].flightValid[t]=!1,i.filtered[n].flightValidCount-=1):(this.filtered[n].flightValid.push(t),i.filtered[n].flightValid[t]=!0,i.filtered[n].flightValidsCount+=1);this.do(n,i,r)}};this.order=function(n,t,i,r){i.resultOrdering=!0;i.resultOrder[t]=n;r(function(){i.resultOrdering=!1},200)};this.checkTrain=function(n,t,i){var r,u,f;if(n)for(i.existenceTimes[t]=[],r=0;r<n.length;r++)n[r].ExitTime>"00:00"&&n[r].ExitTime<"12:00"&&(n[r].TimeStatus=0,i.existenceTimes[t].includes(0)||i.existenceTimes[t].push(0)),n[r].ExitTime>"12:00"&&n[r].ExitTime<"18:00"&&(n[r].TimeStatus=1,i.existenceTimes[t].includes(1)||i.existenceTimes[t].push(1)),n[r].ExitTime>"18:00"&&n[r].ExitTime<"00:00"&&(n[r].TimeStatus=2,i.existenceTimes[t].includes(2)||i.existenceTimes[t].push(2));for(u=0;u<i.existenceTimes[t].length;u++)f=n.reduce(function(n,r){return n=n.Cost?n.Cost:n,r.TimeStatus==i.existenceTimes[t][u]&&r.Cost<n?r.Cost:n}),i.existenceTimes[t][u]={time:u,minCost:f}};this.calendar=new function(){this.initialize=function(t,i,r,u){var f=[],e=function(){var o=new Date(SearchFlightRequest.OriginDestinationInformations[0].DepartureDateTime).getTime()-2592e5,h=SearchFlightRequest.OriginDestinationInformations[0].Origin.LocationCode,c=SearchFlightRequest.OriginDestinationInformations[0].Destination.LocationCode,l,s,n,r;for(typeof u!="undefined"&&(o=new Date(SearchFlightRequest.OriginDestinationInformations[u].DepartureDateTime).getTime()-2592e5,h=SearchFlightRequest.OriginDestinationInformations[u].Origin.LocationCode,c=SearchFlightRequest.OriginDestinationInformations[u].Destination.LocationCode),l=SearchFlightRequest.FlightSearchClassType==1?"Economy":"Business",i.hasReturn&&i.reservationType==1&&(s=new Date(SearchFlightRequest.OriginDestinationInformations[1].DepartureDateTime).getTime()-2592e5),i.reservationType==0?URLDependsOnFlightType="Domestic":i.reservationType==1&&(URLDependsOnFlightType="International"),n=0;n<7;n++){var t=parseInt(i.dateFormater(o+864e5*n,"milliseconds","jYYYYjMMjDD",!0,null)),v=i.dateFormater(o+864e5*n,"milliseconds","dddd jD jMMMM",!0,null),p={DepartureDate:t,DepartureDateForView:v,Airline:null,Price:null,PriceWithoutZero:null,Link:null,IsMinPrice:!1,IsMaxPrice:!1,ReturnFlights:[]};if(typeof airTourCustomize!="undefined")var t=parseInt(i.dateFormater(o+864e5*n,"milliseconds","jYYYYjMMjDD",!0,null)),v=i.dateFormater(o+864e5*n,"milliseconds","jD jMMMM",!0,null),w=i.dateFormater(o+864e5*n,"milliseconds"," dddd",!0,null),p={DepartureDate:t,DepartureDateForView:v,DepartureDateweekForView:w,Airline:null,Price:null,PriceWithoutZero:null,Link:null,IsMinPrice:!1,IsMaxPrice:!1,ReturnFlights:[]};if(f.push(p),i.hasReturn&&i.reservationType==1)for(r=0;r<7;r++){var e=parseInt(i.dateFormater(s+864e5*r,"milliseconds","jYYYYjMMjDD",!0,null)),y=i.dateFormater(s+864e5*r,"milliseconds","dddd jD jMMMM",!0,null),a={ReturnDate:e,ReturnDateForView:y,Price:null,PriceWithoutZero:null,Airline:null,IsMinPrice:!1,IsMaxPrice:!1,InvalidFlightDate:!1,Link:"/Flight/Search/"+URLDependsOnFlightType+"/"+l+"/"+i.adultCount+"/"+i.childCount+"/"+i.infantCount+"/"+h+"/"+c+"/"+t+"/"+e};if(t>e&&(a.InvalidFlightDate=!0),typeof airTourCustomize!="undefined"){var e=parseInt(i.dateFormater(s+864e5*r,"milliseconds","jYYYYjMMjDD",!0,null)),y=i.dateFormater(s+864e5*r,"milliseconds","jD jMMMM",!0,null),b=i.dateFormater(s+864e5*r,"milliseconds","dddd",!0,null),a={ReturnDate:e,ReturnDateForView:y,ReturnweekDateForView:b,Price:null,PriceWithoutZero:null,Airline:null,IsMinPrice:!1,IsMaxPrice:!1,InvalidFlightDate:!1,Link:"/Flight/Search/"+URLDependsOnFlightType+"/"+l+"/"+i.adultCount+"/"+i.childCount+"/"+i.infantCount+"/"+h+"/"+c+"/"+t+"/"+e};t>e&&(a.InvalidFlightDate=!0)}f[n].ReturnFlights.push(a)}else f[n].Link="/Flight/Search/"+URLDependsOnFlightType+"/"+l+"/"+i.adultCount+"/"+i.childCount+"/"+i.infantCount+"/"+h+"/"+c+"/"+t}},o=function(){var r,e,o,s;angular.forEach(t,function(t,u){var s=parseInt(n.calendar.dateFormater(t.DepartureDate,"YYYY-MM-DD","jYYYYjMMjDD",!0,null)),c=n.missionary.strToMiss(t.TotalPrice,!0,!0),l=n.missionary.strToMiss(i.removeZero(t.TotalPrice),!0,!0),o=typeof f.find=="function"?f.find(function(n){return n.DepartureDate==s}):f.filter(function(n){return n.DepartureDate==s})[0],h;u==0?t.TotalPrice?(r=parseInt(t.TotalPrice),e=parseInt(t.TotalPrice)):(r=0,e=0):(t.TotalPrice<r&&(r=parseInt(t.TotalPrice)),t.TotalPrice>e&&(e=parseInt(t.TotalPrice)));o&&(i.hasReturn&&i.reservationType==1&&(h=parseInt(n.calendar.dateFormater(t.ReturnDate,"YYYY-MM-DD","jYYYYjMMjDD",!0,null)),o=typeof f.find=="function"?f.find(function(n){return n.DepartureDate==s}).ReturnFlights.find(function(n){return n.ReturnDate==h}):f.filter(function(n){return n.DepartureDate==s})[0].ReturnFlights.filter(function(n){return n.ReturnDate==h})[0]),o&&(o.Price=c,o.PriceWithoutZero=l,o.Airline=t.AirlineId))});o=n.missionary.strToMiss(r,!0,!0);s=n.missionary.strToMiss(e,!0,!0);i.hasReturn&&i.reservationType==1?(angular.forEach(f,function(n){angular.forEach(n.ReturnFlights,function(n){n.Price==o&&(n.IsMinPrice=!0);n.Price==s&&(n.IsMaxPrice=!0)})}),typeof u!="undefined"?(i.calendarLists[u]=angular.copy(f),i.hasReturn&&i.reservationType==1&&(i.calendarLists[0]&&i.calendarLists[1]&&angular.forEach(i.calendarLists[0],function(n){n.Link+="/"+i.calendarLists[1][3].DepartureDate}),i.calendarLists[1]&&i.calendarLists[0]&&angular.forEach(i.calendarLists[1],function(n){var t=n.Link.split("/").pop();n.Link=n.Link.replace(n.DepartureDate,"");n.Link+="/"+i.calendarLists[0][3].DepartureDate+"/"+t}))):i.calendarList=f):(angular.forEach(f,function(n){n.Price==o&&(n.IsMinPrice=!0);n.Price==s&&(n.IsMaxPrice=!0)}),typeof u!="undefined"?(i.calendarLists[u]=angular.copy(f),i.hasReturn&&i.reservationType==0&&(i.calendarLists[0]&&i.calendarLists[1]&&angular.forEach(i.calendarLists[0],function(n){n.Link+="/"+i.calendarLists[1][3].DepartureDate}),i.calendarLists[1]&&i.calendarLists[0]&&angular.forEach(i.calendarLists[1],function(n){var t=n.Link.split("/").pop();n.Link=n.Link.replace(n.DepartureDate,"");n.Link+="/"+i.calendarLists[0][3].DepartureDate+"/"+t}))):i.calendarList=f)};e();setTimeout(function(){o();console.log(f)},500)}}};this.tours=new function(){this.initializeResultList=function(n,t,i){$("html,body").animate({scrollTop:0},"slow");filtered=this.filter.filtered;i.existenceAirlines==undefined&&(i.existenceAirlines=[],i.existenceAirlinesMinPrices=[],i.existenceHotels=[],i.existenceHotelsMinPrices=[],i.existenceHotelsDegree=[],i.existenceHotelsDegreeMinPrices=[],i.existenceFacilities=[],i.existenceOrigins=[],i.existenceOriginsMinPrices=[],i.priceRange={min:null,max:null},i.pagingModel=[]);angular.forEach(n,function(n,t){n.hide=!1;n.StaticIndex=t;n.FromDateForView=i.dateFormater(n.FromDate,"milliseconds","dddd jDD jMMMM",!0);n.ToDateForView=i.dateFormater(n.ToDate,"milliseconds","dddd jDD jMMMM",!0);n.TourBasePriceForView=i.strToMiss(n.TourBasePrice,!0);n.ShowPriceForView=i.strToMiss(n.ShowPrice,!0);var r=n.ShowPriceADL,f=n.TransporterId,e=n.OriginName,o=$.inArray(f,i.existenceAirlines)>-1,s=$.inArray(e,i.existenceOrigins)>-1,h=r<i.priceRange.min&&r!==null||i.priceRange.min==null&&r!==null,c=r>i.priceRange.max&&r!==null||i.priceRange.max==null&&r!==null;angular.forEach(n.Hotels,function(n){var t,f,e=!1,o=!1;t=n.HotelPersianName;f=n.HotelDegree;e=$.inArray(t,i.existenceHotels)>-1;o=$.inArray(f,i.existenceHotelsDegree)>-1;e||i.existenceHotels.push(t);o||i.existenceHotelsDegree.push(f);(i.existenceHotelsMinPrices[t]===undefined&&r!==null||u(i.existenceHotelsMinPrices[t])>r&&r!==null)&&(i.existenceHotelsMinPrices[t]=i.strToMiss(r,!0));(i.existenceHotelsDegreeMinPrices[f]===undefined&&r!==null||u(i.existenceHotelsDegreeMinPrices[f])>r&&r!==null)&&(i.existenceHotelsDegreeMinPrices[f]=i.strToMiss(r,!0))});angular.forEach(n.TourFacilities,function(n){var t,r=!1;n.IsDeleted||(t=n.TourFacilityName,r=$.inArray(t,i.existenceFacilities)>-1,r||i.existenceFacilities.push(t))});angular.forEach(n.TourRooms,function(n){n.RoomSinglePriceForView=i.strToMiss(n.RoomSinglePrice,!0);n.RoomTotalPriceForView=i.strToMiss(n.RoomTotalPrice,!0);n.RoomSelectedCount=0});o||i.existenceAirlines.push(f);(i.existenceAirlinesMinPrices[f]===undefined&&r!==null||u(i.existenceAirlinesMinPrices[f])>r&&r!==null)&&(i.existenceAirlinesMinPrices[f]=i.strToMiss(r,!0));s||i.existenceOrigins.push(e);(i.existenceOriginsMinPrices[e]===undefined&&r!==null||u(i.existenceOriginsMinPrices[e])>r&&r!==null)&&(i.existenceOriginsMinPrices[e]=i.strToMiss(r,!0));h&&(i.priceRange.min=r);c&&(i.priceRange.max=r)});i.priceSlider.from=i.priceRange.min;i.priceSlider.to=i.priceRange.max;i.priceSlider.min=i.priceRange.min;i.priceSlider.max=i.priceRange.max;filtered.price=i.priceRange};this.filter=new function(){this.do=function(n,t){n.resultFiltering=!0;n.filtered.allCount=0;var i=this;angular.forEach(n.Tours,function(r){var c=r.ShowPriceADL,l=r.TransporterId,a=r.OriginName,o=[],s=[],h=[],v=i.filtered.price.min<=c&&i.filtered.price.max>=c,y=i.filtered.airlines.indexOf(l)!==-1||i.filtered.airlines.length==0,p=i.filtered.origins.indexOf(a)!==-1||i.filtered.origins.length==0,u=!0,f=!0,e=!0;angular.forEach(r.Hotels,function(n){var t=n.HotelPersianName,i=n.HotelDegree,r=$.inArray(t,o)>-1,u=$.inArray(i,s)>-1;r||o.push(t);u||s.push(i)});angular.forEach(r.TourFacilities,function(n){if(!n.IsDeleted){var t=n.TourFacilityName,i=$.inArray(t,h)>-1;i||h.push(t)}});angular.forEach(i.filtered.hotels,function(n){u&&(u=o.indexOf(n)!==-1?!0:!1)});angular.forEach(i.filtered.hotelDegree,function(n){f&&(f=s.indexOf(n)!==-1?!0:!1)});angular.forEach(i.filtered.facilities,function(n){e&&(e=h.indexOf(n)!==-1?!0:!1)});p&&y&&v&&u&&e&&f?t(function(){r.hide=!1},200):(r.hide=!0,n.filtered.allCount+=1)});t(function(){$("html,body").animate({scrollTop:110},"normal");n.resultFiltering=!1},600)};this.filtered={price:{min:null,max:null},inPriceRangeFilter:[],airlines:[],facilities:[],hotels:[],hotelDegree:[],origins:[]};this.price=function(n,t){this.filtered.price.min=n.priceSlider.min;this.filtered.price.max=n.priceSlider.max;var i=this;t(function(){i.do(n,t)},100)};this.hotelDegree=function(n,i){this.filtered.hotelDegree.indexOf(n)!==-1?(this.filtered.hotelDegree.splice(this.filtered.hotelDegree.indexOf(n),1),i.filtered.hotelDegree[n]=!1,i.filtered.hotelDegreeCount-=1):(this.filtered.hotelDegree.push(n),i.filtered.hotelDegree[n]=!0,i.filtered.hotelDegreeCount+=1);this.do(i,t)};this.hotelName=function(n,i){this.filtered.hotels.indexOf(n)!==-1?(this.filtered.hotels.splice(this.filtered.hotels.indexOf(n),1),i.filtered.hotels[n]=!1,i.filtered.hotelsCount-=1):(this.filtered.hotels.push(n),i.filtered.hotels[n]=!0,i.filtered.hotelsCount+=1);this.do(i,t)};this.hotelNameReset=function(n){this.filtered.hotels=[];n.filtered.hotels=[];n.filtered.hotelsCount=0;this.do(n,t)};this.originName=function(n,i){this.filtered.origins.indexOf(n)!==-1?(this.filtered.origins.splice(this.filtered.origins.indexOf(n),1),i.filtered.origins[n]=!1,i.filtered.originsCount-=1):(this.filtered.origins.push(n),i.filtered.origins[n]=!0,i.filtered.originsCount+=1);this.do(i,t)};this.originNameReset=function(n){this.filtered.origins=[];n.filtered.origins=[];n.filtered.originsCount=0;this.do(n,t)};this.facility=function(n,i){this.filtered.facilities.indexOf(n)!==-1?(this.filtered.facilities.splice(this.filtered.facilities.indexOf(n),1),i.filtered.facilities[n]=!1,i.filtered.facilitiesCount-=1):(this.filtered.facilities.push(n),i.filtered.facilities[n]=!0,i.filtered.facilitiesCount+=1);this.do(i,t)};this.facilityReset=function(n){this.filtered.facilities=[];n.filtered.facilities=[];n.filtered.facilitiesCount=0;this.do(n,t)}}};this.hotels=new function(){this.initializeResultList=function(n,t,i){$("html,body").animate({scrollTop:0},"slow");i.existenceHotelsStarRate==undefined&&(i.existenceHotelsStarRate=[],i.existenceHotelsType=[],i.existenceHotelsTypeTranslated=[],i.existenceHotelsStarRateMinPrices=[],i.existenceHotelsTypeMinPrices=[],i.existenceFacilities=[],i.priceRange={min:null,max:null},i.pagingModel=[]);i.HotelsMarkersList=[];angular.forEach(n,function(n,t){function f(n){var i,t;if(n==null)return n;for(i=["hostel","aparthotel","apartment","hotel","villa","resort","challet","other"],t=0;t<i.length;t++)if(n.toLowerCase().indexOf(i[t])>-1)return i[t];return"other"}function h(n){var i,r,t;if(n==null)return n;for(i=["hostel","aparthotel","apartment","hotel","villa","resort","challet","other"],r=["هتل","هتل آپارتمان","آپارتمان","هتل","ویلا","هتل تفریحی","کلبه چوبی","سایر"],t=0;t<i.length;t++)if(n.toLowerCase().indexOf(i[t])>-1)return r[t];return"سایر"}var s;n.hide=!1;n.StaticIndex=t;n.BasicPropertyInfo.Description=n.BasicPropertyInfo.Description?n.BasicPropertyInfo.Description:"";n.RoomRates[0].Total.TotalFare.AmountForView=n.RoomRates[0].Total.TotalFare.CurrencyCode=="IRR"?i.strToMiss(n.RoomRates[0].Total.TotalFare.Amount,!1,!1):n.RoomRates[0].Total.TotalFare.Amount;n.PlaceTypeClean=f(n.PlaceType);n.PlaceTypeClean_fa=h(n.PlaceType);n.PlaceType=n.ProviderType==0?"hotel":n.PlaceType;var r=n.RoomRates[0].Total.TotalFare.Amount,o=n.BasicPropertyInfo.RateProviderKeyValues.length?n.BasicPropertyInfo.RateProviderKeyValues[0].Key:n.BasicPropertyInfo.RateProviderKeyValues[0]={Key:0},e=n.PlaceTypeClean,c=$.inArray(o,i.existenceHotelsStarRate)>-1,l=$.inArray(f(e),i.existenceHotelsType)>-1,a=r<i.priceRange.min&&r!==null||i.priceRange.min==null&&r!==null,v=r>i.priceRange.max&&r!==null||i.priceRange.max==null&&r!==null;c||i.existenceHotelsStarRate.push(o);l||e&&(i.existenceHotelsType.push(f(e)),i.existenceHotelsTypeTranslated.push(i.hotelTypeTranslation[f(e)]));(i.existenceHotelsStarRateMinPrices[o]===undefined&&r!==null||u(i.existenceHotelsStarRateMinPrices[o])>r&&r!==null)&&(i.existenceHotelsStarRateMinPrices[o]=i.strToMiss(r,!0));(i.existenceHotelsTypeMinPrices[f(e)]===undefined&&r!==null||u(i.existenceHotelsTypeMinPrices[f(e)+"_price"])>r&&r!==null)&&(i.existenceHotelsTypeMinPrices[f(e)+"_price"]=r,i.existenceHotelsTypeMinPrices[f(e)]=i.strToMiss(r,!0));a&&(i.priceRange.min=r);v&&(i.priceRange.max=r);s=function(){var t={id:n.StaticIndex+1,latitude:n.BasicPropertyInfo.Latitude,longitude:n.BasicPropertyInfo.Longitude};i.HotelsMarkersList.push(t)};n.BasicPropertyInfo.Latitude&&n.BasicPropertyInfo.Longitude&&s()});i.priceSlider.from=i.priceRange.min;i.priceSlider.to=i.priceRange.max;i.priceSlider.min=i.priceRange.min;i.priceSlider.max=i.priceRange.max;this.filter.filtered.price.min=i.priceRange.min;this.filter.filtered.price.max=i.priceRange.max};this.initializeCombinationsList=function(n){angular.forEach(n.SelectedHotel.RoomRates,function(t){t.Total.TotalFare.AmountForOneNightForView=n.strToMiss(t.Total.TotalFare.Amount/n.CalculateTripDurationNightCountForView,!1,!0);t.Total.TotalFare.AmountForView=t.Total.TotalFare.CurrencyCode=="IRR"?n.strToMiss(t.Total.TotalFare.Amount,!1):t.Total.TotalFare.Amount;angular.forEach(t.CancelPenalties,function(n){n.RemarkParse=JSON.parse(n.Remark)})});angular.forEach(n.SelectedHotel.BasicPropertyInfo.Facilities,function(t){angular.forEach(t.Facilities,function(t){t.ClassName=n.facilityCodeToClassName(t.Code)})})};this.order=function(n,t,i){t.ResultOrdering=!0;t.ResultOrder=n;i(function(){t.ResultOrdering=!1},700)};this.filter=new function(){this.do=function(n,t){function r(n){var i,t;if(n==null)return n;for(i=["hostel","aparthotel","apartment","hotel","villa","resort","challet","other"],t=0;t<i.length;t++)if(n.toLowerCase().indexOf(i[t])>-1)return i[t];return"other"}n.ResultFiltering=!0;n.HotelNameFilter.BasicPropertyInfo.Name="";n.Filtered.AllCount=0;var i=this;angular.forEach(n.Hotels,function(t){var u=t.RoomRates[0].Total.TotalFare.Amount,f=t.BasicPropertyInfo.RateProviderKeyValues[0].Key,e=t.PlaceType,o=i.filtered.price.min<=u&&i.filtered.price.max>=u,s=i.filtered.hotelDegree.indexOf(f)!==-1||i.filtered.hotelDegree.length==0,h=i.filtered.hotelType.indexOf(n.hotelTypeTranslation[r(e)][0])!==-1||i.filtered.hotelType.length==0;o&&s&&h?t.hide=!1:(t.hide=!0,n.Filtered.AllCount+=1)});t(function(){$("html,body").animate({scrollTop:110},"normal");n.ResultFiltering=!1},1e3)};this.filtered={price:{min:null,max:null},airlines:[],facilities:[],hotels:[],hotelDegree:[],hotelType:[],origins:[]};this.hotelDegree=function(n,i){this.filtered.hotelDegree.indexOf(n)!==-1?(this.filtered.hotelDegree.splice(this.filtered.hotelDegree.indexOf(n),1),i.Filtered.HotelDegree[n]=!1,i.Filtered.HotelDegreeCount-=1):(this.filtered.hotelDegree.push(n),i.Filtered.HotelDegree[n]=!0,i.Filtered.HotelDegreeCount+=1);this.do(i,t)};this.hotelType=function(n,i){this.filtered.hotelType.indexOf(n)!==-1?(this.filtered.hotelType.splice(this.filtered.hotelType.indexOf(n),1),i.Filtered.HotelType[n]=!1,i.Filtered.HotelTypeCount-=1):(this.filtered.hotelType.push(n),i.Filtered.HotelType[n]=!0,i.Filtered.HotelTypeCount+=1);this.do(i,t)};this.hotelName=function(n,i){this.filtered.hotels.indexOf(n)!==-1?(this.filtered.hotels.splice(this.filtered.hotels.indexOf(n),1),i.filtered.hotels[n]=!1,i.filtered.hotelsCount-=1):(this.filtered.hotels.push(n),i.filtered.hotels[n]=!0,i.filtered.hotelsCount+=1);this.do(i,t)};this.hotelNameReset=function(n){this.filtered.hotels=[];n.filtered.hotels=[];n.filtered.hotelsCount=0;this.do(n,t)};this.price=function(n,t){this.filtered.price.min=n.priceSlider.min;this.filtered.price.max=n.priceSlider.max;var i=this;t(function(){i.do(n,t)},100)};this.originName=function(n,i){this.filtered.origins.indexOf(n)!==-1?(this.filtered.origins.splice(this.filtered.origins.indexOf(n),1),i.filtered.origins[n]=!1,i.filtered.originsCount-=1):(this.filtered.origins.push(n),i.filtered.origins[n]=!0,i.filtered.originsCount+=1);this.do(i,t)};this.originNameReset=function(n){this.filtered.origins=[];n.filtered.origins=[];n.filtered.originsCount=0;this.do(n,t)};this.facility=function(n,i){this.filtered.facilities.indexOf(n)!==-1?(this.filtered.facilities.splice(this.filtered.facilities.indexOf(n),1),i.filtered.facilities[n]=!1,i.filtered.facilitiesCount-=1):(this.filtered.facilities.push(n),i.filtered.facilities[n]=!0,i.filtered.facilitiesCount+=1);this.do(i,t)};this.facilityReset=function(n){this.filtered.facilities=[];n.filtered.facilities=[];n.filtered.facilitiesCount=0;this.do(n,t)}}};this.invoice=new function(){this.translateCities=function(n,t){angular.forEach(n,function(n){var i=n.Origin,r=n.Destination;i&&i.length<5&&(n.OriginForViewEn=t.citiesDictionary(i),n.OriginForViewFa=t.citiesDictionary(i,!0));r&&r.length<5&&(n.DestinationForViewFa=t.citiesDictionary(r,!0),n.DestinationForViewEn=t.citiesDictionary(r))})}};this.insurance=new function(){this.initializeResultList=function(){};this.calculateDiscount=function(n,t){n.reserveTotalPrice=0;n.reserveTotalTax=0;angular.forEach(t[0].Passengers,function(t){var i=n.BookRequest.TransporterPassengersInfoes[0].Passengers.find(function(n){return n.DocumentNumber===t.DocumentNumber}),r=typeof n.BookRequest.TransporterPassengersInfoes[0].Passengers.find=="function"?n.BookRequest.TransporterPassengersInfoes[0].Passengers.find(function(n){return n.DocumentNumber===t.DocumentNumber}):n.BookRequest.TransporterPassengersInfoes[0].Passengers.filter(function(n){return n.DocumentNumber===t.DocumentNumber})[0];i.DocumentNumber==t.DocumentNumber&&(i.Tax=t.Tax,i.TotalPrice=t.TotalPrice,r.Tax=t.Tax,n.reserveTotalPrice+=t.TotalPrice,n.reserveTotalTax+=t.Tax);!n.hasTax&&t.Tax>0&&(n.hasTax=!0)});console.log(n.BookRequest.TransporterPassengersInfoes)}};this.cip=new function(){this.initializeResultList=function(){}};this.bus=new function(){this.initializeResultList=function(t,i,r){list=t;filtered=this.filter.filtered;var f=(new Date).getTime();r.cheaperPrice=[null,null];r.existenceAirlines=[[],[]];r.existenceAirlinesMinPrices=[[],[]];r.existenceStops=[[],[]];r.existenceStopsMinPrices=[[],[]];r.existenceServiceProviders=[[],[]];r.existenceServiceProvidersMinPrices=[[],[]];r.existenceCabinClasses=[[],[]];r.existenceCabinClassesMinPrices=[[],[]];r.existenceFlightTypes=[[],[]];r.existenceFlightTypesMinPrices=[[],[]];r.existenceFlightValid=[[],[]];r.existenceTimes[i].push([]);r.existenceTimesMinPrices[i].push([]);filtered[i].times.push([]);r.filtered[i].times.push({});r.filtered[i].timesCount.push(0);r.priceRange=[{min:null,max:null},{min:null,max:null}];r.pagingModel=[[],[]];r.suggestedFlightIds=[{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null},{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null}];r.suggestedFlightsList=[[],[]];r.cheaperPrice=[null,null];angular.forEach(list,function(t){t.Fare==0&&(t.Fare=null);var e=t.LogoCode,f=t.Fare,s=parseInt(t.DepartureTime.split(":")[0]),o=n.calendar.hourToDayPart(s),h=$.inArray(e,r.existenceAirlines[i])>-1,c=$.inArray(o,r.existenceTimes[i][0])>-1,l=f<r.priceRange[i].min&&f!==null||r.priceRange[i].min==null&&f!==null,a=f>r.priceRange[i].max&&f!==null||r.priceRange[i].max==null&&f!==null,v=f>r.priceRange[i].min&&f<r.cheaperPrice[i]&&f!==null||r.cheaperPrice[i]==null&&f!==null;h||r.existenceAirlines[i].push(e);(r.existenceAirlinesMinPrices[i][e]===undefined&&f!==null||u(r.existenceAirlinesMinPrices[i][e])>f&&f!==null)&&(r.existenceAirlinesMinPrices[i][e]=r.strToMiss(f,!0));c||r.existenceTimes[i][0].push(o);(r.existenceTimesMinPrices[i][0][o]===undefined&&f!==null||u(r.existenceTimesMinPrices[i][0][o])>f&&f!==null)&&(r.existenceTimesMinPrices[i][0][o]=r.strToMiss(f,!0));(r.existenceServiceProvidersMinPrices[i][e]===undefined&&f!==null||u(r.existenceServiceProvidersMinPrices[i][e])>f&&f!==null)&&(r.existenceServiceProvidersMinPrices[i][e]=r.strToMiss(f,!0));l&&(r.priceRange[i].min=f,r.suggestedFlightIds[i].cheaperFlightId=r.suggestedFlightIds[i].cheapestFlightId,r.suggestedFlightIds[i].cheapestFlightId=t.Id);a&&(r.priceRange[i].max=f,r.suggestedFlightIds[i].mostExpensiveFlightId=t.Id);v&&(r.cheaperPrice[i]=f,r.suggestedFlightIds[i].cheaperFlightId=t.Id)});r.priceSlider[i].from=r.priceRange[i].min;r.priceSlider[i].to=r.priceRange[i].max;r.priceSlider[i].min=r.priceRange[i].min;r.priceSlider[i].max=r.priceRange[i].max;filtered[i].price=r.priceRange[i]};this.filter=new function(){this.do=function(t,i,r){i.resultFiltering=!0;i.filtered[t].allCount=0;var u=this;angular.forEach(i.busResultList,function(r){var e=function(){var i=!0,f,e;if(i){if(f=parseInt(r.DepartureTime.split(":")[0]),e=n.calendar.hourToDayPart(f),u.filtered[t].times[0].indexOf(e)!==-1||u.filtered[t].times[0].length==0)return!0;i=!1}return i},o=r.LogoCode,f=r.Fare,s=e(),h=u.filtered[t].price.min<=f&&u.filtered[t].price.max>=f,c=u.filtered[t].airlines.indexOf(o)!==-1||u.filtered[t].airlines.length==0;s&&c&&h?r.hide=!1:(r.hide=!0,i.filtered[t].allCount+=1)});r(function(){$("html,body").animate({scrollTop:110},"normal");i.resultFiltering=!1},600)};this.filtered=[{price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[]},{price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[]}];this.price=function(n,t,i){this.filtered[n].price.min=t.priceSlider[n].min;this.filtered[n].price.max=t.priceSlider[n].max;var r=this;i(function(){r.do(n,t,i)},100)};this.time=function(n,t,i,r,u){this.filtered[t].times[n].indexOf(i)!==-1?(this.filtered[t].times[n].splice(this.filtered[t].times[n].indexOf(i),1),r.filtered[t].times[n][i]=!1,r.filtered[t].timesCount[n]-=1):(this.filtered[t].times[n].push(i),r.filtered[t].times[n][i]=!0,r.filtered[t].timesCount[n]+=1);this.do(t,r,u)};this.airline=function(n,t,i,r){this.filtered[n].airlines.indexOf(t)!==-1?(this.filtered[n].airlines.splice(this.filtered[n].airlines.indexOf(t),1),i.filtered[n].airlines[t]=!1,i.filtered[n].airlinesCount-=1):(this.filtered[n].airlines.push(t),i.filtered[n].airlines[t]=!0,i.filtered[n].airlinesCount+=1);this.do(n,i,r)}}};this.train=new function(){this.initializeResultList=function(t,i,r){var f;list=t;i!=1&&(f=(new Date).getTime(),filtered=this.filter.filtered,f=(new Date).getTime(),r.cheaperPrice=[null,null],r.existenceAirlines=[[],[]],r.existenceAirlinesMinPrices=[[],[]],r.existenceStops=[[],[]],r.existenceStopsMinPrices=[[],[]],r.existenceServiceProviders=[[],[]],r.existenceServiceProvidersMinPrices=[[],[]],r.existenceCabinClasses=[[],[]],r.existenceCabinClassesMinPrices=[[],[]],r.existenceFlightTypes=[[],[]],r.existenceFlightTypesMinPrices=[[],[]],r.existenceFlightValid=[[],[]],r.existenceTimes=[[],[]],r.existenceTimesMinPrices=[[],[]],r.priceRange=[{min:null,max:null},{min:null,max:null}],r.pagingModel=[[],[]],r.suggestedFlightIds=[{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null},{cheapestFlightId:null,cheaperFlightId:null,mostExpensiveFlightId:null}],r.suggestedFlightsList=[[],[]],r.cheaperPrice=[null,null]);r.existenceTimes[i].push([]);r.existenceTimesMinPrices[i].push([]);filtered[i].times.push([]);r.filtered[i].times.push({});r.filtered[i].timesCount.push(0);angular.forEach(list,function(t,f){var o,e;if(r.reservationType==10||r.trainHasReturn?(f==0&&r.pagingModel[i].push({from:0,to:14}),f==15&&r.pagingModel[i].push({from:15,to:29}),f==30&&r.pagingModel[i].push({from:30,to:44}),f==45&&r.pagingModel[i].push({from:45,to:59}),f==60&&r.pagingModel[i].push({from:60,to:74}),f==75&&r.pagingModel[i].push({from:75,to:89}),f==90&&r.pagingModel[i].push({from:90,to:104}),f==105&&r.pagingModel[i].push({from:105,to:119}),f==120&&r.pagingModel[i].push({from:120,to:134}),f==135&&r.pagingModel[i].push({from:135,to:149}),f==150&&r.pagingModel[i].push({from:150,to:164}),f==165&&r.pagingModel[i].push({from:165,to:179}),f==180&&r.pagingModel[i].push({from:180,to:194}),f==195&&r.pagingModel[i].push({from:195,to:209}),f==210&&r.pagingModel[i].push({from:210,to:224}),f==225&&r.pagingModel[i].push({from:225,to:239}),f==240&&r.pagingModel[i].push({from:240,to:254}),f==255&&r.pagingModel[i].push({from:255,to:269}),f==270&&r.pagingModel[i].push({from:270,to:284}),f==285&&r.pagingModel[i].push({from:285,to:299}),f==300&&r.pagingModel[i].push({from:300,to:314}),f==315&&r.pagingModel[i].push({from:315,to:329}),f==330&&r.pagingModel[i].push({from:330,to:344}),f==345&&r.pagingModel[i].push({from:345,to:359}),f==360&&r.pagingModel[i].push({from:360,to:374}),f==375&&r.pagingModel[i].push({from:375,to:389}),f==390&&r.pagingModel[i].push({from:390,to:404})):r.reservationType==6&&(f==0&&r.pagingModel[i].push({from:0,to:199}),f==200&&r.pagingModel[i].push({from:200,to:399})),t.Fare==0&&(t.Fare=null),o=t.LogoCode,e=t.FullPrice,r.reservationType==6&&(h=parseInt(t.ExitTime.split(":")[0]),s=n.calendar.hourToDayPart(h)),r.reservationType==10)var h=parseInt(t.DepartureDateTimeObject.Time.split(":")[0]),s=n.calendar.hourToDayPart(h),e=t.TotalPrice;var c=$.inArray(o,r.existenceAirlines[i])>-1,l=$.inArray(s,r.existenceTimes[i][0])>-1,a=e<r.priceRange[i].min&&e!==null||r.priceRange[i].min==null&&e!==null,v=e>r.priceRange[i].max&&e!==null||r.priceRange[i].max==null&&e!==null,y=e>r.priceRange[i].min&&e<r.cheaperPrice[i]&&e!==null||r.cheaperPrice[i]==null&&e!==null;c||r.existenceAirlines[i].push(o);(r.existenceAirlinesMinPrices[i][o]===undefined&&e!==null||u(r.existenceAirlinesMinPrices[i][o])>e&&e!==null)&&(r.existenceAirlinesMinPrices[i][o]=r.strToMiss(e,!0));l||r.existenceTimes[i][0].push(s);(r.existenceTimesMinPrices[i][0][s]===undefined&&e!==null||u(r.existenceTimesMinPrices[i][0][s])>e&&e!==null)&&(r.existenceTimesMinPrices[i][0][s]=r.strToMiss(e,!0));(r.existenceServiceProvidersMinPrices[i][o]===undefined&&e!==null||u(r.existenceServiceProvidersMinPrices[i][o])>e&&e!==null)&&(r.existenceServiceProvidersMinPrices[i][o]=r.strToMiss(e,!0));a&&(r.priceRange[i].min=e,r.suggestedFlightIds[i].cheaperFlightId=r.suggestedFlightIds[i].cheapestFlightId,r.suggestedFlightIds[i].cheapestFlightId=t.Id);v&&(r.priceRange[i].max=e,r.suggestedFlightIds[i].mostExpensiveFlightId=t.Id);y&&(r.cheaperPrice[i]=e,r.suggestedFlightIds[i].cheaperFlightId=t.Id)});r.priceSlider[i].from=r.priceRange[i].min;r.priceSlider[i].to=r.priceRange[i].max;r.priceSlider[i].min=r.priceRange[i].min;r.priceSlider[i].max=r.priceRange[i].max;filtered[i].price=r.priceRange[i]};this.filter=new function(){this.do=function(t,i,r){i.resultFiltering=!0;i.filtered[t].allCount=0;var u=this;t==0&&i.reservationType==6&&angular.forEach(i.trainResultList.GoingAvailableRs,function(r){var e=function(){var i=!0,f,e;if(i){if(f=parseInt(r.ExitTime.split(":")[0]),e=n.calendar.hourToDayPart(f),u.filtered[t].times[0].indexOf(e)!==-1||u.filtered[t].times[0].length==0)return!0;i=!1}return i},o=r.LogoCode,f=r.FullPrice,s=e(),h=u.filtered[t].price.min<=f&&u.filtered[t].price.max>=f,c=u.filtered[t].airlines.indexOf(o)!==-1||u.filtered[t].airlines.length==0;s&&c&&h?r.hide=!1:(r.hide=!0,i.filtered[t].allCount+=1)});i.reservationType==10&&angular.forEach(i.trainResultList,function(r){var e=function(){var i=!0,f,e;if(i){if(f=parseInt(r.DepartureDateTimeObject.Time.split(":")[0]),e=n.calendar.hourToDayPart(f),u.filtered[t].times[0].indexOf(e)!==-1||u.filtered[t].times[0].length==0)return!0;i=!1}return i},o=r.LogoCode,f=r.TotalPrice,s=e(),h=u.filtered[t].price.min<=f&&u.filtered[t].price.max>=f,c=u.filtered[t].airlines.indexOf(o)!==-1||u.filtered[t].airlines.length==0;s&&c&&h?r.hide=!1:(r.hide=!0,i.filtered[t].allCount+=1)});t==1&&angular.forEach(i.trainResultList.ReturnAvailableRs,function(r){var e=function(){var i=!0,f,e;if(i){if(f=parseInt(r.ExitTime.split(":")[0]),e=n.calendar.hourToDayPart(f),u.filtered[t].times[0].indexOf(e)!==-1||u.filtered[t].times[0].length==0)return!0;i=!1}return i},o=r.LogoCode,f=r.FullPrice,s=e(),h=u.filtered[t].price.min<=f&&u.filtered[t].price.max>=f,c=u.filtered[t].airlines.indexOf(o)!==-1||u.filtered[t].airlines.length==0;s&&c&&h?r.hide=!1:(r.hide=!0,i.filtered[t].allCount+=1)});r(function(){$("html,body").animate({scrollTop:110},"normal");i.resultFiltering=!1},600)};this.filtered=[{price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[]},{price:{min:null,max:null},airlines:[],stops:[],times:[],serviceProvider:[]}];this.price=function(n,t,i){this.filtered[n].price.min=t.priceSlider[n].min;this.filtered[n].price.max=t.priceSlider[n].max;var r=this;i(function(){r.do(n,t,i)},100)};this.time=function(n,t,i,r,u){this.filtered[t].times[n].indexOf(i)!==-1?(this.filtered[t].times[n].splice(this.filtered[t].times[n].indexOf(i),1),r.filtered[t].times[n][i]=!1,r.filtered[t].timesCount[n]-=1):(this.filtered[t].times[n].push(i),r.filtered[t].times[n][i]=!0,r.filtered[t].timesCount[n]+=1);this.do(t,r,u)};this.airline=function(n,t,i,r){this.filtered[n].airlines.indexOf(t)!==-1?(this.filtered[n].airlines.splice(this.filtered[n].airlines.indexOf(t),1),i.filtered[n].airlines[t]=!1,i.filtered[n].airlinesCount-=1):(this.filtered[n].airlines.push(t),i.filtered[n].airlines[t]=!0,i.filtered[n].airlinesCount+=1);this.do(n,i,r)}}}}]);app.service("cipServices",["resultsServices","utilityServices","$cookies","$timeout","$rootScope","$translate","$filter",function(n,t,i,r,u,f,e){cipServices=this;this.searchResult=new function(){this.createSearchRequest=function(n){if(t.validation.searchRequestValidation(n,"Cip",n.cip.flightDate,!0)){var i=n.cip.flightDate,r=n.cip.destinationCode,u=n.cip.adultCount,f=n.cip.childCount,e=n.cip.infantCount,o="/Cip/Search/"+r+"/"+i+"/"+u+"/"+f+"/"+e;window.location.href=o}};this.requestInitializeAndSent=function(n,i){var u,f,o,s;i.cipLoading=!0;var h=function(){i.cipSearchRequest=SearchCipRequest;i.airSelectedLines=SearchCipRequest.airline;SearchCipRequest.JulianDateInUrl?(o="gregorian",u="YYYYMMDD",f="YYYY/MM/DD"):(o="jalali",u="jYYYYjMMjDD",f="dddd jDD jMMMM");i.cip.flightDate=t.calendar.dateFormater(SearchCipRequest.FlightDate,"YYYY-MM-D5THH:mm:ss",u,!0);i.cip.flightDateView=t.calendar.dateFormater(SearchCipRequest.FlightDate,"YYYY-MM-D5THH:mm:ss",f,!0);i.cip.destinationCode=SearchCipRequest.AirportCode;i.cip.adultCount=SearchCipRequest.AdultCount;i.cip.childCount=SearchCipRequest.ChildCount;i.cip.infantCount=SearchCipRequest.InfantCount;i.cip.destinationName=SearchCipRequest.AirportName;i.cip.totalPassengersCount=SearchCipRequest.AdultCount+SearchCipRequest.ChildCount+SearchCipRequest.InfantCount;i.datePickerOptions.calType=o},a=function(){i.issuePlaceCountriesView=[];i.birthPlaceCountriesView=[];i.placeOfIssueCountries=[];i.birthPlaceCountries=[];i.paxTitleOptions={type:"select",name:"paxTitleOptions",values:[{value:1,name:e("translate")("GenderMale")},{value:2,name:e("translate")("GenderFemale")}]};i.ireanianOptions={type:"select",name:"ireanianOptions",values:[{value:1,name:e("translate")("Iranian")},{value:2,name:e("translate")("NotIranian")}]}},c=function(){var t,n;i.loadingProgress=0;t=500;n=function(){i.loadingProgress<94&&(i.loadingProgress+=2,r(n,t))};n()},l=function(){var n=new Date(t.calendar.dateFormater(SearchCipRequest.FlightDate,"YYYY-MM-D5THH:mm:ss","YYYY/MM/DD HH:mm:ss"));t.calendar.limitPaxAgeCalculation(n,null,i)};h();c();l();s=function(){cipServices.passengers.initialize(i)};s();dataAccessServices.receiveData.searchResultData.cip.getCipPackage(n,i)}};this.passengers=new function(){this.initialize=function(n){var r,i,t,u;n.PassengerInfoTemplate={AgeType:null,FirstName:"",LastName:"",PersianFirstName:"",PersianLastName:"",Gender:1,BirthDate:"",NationalityType:null,VisaService:!1,VisaNumber:null,VisaPrice:0,HasWheelChair:!1,WheelChairPrice:0,Price:null,TotalPrice:null};var r=[];for(n.adultCount=0,n.childCount=0,n.infantCount=0,n.passengersType=r,n.BookRequest.TransporterPassengersInfoes[0].Passengers=[],n.PhonebookUsedItems=[],angular.forEach(SearchCipRequest.passengerInformations,function(){var t=angular.copy(n.PassengerInfoTemplate);n.BookRequest.TransporterPassengersInfoes[0].Passengers.push(angular.copy(t))}),r=[],i={},t=0;t<SearchCipRequest.AdultCount;t++)i={AgeType:1},r.push(i);for(t=0;t<SearchCipRequest.ChildCount;t++)i={AgeType:2},r.push(i);for(t=0;t<SearchCipRequest.InfantCount;t++)i={AgeType:3},r.push(i);for(t=0;t<n.cip.totalPassengersCount;t++)u=angular.copy(n.PassengerInfoTemplate),u.AgeType=r[t].AgeType,n.BookRequest.TransporterPassengersInfoes[0].Passengers.push(angular.copy(u));console.log(n.BookRequest.TransporterPassengersInfoes[0])}};this.booking=new function(){var n={};this.fillBookRequest=function(t){n=t.BookRequest};this.createBookRequest=function(n){function i(){angular.forEach(n.selectedcip.CipPricing.Transfers,function(t){var i={Id:t.id,Car:{model:t.car.model},Price:t.price,Count:t.tempTransferInfo?t.tempTransferInfo.length:0,Address:[],Time:[],Phone:[]};angular.forEach(t.tempTransferInfo,function(n){i.Address.push(n.address);i.Phone.push(n.phone);i.Time.push(n.hours+":"+n.minutes)});t.tempTransferInfo&&n.transferBookRequest.push(i)})}var u=n.selectedcip;n.transferBookRequest=[];n.MobileHeaderTitle=e("translate")("ConfirmInfo");n.reserveTotalPrice=0;n.TotalPriceReserve=0;n.PassengerIsValid=null;i();angular.forEach(n.BookRequest.TransporterPassengersInfoes[0].Passengers,function(i,r){var f,e,u;if(n.PassengerIsValid==!1)return!1;f=function(){i.DateOfBirth=i.DateOfBirthYear+"/"+i.DateOfBirthMonth+"/"+i.DateOfBirthDay;i.NationalityType==1?(i.AgeType==1&&(i.Price=n.selectedcip.CipPricing.Passengers.ir.ADT,i.WheelChairPrice=i.HasWheelChair?n.selectedcip.CipPricing.Wheelchairs.ADT:0,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.ADT:0,i.TotalPrice=i.Price+i.WheelChairPrice+i.VisaPrice),i.AgeType==2&&(i.Price=n.selectedcip.CipPricing.Passengers.ir.CHD,i.WheelChairPrice=i.HasWheelChair?n.selectedcip.CipPricing.Wheelchairs.CHD:0,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.CHD:0,i.TotalPrice=i.Price+i.WheelChairPrice+i.VisaPrice),i.AgeType==3&&(i.Price=n.selectedcip.CipPricing.Passengers.ir.INF,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.INF:0,i.TotalPrice=i.Price+i.VisaPrice)):(i.AgeType==1&&(i.Price=n.selectedcip.CipPricing.Passengers.other.ADT,i.WheelChairPrice=i.HasWheelChair?n.selectedcip.CipPricing.Wheelchairs.ADT:0,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.ADT:0,i.TotalPrice=i.Price+i.WheelChairPrice+i.VisaPrice),i.AgeType==2&&(i.Price=n.selectedcip.CipPricing.Passengers.other.CHD,i.WheelChairPrice=i.HasWheelChair?n.selectedcip.CipPricing.Wheelchairs.CHD:0,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.CHD:0,i.TotalPrice=i.Price+i.WheelChairPrice+i.VisaPrice),i.AgeType==3&&(i.Price=n.selectedcip.CipPricing.Passengers.other.INF,i.VisaPrice=i.VisaService?n.selectedcip.CipPricing.VisaServices.INF:0,i.TotalPrice=i.Price+i.VisaPrice));r==0&&(n.suites.length&&angular.forEach(n.suites,function(n){i.TotalPrice+=n.Price*parseInt(n.Count)}),n.attendances.length&&angular.forEach(n.attendances,function(n){i.TotalPrice+=n.PriceAdt}),n.transferBookRequest.length&&angular.forEach(n.transferBookRequest,function(n){i.TotalPrice+=n.Price*parseInt(n.Count)}),n.pets.length&&angular.forEach(n.pets,function(t){i.TotalPrice+=t.Price*n.pets.length}));n.TotalPriceReserve+=i.TotalPrice};f();e=i.AgeType;u=i.DateOfBirth;i.BirthDate=u.startsWith("14")||u.startsWith("13")||u.startsWith("12")?new Date(t.calendar.dateFormater(u,"jYYYY/jMM/jDD","YYYY/MM/DD",!1)):new Date(u);t.validation.passengersInfoValidation.cip(n,i,r)});n.PassengerIsValid?(n.passengersFormErrorMessage,n.PassengerIsValid=null,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.OriginDestinationInformation.DepartureDateTime=new Date(SearchCipRequest.FlightDate),n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.OriginDestinationInformation.Destination.LocationCode=SearchCipRequest.AirportCode,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.OriginDestinationInformation.DepartureDateTime=SearchCipRequest.FlightDate,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.OriginDestinationInformation.Destination.LocationName=SearchCipRequest.AirportCode,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.FlightDate=SearchCipRequest.FlightDate,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.FlightTime=n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Hour+":"+n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Minute,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Title=n.selectedcip.Title,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.AirportCode=n.selectedcip.AirportCode,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.FlightType=n.selectedcip.FlightType,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.TripType=n.selectedcip.TripType,n.BookRequest.TransporterPassengersInfoes[0].OwnerCompanyId=n.selectedcip.OwnerCompanyId,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Suites=n.suites,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Pets=n.pets,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Attendances=n.attendances,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Id=n.selectedcip.CipId,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.SessionId=n.selectedcip.SessionId,n.BookRequest.TransporterPassengersInfoes[0].TransporterInfo.Transfers=n.transferBookRequest,n.BookRequest.Provider=n.selectedcip.Provider,angular.forEach(n.mobileCode,function(t){n.BookRequest.MobileCode==t.code&&(n.BookRequest.MobileCode=t.dial_code)}),n.BookRequest.Mobile=n.BookRequest.MobileCode+n.BookRequest.MobileNumber,n.ReserveInfoVisibility=!0,n.isDesktop?r(function(){t.tools.scrollToTargetByAttribute("cipListWrapper","id",10)},200):r(function(){t.tools.scrollToTargetByAttribute("cipListWrapper","id",60)},200),this.fillBookRequest(n)):n.bookRequestCreateLoading=!1};this.sendBookRequest=function(t,i,r){dataAccessServices.receiveData.userData.getUserStatus(t,i);this.fillBookRequest(i);r(function(){!i.UserStatus.IsAuthenticated&&i.UserStatus.UserMustBeRegister?(r(function(){i.cipBooking=!1},50),$("#loginModal").modal("show")):r(function(){dataAccessServices.sendData.booking.cip.bookRequest(t,i,n)},300)},1e3)}}}])