rodeo_utils = {
	
	grid: function($) {
		var self = this;
		$(document).keydown(function(e) {
			if(self.checkKeyCode($, 71, e)) {				
				$('body.logged-in').toggleClass('grid-view');
			}
		});
	},
	
	logging: function($) {
		
		var $modal = $('\
		<div id="modal-logging" class="loading">\
			<div id="modal-content-wrapper">\
				<div id="modal-content"></div>\
				<div id="modal-spinner"></div>\
				<div id="modal-close" title="Close"></div>\
			</div>\
		</div>');
		$modal.css({
			'left': '-3000em',
			'top': '0'
		});
		
		if(!$('#modal-logging').get(0)) {					
			$('body').append($modal);
		}
		
		$('#modal-close').bind('click', function() {
			$modal.css({
				'left': '-3000em',
				'top': '0'
				});
			$modal.removeClass('loaded');
			$modal.addClass('loading');
			$modal.find('#modal-content').html('');
		});

		var self = this;
		
		$(document).keydown(function(e) {
			
			if(self.checkKeyCode($, 76, e)) {
				
				var href = $('#logging-action a').attr('href');
				var url = href.toString();
				var parameterString = url.split('?')[1];
				var parameter = (parameterString != null) ? '?' + parameterString.split('&')[0] : '';
				
				if(parameter == '') {
					self.logging.prototype.login(url, self);
				} else {
					self.logging.prototype.logout(url, self);
				}
			}
		});
		
		this.logging.prototype = {
			
			login: function(url, self) {
				
				var $modal = $('#modal-logging');
				var position = self.logging.prototype.position();
				
				$modal.css({
					'left': position.x + 'px',
					'top': position.y + 'px',
				});
				
				$.ajax({
					type: 'POST',
					url: url,
					dataFilter: function(data, type) {
						var form = $('#loginform, #nav', data);
						return form;
					},
					success: function(data, textStatus) {
						$modal.fadeOut(function() {
							$modal.removeClass('message');
							$modal.removeClass('loading');
							$modal.addClass('loaded');
							$modal.find('#modal-content').html(data);
							var position = self.logging.prototype.position();
							$modal.css({
								'left': position.x + 'px',
								'top': position.y + 'px',
							});
							$modal.fadeIn(function() {
								$modal.find('#user_login').focus();
								$('#wp-submit').bind('click', function(){
									$modal.fadeOut('fast', function(){
										$modal.removeClass('loaded');
										$modal.addClass('loading');
										$modal.find('#modal-content').html('');
										var position = self.logging.prototype.position();
										$modal.css({
											'left': position.x + 'px',
											'top': position.y + 'px',
										});
										$modal.fadeIn('fast');
									});
								});
							});
						});
					}
				});
			},
			
			logout: function(url) {
				
				var $modal = $('#modal-logging');
				var position = self.logging.prototype.position();
				
				$modal.css({
					'left': position.x + 'px',
					'top': position.y + 'px',
				});
				
				$.ajax({
					type: 'POST',
					url: url,
					dataFilter: function(data, type) {
						var message = $('.message', data);
						return message;
					},
					success: function(data, textStatus) {
						$modal.fadeOut(function() {
							$modal.removeClass('loading');
							$modal.addClass('message');
							$modal.find('#modal-content').html(data);
							var position = self.logging.prototype.position();
							$modal.css({
								'left': position.x + 'px',
								'top': position.y + 'px',
							}).fadeIn();
							setTimeout(function() {
								$modal.fadeOut();
							}, 2000);
							var homeURL		= $('#identity a').attr('href');
							var currentURL	= window.location.href;
							$('#footer').load(homeURL + ' #footer');
							$('#comments').load(currentURL + ' #comments');
						});
					}
				});
			},
			
			position: function() {
				
				var clientWidth		= $(window).width();
				var clientHeight	= $(window).height();
				var scrollTop		= $('html').scrollTop();
				var	$modal			= $('#modal-logging');
				var	modalWidth		= $modal.width();
				var	modalHeight		= $modal.height();
				var xPos = (clientWidth - modalWidth) / 2;
				var yPos = (clientHeight - modalHeight) / 5 + scrollTop;
				
				return {
					x: xPos,
					y: yPos
				};
			}

		}
		
		return false;
		
	},
	
	checkKeyCode: function($, key, e) {
		
		var modifier = (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) ? true : false;
		if($(e.target).is(":input") || modifier) return false;
		if(e.keyCode == key) {
			return true;
		}
	},
	
	init: function($) {
		
		this.logging($);
		this.grid($);
	}		
	
}

jQuery(document).ready(function($) {
	
	rodeo_utils.init($);
	
});