// Change jQuery mode to avoid conflicts with prototype or scriptaculous
var $j = jQuery.noConflict();


/* General */

function inputClick(inp, typ, val) {
	switch (typ) {
		case 'f':
			if (inp.value == val) {
				inp.value = '';
			}
		break;
		case 'b':
			if (inp.value == '') {
				inp.value = val;
			}
		break;
	}
}

function switchPic(img, obj) {
	obj.src = img;
}

function disableButton(btn) {
	btn.disabled = true;
	btn.form.submit();
}


/* Reservation Process */

function showLayer(show, num, lay) {
	for (i=0; i<num; i++) {
		$(lay+i).hide();
	}
	$(lay+show).show();

	if (show == 1 && lay == 'payment') {
		copyFormdataInInvoiceFields();
	}
}

function copyFormdataInInvoiceFields() {
	var bookingform;

	var s_firstname = -1; var d_firstname = -1;
	var s_lastname  = -1; var d_lastname = -1;
	var s_company = -1; var d_company = -1;
	var s_street = -1; var d_street = -1;
	var s_street_num = -1;
	var s_zip = -1; var d_zip = -1;
	var s_city = -1; var d_city = -1;
	var s_country = -1; var d_country = -1;

	for (j = 0; j < document.forms.length; j++) {
		bookingform = document.forms[j];

		for (i = 0; i < bookingform.length; i++) {
			elem = bookingform.elements[i];
			if (elem.name == 'data[firstname]') s_firstname = i;
			if (elem.name == 'data[lastname]') s_lastname = i;
			if (elem.name == 'data[company]') s_company = i;
			if (elem.name == 'data[street]') s_street = i;
			if (elem.name == 'data[street_num]') s_street_num = i;
			if (elem.name == 'data[zip]') s_zip = i;
			if (elem.name == 'data[city]') s_city = i;
			if (elem.name == 'data[country]') s_country = i;
			if (elem.name == 'data[invoice_firstname]') d_firstname = i;
			if (elem.name == 'data[invoice_lastname]') d_lastname = i;
			if (elem.name == 'data[invoice_company]') d_company = i;
			if (elem.name == 'data[invoice_street]') d_street = i;
			if (elem.name == 'data[invoice_zip]') d_zip = i;
			if (elem.name == 'data[invoice_city]') d_city = i;
			if (elem.name == 'data[invoice_country]') d_country = i;
		}

		if (s_firstname >= 0) break;
	}

	bookingform.elements[d_firstname].value = bookingform.elements[s_firstname].value;
	bookingform.elements[d_lastname].value = bookingform.elements[s_lastname].value;
	bookingform.elements[d_company].value = bookingform.elements[s_company].value;
	bookingform.elements[d_street].value = bookingform.elements[s_street].value.concat(' ', bookingform.elements[s_street_num].value);
	bookingform.elements[d_zip].value = bookingform.elements[s_zip].value;
	bookingform.elements[d_city].value = bookingform.elements[s_city].value;
	bookingform.elements[d_country].value = bookingform.elements[s_country].value;
}

function hotelDesc(show, num) {
	for (i=0; i<num; i++) {
		$('desc'+i).hide();
		$('nav_hotel_desc').childElements()[i].removeClassName('active');
	}
	$('nav_hotel_desc').childElements()[show].addClassName('active');
	$('desc'+show).show();
	// Reload map
	if (show==2) {
		if (document.getElementById('gmapframe')) {
			document.getElementById('gmapframe').contentWindow.gmapReload();
		} else {
		  gmapReload();
		}
	}
	//Effect.BlindDown('desc'+show);
}

function showPic(img) {
	for (i=0; i<=gal_max; i++) {
		$('pic_'+i).hide();
	}
	gal_cur = img;
	$('pic_'+img).show();
	$('gal_caption').innerHTML = gal_captions[img];
}

function changePic(type) {
	switch (type) {
		case 'first':
			showPic(0);
		break;
		case 'last':
			showPic(gal_max);
		break;
		case 'prev':
			gal_cur = (gal_cur == 0) ? 0 : gal_cur-1;
			showPic(gal_cur);
		break;
		case 'next':
			gal_cur = (gal_cur == gal_max) ? gal_max : gal_cur+1;
			showPic(gal_cur);
		break;
	}
}

function checkRooms() {
	rooms = parseInt($('singlerooms').value)+parseInt($('doublerooms').value);
	$('room_error').hide();
	if (rooms > 5) {
		$('room_error_js').show();
	}
	else {
		$('room_error_js').hide();
	}
}

function updateHotelList(urltogo) {
	checkParam = urltogo.substr(urltogo.length-1);
	if (checkParam == '/') {
		temp = urltogo + '?sort=' + $('hotellist_update').value;
	}
	else {
		temp = urltogo + '&sort=' + $('hotellist_update').value;
	}
	self.location.href = temp;
}

