YAHOO.namespace("mx.calendar");
YAHOO.namespace("search");
YAHOO.namespace("pricing");
YAHOO.namespace("pricingToDetail");
YAHOO.namespace("order");
YAHOO.namespace("mx");
YAHOO.namespace("mx.container");
YAHOO.namespace("start");
YAHOO.namespace("leanCheckOut");
YAHOO.namespace("example.container");
YAHOO.namespace("example");

var $ = function(id) {
	return document.getElementById(id);
};

YAHOO.mx.createCookie = function(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
};

YAHOO.mx.readCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for ( var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ')
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
};

YAHOO.mx.eraseCookie = function(name) {
	createCookie(name, "", -1);
};

YAHOO.mx.doToggle = function(id) {
	var el = document.getElementById(id);
	if (el.style.display == 'block')
		el.style.display = 'none';
	else
		el.style.display = 'block';
};

YAHOO.mx.calendar.localizeCal = function(cal, lang) {
	if (lang == 'de') {
		cal.cfg.setProperty("START_WEEKDAY", 1);
		cal.cfg.setProperty("DATE_FIELD_DELIMITER", ".");
		cal.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal.cfg.setProperty("MD_DAY_POSITION", 1);
		cal.cfg.setProperty("MD_MONTH_POSITION", 2);
		cal.cfg.setProperty("MONTHS_SHORT", [ "Jan", "Feb", "M\u00E4r", "Apr",
				"Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ]);
		cal.cfg.setProperty("MONTHS_LONG", [ "Januar", "Februar", "M\u00E4rz",
				"April", "Mai", "Juni", "Juli", "August", "September",
				"Oktober", "November", "Dezember" ]);
		cal.cfg.setProperty("WEEKDAYS_1CHAR", [ "S", "M", "D", "M", "D", "F",
				"S" ]);
		cal.cfg.setProperty("WEEKDAYS_SHORT", [ "So", "Mo", "Di", "Mi", "Do",
				"Fr", "Sa" ]);
		cal.cfg.setProperty("WEEKDAYS_MEDIUM", [ "Son", "Mon", "Die", "Mit",
				"Don", "Fre", "Sam" ]);
		cal.cfg.setProperty("WEEKDAYS_LONG", [ "Sonntag", "Montag", "Dienstag",
				"Mittwoch", "Donnerstag", "Freitag", "Samstag" ]);
	} else {
		cal.cfg.setProperty("START_WEEKDAY", 1);
		cal.cfg.setProperty("DATE_FIELD_DELIMITER", ".");
		cal.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal.cfg.setProperty("MD_DAY_POSITION", 1);
		cal.cfg.setProperty("MD_MONTH_POSITION", 2);
	}
};

YAHOO.mx.calendar.outboundSelectHandler = function(type, args, obj) {
	var selected = args[0];
	var dates = args[0];
	var date = dates[0];
	var year = date[0], month = date[1], day = date[2];
	var s_date = this._toDate(selected[0]);
	var end = YAHOO.mx.calendar.inbound;
	var start = YAHOO.mx.calendar.outbound;
	end.cfg.setProperty("mindate", s_date);
	if (end.getSelectedDates()[0] != null
			&& end.getSelectedDates()[0].getTime() < s_date.getTime())
		end.select(s_date);
	if (end.cfg.getProperty("pagedate") < start.cfg.getProperty("pagedate")) {
		end.cfg.setProperty("pagedate", start.cfg.getProperty("pagedate"));
	}
	end.render();
	var xd = s_date.getDate();
	if (xd < 10)
		xd = "0" + xd;
	YAHOO.mx.calendar.dDay.value = xd;
	if (month < 10)
		month = "0" + month;
	YAHOO.mx.calendar.dMonthYear.value = month + "-" + s_date.getFullYear();
	YAHOO.mx.calendar.outbound.hide();
	document.getElementById("departureDayOfWeek").value = YAHOO.mx.calendar.outbound.cfg
			.getProperty("WEEKDAYS_SHORT")[s_date.getDay()];

};

YAHOO.mx.calendar.inboundSelectHandler = function(type, args, obj) {
	var selected = args[0];
	var dates = args[0];
	var date = dates[0];
	var year = date[0], month = date[1], day = date[2];
	var end = YAHOO.mx.calendar.inbound;
	var start = YAHOO.mx.calendar.outbound;
	var s_date = this._toDate(selected[0]);
	if (end.cfg.getProperty("pagedate") < start.cfg.getProperty("pagedate")) {
		start.cfg.setProperty("pagedate", end.cfg.getProperty("pagedate"));
		start.render();
	}
	var xd = s_date.getDate();
	if (xd < 10)
		xd = "0" + xd;
	YAHOO.mx.calendar.rDay.value = xd;
	if (month < 10)
		month = "0" + month;
	YAHOO.mx.calendar.rMonthYear.value = month + "-" + s_date.getFullYear();
	YAHOO.mx.calendar.inbound.hide();
	document.getElementById("returnDayOfWeek").value = YAHOO.mx.calendar.outbound.cfg
			.getProperty("WEEKDAYS_SHORT")[s_date.getDay()];
};

YAHOO.mx.calendar.outboundPageHandler = function() {
	var end = YAHOO.mx.calendar.inbound;
	var start = YAHOO.mx.calendar.outbound;
	if (end.cfg.getProperty("pagedate") < start.cfg.getProperty("pagedate")) {
		end.cfg.setProperty("pagedate", start.cfg.getProperty("pagedate"));
		end.render();
	}
};

YAHOO.mx.calendar.inboundPageHandler = function() {
	var end = YAHOO.mx.calendar.inbound;
	var start = YAHOO.mx.calendar.outbound;
	if (end.cfg.getProperty("pagedate") < start.cfg.getProperty("pagedate")) {
		start.cfg.setProperty("pagedate", end.cfg.getProperty("pagedate"));
		start.render();
	}
};

YAHOO.mx.calendar.dateSelectChanged = function(evt, el) {
	YAHOO.mx.calendar.initCalendarValues();
	if (el.id.match(/departure/)) {
		var mja;
		var d;
		if (el.id.match(/Day/)) {
			mja = YAHOO.mx.calendar.dMonthYear.value.split('-');
			d = new Date(mja[1], mja[0] - 1, el.value);
		} else if (el.id.match(/MonthYear/)) {
			mja = el.value.split('-');
			d = new Date(mja[1], mja[0] - 1, YAHOO.mx.calendar.dDay.value);
		}
		YAHOO.mx.calendar.outbound.select(d);
		YAHOO.mx.calendar.outbound.cfg.setProperty("pagedate", d);
		YAHOO.mx.calendar.outbound.render();

		var end = YAHOO.mx.calendar.inbound;
		var start = YAHOO.mx.calendar.outbound;
		if (start.getSelectedDates()[0] != null
				&& start.getSelectedDates()[0].getTime() > d.getTime()) {
			end.select(d);
		}
	} else if (el.id.match(/return/)) {
		var mja;
		var d;
		if (el.id.match(/Day/)) {
			mja = YAHOO.mx.calendar.rMonthYear.value.split('-');
			d = new Date(mja[1], mja[0] - 1, el.value);
		} else if (el.id.match(/MonthYear/)) {
			mja = el.value.split('-');
			d = new Date(mja[1], mja[0] - 1, YAHOO.mx.calendar.rDay.value);
		}
		var end = YAHOO.mx.calendar.inbound;
		var start = YAHOO.mx.calendar.outbound;
		if (start.getSelectedDates()[0] != null
				&& start.getSelectedDates()[0].getTime() > d.getTime()) {
			// start.select(d);
		}
		YAHOO.mx.calendar.inbound.cfg.setProperty("pagedate", d);
		YAHOO.mx.calendar.inbound.select(d);
		YAHOO.mx.calendar.inbound.render();
	}
	YAHOO.mx.calendar.outboundPageHandler();
	YAHOO.mx.calendar.inboundPageHandler();
};

YAHOO.mx.calendar.initCalendarValues = function() {
	YAHOO.mx.calendar.dDay = document.getElementById("departureDay");
	YAHOO.mx.calendar.dMonthYear = document.getElementById("departureMonthYear");
	YAHOO.mx.calendar.rDay = document.getElementById("returnDay");
	YAHOO.mx.calendar.rMonthYear = document.getElementById("returnMonthYear");
	YAHOO.mx.calendar.dd = YAHOO.mx.calendar.dMonthYear.value.split('-')[0]
			+ "/" + YAHOO.mx.calendar.dDay.value + "/"
			+ YAHOO.mx.calendar.dMonthYear.value.split('-')[1];
	YAHOO.mx.calendar.rd = YAHOO.mx.calendar.rMonthYear.value.split('-')[0]
			+ "/" + YAHOO.mx.calendar.rDay.value + "/"
			+ YAHOO.mx.calendar.rMonthYear.value.split('-')[1];
	YAHOO.mx.calendar.rdv = YAHOO.mx.calendar.rDay.value + "."
			+ YAHOO.mx.calendar.rMonthYear.value.split('-')[0] + "."
			+ YAHOO.mx.calendar.rMonthYear.value.split('-')[1];
	YAHOO.mx.calendar.ddv = YAHOO.mx.calendar.dDay.value + "."
			+ YAHOO.mx.calendar.dMonthYear.value.split('-')[0] + "."
			+ YAHOO.mx.calendar.dMonthYear.value.split('-')[1];
};

YAHOO.mx.calendar.init = function() {
	// var myContainer = $("log");
	// var myLogReader = new YAHOO.widget.LogReader(myContainer);
	YAHOO.mx.calendar.initCalendarValues();

	var lang = YAHOO.mx.readCookie("mx_lang");
	var maxDate = YAHOO.widget.DateMath.add(new Date(),
			YAHOO.widget.DateMath.DAY, 330);

	YAHOO.mx.calendar.outbound = new YAHOO.widget.Calendar("outbound",
			"outboundCalendarContainer", {
				close :true
			});
	YAHOO.mx.calendar.outbound.cfg.setProperty("mindate", new Date());
	YAHOO.mx.calendar.outbound.cfg.setProperty("maxdate", maxDate);
	YAHOO.mx.calendar.outbound.cfg
			.setProperty("selected", YAHOO.mx.calendar.dd);
	YAHOO.mx.calendar.outbound.cfg.setProperty("pagedate",
			YAHOO.mx.calendar.dMonthYear.value.replace(/-/, "/"));
	YAHOO.mx.calendar.localizeCal(YAHOO.mx.calendar.outbound, lang);
	YAHOO.mx.calendar.outbound.render();

	YAHOO.mx.calendar.inbound = new YAHOO.widget.Calendar("inbound",
			"inboundCalendarContainer", {
				close :true
			});
	YAHOO.mx.calendar.inbound.cfg.setProperty("mindate", YAHOO.mx.calendar.dd);
	YAHOO.mx.calendar.inbound.cfg.setProperty("maxdate", maxDate);
	YAHOO.mx.calendar.inbound.cfg.setProperty("selected", YAHOO.mx.calendar.rd);
	YAHOO.mx.calendar.inbound.cfg.setProperty("pagedate",
			YAHOO.mx.calendar.rMonthYear.value.replace(/-/, "/"));
	YAHOO.mx.calendar.localizeCal(YAHOO.mx.calendar.inbound, lang);
	YAHOO.mx.calendar.inbound.render();

	// Listener to show the 1-up Calendar when the button is clicked
	YAHOO.util.Event.addListener("showOutboundCalendar", "click",
			YAHOO.mx.calendar.outButtonClick, YAHOO.mx.calendar.outbound, true);
	YAHOO.util.Event.addListener("showInboundCalendar", "click",
			YAHOO.mx.calendar.inButtonClick, YAHOO.mx.calendar.inbound, true);

	YAHOO.util.Event.addListener("hinrueck", "click", YAHOO.search.calcUIRadio,
			this, true);
	YAHOO.util.Event.addListener("oneway", "click", YAHOO.search.calcUIRadio,
			this, true);
	YAHOO.util.Event.addListener("gabel", "click", YAHOO.search.calcUIRadio,
			this, true);

	YAHOO.mx.calendar.outbound.selectEvent.subscribe(
			YAHOO.mx.calendar.outboundSelectHandler,
			YAHOO.mx.calendar.outbound, true);
	YAHOO.mx.calendar.inbound.selectEvent.subscribe(
			YAHOO.mx.calendar.inboundSelectHandler, YAHOO.mx.calendar.inbound,
			true);
	YAHOO.mx.calendar.outbound.changePageEvent.subscribe(
			YAHOO.mx.calendar.outboundPageHandler, YAHOO.mx.calendar.outbound);
	YAHOO.mx.calendar.inbound.changePageEvent.subscribe(
			YAHOO.mx.calendar.inboundPageHandler, YAHOO.mx.calendar.inbound);

	YAHOO.util.Event.addListener(YAHOO.mx.calendar.dDay, "change",
			YAHOO.mx.calendar.dateSelectChanged, YAHOO.mx.calendar.dDay, true);
	YAHOO.util.Event.addListener(YAHOO.mx.calendar.rDay, "change",
			YAHOO.mx.calendar.dateSelectChanged, YAHOO.mx.calendar.rDay, true);
	YAHOO.util.Event.addListener(YAHOO.mx.calendar.dMonthYear, "change",
			YAHOO.mx.calendar.dateSelectChanged, YAHOO.mx.calendar.dMonthYear,
			true);
	YAHOO.util.Event.addListener(YAHOO.mx.calendar.rMonthYear, "change",
			YAHOO.mx.calendar.dateSelectChanged, YAHOO.mx.calendar.rMonthYear,
			true);
};

YAHOO.mx.calendar.inButtonClick = function(type, args, obj) {
	c = YAHOO.mx.calendar.inbound;
	YAHOO.mx.doToggle("inboundCalendarContainer");
};

YAHOO.mx.calendar.outButtonClick = function(type, args, obj) {
	c = YAHOO.mx.calendar.inbound;
	YAHOO.mx.doToggle("outboundCalendarContainer");
};

YAHOO.search.ongoingDiv = null;
YAHOO.search.searchPreferencesInfoDiv = null;
YAHOO.search.sendRequestSearchInfo = function(waitscreenNumber) {
	if (YAHOO.search.ongoingDiv == null)
		YAHOO.search.ongoingDiv = document.getElementById("flashOngoing");
	if (YAHOO.search.searchPreferencesInfoDiv == null)
		YAHOO.search.searchPreferencesInfoDiv = document.getElementById("searchPreferencesInfo");
	YAHOO.search.ongoingDiv.style.display = "block";
	YAHOO.search.searchPreferencesInfoDiv.style.display = "block";

	var geoDs = new YAHOO.util.DataSource("xinfo.groovy?", {
		connMethodPost :false
	});
	var geocallback = {
		success : function(oRequest, oResponse, oPayload) {
			var jresp = eval("(" + oResponse.responseText + ")");
			if (jresp.u1 != null && jresp.u1 != "null") {
				YAHOO.search.wait = new YAHOO.widget.Panel("wait", {
					close :false,
					draggable :false,
					zindex :4,
					modal :false,
					visible :false
				});
				YAHOO.search.wait.setHeader("");
				if(waitscreenNumber == '1')
				{
					YAHOO.search.wait.setBody('<img src="' + jresp.u1 + '" />');
				}
				else
				{
					YAHOO.search.wait.setBody('<img src="' + jresp.u2 + '" />');
				}
				YAHOO.search.wait.render('geotarget');
				YAHOO.search.wait.show();
			}
		},
		failure : function(oRequest, oResponse, oPayload) {
		},
		scope :this
	};
	geoDs.sendRequest("type=geotarget", geocallback);

	var ds = new YAHOO.util.DataSource("ajax.do?", {
		connMethodPost :false
	});
	var callback = {
		success : function(oRequest, oResponse, oPayload) {
			YAHOO.search.searchPreferencesInfoDiv.innerHTML = oResponse.responseText;
		},
		failure : function(oRequest, oResponse, oPayload) {
		},
		scope :this
	};
	ds.sendRequest("method=searchInfo", callback);
};

YAHOO.search.sendRequest = function(url) {
	
	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
			window.location.href = "initSearchTrip.do";
		},
		processResult : function(o) {
			if (o.responseText.match(/class="fehler"/)
					|| o.responseText.match(/class="error"/)
					|| o.responseText.match(/error=searchFailure/)) {
				window.location.href = "initSearchTrip.do";
			} else {
				window.location.href = "listFlights.do";
			}
		},
		startRequest : function(url) {
			var obj = YAHOO.util.Connect.asyncRequest('GET', url
					+ "&noMessage=true", callback);
		}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	SearchObject.startRequest(url);
	window.setTimeout("YAHOO.search.sendRequestSearchInfo(1)", 600);
};

YAHOO.pricing.sendRequest = function(url) {

	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
			window.location.href = "initSearchTrip.do";
		},
		processResult : function(o) {
			if (o.responseText.match(/flightPricingError=true/)) {
				// window.alert("ERROR");
		window.location.href = "listFlights.do";
	} else {
		// window.alert("OKAY");
		// window.location.href = "initCheckOut.do";
		window.location.href = "showTripDetail.do";
	}
},
startRequest : function(url) {
	var obj = YAHOO.util.Connect.asyncRequest('GET', url, callback);
}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	SearchObject.startRequest(url);
	document.getElementById("pricingOngoing").style.display = "block";
};

