/// <reference path="jquery-1.4.1-vsdoc.js"/>

/****************************
Global variables
****************************/
var swebusExpress = {}

/****************************
Startup script
****************************/

swebusExpress.startUp = function () {
    swebusExpress.initBookingSearchFormDatePickers();
    swebusExpress.initCommuteSearchFormDatePickers();
    swebusExpress.initCommuteTicketSearchFormDatePickers();
    swebusExpress.removeZeroDigit();
    swebusExpress.initBookingSearchFormDisableReturnTravel();

    //TODO: Ta bort en av nedanstående när man valt flöde
    swebusExpress.initBookingSearchFormAirbusesRadioButtons();
 //   swebusExpress.initBookingSearchFormNAirbusesRadioButtons();

    swebusExpress.initCommuteTicketSearchFormDisableReturnTravel();
    swebusExpress.initShoppingCartDetailsAccordion();
    swebusExpress.initSearchResultAccordion();
    swebusExpress.initOptionsAccordion();
    swebusExpress.initTravelHistoryAccordion();
    swebusExpress.initPrintButton();
    swebusExpress.initFixBugInIeForButtons();
    // Initialisera tabbvy för Landningssida - buss
    var tabView = new swebusExpress.TabView('TabView');
    // Initialisera tabbvy i textinnehåll
    var tabViewInContent = new swebusExpress.TabView('TabViewInContent');

}





//Initialisera booking search form datepickers
swebusExpress.initBookingSearchFormDatePickers = function() {
	if($('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_day1') == null) return;
	var journeyAwayDay = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_day1');
	var journeyAwayMonthYear = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_monthyear1');
	var journeyHomeDay = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyHome_day1');
	var journeyHomeMonthYear = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyHome_monthyear1');
	var xPos;
	if(window.ie6) {
	    xPos = -218;
	} else if(window.ie && (document.all && window.document.documentMode == 7)) {
		xPos = -219;
	} else {
		xPos = -210;
	}
	datePicker1 = new Calendar({
	ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_day1: { ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_monthyear1: 'Y-m', ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyAway_day1: 'd' }
}, { 
		classes: ['dashboard'],
		direction: 0,
		startDay: 1,
		tweak:{x:xPos,y:25},
		draggable: false,
		onShowStart: function(){swebusExpress.makeRoomForDatePicker('out2', true)},
		onHideComplete: function(){swebusExpress.makeRoomForDatePicker('out2', false);}
	});
	datePicker2 = new Calendar({
	ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyHome_day1: { ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyHome_monthyear1: 'Y-m', ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_BookingSearchForm1_JourneyHome_day1: 'd' }
}, { 
		classes: ['dashboard'],
		direction: 0,
		startDay: 1,
		tweak:{x:xPos,y:25},
		draggable: false,
		onShowStart: function(){swebusExpress.makeRoomForDatePicker('return2', true)},
		onHideComplete: function(){swebusExpress.makeRoomForDatePicker('return2', false);}
	});
	journeyAwayDay.fireEvent('change');
	journeyHomeDay.fireEvent('change');
}

//Initialisera Commutecard search form datepickers
swebusExpress.initCommuteSearchFormDatePickers = function() {
if ($('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_day1') == null) return;
    var validFromDateDay = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_day1');
    var validFromDateMonthYear = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_monthyear1');
    var xPos;
    if (window.ie6) {
        xPos = -218;
    } else if (window.ie) {
        xPos = -219;
    } else {
        xPos = -210;
    }
    datePicker1 = new Calendar({
    ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_day1: { ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_monthyear1: 'Y-m', ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteSearchForm1_ValidFromDate_day1: 'd' }
    }, {
        classes: ['dashboard'],
        direction: 0,
        startDay: 1,
        tweak: { x: xPos, y: 25 },
        draggable: false,
        onShowStart: function() { swebusExpress.makeRoomForDatePicker('out', true) },
        onHideComplete: function() { swebusExpress.makeRoomForDatePicker('out', false); }
    });
    validFromDateDay.fireEvent('change');
}
//Initialisera commute ticket search form datepickers
swebusExpress.initCommuteTicketSearchFormDatePickers = function() {
if ($('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_day1') == null) return;
    var journeyAwayDay = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_day1');
    var journeyAwayMonthYear = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_monthyear1');
    var journeyHomeDay = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyHome_day1');
    var journeyHomeMonthYear = $('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyHome_monthyear1');
    var xPos;
    if (window.ie6) {
        xPos = -218;
    } else if (window.ie) {
        xPos = -219;
    } else {
        xPos = -210;
    }
    datePicker1 = new Calendar({
    ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_day1: { ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_monthyear1: 'Y-m', ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyAway_day1: 'd' }
    }, {
        classes: ['dashboard'],
        direction: 0,
        startDay: 1,
        tweak: { x: xPos, y: 25 },
        draggable: false,
        onShowStart: function() { swebusExpress.makeRoomForDatePicker('out', true) },
        onHideComplete: function() { swebusExpress.makeRoomForDatePicker('out', false); }
    });
    datePicker2 = new Calendar({
    ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyHome_day1: { ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyHome_monthyear1: 'Y-m', ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_CommuteTicketSearchForm1_JourneyHome_day1: 'd' }
    }, {
        classes: ['dashboard'],
        direction: 0,
        startDay: 1,
        tweak: { x: xPos, y: 25 },
        draggable: false,
        onShowStart: function() { swebusExpress.makeRoomForDatePicker('return', true) },
        onHideComplete: function() { swebusExpress.makeRoomForDatePicker('return', false); }
    });
    journeyAwayDay.fireEvent('change');
    journeyHomeDay.fireEvent('change');
}

