/**
 *
 */
$(document).ready( function() {
	var mcode = $("#navi_main #a_message");
	$("#standard_main_content_large").prepend(mcode);
});
/**
 * JS common tradefairs.com
 * @author:		Mario Diaz
 * created:		2009-02-17
 */
// *** navigation main *************************************************************************************************
// preload bg images for navigation
// preload images for selections (all because of msie)
// for preloading images:
var aTmpPreloadNavi = new Array();

var bMsie = (document.all) ? true : false;
//msie6 causing problems:
var bMsie6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

/**
 * preloads images:
 * @param aImgArr
 * @return void
 */
function preloadImages(aImgArr) {
	iStart = aTmpPreloadNavi.length;
	for (i = 0; i < aImgArr.length; i++) {
		aTmpPreloadNavi[iStart + i] = new Image();
		aTmpPreloadNavi[iStart + i].src = aImgArr[i];
	}
}

var aImagesNavi = new Array('upload/zimages/bg_navi_top.gif', 'upload/zimages/bg_navi_first.gif', 'upload/zimages/bg_navi_second.gif', 'upload/zimages/bg_navi_third.gif', 'upload/zimages/flag_en.gif', 'upload/zimages/flag_de.gif');
preloadImages(aImagesNavi);

/**
 * function for main navi. Uses jquery
 * @return void
 */
function navigation() {
	$('#masthead ul li a.top').mouseover( function() {
		$(this).addClass('selected');
		$(this).siblings('ul').addClass('selected');
		$('ul.active').css({
			display: 'none'
		});
		$('#masthead a#active').removeClass('active');
		$('#masthead a#active').removeClass('selected');
	});
	$('#masthead ul ul').mouseover( function() {
		// MSIE: only attach class to a if different:
		$(this).siblings('a').addClass('selected');
		$(this).addClass('selected');
		$('ul.active').css({
			display: 'none'
		});
		$('#masthead a#active').removeClass('active');
		$('#masthead a#active').removeClass('selected');
	});
	$('#masthead ul li a.top').mouseout( function() {
		$(this).removeClass('selected');
		$(this).siblings('ul').removeClass('selected');
		$('ul.active').css({
			display: 'block'
		});
		$('#masthead a#active').addClass('active');
	});
	$('#masthead ul ul').mouseout( function() {
		$(this).removeClass('selected');
		$(this).siblings('a').removeClass('selected');
		$('ul.active').css({
			display: 'block'
		});
		$('#masthead a#active').addClass('active');
	});
	$('#masthead ul li a.active').mouseover( function() {
		$(this).addClass('selected');
		$(this).siblings('ul').addClass('selected');
		$('ul.active').css({
			display: 'block'
		});
		$('#masthead a#active').addClass('active');
	});
	$('#masthead ul ul.active').mouseover( function() {
		$(this).addClass('selected');
		$('ul.active').css({
			display: 'block'
		});
		$('#masthead a#active').addClass('active');
	});
	$('#masthead ul li a.active').mouseout( function() {
		$(this).addClass('selected');
		$('#masthead a#active').addClass('active');
	});
	$('#masthead ul ul.active').mouseout( function() {
		$(this).addClass('selected');
		$('#masthead a#active').addClass('active');
	});
	// position logout:
	setTimeout("positionLogout()", 500);
}

/**
 * positions logout
 * @return void
 */
function positionLogout() {
	if (document.getElementById('logout_2009') && document.getElementById('logout_2009').innerHTML != '') {
		aTmp = findPos(document.getElementById('masthead'));
		oLayer = document.getElementById('logout_2009');
		oLayer.style.top = (aTmp[1] + 41) + 'px';
		oLayer.style.display = 'inline';
		oLayer.style.left = (aTmp[0] + document.getElementById('masthead').offsetWidth - oLayer.offsetWidth - 33) + 'px';
	}
}

// *** teaser scrollable ***********************************************************************************************
// associative array: amounts: Will be set in html templates
var aScrollTeaserAmounts = new Array();
var aTeaserFirsts = new Array();
aTeaserFirsts['hotel'] = 0;
aTeaserFirsts['news'] = 0;
aTeaserFirsts['fair'] = 0;