YAHOO.pricing.sendRequestDirect = function(url) {
	
	//pricing TO
	
	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
			window.location.href = "initSearchTrip.do";
		},
		processResult : function(o) {
			if (o.responseText.match(/flightPricingError=true/)) {
				//window.alert("ERROR");
		window.location.href = "listFlights.do";
	} else {
		//window.alert("OKAY");
		window.location.href = "initCheckOut.do";
		// window.location.href = "showTripDetail.do";
	}
},
startRequest : function(url) {
	var obj = YAHOO.util.Connect.asyncRequest('GET', url, callback);
}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	SearchObject.startRequest(url);
	window.setTimeout("YAHOO.search.sendRequestSearchInfo(2)", 600);
	//$("pricingOngoing").style.display = "block";
};

YAHOO.pricingToDetail.sendRequest = function(url) {
	
	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
			window.location.href = "initSearchTrip.do";
		},
		processResult : function(o) {
			if (o.responseText.match(/flightPricingError=true/)) {
						// window.alert("ERROR");
				window.location.href = "listFlights.do";
			} else {
				// window.alert("OKAY");
				window.location.href = "showTripDetail.do";
			}
		},
		startRequest : function(url) {
			var obj = YAHOO.util.Connect.asyncRequest('GET', url, callback);
		}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	SearchObject.startRequest(url);

	document.getElementById("pricingOngoing").style.display = "block";
};

YAHOO.order.status = "0";
YAHOO.order.redirectDone = false;

YAHOO.order.pollerCallback = function(oRequest, oRawResponse) {
	var status = oRawResponse.results[0].com_maxviva_ibe_struts_action_OrderAction;
	var r_status = oRawResponse.results[0].redirectStatus;
	var directDebitUrl = oRawResponse.results[0].redirectUrl;
	
	YAHOO.order.status = status;
	
	if ( (status == "2" || status == "3" || status == "5") && !YAHOO.order.redirectDone ) {
		YAHOO.order.poller.clearAllIntervals();
		if(r_status == "4") {
			window.location.href = "searchTrip.do";
			YAHOO.order.redirectDone = true;
		}
		else if(r_status == "5") {
			window.location.href = directDebitUrl;
			YAHOO.order.redirectDone = true;
			return;
		}
		else {
			window.location.href = "showConfirmedOrder.do";
			YAHOO.order.redirectDone = true;
		}
	}	
	
}

