<%@page contentType="text/html; charset=UTF-8"%>
<%@page import="com.csc.library.entry.HelpEntry,com.csc.library.system.*,com.csc.library.utilities.*,com.csc.library.formula.*"%>
<%@page import="com.csc.library.entry.*,com.csc.library.database.*,com.csc.library.session.*"  %>
<%@page import="java.util.HashMap" %>

<jsp:useBean id="TAU_LEAVEAVL" class="com.csc.library.system.Task" scope="page"/>
<%
	TAU_LEAVEAVL.setChannel(request,response);
	HelpEntry screen = (HelpEntry) TAU_LEAVEAVL.process("HelpEntry","LEAVEAVL");
	screen.setMaxLine(100);

	ThaiUtilities thaicode = new ThaiUtilities();
	CheckNull chkNull = new CheckNull();

	String empid = chkNull.chkNullString(request.getParameter("__employeeid"),screen.getUProfile().get("employeeid"));
	String bchid = chkNull.chkNullString(request.getParameter("__branchid"));

	String lvdefault = chkNull.chkNullString(request.getParameter("__lvdefault"));
	String selectevent = chkNull.chkNullString(request.getParameter("__selectevent"));
	String saveevent = chkNull.chkNullString(request.getParameter("__saveevent"));
	String chkstatus = chkNull.chkNullString(request.getParameter("__chkstatus"));

	/* read main eventgrp */
	screen.getInquiry().setFilter("daytype != '1' and daytype != '5' and daytype != '6' and daytype != '9' and daytype != '4'");
	screen.getInquiry().setOrderBy("display_order, eventgrpid");
    screen.process();
	screen.nextRec();

	/* leave by branch */
	HashMap hmLvDefault = new HashMap();
	DbInquiry mev1 = new InitialInquiry(screen.getUProfile()).getDbInquiry("Meventgrp1");
	mev1.setColumn("eventgrpid,companyid");
	mev1.setFilter("branchid = '" + bchid + "'");
	mev1.refresh();

	while(mev1.next()){
		hmLvDefault.put(mev1.getString("eventgrpid"), "");
	}

	/* save user define eventgrp */
	if(saveevent.equals("save")){
		//System.out.print("!! checked --> " + chkstatus);
		if(chkstatus.equals("1")){
			if(hmLvDefault.containsKey(selectevent)){
				delDefineLeave(empid, selectevent, screen.getUProfile());
			}else{
				saveDefineLeave(empid, selectevent, lvdefault, chkstatus, screen.getUProfile());
			}
		}else{
			if(hmLvDefault.containsKey(selectevent)){
				saveDefineLeave(empid, selectevent, lvdefault, chkstatus, screen.getUProfile());
			}else{
				delDefineLeave(empid, selectevent, screen.getUProfile());
			}
		}
	}

	/* leave by user define */
	HashMap hmLvUser = new HashMap();	/* keep all */
	HashMap hmLvDisDefine = new HashMap();	/* keep only event_status = '0' (disable) */

	DbInquiry mev2 = new InitialInquiry(screen.getUProfile()).getDbInquiry("Meventgrp2");
	mev2.setColumn("eventgrpid,companyid,employeeid,event_status");
	mev2.setFilter("employeeid = '" + empid + "'");
	mev2.refresh();

	while(mev2.next()){
		if(mev2.getString("event_status").equals("1")){
			hmLvUser.put(mev2.getString("eventgrpid"), "");
		}else{
			hmLvDisDefine.put(mev2.getString("eventgrpid"), "");
		}
	}

	//out.print("default " + hmLvDefault);
	//out.print("define " + hmLvUser);
	//out.print("disable " + hmLvDisDefine);

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html ng-app="myHR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../CSS/TISCO.css" rel="stylesheet" type="text/css">
<script type='text/javascript' src='../JS/SCREEN.js'></script>
<script language='javascript'>setLang('<%=screen.getUProfile().get("lang")%>');</script>
<script language="javascript">getTitleName();</script>
<script type='text/javascript' src="../JS/VIEWCALENDAR.js"></script>
<script type='text/javascript' src='../JS/DATEINPUT.js'></script>

<script TYPE='text/JavaScript' src="../TA/JS/jquery.js"></script>
<SCRIPT TYPE='text/JavaScript' SRC='../TA/JS/jquery.blockUI.js'></SCRIPT>

<script src="../JS/angular-1.3.15/angular.js" type="text/javascript"></script>
<script src="../JS/ANGULAR/SCREEN_ANGULAR.js" type="text/javascript"></script>