var bMouseDown = false;
var iFirst = 0; // the one at the top
document.onmouseup = mouseUp;

/**
 * sets mouse down var to false (stops auto scrolling)
 * @return void
 */
function mouseUp() {
	bMouseDown = false;
}

/**
 * scrolls on teaser: hotel offers, news or fair calendar.
 * One Problem: If too high then hide one
 * @var int iDirPar (direction)
 * @var string sTeaser (which teaser)
 * @var int iDiff (how many items to scroll)
 * @return void
 */
function scrollTeaser(iDirPar, sTeaser, iDiff) {

	iAmount = aScrollTeaserAmounts[sTeaser];
	iDir = iDirPar;

	if (arguments.length == 3) { // because of auto scrolling
		bMouseDown = true;
	} else {
		if (!bMouseDown) {
			return false;
		}
	}

	if (iDir == 1) { // scroll up
		if (aTeaserFirsts[sTeaser] == 0) {
			return false;
		}
		document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] - 1)).style.display = "block";
		document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + (iDiff - 1))).style.display = "none";
		aTeaserFirsts[sTeaser]--;

		if (sTeaser == 'fair') {
			document.getElementById('fair_month_curr').innerHTML = aMonthsFairs[aTeaserFirsts[sTeaser]];
			document.getElementById('fair_month_next').innerHTML = aMonthsFairs[aTeaserFirsts[sTeaser] + 1];
			document.getElementById('fair_month_prev').innerHTML = (aTeaserFirsts[sTeaser] > 0) ? aMonthsFairs[aTeaserFirsts[sTeaser] - 1] : '&nbsp;';
		}
	} else { // scroll down
		if (aTeaserFirsts[sTeaser] == iAmount - iDiff) {
			return false;
		}
		if (!document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + iDiff))) {
			return false;
		}
		document.getElementById(sTeaser + "_teaser_" + aTeaserFirsts[sTeaser]).style.display = "none";
		document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + iDiff)).style.display = "block";
		aTeaserFirsts[sTeaser]++;

		if (sTeaser == 'fair') {
			document.getElementById('fair_month_curr').innerHTML = aMonthsFairs[aTeaserFirsts[sTeaser]];
			document.getElementById('fair_month_prev').innerHTML = aMonthsFairs[aTeaserFirsts[sTeaser] - 1];
			document.getElementById('fair_month_next').innerHTML = (aMonthsFairs[aTeaserFirsts[sTeaser] + 1]) ? aMonthsFairs[aTeaserFirsts[sTeaser] + 1] : '&nbsp;';
		}
	}

	// now check height:
	if (document.getElementById(sTeaser + '_teaser')) {
		if (document.getElementById(sTeaser + '_teaser').offsetHeight > 125) {
			if (iDir == 1) { // scroll up
				if (document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + (iDiff - 1)))) {
					document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + (iDiff - 1))).style.display = "none";
				}
			} else {
				if (document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + (iDiff - 1)))) {
					document.getElementById(sTeaser + "_teaser_" + (aTeaserFirsts[sTeaser] + (iDiff - 1))).style.display = "none";
				}
			}
		}
	}

	if (sTeaser != 'fair') {
		// set border bottom style (bg img)
		for (i = aTeaserFirsts[sTeaser]; i < aTeaserFirsts[sTeaser] + iDiff; i++) {
			if (i < aTeaserFirsts[sTeaser] + iDiff - 1) {
				document.getElementById(sTeaser + "_teaser_" + i).style.backgroundImage = 'url(upload/zimages/bottom_pix.gif)';
			} else {
				document.getElementById(sTeaser + "_teaser_" + i).style.backgroundImage = 'none';
			}
		}
	} else {
		document.getElementById('layer_fairs_cal').style.visibility = 'hidden';
	}

	if (bMouseDown) {
		setTimeout( function() {
			scrollTeaser(iDirPar, sTeaser, iDiff, true);
		}, 400);
	}
}