//Denna funktion skapar utrymme för den absolut positionerade datepickern
swebusExpress.makeRoomForDatePicker = function(id, show) {
	var out = $('out2');
	var ret = $('return2');
	var row2 = $('row2');
	var bottomHeight;
	if(window.ie) {
		bottomHeight = '128px';
	} else {
		bottomHeight = '132px';
	}
	if(show && id == 'return2') {
		//out.setStyle('padding-bottom', '107px');
		ret.setStyle('padding-bottom', bottomHeight);
	}
	if(!show && id == 'return2') {
		ret.setStyle('padding-bottom', '0');
		//out.setStyle('padding-bottom', '5px');
	}
	if(show && id == 'out2') {
		//ret.setStyle('padding-bottom', '107px');
		out.setStyle('padding-bottom', bottomHeight);
	}
	if(!show && id == 'out2') {
		out.setStyle('padding-bottom', '0');
		//ret.setStyle('padding-bottom', '5px');
	}
}

//Inaktivera returresa på sökformuläret för bokning när checkboxen är icheckad
swebusExpress.initBookingSearchFormDisableReturnTravel = function() {
    var checkboxItem = $$('.BookingSearchForm .Return #returnTrip .Row input')[0];
	if(checkboxItem == null) return;
	if(checkboxItem.checked) {
	    swebusExpress.disableReturnTravel(false)
	} else {
	    swebusExpress.disableReturnTravel(true)
	}
	checkboxItem.addEvent('click', function() {
		if(!checkboxItem.checked) {
		    swebusExpress.disableReturnTravel(true)
		} else {
		    swebusExpress.disableReturnTravel(false)
		}
	});
}
//Inaktivera returresa på sökformuläret Pendlarkort för bokning när checkboxen är icheckad
swebusExpress.initCommuteTicketSearchFormDisableReturnTravel = function() {
    var checkboxItem = $$('.CommuteTicketSearchForm .Return .Row input')[0];
    if (checkboxItem == null) return;
    if (checkboxItem.checked) {
        swebusExpress.disableCommuteReturnTravel(false)
    } else {
    swebusExpress.disableCommuteReturnTravel(true)
    }
    checkboxItem.addEvent('click', function() {
        if (!checkboxItem.checked) {
            swebusExpress.disableCommuteReturnTravel(true)
        } else {
        swebusExpress.disableCommuteReturnTravel(false)
        }
    });
}

//Visa/göm radiobuttons för flygbussar
swebusExpress.initBookingSearchFormAirbusesRadioButtons = function () {
    var bookingSearchFrom = $$('.BookingSearchForm')[0];
    if (bookingSearchFrom == null) return;
    var stockholmArlandaTimeTable = $$('.StockholmArlanda')[0];
    var arlandaStockholmTimeTable = $$('.ArlandaStockholm')[0];
    var checkboxIsAirportbuses = $$('.BookingSearchForm .Return #airbusesRadioButtons .IsAirportBuses')[0];
    var selFrom = $$('.BookingSearchForm .From select')[0];
    var selTo = $$('.BookingSearchForm .To select')[0];
    var returnTrip = $$('.BookingSearchForm .Return #returnTrip')[0];
    var selToSelectedValue;
    var selFromSelectedValue;
    var airbusesContainer = $$('.BookingSearchForm .Return #airbusesRadioButtons')[0];
    selFrom.addEvent('change', function (item) {
        selectedFromLocation = eval('(' + this[this.selectedIndex].value + ')');
        selectedToLocation = eval('(' + selTo[selTo.selectedIndex].value + ')');

        if (swebusExpress.isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
            airbusesContainer.removeClass('Hidden');
            checkboxIsAirportbuses.checked = true;
            returnTrip.addClass('Hidden');
        } else {
            airbusesContainer.addClass('Hidden');
            checkboxIsAirportbuses.checked = false;
            returnTrip.removeClass('Hidden');
        }
    });
    selTo.addEvent('change', function () {
        selectedFromLocation = eval('(' + selFrom[selFrom.selectedIndex].value + ')');
        selectedToLocation = eval('(' + this[this.selectedIndex].value + ')');

        if (swebusExpress.isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
            airbusesContainer.removeClass('Hidden');
            checkboxIsAirportbuses.checked = true;
            returnTrip.addClass('Hidden');
        } else {
            airbusesContainer.addClass('Hidden');
            checkboxIsAirportbuses.checked = false;
            returnTrip.removeClass('Hidden');
        }
    });
    selectedFromLocation = eval('(' + selFrom[selFrom.selectedIndex].value + ')');
    selectedToLocation = eval('(' + selTo[selTo.selectedIndex].value + ')');
    if (swebusExpress.isAirbusesTrip(selectedFromLocation, selectedToLocation)) {
        airbusesContainer.removeClass('Hidden');
        checkboxIsAirportbuses.checked = true;
        returnTrip.addClass('Hidden');
    } else {
        airbusesContainer.addClass('Hidden');
        checkboxIsAirportbuses.checked = false;
        returnTrip.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');
        }
    }
}

