/*
 * Quickbooker
 * TourismusSuite IBE
 * 
 */

var tag_anreise_dp;
var tag_abreise_dp;

function initDate (vonDatumObject, bisDatumObject) {
	
	var qb_main = "#quickbooker #quickbooker_main";
	
	// Konfiguration des Datepickers
	var today = new Date();
	var day = today.getDate();
	var month = today.getMonth();
	var year = today.getFullYear();
	
	var isoDate = (function() {
		if(currentLang == "en")
			return "en-GB";
		else
			return currentLang;
	})();
		
	var dp_options_anreise = {
			minDate: today,
			maxDate: new Date(year + 1, month, day),
			altField: '#date_arrival',
			altFormat: 'yy-mm-dd',
			dateFormat: 'D, '+jQuery.datepicker.regional[isoDate].dateFormat,
			beforeShow: function() {$('#ui-datepicker-div').css("z-index",10000); },
			showAnim: 'fadeIn'
	};
	
	var dp_options_abreise = {
			minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1),
			maxDate: new Date(year + 1, month, day),
			altField: '#date_departure',
			altFormat: 'yy-mm-dd',
			dateFormat: 'D, '+jQuery.datepicker.regional[isoDate].dateFormat,
			beforeShow: function() {$('#ui-datepicker-div').css("z-index",10000); },
			showAnim: 'fadeIn'
	};

	// Datepicker initialisieren
	tag_anreise_dp = jQuery(qb_main + " #tag_anreise, #ibe #tag_anreise").datepicker(dp_options_anreise);
	if (vonDatumObject != null) {
		tag_anreise_dp.datepicker("setDate", vonDatumObject);
	} else {
		tag_anreise_dp.datepicker("setDate", today);
	}
	
	tag_abreise_dp = jQuery(qb_main + " #tag_abreise, #ibe #tag_abreise").datepicker(dp_options_abreise);
	if (bisDatumObject != null) {
		tag_abreise_dp.datepicker("setDate", bisDatumObject);
	} else {
		tag_abreise_dp.datepicker("setDate", +1);
	}

	// Bei Auswahl von Anreise minDate f¸r Abreise-Datepicker setzen
	jQuery(qb_main + " #tag_anreise, #ibe #tag_anreise").live("change", function() {
		var tag_anreise_date = tag_anreise_dp.datepicker('getDate');
		var neu_tag_abreise_date = new Date(tag_anreise_date.getFullYear(), tag_anreise_date.getMonth(), tag_anreise_date.getDate() + 1);
		jQuery(qb_main + " #tag_abreise, #ibe #tag_abreise").datepicker("option", "minDate", neu_tag_abreise_date);
	});

	// Bei Auswahl von Abreise maxDate f¸r Anreise-Datepicker setzen
	jQuery(qb_main + " #tag_abreise, #ibe #tag_abreise").live("change", function() {
		var tag_abreise_date = tag_abreise_dp.datepicker('getDate');
		jQuery(qb_main + " #tag_anreise, #ibe #tag_anreise").datepicker("option", "maxDate", tag_abreise_date);
	});
}



// Unbenutzte Elemente aus Formular entfernen 
function prepare_form(form_id, num_rows) {
	for(var i = 1; i <= 3; i++) {
		if(i > num_rows) {
			// Unbenutzte Zeilen und Kinder-Layer loeschen
			jQuery("#quickbooker #quickbooker_main #mb_row" + i).remove();
			jQuery("#quickbooker #quickbooker_children" + i).remove();
		} else {
			var num_children = parseInt(jQuery("#quickbooker #quickbooker_main #mb_row" + i + " #zimmerAnzKind" + i).val(),10);
			for(var j = 1; j <= 3; j++) {
				if(j > num_children) {
					// Unbenutzte Kinder-Alter-Pulldowns loeschen
					jQuery("#quickbooker #quickbooker_children" + i + " #children_table" + i + " #tralter_" + i + "_" + j).remove();
				}
			}
		}
	}
}


//
// MULTI-BOOKER
// angezeigte Zeilen
//
var mb_rows_display = 1;

// Maximale Anzahl Personen moeglich pro Zimmer
var max_personen = 4;


