YUI().use('gallery-modernizr', function(Y) {
	
});

YAHOO.namespace('webstock');

YAHOO.webstock.Bingo = {
	user: null,
		
	setUser: function(u) {
		this.user = u;
	}
};

YAHOO.util.Event.onDOMReady(function() {
	var Dom = YAHOO.util.Dom,
	    Event = YAHOO.util.Event,
	    Connect = YAHOO.util.Connect,
	    Cookie = YAHOO.util.Cookie,
	    Button = YAHOO.widget.Button;
	
	if (YAHOO.webstock.Bingo.user == null) {
		new Button('twitter');
	} else {
		new Button('logout');
	
		Event.on('container', 'mouseover', function(e) {
			var target = Event.getTarget(e);
			
			if (! Dom.hasClass(target, 'yui-button')) {
				target = Dom.getAncestorByClassName(target, 'yui-button');
			}
		
			if (target && ! Dom.hasClass(Dom.getAncestorByClassName(target, 'card'), 'selected')) {
				Dom.addClass(Dom.getAncestorByClassName(target, 'card'), 'highlight');
			}
		});
			
		Event.on('container', 'mouseout', function(e) {
			var target = Event.getTarget(e);
			
			if (! Dom.hasClass(target, 'yui-button')) {
				target = Dom.getAncestorByClassName(target, 'yui-button');
			}
			
			if (target && ! Dom.hasClass(Dom.getAncestorByClassName(target, 'card'), 'selected')) {
				Dom.removeClass(Dom.getAncestorByClassName(target, 'card'), 'highlight');
			}
		});	
		
		Event.on('container', 'click', function(e) {
			var target = Event.getTarget(e);
			
			if (! Dom.hasClass(target, 'yui-button')) {
				target = Dom.getAncestorByClassName(target, 'yui-button');
			}
			
			if (target && ! Dom.hasClass('selected')) {
				var person = Dom.getNextSibling(target);
				
				if (person) {
					var postData = 'person=' + person.innerHTML;
					
					Dom.addClass(Dom.getAncestorByClassName(target, 'card'), 'selecting');
					
					Connect.asyncRequest('POST', '/bingo/bingo', {
						success: function(o) {
							Dom.addClass(Dom.getAncestorByClassName(target, 'card'), 'selected');
							Dom.removeClass(Dom.getAncestorByClassName(target, 'card'), 'highlight');
							Dom.removeClass(Dom.getAncestorByClassName(target, 'card'), 'selecting');
							Dom.setStyle('reset', 'display', 'none');
						},
						failure: function(o) { 
							console.log(o.statusText);
						}
					}, postData);
				}
			}
		});
		
		window.setInterval(function() {
			Connect.asyncRequest('GET', '/bingo/ping', {
				success: function(o) {},
				failure: function(o) { 
					console.log(o.statusText); 
					window.location.reload();
				}
			});
		}, 60000);
	}
	
	new Button('reset');
	new Button('wtf');
	new Button('faq');
});