<script type='text/javascript' src='/hr/dwr/engine.js'></script>
<script type='text/javascript' src='/hr/dwr/util.js'></script>
<script type="text/javascript" src="/hr/dwr/interface/Time0transaction_dwr.js"></script>
<style type="text/css">
		.popup{
			border-radius: 7px;
			background:#FFFFFF;
			margin:30px auto 0;
			padding:6px;  
			position:absolute;
			width:300px;
			top: 50%;
			left: 50%;
			margin-left: -150px; 
			margin-top: 100px; 

			opacity: 0.9;
			filter: alpha(opacity=60); /* For IE8 and earlier */
		}

</style>
<script language="javascript">
<!--
	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}

	function saveEvent(obj){
		with(document.cscform){
			__lvdefault.value = obj.getAttribute("lvdefault") ;
			__selectevent.value = obj.value ;
			__saveevent.value = "save" ;

			if(obj.checked){
				__chkstatus.value = "1" ;
			}else{
				__chkstatus.value = "0" ;
			}

			submit();
		}
	}
//-->
</script>

</head>
<body leftmargin="0" topmargin="0"  >
  <form name="cscform" method="post" >
 

<!----------BEGIN CSC INITIAL ZONE ------------------------>

<%=screen.InitialVariable()%>

<!----------END CSC INITIAL ZONE -------------------------->
	<input type="hidden"name="__screen"  value="TAU_LEAVEAVL">
	<input type="hidden" name="__fixCon" value="<%=request.getParameter("__fixCon")%>">
	<input type="hidden" name="__cmd"  value="">
	<input type="hidden" name="__language" value="<%=screen.getUProfile().get("lang")%>">
	<input name="__companyid" type="hidden" value='<%=screen.getUProfile().get("companyid")%>'>
	<input type="hidden" name="__referPage" value="">
	<input type="hidden" name="__pageCall" value="<%=request.getParameter("__screen")%>">
	<input type="hidden" name="__gorec">
	<input type="hidden" name="__calendar" value="">
	<input type="hidden" name="__help" value="">

	<!-- save param -->
	<input type="hidden" name="__employeeid" value="<%=empid%>">
	<input type="hidden" name="__branchid" value="<%=bchid%>">
	<input type="hidden" name="__saveevent" id="__saveevent" value="">
	<input type="hidden" name="__selectevent" id="__selectevent" value="">
	<input type="hidden" name="__lvdefault" id="__lvdefault" value="">
	<input type="hidden" name="__chkstatus" id="__chkstatus" value="">

	<script language="javascript">getInputFormatDate();</script>
	<div align="center">
    <table class="">
      <tr>
        <td colspan="2">
          <div align="center">
            <center>
              <table cellspacing="0" cellpadding="0" class="">
			  <!-- <tr>
				<td colspan="4">
					<div  align="right">
						<font color="green">*<span swlang code="SW008607">By Shift</span></font>
						&nbsp;&nbsp;
						<font color="orange">*<span swlang code="SW000079">Custom</span></font>
					</div>
				</td>
			  </tr> -->
                <tr>
                  <td width="10%" class="row3"><div align="center">&nbsp;</div></td>
                  <td width="10%" class="row3"><div align="center"><span swlang code="SW000011">Code</div></div></td>
                  <td class="row3" colspan="2"><div align="center"><span swlang code="SW000012">Description</div></td>
                  
                </tr>
				 <% 
					
					int i=0;	
					StringBuilder ref = new StringBuilder();
					String crDefault = "green";
					String crNormal = "";
					String crDefine = "orange";
					String crDiv = "" ;
					String checked = "" ;
					
					lvdefault = "0";

					while (screen.inq.next()) {
						i++;	
						
						crDiv = crNormal;
						checked = "" ;

						/* is default leave (by branchid) */
						if(hmLvDefault.containsKey(screen.getString("eventgrpid"))){ 
							crDiv = crDefault; 
							checked = "checked"; 
							lvdefault = "1"; 
						}

						/* define by admin */
						if(hmLvUser.containsKey(screen.getString("eventgrpid"))){ 
							crDiv = crDefine; 
							checked = "checked";
						}

						/* disable by admin */
						if(hmLvDisDefine.containsKey(screen.getString("eventgrpid"))){ 
							checked = "";
						}
		  		 %>
				<tr >
					<td>
						<div align="CENTER" style="color:<%=crDiv%>">
							<input type="checkbox" id="leave_type$<%=i%>" name="leave_type$<%=i%>" lvdefault="<%=lvdefault%>" value="<%=screen.getString("eventgrpid")%>" <%=checked%> onclick="saveEvent(this)">
						</div>
					</td>
					<td>
						<div align="CENTER" style="color:<%=crDiv%>"><%=screen.getString("eventgrpid")%></div>
					</td> 
					<td>
						
						<div style="color:<%=crDiv%>">
							&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
							<%=screen.getString("tdesc")%>
						</div>
					</td>                 
					<td>
						<div style="color:<%=crDiv%>"><%=screen.getString("edesc")%></div>
					</td>
                 </tr>
                 <%}%>
              </table>
            </center>
          </div>
		</td>
      </tr>
      <tr>
        <td class="bottom" > </td>
      </tr>
    </table>
