// do not pack this module
// after packing function initFlash worked not correctly

$(document).ready(function()
{
	initBackground();
	initImages();
	initMenu();
	initLangBar();
	killCMSStyles();
	initVTour();
	initFlash();
	initIFrameBehavior();
});

function initBackground()
{
	$('body').css("background-color", "#00214F");
}

function initImages()
{
	var oDiv = $('div.floating-left-pic');
	if ($('img', oDiv).length > 0)
	{
		// show image element with effect
		showElementWithDelay($('div.floating-left-pic'), 1000, 2000);
	} else
	{
		// show non image element without effect
		oDiv.css('display', 'block');
	}
}

function initLangBar()
{
	var oRoot = $('#languageBar');
	var arrLang = $('p/a/img', oRoot);
	var oCurLang = $('p/img',oRoot);
	
	oRoot.css('display', 'none');
	setTimeout(function(){oRoot.show(500);}, 3000);
	
	oCurLang.fadeTo(0, 0.2); // hide current language
	arrLang.each(function()
	{
		$(this).hover(function()
		{
			$(this).fadeTo(500, 0.2);
		}, function()
		{
			$(this).fadeTo(300, 1);
		});
	});
}

function showElementWithDelay(oElem, iSpeed, iTime)
{
	return setTimeout(function(){$(oElem).show(iSpeed);}, iTime);
}

function initMenu()
{
	var oRoot = $('#nav_menu');
	var arrSubBlocks = $('li/ul', oRoot);
	$(arrSubBlocks).each(initMenuItems);
}

// context - submenuOwner
function initMenuItems()
{
	var iMenuOutTimer;
	var iMenuOverTimer;
	var iSubMenuShowingDelay = 200; // start showing submenu after wait this value
	var iSubMenuHidingDelay = 100; // start hiding submenu after wait this value
	var isFirstOver = true; // a flag for submenu owner
	var isFirstSubMenuOver = true; // a flag for submenu 
	var isVisibleSubMenu = false; 
	//var t;
	
	var oSubMenu = $(this);
	var oSubMenuOwner = oSubMenu.parent();
	
	/* clearing css margin (css margin used for CMS compatibility) */
	oSubMenu.css({marginTop:"0"}); 
	
	// hiding subMenu
	oSubMenu.fadeTo(0, 0, function(){$(this).css({display:"none"});});
	
	$(oSubMenuOwner).hover(
	function()
	{
		oSubMenuOwner.addClass("over");
		if (isFirstOver)
		{
			isFirstOver = false;
			clearTimeout(iMenuOutTimer);
			
			if (!isVisibleSubMenu)
			{
				iMenuOverTimer = 
				setTimeout( function()	// show submenu
				{
					oSubMenu.css({display:"block"});
					oSubMenu.fadeTo(300, 1.0);
					isVisibleSubMenu = true;
				}, iSubMenuShowingDelay);
			}
		} 
	},function()
	{
		if (!isFirstOver)
		{
			isFirstOver = true;
			clearInterval(iMenuOverTimer);
			if (isVisibleSubMenu)
			{
				iMenuOutTimer = 
				setTimeout( function()	// hide submenu
				{
					oSubMenu.fadeTo(500, 0, 
						function()
						{
							$(this).css({display:"none"});
							isVisibleSubMenu = false;
							isFirstSubMenuOver = true;
						});
				}, iSubMenuHidingDelay);
			}
		}
		oSubMenuOwner.removeClass("over");
	});
	
	// on subMenu hover
	oSubMenu.hover(function()
	{	
		if (isFirstSubMenuOver)
		{
			$(this).css({display:"block"});
			$(this).fadeTo(300, 1.0);
			isFirstSubMenuOver = false;
		}
	}, function(){});		
}

function killCMSStyles()
{
	$('form[@name=OnLoadMessages]').css('display','none');
	$('form[@name=OnLoadMLMessages]').css('display','none');
}

function initVTour()
{
	$('#vTourLauncher').click(function(){launchVTour();return false;});
}

function launchVTour()
{
	var oWin = window.open('','virtualTour','width=450,height=320,status=no,resizable=yes,menubar=no,location=no,toolbar=no,title=no');
	
	var strPageFlash = 
	'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="450" height="320" id="vw" align="middle">\n'+
	'<param name="allowScriptAccess" value="sameDomain" />\n'+
	'<param name="movie" value="/downloadable/templates/sonne_zermatt/user_flash/virtual_tour.swf" />\n'+
	'<param name="quality" value="high" />\n'+
	'<param name="bgcolor" value="#ffffff" />\n'+
	'<param name="wmode" value="transparent" />\n'+
	'<embed src="/downloadable/templates/sonne_zermatt/user_flash/virtual_tour.swf" quality="high" bgcolor="#ffffff" width="450" height="320" name="vw" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent" />\n'+
	'</object>\n';
	
	var strPageBody = 
	'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n'+
	'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n'+
	'<head>\n'+
	'<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />\n'+
	'<title>Hotel Sonne Zermatt</title>\n'+
	'</head>\n'+
	'<body style="margin:0; padding:0;">\n'+
	'<div id="content">\n'+
	strPageFlash+
	'</div>\n'+
	'</body>\n'+
	'</html>';
	
	oWin.document.open();
	oWin.document.write(strPageBody);
	oWin.document.close();
}

function initFlash()
{
	if (!$.browser.msie) return;
	
	// select all elements '<object /> who containts element '<param />' with attributes 'name' and 'value'
	// warning: the value of attributes are case sensitive
	var arrFlashObjects = $("object[param[@name='Movie'][@value$='.swf']]");
	
	arrFlashObjects.each(
	function()
	{
		// fix IE activate control bug
		$(this).parent().get(0).innerHTML = $(this).parent().html();
	});
}

function initIFrameBehavior()
{	
	try
	{
		var oIFrRedirector = new IFrameRedirector('fr_details');
		oIFrRedirector.addNeededPage('rates[de]');
		oIFrRedirector.addNeededPage('rates[en]');
		oIFrRedirector.addNeededPage('rates[fr]');
		oIFrRedirector.addNeededPage('rates[ru]');
		oIFrRedirector.addNeededPage('rates__offers[de]');
		oIFrRedirector.addNeededPage('rates__offers[en]');
		oIFrRedirector.addNeededPage('rates__offers[fr]');
		oIFrRedirector.addNeededPage('rates__offers[ru]');
		oIFrRedirector.prepare();
	} catch(e)
	{
		switch(e.name)
		{
			case 'IFRAME_NOT_FOUND':
				//alert(e.name+' exception:\n'+ e.message);
				return;
			break;
			default: 
				//alert('default exteption:\n'+ e.name);
				return;
			break;
		}
	}
}