var Controller = Class.create(develab.system, {
	callbacks: {
		onresize: function(img) {
			var vs	= document.viewport.getDimensions();
			var vm	= vs.width / vs.height;
			var is	= img.getDimensions();
			var im	= is.width / is.height;

			if (vm > im)
				img.setStyle({ width: '100%', height: 'auto' });
			if (vm < im)
				img.setStyle({ width: 'auto', height: '100%' });
		},
		oncreate: function() {
			console.log('oncreate')
			$$('body').first().addClassName('load');
		},
		onload: function(ev) {
			console.log('onload')
			var elements = $$('*').each((function(item) {
				if (item.className.match(/(^|\s)loader(-(\w+)|\s|$)/)) {
					var nspace = RegExp.$3 || 'global';
					var loader = new develab.loader(item, {
							group: 'loaders'
						});
						loader.options.oncreate = this.oncreate;
						loader.options.oncomplete = this[nspace].oncomplete.bind(this);
				}
			}).bind(this));
		},
		global: {
			oncomplete: function(transport) {
				console.log('global.oncomplete')
				// reset ajax handles
				if (develab.cache.objects.loaders)
					develab.cache.objects.loaders.each(function(loader) {
						loader.element.removeClassName('active');
					});
				// searching for images to preload
				var setup		= function() {
					// activate source-related links
					$$('a[href=' + document.location.hash + ']').invoke('addClassName', 'active');
					// update heading, page title and body class-name
					$('header').update('<h1>Phoenix Coffeeroasters</h1><span id="line-1" class="line horizontal height-3">&#160;</span><a id="logo" href="/">Zur&uuml;ck zur Startseite</a>' + xml_navi);
					$('content').update(xml_main).hide();
					$$('body').first().className = response.main.className;
					$$('body').first().removeClassName('load');
					document.title = response.main.title;
					new Effect.Appear('content', { duration: .5 });
					this.onload();			
				}
				var response = transport.responseText.evalJSON();
				var xml_navi = unescape(response.header.xhtml.replace(/\+/g, ' '));
				var xml_main = unescape(response.main.xhtml.replace(/\+/g, ' '));
				var	res_navi = xml_navi.match(/src=("|\")(.*?)("|\")/gi);
				var res_main = xml_main.match(/src=("|\")(.*?)("|\")/gi);
				var src_imgs = new Array();

				if (res_navi)
					res_navi.each(function(res_img) {
						if (res_img != 'src=""')
							src_imgs.push(res_img.replace(/src=\"/, '').replace(/\"/, ''));
					});
				if (res_main)
					res_main.each(function(res_img) {
						if (res_img != 'src=""')
							src_imgs.push(res_img.replace(/src=\"/, '').replace(/\"/, ''));
					});
				new develab.image.loader(src_imgs, setup.bind(this));
			}
		}
	},
	initialize: function(ev) {
		/*if (!document.location.hash.blank()) {
			var redirurl = document.location.href.replace(/#\//, '');
			var redirect = new develab.loader(
					new Element('a', {
						'href': redirurl,
						'rel': 'header main',
						'class': 'loader-global'
					}), {
						group: 'temp',
						href: redirurl
					}
				);
				redirect.options.oncreate = this.callbacks.oncreate.bind(this.callbacks);
				redirect.options.oncomplete = this.callbacks.global.oncomplete.bind(this.callbacks);
				redirect.load();
				delete develab.cache.objects.temp;
		} else this.callbacks.onload(ev);*/

		// resizing stage image
		var redirect = new develab.fullscreen('bg-main', {
			'group': 'fullscreen',
			'onresize': this.callbacks.onresize
		});
		this.callbacks.onresize($('bg-main'));
	}
});