YAHOO.order.pollerJsonParser = function(oRequest, oFullResponse) {
	var retval = {
		results : [],
		error :true,
		totalRecords :0
	};
	retval.results = [ oFullResponse ];
	retval.error = false;
	retval.totalRecords = 1;
	return retval;
}

YAHOO.order.startPoller = function() {
	YAHOO.order.poller = new YAHOO.util.DataSource("/engine/xinfo.groovy?");
	YAHOO.order.poller.responseType = YAHOO.util.DataSource.TYPE_JSON;
	YAHOO.order.poller.connMethodPost = true;
	YAHOO.order.poller.parseJSONData = YAHOO.order.pollerJsonParser;
	var pollId = YAHOO.order.poller.setInterval(1000, "type=yui",
			YAHOO.order.pollerCallback);
}

YAHOO.order.sendRequest = function(url) {
	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
		},
		processResult : function(o) {
		},
		startRequest : function(url) {
			var obj = YAHOO.util.Connect.asyncRequest('GET', url, callback);
		}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	YAHOO.util.Connect
			.asyncRequest(
					'GET',
					'/engine/xinfo.groovy?type=yui',
					{
						success : function(o) {
							var status = YAHOO.lang.JSON.parse(o.responseText);
							YAHOO.order.status = status.com_maxviva_ibe_struts_action_OrderAction;
							if (YAHOO.order.status == "0") {
								SearchObject.startRequest(url);
							}
						},
						failure : function(o) {
							var status = YAHOO.lang.JSON.parse(o.responseText);
							YAHOO.order.status = status.com_maxviva_ibe_struts_action_OrderAction;
						},
						scope :this
					});
//	if (YAHOO.order.status == "2")	window.location.href = "showConfirmedOrder.do";
};

YAHOO.search.calcUIDropdownInit = function() {
	YAHOO.util.Event.addListener("tripType", "click",
			YAHOO.search.calcUIDropdown);
	YAHOO.search.calcUIDropdown();
};

YAHOO.search.calcUIDropdown = function() {
	var tripType = document.forms["searchTripForm"].tripType.value;

	if (tripType == 'SOJ') {
		if (document.getElementById("openJawInbound")) {
			document.getElementById("openJawInbound").style.display = "block";
		}
		if (document.getElementById("locationsOJ")) {
			document.getElementById("locationsOJ").style.display = "block";
		}
	} else {
		if (document.getElementById("openJawInbound")) {
			document.getElementById("openJawInbound").style.display = "none";
		}
		if (document.getElementById("locationsOJ")) {
			document.getElementById("locationsOJ").style.display = "none";
		}
	}
};

YAHOO.search.calcUIRadio = function() {
	var tripType;
	if (!document.forms["searchTripForm"].tripType.length)
		tripType = document.forms["searchTripForm"].tripType.value;

	for (i = 0; i < document.forms["searchTripForm"].tripType.length; i++) {
		if (document.forms["searchTripForm"].tripType[i].checked == true) {
			tripType = document.forms["searchTripForm"].tripType[i].value;
		}
	}

	if (tripType == 'SOJ') {
		if (document.getElementById("openJawInbound")) {
			document.getElementById("openJawInbound").style.display = "block";
		}
		if (document.getElementById("locationsOJ")) {
			document.getElementById("locationsOJ").style.display = "block";
		}
	} else {
		if (document.getElementById("openJawInbound")) {
			document.getElementById("openJawInbound").style.display = "none";
		}
		if (document.getElementById("locationsOJ")) {
			document.getElementById("locationsOJ").style.display = "none";
		}
	}
};

function copyNameFields( withBirthday ) {
	
	document.getElementById("paymentFirstName").onchange = function() {
		this._changed = true;
	};
	document.getElementById("travellersFirstName0").onkeyup = function() {
		var e = document.getElementById("paymentFirstName");
		if (!e._changed) {
			e.value = document.getElementById("travellersFirstName0").value;
		}
	};

	document.getElementById("paymentLastName").onchange = function() {
		this._changed = true;
	};
	document.getElementById("travellersLastName0").onkeyup = function() {
		var e = document.getElementById("paymentLastName");
		if (!e._changed) {
			e.value = document.getElementById("travellersLastName0").value;
		}
	};
	
	document.getElementsByName( "paymentTitle" )[0].onchange = function() {
		this._changed = true;
	};
	document.getElementsByName( "travellersGender" )[0].onchange = function()
	{
		var paymentTitle = document.getElementsByName( "paymentTitle" )[0];
	   
		if( !paymentTitle._changed )
		{
			var selectedValue = document.getElementsByName( "travellersGender" )[0].value;
			
			for( var index = 0; index < document.getElementsByName( "travellersGender" )[0].length; index++ )
			{
				if( paymentTitle[index].value == selectedValue )
					paymentTitle.selectedIndex = index;
			}
		}
	}

	// birthday
	if( withBirthday == 'false' )
	{

		document.getElementById("travellersBirthDay0").onchange = function() {
			var e = document.getElementById("paymentBirthDay");
			if (!e._changed) {
				e.value = document.getElementById("travellersBirthDay0").value;
			}
		};
		document.getElementById("travellersBirthMonth0").onchange = function() {
			var e = document.getElementById("paymentBirthMonth");
			if (!e._changed) {
				e.value = document.getElementById("travellersBirthMonth0").value;
			}
		};
		document.getElementById("travellersBirthYear0").onchange = function() {
			var e = document.getElementById("paymentBirthYear");
			if (!e._changed) {
				e.value = document.getElementById("travellersBirthYear0").value;
			}
		};
	}

}

function hideCarDriverInput()
{
	var carDriverRows = YAHOO.util.Dom.getElementsByClassName('driversRow', 'tr');
	
	for( i=0; i<carDriverRows.length; i++ )
	{
		carDriverRows[i].style.display="none";
	}
}

YAHOO.leanCheckOut.init = function() {
	initChangeAddress();
	
	initChangeCarData();
//	
	//look at selected car
	var carRadios = YAHOO.util.Dom.getElementsByClassName('radioCar');
	var selectedCar = false;
	for( i=0; i< carRadios.length; i++ )
	{
		if( carRadios[i].name == "carId" && carRadios[i].checked && carRadios[i].value != '0'  )
		{
			selectedCar = true;
		}
	}
	
	if( !selectedCar )
	{
		hideCarDriverInput();
	}
	
	
	var form = document.forms['checkOutForm'];
	var radios = new Array();
	var carRadios = new Array();
	var paymentRadios = new Array();
	
	for (i = 0; i < form.elements.length; i++) {
		var elem = form.elements.item(i);
		if (elem.name == "hmrv") {
			radios.push(elem);
		}else if (elem.name == "carId") {
			carRadios.push(elem);
		}else if ( elem.name == "paymentType" ){
			paymentRadios.push( elem );
		}
	}
	
	YAHOO.util.Event.addListener(paymentRadios, "click",
			YAHOO.leanCheckOut.paymentClick);
	initPaymentDiv();
	
	YAHOO.util.Event.addListener(radios, "click",
			YAHOO.leanCheckOut.insuranceClick, radios, true);
	YAHOO.leanCheckOut.insuranceInit(0, radios, 0);
	checkGender();
	
	YAHOO.util.Event.addListener(carRadios, "click",
			YAHOO.leanCheckOut.carClick, carRadios, true);
	YAHOO.leanCheckOut.carInit(0, carRadios, 0);
	
};

YAHOO.leanCheckOut.paymentClick = function( e )
{
	try
	{
		closePaymentDivs();
		document.getElementById( "paymentDiv" + this.value ).style.display="block";
	}
	catch(err)
	{
		alert( err ); 
	}

}

function initPaymentDiv()
{
	closePaymentDivs();
	var payments = document.getElementsByName( "paymentType" );
	for( var i=0; i < payments.length; i++ )
	{
		if( payments[i].checked == true )
		{
			document.getElementById( "paymentDiv" + payments[i].value ).style.display="block";
		}
	}
}

function closePaymentDivs()
{
	var payments = YAHOO.util.Dom.getElementsByClassName( "paymentDiv" );
	for( var i=0; i < payments.length; i++ )
	{
		payments[i].style.display="none";
	}
}

function checkGender()
{
	var gender = document.getElementById("paymentTitle").value;
	var rowText = document.getElementById("paymentTaxRowText");
	var rowInput = document.getElementById("paymentTaxRowInput");
	
	if(rowText)
	{
		if( gender == "3") 
		{
			rowText.style.display = "block";
			rowInput.style.display = "block";
		}
		else 
		{
			rowText.style.display = "none";
			rowInput.style.display = "none";
		}
	}
}


