$(document).ready(function() {
    bindMenu();
    $('#login-link').click(function() {
    	return showLogin($(this));
    });
    return false;
});

function bindMenu() {
    var sa = $('#sidebar-a');
    $('#sidebar-a a.plus, #sidebar-a a.minus').click(function() {
        var $this = $(this);
        if ($this.is('.minus')) {
            $this.addClass('plus').removeClass('minus');
            $this.parent('li').removeClass('selected');
        } else {
            $this.removeClass('plus').addClass('minus');
            $this.parent('li').addClass('selected');
        }
        return false;
    });
}

function showLogin($this) {
	var loginBox = $('#login-box');
	
	if (!loginBox.length) {	
		var $ul = $this.parents('#clients');
		$.ajax({
			type: 'GET',
			url: $this.attr('href'),
			data: {ajax: 1},
			dataType: 'json',
			beforeSend: function() {
				$ul.addClass('ajax');
			},
			error: function() {
				$ul.removeClass('ajax');
				document.location = $this.attr('href');
			},
			success: function(json) {
				$ul.removeClass('ajax');
				$this.after(json.html);
				processLoginHTML();
			}
		});
	} else {
		loginBox.slideDown('fast');
	}

	return false;
}

function processLoginHTML() {
	var loginBox = $('#login-box');
	var closeBox = function() {
		loginBox.slideUp('fast');
		$(document).unbind('click', closeBox);
		return false;
	}

	loginBox.find('.close').click(closeBox);
	$(document).bind('click', closeBox);
	loginBox.click(function(evt) {evt.stopPropagation();});
	
	var form = loginBox.find('form');
	form.jNice();
	form.bind('submit', function() {
		var $this = $(this);
		$.ajax({
			type: 'POST',
			url: $this.attr('action'),
			data: $this.serialize() + '&ajax=1',
			dataType: 'json',
			beforeSend: function() {
				loginBox.addClass('ajaxi');
			},
			error: function() {
				loginBox.removeClass('ajaxi');
				$this.unbind('submit');
				$this.submit();
			},
			success: function(json) {
				loginBox.removeClass('ajaxi');
				if (json.redirect) {
					document.location = json.redirect;
					loginBox.hide();
				} else {
					loginBox.replaceWith(json.html);
					processLoginHTML();
				}
			}
		});
		return false;
	});
}