//Gör en check för att se om den valda resan är en flygbussresa
swebusExpress.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;
}

//Ta bort nollan mellan 1-9 om värdet börjar med en nolla i sökformuläret
swebusExpress.removeZeroDigit = function() {
	if ($$('.BookingSearchForm #out select.Date option')[0] != null) {
		$$('.BookingSearchForm #out select.Date option').each(function(item) {
			if(item.value.substring(0, 1) == 0) {
				item.value = item.value.replace(/0/, '');
			}
		});
		$$('.BookingSearchForm #return select.Date option').each(function(item) {
			if(item.value.substring(0, 1) == 0) {
				item.value = item.value.replace(/0/, '');
			}
		});
		$('aspnetForm').addEvent('submit', function() {
			swebusExpress.removeZeroDigit();
		});
    }
    if ($$('.CommuteCardSearchForm #out select.Date option')[0] != null) {
        $$('.CommuteCardSearchForm #out select.Date option').each(function(item) {
            if (item.value.substring(0, 1) == 0) {                
                item.value = item.value.replace(/0/, '');
            }
        });
        $('aspnetForm').addEvent('submit', function() {
            swebusExpress.removeZeroDigit();
        });
    }
    if ($$('.CommuteTicketSearchForm #out select.Date option')[0] != null) {
        $$('.CommuteTicketSearchForm #out select.Date option').each(function(item) {
            if (item.value.substring(0, 1) == 0) {                
                item.value = item.value.replace(/0/, '');
            }
        });
        $('aspnetForm').addEvent('submit', function() {
            swebusExpress.removeZeroDigit();
        });
    }
}

//Kontrollera inputfält innan submit på sökformuläret för bokning
swebusExpress.validateBookingSearchForm = function () {
    var isValid = true;
    var bookingSearchForm = $$('.BookingSearchForm')[0];
    if (bookingSearchForm == null) return;
    var alertMessageFrom = $$('.BookingSearchForm .From span.AlertMessage')[0];
    var alertMessageTo = $$('.BookingSearchForm .To span.AlertMessage')[0];
    alertMessageFrom.removeClass('Visible');
    alertMessageTo.removeClass('Visible');
    $$('.BookingSearchForm .From .Content select').each(function (item) {
        if (item[item.selectedIndex].value == 0) {
            alertMessageFrom.addClass('Visible');
            isValid = false;
        }
    });
    $$('.BookingSearchForm .To .Content select').each(function (item) {
        if (item[item.selectedIndex].value == 0) {
            alertMessageTo.addClass('Visible');
            isValid = false;
        }
    });
    /*
    var selectFrom = $$('.BookingSearchForm .From .Content select')[0];
    var selectTo = $$('.BookingSearchForm .To .Content select')[0];
    var alertMessageSameBusStop = $$('.BookingSearchForm .ErrorMessage');

    if (selectFrom && selectTo) {
        if (selectFrom[selectFrom.selectedIndex].value == selectTo[selectTo.selectedIndex].value) {
            alertMessageSameBusStop.removeClass('Hidden');
            isValid = false;
        }
    }
    */
    return isValid;
}
//Kontrollera inputfält innan submit på sökformuläret för pendlarkort
swebusExpress.validateCommuteSearchForm = function() {
    var isValid = true;
    var bookingSearchForm = $$('.CommuteCardSearchForm')[0];
    if (bookingSearchForm == null) return;
    var alertMessageFrom = $$('.CommuteCardSearchForm  .From span.AlertMessage')[0];
    var alertMessageTo = $$('.CommuteCardSearchForm  .To span.AlertMessage')[0];
    alertMessageFrom.removeClass('Visible');
    alertMessageTo.removeClass('Visible');
    $$('.CommuteCardSearchForm  .From .Content select').each(function(item) {
        if (item[item.selectedIndex].value == 0) {
            alertMessageFrom.addClass('Visible');
            isValid = false;
        }
    });
    $$('.CommuteCardSearchForm  .To .Content select').each(function(item) {
        if (item[item.selectedIndex].value == 0) {
            alertMessageTo.addClass('Visible');
            isValid = false;
        }
    });
    return isValid;
}