YAHOO.leanCheckOut.carClick = function(type, args, obj) {
	
	var dom = YAHOO.util.Dom;
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	
	var currency = document.getElementById("currencyIso").innerHTML;
	var totPrice;
	
	var sumPayment = getFloatPrice('orderSumPayment');
	
	var showDialog = false;
	
	for (i = 0; i < args.length; i++) {
		var elem = args[i];
		
		if (elem.name == "carId" && elem.checked) {
			
			var priceSpan = dom.getNextSibling(elem);
			
			var price;
			if(elem.value == 0) price = 0;
			else price = parseFloat(priceSpan.innerHTML);
			
			//var totalprice = parseFloat( document.getElementById("orderTotalPrice").innerHTML );
			var totalprice = getFloatPrice("orderTotalPrice");
			
			var insuranceEntryprice = parseFloat( document.getElementById("insuranceOrderEntryTotalPrice").innerHTML );
			var carEntryprice = parseFloat( document.getElementById("carOrderEntryTotalPrice").innerHTML );
			
			var ccFeePrice = getFloatPrice('paymentPriceDisplay'); //parseFloat( document.getElementById("paymentPriceDisplay").innerHTML );
			var baggagePrice = getFloatPrice('baggagePriceDisplay');
			
			if(price > 0 || (price == 0 && carEntryprice > 0)) showDialog = true;
			
			document.getElementById("carPriceDisplay").innerHTML = f(price, fCfg) + " "
					+ currency;
			totPrice = f((totalprice - carEntryprice + price + ccFeePrice + baggagePrice - sumPayment ), fCfg)
					+ " " + currency;
			document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
			
			document.getElementById("carOrderEntryTotalPrice").innerHTML = price;
			document.getElementById("orderTotalPrice").innerHTML = totPrice;
			
			//select driver
			
			var elements = YAHOO.util.Dom.getElementsByClassName('driversRow');
			var textDia = "Mietwagen gew&auml;hlt <br/> Fahrer Reisender 1<br/>";
			
			
			//hide driverInput
			if( price == 0)
			{
				for (i = 0; i < elements.length; i++) {
					
					var e = elements[i];
					document.getElementsByName("isTravellerCarDriver")[i].value = 0;
					e.style.display="none";
					textDia = "";
				}
				
				showDialog = false;
				
			}
			else
			{
				for (h = 0; h < elements.length; h++) {
					
					var es = elements[h];
					es.style.display="";
					document.getElementsByName("isTravellerCarDriver")[0].value = 1;
					
				}
				
			}	
			//showSpecialCarPrice(id, name, price, unit, person, personLabel ) 
			showSpecialCarPrice("car", "Mietwagen:", price, "EUR", "0", "Mietwagen" );
		}
	}
	
	var handleOK = function() {
		this.hide();
	};
	if( showDialog )
	{
		mySimpleDialog = new YAHOO.widget.SimpleDialog("simpledialog1", {
			width :"200px",
			fixedcenter :true,
			visible :false,
			draggable :true,
			close :true,
			iframe :true,
			text : textDia + "Gesamtpreis: " + totPrice,
			icon :YAHOO.widget.SimpleDialog.ICON_WARN,
			constraintoviewport :true,
			buttons : [ {
				text :"OK",
				handler :handleOK
			} ]
		});
		mySimpleDialog.setHeader("Achtung! Preis&auml;nderung:");
		mySimpleDialog.render("insurance");
		mySimpleDialog.show();
		
	}
	
}


function showSpecialCarPrice(id, name, price, unit, person, personLabel ) {
	
	var productPrice = "&nbsp;";
	var personCount = "&nbsp;";
	
	if( unit == 2 )
	{
		productPrice = price.toFixed(2);
		productPrice = number_format(productPrice, 2, ",", ".") + "&nbsp;EUR";
		price = price * person;
		personCount = personLabel;
	}
	
	var outPrice = price.toFixed(2);
	outPrice = number_format(outPrice, 2, ",", ".") + "&nbsp;EUR";
	
	$('#' + id + "_Row").remove();
	
	// hide car agb-link
	if(document.getElementById( "carInf" ))
		document.getElementById( "carInf" ).style.display="none";
	
	var html = '<tr id="' + id +'_Row">';
		html += '<td><span id="">' + name + '</span></td>';
		html += '<td class="align_right border_left"></td>';
		html += '<td class="align_right border_left"></td>';
		html += '<td class="align_right border_left"></td>';
		html += '<td class="align_right border_left"><span id="carPrice">' + outPrice + '</span></td>';
		html += '</tr>';

	if( price > 0 )
	{
		$('#insurance_Row').before( html );
		
		// show car agb-link
		if(document.getElementById( "carInf" ))
			document.getElementById( "carInf" ).style.display="inline";
		
		
		return price;
	}
	
	return 0;
}


YAHOO.leanCheckOut.carInit = function(type, args, obj) {

	//alert("car init ");
	
	var displaySize = document.getElementById('carDisplaySize').innerHTML;
	
	
	var dom = YAHOO.util.Dom;
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	//var form = document.forms['orderForm'];
	var currency = document.getElementById("currencyIso").innerHTML;
	var totPrice;

	for (i = 0; i < args.length; i++) {
		var elem = args[i];
		
		if (elem.name == "carId" && elem.checked) {
			
			//display
			if( displaySize < i )
			{
				displaySize = i;
			}

			var priceSpan = dom.getNextSibling(elem);
			
			if(elem.value != "0")
			{
				var price = parseFloat(document.getElementById(elem.value).innerHTML);
				var totalprice = parseFloat(document.getElementById("orderTotalPrice").innerHTML);
				var insuranceEntryprice = parseFloat( document.getElementById("insuranceOrderEntryTotalPrice").innerHTML );
				var carEntryprice = parseFloat(document.getElementById("carOrderEntryTotalPrice").innerHTML);
				
//				document.getElementById("carPriceDisplay").innerHTML = f(price, fCfg) + " "
//						+ currency;
				totPrice = f((totalprice - carEntryprice + insuranceEntryprice + price), fCfg)
						+ " " + currency;
				
				document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
				
				showSpecialCarPrice("car", "Mietwagen:", price, "EUR", "0", "Mietwagen" );
			}
				
		}
	}
	
	
	showCars( displaySize );
	
};

function showCars( displaySize )
{
	
	try
	{
		var carRows = YAHOO.util.Dom.getElementsByClassName('carRow', 'tr');
		
		for( i=0; i<carRows.length; i++ )
		{
			YAHOO.util.Dom.removeClass( carRows[i].id, 'hiddenCarRow'); 
			
			if( i >= displaySize )
			{
				 YAHOO.util.Dom.addClass(carRows[i].id, 'hiddenCarRow'); 
			}
		}
		
		if( displaySize == 100 )
		{
			YAHOO.util.Dom.setStyle('carShowAll', 'display', 'none' );
			YAHOO.util.Dom.setStyle('carShowSome', 'display', 'block' );
		}
		else
		{
			YAHOO.util.Dom.setStyle('carShowSome', 'display', 'none' );
			YAHOO.util.Dom.setStyle('carShowAll', 'display', 'block' );
		}
	}
	catch( err )
	{
		;
	}
}

function initChangeAddress()
{
	YAHOO.example.container.dialogAddressBox = new YAHOO.widget.Dialog("dialog3", 
	{ 	width :"600px",
		fixedcenter :true,
		visible :false,
		draggable :true,
		iframe :true,
		constraintoviewport :true,
		modal :true
	 } );
	
	YAHOO.example.container.dialogAddressBox.render();
	YAHOO.example.container.dialogAddressBox.subscribe( "beforeShow", function(){ loadAddresses( 'listAddresses.do' );  });
	
	if( $( "#validatedAddress" ).val() == "valid" || $( "#validatedAddress" ).val() == "" )
	{
		$( "#paymentTable3_invalid" ).attr( "style", "display:none" );
		$( "#paymentTable4_invalid" ).attr( "style", "display:none" );
	}
	else
	{
		$( "#paymentTable3_invalid" ).attr( "style", "display:block" );
		$( "#paymentTable4_invalid" ).attr( "style", "display:block" );
	}
}

function loadAddresses( url )
{
	var callback = {
			success: function( o ) {
				document.getElementById( 'dialog3' ).innerHTML =  o.responseText;
			},
			failure: function( o ) {
			}
		}
	
	var transaction = YAHOO.util.Connect.asyncRequest( 'GET', url, callback, '' );
};

function togglePaymentAvailability( action ) {
	if( action == "valid" )
	{
		$( "#validatedAddress" ).val( "valid" );
		$( "#paymentTable3_valid" ).attr( "style", "display:block" );
		$( "#paymentTable4_valid" ).attr( "style", "display:block" );
		$( "#paymentTable3_invalid" ).attr( "style", "display:none" );
		$( "#paymentTable4_invalid" ).attr( "style", "display:none" );
	}
	else if ( action == "invalid" )
	{
		$( "#validatedAddress" ).val( "invalid" );
		$( "#paymentTable3_valid" ).attr( "style", "display:none" );
		$( "#paymentTable4_valid" ).attr( "style", "display:none" );
		$( "#paymentTable3_invalid" ).attr( "style", "display:block" );
		$( "#paymentTable4_invalid" ).attr( "style", "display:block" );
	}
}

function selectAddresses() 
{
	var EditObject = {
			handleSuccess : function( o ) {
				var isValid = false;
				
				if( $( "#validationResult" ).val() == "4" && $( "#paymentCityAlternative" ).val() != "NO_CHANGE" )
				{
					$( "#paymentCity" ).val( $( "#paymentCityAlternative :selected" ).val() );
					isValid = true;
				}
				else if( ( $( "#validationResult" ).val() == "11" || $( "#validationResult" ).val() == "14" )
						 && $( "#paymentZipAlternative" ).val() != "NO_CHANGE"  )
				{
					$( "#paymentZip" ).val( $( "#paymentZipAlternative :selected" ).val() );
					isValid = true;
				}
				
				if( isValid )
				{
					togglePaymentAvailability( "valid" );
				}
				else
					togglePaymentAvailability( "invalid" );
				
				// back to initCheckout
				YAHOO.example.container.dialogAddressBox.hide();
			}
		};
		
	var callback = {
		success : EditObject.handleSuccess
	};
		
	EditObject.handleSuccess();
};

function initChangeCarData()
{
	YAHOO.example.container.dialogCarBox = new YAHOO.widget.Dialog("dialog1", 
	{ 	width :"600px",
		fixedcenter :true,
		visible :false,
		draggable :true,
		iframe :true,
		constraintoviewport :true,
		modal :true
	 } );
	
	YAHOO.example.container.dialogCarBox.render();
	
	YAHOO.example.container.dialogCarBox.subscribe("beforeShow", function(){ loadLocations( 'listLocations.do' );  });
	//YAHOO.example.container.dialogCarBox.subscribe("hide", function(){ YAHOO.example.container.dialog1.destroy(); initChangeCarData();  });       
	
	YAHOO.util.Event.addListener("changeCarButton", "click", YAHOO.example.container.dialogCarBox.show, YAHOO.example.container.dialogCarBox, true );
}



