// 登录窗口用函数 //CDMCS2005.CDMCS2005WEBCtrl

_import("cdmcs.Html.TextInput");
_import("cdmcs.Html.PictureButton");
_import("cdmcs.UI.MdiWindow");
MdiWindow.setSkin("default");

var pkibut;
var okbutton;
var quitbut;
var computerObject;
var userObj;

// 窗口初始化函数
function init(){
	//OCX:检查安装扩展
	var magUpdate = new CJSMagUpdate("../../../update/",false,false,false);	
	if(!magUpdate.CheckLocalEnv()) return;

	//OCX:检查本地登陆
	/*if (typeof islogoutClose == "undefined"){
		var OpersCtl = RMagOcxEnv.CreateEnvObj(1);
		if(OpersCtl != null && OpersCtl.CheckLogined() > 0)
		{
			alert("同一机器不能登录多个用户!");
			window.opener = null;
			window.close();
			return;
		}
	}*/

	//_import("cdmcs.common.PropertyPrinter");
	//PropertyPrinter.print(oRootOcx);
	
	var loginname = "";
	// 状态栏显示文字
	setWinDefaultStatus(window, "成都市建设管理委员会综合办公应用系统");
	
	// 注册登录名输入框按键事件
	TextInput.applyAll();
	var loginobj = document.getElementById("loginname");
	loginobj.value = "";
	loginobj.focus();
	loginobj.onkeyup = LoginNameKeyUp;
	loginobj.onEnterKey = LoginNameEnterKey;
	loginobj.onESCKey = LoginNameESCKey;
	
	// 注册口令输入框按键事件
	var pwdObj = document.getElementById("password");
	pwdObj.value = "";
	pwdObj.disabled = true;
	pwdObj.className = "smallInputdisable";
	pwdObj.onkeyup = PwdNameKeyUp;
	pwdObj.onEnterKey = PwdNameEnterKey;
	pwdObj.onESCKey = PwdNameESCKey;
	
	// 注册PKI登录按钮事件
	//pkibut = document.getElementById("pkibut");
	//PictureButton.applyTo(pkibut);
	//pkibut.onclick = PKIButClicked;
	
	// 注册登录按钮事件
	okbutton = document.getElementById("okbut");
	PictureButton.applyTo(okbutton);
	okbutton.setEnable(false);
	okbutton.onclick = OkButClicked;
	
	// 注册退出按钮事件
	quitbut = document.getElementById("quitbut");
	PictureButton.applyTo(quitbut);
	quitbut.onclick = QuitButClicked;
	
    // 取得上次登录用户名
	loginname = getValueFromCookies("CQJGJPLATE_LOGINNAME")
	if(loginname != "" && loginname != null || loginname.length > 0 ){
		// 取得上次登录人
		loginobj.value = loginname;
		pwdObj.value = "";
   	    pwdObj.disabled = false;
		pwdObj.className = "smallInput";
		pwdObj.focus();
	}

}


// 登录名输入框按键事件
function LoginNameKeyUp(evt){
	var loginObj = this;
	var pwdObj = document.getElementById("password");
	var loginvalue = loginObj.value;
	pwdObj.value = "";
	if(loginvalue.length < 3 ){
		pwdObj.disabled = true;
		pwdObj.className = "smallInputdisable";
	}else{
		pwdObj.disabled = false;
		pwdObj.className = "smallInput";
	}
	// 登录按键无效
	okbutton.setEnable(false);
}

// 登录名输入框回车按键事件
function LoginNameEnterKey(evt){
	var Obj = evt.srcElement;
	var value = Obj.value;
	// 如果输入长度不足三位则不允许跳转
	if(value.length < 3){
		return;
	}
	// 将输入焦点置于口令上
	var pwdObj = document.getElementById("password");
	pwdObj.focus();
}

// 登录名输入框ESC按键事件
function LoginNameESCKey(evt){
	var Obj = evt.srcElement;
	Obj.value = "";
}

