var controller = {
	
	initialize: function(event)
	{
		event.stop();
		controller.navigation.preload();
		controller.navigation.set();
		controller.sliders();	
	},
	
	navigation: {
		
		root: 'http://www.penzion-berany.cz/',
		
		images: [
			{s:'m_uvod_.jpg',x:75,y:38},
			{s:'m_ubytovani_.jpg',x:118,y:38},
			{s:'m_rezervace_.jpg',x:105,y:38},
			{s:'m_restaurace_.jpg',x:117,y:38},
			{s:'m_volny-cas_.jpg',x:99,y:38},
			{s:'m_kontakty_.jpg',x:103,y:38},
			{s:'m_napsali-o-nas_.jpg',x:130,y:38}
		],
		preloaded: [],
		
		preload : function()
		{
			window.status = 'Načítám zdroje..';
			var pic;
			$A(controller.navigation.images).each(function(img){
				pic = new Image(img.x, img.y); 
				pic.src = './gfx/' + img.s;
				controller.navigation.preloaded.push(pic);
			});
		},	
				
		set: function()
		{
			var loc = controller.navigation.location(document.location.href.toString());			
			// main menu set
			$$('#menu a img').each(function(butt){				
				if(!butt.src.include(loc.page))
				{
					butt.observe('mouseover', controller.navigation.mbuttover);
					butt.observe('mouseout' , controller.navigation.mbuttout );	
				} else
				{
					butt.src = butt.src.replace('.jpg', '_.jpg');
				}											
			});
			// submenu set
			if($('smnu'))
			{
				$$('#smnu a').each(function(butt){
					if(butt.className.match(loc.page) && !loc.subp)
					{
						butt.id+= '-sel';
					} else if(butt.className.match(loc.subp))
					{
						butt.id+= '-sel';
					}
				});
			}
		},
		
		mbuttover: function(event)
		{
			event.stop();
			elt = event.element();
			var im = new Image()
			elt.src = elt.src.replace('.jpg', '_.jpg');
		},
		
		mbuttout: function(event)
		{
			event.stop();
			elt = event.element();
			elt.src = elt.src.replace('_.jpg', '.jpg');
		},
		
		location : function (url)
		{		
			url = url.replace(controller.navigation.root, '');
			url = url.replace(/#.*/i, '');
			if(url.indexOf('/') > -1) 
			{
				disp = { 
					page : url.substring(0, url.indexOf('/')), 
					subp : url.substring(url.indexOf('/')+1) 
				};
			}
			else {
				disp = { page : url, subp : false };
			}		
			return disp;
		},
		
		nw : function (url)
		{			
			// oldschool javascript
			window.open(url);
			return false;
		}
	},
	
	content : {
		
		picdir: '/pic/',
		images: {},		
				
		loadimages: function(id, images){
			id = id || 'default';
			images  = images || [];
			controller.content.images[id] = new Array();
			images.each(function(i){
				controller.content.images[id].push(i);
			});	
		},

		gallery: function (id, offs)
		{
			id = id || 'default';
			offs = offs || 0;							// position offset
			path = controller.content.picdir;
			pics = $A(controller.content.images[id]);	// source images			
			pane = $('gall-pane') || false;				// controll panel
			imgs = $$('#gall-cont img');				// image references
			$('gall-next').hide();
			
			if(pane){
				pane.descendants().each(function(butt){
					if(butt.identify().match(id)){
						butt.writeAttribute('class', 'gall-sbut');
					} else {
						butt.writeAttribute('class', 'gall-butt');
					}
				});
			}
			
			sums = imgs.each(function(img, index){
				var src = controller.content.images[id][offs+index]['thumb'];
				var alt = controller.content.images[id][offs+index]['title'];
				var dis = controller.content.images[id][offs+index]['src'];
				img.writeAttribute('src', path.concat(src)).writeAttribute('alt', alt).hide();
				img.stopObserving();
				img.observe('click', function(){
					Lightview.show({
						href: path.concat(dis),
						title: alt
					});
				});
				Effect.Appear(img.identify(), { duration: 0.3, delay: 0.1+index*0.2 });
				return index;
			});

			
			sums = imgs.size();
			size = controller.content.images[id].size();
			if(size > sums){				
				link = $(document.createElement('a')).addClassName('link');
				link.update('Další sada &raquo;');
				if((offs+sums) < size){
					if((offs+2*sums) > size) offs = size - sums
					else					 offs = offs + sums;
				}
				else						 offs = 0;
				
				$('gall-next').update(link);				
				$('gall-next').down('a', 0).observe('click', function(){
					controller.content.gallery(id, offs);
				});
				Effect.Appear('gall-next', { duration: 0.3, delay: 1 });						
			} else {
				if(next = $('gall-next')) next.fade();
			}
			
 		},	
		
		reference: function (id)
		{
			$('refr-cont').update($(document.createElement('p')).addClassName('shd bold').update('Načítám..'));
			if(typeof id=='object') 
			{
				id = 0;
			}
			new Ajax.Updater('refr-cont', controller.navigation.root+'sys/cnt.php?a=reference&i='+id , { 
				method: 'get',
				onComplete: function(){
					$('refr-cont').hide();
					$('refr-cont').appear();
				}
			});
			return false;
		},
		
		hosts: function ()
		{
			new Ajax.Updater('acts-cont', controller.navigation.root+'sys/cnt.php?a=hosts' , { 
				method: 'get',
				onComplete: function(){
					$('acts-cont').hide();
					$('acts-cont').appear();
				}
			});
		}
	},
	
	sliders : function () 
	{
		$$('.slider').each(function(slider){
			slider.observe('click', function(event){
				event.stop();
				slider_butt = event.element();
				slider_box  = slider_butt.next('.slide', 0);
				slider_box.toggle();
			});
		});
		$$('.slider').each(function(slider){
			slider.next('.slide',0).toggle();
		});
	},
	
	// reservation form checker
	checked: null,
	message: '',
	options: {
		'email': new RegExp('^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$', 'i'),
		'pocetdospelych': new RegExp('[0-9]+'),
		'pocetdeti01': new RegExp('[0-9]+'),
		'pocetdeti112': new RegExp('[0-9]+'),
		'pocetpokoju': new RegExp('[0-9]+')
	},
	typecheck: function(key, val)
	{
		if(!controller.options[key].test(val)) return false;
		else return true;
	},
	checker: function()
	{
		controller.checked = true;
		controller.message = '';
 		$$('.required').each(function(input){
			if(input.getValue()=='')
			{
				controller.message = 'Některá povinná pole nebyla vyplněna. ';
				controller.checked = false;
			}
		});
		$$('.typecheck').each(function(input){
			if(input.getValue()!='' && !controller.typecheck(input.name, input.getValue()))
			{
				controller.message = 'Vyplněná pole nemají správný formát. ';
				controller.checked = false;
			}
		});
		
		if(!controller.checked)
		{
			$('status').update('<span class="info red">'+controller.message+'</span>');
			Effect.Pulsate('status', { pulses: 3, duration: 0.7 });
		} else
		{
			$('rfrm').request();
		}
	}
		
};

document.observe('dom:loaded', controller.initialize);