/**
 * hides link to shopping cart:
 * @return void
 */
function hideLinkToShoppingCart() {
	if (document.getElementById('sc_mini_display')) {
		document.getElementById('sc_mini_display').style.display = 'none';
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft, curtop];
}

/**
 * shows fairs for one day
 * @param string sFairs
 * @return void
 */
function showFairsForDay(sFairs, oCaller) {
	//alert(sFairs);
	sHtml = '';
	aTmp = sFairs.split(',');
	for (i = 0; i < aTmp.length; i++) {
		iTmp = parseInt(aTmp[i]);
		if (aCalFairs[iTmp]) {
			sHtml += '<a href="' + aCalFairs[iTmp][1] + '"><nobr>' + aCalFairs[iTmp][0] + '</nobr></a><br />';
		}
	}
	document.getElementById('layer_fairs_cal_fairs').innerHTML = sHtml;
	oLayerCal = document.getElementById('layer_fairs_cal');
	aTmp = findPos(oCaller);
	iWidthTmp = oLayerCal.offsetWidth;
	iHeightTmp = oLayerCal.offsetHeight;
	oLayerCal.style.top = (aTmp[1] - iHeightTmp) + 'px';
	oLayerCal.style.left = (aTmp[0] - iWidthTmp + oCaller.offsetWidth) + 'px';
	document.getElementById('layer_fairs_cal').style.visibility = 'visible';
}

/**
 * trim function for javascript
 * @param string sString
 * @return string sString
 */
function trimAll(sString) {
	while (sString.substring(0, 1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length - 1, sString.length) == ' ') {
		sString = sString.substring(0, sString.length - 1);
	}
	return sString;
}

/**
 * saves volume of flv player in cookie
 * @param int iVolume
 * @return void
 */
function writeFlvVolToCookie(iVolume) {

	var date = new Date();
	date.setTime(date.getTime() + (20 * 24 * 60 * 60 * 1000));
	if (!bMsie) {
		var expires = "; expires=" + date.toGMTString();
	} else {
		var expires = "; expires=" + date.toUTCString();
	}
	document.cookie = "flv_volume=" + iVolume + expires + "; path=/";
}

/* *** gallery of article ***************** */
var aImagesBig = new Array();
var aImgsFirst = new Array(); // int values: which is current
/**
 * gallery article: Shows img large
 * @param int iNum
 * @param int iArt
 * @return void
 */
function showGalleryArticleImg(iNum, iArt) {
	document.getElementById('gallery_art_img_big_' + iArt).src = aImagesBig[iArt][iNum];
}

/**
 * gallery article: Navigates: Prev or next
 * @param int iDir
 * @param int iArt
 * @return void
 */
function slideGalleryArticle(iDir, iArt) {
	if (iDir == 1) { // next
		document.getElementById('gitem_' + aImgsFirst[iArt] + '_' + iArt).style.display = 'none';
		document.getElementById('gitem_' + (aImgsFirst[iArt] + 3) + '_' + iArt).style.display = 'inline';
		aImgsFirst[iArt]++;
		if (aImgsFirst[iArt] + 3 == aImagesBig[iArt].length) {
			document.getElementById('gallery_art_slide_next_' + iArt).style.visibility = 'hidden';
		}
		document.getElementById('gallery_art_slide_prev_' + iArt).style.visibility = 'visible';
	} else {
		document.getElementById('gitem_' + (aImgsFirst[iArt] - 1) + '_' + iArt).style.display = 'inline';
		document.getElementById('gitem_' + (aImgsFirst[iArt] + 2) + '_' + iArt).style.display = 'none';
		aImgsFirst[iArt]--;
		if (aImgsFirst[iArt] == 0) {
			document.getElementById('gallery_art_slide_prev_' + iArt).style.visibility = 'hidden';
		}
		document.getElementById('gallery_art_slide_next_' + iArt).style.visibility = 'visible';
	}
}

/*** contact data ***/

/**
 * gets value of select box
 * @param object select box
 * return string value
 */
function selectValue(oObj) {
	with (oObj) return options[selectedIndex].value;
}