function loadLocations( url )	
{	
	var callback = {
			success: function(o) {
				document.getElementById('dialog2').innerHTML =  o.responseText;
				},
			failure: function(o) {
				
				}
			} 

	var transaction = YAHOO.util.Connect.asyncRequest('GET', url, callback, 'type=region&code=DE');
	
};


YAHOO.leanCheckOut.insuranceClick = function(type, args, obj) {
	
	var dom = YAHOO.util.Dom;
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	//var form = document.forms['orderForm'];
	var personCount = parseInt(document.getElementById("insurancePersonCount").innerHTML);
	var currency = document.getElementById("currencyIso").innerHTML;
	var totPrice;
	
	var sumPayment = getFloatPrice('orderSumPayment');
	
	var showDialog = false;
	
	for (i = 0; i < args.length; i++) {
		var elem = args[i];
		
		if (elem.name == "hmrv" && elem.checked) {
			var priceSpan = dom.getNextSibling(elem);
			var price = parseFloat(priceSpan.innerHTML);
			
			//document.getElementById("orderTotalPrice").innerHTML
			var totalprice = getFloatPrice("orderTotalPrice");
			
			var insuranceEntryprice = parseFloat( document.getElementById("insuranceOrderEntryTotalPrice").innerHTML );
			
			var carEntryprice = parseFloat( document.getElementById("carOrderEntryTotalPrice").innerHTML );
			
			var ccFeePrice = getFloatPrice('paymentPriceDisplay'); //parseFloat( document.getElementById("paymentPriceDisplay").innerHTML );
			var baggagePrice = getFloatPrice('baggagePriceDisplay');
			
			if(price > 0 || (price == 0 && insuranceEntryprice > 0)) showDialog = true;
			
			document.getElementById("insurancePriceDisplay").innerHTML = f(price, fCfg) + " "
					+ currency;
			var p = totalprice - insuranceEntryprice + price + ccFeePrice + baggagePrice - sumPayment;
			totPrice = f(( p ), fCfg)
					+ " " + currency;
			
			document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
			
			document.getElementById("insuranceOrderEntryTotalPrice").innerHTML = price;
			document.getElementById("orderTotalPrice").innerHTML = totPrice;
			
		}
	}

	var handleOK = function() {
		this.hide();
	};
	if( showDialog )
	{
		mySimpleDialog = new YAHOO.widget.SimpleDialog("simpledialog1", {
			width :"200px",
			fixedcenter :true,
			visible :false,
			draggable :true,
			close :true,
			iframe :true,
			text :"Gesamtpreis: " + totPrice,
			icon :YAHOO.widget.SimpleDialog.ICON_WARN,
			constraintoviewport :true,
			buttons : [ {
				text :"OK",
				handler :handleOK
			} ]
		});
		mySimpleDialog.setHeader("Achtung! Preis&auml;nderung:");
		mySimpleDialog.render("insurance");
		mySimpleDialog.show();
		
		
		// show insurance agb-link
		if(document.getElementById( "insInf" ))
			document.getElementById( "insInf" ).style.display="inline";

	}
	else
	{
		//hide insurance agb-link
		if(document.getElementById( "insInf" ))
			document.getElementById( "insInf" ).style.display="none";
	}
};

YAHOO.leanCheckOut.insuranceInit = function(type, args, obj) {
	var dom = YAHOO.util.Dom;
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	//var form = document.forms['orderForm'];
	var personCount = parseInt(document.getElementById("insurancePersonCount").innerHTML);
	var currency = document.getElementById("currencyIso").innerHTML;
	var totPrice;

	for (i = 0; i < args.length; i++) {
		var elem = args[i];
		if (elem.name == "hmrv" && elem.checked) {
			var priceSpan = dom.getNextSibling(elem);
			var price = parseFloat(priceSpan.innerHTML);
			var totalprice = parseFloat(document.getElementById("orderTotalPrice").innerHTML);
			var insuranceEntryprice = parseFloat(document.getElementById("insuranceOrderEntryTotalPrice").innerHTML);
			document.getElementById("insurancePriceDisplay").innerHTML = f(price, fCfg) + " "
					+ currency;
			totPrice = f((totalprice - insuranceEntryprice + price), fCfg)
					+ " " + currency;
			document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
			
			// show insurance agb-link
			if(document.getElementById( "insInf" ) && insuranceEntryprice > 0)
				document.getElementById( "insInf" ).style.display="inline";
		}
	}
};

function calcDay(day, monthYear, field, lang, formNumber) {

	var startAt = 1;
	var dayName = {
		en :new Array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'),
		de :new Array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'),
		pl :new Array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
	};
	var mDays = Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if (lang != null && lang != '')
		language = lang;

	if (field == 'departure') {
		dateVal = document.forms["searchTripForm"].departureDay.value;
		monthYearVal = document.forms["searchTripForm"].departureMonthYear.value;
		// alert("departure: " + dateVal + " " + monthYearVal);
	} else if (field == 'return') {
		dateVal = document.forms["searchTripForm"].returnDay.value;
		monthYearVal = document.forms["searchTripForm"].returnMonthYear.value;
		// alert("return: " + dateVal + " " + monthYearVal);
	}
	// alert(" hghg" + monthYearVal.substr(0,2));
	// monthVal =
	// document.forms[frm].elements[nm2].options[document.forms[frm].elements[nm2].selectedIndex].value;
	var isLeapYear = (((monthYearVal.substr(3, 6) % 4 == 0) && (monthYearVal
			.substr(3, 6) % 100 != 0)) || (monthYearVal.substr(3, 6) % 400 == 0));
	mDays[1] = (isLeapYear) ? 29 : 28;
	if (dateVal > mDays[monthYearVal.substr(0, 2) - 1]) {
		if (field == 'departure') {
			setDDValue(document.forms["searchTripForm"].departureDay,
					mDays[monthYearVal.substr(0, 2) - 1]);
			dateVal = document.forms["searchTripForm"].departureDay.value;
		} else if (field == 'return') {
			setDDValue(document.forms["searchTripForm"].returnDay,
					mDays[monthYearVal.substr(0, 2) - 1]);
			dateVal = document.forms["searchTripForm"].returnDay.value;
		}
	}
	newDate = new Date(monthYearVal.substr(3, 6) + "/"
			+ monthYearVal.substr(0, 2) + "/" + dateVal);
	// alert("newDate " + newDate.getDay());
	if (field == 'departure') {
		dayIndex = newDate.getDay();
		// alert("index: " + monthIndex);
		if (dayIndex == 0 && startAt == 1)
			dayIndex = 7;
		if (dayIndex > 0 && startAt == 1)
			dayIndex = dayIndex - 1;
		document.forms["searchTripForm"].departureDayOfWeek.value = dayName[language][dayIndex];

		// calendar setzen
		var dateStr = newDate.getDate() + "";
		if (dateStr.length == 1)
			dateStr = "0" + dateStr;
		var monthStr = (newDate.getMonth() + 1) + "";
		if (monthStr.length == 1)
			monthStr = "0" + monthStr;
		var yearStr = newDate.getFullYear();
		var str = dateStr + monthStr + "-" + yearStr;
		// alert(str);
		if (document.forms["searchTripForm"].departure_f_date_d != null)
			document.forms["searchTripForm"].departure_f_date_d.value = str;
	} else if (field == 'return') {
		var dayIndex = newDate.getDay();
		// alert("index: " + monthIndex);
		if (dayIndex == 0 && startAt == 1)
			dayIndex = 7;
		if (dayIndex > 0 && startAt == 1)
			dayIndex = dayIndex - 1;
		document.forms["searchTripForm"].returnDayOfWeek.value = dayName[language][dayIndex];

		// calendar setzen
		var dateStr = newDate.getDate() + "";
		if (dateStr.length == 1)
			dateStr = "0" + dateStr;
		var monthStr = (newDate.getMonth() + 1) + "";
		if (monthStr.length == 1)
			monthStr = "0" + monthStr;
		var yearStr = newDate.getFullYear();
		var str = dateStr + monthStr + "-" + yearStr;
		// alert(document.forms["searchTripForm"].return_f_date_d);
		if (document.forms["searchTripForm"].return_f_date_d != null)
			document.forms["searchTripForm"].return_f_date_d.value = str;
	}
}

function setDDValue(oDropDown, sValue) {
	for ( var iIndex = 0; iIndex < oDropDown.options.length; ++iIndex) {
		if (oDropDown.options[iIndex].value == sValue) {
			oDropDown.selectedIndex = iIndex;
			break;
		}
	}
}

var ffNumberArray = new Array();

function cleanFrequentFlyer( pos )
{
	document.getElementById("travellersFrequentFlyerNumberSpan" + pos ).innerHTML = ffNumberArray[pos];
	document.getElementById("travellersFrequentFlyerNumber" + pos ).value = "";
}


YAHOO.leanCheckOut.initFrequentFlyer = function() 
{

	var ffNumberCount = 0;
	
	var allSpanTags = document.getElementsByTagName("span");
	
	for( i=0; i<allSpanTags.length; i++ )
	{
		if( allSpanTags[i].className == 'frequentFlyer')
		{
			ffNumberCount += 1;
			
		}
	}
	
	for( i=0; i < ffNumberCount; i++ )
	{
		var ffNumber = document.getElementById('travellersFrequentFlyerNumber' + i).value;

		if( ffNumber && ffNumber.match(/!YPSID!.*!YPSID!/) )
		{
			ffNumberArray[i] = document.getElementById('travellersFrequentFlyerNumberSpan' + i).innerHTML;
			document.getElementById('travellersFrequentFlyerNumberSpan' + i).innerHTML = '<span id="travellersFrequentFlyerNumber' + i +'">***********</span> <a href="#" onclick="cleanFrequentFlyer(\'' + i +'\');return false;">ändern</a>';
		}
	}
}



