var g_aDoorsWeekData = null;
function ListDoorsWeekSchedual(callBackMethod)
{
	if(callBackMethod != undefined)
		g_callBackObjs = callBackMethod;
	startProcess();
	g_sn = 0;
	g_aDoorsWeekData = new Array();

	var ret = _externalListDoorWeek('OnDoorsWeekItem');
	eval ('var err = ' + ret);
	//err.nCode 错误码。大于等于0时表示无错误szMsg成员无效。小于0时表示出错。
	//err.szMsg 当出错时该成员才有效，包含错误的文本信息。
	if (err.nCode >= 0)
	{
		//此处应禁用所有按钮，只允许取消按钮可以操作		
		return 0;
	}
	showToast(err.szMsg,DIALOG_MASK_TIP_MODE,2);
	g_callBackObjs = null;
}
//回调函数，每得到一条设备信息被调用一次
function OnDoorsWeekItem(szItem)
{
	eval('var item = ' + szItem);
	
	if (item.nCode == 1)//列表线程已启动
	{
		return;
	}
	else if (item.nCode == 2)
	{
		if(g_callBackObjs != null)
		{
			cancelProcess();
			setTimeout(function(){
				eval(g_callBackObjs);
				g_callBackObjs = null;
			},100);
		}
		
		return;
	}
	else if (item.nCode < 0)
	{
		showToast(item.szMsg,DIALOG_MASK_TIP_MODE,2);//同时也表示操作错误完成
		cancelProcess();
		g_callBackObjs = null;
		return;
	}
	else if (item.nCode == 0)
	{
		/*nID:       门ID、设备ID
szName：   门名
szCtrlName:控制器名
dwFlag:
  0位置位表示通道启用假日计划,1位置位表示通道启用通行周计划。
dwWXSegY的名称说明：
  名称中的X取值0到6：值为0表示周日，值为1表周一...。
  名称中的Y取值为1到3：值为1表示第一段起止时间，值为2表示第二段起止时间。
dwWXSegY值的说明：
整数值的由低位到高位表示HHMMHHMM,HH为小时,MM为分钟,前面的HHMM表示起始时间。即最低8位表示起始小时，次低8位表示起始分钟。可能有误，请参照高级模式。
*/
		g_aDoorsWeekData.push(item);	
		return;
	}
	else
	{
		alert("不应该到达此处，说明VC源代码有错误。");
	}
	
	g_callBackObjs = null;
}
function setdwMaskByDoors(aDoors)
{
	var dwMask = 0;
	for(var i = 0; i < aDoors.length; i++)
	{
		//console.log(dwMask + " |= " + (0x01<<aDoors[i].nID));
		dwMask |= (0x01<<aDoors[i].nID);
	}
	return dwMask;
}
function getNewDoorMaskByEmp(item,aDoors)
{
	var obj = new Object();
	obj.dwDoorMask = item.DoorMask;
	//console.log("1--szName="+item.szName+",,DoorMask = "+obj.dwDoorMask + "aDoors.length="+aDoors.length);
	obj.dwMask = 0;
	
	for(var i = 0; i < aDoors.length; i++)
	{
		if(item.checked)
		{//console.log("20--In For : " + obj.dwDoorMask +" |= (0x01<<"+aDoors[i].nID+"),, resDoorMask =" + (obj.dwDoorMask | (0x01<<aDoors[i].nID)));
			obj.dwDoorMask |= (0x01<<aDoors[i].nID);
			var initSeletedStatus = (((item.DoorMask)>>aDoors[i].nID) & 0x01);
			//console.log("1--"+((item.DoorMask)>>aDoors[i].nID) +'& 0x01 =' + initSeletedStatus);
			if(initSeletedStatus)
			{
				
			}
			else
			{
				obj.dwMask |= (0x01<<aDoors[i].nID);
			}
		}
		else
		{//console.log("21--In For : " + obj.dwDoorMask +" &= (~(0x01<<"+aDoors[i].nID+"))==> "+ obj.dwDoorMask +" &= " + (~(0x01<<aDoors[i].nID))+"==>(~"+(0x01<<aDoors[i].nID)+"),,, resDoorMask =" + (obj.dwDoorMask & (~(0x01<<aDoors[i].nID))));
			obj.dwDoorMask &= (~(0x01<<aDoors[i].nID));
			var initSeletedStatus = (((item.DoorMask)>>aDoors[i].nID) & 0x01);
			//console.log("2--"+((item.DoorMask)>>aDoors[i].nID) +'& 0x01 =' + initSeletedStatus);
			if(initSeletedStatus)
				obj.dwMask |= (0x01<<aDoors[i].nID);
			//console.log("obj.dwMask=" + obj.dwMask +"，item.DoorMask="+item.DoorMask+",obj.dwDoorMask="+obj.dwDoorMask+",item.DoorMask="+item.DoorMask +",取反："+(~(0x01<<aDoors[i].nID))+",move:"+(0x01<<aDoors[i].nID));
		}
	}
	//console.log("3-szName="+item.szName+"dwMask = " + obj.dwMask + ", nID = " + item.nID + ", dwDoorMask = " + obj.dwDoorMask);
	return obj;
}
//授权
function setEmpGroupsByDoors(aDoors,item)
{
	//var dwMask = setdwMaskByDoors(aDoors);
	var obj = getNewDoorMaskByEmp(item,aDoors);
	if(!obj.dwMask)
	{
		setAbtnStatus(document.getElementById("submitCer"),true);
		setTimeout(function(){removeControlById(STATUS_POP_WIN_DEFAULT_ID);delaySetMask();},2000);
		return;
	}
	g_isHasCallbackError = false;
	g_item = new Object();
	item.DoorMask = obj.dwDoorMask;
	item.dwMask = obj.dwMask;
	g_item.emp = item;
	g_item.doors = aDoors;
	/*
	dwMask:     门授权属性修改掩码。如果更改了dwDoorMask的某一位，则dwMask的相应位必须置1。未修改必须置0
	nID:        人员ID
	dwDoorMask: 每一位表示此人对某个门是否有授权。第0位(最低位）置位表示此人授权可开0（门ID)号门。第X位(最低位）置位表示此人授权可开X（门ID)号门。
	*/
	//alert("dwMask = " + item.dwMask + ", dwDoorMask = " + item.dwDoorMask + ", nID = " + item.nID);
	//obj.dwMask = 1;
	//obj.dwDoorMask = 1;alert("dwMask = " + obj.dwMask + ", dwDoorMask = " + obj.dwDoorMask + ", nID = " + item.nID);
	//console.log("4--setEmpGroupsByDoors szName="+item.szName+"dwMask = " + obj.dwMask + ", nID = " + item.nID + ", dwDoorMask = " + obj.dwDoorMask);
	var ret = _externalModifyEmpDoor("OnSetEmpGroupsItem", item.dwMask,item.nID, item.DoorMask);
	eval ('var err = ' + ret);
	//err.nCode 错误码。大于等于0时表示无错误szMsg成员无效。小于0时表示出错。
	//err.szMsg 当出错时该成员才有效，包含错误的文本信息。
	if (err.nCode >= 0)
	{
		//此处应禁用所有按钮，只允许取消按钮可以操作		
		return 0;
	}
	showToast(err.szMsg,DIALOG_MASK_TIP_MODE,2);
	g_callBackObjs = null;
}
//回调函数，每得到一条设备信息被调用一次
function OnSetEmpGroupsItem(szItem)
{
	eval('var item = ' + szItem);
	if (item.nCode >= 0)	
	{		
		var setGroupTips = getLanTextByKey("T_SET_GROUP_TIPS").split("%1");		
		var cancelGroupTips = getLanTextByKey("T_CANCEL_GROUP_TIPS").split("%1");
		var oJson = {"mode":(((g_item.emp).checked)?LOG_SUCCESS_TIPS:LOG_CANCEL_TIPS),"msg":(((g_item.emp).checked)?"<div style='color:black;'>"+setGroupTips[0]:"<div style='color:blue;'>"+cancelGroupTips[0]) + "<span style='color:"+(((g_item.emp).checked)?"blue":"red")+";'>" + (g_item.emp).szName + "</span>"+(((g_item.emp).checked)?setGroupTips[1]:cancelGroupTips[1])+"</div>"};
		insertStatusTabItem(STATUS_LIST_DEFAULT_ID,oJson);	
		setUIModifyData(g_item.emp);
		if(g_aSelectedEmps.length > 0)
		{
			var emp = g_aSelectedEmps.pop();
			setTimeout(function(){setEmpGroupsByDoors(g_aSelectedDoors,emp);},20);
		}
		else
		{//g_GroupsDoorsStr		
			var completeGroupTips = getLanTextByKey("T_COMPLETE_GROUP_TIPS").split("%1");
			var tips = getLanTextByKey("T_COMPLETE_SET_GROUPS_TO_EMP_TIPS").replace("%1","<span style='color:blue;'>"+g_GroupsDoorsStr + "</span> ");
			var oJson = {"mode":LOG_NORMAL_TIPS,"msg":tips};
			insertStatusTabItem(STATUS_LIST_DEFAULT_ID,oJson);	
			setAbtnStatus(document.getElementById("submitCer"),true);
			setTimeout(function(){removeControlById(STATUS_POP_WIN_DEFAULT_ID);delaySetMask();},2000);
		}
		return;
	}
	else if (item.nCode < 0)
	{
		insertStatusTabItem(STATUS_LIST_DEFAULT_ID,{"mode":LOG_ERROR_TIPS,"msg":item.szMsg});
		g_isHasCallbackError = true;
	}
	else if (item.nCode == 0)
		return;
	else
		alert("不应该到达此处，说明VC源代码有错误。");	
	if(!g_isHasCallbackError)
		setTimeout(function(){removeControlById(STATUS_POP_WIN_DEFAULT_ID);delaySetMask();},1000);
	else
		displayWinCloseIcon(true,STATUS_POP_WIN_DEFAULT_ID)
}
//周计划
function modifyDoorWeek()
{	
	/*nID:    门ID
dwFlag: 与门周计划list方法获得dwFlag相同，请参考上面的说明。
dwMask: 属性修改掩码
修改属性时对应的掩码：
enum WEEK_INDEX
{//因为修改modifyMask的第0位保留给新增一行数据，所以0号索引不能使用
    WEEK_IDX_ENABLE_HOLIDAY = 1,//启用禁止通行假日计划标志修改
    WEEK_IDX_ENABLE_WEEK = 2,//启用可通行周计划标志修改
    WEEK_IDX_WEEK_DATA = 3,//周计划数据（任一周数据修改统一使用一个掩码）
};	*/	
	if((g_item.obj).length >0)
		g_item.item = (g_item.obj).pop();
	else
		return;	
	g_isHasCallbackError = false;
	
	/*	alert(
			"OnModifyDoorWeek,dwMask = "+ g_item.dwMask+",nID = "+(g_item.item).nID+",dwFlag = "+g_item.dwFlag+",\r\n"+ 
																		g_item.dwW0Seg1+","+ g_item.dwW0Seg2+","+ g_item.dwW0Seg3+",\r\n"+
																		g_item.dwW1Seg1+","+ g_item.dwW1Seg2+","+ g_item.dwW1Seg3+",\r\n"+
																		g_item.dwW2Seg1+","+g_item.dwW2Seg2+","+ g_item.dwW2Seg3+",\r\n"+
																		g_item.dwW3Seg1+","+ g_item.dwW3Seg2+","+ g_item.dwW3Seg3+",\r\n"+
																		g_item.dwW4Seg1+","+ g_item.dwW4Seg2+","+ g_item.dwW4Seg3+",\r\n"+
																		g_item.dwW5Seg1+","+ g_item.dwW5Seg2+","+ g_item.dwW5Seg3+",\r\n"+
																		g_item.dwW6Seg1+","+ g_item.dwW6Seg2+","+ g_item.dwW6Seg3
	);*/
	var ret = _externalModifyDoorWeek("OnModifyDoorWeek", g_item.dwMask, (g_item.item).nID,g_item.dwFlag, 
																		g_item.dwW0Seg1, g_item.dwW0Seg2, g_item.dwW0Seg3,
																		g_item.dwW1Seg1, g_item.dwW1Seg2, g_item.dwW1Seg3,
																		g_item.dwW2Seg1, g_item.dwW2Seg2, g_item.dwW2Seg3,
																		g_item.dwW3Seg1, g_item.dwW3Seg2, g_item.dwW3Seg3,
																		g_item.dwW4Seg1, g_item.dwW4Seg2, g_item.dwW4Seg3,
																		g_item.dwW5Seg1, g_item.dwW5Seg2, g_item.dwW5Seg3,
																		g_item.dwW6Seg1, g_item.dwW6Seg2, g_item.dwW6Seg3
																		);
	eval ('var err = ' + ret);
	//err.nCode 错误码。大于等于0时表示无错误szMsg成员无效。小于0时表示出错。
	//err.szMsg 当出错时该成员才有效，包含错误的文本信息。
	if (err.nCode >= 0)
	{
		//此处应禁用所有按钮，只允许取消按钮可以操作		
		return 0;
	}
	//showToast(err.szMsg,DIALOG_MASK_TIP_MODE,2);
	var oJson = {"mode":LOG_ERROR_TIPS,"msg":err.szMsg};
	insertStatusTabItem(STATUS_LIST_DEFAULT_ID,oJson);
	g_callBackObjs = null;
}
//回调函数，每得到一条设备信息被调用一次
function OnModifyDoorWeek(szItem)
{
	eval('var item = ' + szItem);
	
	if (item.nCode >= 0)	
	{	
		var aStr = getLanTextByKey("T_SET_WEEK_SCHEDUAL_TO_DEVICE_TIPS").split("%1");
		
		var oJson = {"mode":LOG_SUCCESS_TIPS,"msg":"<span style='color:#000;'>"+ aStr[0] +"</span>"+(g_item.item).szName+"<span style='color:#000;'>"+ aStr[1] +"</span>"};
		insertStatusTabItem(STATUS_LIST_DEFAULT_ID,oJson);
		callBackModifyGlobalItem(g_item);
		if((g_item.obj).length >0)
			modifyDoorWeek();
		else
			setTimeout(function(){is_saveWeekSchedual = false;removeControlById(STATUS_POP_WIN_DEFAULT_ID);delaySetMask();},2000);
		return;
	}
	else (item.nCode < 0)	
	{
		var oJson = {"mode":LOG_ERROR_TIPS,"msg":item.szMsg};
		insertStatusTabItem(STATUS_LIST_DEFAULT_ID,oJson);
		g_isHasCallbackError = true;
	}
	if(!g_isHasCallbackError)
		setTimeout(function(){removeControlById(STATUS_POP_WIN_DEFAULT_ID);delaySetMask();},1000);
	else
		displayWinCloseIcon(true,STATUS_POP_WIN_DEFAULT_ID)
}
//获取假日计划
var g_aHolidaySchedualData = null;
function LisHolidaySchedual(callBackMethod)
{
	if(callBackMethod != undefined)
		g_callBackObjs = callBackMethod;
	startProcess();
	g_aHolidaySchedualData = null;
	var ret = _externalGetHoliday('OnHolidayItem');
	eval ('var err = ' + ret);
	//err.nCode 错误码。大于等于0时表示无错误szMsg成员无效。小于0时表示出错。
	//err.szMsg 当出错时该成员才有效，包含错误的文本信息。
	if (err.nCode >= 0)
	{
		//此处应禁用所有按钮，只允许取消按钮可以操作		
		return 0;
	}
	showToast(err.szMsg,DIALOG_MASK_TIP_MODE,2);
	g_callBackObjs = null;
}
//回调函数，每得到一条设备信息被调用一次
function OnHolidayItem(szItem)
{
	eval('var item = ' + szItem);
	
	if (item.nCode == 1)//列表线程已启动
	{
		return;
	}
	else if (item.nCode == 2)
	{
		if(g_callBackObjs != null)
		{
			cancelProcess();
			setTimeout(function(){
				eval(g_callBackObjs);
				g_callBackObjs = null;
			},100);
		}
		
		return;
	}
	else if (item.nCode < 0)
	{
		showToast(item.szMsg,DIALOG_MASK_TIP_MODE,2);//同时也表示操作错误完成
		cancelProcess();
		g_callBackObjs = null;
		return;
	}
	else if (item.nCode == 0)
	{
		/*
		{nCode:0,dwDate0:%d,dwDate1:%d,dwDate2:%d,dwData3:%d,")
        _T("dwDate4:%d,dwDate5:%d,dwDate6:%d,dwData7:%d,")
        _T("dwDate8:%d,dwDate9:%d,dwDate10:%d,dwData11:%d,")
        _T("dwDate12:%d,dwDate13:%d,dwDate14:%d,dwData15:%d}
dwDataX的格式：一个数据包含两个假日。DDMMDDMM 每两个字节表示一个假日。最低8位表示日，次低8位表示月。
出错{nCode:Y，szMsg:%s}。Y小于0表示错误码。
		*/
		g_aHolidaySchedualData = item;	
		if(g_callBackObjs != null)
		{
			cancelProcess();
			setTimeout(function(){
				eval(g_callBackObjs);
				g_callBackObjs = null;
			},100);
		}
		return;
	}
	else
	{
		alert("不应该到达此处，说明VC源代码有错误。");
	}
	
	g_callBackObjs = null;
}
//假日计划
function modifyDoorHoliday(item)
{
	
	/*{nCode:0,dwDate0:%d,dwDate1:%d,dwDate2:%d,dwData3:%d,")
        _T("dwDate4:%d,dwDate5:%d,dwDate6:%d,dwData7:%d,")
        _T("dwDate8:%d,dwDate9:%d,dwDate10:%d,dwData11:%d,")
        _T("dwDate12:%d,dwDate13:%d,dwDate14:%d,dwData15:%d}
dwDataX的格式：一个数据包含两个假日。DDMMDDMM 每两个字节表示一个假日。最低8位表示日，次低8位表示月。
	*/
	var str = "";
	for(var i = 0; i < 16; i++)
	{
		str += 	("item.dwData" + i + " = ") + item["dwData" + i] + "\r\n";
	}
	//alert(str);
	startProcess(4,null);
	var ret = _externalModifyHoliday("OnModifyDoorHoliday", item.dwData0,item.dwData1,item.dwData2,
																		item.dwData3,item.dwData4,item.dwData5,item.dwData6,item.dwData7,item.dwData8,
																		item.dwData9,item.dwData10,item.dwData11,item.dwData12,item.dwData13,item.dwData14,
																		item.dwData15);
	eval ('var err = ' + ret);
	//err.nCode 错误码。大于等于0时表示无错误szMsg成员无效。小于0时表示出错。
	//err.szMsg 当出错时该成员才有效，包含错误的文本信息。
	if (err.nCode >= 0)
	{
		//此处应禁用所有按钮，只允许取消按钮可以操作		
		return 0;
	}
	showToast(err.szMsg,DIALOG_MASK_TIP_MODE,2);
	
	g_callBackObjs = null;
}
//回调函数，每得到一条设备信息被调用一次
function OnModifyDoorHoliday(szItem)
{
	eval('var item = ' + szItem);
	
	if (item.nCode >= 0)	
	{		
		//showToast("ok",DIALOG_MASK_TIP_MODE,2);
		//cancelProcess(null,4);
		removePopTabWin(POP_TAB);
		return;
	}
	else
	{
		alert("不应该到达此处，说明VC源代码有错误。");
	}
	
}