// 口令输入框按键事件
function PwdNameKeyUp(evt){
	var pwdObj = this;
	var okbut = document.getElementById("okbut");
	var pwdvalue = pwdObj.value;
	if(pwdvalue.length < 4){
		// 登录按键无效
		okbutton.setEnable(false);
	}else{
		// 登录按键有效
		okbutton.setEnable(true);
	}
	
}

// 口令输入框回车按键事件
function PwdNameEnterKey(evt){
	var Obj = evt.srcElement;
	var value = Obj.value;
	if(value.length < 4){
		return;
	}
	// 执行登录交验
	if(!CheckLogin("0", "")){
		return;
	}
}

// 口令输入框ESC按键事件
function PwdNameESCKey(evt){
	var Obj = evt.srcElement;
	Obj.value = "";
}



// PKI按钮鼠标事件
function PKIButClicked(evt){

	// 判断USBKEY是否插上
	var oSecurityCtl = RMagOcxEnv.CreateEnvObj(3);
	var ret = oSecurityCtl.CheckCert(2, "CQCA");
	if(!ret){
		showMessage("没有专用PKI连接到计算机上!", "0");
		return;
	}
	// 取得取USBKEY信息的Servlet地址
	var AjaxProxy1 = new AjaxProxy();
	AjaxProxy1.addParm("1"	, '08');
	AjaxProxy1.invoke("PT_PUBLIC.PF_GET_SYSTEM_PARAM", false);
	var url = AjaxProxy1.getString("PC_SYSPARAM");
	if (url == null || url == ""){
		showMessage("系统没有配置取PKI信息的地址参数!");
		return;
	}

	var script=document.createElement("script");
	script.src= url + "?function=pkilogin";
	document.body.appendChild(script);

}

function pkilogin(flag, pkinum, xm, sfzhm, msg){
	if (flag == "1"){
		showMessage(msg);
		return;
	}
	CheckLogin("1", pkinum);
}

// 注册按钮鼠标事件
function OkButClicked(evt){
	CheckLogin("0", "");
}

// 退出按钮鼠标事件
function QuitButClicked(evt){
	// 退出系统
	window.close();
}

//===============================================================================