//Fixa till bugg på knappar som uppstår i Internet Explorer när användaren scrollar sidan
swebusExpress.initFixBugInIeForButtons = function() {
	if(document.all) {
		$(document.body).addEvent('scroll', function() {
			$$('label.ButtonBlackBig input', 'label.ButtonRedBig input').each(function(item) {
				item.value = item.value;
			});
		});
	}
}

//Inaktivera returresa på sökformuläret för bokning
swebusExpress.disableReturnTravel = function(disable) {
    $$('.BookingSearchForm .Return #returnTrip select', '.BookingSearchForm .Return #returnTrip button').each(function(item) {
        item.disabled = disable;
    });
}
//Inaktivera returresa på sökformuläret pendlarprodukt för bokning
swebusExpress.disableCommuteReturnTravel = function(disable) {
$$('.CommuteTicketSearchForm .Return select', '.CommuteTicketSearchForm .Return button').each(function(item) {
        item.disabled = disable;
    });
}

//Shopping cart details accordion
swebusExpress.initShoppingCartDetailsAccordion = function() {
	//var accordionObject = $$('.ShoppingCartDetails')[0];
	if($('shoppingCartDetails') == null) return
	if($('shoppingCartDetails').className.indexOf('Receipt') != -1) return;
	var timeDelay = 400;
	var accordion = new Accordion('div.Toggler', 'div.Element', {
	start:'all-closed',
	alwaysHide: true,
	opacity: false,
	duration: timeDelay,
	onActive: function(Toggler, Element){
		//Toggler.setStyle('color', '#fd0015');
		if(Toggler.className.indexOf('Last') != -1) {
			Toggler.removeClass('Last');
			Toggler.addClass('tmpLast');
		}
		if(Toggler.className.indexOf('Single') != -1) {
			Toggler.removeClass('Single');
			Toggler.addClass('tmpSingle');
		}
	},
 
	onBackground: function(Toggler, Element) {
			//Toggler.setStyle('color', '#000');
			if(Toggler.className.indexOf('tmpLast') != -1) {
				(function(){
					Toggler.removeClass('tmpLast');
					Toggler.addClass('Last');
				}).delay(timeDelay-50);
			}
			if(Toggler.className.indexOf('tmpSingle') != -1) {
				(function(){
					Toggler.removeClass('tmpSingle');
					Toggler.addClass('Single');
				}).delay(timeDelay-50);
			}
		}
	}, $('shoppingCartDetails'));
}

//Search result accordion
swebusExpress.initTravelHistoryAccordion = function() {
    if ($('TravelHistory') == null) return
    var timeDelay = 400;
    $ES('.TravelHistory div.Toggler').each(function(item) {
        item.addEvent('mouseenter', function(e) {
            item.addClass('Active');
        });
        item.addEvent('mouseout', function(e) {
            item.removeClass('Active');
        });
    });
    var accordion = new Accordion('.TravelHistory div.Toggler', '.TravelHistory div.Element', {
        start: 'all-closed',
        alwaysHide: true,
        opacity: false,
        duration: timeDelay
        ,onActive: function(Toggler, Element) {
            Toggler.getElements('input')[0].checked = true;
        },
        onBackground: function(Toggler, Element) {
            Toggler.getElements('input')[0].checked = false;
        }
    }, $('TravelHistory'));
    //Expandera Togglern om den var vald innan post back
    var expandItem = $$('#TravelHistory .Expand')[0];
    if (expandItem != null) {
        expandItem.fireEvent('click');
    }
}

