var tabs = {
	init: function (startTechnical) {
		this.optional = Ext.get('optional');
		this.standard = Ext.get('standard');
		this.technical = Ext.get('technical');

		this.optional.setVisibilityMode(Ext.Element.DISPLAY);
		this.standard.setVisibilityMode(Ext.Element.DISPLAY);
		this.technical.setVisibilityMode(Ext.Element.DISPLAY);

		this.optionalTab = Ext.get('optionalTab');
		this.standardTab = Ext.get('standardTab');
		this.technicalTab = Ext.get('technicalTab');

		// if this exists the tabs' content is hidden by default
		this.optionsContent = Ext.get('vehicleOptionsContent');

		if (this.optionsContent != null) {
			this.optionsContent.setVisibilityMode(Ext.Element.DISPLAY);
			this.optionsContent.hide();
		} else if (startTechnical) {
			this.optional.hide();
			this.standard.hide();
			this.technicalTab.parent().addClass('selectedTab');
			this.technical.show(true);
		} else {
			this.optionalTab.parent().addClass('selectedTab');
			this.technical.hide();
			this.standard.hide();
		}

		this.optionalTab.on('click', this.showOptional, this);
		this.standardTab.on('click', this.showStandard, this);
		this.technicalTab.on('click', this.showTechnical, this);
	},

	showStandard: function (e) {
		e.stopEvent();
		this.toggle(this.standardTab, this.standard);
	},

	showOptional: function (e) {
		e.stopEvent();
		this.toggle(this.optionalTab, this.optional);
	},

	showTechnical: function (e) {
		e.stopEvent();
		this.toggle(this.technicalTab, this.technical);
	},

	toggle: function (tabControl, tabContents) {
		var tabControlParent = tabControl.parent();
		var switchingOn = !tabControlParent.hasClass('selectedTab');

		this.optionalTab.parent().removeClass('selectedTab');
		this.standardTab.parent().removeClass('selectedTab');
		this.technicalTab.parent().removeClass('selectedTab');

		this.optional.hide();
		this.standard.hide();
		this.technical.hide();

		if (switchingOn) {
			if (this.optionsContent != null) {
				this.optionsContent.show();
			}

			tabControlParent.addClass('selectedTab');
			tabContents.show(true);
		} else {
			if (this.optionsContent != null) {
				this.optionsContent.hide();
			}
		}
	}
};