YAHOO.leanCheckOut.initPayment = function() 
{

	var ccNumber;
	var ccCvvNumber;
	var ccFirstName;
	var ccLastName;
	var ccType;
	var ccMonth;
	var ccYear;
	var ccDate;
	var ccnum = document.getElementById("ccNumber").value;
	var ccNumberFields;
	if(ccnum && ccnum.match(/!YPSID!.*!YPSID!/))
	{
		//check errors
		var allSpanTags = document.getElementsByTagName("span");
		
		for( i=0; i<allSpanTags.length; i++ )
		{
			if( allSpanTags[i].className == 'error' && ( allSpanTags[i].id == 'error.ccNumber' || allSpanTags[i].id == 'error.validTil' || allSpanTags[i].id == 'error.ccCvvNumber' || allSpanTags[i].id == 'error.cc.FirstName' || allSpanTags[i].id == 'error.cc.LastName'  ) )
			{
				//delete input
				document.getElementById("ccNumber").value = "";
				document.getElementById("ccNumberField1").value = "";
				document.getElementById("ccNumberField2").value = "";
				document.getElementById("ccNumberField3").value = "";
				document.getElementById("ccNumberField4").value = "";
				document.getElementById("ccCvvNumber").value = "";
				document.getElementById("ccFirstName").value = "";
				document.getElementById("ccLastName").value = "";
				document.getElementById("ccMonth").options.selectedIndex = 0;
				document.getElementById("ccYear").options.selectedIndex = 0;
				document.getElementById("ccType").options.selectedIndex = 0;
				
				//delete changePayment button
				replaceWith("changePayment", "&nbsp;");
				YAHOO.util.Event.onDOMReady(ccKeyUpListener);
				YAHOO.util.Event.on("submitLeanCheckout", "click", YAHOO.leanCheckOut.submitLeanCheckoutClick);
				return false;
				
			}
		
		}
		
		ccNumberFields = document.getElementById("ccNumberFields").innerHTML;
		document.getElementById("ccNumberFields").innerHTML = '';
		ccNumber = document.getElementById("ccNumber").parentNode.innerHTML;
		document.getElementById("ccNumber").parentNode.innerHTML = '<span id="ccNumber">***********' + document.getElementById("truncatedCC").value  + '</span>';
		ccCvvNumber = document.getElementById("ccCvvNumber").parentNode.innerHTML;
		replaceWith("ccCvvNumber", '<span id="ccCvvNumber">***</span>');
		ccFirstName = document.getElementById("ccFirstName").parentNode.innerHTML;
		replaceWith("ccFirstName", '<span id="ccFirstName">' + document.getElementById("ccFirstName").value + '</span>'); 
		ccLastName = document.getElementById("ccLastName").parentNode.innerHTML;
		replaceWith("ccLastName", '<span id="ccLastName">' + document.getElementById("ccLastName").value + '</span>'); 
		ccType = document.getElementById("ccType").parentNode.innerHTML; 
		var tmpCCType = document.getElementById("ccType");
		var parent = tmpCCType.parentNode;
		parent.removeChild(tmpCCType);
		parent.innerHTML = "<span id='ccType'>" + tmpCCType.options[tmpCCType.options.selectedIndex].text +  "</span>";
		
		ccDate = document.getElementById("ccMonth").parentNode.innerHTML;
		
		var tmpCCMonth = document.getElementById("ccMonth");
		var tmpCCYear = document.getElementById("ccYear");
		var parent = tmpCCMonth.parentNode;
		parent.removeChild(tmpCCMonth);
		parent.removeChild(tmpCCYear);
		
		var ccMonthVal = tmpCCMonth.options[tmpCCMonth.options.selectedIndex].value;
		var ccYearVal = tmpCCYear.options[tmpCCYear.options.selectedIndex].value;
		parent.innerHTML = "<span id='ccDate'>"+ ccMonthVal + " " + ccYearVal + "</span>";
		
		
		var myVar = new Array();
		myVar[0] = new Array();
		myVar[0] = {"ccNumberFields": ccNumberFields,
				"ccNumber" : ccNumber, 
				"ccCvvNumber" : ccCvvNumber,
				"ccFirstName" : ccFirstName,
				"ccLastName" : ccLastName, 
				"ccType" : ccType,
				"ccDate" : ccDate };
		
		YAHOO.util.Event.addListener("changePayment", "click",
				YAHOO.leanCheckOut.changePaymentClick, myVar, true );
		
		
	}
	else
	{
		//delete changePayment button
		replaceWith("changePayment", "&nbsp;");
		
		YAHOO.util.Event.onDOMReady(ccKeyUpListener);
	}
	
	
	//YAHOO.util.Event.on("checkOutForm", "submit", YAHOO.leanCheckOut.submitLeanCheckoutClick);
	//IE 7 Fix
	YAHOO.util.Event.on("submitLeanCheckout", "click", YAHOO.leanCheckOut.submitLeanCheckoutClick);
};


function validateCreditCardForm()
{
	var valid = true;

	//YAHOO.util.Dom.removeClass("error.paymentType.cc","error");
	//YAHOO.util.Dom.removeClass("error.cc.FirstName","error");
	//YAHOO.util.Dom.removeClass("error.cc.lastName","error");
	//YAHOO.util.Dom.removeClass("error.validTil","error");
	
	YAHOO.util.Dom.removeClass("ccPaymentTypeText","error");
	YAHOO.util.Dom.removeClass("ccFirstNameText","error");
	YAHOO.util.Dom.removeClass("ccLastNameText","error");
	YAHOO.util.Dom.removeClass("ccValidTil","error");
	
	

	var paymentType = '0';
	if(document.getElementById("checkOutForm").paymentType[0] && document.getElementById("checkOutForm").paymentType[0].checked && document.getElementById("checkOutForm").paymentType[0].value == 1 )
	{
		paymentType = '1';
	}
	else if(typeof(document.getElementById("checkOutForm").paymentType[0]) == 'undefined')
	{
		paymentType = document.getElementById("paymentType").value;
	}
	
	//cc -> paymentType=1
	if( paymentType == '1' )
	{
		valid = validateCreditNumber();
		
		var validCCvv = validateCvvNumber();	
		if( valid )
		{
			valid = validCCvv;	
		}

		var ccType = document.getElementById('ccType').options[document.getElementById('ccType').options.selectedIndex].value;
		var ccFirstName = document.getElementById('ccFirstName').value;
		var ccLastName = document.getElementById('ccLastName').value;
		var ccMonth = document.getElementById('ccMonth').options[document.getElementById('ccMonth').options.selectedIndex].value;
		var ccYear = document.getElementById('ccYear').options[document.getElementById('ccYear').options.selectedIndex].value;

		if( !validateCreditNumber() || !validateCvvNumber() )
		{
			valid = false;
		}
		
		if( ccType == '' )
		{
			YAHOO.util.Dom.addClass("ccPaymentTypeText","error")

			valid = false;
		}

		if( ccFirstName == '' )
		{
			YAHOO.util.Dom.addClass("ccFirstNameText","error");
			valid = false;
		}

		if( ccLastName == '' )
		{
			YAHOO.util.Dom.addClass("ccLastNameText","error");
			valid = false;
		}

		if( ccMonth == '0' || ccYear == '2000' )
		{
			YAHOO.util.Dom.addClass("ccValidTil","error");
			valid = false;
		}
	}


	return valid;
	
}

//YAHOO.leanCheckOut.ccKeyUpListener = function()

function ccKeyUpListener()
{
	
	var ids = ["ccNumberField1", "ccNumberField2", "ccNumberField3", "ccNumberField4" ];
	YAHOO.util.Event.addListener(ids, "keyup", validateCreditNumber);
	YAHOO.util.Event.addListener("ccType", "change", validateCreditNumber);
	YAHOO.util.Event.addListener("ccCvvNumber", "keyup", validateCvvNumber);
	YAHOO.util.Event.addListener(ids, "keyup", YAHOO.leanCheckOut.changeTab);

}


YAHOO.leanCheckOut.changeTab = function()
{
	//change tab
	if( (this.id) != 'ccNumberField4' && this.value.length == this.maxLength )
	{
		var tab = parseInt( this.id.charAt(13) ) + 1;
		document.getElementById('ccNumberField' + tab).focus();
	}
	
}
//YAHOO.leanCheckOut.validateCvvNumber = function()
function validateCvvNumber()
{
	var ccvNumber = document.getElementById('ccCvvNumber').value;
	var ccType = document.getElementById('ccType').options[document.getElementById('ccType').options.selectedIndex].value;
	var valid = false;
	var ccCvvNumberText = document.getElementById('ccCvvNumberText').getElementsByTagName('a')[0];
	if( ccType != 'AX' )
	{
		var digits = 3;
		document.getElementById('ccCvvNumber').maxLength = 3;
	}
	else
	{
		var digits = 4;
		document.getElementById('ccCvvNumber').maxLength = 4;
	}

	if( digits != ccvNumber.length )
	{
		YAHOO.util.Dom.addClass( ccCvvNumberText, "error");
		document.getElementById('ccCvvNumber').style.border = '1px solid #183161';
		
	}
	else
	{
		YAHOO.util.Dom.removeClass(ccCvvNumberText,"error")
		document.getElementById('ccCvvNumber').style.border = '';
		valid = true;
	}
	
	document.getElementById('ccCvvNumberLength').value =  ccvNumber.length;

	return valid;
	
}



