﻿/// <reference path="jquery-1.4.1-vsdoc.js" />

var datepicker1;
var datepicker2;
var date1Day = '#bookingSearchFormN #out .Date';
var date1MonthYear = '#bookingSearchFormN #out .Month';
var date2Day = '#bookingSearchFormN #returnTrip .Date';
var date2MonthYear = '#bookingSearchFormN #returnTrip .Month';
//var searchButton = '#bookingSearchFormN .ButtonBlackBigNew input';
// Above search button has problems when we change the class of the button (for example, change color). Below is more generic.
var searchButton = '#bookingSearchFormN input[type=submit]';
var fromLocation = '#bookingSearchFormN .From select';
var toLocation = '#bookingSearchFormN .To select';

var swebus = function () {
    // initializer 
    var init = function () {
        getLowestPrice();
        addSearchResultAccordion();
        addSearchFormResultDatePicker();
        addMouseOverEventOnNavigationTop();
        addEventsOnToolbar();
        addEventsOnReturnTrip();
        addEventsOnSearchButton();
        addEventsOnSearchForm();
        updateSelectsOnCommuteCardSearchForm();
        addCssClassesOnTables();
        setTrackEventOnSearchPage();
        setTrackEventOnTimeTableLinks();
        setAlertBoxFunctionality();
        setConfirmDeleteInCartMessage();
        setShoppingCartPosition();
        initBookingSearchFormNAirbusesRadioButtons();
        jQuery('.LightboxButton').colorbox({
            width: '580',
            transition: 'elastic',
            speed: '350',
            opacity: '0.4',
            initialWidth: '530px',
            initialHeight: '40px',
            inline: true
        });
    },
    //Skriv ut CSS-style för webbläsare som har JavaScript aktiverat -
    //detta script måste köras innan DOM:en är laddad
    writeStyleForJavaScriptEnabledBrowsers = function () {
        var str = "";
        str = "<style type=\"text/css\">";
        str += ".ShowIfNoJavaScript {";
        str += "position: absolute;";
        str += "left: -9999px;";
        str += "}";
        str += ".Hide {";
        str += "display: none;";
        str += "}";
        str += ".BookingSearchFormN .Month {";
        str += "display: none;";
        str += "}";
        str += ".BookingSearchFormN .Date {";
        str += "display: none;";
        str += "}";
        str += ".HideAccordion {";
        str += "overflow: hidden;";
        str += "height: 0;";
        str += "}";
        if (isSafariBrowser()) {
            str += "label.ButtonBlackBig input,";
            str += "label.ButtonRedBig input,";
            str += "label.ButtonSilverBig input,";
            str += "label.ButtonBlack input {";
            str += "padding-bottom: 0 !important;";
            str += "}";
            str += "label.ButtonBlack1 input {";
            str += "padding-bottom: 1px !important;";
            str += "}";
        }
        str += "</style>";
        document.write(str);
    },
    //Kollar om användarens webbläsare är Safari
    isSafariBrowser = function () {
        var isSafari = (document.childNodes && !document.all && !navigator.taintEnabled && !navigator.accentColorName) ? true : false;
        return isSafari;
    },

    getLowestPrice = function () {
        //AwayTrip
        var tabList1 = jQuery(jQuery('.BookingSearchResultsTabList')[0]);
        //HomeTrip
        var tabList2 = jQuery(jQuery('.BookingSearchResultsTabList')[1]);

        //Queryparameters
        var from = querySt('from');
        var to = querySt('to');
        var fromtype = querySt('fromtype');
        var totype = querySt('totype');
        var away = querySt('away');
        var home = querySt('home');
        var adult = querySt('Adult');
        var student = querySt('Student');
        var youth = querySt('Youth');
        var pensioner = querySt('Pensioner');
        var child = querySt('Child');
        var campaignCode = querySt('campaignCode');

        //Urls
        var ajaxUrl = location.protocol + '//' + location.host + '/templates/AjaxProxies/Search/SearchResult.ashx';
        var ajaxAwayQuery = '?from=' + from + '&to=' + to + '&fromtype=' + fromtype + '&totype=' + totype + '&date=' + away + '&Adult=' + adult + '&Child=' + child + '&Youth=' + youth + '&Student=' + student + '&Pensioner=' + pensioner + '&campaignCode=' + campaignCode;
        var ajaxHomeQuery = '?from=' + to + '&to=' + from + '&fromtype=' + totype + '&totype=' + fromtype + '&date=' + home + '&Adult=' + adult + '&Child=' + child + '&Youth=' + youth + '&Student=' + student + '&Pensioner=' + pensioner + '&campaignCode=' + campaignCode;

        //HomeUrls
        var yesterdayUrlAway = ajaxUrl + ajaxAwayQuery + '&day=-1';
        var nextDay1UrlAway = ajaxUrl + ajaxAwayQuery + '&day=1';
        var nextDay2UrlAway = ajaxUrl + ajaxAwayQuery + '&day=2';
        var nextDay3UrlAway = ajaxUrl + ajaxAwayQuery + '&day=3';

        //Away Urls
        var yesterdayUrlHome = ajaxUrl + ajaxHomeQuery + '&day=-1';
        var nextDay1UrlHome = ajaxUrl + ajaxHomeQuery + '&day=1';
        var nextDay2UrlHome = ajaxUrl + ajaxHomeQuery + '&day=2';
        var nextDay3UrlHome = ajaxUrl + ajaxHomeQuery + '&day=3';

        //Away
        if (jQuery('.PageTypeNewSearchResult .BookingSearchResultsTabList')[0]) {
            jQuery.ajax({
                url: yesterdayUrlAway,
                cache: false,
                success: function (data) {
                    renderAjaxAway(0, data);
                }
            });
            jQuery.ajax({
                url: nextDay1UrlAway,
                cache: false,
                success: function (data) {
                    renderAjaxAway(1, data);
                }
            });
            jQuery.ajax({
                url: nextDay2UrlAway,
                cache: false,
                success: function (data) {
                    renderAjaxAway(2, data);
                }
            });
            jQuery.ajax({
                url: nextDay3UrlAway,
                cache: false,
                success: function (data) {
                    renderAjaxAway(3, data);
                }
            });
        }
        //Home
        if (jQuery('.BookingSearchResultsTabList')[1]) {
            jQuery.ajax({
                url: yesterdayUrlHome,
                cache: false,
                success: function (data) {
                    renderAjaxHome(0, data);
                }
            });
            jQuery.ajax({
                url: nextDay1UrlHome,
                cache: false,
                success: function (data) {
                    renderAjaxHome(1, data);
                }
            });
            jQuery.ajax({
                url: nextDay2UrlHome,
                cache: false,
                success: function (data) {
                    renderAjaxHome(2, data);
                }
            });
            jQuery.ajax({
                url: nextDay3UrlHome,
                cache: false,
                success: function (data) {
                    renderAjaxHome(3, data);
                }
            });
        }
        renderAjaxAway = function (number, data) {
            var noPrice = jQuery(tabList1.find('.NoPrice')[number]);
            var currentItem = noPrice.parent().parent().parent();
            var campaignString = $('<span class="CampaignCodeIcon" title="titel"></span>');
            if (data.length > 0) {
                data = eval('(' + data + ')');
                var ajaxPrice = jQuery(tabList1.find('.AjaxPrice')[number]);
                ajaxPrice.text(data.Price);
                ajaxPrice.css('display', 'block');
                if (data.HasCampaign)
                    currentItem.append(campaignString);
            }
            noPrice.css('display', 'none');


        };
        renderAjaxHome = function (number, data) {
            var noPrice = jQuery(tabList2.find('.NoPrice')[number]);
            var currentItem = noPrice.parent().parent().parent();
            var campaignString = $('<span class="CampaignCodeIcon" title="titel"></span>');
            if (data.length > 0) {
                data = eval('(' + data + ')');
                var ajaxPrice = jQuery(tabList2.find('.AjaxPrice')[number]);
                ajaxPrice.text(data.Price);
                ajaxPrice.css('display', 'block');
                if (data.HasCampaign)
                    currentItem.append(campaignString);
            }
            noPrice.css('display', 'none');
        };
    },
    querySt = function (ji) {
        hu = window.location.search.substring(1);
        gy = hu.split("&");
        for (i = 0; i < gy.length; i++) {
            ft = gy[i].split("=");
            if (ft[0] == ji) {
                return ft[1];
            }
        }
    },
    addEventsOnReturnTrip = function () {

        // #ctl00_MainContentPlaceHolder_ColumnABPlaceHolder_BookingSearchForm2_cbOnlyAway
        var cbAway = jQuery('#cbOnlyAway');

        function setCalendar() {
            if (cbAway.attr('checked')) {
                jQuery('#datepicker2').addClass('disableCalendar');
                jQuery('#homeTripLabel').addClass('disableCalendar');
                jQuery(date2Day).attr('disabled', true);
                jQuery(date2MonthYear).attr('disabled', true);
                datepicker2.datepicker('disable');
            } else {
                jQuery('#datepicker2').removeClass('disableCalendar');
                jQuery('#homeTripLabel').removeClass('disableCalendar');
                jQuery(date2Day).removeAttr('disabled');
                jQuery(date2MonthYear).removeAttr('disabled');
                datepicker2.datepicker('enable');
            }
        }
        cbAway.click(function () {
            setCalendar();
        });

        setCalendar();

    },
    addEventsOnSearchButton = function () {
        var numberOfAdults = jQuery('#numberOfAdults');
        var numberOfStudents = jQuery('#numberOfStudents');
        var numberOfChildren = jQuery('#numberOfChildren');
        var numberOfPensioners = jQuery('#numberOfPensioners');
        var numberOfYouths = jQuery('#numberOfYouths');
        if (numberOfAdults.val() > 0) {
            numberOfAdults.css('color', '#ED2024');
        } else {
            numberOfAdults.css('color', '#A5A5A5');
        }
        if (numberOfStudents.val() > 0) {
            numberOfStudents.css('color', '#ED2024');
        } else {
            numberOfStudents.css('color', '#A5A5A5');
        }
        if (numberOfChildren.val() > 0) {
            numberOfChildren.css('color', '#ED2024');
        } else {
            numberOfChildren.css('color', '#A5A5A5');
        }
        if (numberOfPensioners.val() > 0) {
            numberOfPensioners.css('color', '#ED2024');
        } else {
            numberOfPensioners.css('color', '#A5A5A5');
        }
        if (numberOfYouths.val() > 0) {
            numberOfYouths.css('color', '#ED2024');
        } else {
            numberOfYouths.css('color', '#A5A5A5');
        }
        var sb = jQuery(searchButton);
        function validateLocation() {
            dFrom = jQuery(fromLocation);
            dTo = jQuery(toLocation);

            if (dFrom.val() && dFrom.val().length > 0 && dFrom.val() != 0) {
                var error = jQuery('.BookingSearchFormN .From .AlertMessage');
                error.removeClass('Visible');
            }
            if (dTo.val() && dTo.val().length > 0 && dTo.val() != 0) {
                var error = jQuery('.BookingSearchFormN .To .AlertMessage');
                error.removeClass('Visible');
            }
            if (dFrom.val() && dFrom.val().length > 0 && dFrom.val() != 0 && dTo.val() && dTo.val().length > 0 && dTo.val() != 0) {
                return true;
            }
            if (dFrom.val() == 0) {
                var error = jQuery('.BookingSearchFormN .From .AlertMessage');
                error.addClass('Visible');
            }
            if (dTo.val() == 0) {
                var error = jQuery('.BookingSearchFormN .To .AlertMessage');
                error.addClass('Visible');
            }
            return false;
        }
        function validatePassengers() {
            var numberOfAdults = jQuery('#numberOfAdults');
            var numberOfStudents = jQuery('#numberOfStudents');
            var numberOfChildren = jQuery('#numberOfChildren');
            var numberOfPensioners = jQuery('#numberOfPensioners');
            var numberOfYouths = jQuery('#numberOfYouths');
            var noPassengerText = jQuery('.BookingSearchFormN .Types #NoPassengerSelectedText');
            var tooManyPassengerText = jQuery('.BookingSearchFormN .Types #TooManyPassengersSelectedText');

            if (isNaN(numberOfAdults.val()) || numberOfAdults.val() == '') { numberOfAdults.val('0'); }
            if (isNaN(numberOfStudents.val()) || numberOfStudents.val() == '') { numberOfStudents.val('0'); }
            if (isNaN(numberOfChildren.val()) || numberOfChildren.val() == '') { numberOfChildren.val('0'); }
            if (isNaN(numberOfPensioners.val()) || numberOfPensioners.val() == '') { numberOfPensioners.val('0'); }
            if (isNaN(numberOfYouths.val()) || numberOfYouths.val() == '') { numberOfYouths.val('0'); }

            if (numberOfAdults.val() <= 0 &&
                numberOfStudents.val() <= 0 &&
                numberOfChildren.val() <= 0 &&
                numberOfPensioners.val() <= 0 &&
                numberOfYouths.val() <= 0) {
                noPassengerText.addClass('Visible');
                tooManyPassengerText.removeClass('Visible');
                return false;
            }
            if (numberOfAdults.val() > 10 ||
                numberOfStudents.val() > 10 ||
                numberOfChildren.val() > 10 ||
                numberOfPensioners.val() > 10 ||
                numberOfYouths.val() > 10) {
                tooManyPassengerText.addClass('Visible');
                noPassengerText.removeClass('Visible');
                return false;
            }
            noPassengerText.removeClass('Visible');
            tooManyPassengerText.removeClass('Visible');
            return true;
        }
        function validateCampaignCode() {
            var invalidCampaignCodeText = jQuery('.BookingSearchFormN .CampaignCode #invalidCampaignCode');
            var campaignCodeValue = jQuery('#campaignCode').attr('value');
            if (campaignCodeValue.length > 15) {
                invalidCampaignCodeText.addClass('Visible');
                return false;
            }
            invalidCampaignCodeText.removeClass('Visible');
            return true;
        }
        sb.click(function () {
            var valLocation = validateLocation();
            var valPassengers = validatePassengers();
            var valCampaignCode = validateCampaignCode();
            if (valLocation && valPassengers && valCampaignCode) {
                //This makes sure of that BookingSearchFormN will not be expanded
                jQuery('#bookingSearchFormN').unbind();
                return true;
            }
            return false;
        });
    },
	expandForm = function () {
	    if (!jQuery('div.calendar').is(":visible")) {
	        if (jQuery('.SubPage #ColumnAB')[0]) {
	            //jQuery('.SubPage #ColumnAB .BookingSearchFormN .MainBodyLeft').css('width', '320px');
	            //jQuery('.SubPage #ColumnAB .BookingSearchFormN .MainBodyLeft .Out').css('width', '232px');
	            //jQuery('.SubPage #ColumnAB .BookingSearchFormN .MainBodyLeft .Return').css('width', '232px');
	            jQuery('#showAllPassengerTypesText').css('display', 'none');
	            //jQuery('div.calendar').slideDown('fast', function () {
	            jQuery('#lightboxAllPassengerTypes').css('display', 'block');
	            jQuery('.HideAwayTrip').css('display', 'block');
	            jQuery('.MainBodyRight .Types ul').css('height', 'auto');
	            jQuery('.MainBodyRight .Types').addClass('Expanded');
	            //});
	        } else {
	            //jQuery('.BookingSearchFormN .MainBodyLeft fieldset').css('margin-bottom', '10px'); // Don't change the fieldset margin, it causes a jump.
	            jQuery('.BookingSearchFormN .calendarTop button').css('display', 'none');
	            jQuery('.BookingSearchFormN .calendarTop span').css('display', 'none');
	            jQuery('#showAllPassengerTypesText').css('display', 'none');
	            jQuery('div.calendar').slideDown('fast', function () {
	                jQuery('#lightboxAllPassengerTypes').css('display', 'block');
	                jQuery('.HideAwayTrip').css('display', 'block');
	                jQuery('.MainBodyRight .Types ul').css('height', 'auto');
	                jQuery('.MainBodyRight .Types').addClass('Expanded');
	                //jQuery('.MainBodyRight .Types ul').css('opacity', '0');
	                //jQuery('.MainBodyRight .Types ul').animate({ opacity: 1 });
	            });
	        }
	    }
	},
    addEventsOnSearchForm = function () {
        var numberOfChildren = jQuery('#numberOfChildren');
        var numberOfPensioners = jQuery('#numberOfPensioners');
        var numberOfYouths = jQuery('#numberOfYouths');

        if (numberOfChildren.val() > 0 || numberOfPensioners.val() > 0 || numberOfYouths.val() > 0) {
            expandForm();
        }
        //    	var searchForm = jQuery('#bookingSearchFormN');
        //    	searchForm.click(function () {
        //    		expandForm();
        //    	});
        var calendarIcon = jQuery('.calendarIcon');
        calendarIcon.click(function () {
            expandForm();
        });
        var showAllPassengerTypesLink = jQuery('#showAllPassengerTypesText');
        showAllPassengerTypesLink.click(function () {
            expandForm();
        });
        jQuery('.total_passenger .total').keydown(function (e) {
            var key = e.which || e.keyCode;

            if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
            // numbers   
                key >= 48 && key <= 57 ||
            // Numeric keypad
                key >= 96 && key <= 105 ||
            // Backspace and Tab and Enter
                key == 8 || key == 9 || key == 13 ||
            // Home and End
                key == 35 || key == 36 ||
            // left and right arrows
                key == 37 || key == 39 ||
            // Del and Ins
                key == 46 || key == 45) {
                return true;
            }
            else {
                return false;
            }
        });

        jQuery('.total_passenger .total').each(function () {
            var totalInput = jQuery(this);
            totalInput.focus(function (e) {
                if (totalInput.val() == '0') {
                    totalInput.val("");
                }
            });
            totalInput.blur(function (e) {
                if (totalInput.val().length == 0) {
                    totalInput.val('0');
                }
            });
        });
    },
    addSearchFormResultDatePicker = function () {
        datepicker1 = jQuery('#datepicker1');

        if (datepicker1) {
            datepicker1.datepicker(
            { inline: true,
                minDate: '0',
                defaultDate: jQuery(date1MonthYear).val() + "-" + jQuery(date1Day).val(),
                nextText: '',
                prevText: '',
                onSelect: function (dateText, inst) {
                    updateSelects(dateText, jQuery(this));
                    updateDatePicker2(dateText, jQuery(this));
                }
            });

        }
        datepicker2 = jQuery('#datepicker2');

        if (datepicker2) {
            datepicker2.datepicker(
            { inline: true,
                buttonImage: "images/calendar.gif",
                minDate: '0',
                defaultDate: jQuery(date2MonthYear).val() + "-" + jQuery(date2Day).val(),
                nextText: '',
                prevText: '',
                onSelect: function (dateText, inst)
                { updateSelects(dateText, jQuery(this)); }
            });
        }
    },
    updateDatePicker2 = function (selectedDate, object) {
        var year1 = selectedDate.substring(0, 4);
        var month1 = selectedDate.substring(5, 7) - 1;
        var day1 = selectedDate.substring(8, 10);
        var date1 = new Date(year1, month1, day1);
        date2 = datepicker2.datepicker('getDate');
        if (date1 > date2) {
            datepicker2.datepicker('setDate', date1);
            updateSelects(selectedDate, datepicker2);
        }
    },
    updateSelects = function (selectedDate, object) {
        var yearMonth = selectedDate.substring(0, 7);
        var day = selectedDate.substring(8, 10);
        if (object.attr('id') == "datepicker1") {
            jQuery(date1MonthYear + ' option[value=' + yearMonth + ']').attr('selected', 'selected');
            jQuery(date1Day + ' option[value=' + day + ']').attr('selected', 'selected');
        }
        else {
            jQuery(date2MonthYear + ' option[value=' + yearMonth + ']').attr('selected', 'selected');
            jQuery(date2Day + ' option[value=' + day + ']').attr('selected', 'selected');
        }
    },
    addSearchResultAccordion = function () {

        var accordion = jQuery('.Accordion');
        if (accordion.length > 0) {
            jQuery('.Accordion').accordion({
                active: false,
                collapsible: true,
                autoHeight: false
            });
            if (jQuery("#bookingSearchResultsAway").length > 0) {
                jQuery("#bookingSearchResultsAway .Accordion .Strike").not(".DepartureIsFull").not(":last").closest(".Toggler").hide();
            }
            if (jQuery("#bookingSearchResultsHome").length > 0) {
                jQuery("#bookingSearchResultsHome .Accordion .Strike").not(".DepartureIsFull").not(":last").closest(".Toggler").hide();
            }

			// Hide search field, assuming you didn't have any error
            if (jQuery(".BookingSearchFormN").length > 0) {
				if( jQuery("#bookingSearchResultsAway .Content .AlertMessage.Visible").html() == "" && jQuery("#bookingSearchResultsAway .Content .AlertMessage.Visible").html() != null ) {
				
				
					jQuery(".BookingSearchFormN .Middle .Content").hide();
					jQuery(".BookingSearchFormN .Bottom").hide();

					// Add open button
					jQuery(".BookingSearchFormN .Bottom").after('<div class="Bottom Normal"><div class="BottomLeft">&nbsp;</div><div class="BottomMiddleRepeat">&nbsp;</div><div class="BottomRight">&nbsp;</div></div>');
					jQuery(".BookingSearchFormN .Middle .Content").after('<div class="Content Open"><div class="Open"></div></div>');

					jQuery(".BookingSearchFormN .Content.Open .Open").click(function() {
						var $parent = jQuery(this).parents(".BookingSearchFormN");
						$parent.find(".Content.Open").hide();
						$parent.find(".Content").not(".Open").show();
						$parent.find(".Bottom").hide();
						$parent.find(".Bottom").not(".Normal").show();
					});
					
					jQuery("#bookingSearchResultsAway .Content .AlertMessage.Visible").removeClass("Visible");
				}
            }
			
			// Ie <9 has :hover issues on elements that has submit-button as children
			if(jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 9) {
				jQuery(".BookingSearchResultsN label.ButtonPrice input").mouseenter(function() {
					jQuery(this).parents(".ButtonPrice").addClass("ButtonPriceActive");
				  }).mouseleave(function() {
					jQuery(this).parents(".ButtonPrice").removeClass("ButtonPriceActive");
				 });
			}
			
			// IE 7 fix for not applying new styles when using hide() in jquery
			if(jQuery.browser.msie && parseInt(jQuery.browser.version, 10) <= 7) {
				jQuery(".RoundedCornersV2 .MiddleRightRepeat").css("background-position", "-13px 0");
				jQuery(".RoundedCornersV2 .MiddleLeftRepeat").css("background-position", "0 0");
				jQuery(".RoundedCornersV2 .MiddleLeftRepeat").css("background-position", "0 0");
				jQuery(".RoundedCornersV2 p.CampaignPriceInfo").css("margin-top", "9px");
				
			}
		}

		jQuery('.price-button, .ButtonPrice').bind('click', function (e) {
				e.stopPropagation();
        });
		
        // Remove default action for certain elements (i.e do not expand accordion when clicking on a price button)
        // Update 2011-11: Only expand when clicking on the info-icon
		
        jQuery('.Departure, .Arrival, .TravelTime, .Changes, .Price1, .Price2, .Price3').bind('click', function (e) {
			if( jQuery(this).parents(".RoundedCornersV2").length == 1)  // only stop propagation for all for places where we have the info icon, i.e the "new" result page
				e.stopPropagation();
        });
		
        jQuery('.price-button, .ButtonPrice').bind('mouseup.disableSearchButtonDimmer', function (e) {
            var disablingDiv = jQuery('<div class="DisableSearchButtonDimmer"></div>');
            disablingDiv.appendTo(jQuery('.BookingSearchResultsN'));

            if (jQuery(this).hasClass("ButtonPrice")) {
                // "Uncheck" any other buy button for the trip in question
                jQuery(this).closest(".Accordion").find("label.ButtonPriceActive").removeClass("ButtonPriceActive").addClass("ButtonPrice");
                jQuery(this).addClass("ButtonPriceActive");
            }
        });


    },
    addCssClassesOnTables = function () {
        jQuery('.TimeTable table').each(function (i) {
            jQuery(this).find('tr:first').addClass('Head');
            jQuery(this).find('tr:even').addClass('Even');
        });
    },

    //General function for Google Analytics Page Tracking - _trackEvent
    trackEvent = function (category, action, label, value) {
        if (value) {
            //console.log('_gaq.push([\'_trackEvent\', \'' + category + '\', \'' + action + '\', \'' + label + '\', \'' + value + '\'])');
            _gaq.push(['_trackEvent', category, action, label, value]);
        } else {
            //console.log('_gaq.push([\'_trackEvent\', \'' + category + '\', \'' + action + '\', \'' + label + '\'])');
            _gaq.push(['_trackEvent', category, action, label]);
        }
    },

    //Set trackevent on search page. Adds a trackevent for the current search
    setTrackEventOnSearchPage = function () {
        var str = '';
        if (
				jQuery('.PageTypeSearchResult')[0] && jQuery('.PageTypeSearchResult .ActivateTrackEventOnSearchPage')[0] ||
				jQuery('.PageTypeNewSearchResult')[0] && jQuery('.PageTypeNewSearchResult .ActivateTrackEventOnSearchPage')[0]
			) {
            var d = new Date();
            var from = jQuery('.From select option:selected').text();
            var to = jQuery('.To select option:selected').text();
            var dateAway = jQuery(jQuery('.Out select option:selected')[1]).attr('value') + '-' + addZero(jQuery(jQuery('.Out select option:selected')[0]).text());
            var dateToday = d.getFullYear() + '-' + addZero(d.getMonth() + 1) + '-' + addZero(d.getDate());
            var passengerTypes = '';
            if (jQuery('.PageTypeNewSearchResult')[0]) {
                //Queryparameters
                var adult = parseInt(querySt('Adult')) != 0 ? 'Vuxen=' + parseInt(querySt('Adult')) + ' : ' : '';
                var student = parseInt(querySt('Student')) != 0 ? 'Student=' + parseInt(querySt('Student')) + ' : ' : '';
                var child = parseInt(querySt('Child')) != 0 ? 'Barn=' + parseInt(querySt('Child')) + ' : ' : '';
                var youth = parseInt(querySt('Youth')) != 0 ? 'Ungdom=' + parseInt(querySt('Youth')) + ' : ' : '';
                var pensioner = parseInt(querySt('Pensioner')) != 0 ? 'Pensionär=' + parseInt(querySt('Pensioner')) + ' : ' : '';
                var passengerTypes = adult + student + child + pensioner + youth;
                passengerTypes = ' : ' + passengerTypes.substring(0, passengerTypes.length - 3);
            }
            trackEvent('Sökning', 'OnLoad', from + ' : ' + to + ' : ' + dateAway + ' : ' + dateToday + passengerTypes);
        }
        //console.log(str);
    },

    //Add zero to date
    addZero = function (str) {
        var intString = parseInt(str);
        if (intString < 10) {
            return '0' + str;
        }
        return str;
    },

    //Set trackevent on timetables
    setTrackEventOnTimeTableLinks = function () {
        var isTimeTablePage = location.toString().indexOf('/Kundsupport/Tidtabeller--linjekarta/') != -1;
        var str = '';
        if (isTimeTablePage) {
            jQuery('#mainContent .ColumnA .Root .MainContent a').each(function (index) {
                var item = jQuery(this);
                if (index != 0 && item.attr('href').indexOf('.pdf') != -1) {
                    str += item.text() + '\n';
                    item.mousedown(function () {
                        trackEvent('Downloads', 'PDF', item.text());
                    });
                }
            });
            //console.log(str);
        }
    },

    //Set alert box functionality
    setAlertBoxFunctionality = function () {
        jQuery.tools.overlay.addEffect('ieEffect', function (position, done) {
            this.getOverlay().css(position).css('display', 'block');
            this.getOverlay().css(position).css('position', 'fixed');
        },
			function (done) {
			    this.getOverlay().css('display', 'none');
			}
		);
        var effect = document.all ? 'ieEffect' : 'default';
        var handler = function (e) { return e.preventDefault(); };
        var homeTripIsChecked = jQuery('.BookingSearchForm #cbHome').attr('checked');
        var onlyAwayTripIsChecked = jQuery('.BookingSearchFormN #cbOnlyAway').attr('checked');

        if ((homeTripIsChecked != null && !homeTripIsChecked) || (onlyAwayTripIsChecked != null && onlyAwayTripIsChecked)) { return; }
        jQuery('.ModalInput').next().overlay({
            target: '#modalConfirm',
            mask: { color: '#000', loadSpeed: '200', opacity: '0.4' },
            closeOnClick: false,
            top: '30%',
            fixed: true,
            effect: effect,
            onBeforeLoad: function () {
                thisSelf = this;
                this.getOverlay().find('.Text').html(this.getTrigger().html());
                this.getOverlay().find('input').unbind('mouseup');
                var buttons = this.getOverlay().find('input').mouseup(function () {
                    var yes = buttons.index(this) === 1;
                    //thisSelf.getTrigger().attr('value', "You clicked " + (yes ? "yes" : "no"));
                    if (yes) {
                        thisSelf.getTrigger().parent().find('input').click();
                    } else {
                        //jQuery('#aspnetForm').bind('submit.myEvent', handler);
                    }
                });
            },
            onBeforeClose: function () {
                //jQuery('#aspnetForm').unbind('submit.myEvent');
            }
        });
    },
    setConfirmDeleteInCartMessage = function () {
        jQuery('#shoppingCart .Item input, #shoppingCart .ShoppingCartTripMiddleItem input').not('.RemoveRebookable,.RemoveCancellation,.RemoveCoopVoucher').each(function (index) {
            var count = jQuery('#shoppingCart .Item input, #shoppingCart .ShoppingCartTripMiddleItem input').length;
            if (count > 1) {
                var item = jQuery(this);
                item.click(
                    function (event) {
                        var text = jQuery('#shoppingCart #confirmDeleteGroupText').text();
                        if (!confirm(text)) {
                            event.preventDefault();
                        }
                    }
                );
            }
        });
    },
    //Update selects on commute card search form using AJAX
    updateSelectsOnCommuteCardSearchForm = function () {
        if (!IsCommuteSearchPage() && !IsCommuteSearchResultPage()) { return; }
        var startStopId;
        var str = '';
        var url = location.toString();
        if (url.lastIndexOf('?') != -1) {
            url = url.substring(0, url.lastIndexOf('?'));
        }
        var fromSelect = jQuery(jQuery('.CommuteCardSearchForm select')[0]);
        var toSelect = jQuery(jQuery('.CommuteCardSearchForm select')[1]);
        fromSelect.each(function (index) {
            jQuery(jQuery(this).find('option')).each(function (index1) {
                if (index1 < 2) {
                    str += '<option value="0">' + jQuery(this).html() + '</option>';
                }
            });
            if (fromSelect[0].selectedIndex < 2) {
                toSelect.attr('disabled', true);
            } else {
                startStopId = fromSelect[0][fromSelect[0].selectedIndex].value - 10000;
                getAllDestinationStops(url, startStopId, toSelect, fromSelect, str, true);
            }
            jQuery(this).change(function () {
                startStopId = jQuery(this).attr('value');
                startStopId = startStopId != '0' ? startStopId - 10000 : startStopId;
                if (startStopId == '0') {
                    toSelect.html('<option value="0">&nbsp;</option>');
                    toSelect.attr('disabled', true);
                    //toSelect.append(str);
                    return;
                }
                getAllDestinationStops(url, startStopId, toSelect, fromSelect, str);
            });
        });
    },

    //Returns true if this is commute search page
	IsCommuteSearchPage = function () {
	    return jQuery(document).find('.PageTypeCommuteSearchPage')[0] != null;
	},

    //Returns true if this is commute search page
	IsCommuteSearchResultPage = function () {
	    return jQuery(document).find('.PageTypeCommuteSearchResult')[0] != null;
	},

    //Get all destination stops
	getAllDestinationStops = function (location, startStopId, toSelect, fromSelect, str, prepend) {
	    jQuery.ajax({
	        type: 'POST',
	        url: location + '?ajax=true',
	        data: { 'startStopId': startStopId },
	        contentType: 'application/x-www-form-urlencoded; charset=utf-8',
	        dataType: 'html',
	        success: function (response) {
	            var stopId = toSelect[0][toSelect[0].selectedIndex].value;
	            //toSelect.attr('disabled', false);
	            if (fromSelect.attr('disabled')) {
	                toSelect.attr('disabled', true);
	            } else {
	                toSelect.attr('disabled', false);
	            }
	            toSelect.html('');
	            toSelect.append(str + response);
	            if (prepend) {
	                var items = toSelect[0].getElementsByTagName('option');
	                for (i = 0; i < items.length; i++) {
	                    if (items[i].value == stopId) {
	                        items[i].selected = 'selected';
	                    }
	                }
	            }
	        }
	    });
	},

    //Add mouse over event on navigation top
	addMouseOverEventOnNavigationTop = function () {
	    jQuery('#navigationTop .Folder').each(function (index) {
	        var folder = jQuery(this);
	        var levelThree = folder.next();
	        if (typeof document.body.style.maxHeight === 'undefined') {
	            levelThree.mouseover(function () {
	                folder.parent().addClass('Over');
	            });
	            levelThree.mouseout(function () {
	                folder.parent().removeClass('Over');
	            });
	            folder.mouseover(function () {
	                folder.parent().addClass('Over');
	            });
	            folder.mouseout(function () {
	                folder.parent().removeClass('Over');
	            });
	        } else {
	            levelThree.mouseover(function () {
	                folder.addClass('Over');
	            });
	            levelThree.mouseout(function () {
	                folder.removeClass('Over');
	            });
	        }
	    });
	},
    setShoppingCartPosition = function () {

        if (!jQuery('.InnerColumnB')[0]) { return; }
        if (!jQuery('.BookingSearchResultsN,.BookingSearchResults')[0]) { return; }
        var top = jQuery('.InnerColumnB').offset().top - parseFloat(jQuery('.InnerColumnB').css('marginTop').replace(/auto/, 0));
        var y = jQuery('.InnerColumnB').offset().top - parseFloat(jQuery('.InnerColumnB').css('marginTop').replace(/auto/, 0));

        function moveCart(yPos) {

            var searchForm = jQuery('.BookingSearchFormN:visible,.BookingSearchForm:visible');
            if (!searchForm[0]) {
                return;
            }
            if (searchForm.hasClass('BookingSearchFormN')) {
                top = (searchForm.offset().top + searchForm.height()) - parseFloat(jQuery('.InnerColumnB').css('marginTop').replace(/auto/, 0));
            }
            if (jQuery('.InnerColumnB').height() > jQuery(window).height()) {
                jQuery('.InnerColumnB').removeClass('fixed');
                return;
            }

            yPos = jQuery(this).scrollTop();

            if (yPos >= top) {
                jQuery('.InnerColumnB').addClass('fixed');
            } else {
                jQuery('.InnerColumnB').removeClass('fixed');
            }
        }

        moveCart(y);

        jQuery(window).scroll(function (event) {
            moveCart(jQuery(this).scrollTop());
        });
    },


    //Add events on toolbar
    addEventsOnToolbar = function () {
        //IE6 fix
        var toolbar = jQuery('.Toolbar');
        //toolbar.css('top', document.body.offsetHeight);
        //alert(jQuery(document.body).innerHeight())


        var tabs = jQuery('.Toolbar .Links a');
        var tabContainers = jQuery('.TabContainers .TabContainer');
        tabs.each(function (index) {
            var isRunning = false;
            var isActive = false;
            var tabItem = jQuery(this);
            var tabContent = jQuery(tabContainers[index]);
            var closeButton = tabContent.find('.CloseButton');
            tabItem.click(function () { showTabContent(); });
            closeButton.click(function () { hideTabContent(); });
            var showTabContent = function () {
                if (isRunning) { return; }
                isRunning = true;
                hideAllTabs();
                if (isIE6()) {
                    if (tabContent.css('top') != '-10000000px') {
                        hideTabContent();
                        isRunning = false;
                        return;
                    }
                    isRunning = true;
                    //alert(tabContent.css('top'))
                    var tabContentHeight = tabContent[0].offsetHeight - 1;
                    var tabContentHeightPlus = document.body.clientHeight - toolbar[0].offsetTop;
                    tabContent.css('left', (tabItem.parent()[0].offsetLeft - 1) + 'px');
                    tabContent.css('top', '-' + (tabContentHeight + tabContentHeightPlus) + 'px');
                    isRunning = false;
                    return;
                }
                if (tabContent.css('top') != '10px') {
                    hideTabContent();
                    isRunning = false;
                    return;
                }
                isRunning = true;
                var tabContentHeight = tabContent[0].offsetHeight - 1;
                tabItem.addClass('Active');
                tabContent.css('left', (tabItem.parent()[0].offsetLeft - 1) + 'px');
                tabContent.animate({ top: '-' + tabContentHeight }, 250, function () {
                    if (tabContent.find('.TextField')[0]) {
                        trackEvent('Footer', 'Click', 'Kundtjänst');
                        //tabContent.find('.TextField')[0].focus();
                    } else {
                        trackEvent('Footer', 'Click', tabContent.attr('id').replace(/page:/, ''));
                    }
                    isRunning = false;
                });
            };
            var hideTabContent = function () {
                if (isIE6()) {
                    tabContent.css('top', '-10000000px');
                    tabItem.removeClass('Active');
                } else {
                    tabContent.animate({ top: '10px' }, 250, function () {
                        tabItem.removeClass('Active');
                    });
                }
            };
            var isIE6 = function () {
                return typeof document.body.style.maxHeight === 'undefined';
            };
            var hideAllTabs = function () {
                //tabs.removeClass('Active');
                if (isIE6()) {
                    tabContainers.each(function (index1) {
                        if (index1 != index && jQuery(this).css('top') != '-10000000px') {
                            jQuery(this).css('top', '-10000000px');
                            jQuery(tabs[index1]).removeClass('Active');
                        }
                    });
                } else {
                    tabContainers.each(function (index1) {
                        if (index1 != index && jQuery(this).css('top') != '10px') {
                            jQuery(this).animate({ top: '10px' }, 250, function () {
                                jQuery(tabs[index1]).removeClass('Active');
                            });
                        }
                    });
                }
            };
        });

        jQuery('#frmCow .TextField').keypress(function (event) {
            if (event.keyCode == '13') {
                sendCallMeForm();
                return false;
            }
        });
        jQuery('#submitCallMe').click(function (e) {
            sendCallMeForm();
            return false;
        });

        var sendCallMeForm = function (tabContainer) {
            trackEvent('Footer', 'Submit', 'Kundtjänst');
            var form = jQuery('#frmCow');
            //var url = form.attr('action');
            var url = '/Templates/AjaxProxies/CustomerService/CustomerService.aspx';
            var postData = form.serialize();
            var textField = form.find('.TextField');
            var tabContainer = jQuery(jQuery('.TabContainers .TabContainer')[0]);
            var formContainer = tabContainer.find('.FormContainer');
            var thankYouContainer = tabContainer.find('.ThankYouContainer');
            var alertMessage = tabContainer.find('.AlertMessage');
            alertMessage.addClass('Hidden');
            if (textField.attr('value').length == 0 || isNaN(textField.attr('value'))) {
                //alertMessage.html('Du behöver ange ett nummer');
                alertMessage.removeClass('Hidden');
                reRenderContainer(tabContainer);
                return false;
            }
            jQuery.post(url, postData, function (data) {
                formContainer.addClass('Hidden');
                thankYouContainer.removeClass('Hidden');
                reRenderContainer(tabContainer);
                //alert(url)
            });
            return false;
        };

        var reRenderContainer = function (tabContainer) {
            var tabContentHeight = tabContainer[0].offsetHeight - 1;
            tabContainer.animate({ top: '-' + tabContentHeight }, 250, function () {
            });
        };
    },

    //Render startpage flash
	renderStartpageFlash = function (flashMovie) {
	    var flashMovie = flashMovie;
	    var flashDirectory = flashMovie.substring(0, flashMovie.lastIndexOf('/') + 1);
	    var flashvars = {
	        skinName: flashDirectory + 'Clear_Skin_3',
	        streamName: 'swebus'
	        //autoPlay: 'true',
	        //autoRewind: 'false'
	    };
	    var params = {
	        loop: 'true',
	        scale: 'showall',
	        menu: 'true',
	        play: 'true',
	        allowScriptAccess: 'sameDomain',
	        wmode: 'window',
	        quality: 'high',
	        salign: ''
	    };
	    var attributes = {};
	    jQuery('#myAlternativeContent1').flash({
	        swf: flashMovie,
	        height: 288,
	        width: 512,
	        params: params,
	        flashvars: flashvars
	    });
	},

    initBookingSearchFormNAirbusesRadioButtons = function () {
        var bookingSearchFrom = jQuery('.BookingSearchFormN')[0];

        if (!bookingSearchFrom) { return; }

        if (bookingSearchFrom == null) { return; }
        var checkboxIsAirportbuses = jQuery(jQuery('.IsAirportBuses')[0]);

        var stockholmArlandaTimeTable = jQuery(jQuery('.StockholmArlanda')[0]);
        var arlandaStockholmTimeTable = jQuery(jQuery('.ArlandaStockholm')[0]);


        var checkboxIsAirportbuses = jQuery('.IsAirportBuses')[0];

        var selFrom = jQuery('.BookingSearchFormN .From select')[0];
        var selTo = jQuery('.BookingSearchFormN .To select')[0];

        var returnTrip = jQuery(jQuery('.BookingSearchFormN .Return #returnTrip')[0]);
        var cbHideAwayTrip = jQuery(jQuery('.HideAwayTrip')[0]);
        var selectedToLocation;
        var selectedFromLocation;
        var airbusesContainer = jQuery(jQuery('.BookingSearchFormN .Return #airbusesRadioButtons')[0]);
        jQuery(selFrom).bind('change', function (item) {
            selectedFromLocation = eval('(' + jQuery(this).attr('value') + ')');
            selectedToLocation = eval('(' + jQuery(selTo).attr('value') + ')');

            if (isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
                airbusesContainer.removeClass('Hidden');
                checkboxIsAirportbuses.checked = true;
                returnTrip.addClass('Hidden');
                cbHideAwayTrip.addClass('Hidden');
            } else {
                airbusesContainer.addClass('Hidden');
                checkboxIsAirportbuses.checked = false;
                returnTrip.removeClass('Hidden');
                cbHideAwayTrip.removeClass('Hidden');
            }
        });
        jQuery(selTo).bind('change', function () {
            selectedFromLocation = eval('(' + jQuery(selFrom).attr('value') + ')');
            selectedToLocation = eval('(' + jQuery(this).attr('value') + ')');

            if (isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
                airbusesContainer.removeClass('Hidden');
                checkboxIsAirportbuses.checked = true;
                returnTrip.addClass('Hidden');
                cbHideAwayTrip.addClass('Hidden');
            } else {
                airbusesContainer.addClass('Hidden');
                checkboxIsAirportbuses.checked = false;
                returnTrip.removeClass('Hidden');
                cbHideAwayTrip.removeClass('Hidden');
            }
        });
        selectedFromLocation = eval('(' + jQuery(selFrom).attr('value') + ')');
        selectedToLocation = eval('(' + jQuery(selTo).attr('value') + ')');
        if (isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
            airbusesContainer.removeClass('Hidden');
            checkboxIsAirportbuses.checked = true;
            returnTrip.addClass('Hidden');
            cbHideAwayTrip.addClass('Hidden');
        } else {
            airbusesContainer.addClass('Hidden');
            checkboxIsAirportbuses.checked = false;
            returnTrip.removeClass('Hidden');
            cbHideAwayTrip.removeClass('Hidden');
        }

        if (stockholmArlandaTimeTable && checkboxIsAirportbuses.checked) {
            if (selectedFromLocation.Number == 1 && selectedFromLocation.Type == 0) {
                stockholmArlandaTimeTable.removeClass('Hidden');
            }
            if
		(
			selectedFromLocation.Number == 83 && selectedFromLocation.Type == 1 ||
			selectedFromLocation.Number == 362 && selectedFromLocation.Type == 1 ||
			selectedFromLocation.Number == 361 && selectedFromLocation.Type == 1 ||
			selectedFromLocation.Number == 320 && selectedFromLocation.Type == 1
		) {
                arlandaStockholmTimeTable.removeClass('Hidden');
            }
        }
    },
    showConfirmationMessageOnSearchResult = function (confirmationMessage) {
        if (!confirm(confirmationMessage)) {
            jQuery('.DisableSearchButtonDimmer').remove();
            return false;
        }
    },
    isAirbusesTrip = function (fromLocation, toLocation) {
        var airbusLocations = [{ Number: 83, Type: 1 }, { Number: 362, Type: 0 }, { Number: 361, Type: 0 }, { Number: 320, Type: 0 }, { Number: 1, Type: 0}];
        var isAirbusesTripFrom = false;
        var isAirbusesTripTo = false;
        var isAirbusesTrip = false;

        for (i = 0; i < airbusLocations.length; i++) {
            if (airbusLocations[i].Number == fromLocation.Number && airbusLocations[i].Type == fromLocation.Type) {
                isAirbusesTripFrom = true;
            }
            if (airbusLocations[i].Number == toLocation.Number && airbusLocations[i].Type == toLocation.Type) {
                isAirbusesTripTo = true;
            }
        }
        if (isAirbusesTripFrom && isAirbusesTripTo) {
            isAirbusesTrip = true;
        }
        return isAirbusesTrip;
    };

    return {
        init: init,
        writeStyleForJavaScriptEnabledBrowsers: writeStyleForJavaScriptEnabledBrowsers,
        renderStartpageFlash: renderStartpageFlash,
        trackEvent: trackEvent,
        ShowConfirmationMessageOnSearchResult: showConfirmationMessageOnSearchResult,
        expandForm: expandForm
    };
} ();
jQuery(document).ready(function () {
    swebus.init();
});
swebus.writeStyleForJavaScriptEnabledBrowsers();
//jQuery(function() {
//    swebus.init();
//});

