// --- CONTROLLERS ---
var bannerController = Class.create();

bannerController.prototype = {
	initialize: function () {
		this.contId = 'bannerContainer';
		//idcka konteineru
		this.contIds = new Array();
		//pozice obrazku na pozadi pro jednotlivy konteinery
		this.fadePositions = new Array();
		//odkazy pro jednotlive konteainery a obrazky
		this.bannerLinks = new Array();
		//index konteineru ktery faduje v poli contIds
		this.curFading = -1;
		//odkaz na timeout
		this.timeoutRef = null;
		//interval fadovani
		this.interval = 500;

		//nacti kontejnery banneru
		conts = $('pageBody').getElementsByClassName('banner');

		for(x = 0; x < conts.length; ++x) {
			imgs = conts[x].getElementsByTagName('IMG');

			//pokud maji vic nez jeden obrazek, zaregistruj je pro fading
			if(imgs.length > 1) {
				tid = this.contId+x;
				this.contIds.push(tid);
				this.fadePositions[tid] = imgs.length - 1;
				this.bannerLinks[tid] = new Array();
				conts[x].id = tid;

				conts[x].down().setStyle({
					height: conts[x].getHeight()+'px',
					overflow: 'hidden',
					backgroundImage: 'url("'+imgs[imgs.length - 1].src+'")',
					backgroundPosition: 'top left',
					backgroundRepeat: 'no-repeat'
				});


				for(y = 0; y < imgs.length; ++y) {
					Element.extend(imgs[y]);
					this.bannerLinks[tid].push(imgs[y].up().href);

					Element.extend(imgs[y]);
					imgs[y].setStyle({
					opacity: 0
					});
				}
			}
		}

		if(this.contIds.length > 0) {
			window.bannerControllerReference = this;
			this.setFade();
		}
	},


	setFade: function () {
		this.timeoutRef = window.setTimeout('window.bannerControllerReference.fade()', this.interval);
	},

	fade: function () {
		//najdi kterej ma fadovat
		++this.curFading;
		if(this.curFading >= this.contIds.length)this.curFading = 0;

		faderId = this.contIds[this.curFading];
		fader = $(faderId);

		imgs = fader.getElementsByTagName('IMG');

		//ma kam fadovat?
		if((this.fadePositions[faderId] - 1) > -1) {
			nextFade = this.fadePositions[faderId] - 1;
		} else {
			nextFade = imgs.length - 1;
		}

		this.fadePositions[faderId] = nextFade;

		//prohodit link banneru na vrchu
		imgs[imgs.length - 1].up().href = this.bannerLinks[faderId][nextFade];

		//zobrazit dalsi a po dokonceni ho hodit na pozadi
		new Effect.Opacity(imgs[nextFade], {duration:1, from:0, to:1});
		this.timeoutRef = window.setTimeout('window.bannerControllerReference.prepareNext()', 1100);
	},

	prepareNext: function () {
		//hod aktivni na pozadi a zase ho schovej
		faderId = this.contIds[this.curFading];
		fader = $(faderId);
		imgs = fader.getElementsByTagName('IMG');
		aimg = imgs[this.fadePositions[faderId]];

		fader.down().setStyle({
			backgroundImage: 'url("'+aimg.src+'")'
		});

		aimg.setStyle({
			opacity: 0
		});

		this.setFade();
	}
}

var faderController = Class.create();

faderController.prototype = {
	initialize: function () {
		this.container = $('teaser');
		if(this.container) {
			//tmpimg = this.container.descendants();
			tmpimg = this.container.getElementsByTagName('IMG');
			this.images = new Array();
			for(x = tmpimg.length - 1; x >= 0; --x){
				this.images.push(Element.extend(tmpimg[x]));
			}

			tmplinks = this.container.getElementsByTagName('A');
			this.links = new Array();
			for(x = tmplinks.length - 1; x >= 0; --x){
				this.links.push(tmplinks[x].toString());
			}

			this.timeoutRef = null;
			this.interval = 3000;
			this.faderPosition = -1;

			this.setLinks(0);

			if(this.images.length > 1) {
				this.container.setStyle({
					overflow: 'hidden',
					backgroundImage: 'url("'+this.images[0].src+'")',
					backgroundPosition: 'top left',
					backgroundRepeat: 'no-repeat'
				});

				this.images.each(function(s){
					s.setStyle({
					position: 'absolute',
					opacity: 0
					});
				});

				window.faderControllerReference = this;
				this.setFade();
			}
		}
	},

	setFade: function () {
		this.timeoutRef = window.setTimeout('window.faderControllerReference.fade()', this.interval);
	},

	fade: function () {
		//ma kam fadovat?
		if(this.faderPosition + 1 < this.images.length) {
			nextFade = this.faderPosition + 1;
		} else {
			nextFade = 0;
		}

		this.faderPosition = nextFade;
		this.setLinks(this.faderPosition);

		//zobrazit dalsi a po dokonceni ho hodit na pozadi
		new Effect.Opacity(this.images[nextFade], {duration:1, from:0, to:1});
		this.timeoutRef = window.setTimeout('window.faderControllerReference.prepareNext()', 1100);
	},

	prepareNext: function () {
		//hod aktivni na pozadi a zase ho schovej
		aimg = this.images[nextFade];

		this.container.setStyle({
			backgroundImage: 'url("'+aimg.src+'")'
		});

		aimg.setStyle({
			opacity: 0
		});

		this.setFade();
	},

	setLinks: function(index) {
		tmplinks = this.container.getElementsByTagName('A');
		for(x = tmplinks.length - 1; x >= 0; --x){
			tmplinks[x].href = this.links[index];
		}
	}
}