function validateCreditNumber()
{
    var field1 =  document.getElementById("ccNumberField1").value;
    var field2 =  document.getElementById('ccNumberField2').value;
    var field3 =  document.getElementById('ccNumberField3').value;
    var field4 =  document.getElementById('ccNumberField4').value;
    var ccType = document.getElementById('ccType').options[document.getElementById('ccType').options.selectedIndex].value;

	var ccNumberFull = field1 + field2 + field3 + field4;
	var valid = false;
	if( ccType != 'AX' )
	{
		var maxDigits = 16;
		document.getElementById('ccNumberField4').maxLength = 4;
		
	}
	else
	{
		var maxDigits = 15;
		document.getElementById('ccNumberField4').maxLength = 3;
	}

	
	if( ccNumberFull != parseInt(ccNumberFull) || maxDigits != ccNumberFull.length )
	{
		document.getElementById('ccNumberField1').style.border = "1px solid #183161";
		document.getElementById('ccNumberField2').style.border = "1px solid #183161";
		document.getElementById('ccNumberField3').style.border = "1px solid #183161";
		document.getElementById('ccNumberField4').style.border = "1px solid #183161"; 
		YAHOO.util.Dom.addClass("ccNumberText","error")
	}
	else
	{
		document.getElementById('ccNumberField1').style.border = "";
		document.getElementById('ccNumberField2').style.border = "";
		document.getElementById('ccNumberField3').style.border = ""; 
		document.getElementById('ccNumberField4').style.border = ""; 
		YAHOO.util.Dom.removeClass("ccNumberText","error")
		
		
		valid = true;
	}
	
	if( valid )
	{	
		valid = Mod10(ccNumberFull);
	
		if(!valid)
		{
			document.getElementById('ccNumberField1').style.border = "1px solid #183161";
			document.getElementById('ccNumberField2').style.border = "1px solid #183161";
			document.getElementById('ccNumberField3').style.border = "1px solid #183161";
			document.getElementById('ccNumberField4').style.border = "1px solid #183161"; 
			YAHOO.util.Dom.addClass("ccNumberText","error")
			//alert( $('#ccAlertBox').val() );
		}
	}

	document.getElementById('ccNumber').value = ccNumberFull; 
	document.getElementById('ccNumberLength').value = ccNumberFull.length;
	
	return valid;
	
}


YAHOO.leanCheckOut.submitLeanCheckoutClick = function(e)
{   
	if(document.getElementById("ccNumber").tagName == 'SPAN')
	{
		trackEnricher();
		document.getElementById("checkOutForm").submit();
		return true;
	}
	
	var paymentSelected = $("input[name=paymentType]:checked").val();
	var validAddress = true;
	if( ( $( "#validatedAddress" ).val() == "invalid" ) && ( paymentSelected == "3" || paymentSelected == "4" ) )
	{
		alert( $( "#addressAlertBox" ).val() );
		YAHOO.util.Event.stopEvent(e);
		validAddress = false;
	}
	
	var validBankAccountPayment = true;
	if( validAddress && ( $( "#validatedBankAccount" ).val() == "invalid" ) && ( paymentSelected == "3" || paymentSelected == "5" ) )
	{
		alert( $( "#bankAccountAlertBox" ).val() );
		YAHOO.util.Event.stopEvent(e);
		validBankAccountPayment = false;
	}
	
	if( validAddress && validBankAccountPayment )
	{
		var valid = validateCreditCardForm();
		if( !valid )
		{
			alert( document.getElementById('ccAlertBox').value );
			YAHOO.util.Event.stopEvent(e);
		}else{
			var cc = document.getElementById("ccNumber").value;
			var trunk = cc.substring(cc.length-4, cc.length);
			document.getElementById("truncatedCC").value = trunk;
			trackEnricher();
			document.getElementById("checkOutForm").submit();
		}
	}

}

YAHOO.leanCheckOut.changePaymentClick = function()
{
	var ccNumberFields = this[0]["ccNumberFields"];
	var ccNumber = this[0]["ccNumber"];
	var ccCvvNumber = this[0]["ccCvvNumber"];
	var ccFirstName = this[0]["ccFirstName"];
	var ccLastName = this[0]["ccLastName"];
	var ccType = this[0]["ccType"];
	var ccDate = this[0]["ccDate"];
	
	
	document.getElementById('ccNumberFields').innerHTML = ccNumberFields;
	replaceWith( "ccNumber", ccNumber );
	replaceWith( "ccCvvNumber", ccCvvNumber );
	replaceWith( "ccFirstName", ccFirstName );
	replaceWith( "ccLastName", ccLastName );
	replaceWith( "ccType", ccType );
	replaceWith( "ccDate", ccDate );
	
	//delete input
	document.getElementById("ccNumberField1").value = "";
	document.getElementById("ccNumberField2").value = "";
	document.getElementById("ccNumberField3").value = "";
	document.getElementById("ccNumberField4").value = "";
	document.getElementById("ccNumber").value = "";
	document.getElementById("ccCvvNumber").value = "";
	document.getElementById("ccFirstName").value = "";
	document.getElementById("ccLastName").value = "";
	document.getElementById("ccMonth").options.selectedIndex = 0;
	document.getElementById("ccYear").options.selectedIndex = 0;
	document.getElementById("ccType").options.selectedIndex = 0;

	//delete changePayment button
	replaceWith("changePayment", "&nbsp;");
	
	YAHOO.util.Event.onDOMReady(ccKeyUpListener);
	
	try
	{
		if( ccFeeArray )
		{
			YAHOO.util.Event.onDOMReady(YAHOO.util.Event.addListener("ccType", "change", YAHOO.leanCheckOut.creditCCFee) );
		}
	}
	catch( err )
	{
		;
	}
	
}

function replaceWith( id, value )
{
	var tmp; 
	
	if (typeof id === 'string') 
	{
		tmp = document.getElementById(id);
	}
	else
	{
		tmp = id;
	}
	
	//var tmp = $(id);
	
	var next = tmp.nextSibling;
	var parent = tmp.parentNode;

		
	if( next )
	{
		next.innerHTML = value;
	}
	else
	{
		parent.innerHTML = value;

	}
		
}

function checkIt(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57) ) {
    	if( charCode == 46 || charCode == 39 || charCode == 37 )
    		return true;
    	else return false;
    }
    return true;
}

/* Created by: David Leppek

Basically, the alorithum takes each digit, from right to left and muliplies each second
digit by two. If the multiple is two-digits long (i.e.: 6 * 2 = 12) the two digits of
the multiple are then added together for a new number (1 + 2 = 3). You then add up the 
string of numbers, both unaltered and new values and get a total sum. This sum is then
divided by 10 and the remainder should be zero if it is a valid credit card. Hense the
name Mod 10 or Modulus 10. */
function Mod10(ccNumb) {  // v2.0
var valid = "0123456789";  // Valid digits in a credit card number
var len = ccNumb.length;  // The length of the submitted cc number
var iCCN = parseInt(ccNumb);  // integer of ccNumb
var sCCN = ccNumb.toString();  // string of ccNumb
sCCN = sCCN.replace (/^s+|s+$/g,'');  // strip spaces
var iTotal = 0;  // integer total set at zero
var bNum = true;  // by default assume it is a number
var bResult = false;  // by default assume it is NOT a valid cc
var temp;  // temp variable for parsing string
var calc;  // used for calculation of each digit

// Determine if the ccNumb is in fact all numbers
for (var j=0; j<len; j++) {
  temp = "" + sCCN.substring(j, j+1);
  if (valid.indexOf(temp) == "-1"){bNum = false;}
}

// if it is NOT a number, you can either alert to the fact, or just pass a failure
if(!bNum){
  alert("Not a Number");
  bResult = false;
}

// Determine if it is the proper length 
if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
  bResult = false;
} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
  if(len >= 15){  // 15 or 16 for Amex or V/MC
    for(var i=len;i>0;i--){  // LOOP throught the digits of the card
      calc = parseInt(iCCN) % 10;  // right most digit
      calc = parseInt(calc);  // assure it is an integer
      iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
      i--;  // decrement the count - move to the next digit in the card
      iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
      calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
      calc = calc *2;                                 // multiply the digit by two
      // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
      // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
      switch(calc){
        case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
        case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
        case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
        case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
        case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
        default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
      }                                               
    iCCN = iCCN / 10;  // subtracts right most digit from ccNum
    iTotal += calc;  // running total of the card number as we loop
  }  // END OF LOOP
  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
    bResult = true;  // This IS (or could be) a valid credit card number.
  } else {
    bResult = false;  // This could NOT be a valid credit card number
    }
  }
}
// change alert to on-page display or other indication as needed.
/*if(bResult) {
  alert("This IS a valid Credit Card Number!");
}
if(!bResult){
  alert("This is NOT a valid Credit Card Number!");
}*/
  return bResult; // Return the results
}


YAHOO.leanCheckOut.creditCCFee = function() {
	var ccType = this.value;
	var oldPrice = getFloatPrice('paymentPriceDisplay');
	var currency = document.getElementById('currencyIso').innerHTML;
	
	if( ccType && ccType != '' )
	{
		document.getElementById('paymentPriceDisplay').innerHTML = ccFeeArray[ccType];
	}
	else
	{
		document.getElementById('paymentPriceDisplay').innerHTML = ccFeeArray['default'];
	}
	
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	
	var newPrice = getFloatPrice('paymentPriceDisplay');
	var totPrice = getFloatPrice('orderTotalPriceDisplay');
		totPrice = f((totPrice - oldPrice + newPrice ), fCfg) + " " + currency;
		totPrice = addSeparators( totPrice );
	
	document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
}