/**
 * checks if contact data is complete. If captcha field exists then check that, too
 * @param object oForm
 * @return bool
 */
function checkContactDataComplete(oForm) {
	aMissings = new Array();
	if (selectValue(document.getElementById('salutation')) == '' || selectValue(document.getElementById('salutation')) == '0') {
		aMissings.push(aErrors['salutation']);
	}
	if (trimAll(document.getElementById('firstname').value) == "") {
		aMissings.push(aErrors['firstname']);
	}
	if (trimAll(document.getElementById('lastname').value) == "") {
		aMissings.push(aErrors['lastname']);
	}

	if (trimAll(document.getElementById('street').value) == "") {
		aMissings.push(aErrors['street']);
	}
	if (trimAll(document.getElementById('zip').value) == "") {
		aMissings.push(aErrors['zip']);
	}
	if (trimAll(document.getElementById('city').value) == "") {
		aMissings.push(aErrors['city']);
	}
	if (document.getElementById('country').selectedIndex == 0 || selectValue(document.getElementById('country')) == '0') {
		aMissings.push(aErrors['country']);
	}
	if (trimAll(document.getElementById('email').value) == "") {
		aMissings.push(aErrors['email']);
	}
	if (!(document.getElementById('email2')) || trimAll(document.getElementById('email2').value) == "") {
		aMissings.push(aErrors['email2']);
	}
	if (trimAll(document.getElementById('phone').value) == "") {
		aMissings.push(aErrors['phone']);
	}

	if (document.getElementById('captcha')) {
		if (trimAll(document.getElementById('captcha').value) == "") {
			aMissings.push(aErrors['captcha']);
		}
	}

	if (document.getElementById('legal_notice')) {
		if (document.getElementById('legal_notice').checked == false) {
			aMissings.push(aErrors['legal_notice']);
		}
	}
	if (document.getElementById('c_terms')) {
		if (document.getElementById('c_terms').checked == false) {
			aMissings.push(aErrors['c_terms']);
		}
	}

	if (aErrors['email_valid']) {
		if (document.getElementById('email').value.indexOf('@') == -1) {
			aMissings.push("\n" + aErrors['email_valid']);
		}
	}
	if (!(document.getElementById('email2')) || trimAll(document.getElementById('email2').value) != trimAll(document.getElementById('email').value)) {
		aMissings.push("\n" + aErrors['email_verify']);
	}

	if (aMissings.length > 0) {
		sErrorText = aMissings.join("\n");
		alert(sTextMissing + "\n" + sErrorText.replace(/\*/g, ''));
		return false;
	} else {
		if (arguments.length == 1) {
			oForm.submit();
		}
		return true;
	}
}

/**
 * shows legal notice or terms of condition layer
 * @param string sType
 * @return void
 */
function showTermsLayer(sType) {
	hideSelects();
	iScrollY = (bMsie) ? document.documentElement.scrollTop : window.pageYOffset;
	oLayer = null;
	if (document.getElementById(sType + '_layer')) {
		oLayer = document.getElementById(sType + '_layer');
	} else if (document.getElementById('legal_notice_layer')) {
		oLayer = document.getElementById('legal_notice_layer');
	}
	oLayer.style.top = 0;
	oLayer.style.display = 'inline';
	if (bMsie6) {
		oLayer.style.width = screen.width;
	}
	oLayer.style.height = getDocHeight() + 'px';

	// text:
	oLayer = null;
	if (sType == 'terms') {
		oLayer = document.getElementById('text_outer_terms');
	} else if (sType == 'cc_check_no') {
		oLayer = document.getElementById('text_outer_cc_check_no');
	} else {
		oLayer = (document.getElementById('text_outer')) ? document.getElementById('text_outer') : document.getElementById('reg_or_login');
	}
	oLayer.style.top = (iScrollY + 50) + 'px';
	aTmp = new Array(0, 0);
	if (document.getElementById('reg_text_1')) {
		aTmp = findPos(document.getElementById('reg_text_1'));
	} else if (document.getElementById('newsletter_page_2')) {
		aTmp = findPos(document.getElementById('newsletter_page_2'));
		aTmp[1] -= 40;
		aTmp[0] += 20;
	} else if (document.getElementById('reg_or_login') || document.getElementById('booking_form') || document.getElementById('finish_form')) {
		oLayer.style.display = 'inline';
		oContainerLarge = document.getElementById('container_main_content_large');
		aTmp = findPos(oContainerLarge);
		aTmp[0] += (oContainerLarge.offsetWidth - oLayer.offsetWidth) / 2;
		aTmp[1] += 40;
	}
	if (sType == 'cc_check_no') {
		aTmp[1] += 80;
	}
	oLayer.style.left = aTmp[0] + 'px';
	oLayer.style.top = aTmp[1] + 'px';
	oLayer.style.display = 'inline';
	// close button:
	iY = aTmp[1] - 12;
	iX = aTmp[0] - 12;
	oLayer = document.getElementById('close_button');
	oLayer.style.left = iX + 'px';
	oLayer.style.top = iY + 'px';
	oLayer.style.display = 'inline';
}

