
$import("Ext.JSVMPlugIn");

function getCookie() {
	var cookie = Class.forName('js.io.Cookie').newInstance(null, $app.context.root + '/', new Date(3000, 0, 1));
	return cookie;
}

function loadAdLogin () {
	return getCookie().getValue('hi-user-login-admode') == "true";
}

function saveAdLogin (r) {
	getCookie().setValue('hi-user-login-admode', r ? 'true' : 'false');
}

function loadRememberUserName () {
	return getCookie().getValue('hi-user-login-remember') == "true";
}

function saveRememberUserName (r) {
	getCookie().setValue('hi-user-login-remember', r ? 'true' : 'false');
}

function loadRememberUserName () {
	return getCookie().getValue('hi-user-login-rememberusername') == "true";
}

function saveRememberUserName (r) {
	getCookie().setValue('hi-user-login-rememberusername', r ? 'true' : 'false');
}

function loadRememberPassword () {
	return getCookie().getValue('hi-user-login-rememberpassword') == "true";
}

function saveRememberPassword (r) {
	getCookie().setValue('hi-user-login-rememberpassword', r ? 'true' : 'false');
}

function loadAutologin () {
	return getCookie().getValue('hi-user-login-autologin') == "true";
}

function saveAutologin (r) {
	getCookie().setValue('hi-user-login-autologin', r ? 'true' : 'false');
}

function loadPassword () {
	return getCookie().getValue('hi-user-login-password') || '';
}

function savePassword (pass) {
	getCookie().setValue('hi-user-login-password', pass);
}

function loadUserName () {
	return getCookie().getValue('hi-user-login-username') || '';
}

function saveUserName (userName) {
	getCookie().setValue('hi-user-login-username', userName);
}


function restoreInputData () {

	if (loadRememberUserName() == true) {
		Ext.get('rememberUserName').dom.checked = true;
	} else if (autoLogin != 'true'){
		return;
	}
		
	var userName = '', password = '';
	if (token != '') {			
		var s = Class.forName('org.ajaxframework.util.Base64Codec').decode(token);
		var offset = s.indexOf(':');
		if (offset == -1) {
			userName = s;
		} else {
			userName = decodeURIComponent(s.substring(0, offset));
			password = decodeURIComponent(s.substring(offset + 1));
		}
	} else {
		userName = loadUserName();
		password = loadPassword();
	}

	Ext.get('edit-username').dom.value = userName;

	if (loadRememberPassword() == true) {
		Ext.get('rememberPassword').dom.checked = true;
	} else if (autoLogin != 'true'){
		return;
	}

	Ext.get('edit-password').dom.value = password;
	
	if (loadAutologin() == true) {
		Ext.get('autologin').dom.checked = true;
	}			
}

var resetInputs = function () {
	Ext.get('edit-username').dom.value = '';
	Ext.get('edit-password').dom.value = '';
	Ext.get('rememberUserName').dom.checked = false;
	Ext.get('rememberPassword').dom.checked = false;
	Ext.get('autologin').dom.checked = false;
	Ext.get('rememberMe').dom.checked = false;	
}

var autoLoginState = 0;
function startAutoLogin() {
	if (autoLoginState != 1) {
		return;
	}
	if (autoLogin == 'true' || (autoLogin != 'false' && loadAutologin() == true)) {
		autoLoginState = 2;
		signIn();
	}
}

function stopLogin() {
	autoLoginState = 0;
}


function signIn () {

	var userName = document.getElementById('edit-username').value;
	var password = document.getElementById('edit-password').value;

	var r0 = Ext.get('rememberUserName').dom.checked;
	var r1 = Ext.get('rememberPassword').dom.checked;
	var r2 = Ext.get('rememberMe').dom.checked;
	saveUserName(r0 ? userName : '');
	savePassword(r1 ? password : '');

	Class.forName('Ext.Ajax').request({
		url: $security.loginUrl,
		success: function (o) {
			var r = eval('(' + o.responseText + ')');
			if (r === true || r.success) {
				Class.forName('Ext.ux.TipBox').info('登录','您的身份认证通过，登录成功！<br/><span style="font-size:10px">进入系统 ...</span>', 1500);
				(function () {
					location.href = r.returnTo || r.savedUrl || $security.defaultTarget;
				}).defer(2000);
			} else {
				Class.forName('Ext.ux.TipBox').error('登录','您的身份认证失败！');
			}
		},
		failure: function () {
			Class.forName("Ext.ux.TipBox").error('登录', '系统故障，登录失败！', 3);
		},
		params: {j_username:userName,j_password:password,_spring_security_remember_me:r2}
	});

}

Ext.onReady(function () {

	Ext.get('rememberUserName').on('click', function () {
		var b = Ext.get('rememberUserName').dom.checked;
		saveRememberUserName(b);
		if (!b) {
			Ext.get('rememberPassword').dom.checked = false;
			saveRememberPassword(false);
			savePassword('');
			Ext.get('autologin').dom.checked = false;
			saveAutologin(false);
		}
	});

	Ext.get('rememberPassword').on('click', function () {
		var b = Ext.get('rememberPassword').dom.checked;
		saveRememberPassword(b);
		if (b) {
			Ext.get('rememberUserName').dom.checked = true;
			saveRememberUserName(true);
		} else {
			savePassword('');
			Ext.get('autologin').dom.checked = false;
			saveAutologin(false);			
		}
	});

	Ext.get('autologin').on('click', function () {
		var b = Ext.get('autologin').dom.checked;
		saveAutologin(b);
		if (b) {
			Ext.get('rememberUserName').dom.checked = b;
			saveRememberUserName(b);
			Ext.get('rememberPassword').dom.checked = b;
			saveRememberPassword(b);
		}
	});

	restoreInputData();

	if (autoLogin == 'true' || (autoLogin != 'false' && loadAutologin() == true)) {
		autoLoginState = 1;			
		Class.forName('Ext.ux.TipBox').info('自动登录', '2秒钟后将自动登录系统！&nbsp;<a href="#" onclick="stopLogin();return false;">取消</a>&nbsp;', 1.5);
		setTimeout(startAutoLogin, 2000);
	}

});

