goog.provide('oneup.ui.FooterBar');

goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.Uri');
goog.require('goog.Uri.QueryData');
goog.require('goog.ui.Dialog');
goog.require('goog.ui.Dialog.ButtonSet');
goog.require('goog.ui.Menu');
goog.require('oneup.ui.Component');

oneup.ui.FooterBar = function() {
	this.menu_ = null;
	this.menuToggler_ = null;
	this.currentOkHandler_ = null;
	oneup.ui.Component.call(this);
};
goog.inherits(oneup.ui.FooterBar, oneup.ui.Component);

oneup.ui.FooterBar.prototype.render = function() {
	var holder = goog.dom.createDom('div', {'class': 'footer_bar'});
	var menuToggler = goog.dom.createDom('div', {'id': 'menu_toggler', 'class': 'menu_closed'}, 'Show Beta Tools');
	this.menuToggler_ = menuToggler;
	
    var menu = new goog.ui.Menu();
    var m1, m2, m3, m4;
    menu.addItem(m1 = new goog.ui.MenuItem('Version: ' + oneup.version));
    menu.addItem(new goog.ui.MenuSeparator());
    menu.addItem(m2 = new goog.ui.MenuItem('Report Bug'));
    menu.addItem(m3 = new goog.ui.MenuItem('Suggest Feature'));
    //menu.addItem(m4 = new goog.ui.MenuItem('Suggest Achievement Icon'));
	m1.setEnabled(false);
	menu.setVisible(false);
	this.menu_ = menu;
	
	goog.events.listen(menuToggler, goog.events.EventType.CLICK, this.toggleMenu, null, this);
	goog.events.listen(menu, 'action', this.menuClick, null, this);
	
	var dialog = new goog.ui.Dialog();
    this.dialog_ = dialog;

    dialog.setTitle('');

    dialog.setButtonSet(goog.ui.Dialog.ButtonSet.OK_CANCEL);

    goog.events.listen(dialog, goog.ui.Dialog.EventType.SELECT, function(e) {
      if (e.key == 'ok') {
      	this.currentOkHandler_.call(this);
      }
    }, null, this);
	holder.appendChild(menuToggler);
	menu.render(holder);
	return holder;
};

oneup.ui.FooterBar.prototype.toggleMenu = function(e) {
	var menuToggler = this.menuToggler_;
	var show = goog.dom.classes.has(menuToggler, 'menu_closed');
	this.menu_.setVisible(show);
	goog.dom.classes.toggle(menuToggler, 'menu_closed');
	goog.dom.classes.toggle(menuToggler, 'menu_open');
	menuToggler.innerHTML = show ? 'Hide Beta Tools' : 'Show Beta Tools';
}

oneup.ui.FooterBar.prototype.menuClick = function(e) {
	this.toggleMenu();
	var id = e.target.getId();
	var dialogContentMethods = [
		null,
		null,
		this.reportBugContent,
		this.suggestFeatureContent,
		this.suggestIconContent];
	var index = parseInt(id.substring(1));
	var method = dialogContentMethods[index];
	this.dialog_.setContent(method.call(this));
	this.dialog_.setTitle(e.target.getContent());
	this.dialog_.setVisible(true);
}

oneup.ui.FooterBar.prototype.reportBugContent = function() {
	this.currentOkHandler_ = this.reportBugAction;
	var holder = goog.dom.createDom('div');
	holder.appendChild(goog.dom.createDom('div', {}, 'Bug Name:'));
	var nameInput = goog.dom.createDom('input', {'id':'bugName', 'style': 'width:400px;'});
	holder.appendChild(nameInput);
	holder.appendChild(goog.dom.createDom('div', {}, 'Steps to reproduce:'));
	var stepsInput = goog.dom.createDom('textarea', {'id':'bugDesc', 'rows': 5, 'cols': 80});
	holder.appendChild(stepsInput);
	this.dialogInputs_ = {name: nameInput, steps: stepsInput};
	return holder.innerHTML;
}

oneup.ui.FooterBar.prototype.suggestFeatureContent = function() {
	this.currentOkHandler_ = this.suggestFeatureAction;
	var holder = goog.dom.createDom('div');
	holder.appendChild(goog.dom.createDom('div', {}, 'Feature Name:'));
	var nameInput = goog.dom.createDom('input', {'style': 'width:400px;', 'id':'bugName'});
	holder.appendChild(nameInput);
	holder.appendChild(goog.dom.createDom('div', {}, 'Description:'));
	var descInput = goog.dom.createDom('textarea', {'rows': 5, 'cols': 80, 'id' : 'bugDesc'});
	holder.appendChild(descInput);
	this.dialogInputs_ = {name: nameInput, desc: descInput};
	return holder.innerHTML;
}
 
oneup.ui.FooterBar.prototype.suggestIconContent = function() {
	this.currentOkHandler_ = this.suggestIconAction;
	return goog.dom.createDom('div', {}, 'suggestIcon').innerHTML;
}

oneup.ui.FooterBar.prototype.reportBugAction = function() {
	this.addTrackerStoryFromInput('bug');
}

oneup.ui.FooterBar.prototype.suggestFeatureAction = function() {
	this.addTrackerStoryFromInput('feature');
}

oneup.ui.FooterBar.prototype.suggestIconAction = function() {
}

oneup.ui.FooterBar.prototype.addTrackerStoryFromInput = function(type) {
	this.addTrackerStory(
		goog.dom.getElement('bugName').value,
		type,
		goog.dom.getElement('bugDesc').value,
		oneup.app.userData.fbData.name + ' ('+ oneup.app.userData.fbData.id +')');
}

oneup.ui.FooterBar.prototype.addTrackerStory = function(name, type, desc, user) {
	var params = goog.Uri.QueryData.createFromMap({
		'story\[name\]':name,
	    'story\[story_type\]': type,
	    'story\[description\]': user + '\n' + desc});
	    
	var url = "/tracker/addStory?" + params.toString(); 
	goog.net.XhrIo.send(url);
}