//Search result accordion
swebusExpress.initSearchResultAccordion = function () {
    if ($('bookingSearchResults') == null) return
    var timeDelay = 400;
    $ES('.BookingSearchResults div.Toggler').each(function (item) {
        item.addEvent('mouseenter', function (e) {
            item.addClass('Active');
        });
        item.addEvent('mouseout', function (e) {
            item.removeClass('Active');
        });
    });
    var accordion = new Accordion('.BookingSearchResults div.Toggler', '.BookingSearchResults div.Element', {
        start: 'all-closed',
        alwaysHide: true,
        opacity: false,
        duration: timeDelay,
        onActive: function (Toggler, Element) {
            Toggler.getElements('input')[0].checked = true;
            //Toggler.setStyle('color', '#fd0015');
            //if(Toggler.className.indexOf('Last') != -1) {
            //	Toggler.removeClass('Last');
            //	Toggler.addClass('tmpLast');
            //}
            //if(Toggler.className.indexOf('Single') != -1) {
            //	Toggler.removeClass('Single');
            //	Toggler.addClass('tmpSingle');
            //}
        },
        onBackground: function (Toggler, Element) {
            Toggler.getElements('input')[0].checked = false;
            //Toggler.setStyle('color', '#000');
            //if(Toggler.className.indexOf('tmpLast') != -1) {
            //	(function(){
            //		Toggler.removeClass('tmpLast');
            //		Toggler.addClass('Last');
            //	}).delay(timeDelay-50);
            //}
            //if(Toggler.className.indexOf('tmpSingle') != -1) {
            //	(function(){
            //		Toggler.removeClass('tmpSingle');
            //		Toggler.addClass('Single');
            //	}).delay(timeDelay-50);
            //}
        }
    }, $('bookingSearchResults'));
    //Expandera Togglern om den var vald innan post back
    var expandItem = $$('#bookingSearchResults .Expand')[0];
    if (expandItem != null) {
        expandItem.fireEvent('click');
    }
    $$('.BookingSearchResults .ButtonBlack1').each(function (item) {
        var button = item.getElement('input');
        button.addEvent('click', function () {
            var disablingDiv = new Element('div', { 'class': 'DisableSearchButtonDimmer' });
            disablingDiv.injectInside($$('.BookingSearchResults')[0]);
            if ($$('.BookingSearchResults')[1]) {
                disablingDiv.injectInside($$('.BookingSearchResults')[1]);
            }
        });
    });
}

//Options accordion
swebusExpress.initOptionsAccordion = function() {
	return;
	if($('options') == null) return
	var timeDelay = 400;
	var accordion = new Accordion('.Options div.Toggler', '.Options div.Element', {
	start:'all-closed',
	alwaysHide: true,
	opacity: false,
	duration: timeDelay,
	onActive: function(Toggler, Element){
		//Toggler.setStyle('color', '#fd0015');
		if(Toggler.className.indexOf('Last') != -1) {
			Toggler.removeClass('Last');
			Toggler.addClass('tmpLast');
		}
		if(Toggler.className.indexOf('Single') != -1) {
			Toggler.removeClass('Single');
			Toggler.addClass('tmpSingle');
		}
	},
 
	onBackground: function(Toggler, Element) {
			//Toggler.setStyle('color', '#000');
			if(Toggler.className.indexOf('tmpLast') != -1) {
				(function(){
					Toggler.removeClass('tmpLast');
					Toggler.addClass('Last');
				}).delay(timeDelay-50);
			}
			if(Toggler.className.indexOf('tmpSingle') != -1) {
				(function(){
					Toggler.removeClass('tmpSingle');
					Toggler.addClass('Single');
				}).delay(timeDelay-50);
			}
		}
	}, $('options'));
}

//Add event to print button
swebusExpress.initPrintButton = function() {
	$$('.PrintButton a').each(function(item) {
		item.setAttribute('href', 'javascript:void(0)');
		item.addEvent("click", function(){
			if (window.print) window.print();
		});
	});	
}

//Toolbox accordion
swebusExpress.initToolboxAccordion = function() {
	if($('toolbar') == null) return
	var timeDelay = 400;
	var accordion = new Accordion('.Toolbox h2.Toggler', '.Toolbox div.Element', {
	    start:'all-closed',
	    alwaysHide: true,
	    opacity: false,
	    duration: timeDelay,
	    onActive: function(Toggler, Element) {
		    if(Toggler.className.indexOf('Last') != -1) {
			    (function(){
				    Toggler.removeClass('Last');
			        Toggler.addClass('tmpLast');
			    }).delay(100);
		    }
		    if(Toggler.className.indexOf('Single') != -1) {
			    Toggler.removeClass('Single');
			    Toggler.addClass('First');
			    Toggler.addClass('tmpSingle');
		    }
	    },
     
	    onBackground: function(Toggler, Element) {
		    if(Toggler.className.indexOf('tmpLast') != -1) {
			    (function() {
				    Toggler.removeClass('tmpLast');
				    Toggler.addClass('Last');
			    }).delay(timeDelay-50);
		    }
		    if(Toggler.className.indexOf('tmpSingle') != -1) {
			    (function(){
				    Toggler.removeClass('tmpSingle');
				    Toggler.removeClass('First');
				    Toggler.addClass('Single');
			    }).delay(timeDelay-50);
		    }
	    }
	}, $('toolbar'));
}

