(function(i) { var result={}; result.busses=[]; if (i==null || i==""){ //do nothing } else { stops = JSON.parse(i); for (stop in stops){ objects = stops[stop]; for (object in objects) { var busses=objects[object]["Passes"]; var halte=objects[object]["Stop"]; for (bus in busses){ if (busses[bus].LineDirection!=3) { var nb={}; nb.ExpectedDepartureTime=busses[bus].ExpectedDepartureTime; nb.TargetDepartureTime=busses[bus].TargetDepartureTime; nb.DestinationName50=busses[bus].DestinationName50; nb.StopAreaCode=busses[bus].StopAreaCode; nb.LineDirection=busses[bus].LineDirection; nb.LineName=busses[bus].LineName; nb.LinePublicNumber=busses[bus].LinePublicNumber; nb.TripStopStatus=busses[bus].TripStopStatus; nb.GeneralMessages=busses[bus].GeneralMessages; nb.TimingPointName=halte.TimingPointName; var info=""; var p=nb.TimingPointName.indexOf(","); info+=nb.TimingPointName.substring(p+1).trim(); info+=" - ["+nb.LinePublicNumber+"] "; if (nb.LineDirection==1){ p=nb.LineName.lastIndexOf("-"); info+=nb.LineName.substring(p+1).trim(); } else { p=nb.LineName.indexOf("-"); info+=nb.LineName.substring(0,p).trim(); } p=nb.ExpectedDepartureTime.indexOf("T"); info+=" om "+nb.ExpectedDepartureTime.substring(p+1); nb.info=info; result.busses.push(nb); } } } } } var done; do { done=true; for (i=0;iresult.busses[i+1].ExpectedDepartureTime){ var tmp=result.busses[i]; result.busses[i]=result.busses[i+1]; result.busses[i+1]=tmp; done=false; } } } while (!done); return JSON.stringify(result); })(input)