var oBookSteps = {};
(function(){

	var oSelf = oBookSteps;

	var	oTemplatesDefinition = {
		"checkbox":			'<div class="floatEnd formField_larger2">'
								+'<div class="formFieldMessageCheckBox" id="message_{{sName}}" style="display:none">'
									+'<div class="formFieldMessageClose" onclick="$(this).parent().hide(200)"></div>'
									+'<div class="formFieldMessageText" id="message_text_{{sName}}"></div>'
								+'</div>'
								+'<div class="formFieldData_checkbox">'
									+'<input class="formFieldCheckbox" name="{{sName}}" id="{{sName}}" type="checkbox" />'
								+'</div>'
								+'<div class="formFieldLabel_checkbox">'
									+'<label for="{{sName}}">{{bRequired:}} <span class="formFieldRequired">* </span>{{:bRequired}}{{sLabel}}</label>'
								+'</div>'
							+'</div>'
		,"select":			'<div class="floatEnd formField_larger">'
								+'<div class="formFieldMessage" id="message_{{sName}}" style="display:none">'
									+'<div class="formFieldMessageClose" onclick="$(this).parent().hide(200)"></div>'
									+'<div class="formFieldMessageText" id="message_text_{{sName}}"></div>'
								+'</div>'
								+'<div class="formFieldLabel_text">'
									+'<label for="{{sName}}">{{sLabel}}{{bRequired:}} <span class="formFieldRequired">*</span>{{:bRequired}}</label>'
								+'</div>'
								+'<div class="formFieldData_text">'
									+'<select class="formFieldSelect" name="{{sName}}" id="{{sName}}"></select>'
								+'</div>'
							+'</div>'
		,"text":			'<div class="floatEnd formField_larger">'
								+'<div class="formFieldMessage" id="message_{{sName}}" style="display:none">'
									+'<div class="formFieldMessageClose" onclick="$(this).parent().hide(200)"></div>'
									+'<div class="formFieldMessageText" id="message_text_{{sName}}"></div>'
								+'</div>'
								+'<div class="formFieldLabel_text">'
									+'<label for="{{sName}}">{{sLabel}}{{bRequired:}} <span class="formFieldRequired">*</span>{{:bRequired}}</label>'
								+'</div>'
								+'<div class="formFieldData_text"><input class="formFieldText" name="{{sName}}" id="{{sName}}" type="text" /></div>'
							+'</div>'
		,"textarea":		'<div class="floatEnd formField_larger3">'
								+'<div class="formFieldMessage" id="message_{{sName}}" style="display:none">'
									+'<div class="formFieldMessageClose" onclick="$(this).parent().hide(200)"></div>'
									+'<div class="formFieldMessageText" id="message_text_{{sName}}"></div>'
								+'</div>'
								+'<div class="formFieldLabel_text">'
									+'<label for="{{sName}}">{{sLabel}}{{bRequired:}} <span class="formFieldRequired">*</span>{{:bRequired}}</label>'
								+'</div>'
								+'<div class="formFieldData_text"><textarea class="formFieldTextarea" name="{{sName}}" id="{{sName}}"></textarea></div>'
							+'</div>'
		,"submit":			'<div class="div_overflow">'
								+'<div id="div_left">'
									+'<div class="formFieldSubmit" id="btn_back"><img src="/media/template/global_v3/buttons/back.png" alt="zurück" /></div>'
								+'</div>'
								+'<div id="div_right">'
									+'<div class="formFieldSubmit" id="btn_next"><img src="/media/template/global_v3/buttons/next.png" alt="weiter" /></div>'
								+'</div>'
							+'</div>'
	}
	
	var oSalutations = {
		'mr':		{
			'de':	'Herr'
		}
		,'mrs':		{
			'de':	'Frau'
		}
		,'child':	{
			'de':	'Kind'
		}
		,'baby':	{
			'de':	'Baby'
		}
	}
	
	var oCountries = {
		'germany':	{
			'de':	'Deutschland'
		}
		, 'switzerland':	{
			'de':	'Schweiz'
		}
		, 'austria':	{
			'de':	'Österreich'
		}
		,'belgium':	{
			'de':	'Belgien'
		}
		, 'netherlands':	{
			'de':	'Niederlande'
		}
		, 'luxembourg':	{
			'de':	'Luxemburg'
		}
	};
	
	var sLanguage = 'de';	

	var oBookStepsData	= null;
	var iActiveHotelId	= null;
	var iActiveRoomId	= null;
	var iActivePersonId	= null;
	var bBack			= false;

	/*
	var oBookStepsData = {
		aContact: {
			sSalutation:    'mr'
			,sTitle:        'Dr.'
			,sFirstname:    'Bastian'
			,sLastname:     'Haustein'
			,sStreet:       'Bismarckstr. 179'
			,sZip:          '52066'
			,sCity:         'Aachen'
			,sCountry:      'germany'
			,sMail:         'haustein@source-lounge.de'
			,sPhone:        '+49 179 51 33 009'
			,sMobile:		'+49 0152 25250830'
			,sCompany		'source-lounge'
			,bAGB:          true
			,bDatenschutz:  true
			,bNewsletter:   true
			,sPayment:      'bill'
		}

		,aPersons: [
			{
				sFirstname: ''
				,sLastname: ''
			}
			,{
				sFirstname: ''
				,sLastname: ''
				,sBirthday: '1977-07-12'
			}
			,{
				sFirstname: ''
				,sLastname: ''
			}
			,{
				sFirstname: 'Christian'
				,sLastname: 'Frenzel'
			}
			,{
				sFirstname: 'Georg2'
				,sLastname: 'Meyer2'
			}
			,{
				sFirstname: 'Christian2'
				,sLastname: 'Frenzel2'
			}
		]

		,aBooking: {
			fSum:       	 246.80
		}

		,aHotels: [
			{
				iHotelId:       			123
				,sHotelName:				'Ocean Bay Hotel '					//STUFF
				,sHotelLocation:			'Bakau / Cape Point'				//STUFF
				,sHotelRegion:				'Bakau / Cape Point / Fajara'		//STUFF
				,iMediaId:					8588								//STUFF
				,sDateFrom:		     		'2010-12-12'
				,sDateUntil:    			'2010-12-22'
				,sRoomType:     			'Standard Meerblick'
				,sBoard:					'ÜF'								//NEW
				,fPrice:					245.55								//NEW
				,aOccupancies: [
					{
						sRoomSize:			'DZ'								//STUFF
						,sPrice:          	123.45
						,aPersons: 		    [
							{
								iId:    	0
								,fSum:  	66.77
							}
							,{
								iId:    	1
								,fSum:  	66.77
							}
						]
					}
					,{
						sRoomSize:			'DZ'								//STUFF
						,sPrice:        	123.45
						,aPersons:      	[
							{
								iId:    	2
								,fSum:  	123.45
							}
						]
					}
					,{
						sRoomSize:			'DZ'								//STUFF
						,sPrice:        	123.45
						,aPersons:      	[
							{
								iId:    	3
								,fSum:  	123.45
							}
						]
					}
					,{
						sRoomSize:			'DZ'								//STUFF
						,sPrice:        	123.45
						,aPersons:      	[
							{
								iId:    	4
								,fSum:  	123.45
							}
							,{
								iId:    	5
								,fSum:  	123.45
							}
						]
					}
				]
			}

		]
	};*/



	$.extend(oBookSteps, {

		/**
		 * init
		 */
		init: function(fCallback) {

			$('.bs2_box_changePersonDetails').live('click', function() {
				oSelf.openLb();
			});

			oWaitingScreen.init();

			oSelf.loadData(fCallback);
		}




	   /**
		* store offers
		* @param aOffers array of this structure:
		*
		*	[
		*		{
		*
		*		iHotelId:       			123
		*		,sHotelName:				'Ocean Bay Hotel '					//STUFF
		*		,sHotelLocation:			'Bakau / Cape Point'				//STUFF
		*		,sHotelRegion:				'Bakau / Cape Point / Fajara'		//STUFF
		*		,iMediaId:					8588								//STUFF
		*		,sDateFrom:		     		'2010-12-12'
		*		,sDateUntil:    			'2010-12-22'
		*		,sRoomType:     			'Standard Meerblick'
		*		,sBoard:					'ÜF'								//NEW
		*		,fPrice:					245.55								//NEW
		*		,aOccupancies: [
		*			{
		*				sRoomSize:			'DZ'								//STUFF
		*				,sPrice:          	123.45
		*				,aPersons: 		    [
		*					{
		*						iId:    	0
		*						,fSum:  	66.77
		*					}
		*					,{
		*						iId:    	1
		*						,fSum:  	66.77
		*					}
		*				]
		*			}
		*		]
		*	}
		*	]
		*
		*/
		,storeOffers: function(aOffers, fCallBack) {
			if (typeof(oBookStepsData) != 'object' || oBookStepsData == null) {
				oBookStepsData = {
					aContact: {
						sSalutation:    ''
						,sTitle:        ''
						,sFirstname:    ''
						,sLastname:     ''
						,sStreet:       ''
						,sZip:          ''
						,sCity:         ''
						,sCountry:      ''
						,sMail:         ''
						,sPhone:        ''
						,sMobile:		''
						,sCompany:		''
						,bAGB:          false
						,bDatenschutz:  false
						,bNewsletter:   false
						,sPayment:      ''
					}

					,aPersons: []

					,aBooking: {
						fSum:       	0
						,sComment:		''
					}

					,aHotels: []
				};
			}

			// setting sum
			var fSum = 0;
			$.each(aOffers, function (iOffer, oOffer) {
				fSum += parseFloat(oOffer.fPrice);
			});
			oBookStepsData.aBooking.fSum = fSum;


			// append person data if neccessary
			var iPersonCount = 0;
			oBookStepsData.aPersons=[]
			$.each(aOffers, function (iOffer, oOffer) {
				$.each(oOffer.aOccupancies, function (i, oOccupancy) {
					$.each(oOccupancy.aPersons, function (i, oPerson) {
						iPersonCount ++;
						// 1st step: check if kid
						if(typeof oPerson.sBirthday == 'string') {
							oBookStepsData.aPersons.push({
								sSalutation:	''
								,sFirstname:	''
								,sLastname: 	''
								,sBirthday: 	oPerson.sBirthday
							});
						}
						// 2nd step: add adult
						else {
							oBookStepsData.aPersons.push({
								sSalutation:	''
								,sTitle:		''
								,sFirstname: 	''
								,sLastname: 	''
							});
						}
					});
				});
			});
			oBookStepsData.aHotels = aOffers;
			oSelf.saveData(fCallBack);
		}




		/**
		 * start
		 */
		,start: function(aOffers) {
			oSelf.storeOffers(aOffers, function(){
				location.href = "/german/ibe_v2/1_personenzuordnung.html";
			});
		}




		/**
		 * load Data
		 */
		,loadData: function(fCallback) {
			$.post(
                '/ajax/cAjaxSessionStore/ajaxGetSessionData'
                , {
                        "sArea":		'booking'
                }
                , function(o) {
                		oBookStepsData = o.mData
                		if(typeof fCallback == 'function') {
							fCallback();
						}
                }
                , 'json'
            );
		}


		/**
		 * save Data
		 */
		,saveData: function(fFunction) {

			$.post(
                '/ajax/cAjaxSessionStore/ajaxSaveSessionData'
                , convert2PostData({
                        "sArea":		'booking'
                        , "mData":		oBookStepsData
                })
                , function(o) {
                        fFunction();
                }
                , 'json'
            );
		}


		/**
		 * submit Data to the database
		 */
		,submitData: function(fFunction) {

			$.post(
    			'/ajax/cControlIbeBooking/ajaxSaveIbeBooking'
				,convert2PostData(oBookStepsData)
				,function(o) {
					fFunction();
				}
				//,'json'
			);
		}


		
		
		/**
		 * render children template
		 * @param	iChildren		integer			Amount of children
		 * @return	sHtml			string			well formated htmlcode
		 */
		,renderChildrenTemplate: function(iChildren) {
			
			var sHtml = '';
			
			switch (iChildren) {
			
				case 0:
				break;
				
				case 1:
					sHtml += '+ ' + iChildren + ' Kind';
				break;
				
				default:
					sHtml += '+ ' + iChildren + ' Kinder';
				break;
			
			}
			
			return sHtml;
		}
		
		
		
		
		/**
		 * render step 1
		 */
		,renderStep1: function() {
			$('#gonext').unbind().live('click', function() {
				var bValid = true;
				aSelectedPersons = [];
				$('.bs1_box_content_rooms select').each(function(index, element) {
					if ($(this).val() == 'null') {
						bValid = false;
						$(this).prev().css('border', '2px solid red');
					}
					else {
						$(this).prev().css('border', 'none');
					}
				});
				if (bValid) {
					oWaitingScreen.open();
					$.each(oBookStepsData.aHotels, function(iHotel, oHotel) {
						$.each(oHotel.aOccupancies, function(iRoom, oRoom) {
							$.each(oRoom.aPersons, function(iPerson, oPerson) {
								oPerson.iId = parseInt($('#person_selector_'+iPerson+'_'+iRoom+'_'+iHotel).val().split('_')[1]);
							});
						});
					});
					/***************************
					* SAVE DATA  (STEP1)       *
				    ***************************/
					oSelf.saveData(function() {
						location.href = "/german/ibe_v2/2_Weitere_angaben.html";
					});
				}
				else {
					alert('Bitte füllen Sie alle Pflichtfelder aus, bevor Sie fortfahren!');
				}
				return false;
			});

			var aTemplateData = {ROW:[]};
			$.each(oBookStepsData.aHotels, function(iHotel, oHotel) {
				var aOccupancies = [];
				$.each(oHotel.aOccupancies, function(index, oOccupancy) {
					var iAdults = 0;
					var iChildren = 0;
					$.each(oOccupancy.aPersons, function(index, oPerson) {
						(typeof(oPerson.sBirthday) == 'undefined' ? iAdults++ : iChildren++);
					});
					aOccupancies.push({
						'OCCUPANCY_TYPE':		oOccupancy.sRoomSize
						,'OCCUPANCY_ADULTS':	iAdults + ' Erw.'
						,'OCCUPANCY_CHILDREN':	oSelf.renderChildrenTemplate(iChildren)
					});
				});

				aRooms = [];
				$.each(oHotel.aOccupancies, function(index, oRoom) {
					aPersons = [];
					$.each(oRoom.aPersons, function(index, oPerson) {

						sOptions = '<option value="null">bitte wählen</option>';
						if (typeof(oPerson.sBirthday) == 'undefined') {
							$.each(oBookStepsData.aPersons, function(i, p) {
								if (typeof(p.sBirthday) == 'undefined' ) {
									if (p.sFirstname != '' && p.sLastname != '') {
										sOptions += '<option value="person_' + i + '">' + (p.sTitle.length > 0 ? p.sTitle + ' ' : '') + p.sFirstname + ' ' + p.sLastname.toUpperCase() + '</option>';
									}
									else {
										sOptions += '<option value="none_' + i + '">Erwachsener</option>';
									}
								}
							});
						}
						else {
							$.each(oBookStepsData.aPersons, function(i, p) {
								if (p.sBirthday == oPerson.sBirthday ) {
									if (p.sFirstname != '' && p.sLastname != '') {
										sOptions += '<option value="person_' + i + '">' + p.sFirstname + ' ' + p.sLastname.toUpperCase() + '</option>';
									}
									else {
										sOptions += '<option value="none_' + i + '">Kind</option>';
									}
								}
							});
						}

						aPersons.push({
							'PID': index
							,'LABEL': (typeof(oPerson.sBirthday) == 'undefined' ?
								'Erwachsener:'
								: 'Kind *' + oPerson.sBirthday + ':'
							)
							,'OPTIONS': sOptions
						});
					});

					aRooms.push({
						'ID':			(index + 1)
						,'RID':			index
						,'HID':			iHotel
						,'PERSON_ROW':	aPersons
						,'FLOATEND':	((index+1) % 3 == 0? '<div class="floatEnd"></div>' : '')
					});
				});

				aTemplateData.ROW.push({
					'HOTEL_ID':			oHotel.iHotelId
					,'HOTEL_NAME':		oHotel.sHotelName
					,'HOTEL_LOCATION':	oHotel.sHotelLocation
					,'HOTEL_REGION':	oHotel.sHotelRegion
					,'MEDIA_ID':		oHotel.iMediaId
					,'ARRIVAL':			oHotel.sDateFrom
					,'DEPARTURE':		oHotel.sDateUntil
					,'ROOM':			oHotel.sRoomType
					,'BOARD':			oHotel.sBoard
					,'OCCUPANCY_ROW':	aOccupancies
					,'PRICE':			getInEuros(oHotel.fPrice) + ' €'
					,'ROOM_ROW':		aRooms
				});
			});
			$.post(
				'/ajax/cWebPageAdmin/ajaxGetBlock'
				,{
				    "iBlockId": 101
				}
				, function(o) {

					var sTemplate = o.mData;
					$.lazyLoad(['cTemplate'], function(){
						$('#ibe_book_step_1').empty();
						$('#ibe_book_step_1').html(cTemplate.parse(sTemplate, aTemplateData));
						$('.bs2_box select').change(function() {
							if ($(this).val() != 'null') {
								$(this).prev().css('border', 'none');
							}
						});
						$('.person_selector').bind('click', function(e) {
							e.preventDefault();
							e.target.blur();
							var aIds = $(this).attr('id').split('_');
							iActiveHotelId	= parseInt(aIds[4]);
							iActiveRoomId	= parseInt(aIds[3]);
							iActivePersonId	= parseInt(aIds[2]);
							if ($(this).val().split('_')[0] == 'none') {
								oSelf.openLb();
							}
							else {
								oSelf.openLb($(this).val());
							}
						});
						$('.bs2_box select').each(function(index, value) {
							var iId = parseInt($(this).attr('id').split('_')[2]);
							var iRoomId = parseInt($(this).attr('id').split('_')[3]);
							var aIds 		= $(this).attr('id').split('_');
							var iHotelId	= parseInt(aIds[4]);
							var iRoomId		= parseInt(aIds[3]);
							var iPersonId	= parseInt(aIds[2]);
							var iActiveId 	= oBookStepsData.aHotels[iHotelId].aOccupancies[iRoomId].aPersons[iPersonId].iId;

							if (iActiveId >= 0 && oBookStepsData.aPersons[iActiveId].sFirstname != '' && oBookStepsData.aPersons[iActiveId].sLastname != '') {
								$(this).val('person_' + iActiveId);
							}
							else {
								$(this).val('none_' +iActiveId);
							}
						});
						$('#ibe_book_step_1').show();
					});
				}
				,'json'
    		);
		}


		,openLb: function() {
			// set btn
			$('#stp1_overlay').css({
				'top':		'0px'
				,'left':	'0px'
				,'height':	$(document).height() + 'px'
				,'width':	$(document).width() + 'px'
			}).click(function() {
				oSelf.closeLb();
			});

			$('#stp1_lightbox_close').click(function() {
				oSelf.closeLb();
			});

			$('#stp1_lightbox_cancel').click(function() {
				oSelf.closeLb();
			});

			$('#stp1_lightbox_submit').click(function() {
				var iPerson = $('#lightbox_person_selector').val();
				if(iPerson == 'null') {
					return;
				}
				oBookStepsData.aHotels[iActiveHotelId].aOccupancies[iActiveRoomId].aPersons[iActivePersonId].iId = iPerson;
				oBookStepsData.aPersons[iPerson].sSalutation = $('#lb_selector_salutation_' + iPerson).val();
				oBookStepsData.aPersons[iPerson].sTitle = $('#lb_selector_title_' + iPerson).val();
				oBookStepsData.aPersons[iPerson].sFirstname = $('#lb_selector_firstname_' + iPerson).val();
				oBookStepsData.aPersons[iPerson].sLastname = $('#lb_selector_lastname_' + iPerson).val();
				// @TODO: birthday muss vom angebot kommen!
				// @IMPORTANT:
				//if (typeof(oBookStepsData.aPersons[iPerson].sBirthday) != 'undefined') {
					//oBookStepsData.aPersons[iPerson].sBirthday = $('#lb_selector_geb_' + iPerson).val();
				//}
				//$.each(oBookStepsData.aPersons, function(index, oPerson) {
				//	oPerson = oBookStepsData.aPersons[index];
				//});
				oSelf.closeLb();
				oSelf.renderStep1();
			});

			$('#stp1_lightbox').css({
				'top':		($(document).scrollTop() + 50) + 'px'
				,'left':	(($(window).width() - $('#stp1_lightbox').width()) / 2) + 'px'
			});
			oSelf.renderLb();

			$('#stp1_overlay').show();
			$('#stp1_lightbox').show();
		}


		,renderLb: function() {
			// render content
			$('#stp1_lightbox_content_selector').html('');
			sHtml = '<span>Person:</span>';
			sHtml += '<select id="lightbox_person_selector" name="lightbox_person_selector">';
			sHtml += '<option value="null">bitte wählen</option>';
			var iAdultCnt = 0;
			$.each(oBookStepsData.aPersons, function(index, oPerson) {
				if(oBookStepsData.aHotels[iActiveHotelId].aOccupancies[iActiveRoomId].aPersons[iActivePersonId].sBirthday != oPerson.sBirthday) {
					return;
				}
				if (typeof(oPerson.sBirthday) == 'undefined') {
					iAdultCnt ++;
					if (oPerson.sFirstname != '') {
						sHtml += '<option value="' + index + '">' + (oPerson.sTitle.length > 0 ? oPerson.sTitle + ' ' : '') + oPerson.sFirstname + ' ' + oPerson.sLastname.toUpperCase() + '</option>'
					}
					else {
						sHtml += '<option value="' + index + '">Name '+ (iAdultCnt) +'. Erwachsener</option>'
					}
				}
				else {
					if (oPerson.sFirstname != '') {
						sHtml += '<option value="' + index + '">' + oPerson.sFirstname + ' ' + oPerson.sLastname.toUpperCase() + ' (' + oPerson.sBirthday + ')</option>'
					}
					else {
						sHtml += '<option value="' + index + '">Kind ('+oPerson.sBirthday+')</option>'
					}
				}
			});
			sHtml += '</select>';
			$('#stp1_lightbox_content_selector').html(sHtml);
			$('#lightbox_person_selector').focus();
			$('#stp1_lightbox_content_form').html('');
			$('#lightbox_person_selector').change(function() {
				if ($(this).val() != 'null') {
					// build formular
					$('#stp1_lightbox_content_form').html();
					var iPerson = $(this).val();
					var sSalutationMr = (oBookStepsData.aPersons[iPerson].sSalutation == 'mr' ? ' selected="selected"' : '');
					var sSalutationMrs = (oBookStepsData.aPersons[iPerson].sSalutation == 'mrs' ? ' selected="selected"' : '');
					var sTitleDr = (oBookStepsData.aPersons[iPerson].sTitle == 'Dr.' ? ' selected="selected"' : '');
					var sTitleProf = (oBookStepsData.aPersons[iPerson].sTitle == 'Prof.' ? ' selected="selected"' : '');
					var sTitleProfDr = (oBookStepsData.aPersons[iPerson].sTitle == 'Prof. Dr.' ? ' selected="selected"' : '');
					var sTitleDiplIng = (oBookStepsData.aPersons[iPerson].sTitle == 'Dipl. Ing.' ? ' selected="selected"' : '');
					sFormHtml = ''
						+(
							typeof(oBookStepsData.aPersons[iPerson].sBirthday) == 'undefined' ?
							'<div>'
								+'<span class="lcf_left">Anrede:</span>'
								+'<span class="lcf_right">'
								+'<select id="lb_selector_salutation_' + iPerson + '" width="50">'
								+'<option value="">bitte wählen</option>'
								+'<option value="mr"' + sSalutationMr + '>Herr</option>'
								+'<option value="mrs"' + sSalutationMrs + '>Frau</option>'
								+'</select>'
								+'<div class="floatEnd"></div>'
							+'</div>' :
							'<input id="lb_selector_salutation_' + iPerson + '" type="hidden" value ="child" />'
						)
						+(
							typeof(oBookStepsData.aPersons[iPerson].sBirthday) == 'undefined' ?
							'<div>'
								+'<span class="lcf_left">Titel:</span>'
								+'<span class="lcf_right">'
								+'<select id="lb_selector_title_' + iPerson + '" width="50">'
								+'<option value=""></option>'
								+'<option value="Dr."' + sTitleDr + '>Dr.</option>'
								+'<option value="Prof."' + sTitleProf + '>Prof.</option>'
								+'<option value="Prof. Dr."' + sTitleProfDr + '>Prof. Dr.</option>'
								+'<option value="Dipl. Ing."' + sTitleDiplIng + '>Dipl. Ing.</option>'
								+'</select>'
								+'<div class="floatEnd"></div>'
							+'</div>' :
							'<input id="lb_selector_title_' + iPerson + '" type="hidden" value ="" />'
						)
						+'<div>'
							+'<span class="lcf_left">Vorname:</span>'
							+'<span class="lcf_right"><input id="lb_selector_firstname_' + iPerson + '" type="text" width="50" value="' + oBookStepsData.aPersons[iPerson].sFirstname + '" /></span>'
							+'<div class="floatEnd"></div>'
						+'</div>'
						+'<div>'
							+'<span class="lcf_left">Nachname:</span>'
							+'<span class="lcf_right"><input id="lb_selector_lastname_' + iPerson + '" type="text" width="50" value="' + oBookStepsData.aPersons[iPerson].sLastname + '" /></span>'
							+'<div class="floatEnd"></div>'
						+'</div>'
						/*if (typeof(oBookStepsData.aPersons[iPerson].sBirthday) != 'undefined') {
							sFormHtml +='<div>'
								+'<span class="">Geboren am:</span>'
								+'<span class="lcf_right"><input id="lb_selector_geb_' + iPerson + '" type="text" width="50" value="' + oBookStepsData.aPersons[iPerson].sBirthday + '" /></span>'
								+'<div class="floatEnd"></div>'
							+'</div>'
						}*/
						sFormHtml += '<div class="floatEnd"></div>'
						//+'<button type="button" id="lb_btn_save">speichern</button>'
					$('#stp1_lightbox_content_form').html(sFormHtml);

					$('#lb_btn_save').click(function() {
						oBookStepsData.aPersons[iPerson].sSalutation = $('#lb_selector_salutation_' + iPerson).val();
						if (typeof(oBookStepsData.aPersons[iPerson].sBirthday) == 'undefined') {
							oBookStepsData.aPersons[iPerson].sTitle = $('#lb_selector_title_' + iPerson).val();
						}
						oBookStepsData.aPersons[iPerson].sFirstname = $('#lb_selector_firstname_' + iPerson).val();
						oBookStepsData.aPersons[iPerson].sLastname = $('#lb_selector_lastname_' + iPerson).val();
						if (typeof(oBookStepsData.aPersons[iPerson].sBirthday) != 'undefined') {
							oBookStepsData.aPersons[iPerson].sBirthday = $('#lb_selector_geb_' + iPerson).val();
						}
						//oSelf.renderLb();
					});

				}
			});
			var iActiveId = oBookStepsData.aHotels[iActiveHotelId].aOccupancies[iActiveRoomId].aPersons[iActivePersonId].iId;
			if(!isNaN(iActiveId) && iActiveId >= 0) {
				$('#lightbox_person_selector').val(iActiveId).change();
			}
		}


		,closeLb: function() {

			$('#stp1_overlay').hide();
			$('#stp1_lightbox').hide();
		}


		/**
		 * render step 2
		 */
		,renderStep2: function() {
			$.lazyLoad(['cForm'],function() {
				$('#form_holder').cForm("setup", {
				    sFormName:        	"badjie_ibe_bookingsteps_step2"
				    ,'bRenderReadonly': false
				    ,'oTemplates': 		oTemplatesDefinition
				    ,'onBeforeSubmit':	function() {
				    	var iFormId = $('#form_holder').find('form').attr('id').split('_')[1];
				    	var oData = $('#form_holder').data('oFields');
				    	oBookStepsData.aContact.sSalutation 	= oData[1].sData; //('#field_' + iFormId + '_0_1').val();
				    	oBookStepsData.aContact.sTitle			= oData[2].sData; //$('#field_' + iFormId + '_0_2').val();
				    	oBookStepsData.aContact.sFirstname		= oData[3].sData; //$('#field_' + iFormId + '_0_3').val();
				    	oBookStepsData.aContact.sLastname		= oData[4].sData; //$('#field_' + iFormId + '_0_4').val();
				    	oBookStepsData.aContact.sStreet			= oData[5].sData; //$('#field_' + iFormId + '_0_5').val();
				    	oBookStepsData.aContact.sZip			= oData[6].sData; //$('#field_' + iFormId + '_0_6').val();
				    	oBookStepsData.aContact.sCity			= oData[7].sData; //$('#field_' + iFormId + '_0_7').val();
				    	oBookStepsData.aContact.sCountry		= oData[8].sData; //$('#field_' + iFormId + '_0_8').val();
				    	oBookStepsData.aContact.sMail			= oData[9].sData; //$('#field_' + iFormId + '_0_9').val();
				    	oBookStepsData.aContact.sPhone			= oData[10].sData; //$('#field_' + iFormId + '_0_10').val();
				    	oBookStepsData.aContact.sMobile			= oData[16].sData; //$('#field_' + iFormId + '_0_16').val();
				    	oBookStepsData.aContact.sCompany		= oData[17].sData; //$('#field_' + iFormId + '_0_17').val();
				    	oBookStepsData.aContact.sPayment		= oData[11].sData; //($('#field_' + iFormId + '_0_11').attr('checked') == 'checked'? true : false);
				    	oBookStepsData.aContact.bNewsletter		= oData[12].sData; //($('#field_' + iFormId + '_0_14').attr('checked') == 'checked'? true : false);
				    	oBookStepsData.aContact.bAGB			= oData[13].sData; //($('#field_' + iFormId + '_0_12').attr('checked') == 'checked'? true : false);
				    	oBookStepsData.aContact.bDatenschutz	= oData[14].sData; //($('#field_' + iFormId + '_0_13').attr('checked') == 'checked'? true : false);
				    	oBookStepsData.aBooking.sComment		= oData[15].sData;
				    	/***************************
				    	* SAVE DATA (STEP 2)       *
				    	***************************/
				    	oSelf.saveData( function() {
				    		window.location.href = (
								oSelf.bBack ?
								"/german/ibe_v2/1_personenzuordnung.html" :
								"/german/ibe_v2/3_Zusammenfassung.html"
							);
				    	});
				    	return false;
				    }
				    ,'onAfterSubmit':	function() {
				    }
				}

				,function() {
					var iFormId = $('#form_holder').find('form').attr('id').split('_')[1];
					if (oBookStepsData.aContact.sSalutation != '') {
						$('#field_' + iFormId + '_0_1').val(oBookStepsData.aContact.sSalutation).change();
					}
					if (oBookStepsData.aContact.sTitle != '') {
						$('#field_' + iFormId + '_0_2').val(oBookStepsData.aContact.sTitle).change();
					}
					if (oBookStepsData.aContact.sFirstname != '') {
						$('#field_' + iFormId + '_0_3').val(oBookStepsData.aContact.sFirstname).change();
					}
					if (oBookStepsData.aContact.sLastname != '') {
						$('#field_' + iFormId + '_0_4').val(oBookStepsData.aContact.sLastname).change();
					}
					if (oBookStepsData.aContact.sStreet != '') {
						$('#field_' + iFormId + '_0_5').val(oBookStepsData.aContact.sStreet).change();
					}
					if (oBookStepsData.aContact.sZip != '') {
						$('#field_' + iFormId + '_0_6').val(oBookStepsData.aContact.sZip).change();
					}
					if (oBookStepsData.aContact.sCity != '') {
						$('#field_' + iFormId + '_0_7').val(oBookStepsData.aContact.sCity).change();
					}
//					if (oBookStepsData.aContact.sCountry != '') {
						$('#field_' + iFormId + '_0_8').val(oBookStepsData.aContact.sCountry).change();
//					}
					if (oBookStepsData.aContact.sMail != '') {
						$('#field_' + iFormId + '_0_9').val(oBookStepsData.aContact.sMail).change();
					}
					if (oBookStepsData.aContact.sPhone != '') {
						$('#field_' + iFormId + '_0_10').val(oBookStepsData.aContact.sPhone).change();
					}
					if (oBookStepsData.aContact.sMobile != '') {
						$('#field_' + iFormId + '_0_16').val(oBookStepsData.aContact.sMobile).change();
					}
					if (oBookStepsData.aContact.sCompany != '') {
						$('#field_' + iFormId + '_0_17').val(oBookStepsData.aContact.sCompany).change();
					}
					if (oBookStepsData.aContact.sPayment == 1) {
						$('#field_' + iFormId + '_0_11').attr('checked', 'checked').change();
					}
					if (oBookStepsData.aContact.bNewsletter == 1) {
						$('#field_' + iFormId + '_0_12').attr('checked', 'checked').change();
					}
					if (oBookStepsData.aContact.bAGB == 1) {
						$('#field_' + iFormId + '_0_13').attr('checked', 'checked').change();
					}
					if (oBookStepsData.aContact.bDatenschutz == 1) {
						$('#field_' + iFormId + '_0_14').attr('checked', 'checked').change();
					}
					if (oBookStepsData.aBooking.sComment != '') {
						$('#field_' + iFormId + '_0_15').val(oBookStepsData.aBooking.sComment).change();
					}
					$('#btn_back').click(function() {
						oSelf.bBack = true;
						$('#form_holder').cForm("quickSave");
					});
					$('#btn_next').click(function() {
						$('#form_holder').cForm('save', {}, function() {
							window.location.href = "/german/ibe_v2/3_Zusammenfassung.html";
						});
					});
				});
			});
		}


		/**
		 * render step 3
		 */
		,renderStep3: function() {
			$('#gonext').live('click', function() {
				/*****************************
				* SAVE DATA  (STEP3)         *
				* is there any data to save? *
				*****************************/
				oWaitingScreen.open();
				oSelf.submitData(function() {
					window.location.href = "/german/ibe_v2/4_Bestaetigung.html";
				});
			});
			$('#goback').live('click', function() {
				window.location.href = "/german/ibe_v2/2_Weitere_angaben.html";
			});

			// personal data
			sPersonalDataHtml = ''
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + (oBookStepsData.aContact.sSalutation == 'mr'? 'Herr' : 'Frau') + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sStreet) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sTitle) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sZip) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sFirstname) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sCity) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oSelf.encode(oBookStepsData.aContact.sLastname) + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span></span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + oCountries[oBookStepsData.aContact.sCountry][sLanguage] + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="floatEnd"></div>'
			$('#form_personal_data').html(sPersonalDataHtml);

			// payment
			var sPayment = (oBookStepsData.aContact.sPayment == '1'? 'per Rechnung' : 'Sonstige');
			sPaymentHtml = ''
				+'<div class="ibe_box_content_block">'
					+'<div class="ibe_box_content_block_label"><span>Zahlungsart:</span></div>'
					+'<div class="ibe_box_content_block_value"><span>' + sPayment + '</span></div>'
					+'<div class="floatEnd"></div>'
				+'</div>'
				+'<div class="floatEnd"></div>'
			$('#form_payment_data').html(sPaymentHtml);

			// travel
			var aTemplateData = {ROW:[]};
			$.each(oBookStepsData.aHotels, function(index, oHotel) {

				var aOccupancies = [];
				$.each(oHotel.aOccupancies, function(index, oOccupancy) {
					var iAdults = 0;
					var iChildren = 0;
					$.each(oOccupancy.aPersons, function(index, oPerson) {
						(typeof(oPerson.sBirthday) == 'undefined'? iAdults++ : iChildren++);
					});
					aOccupancies.push({
						'OCCUPANCY_TYPE':		oOccupancy.sRoomSize
						,'OCCUPANCY_ADULTS':	iAdults + ' Erw.'
						,'OCCUPANCY_CHILDREN':	oSelf.renderChildrenTemplate(iChildren)
					});
				});

				aRooms = [];
				$.each(oHotel.aOccupancies, function(index, oRoom) {

					sPersons = '';

					$.each(oRoom.aPersons, function(index, oPerson) {
						if(oPerson.iId<0 || isNaN(oPerson.iId)) {
							alert('Nicht alle Personen wurden zugeordnet!');
							return;
						}
						sPersons += (
							$.trim(oBookStepsData.aPersons[oPerson.iId].sLastname).length > 0 
								|| $.trim(oBookStepsData.aPersons[oPerson.iId].sFirstname).length > 0 ?
							(
								typeof(oBookStepsData.aPersons[oPerson.iId].sBirthday) == 'undefined'
									&& oBookStepsData.aPersons[oPerson.iId].sTitle.length > 0 ? 
								oBookStepsData.aPersons[oPerson.iId].sTitle + ' ' : 
								''
							)
								+ oBookStepsData.aPersons[oPerson.iId].sLastname.toUpperCase()
								+ (
									$.trim(oBookStepsData.aPersons[oPerson.iId].sFirstname).length > 0 ?
									', ' + oBookStepsData.aPersons[oPerson.iId].sFirstname :
									''
								)
								+ (
									$.trim(oBookStepsData.aPersons[oPerson.iId].sSalutation).length > 0 ?
									', ' + oSalutations[oBookStepsData.aPersons[oPerson.iId].sSalutation][sLanguage] :
									(
										typeof(oBookStepsData.aPersons[oPerson.iId].sBirthday) == 'undefined'?
										'Erwachsener' :
										'Kind'
									)
								)
								+ (
									typeof(oBookStepsData.aPersons[oPerson.iId].sBirthday) == 'undefined'?
									'' :
									' (' + oBookStepsData.aPersons[oPerson.iId].sBirthday + ')'
								) :
							(
								typeof(oBookStepsData.aPersons[oPerson.iId].sBirthday) == 'undefined' ?
								'Erwachsener' :
								'Kind (' + oBookStepsData.aPersons[oPerson.iId].sBirthday + ')'
							)
						) + ' / ';
					});

					aRooms.push({
						'ROOMTYPE': 'Zimmer ' + (index + 1) + ' (' + oRoom.sRoomSize + ') '
						,'PERSONS':	sPersons.substring(0, (sPersons.length - 2))
					});
				});

				aTemplateData.ROW.push({
					'HOTEL_ID':			oHotel.iHotelId
					,'HOTEL_NAME':		oHotel.sHotelName
					,'HOTEL_LOCATION':	oHotel.sHotelLocation
					,'HOTEL_REGION':	oHotel.sHotelRegion
					,'MEDIA_ID':		oHotel.iMediaId
					,'ARRIVAL':			oHotel.sDateFrom
					,'DEPARTURE':		oHotel.sDateUntil
					,'ROOM':			oHotel.sRoomType
					,'BOARD':			oHotel.sBoard
					,'OCCUPANCY_ROW':	aOccupancies
					,'PRICE':			getInEuros(oHotel.fPrice) + ' €'
					,'ROOM_ROW':		aRooms
				});
			});

			// comment
			var sCommentDataHtml = ''
				+'<div id="form_travel_data">'
					+'<div class="bs2_box_content_header"></div>'
					+'<div class="bs2_box_content_content">'
						+'<p>'+oSelf.encode(oBookStepsData.aBooking.sComment)+'</p>'
					+'</div>'