jQuery(document).ready(function() {
	
	jQuery(".button.ibe_button.quickbook#qb_senden_button").click(function() {
		if(!jQuery(this).hasClass("inactive")) {
			prepare_form('SuchFormular', mb_rows_display);
			return reloadBlock('quickbookererror');
		}
	});
	

	// Selektoren f¸r Layer
	var qb_main = "#quickbooker #quickbooker_main";
	var qb_children = "#quickbooker #quickbooker_children";
	var qb_special = "#quickbooker #quickbooker_special";
	var qb_error = "#quickbooker #quickbookererror";
	var qb_loading = "#quickbooker #quickbooker_loading";

	var adjust_login = 20;
	var adjust_kundenkarte_login = 77;
	var adjust_children = 25;
	
	jQuery(qb_main + " #hotelSchluessel").live("change", function() {
    if(jQuery(this).val() === "fakehotel") {
      window.location.href = jQuery("#qb_fakehotel_1").attr("fakehotel");
    }	else if(jQuery(this).val() !== "0" && jQuery(this).val() !== "fakehotel") {
			jQuery(qb_main + " #qb_senden_button").removeClass("inactive");
    } else {
			jQuery(qb_main + " #qb_senden_button").removeClass("working");
			jQuery(qb_main + " #qb_senden_button").addClass("inactive");
		}
	});
	
	if(jQuery(qb_main + " #hotelSchluessel").val() != "0") {
		jQuery(qb_main + " #qb_senden_button").removeClass("inactive");
	} 

	// PLUS
	jQuery(qb_main + " #mb_plus").live("click", function() {
		if(mb_rows_display < 3) {
			mb_rows_display += 1;
			var qb_height = parseInt(jQuery("#quickbooker").css("height"));
			jQuery("#quickbooker").css("height", qb_height + adjust_children + "px");
		}

		if(mb_rows_display < 3) {
			jQuery(qb_main + " #mb_plus").removeClass("mb_plus_inaktiv");
			jQuery(qb_main + " #mb_plus").addClass("mb_plus_aktiv");
		} else {
			jQuery(qb_main + " #mb_plus").removeClass("mb_plus_aktiv");
			jQuery(qb_main + " #mb_plus").addClass("mb_plus_inaktiv");
		}

		if(mb_rows_display > 1) {
			jQuery(qb_main + " #mb_minus").removeClass("mb_minus_inaktiv");
			jQuery(qb_main + " #mb_minus").addClass("mb_minus_aktiv");
		}

		if(mb_rows_display <= 3) {
			if(jQuery.browser.msie) {
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display).show();
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-zimmer").show();
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-anzerwachsene").show();
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-anzkinder").show();
			} else {
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display).fadeIn();
			}
		}
	});


	// MINUS
	jQuery(qb_main + " #mb_minus").live("click", function() {
		if(mb_rows_display > 1) {
			
			// Ausgeblendete Zeile resetten
			children_set[mb_rows_display] = false;
			jQuery(qb_main + " #zimmerzahl" + mb_rows_display).val(0);
			jQuery(qb_main + " #zimmerAnzErw" + mb_rows_display).val(0);
			jQuery(qb_main + " #zimmerAnzKind" + mb_rows_display).val(0);
			jQuery(qb_main + " #anz_kinder_hidden" + mb_rows_display).show();
			jQuery(qb_main + " #anz_kinder" + mb_rows_display).hide();
		
			if(jQuery.browser.msie) {
				// IE macht Probleme mit fadeOut, deshalb hide
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display).hide();
				
				// Select-Boxen verstecken fuer IE6)
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-zimmer").hide();
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-anzerwachsene").hide();
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display + " div.container-anzkinder").hide();
				var qb_height = parseInt(jQuery("#quickbooker").css("height"));
				jQuery("#quickbooker").css("height", qb_height - adjust_children + "px");
			} else {
				jQuery(qb_main + " #multi_book #mb_row" + mb_rows_display).fadeOut("normal", function() {
					var qb_height = parseInt(jQuery("#quickbooker").css("height"));
					jQuery("#quickbooker").css("height", qb_height - adjust_children + "px");
				});
			}
			
			mb_rows_display -= 1;
		}

		if(mb_rows_display < 3) {
			jQuery(qb_main + " #mb_plus").removeClass("mb_plus_inaktiv");
			jQuery(qb_main + " #mb_plus").addClass("mb_plus_aktiv");
		}

		if(mb_rows_display > 1) {
			jQuery(qb_main + " #mb_minus").removeClass("mb_minus_inaktiv");
			jQuery(qb_main + " #mb_minus").addClass("mb_minus_aktiv");
		} else {
			jQuery(qb_main + " #mb_minus").removeClass("mb_minus_aktiv");
			jQuery(qb_main + " #mb_minus").addClass("mb_minus_inaktiv");
		}
	});



	//
	// KINDER-LAYER
	//

	var children_set = new Array();
	children_set[1] = false;
	children_set[2] = false;
	children_set[3] = false;

	// Kinder-Layer anzeigen
	function show_children_layer(children, num) {
		if(children > 0) {			 
			jQuery(qb_children + num + " #children_table" + num + " tr").hide();			
			for (var x = 1; x <= parseInt(children); x++) {
				jQuery(qb_children + num + " #children_table" + num + " #tralter_" + num + "_" + x).show();
			}
			jQuery(qb_children + num).fadeIn();
			jQuery(qb_main).fadeOut();
		} else {
			if(children_set[num]) {
				//jQuery(qb_children + " #children_table").html("");
				jQuery(qb_main + " #anz_kinder" + num).hide();
				jQuery(qb_main + " #anz_kinder_hidden" + num).show();
				children_set[num] = false;
			}
		}
	}
	
	// Layer anzeigen bei Auswahl von Anzahl Kinder
	jQuery(qb_main + " #zimmerAnzKind1").live("change", function() {
		show_children_layer(jQuery(this).val(), 1);
	});

	jQuery(qb_main + " #zimmerAnzKind2").live("change", function() {
		show_children_layer(jQuery(this).val(), 2);
	});

	jQuery(qb_main + " #zimmerAnzKind3").live("change", function() {
		show_children_layer(jQuery(this).val(), 3);
	});


	// Kinder editieren
	jQuery(qb_main + " #anz_kinder1").live("click", function() {
		show_children_layer(jQuery(qb_main + " #zimmerAnzKind1").val(), 1);
		children_set[1] = true;
	});

	jQuery(qb_main + " #anz_kinder2").live("click", function() {
		children_set[2] = true;
		show_children_layer(jQuery(qb_main + " #zimmerAnzKind2").val(), 2);
	});

	jQuery(qb_main + " #anz_kinder3").live("click", function() {
		show_children_layer(jQuery(qb_main + " #zimmerAnzKind3").val(), 3);
		children_set[3] = true;
	});


	// OK
	function children_ok(num) {
		children_set[num] = true;
		jQuery(qb_main + " #anz_kinder_hidden" + num).hide();
		jQuery(qb_main + " #anz_kinder" + num).show();
		jQuery(qb_children + num).fadeOut();
		jQuery(qb_main).show();
	}


	jQuery(qb_children + "1 #children_ok1").live("click", function() {
		children_ok(1);
	});

	jQuery(qb_children + "2 #children_ok2").live("click", function() {
		children_ok(2);
	});

	jQuery(qb_children + "3 #children_ok3").live("click", function() {
		children_ok(3);
	});


	// Abbruch
	function children_cancel(num) {
		if(!children_set[num]) {
			jQuery(qb_main + " #zimmerAnzKind" + num).val(0);
		}
		jQuery(qb_children + num).fadeOut("normal");
		jQuery(qb_main).show();
	}


	jQuery(qb_children + "1 #children_cancel1").live("click", function() {
		children_cancel(1);
	});

	jQuery(qb_children + "2 #children_cancel2").live("click", function() {
		children_cancel(2);
	});

	jQuery(qb_children + "3 #children_cancel3").live("click", function() {
		children_cancel(3);
	});



	//
	// LOGIN/SPECIAL RATES
	//

	var rate_set = false;

	// Layer einblenden
	jQuery(qb_main + " #login_link").live("click", function() {
		jQuery(qb_special).fadeIn();
		jQuery(qb_main).fadeOut();
	});

	// Abbruch
	jQuery(qb_special + " #special_cancel").live("click", function() {
		jQuery(qb_special).fadeOut("normal", function() {
			if(!rate_set) {
				jQuery(qb_special + " .container-services-layer table input").val("");
			}
		});
		jQuery(qb_main).show();
		jQuery(qb_special + " #login_form_karte").hide();
		jQuery(qb_special + " #login_form").show();
		jQuery(qb_special + " #quickbookerloginerror").hide();
		
		// Felder resetten
		jQuery(qb_special + " #login_form #loginemail, " + qb_special + " #login_form #loginuserpassword").val("");
		jQuery(qb_special + " #login_form_karte #loginemail_ccid, " + qb_special + " #login_form_karte #loginkundenkartenummer").val("");
	});

	// Bei Return in Passwortfeld springen
	jQuery(qb_special + " #user").live("keypress", function(e) {
		if(e.which == 13) {
			jQuery(qb_special + " #password").focus();
		}
	});

	// Bei Return OK
	jQuery(qb_special + " #loginuserpassword").live("keypress", function(e) {
		if(e.which == 13) {
			//jQuery(qb_special + " #special_ok").trigger("click");
			if(!(jQuery.browser.msie)) {
				ibe_login();
			}
		}
	});

	//Logout
	jQuery(qb_main + " #logout").live("click", function() {
		jQuery(qb_main + " #isloggedin").hide();
		jQuery(qb_main + " #login_link").show();
		var qb_height = parseInt(jQuery("#quickbooker").css("height"));
		jQuery("#quickbooker").css("height", (qb_height - adjust_kundenkarte_login) + "px");
	});
	
	
	// Bei leerer Eingabe von CC-ID Login + Passwort reaktivieren
	jQuery(qb_special + " #loginemail_ccid").blur(function() {
		jQuery(qb_special + " #login_form_karte").hide();
		jQuery(qb_special + " #login_form").show();
		jQuery(qb_special + " #login_form #loginemail").val(jQuery(this).val());
		jQuery(qb_special + " #login_form #loginemail").trigger("blur");
		jQuery(qb_special + " #login_form #loginuserpassword").focus();
		jQuery(qb_special + " #login_form_karte #loginkundenkartenummer").val("");
		jQuery(qb_special + " #quickbookerloginerror").hide();
	});

	//
	// ERROR MESSAGE OK
	//
	jQuery(qb_error + " #error_ok").live("click", function() {
		jQuery(qb_error).fadeOut();
		jQuery(qb_main + " #qb_loading_aus").hide();
		jQuery(qb_main + " #qb_loading").show();
	});
	
	
	// Beschreankung auf max 4 Personen
	jQuery(qb_main + " .container-anzerwachsene select").live("change", function() {
		var anz_erw = jQuery(this).val();
		var max_anz_kinder = max_personen - anz_erw;
		var children_select = jQuery(this).parents("tr").find(".container-anzkinder select");
		for(var index = 0; index <= max_personen; index++) {
			var option = jQuery(this).parents("tr").find(".container-anzkinder select option[value='" + index + "']");
			if(option.val() != undefined) {
				if(parseInt(jQuery(option).val(),10) > max_anz_kinder) {
					jQuery(option).remove();
				}
			} else {
				if(index <= max_anz_kinder) {
					jQuery("<option class='formklein' value=" + index + ">" + index + "</option>").appendTo(children_select);
				}
			}
		}
	});
	
	jQuery(qb_main + " .container-anzkinder select").live("change", function() {
		var anz_kinder = jQuery(this).val();
		var max_anz_erw = max_personen - anz_kinder;
		var adults_select = jQuery(this).parents("tr").find(".container-anzerwachsene select");
		for(var index = 0; index <= max_personen; index++) {
			var option = jQuery(this).parents("tr").find(".container-anzerwachsene select option[value='" + index + "']");
			if(option.val() != undefined) {
				if(parseInt(jQuery(option).val(),10) > max_anz_erw) {
					jQuery(option).remove();
				}
			} else {
				if(index <= max_anz_erw && index > 0 && index < max_personen) {
					jQuery("<option class='formklein' value=" + index + ">" + index + "</option>").appendTo(adults_select);
				}
			}
		}
	});
	
});