//popUpForms
var popUpForm = Class.create();

popUpForm.prototype = {
	initialize: function (linkId, formId) {

		this.formId = $(formId);
		this.setupLink(linkId);

		/*
		this.linkId = $(linkId);
		this.linkId.formId = this.formId;
		//otviraci funkce pro odkaz
		this.linkId.observe('click', function() {
			$('pageCover').setStyle({
				display: 'block',
				opacity: 0
			});

			this.formId.setStyle({
				display: 'block',
				opacity: 0
			});

			if($('fixace'))$('fixace').setStyle({visibility: 'hidden'});

			new Effect.Parallel(
			[
				new Effect.Opacity('pageCover', { sync: true, from: 0.0, to: overlayOpacity }),
				new Effect.Opacity($(this.formId), { sync: true, from: 0.0, to: 1 })
			],
			{duration: overlayDuration}
			);
		});
		*/

		//zaviraci funkce pro close link
		cll = this.formId.getElementsByClassName('closePopUpForm');
		closeLink = cll[0];
		Element.extend(closeLink);
		closeLink.formId = this.formId;
		closeLink.objectId = this;

		closeLink.observe('click', function() {
			new Effect.Parallel(
			[
				new Effect.Opacity('pageCover', { sync: true, from: overlayOpacity, to: 0.0 }),
				new Effect.Opacity($(this.formId), { sync: true, from: 1, to: 0 })
			],
			{
			duration: overlayDuration
			});

			this.objectId.resetElements();
		});
	},

	setupLink: function(linkId) {
		subLinkId = $(linkId);

		subLinkId.formId = this.formId;
		//otviraci funkce pro odkaz
		subLinkId.observe('click', function() {
			$('pageCover').setStyle({
				display: 'block',
				opacity: 0
			});

			this.formId.setStyle({
				display: 'block',
				opacity: 0
			});

			if($('fixace'))$('fixace').setStyle({visibility: 'hidden'});

			new Effect.Parallel(
			[
				new Effect.Opacity('pageCover', { sync: true, from: 0.0, to: overlayOpacity }),
				new Effect.Opacity($(this.formId), { sync: true, from: 0.0, to: 1 })
			],
			{duration: overlayDuration}
			);
		});
	},

	resetElements: function() {
		$('pageCover').setStyle({
			display: 'none',
			opacity: 0
		});

		this.formId.setStyle({
			display: 'none',
			opacity: 0
		});

		if($('fixace'))$('fixace').setStyle({visibility: 'visible'});
	}
}

var scroller = Class.create();

scroller.prototype = {
	initialize: function (area, arrowUp, arrowDown) {
		this.area = $(area);
		this.scrollContent = this.area.down();

		this.up = $(arrowUp);
		this.up.ref = this;

		this.down = $(arrowDown);
		this.down.ref = this;

		this.position = 0;
		this.steps = new Array();
		this.steps.push(0);

		this.scrollContent.setStyle({position: 'relative'});

		eles = this.scrollContent.immediateDescendants();

		h = 0;
		a = 0;
		z = 0;
		for(x = 0; x < eles.length; ++x) {
			Element.extend(eles[x]);
			h = h + eles[x].getHeight();

			if(
			((h + 3) >= this.area.getHeight())
			) {
				a = a + eles[x].getHeight();
				this.steps.push(a);
				++z;
			}
		}

		this.down.observe('click', function(event) {
			ele = Event.element(event);
			newPos = ele.ref.position + 1;
			if(newPos >= ele.ref.steps.length)newPos = ele.ref.steps.length - 1;

			//alert('lenght: '+ele.ref.steps.length+' | proposed: '+(ele.ref.position + 1)+' | got: '+newPos+' | top: '+ele.ref.steps[newPos]);

			ele.ref.scrollContent.setStyle({
				top: '-'+ele.ref.steps[newPos]+'px'
			});

			ele.ref.position = newPos;
		});

		this.up.observe('click', function(event) {
			ele = Event.element(event);
			newPos = ele.ref.position - 1;
			if(newPos < 0)newPos = 0;

			//alert('lenght: '+ele.ref.steps.length+' | proposed: '+(ele.ref.position - 1)+' | got: '+newPos+' | top: '+ele.ref.steps[newPos]);

			ele.ref.scrollContent.setStyle({
				top: '-'+ele.ref.steps[newPos]+'px'
			});

			ele.ref.position = newPos;
		});
	}
}