</div>
</form>

<%
screen.referLangOff();
%>
</body>
</html>
<%!

	public void saveDefineLeave(String emp, String eventgrp, String defaultleave, String chk, UProfile upf){
		//System.out.print("!! save user define leave --> " + emp + ":" + eventgrp);
		try {
			DbRecord db = new InitialRecord(upf).getDbRecord("Meventgrp");
			db.setColumn("*");
			db.set("eventgrpid", eventgrp);
			if(db.search() == 1){
				DbRecord dbm2 = new InitialRecord(upf).getDbRecord("Meventgrp2");
				dbm2.setColumn("*");
				dbm2.set("employeeid", emp);
				dbm2.set("eventgrpid", eventgrp);	
				dbm2.set("companyid", (String) upf.get("companyid"));
				dbm2.set("tdesc", db.getString("tdesc"));
				dbm2.set("edesc", db.getString("edesc"));
				dbm2.set("limits", db.getString("limits"));
				dbm2.set("daytype", db.getString("daytype"));
				dbm2.set("datebeforerequest", db.getString("datebeforerequest"));
				dbm2.set("service_year", db.getString("service_year"));
				dbm2.set("limit_times", db.getString("limit_times"));
				dbm2.set("clear_leave", db.getString("clear_leave"));
				dbm2.set("privilege_event", db.getString("privilege_event"));
				dbm2.set("limit_probation", db.getString("limit_probation"));
				dbm2.set("sex_type", db.getString("sex_type"));
				dbm2.set("guarantee", db.getString("guarantee"));
				dbm2.set("guarantee_date", db.getString("guarantee_date"));
				dbm2.set("remarks", db.getString("remarks"));
				dbm2.set("display_order", db.getString("display_order"));
				dbm2.set("display", db.getString("display"));
				dbm2.set("event_desc", db.getString("event_desc"));
				dbm2.set("display_limit", db.getString("display_limit"));
				dbm2.set("lvpastlimit", db.getString("lvpastlimit"));
				dbm2.set("lvfuturelimit", db.getString("lvfuturelimit"));
				dbm2.set("day_leave_stat", db.getString("day_leave_stat"));
				dbm2.set("fhalf_leave_stat", db.getString("fhalf_leave_stat"));
				dbm2.set("shalf_leave_stat", db.getString("shalf_leave_stat"));
				dbm2.set("hour_leave_stat", db.getString("hour_leave_stat"));
				dbm2.set("month_limit0", db.getString("month_limit0"));
				dbm2.set("month_limit1", db.getString("month_limit1"));
				dbm2.set("month_limit2", db.getString("month_limit2"));
				dbm2.set("month_limit3", db.getString("month_limit3"));
				dbm2.set("leaverounding", db.getString("leaverounding"));
				dbm2.set("clear_leave_month", db.getString("clear_leave_month"));
				dbm2.set("limit_hours", db.getString("limit_hours"));
				dbm2.set("sharelimit_event", db.getString("sharelimit_event"));
				dbm2.set("needapprovedate", db.getString("needapprovedate"));
				dbm2.set("min_limit_hours", db.getString("min_limit_hours"));
				dbm2.set("limitformula", db.getString("limitformula"));
				dbm2.set("advance_approve", db.getString("advance_approve"));
				dbm2.set("approve_before", db.getString("approve_before"));
				dbm2.set("approve_after", db.getString("approve_after"));
				dbm2.set("tsdesc", db.getString("tsdesc"));
				dbm2.set("esdesc", db.getString("esdesc"));
				dbm2.set("dctsal", db.getString("dctsal"));
				dbm2.set("dctsvc", db.getString("dctsvc"));
				dbm2.set("prev_last", db.getString("prev_last"));
				dbm2.set("event_status", chk);

				dbm2.save();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public void delDefineLeave(String emp, String eventgrp, UProfile upf){
		try {
			System.out.print("!! delete user define leave --> " + emp + ":" + eventgrp);
			DbRecord db = new InitialRecord(upf).getDbRecord("Meventgrp2");
			db.setColumn("*");
			db.set("employeeid", emp);
			db.set("eventgrpid", eventgrp);
			if(db.search() == 1){
				db.delete();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
%>