ma.page = {
	init: function() {
		ma.page.menu = ma.Element.get('www-menu');
		ma.page.body = ma.Element.get('page');

		ma.ajax.setDefaultParams({
			url: 'api/'
		});
		ma.ajax.request({
			data: {
				method: 'api.session.init'
			},
			callback: function(response, success) {
				if (success) {
					if (!ma.util.getUrlParam('menu')) {
						ma.page.getLogs();
					}
				}
			}
		});

		ma.page.generateMenu();
	},

	generateMenu: function() {
		var
			body = ma.page.body,
			menu = ma.page.menu;

		menu.insert([
			{
				tagName: 'h3',
				content: 'Mapa webu:'
			},
			{
				tagName: 'a',
				href: '#',
				id: 'menu.uvod',
				content: 'Úvodní stránka',
				on: {
					click: ma.page.loadStart
				}
			},
			{
				tagName: 'a',
				href: '#',
				id: 'menu.navody',
				content: 'Návody k hrám',
				on: {
					click: ma.page.loadNavody
				}
			},
			{
				content: '&nbsp;'
			}
		]);
	},

	startLoading: function(options) {
		options = options || {};
		ma.browser.body.mask(true, options.message);
		ma.browser.setPageTitle(options.title || 'Made by Nothrem Sinsky');
		ma.page.body.removeAllChildren();
	}, //startLoading()

	stopLoading: function(options) {
		options = options || {};
		ma.browser.body.mask(false);
		if (options.title) {
			ma.browser.setPageTitle(options.title);
		}
	},

	loadStart: function() {

		ma.page.getLogs();
		return false;
	},

	loadNavody: function(){
		if (ma.isDefined('ma.page.navody')) {
			ma.page.navody.init();
			return false;
		}

		ma.ajax.getJs({
			url: 'navody.js',
			callback: function() {
				ma.page.navody.init();
			}
		});
		return false;
	},

	getSubdomains: function(callback) {
		ma.ajax.request({
			data: {
				method: 'server.getSubdomains'
			},
			callback: this.getSubdomainsCallback,
			callbackScope: this,
			callbackParams: {
				callback: callback
			}
		});
	},

	getSubdomainsCallback: function(response, success, params) {
		if (success) {
			params.callback(response.json.result.subdomains);
		}
		else {
			ma.util.alert('Chyba: Nelze stáhnout seznam domén na serveru.');
		}
	},

	getLogs: function(start) {
		ma.page.startLoading({
			message: 'Načítám záznamy...'
		});
		ma.ajax.request({
			data: {
				method: 'api.db.query',
				params: {
					select: '',
					from: 'www/data/logs',
					where: [],
					limit: [start || 0, 10]
				}
			},
			callback: this.getLogsCallback,
			callbackScope: this,
			callbackParams: {
				start: start || 0
			}
		});
	}, //getLogs()

	getLogsCallback: function(response, success, params) {
		var logs, i, cnt, dom;

		if (!success) {
			ma.util.alert('Chyba: Nelze stáhnout sezna.');
		}
		else {
			logs = response.json.result.rows;
			if (!ma.util.is(logs, Array)) {
				return;
			}

			for (i = 0, cnt = logs.length; i < cnt; i++) {
				dom = {
					className: 'log',
					children: [
						{
							tagName: 'h2',
							content: logs[i].title
						},
						{
							tagName: 'p',
							content: logs[i].text
						}
					]
				};

				if (logs[i].link) {
					dom.children.push({
						tagName: 'a',
						href: logs[i].link,
						content: logs[i].link
					});
				}
				if (logs[i].date) {
					dom.children.push({
						tagName: 'p',
						className: 'date',
						content: logs[i].date
					});
				}

				ma.page.body.insert(dom).animateIn();
			}
		}

		if (response.json.result.total > (params.start + 10)) {
			ma.page.body.add({
				className: 'oldLogs',
				items: [
					{
						tagName: 'a',
						href: '#',
						content: 'Starší záznamy',
						on: {
							click: ma.page.getLogs.createDelegate(this, [params.start + 10])
						}
					}
				] //items
			});
		}
		if (0 < params.start) {
			ma.page.body.add({
				className: 'newLogs',
				items: [
					{
						tagName: 'a',
						href: '#',
						content: 'Novější záznamy',
						on: {
							click: ma.page.getLogs.createDelegate(this, [Math.max(0, params.start - 10)])
						}
					}
				]
			});
		}

		ma.page.stopLoading();
	}


};