function strToVal(str) {
	var rx = new RegExp("\\.");
	str = str.replace(rx, "");
	rx = new RegExp(",");
	str = str.replace(rx, ".");
	var val = parseFloat(str);
	return val;
}

function formatNumber(zahl, k, fix) {
	if(!k) k = 0;
	var neu = '';
	var f = Math.pow(10, k);
	zahl = '' + parseInt( zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ;
	var idx = zahl.indexOf('.');
	if(fix) {
		zahl += (idx == -1 ? '.' : '' )
		+ f.toString().substring(1);
	}
	idx = zahl.indexOf('.');
	if( idx == -1) idx = zahl.length;
	else neu = ',' + zahl.substr(idx + 1, k);
	while(idx > 0) {
		if(idx - 3 > 0)
			neu = '.' + zahl.substring( idx - 3, idx) + neu;
		else
			neu = zahl.substring(0, idx) + neu;
		idx -= 3;
	}
	return neu;
}

function updateSum(id) {
	selrooms = 0;
	for (i=0; i<$('roomslist').getElementsByClassName('roomselect').length; i++) {
		if (i != id) {
			selrooms = selrooms+parseInt($('sel_'+i).value);
		}
	}
	cursel = parseInt($('sel_'+id).value);
	newselrooms = cursel+selrooms;
	if (newselrooms > 5) {
		diff = 5 - selrooms;
		$('sel_'+id).selectedIndex = diff;
		alert('Es können maximal 5 Zimmer gewählt werden.');
	}

	var currency_pattern = /(.|\d)*\d,\d\d /gi;
	var currency = $('room_sum_'+id).value.replace(currency_pattern, '');

	num = parseInt($('sel_'+id).value);
	room = parseInt($('room_'+id).value);
	multiple = parseInt($('multiple_num').value);
	room_sum = (multiple*num*room);
	$('room_sum_'+id).value = formatNumber(room_sum, 2, true).concat(' ' + currency);
	//$('room_sum_'+id).value = room_sum+' €';

	new_sum = 0;
	var pattern1 = /,\d\d/gi; var pattern2 = /\D/gi;
	for (i=0; i<document.getElementsByTagName("input").length; i++) {
		if (document.getElementsByTagName("input")[i].name == 'room_sum') {
			new_sum = new_sum + parseInt(document.getElementsByTagName("input")[i].value.replace(pattern1, '').replace(pattern2, ''));
		}
	}

	//$('booking_sum').value = formatNumber(strToVal(new_sum), 2, true)+' €';
	$('booking_sum').value = formatNumber(new_sum, 2, true).concat(' ' + currency);
}

function switchLayer(lay) {
	if ($(lay).style.display == 'none')
		Effect.BlindDown($(lay));
	else
		$(lay).hide();
}

function prependStr(str) {
	if (str.length == 1) {
		str = '0'+str;
	}
	return str;
}

function checkDates() {
	date_begin = prependStr($('start_year').value)+prependStr($('start_month').value)+prependStr($('start_day').value);
	date_end = prependStr($('end_year').value)+prependStr($('end_month').value)+prependStr($('end_day').value);
	if (date_end < date_begin) {
		alert('Bitte wählen Sie ein Abreisedatum nach dem Anreisedatum aus.');
	}
}


function changeValue(layer, new_value) {
	$(layer).value = new_value;
}


function ajaxHotelSearch(field, script, addid, pi_version) {
	var form_id = $('hotel_sel'+addid);
	var res_type = form_id.getInputs('radio', 'search_request_type').find(function(r){return r.checked});
	var url = script + '&limit=10&type=' + res_type.value + '&';
	switch (res_type.value) {
		case 'city':
			var minchars = 2;
			var type_label = 'Termin';
		break;
		case 'exhibition':
			var minchars = 1;
			var type_label = 'Messetermin';
		break;
		case 'congress':
			var minchars = 1;
			var type_label = 'Kongresstermin';
		break;
	}

	// solves IE7 bug see: http://www.haroldbakker.com/substr.php
	if (field.value.substr(field.value.length-8) == 'eingeben')
		field.value = '';
	var options = {
		script: url,
		varname: 'input',
		json: true,
		shownoresults: true,
		noresults: 'Keine Ergebnisse gefunden. Für diesen ' + type_label + ' nutzen Sie bitte unser',
		link_page: 'hotelzimmer/gruppenbuchung/',
		link_title: 'Anfrageformular',
		link_image: 'fileadmin/template/images/mail.gif',
		minchars: minchars,
		timeout: 10000,
		maxentries: 10,
		wrapper: 'ac_holder'+addid,
		callback: function (obj) {
			$('search_request'+addid).value = obj.id;
			$('searched_type').value = obj.type;
			$('search_field'+addid).value = obj.value;
			//form_id.submit();
		}
	};
	var json=new AutoComplete(field,options);
	return true;
}


function displayClientLogin() {
	if ($('speed-booking')) {
		$('speed-booking').hide();
	}
	$('client-login').show();
	$('client-login-add').show();
}