function setHoverDetails() {
	//textovery u developeru
	if($('hoverDetails')) {
		//smazat stare textovery pokud existujou
		olds = $(document.body).getElementsByClassName('overInfo');
		for(var x = 0; x < olds.length; ++x) {
			Element.extend(olds[x]);
			olds[x].remove();
		}

		containters = $('hoverDetails').getElementsByClassName('mlcqSqBody');
		created = 0;

		for(var x = 0; x < containters.length; ++x) {
			images = containters[x].getElementsByTagName('IMG');
			if(images[0] && images[0].alt != '') {
				++created;
				id = 'textoverImg'+created;
				images[0].id = id;
				parts = images[0].alt.split('|')
				if(parts[0] == undefined)parts[0] = '&nbsp;';
				if(parts[1] == undefined)parts[1] = '&nbsp;';

				new textOver(images[0], 'overInfo', 0.8, parts[0]+'<br /><span class="priceFrom">'+parts[1]+'</span>');
			}
		}
	}
}

var subImages = new Array();
var onImage = 0;

// --- PAGE INITIALIZATION ---
document.observe("dom:loaded", function() {
	//scrollovani na karte nabidky
	if($('dataField') && $('scroller') && $('arrowUp') && $('arrowDown')) {
		$('dataField').className = $('dataField').className.replace('\_', '');
		$('scroller').setStyle({display: 'block'});

		detailScroll = new scroller('dataField', 'arrowUp', 'arrowDown');
	}

	//nastroje na registraci k bulletinu na corporate homepage
	if(
	$('bulletinRegistrationSubmit')
	&& $('bullreg_email')
	) {
		brsSubmit = $('bulletinRegistrationSubmit');
		brsInput = $('bullreg_email');

		brsInput.value = dict['fillin_email'];

		brsInput.observe('focus', function() {
			if($('bullreg_email').value == dict['fillin_email']) {
				$('bullreg_email').value = '';
			}
		});

		brsInput.observe('blur', function() {
			if($('bullreg_email').value == '') {
				$('bullreg_email').value = dict['fillin_email'];
			}
		});

		brsSubmit.observe('click', function() {
			$('bullreg').submit();
		});

		brsSubmit.observe('keypress', function() {
			$('bullreg').submit();
		});
	}

	//otevreni kraju na mape realit
	if($('regionsLink') && $('multipleRegions')) {
		$('regionsLink').observe('click', function() {
			$('multipleRegions').setStyle({
				display: 'block',
				opacity: 0.7
			});
		});
	}

	if($('filtersTab') && $('filters') && $('filtersSwitch') && $('filtersHead') && $('filtersSubmit')) {
		cm = new cookiesManager();

		//zavirani a otvirani filtru v katalogu
		link = $('filtersSwitch');
		tab = $('filtersTab');
		filtersCont = $('filters');

		link.href = 'javascript:void(0)';
		tab.opened = true;
		tab.initalHeight = tab.getHeight();
		filtersCont.initalHeight = filtersCont.getHeight();

		function closeFilters() {
			tab = $('filtersTab');
			filtersCont = $('filters');
			link = $('filtersSwitch');

			cm.setCookie('mexx_filters_state', 0);

			//close filters
			tab.setStyle({
				overflow: 'hidden',
				height: '113px'
			});
			filtersCont.setStyle({
				overflow: 'hidden',
				height: '0px'
			});
			link.setStyle({
				backgroundImage: 'url("'+baseUrl+'img/open_filters.png")'
			});
			$('filtersHead').down().setStyle({
				cursor: 'pointer'
			});
			link.update(dict['open_filters']);
			tab.opened = false;

			setHoverDetails();
		}

		function openFilters() {
			tab = $('filtersTab');
			filtersCont = $('filters');
			link = $('filtersSwitch');

			cm.setCookie('mexx_filters_state', 1);

			//open filters
			tab.setStyle({
				overflow: 'visible',
				height: tab.initalHeight+'px'
			});
			filtersCont.setStyle({
				overflow: 'visible',
				height: filtersCont.initalHeight+'px'
			});
			link.setStyle({
				backgroundImage: 'url("'+baseUrl+'img/close_filters.png")'
			});
			$('filtersHead').down().setStyle({
				cursor: 'default'
			});
			link.update(dict['close_filters']);
			tab.opened = true;

			setHoverDetails();
		}

		iniState = cm.readCookie('mexx_filters_state');
		forceInitalFilterOpened = true;

		try {
			test = openedFilters;
		} catch(e) {
			forceInitalFilterOpened = false;
		}

		if(forceInitalFilterOpened == true) {
			openFilters()
		} else if(iniState == 0) {
			closeFilters();
		}

		forceCloseFilters = true;

		try {
			test = closedFilters;
		} catch(e) {
			forceCloseFilters = false;
		}

		if(forceCloseFilters == true) {
			closeFilters()
		}

		link.observe('click', function(){
			if(tab.opened == true) {
				closeFilters();
			} else {
				openFilters();
			}
		});

		$('filtersHead').down().observe('click', function(){
			if(tab.opened == true) {
				//closeFilters();
				//schvalne - ma jenom otvirat filtry
			} else {
				openFilters();
			}
		});

		//tlacitko hledat ma vzdy schovavat
		$('filtersSubmit').observe('click', function(){
				cm.setCookie('mexx_filters_state', 0);
		});

		//mouseovery radku
		$('filters').observe('mouseover', function(event){
			ele = Event.element(event);
			if(ele.className != 'filterType') {
				ele = $(Event.element(event)).up('.filterType');
			}

			if(ele) {
				movers = tab.getElementsByClassName('filterType');
				for(x = 0; x < movers.length; ++x) {
					movers[x].setStyle({
						backgroundColor: '#fff'
					});
				}

				ele.setStyle({
					backgroundColor: '#f9f8f9'
				});
			}
		});

		//odkaz na hlidaciho psa ve filtrech
		if($('watchdogLink') && $('cataloguesearch')) {
			$('watchdogLink').observe('click', function(){
				watchdog = document.createElement('INPUT');
				watchdog.type = 'hidden';
				watchdog.name = 'setWatchdog';
				watchdog.value = '1';

				$('cataloguesearch').appendChild(watchdog);
				$('cataloguesearch').submit();
			});
		}
	}

	//pridavani a odebirani oblibenych
	if($('deleteFavorites')) {
		$('deleteFavorites').href = 'javascript:void(0);';

		//snulovani oblibenych
		$('deleteFavorites').observe('click', function() {
			url = baseUrl+lan+'/ajax.php?type=deleteFavorites';
			new Ajax.Request(url, {
				onSuccess: function(transport) {
					deleteFavorites();

					$('favoritesCount').update('&nbsp;');

					chboxes = $('realList').getElementsByTagName('input');
					for(var x = 0; x < chboxes.length; ++x) {
						if(chboxes[x].name = 'listSelect[]'){
							chboxes[x].checked = false;
							chboxes[x].disabled = false;
						}
					}
				}
			});
		});
	}


	if(
		$('addToFavorites') && $('favoritesCount')
		&& $('realList')
	) {
		$('addToFavorites').href = 'javascript:void(0);';

		//drzeni checkboxu
		rows = $('realList').getElementsByClassName('listRow');

		for(var x = 0; x < rows.length; ++x) {
			inputs = rows[x].getElementsByClassName('chbox');
			if(inputs[0].name = 'listSelect[]'){
				inputs[0].observe('click', function(event){
					input = Event.element(event);

					if(input.checked == true) {
						url = baseUrl+lan+'/ajax.php?type=addSelection&id='+input.value;
						new Ajax.Request(url, {
							onSuccess: function(transport) {
							}
						});
					} else {
						url = baseUrl+lan+'/ajax.php?type=removeSelection&id='+input.value;
						new Ajax.Request(url, {
							onSuccess: function(transport) {
							}
						});
					}
				});
			}
		}

		//pridani oblibenych
		$('addToFavorites').observe('click', function(){
			rows = $('realList').getElementsByClassName('listRow');
			result = new Array();

			for(var x = 0; x < rows.length; ++x) {
				inputs = rows[x].getElementsByClassName('chbox');
				if(inputs[0].name = 'listSelect[]' && inputs[0].checked == true){
					result.push(parseInt(inputs[0].value));
					inputs[0].disabled = true;
					inputs[0].checked = false;

					anchor = new Array();

					anchor = rows[x].getElementsByClassName('lhColName');
					if(anchor.length == 0)anchor = rows[x].getElementsByClassName('lhColAucName');

					text = rows[x].getElementsByTagName('strong');
				}
			}

			url = baseUrl+lan+'/ajax.php?type=addFavorites&ids='+escape(result.toJSON());
			new Ajax.Request(url, {
				onSuccess: function(transport) {
					result = transport.responseText.evalJSON();
					$('favoritesCount').update(result[0]);
					updateFavorites(result[1]);
				}
			});
		});
	}

	//odznaceni listu
	if($('listDeselect') && $('realList')) {
		links = $('listDeselect').getElementsByTagName('A');
		links[0].href = 'javascript:void(0);';

		$('listDeselect').observe('click', function() {
			url = baseUrl+lan+'/ajax.php?type=emtpySelection';
			new Ajax.Request(url, {
				onSuccess: function(transport) {
				}
			});

			chboxes = $('realList').getElementsByTagName('input');
			for(var x = 0; x < chboxes.length; ++x) {
				if(chboxes[x].name = 'listSelect[]' && chboxes[x].checked == true){
					chboxes[x].checked = false;
				}
			}

			inputs = $('listDeselect').getElementsByTagName('INPUT');
			inputs[0].checked = false;
		});
	}

	//pridavani do oblibenych u detailu
	if($('detailAddToFavorites')) {
		gotId = true;
		try {
			test = detailId;
		} catch(e) {
			gotId = false;
		}

		if(gotId == true) {
			$('detailAddToFavorites').href = 'javascript:void(0);';

			//pridani oblibenych
			$('detailAddToFavorites').observe('click', function(){
				result = new Array();
				result.push(detailId);
				url = baseUrl+lan+'/ajax.php?type=addFavorites&ids='+escape(result.toJSON());

				new Ajax.Request(url, {
					onSuccess: function(transport) {
						result = transport.responseText.evalJSON();
						$('favoritesCount').update(result[0]);
						updateFavorites(result[1]);
					}
				});
			});
		}
	}

	//kalkulacka na strane detailu nemovitosti
	if(
	$('calculateHypo')
	&& $('nemovitost')
	&& $('zdroje')
	&& $('fixace')
	) {
		$('calculateHypo').observe('click', function() {
			window.open('http://www.hypofinance.cz/kalkulacka?nemovitost='+$F('nemovitost')+'&zdroje='+$F('zdroje')+'&fixace='+$F('fixace'));
		});
	}

	//print link
	if($('printLink')) {
		$('printLink').href = 'javascript:void(0)';

		$('printLink').observe('click', function() {
			window.print();
		});
	}

	//email link
	if($('pageCover')) {
		if($('emailLink') && $('emailPageForm')) {
			emailForm = new popUpForm('emailLink', 'emailPageForm');
		}

		//bullregLink
		if($('bullregLink') && $('bulletinPopupForm')) {
			bullregForm = new popUpForm('bullregLink', 'bulletinPopupForm');
		}

		//feedbackLink
		if($('showFeedbackForm') && $('feedbackPopupForm')) {
			$('showFeedbackForm').href = 'javascript:void(0)';
			feedbackForm = new popUpForm('showFeedbackForm', 'feedbackPopupForm');
		}

		if($('detailContactPopupForm') && $('detailContactLink')) {
			$('detailContactLink').href = 'javascript:void(0)';
			jsDetailContactForm = new popUpForm('detailContactLink', 'detailContactPopupForm');

			function setupDetailForm(linkId) {
				//offerId
				if($(linkId)) {
					if($('detailToEmail')) {
						$('detailToEmail').value = $(linkId).innerHTML;
					}

					if($('detailId') && $('offerId')) {
						$('detailId').value = $('offerId').innerHTML;

						if($('detailcontactform_your_remark')) {
							$('detailcontactform_your_remark').value = dict['reacting_to']+': '+$('offerId').innerHTML;
						}
					}
				}
			}

			$('detailContactLink').observe('click', function() {
				setupDetailForm('detailContactLink');
			});

			if($('detailContactLink2')) {
				jsDetailContactForm.setupLink('detailContactLink2');

				$('detailContactLink2').observe('click', function() {
					setupDetailForm('detailContactLink2');
				});
			}
		}
	}



	//cover
	if($('pageCover')) {
		size = getPageSize();
		$('pageCover').setStyle({
			opacity: overlayOpacity,
			height: size[1]+'px'
		});
	}

	if($('pageBody') && $('pageCover') && $('detailImageGallery')) {
		//tooltipy
		if(!$('mexxToolTip')) {
			tt = document.createElement('DIV');
			tt.id = 'mexxToolTip';
			tt.innerHTML = '&nbsp;';

			document.body.appendChild(tt);
		}

		function enableToolTip(tText) {
			if(tText != '') {
				$('mexxToolTip').innerHTML = tText;
				$('mexxToolTip').setStyle({display: 'block'});
			} else {
				$('mexxToolTip').setStyle({display: 'none'});
			}
		}

		function disableToolTip() {
			$('mexxToolTip').setStyle({display: 'none'});
		}

		//spousteni galerie na detailu nemovitosti
		bLinks = $('pageBody').getElementsByTagName('A');
		for(x = 0; x < bLinks.length; ++x) {
			if(bLinks[x].rel == 'detailImageGallery') {
				Element.extend(bLinks[x]);
				bLinks[x].href = 'javascript:void(0);';
				bLinks[x].observe('click', function(){
					$('pageCover').setStyle({
						display: 'block',
						backgroundColor: '#053965',
						opacity: 0
					});

					$('detailImageGallery').setStyle({
						display: 'block',
						opacity: 0
					});

					if($('fixace'))$('fixace').setStyle({visibility: 'hidden'});

					new Effect.Parallel(
					[
						new Effect.Opacity('pageCover', { sync: true, from: 0.0, to: 0.9 }),
						new Effect.Opacity('detailImageGallery', { sync: true, from: 0.0, to: 1 })
					],
					{duration: overlayDuration}
					);
				});
			}
		}

		//prohazovani fotek
		if($('galleryMainImage') && $('gallerySubImages') && $('mainImageTitle')) {
			function arrowsState() {
				if(onImage <= 0) {
					$('leftArrow').setStyle({
						backgroundImage: 'url("'+baseUrl+'/img/gallery_left_end.png")',
						cursor: 'arrow'
					});
				} else {
					$('leftArrow').setStyle({
						backgroundImage: 'url("'+baseUrl+'/img/gallery_left.png")',
						cursor: 'pointer'
					});
				}

				if((onImage + 1) >= subImages.length) {
					$('rightArrow').setStyle({
						backgroundImage: 'url("'+baseUrl+'/img/gallery_right_end.png")',
						cursor: 'arrow'
					});
				} else {
					$('rightArrow').setStyle({
						backgroundImage: 'url("'+baseUrl+'/img/gallery_right.png")',
						cursor: 'pointer'
					});
				}
			}

			subImages = $('gallerySubImages').getElementsByTagName('IMG');
			arrowsState();

			for(x = 0; x < subImages.length; ++x) {
				Element.extend(subImages[x]);
				subImages[x].imgOrder = x;
				subImages[x].observe('click', function(event){
					ele = Event.element(event);
					$('galleryMainImage').src = ele.src.replace('galsm', 'galarge');
					onImage = ele.imgOrder;
					arrowsState();
					$('mainImageTitle').innerHTML = ele.alt;
				});

				subImages[x].observe('mouseover', function(event){
					ele = Event.element(event);
					disableToolTip();
					enableToolTip(ele.alt);
				});

				subImages[x].observe('mousemove', function(event){
					x = Event.pointerX(event);
					y = Event.pointerY(event);

					$('mexxToolTip').setStyle({
						top: (y - 15) +'px',
						left: (x + 15) +'px'
					});
				});

				subImages[x].observe('mouseout', function(){disableToolTip();});
			}

			//posun sipkama
			if($('leftArrow') && $('rightArrow')) {
				$('leftArrow').observe('click', function(){
					if((onImage - 1) >= 0) {
						--onImage;
						$('galleryMainImage').src = subImages[onImage].src.replace('galsm', 'galarge');

						arrowsState();
					}
				});

				$('rightArrow').observe('click', function(){
					if((onImage + 1) < subImages.length) {
						++onImage;
						$('galleryMainImage').src = subImages[onImage].src.replace('galsm', 'galarge');

						arrowsState();
					}
				});
			}
		}

		function resetGalery() {
			$('pageCover').setStyle({
				display: 'none',
				backgroundColor: '#000',
				opacity: 0
			});

			$('detailImageGallery').setStyle({
				display: 'none',
				opacity: 0
			});

			if($('fixace'))$('fixace').setStyle({visibility: 'visible'});
		}

		function galBack() {
			new Effect.Parallel(
				[
					new Effect.Opacity('pageCover', { sync: true, from: 0.9, to: 0.0 }),
					new Effect.Opacity('detailImageGallery', { sync: true, from: 1, to: 0 })
				],
				{
				duration: overlayDuration,
				afterFinish: resetGalery
				});
		}

		//zavreni galerie
		if($('galleryBack')) {
			$('galleryBack').href = 'javascript:void(0);';
			$('galleryBack').observe('click', function(){
				galBack();
			});
		}

		if($('galleryBack2'))	 {
			$('galleryBack2').href = 'javascript:void(0);';
			$('galleryBack2').observe('click', function(){
				galBack();
			})
		}
	}

	//pridavani do oblibenych u galerie
	if($('galleryFavorites')) {
		gotId = true;
		try {
			test = detailId;
		} catch(e) {
			gotId = false;
		}

		if(gotId == true) {
			$('galleryFavorites').href = 'javascript:void(0);';

			//pridani oblibenych
			$('galleryFavorites').observe('click', function(){
				result = new Array();
				result.push(detailId);
				url = baseUrl+lan+'/ajax.php?type=addFavorites&ids='+escape(result.toJSON());

				new Ajax.Request(url, {
					onSuccess: function(transport) {
						result = transport.responseText.evalJSON();
						$('favoritesCount').update(result[0]);
						updateFavorites(result[1]);

						alert(dict['favorite_added']);
					}
				});
			});
		}
	}

	if($('favoritesLink')) {
		$('favoritesLink').tmpHref = $('favoritesLink').href;
		$('favoritesLink').href = 'javascript:void(0);';

		$('favoritesLink').observe('click', function() {
			$('favoritesLink').href = 'javascript:void(0);';

			url = baseUrl+lan+'/ajax.php?type=getFavorites';
			new Ajax.Request(url, {
				onSuccess: function(transport) {
					result = transport.responseText.evalJSON();
					if(result != false && result != 'false' && result.length > 0) {
						document.location.href = $('favoritesLink').tmpHref;
					} else {
						alert(dict['no_favorites']);
					}
				}
			});
		});
	}

	//prohazovani karet na karte projektu
	if($('projectSectionBodies') && $('projectSectionSwitch')) {
		//osetreni delky scrollu v detailu dev projetku
		function areaScrollerResize() {
			if($('areaScroller')) {
				as = $('areaScroller');
				var testHeight = as.getHeight();
				var chlds = as.immediateDescendants();
				var totalHeight = 0;
				chlds.each(function(ch){
					totalHeight += ch.getHeight();
				})

				if(totalHeight < testHeight) {
					as.setStyle({height: (totalHeight + 9) +'px'});
				}
			}
		}


		var pSwitches = $$('div#projectSectionSwitch a');
		var pSections = $('projectSectionBodies').immediateDescendants();

		pSections.each(function(section){
			section.setStyle({display: 'none'});
		});
		pSections[0].setStyle({display: 'block'});

		var sid = 0;
		pSwitches.each(function(anchor){
			anchor.onclick = function(){return false;};
			anchor.sid = sid;
			++sid;

			anchor.observe('click', function(event){
				anchor = Event.findElement(event, 'A');
				sid = anchor.sid;
				pSections.each(function(section){
					section.setStyle({display: 'none'});
				})
				pSections[sid].setStyle({display: 'block'});

				areaScrollerResize();

			});
		});

		if($('projectDetailMoreLink')) {
			$('projectDetailMoreLink').observe('click', function(){
				pSections.each(function(section){
					section.setStyle({display: 'none'});
				})
				pSections[1].setStyle({display: 'block'});

				areaScrollerResize();
			});
		}
	}

	//aktualizace filtru podle typu nemovitosti
	function setDynSelObservation() {
		typeSels = $('cataloguesearch').getElementsByTagName('SELECT');
		for(x = 0; x < typeSels.length; ++x) {
			if(typeSels[x].name == 'typ[]') {
				typeSels[x].id = 'dynTypeSel';
				break;
			}
		}

		if($('dynTypeSel')) {
			$('dynTypeSel').observe('change', function() {
				numSearch = replaceFilters.toString();
				if(numSearch.search($F('dynTypeSel')) != -1) {
					url = baseUrl+lan+'/ajax.php?type=replaceFilters&typ[]='+ $F('dynTypeSel') + '&' + $('cataloguesearch').serialize();
				} else {
					url = baseUrl+lan+'/ajax.php?type=replaceFilters&typ[]=0&' + $('cataloguesearch').serialize();
				}

				new Ajax.Request(url, {
					onSuccess: function(transport) {
						if($('filters')) {
							$('filters').setStyle({height: 'auto'});
							$('filtersTab').setStyle({height: 'auto'});

							$('replaceFilters').update(transport.responseText);

							$('filters').initalHeight = $('filters').getHeight();
							$('filtersTab').initalHeight = $('filtersTab').getHeight();

							observeDynamicFilters();
						}
					}
				});
			});
		}
	}

	function setRegionObservation() {
		if($('cataloguesearch')) {
			//aktualizace okres / pobvod podle kraje
			inputs = $('cataloguesearch').getElementsByTagName('INPUT');
			for(x = 0; x < inputs.length; ++x) {
				if(inputs[x].name == 'kraj[]') {
					Element.extend(inputs[x]);
					inputs[x].observe('click', function(){
						url = baseUrl+lan+'/ajax.php?type=replaceFilters&' + $('cataloguesearch').serialize();

						new Ajax.Request(url, {
							onSuccess: function(transport) {
								if($('filters')) {
									$('filters').setStyle({height: 'auto'});
									$('filtersTab').setStyle({height: 'auto'});

									$('replaceFilters').update(transport.responseText);

									$('filters').initalHeight = $('filters').getHeight();
									$('filtersTab').initalHeight = $('filtersTab').getHeight();

									observeDynamicFilters();
								}
							}
						});
					});
				}
			}
		}
	}

	function observeWholeFilters() {
		//ovladani filtru cely kraj / cela praha
		inputs = $('cataloguesearch').getElementsByTagName('INPUT');
		for(x = 0; x < inputs.length; ++x) {
			if(inputs[x].name == 'wholefilter') {
				//na zaskrtnuti nulovat vsechny sousedy
				Element.extend(inputs[x]);
				inputs[x].observe('click', function(event) {
					ele = Event.element(event);
					if(ele.checked == true) {
						container = ele.up('div.filterType');
						inputs = container.getElementsByTagName('INPUT');

						for(x = 0; x < inputs.length; ++x) {
							if(inputs[x].name != 'wholefilter') {
								inputs[x].checked = false;
							}
						}
					}
				});

				//vsichni sousedi nulovat jeho na zaskrtnuti
				container = inputs[x].up('div.filterType');
				inputs = container.getElementsByTagName('INPUT');

				for(x = 0; x < inputs.length; ++x) {
					if(inputs[x].name != 'wholefilter') {
						Element.extend(inputs[x]);
						inputs[x].observe('click', function(event) {
							ele = Event.element(event);
							if(ele.checked == true) {
								container = ele.up('div.filterType');
								inputs = container.getElementsByTagName('INPUT');

								for(x = 0; x < inputs.length; ++x) {
									if(inputs[x].name == 'wholefilter') {
										inputs[x].checked = false;
										break;
									}
								}
							}
						});
					}
				}

			}
		}
	}

	function observeBackToRegionLinks() {
		//backToRegion
		links = $('cataloguesearch').getElementsByClassName('backToRegion');
		for(x = 0; x < links.length; ++x){
			Element.extend(links[x]);

			links[x].observe('click', function(event){
				ele = Event.element(event);
				lHref = ele.href.substring(1, ele.href.length);
				ele.href = 'javascript:void(0)';

				url = baseUrl+lan+'/ajax.php?type=replaceFilters&' + lHref;

				new Ajax.Request(url, {
					onSuccess: function(transport) {
						if($('filters')) {
							$('filters').setStyle({height: 'auto'});
							$('filtersTab').setStyle({height: 'auto'});

							$('replaceFilters').update(transport.responseText);

							$('filters').initalHeight = $('filters').getHeight();
							$('filtersTab').initalHeight = $('filtersTab').getHeight();

							observeDynamicFilters();
						}
					}
				});

			});
		}
	}

	function observeCommercialType() {
		inputs = $('cataloguesearch').getElementsByTagName('INPUT');
		for(x = 0; x < inputs.length; ++x) {
			if(inputs[x].name == 'ctyp[]') {
				Element.extend(inputs[x]);
				inputs[x].observe('click', function(){
					url = baseUrl+lan+'/ajax.php?type=replaceFilters&' + $('cataloguesearch').serialize();

					new Ajax.Request(url, {
						onSuccess: function(transport) {
							if($('filters')) {
								$('filters').setStyle({height: 'auto'});
								$('filtersTab').setStyle({height: 'auto'});

								$('replaceFilters').update(transport.responseText);

								$('filters').initalHeight = $('filters').getHeight();
								$('filtersTab').initalHeight = $('filtersTab').getHeight();

								observeDynamicFilters();
							}
						}
					});
				});
			}
		}
	}

	function observeDynamicFilters() {
		setDynSelObservation();
		setRegionObservation();
		observeWholeFilters();
		observeBackToRegionLinks();
		observeCommercialType();
	}

	if($('cataloguesearch')) {
		observeDynamicFilters();
	}
});