// 执行登录函数
function CheckLogin(loginmode, pkinum){

    // 交验是否登录多个用户
	if (typeof islogoutClose == "undefined"){
		var OpersCtl = RMagOcxEnv.CreateEnvObj(1);
		if(OpersCtl != null && OpersCtl.CheckLogined() > 0)
		{
			alert("同一机器不能登录多个用户!");
			window.opener = null;
			window.close();
			return;
		}
	}

	$("loginname").disabled = true;
	$("password").disabled = true;
	//pkibut.setEnable(false);
	okbutton.setEnable(false);
	quitbut.setEnable(false);

	// 取得用户名及口令
	var loginobj = document.getElementById("loginname");
	var pwdObj = document.getElementById("password");

	if(loginmode == "0"){
		var loginname = loginobj.value;
		var password = pwdObj.value;

		// 判断输入是否有效
		if(loginname == null || loginname.length < 3){
			alert("输入的登录用户名无效!");
			pwdObj.value = "";
			pwdObj.disabled = true;
			pwdObj.className = "smallInputdisable";
			//pkibut.setEnable(true);
			okbutton.setEnable(false);
			quitbut.setEnable(true);
			$("loginname").value = "";
			$("loginname").disabled = false;
			$("password").value = "";
			$("password").disabled = true;
			loginobj.focus();
			return;
		}
		if(password == null || password.length < 3){
			alert("输入的登录用户登录口令无效!");
			pwdObj.value = "";
			pwdObj.disabled = true;
			pwdObj.className = "smallInput";
			//pkibut.setEnable(true);
			okbutton.setEnable(false);
			quitbut.setEnable(true);
			$("loginname").disabled = false;
			$("password").disabled = false;
			pwdObj.focus();
			return;
		}
	}else{
		loginname = "";
		password = "";
	}

	// 取得登录设备信息
	computerObject = new persionComputer();
	if (computerObject.HaveInfo == '0')
	{
		//showMessage("你的设备未安装专用控件, 请下载控件安装程序||安装好控件后再使用本系统!", '0');
		showMessage(computerObject.ErrMsg, '0');
		pwdObj.value = "";
		pwdObj.disabled = false;
		pwdObj.className = "smallInput";
		//pkibut.setEnable(true);
		okbutton.setEnable(false);
		quitbut.setEnable(true);
		$("loginname").disabled = false;
		$("password").disabled = false;
		pwdObj.focus();
		return;
	}

    // 交验用户登录, 并取得用户信息
	userObj = new operateUser();
	if(!userObj.userLogin(loginmode, loginname, password, 
		                  computerObject.MACID, computerObject.IPAddress,
		                  computerObject.PCName, computerObject.CPUID,
		                  computerObject.ProtocolName, computerObject.LogDrvName, pkinum)){
		if(!userObj.userLogin(loginmode, loginname.toUpperCase(), password, 
							  computerObject.MACID, computerObject.IPAddress,
							  computerObject.PCName, computerObject.CPUID,
							  computerObject.ProtocolName, computerObject.LogDrvName, pkinum)){
			// 显示错误信息
			showMessage(userObj.C_MSG, '0');
			if(userObj.N_RET == "1"){
				// 清除用户信息
				loginobj.value = "";
				pwdObj.value = "";
				pwdObj.disabled = true;
				pwdObj.className = "smallInputdisable";
				//pkibut.setEnable(true);
				okbutton.setEnable(false);
				quitbut.setEnable(true);
				$("loginname").disabled = false;
				$("password").disabled = true;
				loginobj.focus();
				return;
			}
			if(userObj.N_RET == "2"){
				// 清除口令信息
				pwdObj.value = "";
				pwdObj.disabled = false;
				pwdObj.className = "smallInput";
				//pkibut.setEnable(true);
				okbutton.setEnable(false);
				quitbut.setEnable(true);
				$("loginname").disabled = false;
				$("password").disabled = false;
				pwdObj.focus();
				return;
			}
			return;
		}
	}

	// 登录成功, 判断是否需要进行计算机注册
	if(userObj.C_CHECKSB == "1"){
		flag = userObj.N_JYSBRET * 1;
		if (flag != 0)
		{
			var computerChgInfo = "";
			if(flag == 1 || flag == 2){
				 // 1 - 未注册 2 - 已注册但信息发生变化
				 // 显示错误信息
				 var dispErrMsg = userObj.C_JYSBXX;
				 if (flag == 1){
					 dispErrMsg = dispErrMsg + '||是否现在申请注册(Y/N)?'
					 computerChgInfo = "第一次注册";
				 }else{
					 computerChgInfo = dispErrMsg + "变化";
					 dispErrMsg = '你使用的计算机硬件信息发生变化, 变化内容为: ||' + computerChgInfo + '。||是否现在重新申请注册(Y/N)?'
				 }
  		         if(!showMessage(dispErrMsg, '1')){
					 // 清除口令信息
					 pwdObj.value = "";
					 pwdObj.disabled = false;
					 pwdObj.className = "smallInput";
					 //pkibut.setEnable(true);
					 okbutton.setEnable(false);
					 quitbut.setEnable(true);
					 $("loginname").disabled = false;
					 $("password").disabled = false;
					 pwdObj.focus();
					 return;
				 }
				 // 打开计算机注册申请页面
				 var computerRegWin = new MdiWindow(400,310,100,100,true);
				 //p2.setIcon('../');
				 computerRegWin.setTitle("计算机注册");
				 computerRegWin.setDialogArguments(
					{
						userobj:userObj,
						pcinfo:computerObject,
						zcyy:computerChgInfo
					}
				 );
				 computerRegWin.load("../../../login/registerComputer.html");
				 computerRegWin.setMadalLayerBackground("#000", 20);
				 computerRegWin.showBtnMin();
				 computerRegWin.showBtnMax();
				 computerRegWin.btnMax.hide();
				 computerRegWin.btnMin.hide();
				 computerRegWin.btnClose.hide();
				 computerRegWin.moveToCenter();
				 computerRegWin.onClose=computerRegWinClose;
				 return;
			}else{
				// 3 - 禁止入网 4 - 过程发生错误 9 - 正在审核
				var dispErrMsg = userObj.C_JYSBXX;
				showMessage(dispErrMsg, '0');
				// 清除口令信息
				pwdObj.value = "";
				pwdObj.disabled = false;
				pwdObj.className = "smallInput";
				//pkibut.setEnable(true);
			    okbutton.setEnable(false);
				quitbut.setEnable(true);
				$("loginname").disabled = false;
				$("password").disabled = false;
				pwdObj.focus();
				return;
			}
		}

	}

    // 登录成功
	// 1. 写入操作员在线信息
	if(!userObj.userInsertOnLine("", "")){
		// 清除口令信息
		pwdObj.value = "";
		pwdObj.disabled = false;
		pwdObj.className = "smallInput";
		//pkibut.setEnable(true);
		okbutton.setEnable(false);
		quitbut.setEnable(true);
		$("loginname").disabled = false;
		$("password").disabled = false;
		pwdObj.focus();
		return;
	}
	// 2. 将用户信息保存至SESSION和APPLICATION中
	if(!userObj.saveUserToSessionAppliation()){
		// 清除口令信息
		pwdObj.value = "";
		pwdObj.disabled = false;
		pwdObj.className = "smallInput";
		//pkibut.setEnable(true);
		okbutton.setEnable(false);
		quitbut.setEnable(true);
		$("loginname").disabled = false;
		$("password").disabled = false;
		pwdObj.focus();
		return;
	}
	// 3. 保存登录名至COOKIES中
	if (loginmode == '0'){
		saveValueToCookies("CQJGJPLATE_LOGINNAME", loginname, 3);
	}

	// 4. 检查公用控件是否需要升级
	var magUpdate = new CJSMagUpdate("../../../update/",AjaxProxy,userObj,false); //更新公用控件
	var flag = magUpdate.CheckModule("000000")
	if(0 != flag){
		if(1 == flag)
		{
			alert("公用控件已更新，请重新登陆!");
			window.opener = null;
			window.close();
		}
		return; 
	}

	// 5. 打开主页面
	var win;
	if(userObj.C_XSIETOOLS == '1'){
		win = window.open("../main/index.html");
	}else{
		var openparm = "status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight;
		win = window.open("../main/index.html", "", openparm);
	}
	if(!win){
		showMessage("弹出式窗口被禁用, 请设置你的浏览器!", '0');
		pwdObj.value = "";
		pwdObj.disabled = false;
		pwdObj.className = "smallInput";
		//pkibut.setEnable(true);
		okbutton.setEnable(false);
		quitbut.setEnable(true);
		$("loginname").disabled = false;
		$("password").disabled = false;
		pwdObj.focus();
		return;
	}

	win.userObj = userObj;
	win.computerObj = computerObject;
	win.loginWindow = window;
	try{
		window.opener=null;
		window.open("","_self");
	}catch(er){};
}


//==========================================
// 计算机注册窗口关闭事件回调函数
//==========================================
function computerRegWinClose(retValue){
	// 清除口令信息
	this.hide();
	var pwdObj = document.getElementById("password");
	pwdObj.value = "";
	pwdObj.disabled = false;
	pwdObj.className = "smallInput";
	//pkibut.setEnable(true);
	okbutton.setEnable(false);
	quitbut.setEnable(true);
	$("loginname").disabled = false;
	$("password").disabled = false;

	setTimeout(function(){
		pwdObj.focus();
		pwdObj=void(0);
	},0);

	return;
}