swebusExpress.validatePurchase = function(element) {

    var valid = swebusExpress.validateForm('paymentForm');

    if (valid)
        swebusExpress.disableButton(element);

    return valid;
}

swebusExpress.disableButton = function (element) {
    
    jQuery(element).parent().css('visibility','hidden');//.disabled = true;

    jQuery(element).parent().css('cursor', 'wait');

    setTimeout("function() {  jQuery(element).parent().css('visibility','visible'); jQuery(element).parent().css('cursor','pointer'); }", 10000);
}

//Validera formulär
swebusExpress.validateForm = function(container) {
    var isFormValid = true;
    var coopBonus = '';
    swebusExpress.clearErrorMessages(container);
    if ($(container) == null) return;
    $$('#' + container + ' div.Row').each(function(item) {
        if (item.className.indexOf('ValidateString') != -1) {
            if (!swebusExpress.validateString(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateEmail') != -1) {
            if (!swebusExpress.validateEmail(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateRadioButtons') != -1) {
            if (!swebusExpress.validateRadioButtons(item)) {
                isFormValid = false;
            }
        }

        if (item.className.indexOf('ValidateCreditCard') != -1) {
            if (!swebusExpress.validateCreditCard(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateAmExCreditCard') != -1) {
            if (!swebusExpress.ValidateAmExCreditCard(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateCCV') != -1) {
            if (!swebusExpress.validateCCV(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateAmExCCV') != -1) {
            if (!swebusExpress.validateAmExCCV(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateCOOPNumber') != -1) {
            coopBonus = item.getElements('input')[0].value;
            if (!swebusExpress.validateCOOPNumber(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateCOOPPremieNumber') != -1) {
            if (!swebusExpress.validateCOOPNumberPremie(item, coopBonus)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateNumber') != -1) {
            if (!swebusExpress.validateNumber(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateAmount') != -1) {
            if (!swebusExpress.validateAmount(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidatePinCode') != -1) {
            if (!swebusExpress.validatePinCode(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateDoublePinCode') != -1) {
            if (!swebusExpress.validateDoublePinCode(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateSSN') != -1) {
            if (!swebusExpress.validateSSN(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateUpdatedPinCode') != -1) {
            if (!swebusExpress.validateUpdatedPinCode(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateCustomerNumber') != -1) {
            if (!swebusExpress.validateCustomerNumber(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateMonthYear') != -1) {
            if (!swebusExpress.validateMonthYear(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidatePaymentMethod') != -1) {
            if (!swebusExpress.validatePaymentMethod(item)) {
                isFormValid = false;
            }
        }        
        if (item.className.indexOf('ValidateCheckbox') != -1) {
            if (!swebusExpress.validateCheckbox(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateBothEmailAndSMSPaymentForm') != -1) {
            if (!swebusExpress.validateEmailSMSPaymentForm(item)) {
                isFormValid = false;
            }
        }
        if (item.className.indexOf('ValidateZipCode') != -1) {
            if (!swebusExpress.validateZipCode(item)) {
                isFormValid = false;
            }
        }
    });
    return isFormValid;
}

//Validera sträng
swebusExpress.validateString = function(item) {
	var isValid = true;
	el = item.getElements('input');
	var stringLength = el[0].value.length;
	if(stringLength == 0) {
	    isValid = false;
	}
    if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}
//Validera creditcard
swebusExpress.validateCreditCard = function(item) {
	var isValid = true;
	el = item.getElements('input');
	var stringLength = el[0].value.length;
	if(el[0].value.length != 4 || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(el[1].value.length != 4 || isNaN(el[1].value)) {
	    isValid = false;
	}
	if(el[2].value.length != 4 || isNaN(el[2].value)) {
	    isValid = false;
	}
	if(el[3].value.length != 4 || isNaN(el[3].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera AmEx creditcard
swebusExpress.ValidateAmExCreditCard = function(item) {
	var isValid = true;
	el = item.getElements('input');
	var stringLength = el[0].value.length;
	if(el[0].value.length >16 || el[0].value.length < 15 || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera CCV
swebusExpress.validateCCV = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length != 3 || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera AmEx CCV
swebusExpress.validateAmExCCV = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length < 3 || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera COOPNumber
swebusExpress.validateCOOPNumber = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if((el[0].value.length > 0 && el[0].value.length != 7) || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}
//Validera COOPNumber
swebusExpress.validateCOOPNumberPremie = function(item,coopBonus) {
	var isValid = true;
	if (coopBonus.length == 0)
    {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera nummer
swebusExpress.validateNumber = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length == 0 || isNaN(el[0].value)) {
		isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera belopp
swebusExpress.validateAmount = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length == 0 || isNaN(el[0].value)) {
		isValid = false;
	}
	if(isValid) {
		if((parseInt(el[0].value) < 300) || (parseInt(el[0].value) > 2380)) {
			isValid = false;
		}
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera kundnummer
swebusExpress.validateCustomerNumber = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length != 6 || isNaN(el[0].value)) {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera pinkod
swebusExpress.validatePinCode = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[1]) {
		if(el[0].value.length < 6 || el[1].value.length < 6) {
			isValid = false;
		}
		if(el[0].value != el[1].value) {
			isValid = false;
		}
	} else {
		if(el[0].value.length < 4) {
			isValid = false;
		}
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera dubbel pinkod
swebusExpress.validateDoublePinCode = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length == 0 || el[1].value.length == 0) {
		isValid = false;
	}
	if(el[0].value.length != 0) {
		isValid = swebusExpress.validatePinCode(item);
	}
	if(el[1].value.length != 0) {
		isValid = swebusExpress.validatePinCode(item);
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera uppdaterad pinkod
swebusExpress.validateUpdatedPinCode = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length != 0) {
		isValid = swebusExpress.validatePinCode(item);
	}
	if(el[1].value.length != 0) {
		isValid = swebusExpress.validatePinCode(item);
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera lösenord
swebusExpress.validateSSN = function(item) {
	var isValid = true;
	el = item.getElements('input');
	if(el[0].value.length == 0 || isNaN(el[0].value)) {
		isValid = false;
	}
	if(el[0].value.length < 10 || el[0].value.length > 10) {
		isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera postnummer
swebusExpress.validateZipCode = function(item) {
    var isValid = true;
    el = item.getElements('input');
    var stringZipCode = el[0].value;
    var zipCodeReg = "^\\d{3}(\\s)?\\d{2}$";
    var regex = new RegExp(zipCodeReg);
    if (!regex.test(stringZipCode)) {
        isValid = false;
    }
    if (!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera month and year
swebusExpress.validateMonthYear = function(item) {
	var isValid = true;
	el = item.getElements('select');
	var month = el[0][el[0].selectedIndex];
	var year = el[1][el[1].selectedIndex];
	if(month.value == '00') {
	    isValid = false;
	}
	if(year.value == '00') {
	    isValid = false;
	}
	if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}
//Validera payment method
swebusExpress.validatePaymentMethod = function(item) {
    var isValid = true;
    var sum = $$('.SumToPay p');
    if(sum[0]) {
		sum = sum[0].innerHTML.split(' ')[0];
		sum = parseInt(sum);
		if (parseInt(sum) != 0) {
			el = item.getElements('select');
			var paymentMethod = el[0][el[0].selectedIndex];
			if (paymentMethod.value == '-1') {
				isValid = false;
			}
		}
	} else {
		el = item.getElements('select');
		var paymentMethod = el[0][el[0].selectedIndex];
		if (paymentMethod.value == '-1') {
			isValid = false;
		}
	}
    if (!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera email
swebusExpress.validateEmail = function (item) {
    var isValid = true;
    el = item.getElements('input');
    var stringEmail = el[0].value;

    if (stringEmail == '')
        return true;

    var emailReg = "^[\\w-_\.+]*[\\w-_\.]\@([\\w-]+\\.)+[\\w]+[\\w]$";
    var regex = new RegExp(emailReg);
    if (!regex.test(stringEmail)) {
        isValid = false;
    }
    if (!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera radiobuttons
swebusExpress.validateRadioButtons = function(item) {
	var isValid = false;
	var inputFields = item.getElements('input');
	inputFields.each(function(el) {
		if(el.checked) {
			isValid = true;
		}
	});
    if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}
//Validera checkbox
swebusExpress.validateCheckbox = function(item) {
	var isValid = true;
	var el = item.getElements('input');
	var checkbox = el[0];
	if(!checkbox.checked) {
	    isValid = false;
	}
    if(!isValid) item.addClass('ErrorFilled');
    return isValid;
}

//Validera email and SMS payment form
swebusExpress.validateEmailSMSPaymentForm = function (item) {
    var isValid = true;
    var itemMail = item;
    var itemSms;

    if (document.all)
        itemSms = item.nextSibling;
    else
        itemSms = item.nextSibling.nextSibling;
    var checkboxMail = itemMail.getElements('input')[0];
    var textfieldMail = itemMail.getElements('input')[1];
    var checkboxSms = itemSms.getElements('input')[0];
    var textfieldSms = itemSms.getElements('input')[1];
    if (!checkboxMail.checked && !checkboxSms.checked) {
        $('mailOrSMS').addClass('Visible');
        isValid = false;
        //return isValid;
    }
    if (checkboxMail.checked) {

        var emailReg = "^[\\w-_\.+]*[\\w-_\.]\@([\\w-]+\\.)+[\\w]+[\\w]$";
        //var emailReg = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

        if (textfieldMail.value == '') {
            isValid = false;
            itemMail.addClass('ErrorFilled');
        }
        var regex = new RegExp(emailReg);
        if (!regex.test(textfieldMail.value)) {
              isValid = false;
            if (!isValid) itemMail.addClass('ErrorFilled');
        }
    }
    if (checkboxSms.checked) {
        if (textfieldSms.value.search(/\d{8}/) == -1) {
            isValid = false;
            if (!isValid) itemSms.addClass('ErrorFilled');
        }
    }
    
    return isValid;
}

//Nollställ felmeddelanden
swebusExpress.clearErrorMessages = function(container) {
	$$('#'+container+' div.Row').each(function(item) {
		if(item.className.indexOf('ErrorFilled') != -1) {
		   item.removeClass('ErrorFilled');
		}
	});
	if($('mailOrSMS') != null) {
		$('mailOrSMS').removeClass('Visible');
	}
}

//Tömmer värdet på ett specifikt element om elementet existerar
swebusExpress.ClearTextBox = function(elem) {
    if (document.getElementById(elem)) {
        document.getElementById(elem).value = '';
    }
} 

//Tömmer värdet på ett specifikt element om elementet existerar
swebusExpress.ClearDropDown = function(elem) {
    if (document.getElementById(elem)) {
        document.getElementById(elem).value = document.getElementById(elem).options[0].value;
    }
} 

//Tömmer textboxar innehållande kreditkorts nummer
swebusExpress.ClearCreditCardValues = function() {
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccNo1');
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccNo2');
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccNo3');
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccNo4');   
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl03_ccNo');     
    swebusExpress.ClearTextBox('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccCVC');   
    swebusExpress.ClearDropDown('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccExpMonth');       
    swebusExpress.ClearDropDown('ctl00_MainContentPlaceHolder_ColumnAPlaceHolder_PaymentControl_PaymentType1_ctl02_ccExpYear');       
} 

//Klass TabView: gör så att element ser ut som tabbar
swebusExpress.TabView = new Class({
	// Constructor
	initialize: function(tabViewClass) {
		this.className = tabViewClass;
		this.tabContentClassName = 'Content';
		this.id = $$('.'+tabViewClass);
		if(this.id.length > 0) {
			this.loadTabView();
			this.hideNameLinks();
		}
	},
	loadTabView: function() {
		var thisSelf = this;
		var el = this.id;
		var isActive = false;
		$$('.'+this.className+' ul.Tabs li a').each(function(item, index) {
			if(thisSelf.getStringFromLastIndexOf(item.href) == thisSelf.getQueryString()) {
				thisSelf.showTabContent(index);
				isActive = true;
			}
		});
		if(!isActive)
			thisSelf.showTabContent(0);
		$$('.'+this.className+' ul.Tabs li a').each(function(item, index) {
			item.addEvent('click', function(e) {
				thisSelf.showTabContent(index);
			});
		});
	},
	getQueryString: function(){
		var href = window.location.toString();
		return this.getStringFromLastIndexOf(href);
	},
	getStringFromLastIndexOf: function(str){
		return str.substring(str.lastIndexOf('/')+1, str.length);
	},
	
	hideTableTrDetails: function(){
		$$('.'+this.className+' table tr.Details').each(function(item, index) {
			item.addClass('Hide');
		});
	},
	hideTabContent: function(){
		$$('.' + this.className + ' ul li').each(function(item, index) {
			item.removeClass('Active');
		});
		$$('.' + this.className + ' .' + this.tabContentClassName).each(function(item, index) {
			item.addClass('Hide');
			item.removeClass('Show');
		});
	},
	hideNameLinks: function(){
		$$('.' + this.className + ' a.ShowIfNoJavaScript').each(function(item, index) {
			item.setProperty('name', null);
		});
	},
	showTabContent: function(showID){
		this.hideTabContent();
		if($$('.' + this.className + ' ul.Tabs li').length == 0) return;
		$$('.' + this.className + ' ul.Tabs li')[showID].addClass('Active');
		$$('.' + this.className + ' .' + this.tabContentClassName)[showID].removeClass('Hide');
	}
});

//Exekveras när DOM:en är laddad
window.addEvent('domready', swebusExpress.startUp);