YAHOO.leanCheckOut.creditCCFeeInit = function() {	
	var f = YAHOO.util.Number.format;
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	
	var ccType = document.getElementById('ccType').options[document.getElementById('ccType').options.selectedIndex].value;
	var currency = document.getElementById('currencyIso').innerHTML;
	if( ccType && ccType != '' )
	{
		document.getElementById('paymentPriceDisplay').innerHTML = ccFeeArray[ccType];
	}
	
	var newPrice = getFloatPrice('paymentPriceDisplay');
	
	var sumPayment = getFloatPrice('orderSumPayment');
	
	var totPrice = getFloatPrice('orderTotalPriceDisplay');
	totPrice = f((totPrice + newPrice - sumPayment), fCfg) + " " + currency;
	
	totPrice = addSeparators( totPrice );

	document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
}

YAHOO.leanCheckOut.creditCardFee = function() {
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById( 'currencyIso' ).innerHTML;
	var oldPrice = getFloatPrice( 'paymentPriceDisplay' );
	var fCfg = {
		"decimalPlaces":2,
		"decimalSeparator":","
	};
	
	var ccType = document.getElementById('ccType').options[document.getElementById('ccType').options.selectedIndex].value;
	var val;
	
	if( ccType && ccType != '' )
	{
		document.getElementById( "paymentPriceDisplay" ).innerHTML = ccFeeArray[ccType];
		val = parseFloat( document.getElementById( "cctype_" + ccType ).getAttribute( "value" ) );
	}
	else
	{
		document.getElementById( "paymentPriceDisplay" ).innerHTML = f( 0, fCfg ) + " " + currency;
		val = 0;
	}

	var totPrice = getFloatPrice( "orderTotalPriceDisplay" );
	
	totPrice = f( ( totPrice + val - oldPrice ), fCfg ) + " " + currency;
	totPrice = addSeparators( totPrice );
	
	document.getElementById( "orderTotalPriceDisplay" ).innerHTML = totPrice;
}

YAHOO.leanCheckOut.directDebitFee = function() {
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById( 'currencyIso' ).innerHTML;
	var oldPrice = getFloatPrice( 'paymentPriceDisplay' );
	var fCfg = {
		"decimalPlaces":2,
		"decimalSeparator":","
	};

	var val = parseFloat( document.getElementById( "directDebitPaymentPrice" ).getAttribute( "value" ) );
	
	document.getElementById( "paymentPriceDisplay" ).innerHTML = f( val, fCfg ) + " " + currency;

	var totPrice = getFloatPrice( "orderTotalPriceDisplay" );
	
	totPrice = f( ( totPrice + val - oldPrice ), fCfg ) + " " + currency;
	totPrice = addSeparators( totPrice );
	
	document.getElementById( "orderTotalPriceDisplay" ).innerHTML = totPrice;
}

YAHOO.leanCheckOut.elvFee = function() {
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById( 'currencyIso' ).innerHTML;
	var oldPrice = getFloatPrice( 'paymentPriceDisplay' );
	var fCfg = {
		"decimalPlaces":2,
		"decimalSeparator":","
	};

	var val = parseFloat( document.getElementById( "elvPaymentPrice" ).getAttribute( "value" ) );
	
	document.getElementById( "paymentPriceDisplay" ).innerHTML = f( val, fCfg ) + " " + currency;

	var totPrice = getFloatPrice( "orderTotalPriceDisplay" );
	
	totPrice = f( ( totPrice + val - oldPrice ), fCfg ) + " " + currency;
	totPrice = addSeparators( totPrice );
	
	document.getElementById( "orderTotalPriceDisplay" ).innerHTML = totPrice;
}

YAHOO.leanCheckOut.invoiceFee = function() {
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById( 'currencyIso' ).innerHTML;
	var oldPrice = getFloatPrice( 'invoicePriceDisplay' );
	var fCfg = {
		"decimalPlaces":2,
		"decimalSeparator":","
	};

	var val = parseFloat( document.getElementById( "invoicePaymentPrice" ).getAttribute( "value" ) );
	
	document.getElementById( "paymentPriceDisplay" ).innerHTML = f( val, fCfg ) + " " + currency;

	var totPrice = getFloatPrice( "orderTotalPriceDisplay" );
	
	totPrice = f( ( totPrice + val - oldPrice ), fCfg ) + " " + currency;
	totPrice = addSeparators( totPrice );
	
	document.getElementById( "orderTotalPriceDisplay" ).innerHTML = totPrice;
}

YAHOO.leanCheckOut.baggageFee = function() {
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById('currencyIso').innerHTML;
	var oldBaggagePrice = getFloatPrice('baggagePriceDisplay');
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	
	var totalBaggage = 0;
	for( i=0; i<personCount; i++ )
	{
		var val = document.getElementById('travellersBaggage_' + i).value;
		totalBaggage += parseFloat( baggageFeeArray[val] );
	}
	
	document.getElementById("baggagePriceDisplay").innerHTML = f(totalBaggage, fCfg) + " " + currency;

	var totPrice = getFloatPrice('orderTotalPriceDisplay');
	
	totPrice = f((totPrice + totalBaggage - oldBaggagePrice ), fCfg) + " " + currency;
	totPrice = addSeparators( totPrice );
	
	document.getElementById("orderTotalPriceDisplay").innerHTML = totPrice;
	
}

YAHOO.leanCheckOut.baggageFeeInit = function() {
	
	
	var f = YAHOO.util.Number.format;
	var currency = document.getElementById('currencyIso').innerHTML;
	var oldBaggagePrice = getFloatPrice('baggagePriceDisplay');
	var fCfg = {
		"decimalPlaces" :2,
		"decimalSeparator" :","
	};
	
	var totalBaggage = 0;
	for( i=0; i<personCount; i++ )
	{
		var val = document.getElementById('travellersBaggage_' + i).value;
		totalBaggage += parseFloat( baggageFeeArray[val] );
	}
	
	document.getElementById("baggagePriceDisplay").innerHTML = f(totalBaggage, fCfg) + " " + currency;
	
}

function addSeparators( nStr )
{
	nStr += '';
	x = nStr.split( '.' );
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while ( rgx.test( x1 ) ) {
		x1 = x1.replace( rgx, '$1' + '.' + '$2' ); // Tausender-Trennzeichen einfügen
	}
	return x1 + x2;
}

function getFloatPrice( objId )
{
	try
	{
		var tmp = document.getElementById( objId ).innerHTML;
		
		var currency = document.getElementById('currencyIso').innerHTML;
		tmp = tmp.replace(' ' + currency, '');
		
		if(tmp.indexOf(",") != -1)
			tmp = tmp.replace( '.', '' ); // Tausender-Trennzeichen entfernen wenn Dezimal-Trennzeichen ',' vorhanden 
		
		tmp = tmp.replace( ',', '.' ); // Dezimal-Trennzeichen durch '.' ersetzen
		
		return parseFloat( tmp );
	}
	catch( err )
	{
		return parseFloat( '0.00');
	}
}

function selectCarLocation() 
{
	var SearchObject = {
		handleSuccess : function(o) {
			this.processResult(o);
		},
		handleFailure : function(o) {
			window.location.href = "initCheckout.do";
		},
		processResult : function(o) {
			
			if( o.responseText.match(/class="error" ><\/span>/) )
			{
				//back to initCheckout
				reloadInitCheckout();
			}
			else
			{
				document.getElementById( 'carErrors' ).innerHTML = o.responseText;
			}
		},
		startRequest : function() {
			
			document.getElementById( 'carErrors' ).innerHTML = "";
			var formObject = document.getElementById('carLocationForm');
			YAHOO.util.Connect.setForm(formObject);

			var obj = YAHOO.util.Connect.asyncRequest('POST', 'selectLocationsTo.do', callback);
		}
	};
	var callback = {
		success :SearchObject.handleSuccess,
		failure :SearchObject.handleFailure,
		scope :SearchObject
	};
	SearchObject.startRequest();
};

function reloadInitCheckout() 
{
	//reloads initcheckout with all params
	var inputField = document.createElement( 'input' );
	inputField.setAttribute('id', 'ignoreErrors');
	inputField.setAttribute('name', 'ignoreErrors');
	inputField.setAttribute('value', 'true');
	 
	document.getElementById('checkOutForm').appendChild( inputField );
	
	var ccnum = document.getElementById("ccNumber").value;
	if( ccnum && !validateCreditCardForm() )
	{
		document.getElementById("ccNumber").value = "";
		document.getElementById("ccNumberField1").value = "";
		document.getElementById("ccNumberField2").value = "";
		document.getElementById("ccNumberField3").value = "";
		document.getElementById("ccNumberField4").value = "";
		document.getElementById("ccCvvNumber").value = "";
		document.getElementById("ccFirstName").value = "";
		document.getElementById("ccLastName").value = "";
		document.getElementById("ccMonth").options.selectedIndex = 0;
		document.getElementById("ccYear").options.selectedIndex = 0;
		document.getElementById("ccType").options.selectedIndex = 0;
		document.getElementById('ccNumberLength').value = "0";
		document.getElementById('ccCvvNumberLength').value = "0";
	}
	
	
	document.getElementById("checkOutForm").submit();
	
//	var SearchObject = {
//		handleSuccess : function(o) {
//			this.processResult(o);
//		},
//		handleFailure : function(o) {
//			
//		},
//		processResult : function(o) {
//			var suffix = "";
//			if( o.responseText.match(/error.voucher.code/) )
//			{
//				suffix = '?voucherError=true';
//			}
//			
//			window.location.href = "initCheckOut.do" + suffix;
//		},
//		startRequest : function() {
//		var formObject = document.getElementById('checkOutForm');
//		YAHOO.util.Connect.setForm(formObject);
//
//		var obj = YAHOO.util.Connect.asyncRequest('POST', 'leanCheckout.do?isChanged=true', callback );
//		
//		}
//	};
//	var callback = {
//		success :SearchObject.handleSuccess,
//		failure :SearchObject.handleFailure,
//		scope :SearchObject
//	};
//	SearchObject.startRequest();
};

function checkVoucher()
{
	reloadInitCheckout();
}