Event.observe(window, 'load', function() {
	setHoverDetails();

	//fadovani banneru
	banCon = new bannerController();

	if($('teaser')) {
		fc = new faderController();
	}

	//vykresleni hlavniho menu
	if($('mainMenu')) {
		menu = new subMenu('mainMenu', 'submenu', 'topright');
		menu.setCor(-40, -8);
		menu.setMenuShadow('menuTrans');
		menu.registerTabOverCallback(mainOver);
		menu.registerTabOutCallback(mainOut);
		menu.registerMenuOverCallback(mainOver);
		menu.registerMenuOutCallback(mainOut);
	}

	//vykresleni menu k pronajmum
	menu = new subMenu('topStripe', 'offermenu', 'lowerleft');
	menu.setMenuShadow('menuTrans');
});

// --- FUNCTIONS ---
function updateFavorites(content) {
	if($('favorites') && $('favoritesItems')) {
		$('favorites').setStyle({
			display: 'block'
		});

		$('favoritesItems').innerHTML = content;
	}
}

function deleteFavorites() {
	if($('favorites') && $('favoritesItems')) {
		$('favorites').setStyle({
			display: 'none'
		});

		$('favoritesItems').innerHTML = '';
	}
}

function mainOver(main, sub) {
	$(main).setStyle({
		backgroundImage: 'url("'+baseUrl+'/img/menu_bullet_o.png")',
		color: '#fba919'
	});
}