/**
 * gets height of document
 * @return int
 */
function getDocHeight() {
	var D = document;
	return Math.max(Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
}

/**
 * hides legal notice or terms of condition layer
 * @param string sType
 * @return void
 */
function hideTermsLayer(sType) {

	// Close login layer
	if (window.location.href.search(/morerooms=yes/) != -1) {
		$("body").html('');
		var sLocation = window.location.href.replace(/\?morerooms=yes/g, '').replace(/https/g, 'http');
		window.location.href = sLocation;

		return false;
	}
	document.getElementById(sType + '_layer').style.display = 'none';
	if (document.getElementById('text_outer')) {
		document.getElementById('text_outer').style.display = 'none';
	}
	if (document.getElementById('reg_or_login')) {
		document.getElementById('reg_or_login').style.display = 'none';
	}
	if (document.getElementById('text_outer_terms')) {
		document.getElementById('text_outer_terms').style.display = 'none';
	}
	if (document.getElementById('text_outer_cc_check_no')) {
		document.getElementById('text_outer_cc_check_no').style.display = 'none';
	}
	document.getElementById('close_button').style.display = 'none';
	showSelects();
}

//*** hide and show selects for msie ***
function hideSelects() {
	if (bMsie) {
		elmTag = 'SELECT';
		for (i = 0; i < document.all.tags(elmTag).length; i++) {
			obj = document.all.tags(elmTag)[i];
			if (!obj || !obj.offsetParent)
				continue;
			obj.style.visibility = "hidden";
		}
	}
}

function showSelects() {
	if (bMsie) {
		elmTag = 'SELECT';
		for (i = 0; i < document.all.tags(elmTag).length; i++) {
			obj = document.all.tags(elmTag)[i];
			if (!obj || !obj.offsetParent)
				continue;
			obj.style.visibility = "visible";
		}
	}
}

/**
 * gets value of radio
 * @param object radio
 * return string value
 */
function radioValue(rObj) {
	if (!rObj)
		return false;
	if (rObj.checked) {
		return rObj.value;
	}
	for (i = 0; i < rObj.length; i++)
		if (rObj[i].checked)
			return rObj[i].value;
	return false;
}

function popUp(url, defaultWidth, defaultHeight) {
	window.open(url, "der_popup", "width=" + defaultWidth + ", height=" + defaultHeight + ", left=10, top=10, scrollbars=no, dependent=yes, menubar=no, resizable=yes, toolbar=no, status=no");
}

/**
 * prints details of booking
 * @return void
 */

function printDetails() {
	sBaseHref = document.getElementsByTagName('base')[0].href;
	newwin = window.open("", "details_win", "width=700, height=600, top=0, left=0, resizable=1, scrollbars=1");
	newwin.document.write("<html>");
	newwin.document.write("<head>");
	newwin.document.write("<base href='" + sBaseHref + "' /><title>PRINT</title>");
	newwin.document.write("<link rel='stylesheet' type='text/css' href='css/customer_sites.css' />");
	newwin.document.write("<link rel='stylesheet' type='text/css' href='css/booking.css' />");
	newwin.document.write("<style type='text/css'>.link_item_right_v4 { display: none; background-image: none; visibility: hidden; }</style>");
	newwin.document.write("</head>");
	newwin.document.write('<body style="width: 660px; margin: 0; padding: 0; background-image: none;" onload="window.self.print();"><style type="text/css">#notice_information, #notification_include{display:none;}</style>');
	// header img:
	sImg = 'images/blank.gif'
	if (document.getElementById('customer_header')) {
		sImg = document.getElementById('customer_header').style.backgroundImage;
		sImg = sImg.replace(/url\(/g, "");
		sImg = sImg.replace(/\)/g, "");
	} else if (document.getElementById('img_logo_v1')) {
		sImg = document.getElementById('img_logo_v1').src;
	}

	// alert(sImg);
	newwin.document.write("<div><img src='" + sImg + "' alt='' /></div>");
	newwin.document.write(document.getElementById('print_area').innerHTML);
	newwin.document.write("</body></html>");
	newwin.document.close();
}

var bEnterEmailLayerVis = false;
/**
 * for sending details of booking to own email address
 * @return void
 */
function sendDataPerEmail() {
	oEnterEmailLayer = document.getElementById('email_enter_layer');
	if (!bEnterEmailLayerVis) {
		oLayerPos = document.getElementById('caller_send');
		aTmp = findPos(oLayerPos);
		iX = aTmp[0] - oEnterEmailLayer.offsetWidth + oLayerPos.offsetWidth + 10;
		iY = aTmp[1] + oLayerPos.offsetHeight - 2;
		oEnterEmailLayer.style.top = iY + "px";
		oEnterEmailLayer.style.left = iX + "px";
		oEnterEmailLayer.style.visibility = "visible";
		bEnterEmailLayerVis = true;
	} else {
		oEnterEmailLayer.style.visibility = "hidden";
		bEnterEmailLayerVis = false;
	}
}

/**
 * final sending details of booking to own or custom email address
 * @return void
 */
function sendDataPerEmailFinal() {
	bOk = true;
	// if user has entered custom email address then use this:
	if (document.getElementById('which_email_custom').checked) {
		sEmail = document.getElementById('custom_email_address').value;
		if (trimAll(sEmail) == "") {
			alert(sNoEmailGiven);
			document.getElementById('custom_email_address').focus();
			bOk = false;
		} else {
			document.forms['send_per_email_form'].email_address.value = sEmail;
		}
	}
	if (bOk) {
		window.open('', "send_email_win", 'top=0,left=0,width=980,height=350');
		document.forms['send_per_email_form'].data.value = escape(document.getElementById('print_area').innerHTML);
		document.forms['send_per_email_form'].submit();
	}
}

/**
 * alerts message after sending email (success or not) and closes that win)
 * @var string sMessage
 * @return void
 */
function alertSendDataPerEmailMessage(sMessage) {
	alert(sMessage);
	window.self.close();
}

function domContains(container, containee) {
	while (containee) {
		if (container === containee) {
			return true;
		}
		containee = containee.parentNode;
	}
	return false;
}

function checkMouseLeave(node, evt) {
	if (typeof evt.relatedTarget != 'undefined') {
		return !domContains(node, evt.relatedTarget);
	} else if (typeof evt.toElement != 'undefined' && typeof node.contains != 'undefined') {
		//return !node.contains(evt.toElement);
		return (evt.fromElement.tagName == "DIV" && !node.contains(evt.toElement));
	}
}

/**
 * shows layer
 * @param string sLayer
 * @param object oCaller
 * @return void
 */
function showTopLayer(sLayer, oCaller) {
	if (document.getElementById(sLayer)) {
		oLayer = document.getElementById(sLayer);
		aTmp = findPos(oCaller);
		oLayer.style.left = aTmp[0] + 'px';
		oLayer.style.top = (aTmp[1] + oCaller.offsetHeight) + 'px';
		oLayer.style.display = 'inline';
	}
}
