Testimonials

Adeline Lee almost 4 years ago

" Thanks for the good and reliable service. The 2 skyvans were very punctual and we reached the KL LCCT airport in 2 hour. "

Nadia Rullo almost 4 years ago

" I would like to say a huge thank you for organising our transfers whilst in KL. Aziz our driver was an excellent driver with a very clean vehicle and we felt safe at all times with Aziz. When we return to KL we will definitely book SkyVans and Aziz again! "

Oliver Choo almost 4 years ago

" Thank you for the great arrangement! We are very pleased with your service! We will surely recommend others to your service. "

Yen almost 4 years ago

" "Thank you very much for your flexible assistance to amend the ticket date due to unintentional change of my flight itinerary. It's really impressive for me to receive your response within less than 2 hours and although it's my first time purchasing bus tickets from Skybus, I believe that I'll have great experience with your service ahead." "

Honggi Jeon almost 4 years ago

" This is the first time I am travelling on SKYBUS. I really appreciate all the help you have given me. I will never forget this. Thank you so much for your concern, kindness and quick service. "

Wish you a Happy and Comfortable Journey

booking-confirm virtual-pay-vurl booking-cancel search-results service-details ticket-details thank-you my-page phone-blocking-to-ebooking> 404> 410>

Please Enter Your Details

Success

Thank you, Message has been sent successfully

<script> $('footer .footer-contact h3').html ("<img src='https://ticket-simply-mly-cms.s3.amazonaws.com/uploads/bcc/cms/asset/avatar/170/logo.jpg'>"); </script> <script> $(".main-menu li:nth-child(5)").html("<div class='signinf'><h3><a href='#' ><img src='https://gst-contracts.s3.amazonaws.com/uploads/bcc/cms/asset/avatar/127813/cust1.png'>Sign in</a></h3></div>"); </script> <script> if(! $(".wrapper").hasClass("inner-page")){ $(".wrapper").addClass("emdedded_new"); } </script> <script> $('#extra_21 .count').each(function() { $(this).prop('Counter', 0).animate({ Counter: $(this).text() }, { duration: 10000, easing: 'swing', step: function(now) { if($(this).is(".rating")){ $(this).text(now.toFixed(1)); } else{ $(this).text(parseInt(now)); } } }); }); </script> <script> containerWidth = document.getElementById("container").clientWidth; nextButton = document.getElementById("next-button"); previousButton = document.getElementById("previous-button"); slide = document.getElementById("slide"); firstCardLeftMargin = 10; cardWidthAndRightMargin = 120 + 10; totalWidth = slide.clientWidth; const transformSlide = (val) => { slide.style.transform = `translate(${val}px,0px)`; }; const getCurrentPosition = () => { const stringValue = slide.style.transform; const transformValue = stringValue.substring( stringValue.indexOf("(") + 1, stringValue.lastIndexOf("p") ); return transformValue ? parseInt(transformValue) : 0; }; const getNextPosition = () => { //take current position of the slide const currentPosition = getCurrentPosition(); //last visibile pixel const lastVisiblePixel = containerWidth + -1 * currentPosition; //use the last visible pixel to calculate which card was fully-visible. //This will return a float whose floor will indicate the last fully-visible card. //We will show the next card as the first card after sliding const lastFullyVisibleCard = Math.floor( (lastVisiblePixel - firstCardLeftMargin) / cardWidthAndRightMargin ); //Calculate the distance from slideStart to the lastVisibleCard's end const distanceToNextCard = lastFullyVisibleCard * cardWidthAndRightMargin + firstCardLeftMargin; if (distanceToNextCard + containerWidth > totalWidth) { return totalWidth - containerWidth + firstCardLeftMargin; } return distanceToNextCard - 10; }; const getPreviousPosition = () => { const currentPosition = getCurrentPosition(); //take current position //getting first partially visible card. This will be the last card shown when the button is clicked. const firstPartiallyVisibleCard = Math.floor( (-1 * currentPosition - firstCardLeftMargin) / cardWidthAndRightMargin ); //get distance to card end from slide start const distanceToCardEndFromSlideStart = firstPartiallyVisibleCard * cardWidthAndRightMargin + firstCardLeftMargin; //translateX distance would be total distance - containerwidth const distanceNeeded = distanceToCardEndFromSlideStart - containerWidth; //return calculateDistance only if it is positive if (distanceNeeded > 0) { return -distanceNeeded; } //if needed distance < 0 i.e. card end is closer to start than container width means that this scroll would overshoot the left edge. //return 0 and return the slide to it's initial position return 0; }; nextButton.addEventListener("click", (event) => { transformSlide(-getNextPosition()); }); previousButton.addEventListener("click", (event) => { transformSlide(getPreviousPosition()); }); </script> <script> $("<p class='booking-text'>Book with us</p>").insertBefore(".booking-widget"); </script>