goog.provide('oneup.UiManager');

goog.require('goog.events');
goog.require('goog.events.EventTarget');
goog.require('goog.History');
goog.require('goog.dom');

oneup.UiManager = function() {
	this.nav = new goog.History(null, null, goog.dom.$('history_state'));
	this.contentHolder = goog.dom.getElement('content');
	this.started = false;
	this.pages = {};
	this.registerPages();
}
goog.inherits(oneup.UiManager, goog.events.EventTarget);

oneup.UiManager.prototype.registerPages = function() {
	this.pages["home"] = oneup.ui.HomePage;
	this.pages["viewGroup"] = oneup.ui.ViewGroupPage;
	this.pages["login"] = oneup.ui.LoginPage;
	this.pages["search"] = oneup.ui.SearchPage;
	this.pages["friend"] = oneup.ui.FriendPage;
	this.pages["admin"] = oneup.ui.AdminAchievementsPage;
}

oneup.UiManager.prototype.refresh = function() {
	if (!this.started) {
		var searchHolder = goog.dom.getElement('search');
		var footer = goog.dom.getElement('footer');
		searchHolder.parentNode.insertBefore(new oneup.ui.SearchBox().render(), searchHolder);
		searchHolder.parentNode.removeChild(searchHolder);
		footer.appendChild(new oneup.ui.FooterBar().render());
		
		goog.events.listen(this.nav, goog.history.EventType.NAVIGATE, this.render, null, this);
		this.nav.setEnabled(true);
		this.started = true;
	} else {
		this.render();
	}
}

oneup.UiManager.prototype.render = function() {
	var page = this.getPageName();
	var args = this.getPageArgs();
	
	this.contentHolder.innerHTML = '';

	if (!oneup.app.userData.isLoggedIn()) {
		page = 'login';
	} else if (!this.pages[page]) {
		page = 'home';
	}
	log(page);
	this.contentHolder.appendChild(new this.pages[page](args).render());
}

oneup.UiManager.prototype.getPageName = function() {
	var queryString = this.nav.getToken();
	var qIdx = queryString.indexOf('?');
	if (qIdx > 0) {
		queryString = queryString.substring(0, qIdx);
	}
	return queryString;
}

oneup.UiManager.prototype.getPageArgs = function() {
	var queryString = this.nav.getToken();
	var qIdx = queryString.indexOf('?');
	var result = {};
	queryString = queryString.substring(qIdx+1);
	var argsAndValues = queryString.split('&');
	for (var i = 0; i < argsAndValues.length; i++) {
		var argArray = argsAndValues[i].split('=');
		if (argArray.length == 1) {
			result[argArray[0]] = '';
		} else if (argArray.length == 2) {
			result[argArray[0]] = argArray[1];
		} else if (argArray.length > 2) {
			result[argArray[0]] = [];
			for (var j = 1; j < argArray.length; j++) {
				result[argArray[0]].push(argArray[j]);
			}
		}
	}
	return result
}

