var CacheCount=0;
var CacheMax=11;
var MasksCount=11;

function overlay(type)
{
	if (!$('overlay').visible() && type)
		{
		var arrayPageSize = document.body.lbHandler.getPageSize();
		$('overlay').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });
		new Effect.Appear($('overlay'), { duration: 0.75, from: 0.0, to: 0.7 });
	}
	else
		new Effect.Fade($('overlay'), { duration: 0.5});
}

function fadeBubble()
{
	overlay(0);
	if ($('wrapper').down('.__active'))
		$('wrapper').down('.__active').removeClassName('__active').fade({'duration':0.25});
}



function showBubbleImg(num)
{
	if (!window.adminMode)
		overlay(1);
	var bubble=$('wrapper').down('.bubble',num);
	valign(halign(bubble));
	bubble.addClassName('__active').appear({'duration':0.25});
}

function checkUrlChange()
{
	if (window.location.hash=='' && window.currentRoom)
		{
		window.currentRoom='';
		fadeBubble();
		gotoIndex();
		//$('header').down('h1').scrollTo();
		return false;
	}
	var roomName=window.location.hash.substring(1);
	if (roomName=='contacts'){
	window.location='/contacts/';
	return false;
}

	if (roomName && Rooms[roomName] && roomName!=window.currentRoom)
		{
		clearInterval(document.urlCheckTimer);
		document.urlCheckTimer=null;
		fadeBubble();
		gotoRoom(roomName);
	}
}

function preload(path)
{
	preloaders.push(path);
	if (!window.preloadTimer)
		window.preloadTimer=setInterval(doPreload,25);
}

function doPreload()
{
	if (window.preloadObject)
		{
		return false;
	}
	var path;
	if (preloaders.length<=0)
	{
		path=null;
	}
	else
		path=preloaders.pop();
	if (!path)
		{
		clearInterval(window.preloadTimer);
		window.preloadTimer=null;
		clearInterval(document.clTimer);
		$('header').down('h1').down('span').update();
		loadFinished();
		return false;
	}
	window.preloadObject=new Image();
	window.preloadObject.onload=function(){imgLoaded(path);};
	window.preloadObject.src=path;
}

function imgLoaded(path)
{
	CacheCount++;
	if (path && path.length)
		preloadedImages[path]=window.preloadObject;
	window.preloadObject=null;
}


function loader()
{
	$('preload').hide();
	$('text').hide();
	$('loader').show();
	$('header').down('h1').style.backgroundImage='url("/images/headers/loading.png")';
}



function gotoRoom(roomName)
{
	window.currentRoom=roomName;
	if (!document.urlCheckTimer)
		document.urlCheckTimer=setInterval(checkUrlChange,100);
	var roomData=Rooms[roomName];
	var offset=$('content').down('.align_center_to_right').cumulativeOffset();
	loader();
	preload('/images/rooms/'+roomName+'.ru.jpg');
	preload('/images/headers/'+roomName+'.png');
	if (roomData.bubbles)
		roomData.bubbles.each(function(bubble){
		CacheMax++;
		preload('/images/bubbles/'+bubble.img+'.ru.jpg');
	});

	$('preload').update();
	$('wrapper').select('img.bubble').each(Element.remove);
	$('preload').style.height=roomData.size+'px';
	if (roomData.link)
	{
		$('header').down('h1').targetUrl=roomData.link;
		if (roomData.split_ru)
			$('header').down('h1').down('a').setStyle({
			'left':'0px',
			'width':roomData.split_ru+'px'
			});
	}
	else
	{
		$('header').down('h1').targetUrl='';
		$('header').down('h1').down('a').setStyle({
			'width':'0px',
			'left':'-1px'
		});

	}
	if (roomData.bubbles)
		roomData.bubbles.each(function(bubble,ind){
		$('preload').appendChild(
		new Element(
		'a',{'class':'zone','href':'javascript:;'}
		).setStyle(bubble.style).observe('click',function()
		{
			showBubbleImg(ind);
		})
		);

		var bub=$('wrapper').appendChild(new Element('img',{
			'class':'bubble',
			'style':'display:none',
			'src': '/images/bubbles/'+bubble.img+'.ru.jpg'
		})).observe('click',fadeBubble);
		bub.sourceLeft=bubble.imgleft;
		bub.sourceTop=bubble.imgtop;
	});

	if (roomData.zones)
		roomData.zones.each(function(zone){
		$('preload').appendChild(
		new Element('a',{'class':'zone','href':'#'+zone.room})
		).setStyle(zone.style)
	});
	setTimeout('redraw("'+roomName+'")',100);

}

function redraw(roomName)
{
	if (preloaders.length<=0 && !window.preloadObject)
		{
		var roomData=Rooms[roomName];
		$('loader').hide();
		$('preload').style.backgroundImage='url("/images/rooms/'+roomName+'.ru.jpg")';
		$('header').down('h1').style.backgroundImage='url("/images/headers/'+roomName+'.png")';
		$('preload').show();
		/*if (roomData.noscroll)
		{
		$('preload').down('.zone').scrollTo();
		return true;
		}*/
		$('header').down('h1').scrollTo();
		return false;
	}
	setTimeout('redraw("'+roomName+'")',100);
}

function loadFinished()
{
	Event.stopObserving($('overlay'),'click');
	$('overlay').observe('click',fadeBubble);
	if (window.location.hash.length)
		{
		if (window.location.hash.indexOf('video')>=0)
			{
			gotoIndex();
			}
		else
		if (!Rooms[window.location.hash.substring(1)])
			{
			document.location=document.location.pathname;
			return true;
		}
	}
	$(document).fire('content:loaded');
	if (!document.urlCheckTimer)
		document.urlCheckTimer=setInterval(checkUrlChange,100);
}



function checkLoaded()
{

	switch($('header').down('h1').down('span').innerHTML)
	{
		case '.':
			$('header').down('h1').down('span').update('..');
			break;
		case '..':
			$('header').down('h1').down('span').update('...');
			break;
		case '...':
			$('header').down('h1').down('span').update('');
			break;
		default:
			$('header').down('h1').down('span').update('.');
	}

	if (preloaders.length<=0)
	{
		clearInterval(window.preloadTimer);
		window.preloadTimer=null;
		clearInterval(document.clTimer);
		$('header').down('h1').down('span').update();
		loadFinished();

	}


}

var preloaders=[];
var preloadedImages={};
Event.observe($(document),'dom:loaded',function(){

	window.currentRoom='dummy';

	Event.observe(window,'resize',function()
	{
		var arrayPageSize = document.body.lbHandler.getPageSize();
		$('overlay').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });
	});
	if (window.location.pathname=='/')
		{
		var imgPreloader = new Image();
		imgPreloader.onload=function()
		{
			for (var c=1;c<=MasksCount;c++)
				preload('/images/masks/ru/mask_'+c+'.png');
		}
		imgPreloader.src='/images/index.jpg';
	}

	document.clTimer=setInterval(checkLoaded,200);
});

