function facebook_onload(already_logged_into_facebook) {
	FB.ensureInit(function() {
		FB.Facebook.get_sessionState().waitUntilReady(function(session) {
			var is_now_logged_into_facebook = session ? true : false;
			if (is_now_logged_into_facebook == already_logged_into_facebook)
			    return;
			$.signin.facebook();
		});
	});
}
function facebook_onlogin_ready() { $.signin.facebook(); }

(function($){
$.facebook = {
	facebook: 'connect',
	api_key: 'b958e6603d2047fb630ffbbe39aa26f5',
	receiver: '/x/in/xd_receiver.x'
};

$.signin = {
	on: function() {
		var _s = $.signin.s;
		var _f = $(_s.form).get(0);
		var _e = _f.email.value;
		var _p = _f.pw.value;
		var _c = _f.code.value;
		var _r = null;
		if ($(_s.remember).attr('type') == 'checkbox')
			_r = $(_s.remember).val() ? 'true' : '';
		else
			_r = $(_s.remember).data('checked');

		if (!_e || !_p) {
			alert(_s.incomplete);
			return false;
		}

		$(_s.code).parent().hide();
		$.post('/--/login',{email: _e, pw: _p, rem: _r, code: _c },
		function($t) {
			if ($t == '-err:400') {
				$(_s.error).html(_s.locked).show();
			} else if ($t == '-err:201') {
				$(_s.error).html(_s.invalid).show();
				_f.pw.value = _f.email.value = '';
				_f.email.focus();
			} else if ($t == '-err:204') {
				$(_s.error).html(_s.invalid).show();
				_f.pw.value = '';
				_f.pw.focus();
			} else if ($t.match(/^-err/)) {
				$(_s.error).html(_s.invalid).show();
				$(_s.code).attr('src','http://thaptu.com/imtx/'+$t.substr(7))
					.parent().show();
				_f.code.value = _f.pw.value = '';
				_f.pw.focus();
			} else if (_s.redirect) {
				document.location.href = '/'+_s.redirect;
			} else {
				document.location.href = _s.destination;
			}
			$(_s.forgot).css('color',$.mau.cG);
			return false;
		});
		return false;
	},
	login: function() {
		var _s = $.signin.s;
		var _f = $(_s.form).get(0);
		var _qs = { 
			link: $.signin.info['type']+':'+$.signin.info['id'],
			rem: ($(_s.remember).attr('type') == 'checkbox')
				? ($(_s.remember).val() ? 'true':'') 
				: $(_s.remember).data('checked')
		};
		$.each(['login','pw','code'],function(){
			_qs[this] = $('#signin input[name="'+this+'"]').val();
		});

		if (!_qs['login'] || !_qs['pw'])
			return !$(_s.error).html($.Trans.EIncomplete).show();

		$('#signin input[name="enter"]').attr('disabled',true);
		$('#searchbox').hide();
		
		$.post('/--/signin',_qs,function($j){

			var _j = JSON.parse($j);
			if (_j.status == 'ok' && _s.redirect)
				document.location.href = '/'+_s.redirect;
			else if (_j.status == 'ok')
				document.location.href = _s.destination;
			else {
				$('#signin input[name="enter"]').attr('disabled',false);
				switch(_j.errno) {
				case 400:
					$(_s.error).html($.Trans.ELocked).show();
					break;
				case 201:
					$(_s.error).html($.Trans.EInvalid).show();
					_f.pw.value = _f.email.value = '';
					_f.email.focus();
					break;
				case 204:
					$(_s.error).html($.Trans.EInvalid).show();
					_f.pw.value = '';
					_f.pw.focus();
					break;
				default:
					$(_s.error).html($.Trans.EInvalid).show();
					$(_s.code).attr('src','http://thaptu.com/imtx/'+_qs.pw)
						.parent().show();
					_f.code.value = _f.pw.value = '';
					_f.pw.focus();
					break;
				}
				$(_s.forgot).css('color',$.mau.cG);
			}
		});
		return false;
	},
	twitter: function($verifier) {
		var _s = $.signin.s;
		$.post('/--/signin',{twitter: 'callback', oauth_verifier: $verifier},
		function($j) {
			var _j = JSON.parse($j);
			if (_j.status == 'ok')
				window.location = _s.destination;
			else if (_j.errno == 203) {
				$.signin.info = _j;
				$(_s.error).html($.Trans['SigninToLink'].replace('___','<i>'+_j.type+' ('+_j.login+')<\/i>')).show();
			} else
				$(_s.error).html($.Trans.ESystemError+' ('+_j.errno+')').show();
		});
	},
	facebook: function() {
		var _s = $.signin.s;
		$.facebook.signature = $.nvzCookie.get($.facebook.api_key);
		$.each(['expires','ss','session_key','user'],function(){
			$.facebook[this] = $.nvzCookie.get($.facebook.api_key+'_'+this);
		});
		$('#topbar strong:first').html($.Trans.Loading);
		$.post('/--/signin',$.facebook,function($j){
			$('#topbar strong:first').remove();
			var _j = JSON.parse($j);
			if (_j.status == 'ok')
				window.location = _s.destination;
			else if (_j.errno == 203) {
				$.signin.info = _j;
				$(_s.error).html($.Trans['SigninToLink'].replace('___','<i>'+_j.type+' ('+_j.name+')<\/i>')).show();
			} else
				$(_s.error).html($.Trans.ESystemError+' ('+_j.errno+')').show();
		});
	},
	s: {
		locked: 'Your account has been locked due to too many failed attempts.',
		invalid: 'Invalid email/user name or password!',
		error: '#error', code: '#code', remember: '#cm', forgot: '#forgot',
		destination: '/dashboard'
	},
	info: []
};
})(jQuery);

