YAHOO.namespace("myarcade");
var DOM = YAHOO.util.Dom;
var EVT = YAHOO.util.Event;

YAHOO.myarcade.addGameButton = function(addBtn, addToElem, game) {
	this.init(addBtn, addToElem, game);
};

YAHOO.myarcade.addGameButton.prototype = {
	addButton : null,
	diagVisible : false,
	loginContainer : null,
	messageCenter : null,
	addToElem : null,
	myarcUser : '',
	loggedIn : false,
	gameAdded : false,
	gameName : null,
	
	init: function(button, container, game) {
		this.gameName = game.toLowerCase().replace(/ /g,"");
		this.addButton = DOM.getElementsByClassName(button, 'a');
		this.addToElem = DOM.get(container);
		this.messageCenter = document.getElementById('messages');
		//DOM.addClass(this.addToElem, 'hide');
		
		if(this.checkLoggedIn('myarcnick')) {
			this.loggedIn = true;
			EVT.addListener('login', 'click', function(e) { EVT.preventDefault(e); this.makeRequest(); }, this, true);
			EVT.addListener('close', 'click', function(e) { EVT.preventDefault(e); this.toggleVisible(); }, this, true);
		}
		
		this.loginContainer = new YAHOO.widget.Overlay('myArcade', {visible: false, center: true} );
		this.loginContainer.render();
		EVT.addListener(this.addButton[0], 'click', function(e) { EVT.preventDefault(e); this.toggleVisible(); }, this, true);
	},
	
	toggleVisible: function() {
		if(!this.diagVisible) {
			DOM.removeClass(this.addToElem, 'hide');
			var taller = new YAHOO.util.Anim(this.addToElem, {height: { by: 160 }}, 1.3, YAHOO.util.Easing.easeOut);
			taller.onComplete.subscribe(this.showForm, this, true);
			taller.animate();
			this.diagVisible = true;
		} else {
			DOM.addClass(this.messageCenter, 'hide');
			this.loginContainer.hide();
			var remove = new YAHOO.util.Anim(this.addToElem, {height: { to: 0}}, 1.3, YAHOO.util.Easing.easeOut);
			remove.onComplete.subscribe(function() { DOM.addClass(this.addToElem, 'hide'); }, this, true);
			remove.animate();
			this.diagVisible = false;
		}
	},
	
	showForm: function() {
		this.loginContainer.show();
	},
	
	checkLoggedIn: function(userName) {
		var nameEQ = userName + "=";
		var ca = document.cookie.split(';');
		for(var i = 0; i < ca.length; i++) {
			var c = ca[i];
			while (c.charAt(0) == ' ') c = c.substring(1, c.length);
			if (c.indexOf(nameEQ) == 0) {
				this.myarcUser = c.substring(nameEQ.length, c.length);
				return true;
			}
		}
		return false;
	},
	
	handleSuccess: function(o) {
		if(o.responseText !== undefined) {
			DOM.addClass('indicator', 'hide');
			var response = o.responseText.split('##');
			this.messageCenter.innerHTML = '';
			for(var i = 0; i < response.length; i++) {
				var m = response[i].split('#');
				this.messageCenter.innerHTML += m[1];
				//if(m[0] == 'true' && response.length == 1) hideForm('true');
			}
			DOM.removeClass(this.messageCenter, 'hide');
		}
	},
	
	handleFailure: function(o) {
		if(o.responseText !== undefined) {
			DOM.addClass('indicator', 'hide');
			this.messageCenter.innerHTML += '<em>The system is currently undergoing maintenance, please try again soon.</em>';
			DOM.removeClass(this.messageCenter, 'hide');
		}
	},
	
	makeRequest: function() {
		DOM.removeClass('indicator', 'hide');
		YAHOO.util.Connect.setForm(document.forms.addForm);
		var request = YAHOO.util.Connect.asyncRequest('POST', '/myarcade/remote-manage.php', {success: this.handleSuccess, failure: this.handleFailure, scope: this});
		return(false);
	}
}