function mainOut(main, sub) {
	$(main).setStyle({
		backgroundImage: 'url("'+baseUrl+'/img/menu_bullet.png")',
		color: '#fff'
	});
}

function insertFlash(eleId, swfFile, width, height, alt, wmode, flashVars) {
	directFlashVars = '';
	if(flashVars != '')directFlashVars = '?'+flashVars;

	flashHtml =
	'<!--[if !IE]> -->'+"\n"+
	'<object type="application/x-shockwave-flash" data="'+swfFile+directFlashVars+'" width="'+width+'" height="'+height+'">'+"\n"+
	'<!-- <![endif]-->'+"\n"+
	'<!--[if IE]>'+"\n"+
	'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+width+'" height="'+height+'">'+"\n"+
	'<param name="movie" value="'+swfFile+directFlashVars+'" />'+"\n"+
	'<!--><!---->'+"\n"+
	'<param name="loop" value="true" />'+"\n"+
	'<param name="menu" value="false" />'+"\n"

	if(wmode)flashHtml += '<param name="wmode" value="transparent" />'+"\n";
	if(flashVars != '')flashHtml += '<param name="flashvars" value="'+flashVars+'" />'+"\n";

	flashHtml += alt+"\n";
	flashHtml += '</object>'+"\n";
	flashHtml += '<!-- <![endif]-->'+"\n";

	obj = document.getElementById(eleId);
	obj.innerHTML = flashHtml;
}