//					+'<div class="bs2_box_content_footer"></div>'
				+'</div>';
			$('#form_comment').html(sCommentDataHtml);

			$.post(
				'/ajax/cWebPageAdmin/ajaxGetBlock'
				,{
				    "iBlockId": 102
				}
				, function(o) {

					var sTemplate = o.mData;
					$.lazyLoad(['cTemplate'], function(){
						$('#form_travel_data').html(cTemplate.parse(sTemplate, aTemplateData));
					});
				}
				,'json'
    		);


		}

		// encodes html special chars
		,encode: function(sText) {
			var aDecode = [
				{
					'rSearch':		/</g
					, 'sReplace':	'&lt;'
				}
				, {
					'rSearch':		/>/g
					, 'sReplace':	'&gt;'
				}
				, {
					'rSearch':		/&/g
					, 'sReplace':	'&amp;'
				}
			];
			for (var iIndex in aDecode) {
				sText = sText.replace(aDecode[iIndex].rSearch, aDecode[iIndex].sReplace);
			}
			return sText;
		}


		/**
		 * render step 4
		 */
		,renderStep4: function() {

			$('#gonext').live('click', function() {
				//window.location.href = "/german/ibe_v2/4_Bestaetigung.html";
			});
		}

	});

})(oBookSteps);

