<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="com.hp.cmsz.commons.utils.IPUtils" %>
<%@ page import="com.hp.cmsz.entity.UserInfo" %>
<%@ page import="com.hp.cmsz.commons.utils.Constant"%>
<%@ page import="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"%>
<%@ page import="org.apache.shiro.authc.ExcessiveAttemptsException"%>
<%@ page import="org.apache.shiro.authc.IncorrectCredentialsException"%>
<%@ page import="org.apache.shiro.authc.UnknownAccountException"%>
<%@ page import="org.apache.shiro.authc.LockedAccountException"%>
<%@ page import="org.apache.shiro.authc.IncorrectCredentialsException"%>
<%@ page import="org.springframework.util.StringUtils" %>
<%@ page import="com.hp.cmsz.commons.utils.TokenProcessor"%>
<%@ page import="org.apache.shiro.authc.IncorrectCredentialsException" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>


<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
<head>
<title>首页</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
#main-container {
 background: url(${ctx}/static/images/indexBg.jpg);
 background-size: cover;
}
.section {
  overflow: hidden;
   background-color: transparent; 
  padding: 3px 15px 15px 15px;
  margin-bottom: 20px;
}
.container {
padding-right: 10px;
padding-left: 20px;
}
.carousel-caption {
  position: absolute;
  top: 2px;
  width:93%;
  left:5%;
  right:5%;
  z-index: 10;
  color: #000000;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.content-div {
  position: absolute;
  width: 450px;
  right: 1%;
  z-index: 10;
  color: #000000;
  text-align: left; 
  font-size: 24px;
}
.content-div p {
  font-size: 14px;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  height: 410px;
  width: 100%;
} 
.content-div .h-content{
    color:blue;
}
.h-content .con{
color:red;
font-weight:bold;
}
h3 {
margin-top: 12px;
}
.col-xs-11{
 width: 75%;
 padding-top: 15px;
padding-left: 30px;
}
.col-xs-1{
 width: 22%;
 right:2%;
 top: 15px;
}
.col-xs-12{
padding-right: 0px;
  padding-left: 0px;
}
.col-xs-4{
padding-right: 0px;
  padding-left: 0px;
  /*  padding-top: 10px; */
   text-align: center;
} 
.col-xs-1 > .col-xs-4 {
padding-right: 0px;
  padding-left: 0px;
  /*  padding-top: 10px; */
   text-align: center;
   box-shadow: -1px -1px 1px rgba(34, 146, 225, 0.3),1px -1px 1px rgba(34, 146, 225, 0.3);
   border: 1px gray solid;
 /*  -moz-border-radius:2px 2px 0px 0px;
   -webkit-border-radius:2px 2px 0px 0px; */
    border-radius: 5px 5px 0px 0px; 
  background:-moz-linear-gradient(top,#D6F1F1,#C3DBE7);
background:-webkit-gradient(linear,top,from(#D6F1F1),to(#C3DBE7));
background:-webkit-linear-gradient(top,#D6F1F1,#C3DBE7);
background:-o-linear-gradient(top,#D6F1F1,#C3DBE7); 
background:linear-gradient(to top,#D6F1F1,#C3DBE7);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D6F1F1', endColorstr='#C3DBE7',GradientType=0 );
}
.gradient {
       filter: none;
    }
.col-xs-1 > .col-xs-4.active,
.col-xs-1 > .col-xs-4:hover {
padding-right: 0px;
  padding-left: 0px;
  /*  padding-top: 10px; */
   text-align: center;
   box-shadow: -1px -1px 1px rgba(34, 146, 225, 0.3),1px -1px 1px rgba(34, 146, 225, 0.3);
   border: 1px gray solid;
   border-bottom: 1px #68B5E5 solid;
   /*  border-bottom: none; */
 border-radius: 5px 5px 0px 0px; 
   background:-moz-linear-gradient(top,#68B5E5,#C2E3F8);
 background:-webkit-gradient(linear,top,from(#68B5E5),to(#C2E3F8)); 
background:-webkit-linear-gradient(top,#68B5E5,#C2E3F8);
background:-o-linear-gradient(top,#68B5E5,#C2E3F8); 
background:linear-gradient(to top, #68B5E5,#C2E3F8);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C2E3F8', endColorstr='#68B5E5',GradientType=0 );
}
.gradient {
       filter: none;
    }
.carousel-indicators li {
border:1px gray solid;
background-color:gray;
}
.number {
width:100%;
height:30px;
/* background: url(${ctx}/static/images/indexRight.png);
background-size: cover; */
 padding-top: 5px;
text-align: center;
color:black;
font-weight: bold;
}
.table1 {
 border-left: 1px gray solid; 
 width: 100%;
  margin-bottom: 10px;
  -webkit-box-shadow: 3px 3px 3px gray ;
  -moz-box-shadow: 3px 3px 3px gray;
  box-shadow: 3px 3px 3px gray ;
  background: url(${ctx}/static/images/indexNum.png);
  background-size:100% 100%;
  /*  background:-moz-linear-gradient(top,rgba(104,181,229,0.8),rgba(104,181,229,0));
background:-webkit-gradient(linear,top,from(rgba(104,181,229,0.8)),to(rgba(104,181,229,0)));
background:-webkit-linear-gradient(top,rgba(104,181,229,0.8),rgba(104,181,229,0));
background:-o-linear-gradient(top,rgba(104,181,229,0.8),rgba(104,181,229,0)); 
background:linear-gradient(to top, rgba(104,181,229,0.8), rgba(104,181,229,0));
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='rgba(104,181,229,0.8)', endColorstr=' rgba(104,181,229,0)',GradientType=0);  */
}
.table1 > thead > tr > th,
.table1 > tbody > tr > th,
.table1 > tfoot > tr > th,
.table1 > thead > tr > td,
.table1 > tbody > tr > td,
.table1 > tfoot > tr > td {
  padding: 8px;
  line-height: 1.5;
  vertical-align: top;
/*   border-top: 1px solid #dddddd; */
}
.number1 {
width:100%;
height:230px;
background: url(${ctx}/static/images/indexBottomBg.png);
background-size: cover;
text-align: center;
color:black;
 font-weight:bold;
}
.section .row {
margin-top: 0px;
}
.section .row .col-xs-4{
width:32%
}

.number1 .col-xs-3 {
width:30%;
height:110px;
top:60px;
padding:10px 0 10px 20px;
}
.number1 .col-xs-3 img {
width:120%;
}
.number1 .col-xs-9 {
width:65%;
height:90%;
top:30px;
 font-weight:normal;
 text-align: left;
 margin-left:15px;
}
 .col-xs-9 span ,
  .col-xs-9 ul {
  font-size:13px;
  float:left;
  width:100%;
  }
pre {
background-color: transparent;
border-color:transparent;
padding:0;
margin:0 0 5px;
font-size:24px;
font-weight:500;
 color:blue;
}
.fontAll {
width:100%;
font-weight:bold;
text-align: left;
}

ul {
padding-left:30px;
float:left;
}
.col-xs-9 img {
width:30%;
float:right;
margin:10px 20% 0 0;
}
/* 小圈圈的样式 */
.carousel-indicators {
bottom: 10px;
}
/* 工作视图 */
.row .col-xs-12 {
padding-left:10px;
padding-right:55px
}
.row .col-xs-12 .panel{
margin-bottom:0px;
margin-top:10px;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
    var loginState;
    var currentLoginUserName = "";
    var loginPrompt = "";
    var wrongCount;
    $("#main-container").hide();
   /*  $("#sticky-wrap").hide(); */
    <%
    Object error = request.getAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
    String prompt = null;      
    if(error != null){
         if("org.apache.shiro.authc.UnknownAccountException".equals(error)) {
             prompt = "该用户不存在!";
         } else if("org.apache.shiro.authc.LockedAccountException".equals(error)) {
             prompt = "该用户已经被禁用!";
         } else if("org.apache.shiro.authc.IncorrectCredentialsException".equals(error)) {
            prompt = "你输入的密码不正确!";
   		//add by huach on 20140804 begin
   		} else if(Constant.MUST_LOGIN_FROM_4A .equals(error)) {      
           prompt="该系统已被4A平台接管,请通过4A平台登录!";
        //add by huach on 20140804 end   
         } else if("org.apache.shiro.authc.ExcessiveAttemptsException".equals(error)){
        	 prompt = "密码输入错误5次 账号已被锁定10分钟!";
         }else {
            prompt = "用户名或密码错误!";
         } %>
         loginState = "<%=prompt  %>";
         loginPrompt = "<%=prompt  %>";
         <%
         	int wrongCount = 0;
	         //添加验证次数
	         Object countObj = session.getAttribute("WRONG_COUNT");
	         if(countObj != null) {
	        	 wrongCount = Integer.parseInt((String)countObj);
	        	 wrongCount += 1;
	        	 session.setAttribute("WRONG_COUNT",wrongCount+"");
	        	 
	         }else {
	        	 session.setAttribute("WRONG_COUNT","1");
	        	 wrongCount = 1;
	         }
	         %>
	         wrongCount = <%= wrongCount  %>;
    <%  } else {
          Object current_user_session = session.getAttribute("CURRENT_USER_SESSION");
          if(current_user_session != null){%>
              loginState = 'loginSuccess';
              currentLoginUserName = '<%= ((UserInfo)(session.getAttribute("CURRENT_USER_SESSION"))).getUserName()%>';
              console.log(currentLoginUserName + ",欢迎回来!");
              
         <%} %>
         
    <%} %>
    
    //超过三次时出现验证码输入
    if(wrongCount && wrongCount >= 3) {
    	$("#checkCodeArea").show();
    }
    if(wrongCount && wrongCount >= 5){
    	loginPrompt = "密码输入错误5次 账号已被锁定10分钟!";
    }
    
     if (loginState == 'loginSuccess' && currentLoginUserName != '') {//登录成功
         
          $("#main-container").show();
          $("#logindiv").hide();
          $("#logo").hide();
		  var iddiv1 = window.document.getElementById("contentdiv1");
          var iddiv2 = window.document.getElementById("contentdiv2");
          if(iddiv1!=null&&iddiv2!=null){
             $("#contentdiv2").hide();
          }
           var href="${ctx}/index/createLog";
					  $.ajax({
					           type : 'GET',
					           contentType : 'application/json',
					           url: href,
					           dataType : 'text',
					           beforeSend: function(data) {
					            },
					           success: function(data) {
						   
						   }
					  });    
        /*  $("#sticky-wrap").show(); */
     } else {
         $('#errormsg').html(loginPrompt);
         $("#main-container").hide();
         $("#logindiv").show();
          $("#logo").show();
          document.getElementById('username').focus();
         <%--/*  $(".d-buttons input:first").css({--%>
                              <%--"color": "#ffffff",--%>
                              <%--"background": "#428bca",--%>
                              <%--"border-color": "#357ebd"--%>
           <%--});--%>
            <%--*/--%>
        <%--/*  var loginDialog = $.dialog({--%>
            <%--id: "login",--%>
            <%--title: "欢迎光临",--%>
            <%--content: "<div style='width: 272px;height: 117px;'><div><form class='form-horizontal' id='loginForm' action='#' method='post' role='form'>"--%>
            <%--+"<div class='form-group'><div class='col-xs-3'><label class='control-label' style='margin:7px 9px'>帐号:</label></div><div class='col-xs-9' style='margin:7px 0 0 -15px'><input id='username' name='username' class='form-control' type='text' value='' /></div></div>"--%>
            <%--+ "<div class='form-group'><div class='col-xs-3'><label class='control-label' style='margin:7px 9px'>密码:</label></div><div class='col-xs-9' style='margin:7px 0 0 -15px'><input id='password' name='password' class='form-control' type='password' value='' /></div></div>"--%>
            <%--+ "<div class='form-group'><div class='col-xs-3' style='display:none'><label class='checkbox' for='rememberMe'><input type='checkbox' id='rememberMe' name='rememberMe'/> 记住我</label></div><div class='col-sm-6'><label class='control-label'><font color='red'>" + loginPrompt + "</font></label></div></div>"--%>
            <%--+"</form></div></div>",--%>
            <%--initialize: function () {--%>
            <%--document.getElementById('username').focus();--%>
            <%--$(".d-buttons input:first").css({--%>
                              <%--"color": "#ffffff",--%>
                              <%--"background": "#428bca",--%>
                              <%--"border-color": "#357ebd"--%>
                      <%--});--%>
                          <%----%>
            <%--},--%>
            <%--button: [{--%>
            <%--value: "登录",--%>
            <%--callback: function () {--%>
                <%--var loginForm=$("#loginForm");--%>
                <%--loginForm.attr("action","${ctx}/index");--%>
                <%--loginForm.submit();--%>
                <%--loginForm.attr("action","#");--%>
              <%--}  --%>
            <%--}--%>
            <%--],--%>
            <%--cancel:false,--%>
            <%--lock: false--%>
        <%--}); */--%>
        var flag = false;
        
        $("#loginbutton").click(function(){
        	$("#password").val(strEnc($("#password").val(),"venustech_tbu_venus4A","2","3"))
        	if(wrongCount && wrongCount >= 3 && !flag) {
				$("#errormsg").html("请输入正确验证码"); 
				return;
        	}
        	$("#errormsg").html("");
            var loginForm=$("#loginForm");
                loginForm.attr("action","${ctx}/index");
                loginForm.submit();
                loginForm.attr("action","#");   
        });
     }
     //按回车键登录
     document.onkeydown=function(){
            if (event.keyCode==13) {
            	 $("#password").val(strEnc($("#password").val(),"venustech_tbu_venus4A","2","3"))
            	if(wrongCount && wrongCount >= 3 && !flag) {
    				$("#errormsg").html("请输入正确验证码"); 
    				return;
            	}
            	$("#errormsg").html("");
                var loginForm=$("#loginForm");
                loginForm.attr("action","${ctx}/index");
                loginForm.submit();
                loginForm.attr("action","#");
            }
     };
     getData();
     setInterval('getData()',4500);
     indexTable('early_warning');
     //tt();  //初始化点击事件
     //setInterval('tabNum()',10000);
   //add by eric   
   if (loginState == 'loginSuccess' && currentLoginUserName != '') {//登录成功
     if($("#contentdiv2").is(":hidden")){}else{
	    indexTable1();
	    indexTable2();
      }
    }
   //end 
   
   /*****************************
    *                           *
    *	登录验证码				*
    *							*
    *****************************/
	$("#checkCode").blur(function() {
		var code = $(this).val();
		$.ajax({
				type : "POST",
				data : {"code" : code},
				url : "${ctx}/index/graphics/ajaxCheck",
				success : function(obj) {
					if (obj == "1") {
						$("#checkCode").css({ "border-color": "blue" });
						flag = true;
					} else {
						$("#checkCode").css({ "border-color": "red" });
						flag = false;
					}
				}
		});
	});
});

var i = 0;
function getData() {
  if(i == 3) { i=0; }
    i++;
    $.ajax({
       type: 'GET',
       contentType : 'application/json',
       url : '${ctx}/index/DataRefresh/'+Date.parse(new Date()),
       dataType : 'text',
       beforeSend : function(data) {},
       success : function(data) {
            data=data.replace(/\"/gi,"'");
            data = eval("(" + data + ")");
            if(i == 1){
                $("#p1").html(data[0]+": ");
                $("#p11").html(Math.ceil(parseFloat(data[1])/(1024*1024))+" ");
                $("#p2").html(data[2]+": ");
                $("#p21").html(Math.ceil(parseFloat(data[3])/(1024*1024))+" ");
                $("#p3").html(data[4]+": ");
                $("#p31").html(Math.ceil(parseFloat(data[5])/1024)+" "); 
            }else if(i == 2){
                $("#p4").html(data[12]+": ");
                $("#p41").html(data[13]);
                $("#p5").html(data[14]+": ");
                $("#p51").html(data[15]);
            }else{
                $("#p6").html(data[6]+": ");
                $("#p61").html(data[7]);
                $("#p7").html(data[8]+": ");
                $("#p71").html(data[9]);
               /*  $("#p8").html(data[10]+": ");
                $("#p81").html(data[11]); */
            }
       }
    });
    
}

function tt() {
 $("#ol1 li").click(function(){
   var t = $(this).index();
   console.log(t);
   $("#t"+t).attr("class","active");
   $("ol li[id!='t"+t+"']").attr("class","");
   for(var i = 0 ; i< 4;i++){
        if(i == t){
         $("#tab"+i).attr("class","item active");
        }else{
         $("#tab"+i).attr("class","item");
        }
   }
  
  });
}
function change(o) {
	o.src = "${ctx}/index/graphics/checkCode.html?" + new Date().getTime();
}




//=====================================DES加密

function strEnc(data,firstKey,secondKey,thirdKey){  
	 var leng = data.length;  
	 var encData = "";  
	 var firstKeyBt,secondKeyBt,thirdKeyBt,firstLength,secondLength,thirdLength;  
	 if(firstKey != null && firstKey != ""){      
	   firstKeyBt = getKeyBytes(firstKey);  
	   firstLength = firstKeyBt.length;  
	 }  
	 if(secondKey != null && secondKey != ""){  
	   secondKeyBt = getKeyBytes(secondKey);  
	   secondLength = secondKeyBt.length;  
	 }  
	 if(thirdKey != null && thirdKey != ""){  
	   thirdKeyBt = getKeyBytes(thirdKey);  
	   thirdLength = thirdKeyBt.length;  
	 }    
	   
	 if(leng > 0){  
	   if(leng < 4){  
	     var bt = strToBt(data);        
	     var encByte ;  
	     if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){  
	       var tempBt;  
	       var x,y,z;  
	       tempBt = bt;          
	       for(x = 0;x < firstLength ;x ++){  
	         tempBt = enc(tempBt,firstKeyBt[x]);  
	       }  
	       for(y = 0;y < secondLength ;y ++){  
	         tempBt = enc(tempBt,secondKeyBt[y]);  
	       }  
	       for(z = 0;z < thirdLength ;z ++){  
	         tempBt = enc(tempBt,thirdKeyBt[z]);  
	       }          
	       encByte = tempBt;          
	     }else{  
	       if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){  
	         var tempBt;  
	         var x,y;  
	         tempBt = bt;  
	         for(x = 0;x < firstLength ;x ++){  
	           tempBt = enc(tempBt,firstKeyBt[x]);  
	         }  
	         for(y = 0;y < secondLength ;y ++){  
	           tempBt = enc(tempBt,secondKeyBt[y]);  
	         }  
	         encByte = tempBt;  
	       }else{  
	         if(firstKey != null && firstKey !=""){              
	           var tempBt;  
	           var x = 0;  
	           tempBt = bt;              
	           for(x = 0;x < firstLength ;x ++){  
	             tempBt = enc(tempBt,firstKeyBt[x]);  
	           }  
	           encByte = tempBt;  
	         }  
	       }          
	     }  
	     encData = bt64ToHex(encByte);  
	   }else{  
	     var iterator = parseInt(leng/4);  
	     var remainder = leng%4;  
	     var i=0;        
	     for(i = 0;i < iterator;i++){  
	       var tempData = data.substring(i*4+0,i*4+4);  
	       var tempByte = strToBt(tempData);  
	       var encByte ;  
	       if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){  
	         var tempBt;  
	         var x,y,z;  
	         tempBt = tempByte;  
	         for(x = 0;x < firstLength ;x ++){  
	           tempBt = enc(tempBt,firstKeyBt[x]);  
	         }  
	         for(y = 0;y < secondLength ;y ++){  
	           tempBt = enc(tempBt,secondKeyBt[y]);  
	         }  
	         for(z = 0;z < thirdLength ;z ++){  
	           tempBt = enc(tempBt,thirdKeyBt[z]);  
	         }  
	         encByte = tempBt;  
	       }else{  
	         if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){  
	           var tempBt;  
	           var x,y;  
	           tempBt = tempByte;  
	           for(x = 0;x < firstLength ;x ++){  
	             tempBt = enc(tempBt,firstKeyBt[x]);  
	           }  
	           for(y = 0;y < secondLength ;y ++){  
	             tempBt = enc(tempBt,secondKeyBt[y]);  
	           }  
	           encByte = tempBt;  
	         }else{  
	           if(firstKey != null && firstKey !=""){                        
	             var tempBt;  
	             var x;  
	             tempBt = tempByte;  
	             for(x = 0;x < firstLength ;x ++){                  
	               tempBt = enc(tempBt,firstKeyBt[x]);  
	             }  
	             encByte = tempBt;                
	           }  
	         }  
	       }  
	       encData += bt64ToHex(encByte);  
	     }        
	     if(remainder > 0){  
	       var remainderData = data.substring(iterator*4+0,leng);  
	       var tempByte = strToBt(remainderData);  
	       var encByte ;  
	       if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){  
	         var tempBt;  
	         var x,y,z;  
	         tempBt = tempByte;  
	         for(x = 0;x < firstLength ;x ++){  
	           tempBt = enc(tempBt,firstKeyBt[x]);  
	         }  
	         for(y = 0;y < secondLength ;y ++){  
	           tempBt = enc(tempBt,secondKeyBt[y]);  
	         }  
	         for(z = 0;z < thirdLength ;z ++){  
	           tempBt = enc(tempBt,thirdKeyBt[z]);  
	         }  
	         encByte = tempBt;  
	       }else{  
	         if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){  
	           var tempBt;  
	           var x,y;  
	           tempBt = tempByte;  
	           for(x = 0;x < firstLength ;x ++){  
	             tempBt = enc(tempBt,firstKeyBt[x]);  
	           }  
	           for(y = 0;y < secondLength ;y ++){  
	             tempBt = enc(tempBt,secondKeyBt[y]);  
	           }  
	           encByte = tempBt;  
	         }else{  
	           if(firstKey != null && firstKey !=""){              
	             var tempBt;  
	             var x;  
	             tempBt = tempByte;  
	             for(x = 0;x < firstLength ;x ++){  
	               tempBt = enc(tempBt,firstKeyBt[x]);  
	             }  
	             encByte = tempBt;  
	           }  
	         }  
	       }  
	       encData += bt64ToHex(encByte);  
	     }                  
	   }  
	 }  
	 return encData;  
	}  
	  
	/* 
	* decrypt the encrypted string to the original string  
	* 
	* return  the original string   
	*/  
	function strDec(data,firstKey,secondKey,thirdKey){  
	 var leng = data.length;  
	 var decStr = "";  
	 var firstKeyBt,secondKeyBt,thirdKeyBt,firstLength,secondLength,thirdLength;  
	 if(firstKey != null && firstKey != ""){      
	   firstKeyBt = getKeyBytes(firstKey);  
	   firstLength = firstKeyBt.length;  
	 }  
	 if(secondKey != null && secondKey != ""){  
	   secondKeyBt = getKeyBytes(secondKey);  
	   secondLength = secondKeyBt.length;  
	 }  
	 if(thirdKey != null && thirdKey != ""){  
	   thirdKeyBt = getKeyBytes(thirdKey);  
	   thirdLength = thirdKeyBt.length;  
	 }  
	   
	 var iterator = parseInt(leng/16);  
	 var i=0;    
	 for(i = 0;i < iterator;i++){  
	   var tempData = data.substring(i*16+0,i*16+16);      
	   var strByte = hexToBt64(tempData);      
	   var intByte = new Array(64);  
	   var j = 0;  
	   for(j = 0;j < 64; j++){  
	     intByte[j] = parseInt(strByte.substring(j,j+1));  
	   }      
	   var decByte;  
	   if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){  
	     var tempBt;  
	     var x,y,z;  
	     tempBt = intByte;  
	     for(x = thirdLength - 1;x >= 0;x --){  
	       tempBt = dec(tempBt,thirdKeyBt[x]);  
	     }  
	     for(y = secondLength - 1;y >= 0;y --){  
	       tempBt = dec(tempBt,secondKeyBt[y]);  
	     }  
	     for(z = firstLength - 1;z >= 0 ;z --){  
	       tempBt = dec(tempBt,firstKeyBt[z]);  
	     }  
	     decByte = tempBt;  
	   }else{  
	     if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){  
	       var tempBt;  
	       var x,y,z;  
	       tempBt = intByte;  
	       for(x = secondLength - 1;x >= 0 ;x --){  
	         tempBt = dec(tempBt,secondKeyBt[x]);  
	       }  
	       for(y = firstLength - 1;y >= 0 ;y --){  
	         tempBt = dec(tempBt,firstKeyBt[y]);  
	       }  
	       decByte = tempBt;  
	     }else{  
	       if(firstKey != null && firstKey !=""){  
	         var tempBt;  
	         var x,y,z;  
	         tempBt = intByte;  
	         for(x = firstLength - 1;x >= 0 ;x --){  
	           tempBt = dec(tempBt,firstKeyBt[x]);  
	         }  
	         decByte = tempBt;  
	       }  
	     }  
	   }  
	   decStr += byteToString(decByte);  
	 }        
	 return decStr;  
	}  
	/* 
	* chang the string into the bit array 
	*  
	* return bit array(it's length % 64 = 0) 
	*/  
	function getKeyBytes(key){  
	 var keyBytes = new Array();  
	 var leng = key.length;  
	 var iterator = parseInt(leng/4);  
	 var remainder = leng%4;  
	 var i = 0;  
	 for(i = 0;i < iterator; i ++){  
	   keyBytes[i] = strToBt(key.substring(i*4+0,i*4+4));  
	 }  
	 if(remainder > 0){  
	   keyBytes[i] = strToBt(key.substring(i*4+0,leng));  
	 }      
	 return keyBytes;  
	}  
	/*
	* chang the string(it's length <= 4) into the bit array 
	*  
	* return bit array(it's length = 64) 
	*/  
	function strToBt(str){    
	 var leng = str.length;  
	 var bt = new Array(64);  
	 if(leng < 4){  
	   var i=0,j=0,p=0,q=0;  
	   for(i = 0;i<leng;i++){  
	     var k = str.charCodeAt(i);  
	     for(j=0;j<16;j++){        
	       var pow=1,m=0;  
	       for(m=15;m>j;m--){  
	         pow *= 2;  
	       }          
	       bt[16*i+j]=parseInt(k/pow)%2;  
	     }  
	   }  
	   for(p = leng;p<4;p++){  
	     var k = 0;  
	     for(q=0;q<16;q++){        
	       var pow=1,m=0;  
	       for(m=15;m>q;m--){  
	         pow *= 2;  
	       }          
	       bt[16*p+q]=parseInt(k/pow)%2;  
	     }  
	   }    
	 }else{  
	   for(i = 0;i<4;i++){  
	     var k = str.charCodeAt(i);  
	     for(j=0;j<16;j++){        
	       var pow=1;  
	       for(m=15;m>j;m--){  
	         pow *= 2;  
	       }          
	       bt[16*i+j]=parseInt(k/pow)%2;  
	     }  
	   }    
	 }  
	 return bt;  
	}  
	/*
	* chang the bit(it's length = 4) into the hex 
	*  
	* return hex 
	*/  
	function bt4ToHex(binary) {  
	 var hex;  
	 switch (binary) {  
	   case "0000" : hex = "0"; break;  
	   case "0001" : hex = "1"; break;  
	   case "0010" : hex = "2"; break;  
	   case "0011" : hex = "3"; break;  
	   case "0100" : hex = "4"; break;  
	   case "0101" : hex = "5"; break;  
	   case "0110" : hex = "6"; break;  
	   case "0111" : hex = "7"; break;  
	   case "1000" : hex = "8"; break;  
	   case "1001" : hex = "9"; break;  
	   case "1010" : hex = "A"; break;  
	   case "1011" : hex = "B"; break;  
	   case "1100" : hex = "C"; break;  
	   case "1101" : hex = "D"; break;  
	   case "1110" : hex = "E"; break;  
	   case "1111" : hex = "F"; break;  
	 }  
	 return hex;  
	}  
	  
	/* 
	* chang the hex into the bit(it's length = 4) 
	*  
	* return the bit(it's length = 4) 
	*/  
	function hexToBt4(hex) {  
	 var binary;  
	 switch (hex) {  
	   case "0" : binary = "0000"; break;  
	   case "1" : binary = "0001"; break;  
	   case "2" : binary = "0010"; break;  
	   case "3" : binary = "0011"; break;  
	   case "4" : binary = "0100"; break;  
	   case "5" : binary = "0101"; break;  
	   case "6" : binary = "0110"; break;  
	   case "7" : binary = "0111"; break;  
	   case "8" : binary = "1000"; break;  
	   case "9" : binary = "1001"; break;  
	   case "A" : binary = "1010"; break;  
	   case "B" : binary = "1011"; break;  
	   case "C" : binary = "1100"; break;  
	   case "D" : binary = "1101"; break;  
	   case "E" : binary = "1110"; break;  
	   case "F" : binary = "1111"; break;  
	 }  
	 return binary;  
	}  
	  
	/* 
	* chang the bit(it's length = 64) into the string 
	*  
	* return string 
	*/  
	function byteToString(byteData){  
	 var str="";  
	 for(i = 0;i<4;i++){  
	   var count=0;  
	   for(j=0;j<16;j++){          
	     var pow=1;  
	     for(m=15;m>j;m--){  
	       pow*=2;  
	     }                
	     count+=byteData[16*i+j]*pow;  
	   }          
	   if(count != 0){  
	     str+=String.fromCharCode(count);  
	   }  
	 }  
	 return str;  
	}  
	  
	function bt64ToHex(byteData){  
	 var hex = "";  
	 for(i = 0;i<16;i++){  
	   var bt = "";  
	   for(j=0;j<4;j++){      
	     bt += byteData[i*4+j];  
	   }      
	   hex+=bt4ToHex(bt);  
	 }  
	 return hex;  
	}  
	  
	function hexToBt64(hex){  
	 var binary = "";  
	 for(i = 0;i<16;i++){  
	   binary+=hexToBt4(hex.substring(i,i+1));  
	 }  
	 return binary;  
	}  
	  
	/* 
	* the 64 bit des core arithmetic 
	*/  
	  
	function enc(dataByte,keyByte){    
	 var keys = generateKeys(keyByte);      
	 var ipByte   = initPermute(dataByte);    
	 var ipLeft   = new Array(32);  
	 var ipRight  = new Array(32);  
	 var tempLeft = new Array(32);  
	 var i = 0,j = 0,k = 0,m = 0, n = 0;  
	 for(k = 0;k < 32;k ++){  
	   ipLeft[k] = ipByte[k];  
	   ipRight[k] = ipByte[32+k];  
	 }      
	 for(i = 0;i < 16;i ++){  
	   for(j = 0;j < 32;j ++){  
	     tempLeft[j] = ipLeft[j];  
	     ipLeft[j] = ipRight[j];        
	   }    
	   var key = new Array(48);  
	   for(m = 0;m < 48;m ++){  
	     key[m] = keys[i][m];  
	   }  
	   var  tempRight = xor(pPermute(sBoxPermute(xor(expandPermute(ipRight),key))), tempLeft);        
	   for(n = 0;n < 32;n ++){  
	     ipRight[n] = tempRight[n];  
	   }    
	     
	 }    
	   
	   
	 var finalData =new Array(64);  
	 for(i = 0;i < 32;i ++){  
	   finalData[i] = ipRight[i];  
	   finalData[32+i] = ipLeft[i];  
	 }  
	 return finallyPermute(finalData);    
	}  
	  
	function dec(dataByte,keyByte){    
	 var keys = generateKeys(keyByte);      
	 var ipByte   = initPermute(dataByte);    
	 var ipLeft   = new Array(32);  
	 var ipRight  = new Array(32);  
	 var tempLeft = new Array(32);  
	 var i = 0,j = 0,k = 0,m = 0, n = 0;  
	 for(k = 0;k < 32;k ++){  
	   ipLeft[k] = ipByte[k];  
	   ipRight[k] = ipByte[32+k];  
	 }    
	 for(i = 15;i >= 0;i --){  
	   for(j = 0;j < 32;j ++){  
	     tempLeft[j] = ipLeft[j];  
	     ipLeft[j] = ipRight[j];        
	   }    
	   var key = new Array(48);  
	   for(m = 0;m < 48;m ++){  
	     key[m] = keys[i][m];  
	   }  
	     
	   var  tempRight = xor(pPermute(sBoxPermute(xor(expandPermute(ipRight),key))), tempLeft);        
	   for(n = 0;n < 32;n ++){  
	     ipRight[n] = tempRight[n];  
	   }    
	 }    
	   
	   
	 var finalData =new Array(64);  
	 for(i = 0;i < 32;i ++){  
	   finalData[i] = ipRight[i];  
	   finalData[32+i] = ipLeft[i];  
	 }  
	 return finallyPermute(finalData);    
	}  
	  
	function initPermute(originalData){  
	 var ipByte = new Array(64);  
	 for (i = 0, m = 1, n = 0; i < 4; i++, m += 2, n += 2) {  
	   for (j = 7, k = 0; j >= 0; j--, k++) {  
	     ipByte[i * 8 + k] = originalData[j * 8 + m];  
	     ipByte[i * 8 + k + 32] = originalData[j * 8 + n];  
	   }  
	 }      
	 return ipByte;  
	}  
	  
	function expandPermute(rightData){    
	 var epByte = new Array(48);  
	 for (i = 0; i < 8; i++) {  
	   if (i == 0) {  
	     epByte[i * 6 + 0] = rightData[31];  
	   } else {  
	     epByte[i * 6 + 0] = rightData[i * 4 - 1];  
	   }  
	   epByte[i * 6 + 1] = rightData[i * 4 + 0];  
	   epByte[i * 6 + 2] = rightData[i * 4 + 1];  
	   epByte[i * 6 + 3] = rightData[i * 4 + 2];  
	   epByte[i * 6 + 4] = rightData[i * 4 + 3];  
	   if (i == 7) {  
	     epByte[i * 6 + 5] = rightData[0];  
	   } else {  
	     epByte[i * 6 + 5] = rightData[i * 4 + 4];  
	   }  
	 }        
	 return epByte;  
	}  
	  
	function xor(byteOne,byteTwo){    
	 var xorByte = new Array(byteOne.length);  
	 for(i = 0;i < byteOne.length; i ++){        
	   xorByte[i] = byteOne[i] ^ byteTwo[i];  
	 }    
	 return xorByte;  
	}  
	  
	function sBoxPermute(expandByte){  
	   
	   var sBoxByte = new Array(32);  
	   var binary = "";  
	   var s1 = [  
	       [14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7],  
	       [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8],  
	       [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0],  
	       [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 ]];  
	  
	       /* Table - s2 */  
	   var s2 = [  
	       [15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10],  
	       [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5],  
	       [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15],  
	       [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 ]];  
	  
	       /* Table - s3 */  
	   var s3= [  
	       [10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8],  
	       [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1],  
	       [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7],  
	       [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 ]];  
	       /* Table - s4 */  
	   var s4 = [  
	       [7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15],  
	       [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9],  
	       [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4],  
	       [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 ]];  
	  
	       /* Table - s5 */  
	   var s5 = [  
	       [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9],  
	       [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6],  
	       [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14],  
	       [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 ]];  
	  
	       /* Table - s6 */  
	   var s6 = [  
	       [12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11],  
	       [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8],  
	       [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6],  
	       [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 ]];  
	  
	       /* Table - s7 */  
	   var s7 = [  
	       [4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1],  
	       [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6],  
	       [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2],  
	       [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]];  
	  
	       /* Table - s8 */  
	   var s8 = [  
	       [13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7],  
	       [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2],  
	       [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8],  
	       [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]];  
	     
	   for(m=0;m<8;m++){  
	   var i=0,j=0;  
	   i = expandByte[m*6+0]*2+expandByte[m*6+5];  
	   j = expandByte[m * 6 + 1] * 2 * 2 * 2   
	     + expandByte[m * 6 + 2] * 2* 2   
	     + expandByte[m * 6 + 3] * 2   
	     + expandByte[m * 6 + 4];  
	   switch (m) {  
	     case 0 :  
	       binary = getBoxBinary(s1[i][j]);  
	       break;  
	     case 1 :  
	       binary = getBoxBinary(s2[i][j]);  
	       break;  
	     case 2 :  
	       binary = getBoxBinary(s3[i][j]);  
	       break;  
	     case 3 :  
	       binary = getBoxBinary(s4[i][j]);  
	       break;  
	     case 4 :  
	       binary = getBoxBinary(s5[i][j]);  
	       break;  
	     case 5 :  
	       binary = getBoxBinary(s6[i][j]);  
	       break;  
	     case 6 :  
	       binary = getBoxBinary(s7[i][j]);  
	       break;  
	     case 7 :  
	       binary = getBoxBinary(s8[i][j]);  
	       break;  
	   }        
	   sBoxByte[m*4+0] = parseInt(binary.substring(0,1));  
	   sBoxByte[m*4+1] = parseInt(binary.substring(1,2));  
	   sBoxByte[m*4+2] = parseInt(binary.substring(2,3));  
	   sBoxByte[m*4+3] = parseInt(binary.substring(3,4));  
	 }  
	 return sBoxByte;  
	}  
	  
	function pPermute(sBoxByte){  
	 var pBoxPermute = new Array(32);  
	 pBoxPermute[ 0] = sBoxByte[15];   
	 pBoxPermute[ 1] = sBoxByte[ 6];   
	 pBoxPermute[ 2] = sBoxByte[19];   
	 pBoxPermute[ 3] = sBoxByte[20];   
	 pBoxPermute[ 4] = sBoxByte[28];   
	 pBoxPermute[ 5] = sBoxByte[11];   
	 pBoxPermute[ 6] = sBoxByte[27];   
	 pBoxPermute[ 7] = sBoxByte[16];   
	 pBoxPermute[ 8] = sBoxByte[ 0];   
	 pBoxPermute[ 9] = sBoxByte[14];   
	 pBoxPermute[10] = sBoxByte[22];   
	 pBoxPermute[11] = sBoxByte[25];   
	 pBoxPermute[12] = sBoxByte[ 4];   
	 pBoxPermute[13] = sBoxByte[17];   
	 pBoxPermute[14] = sBoxByte[30];   
	 pBoxPermute[15] = sBoxByte[ 9];   
	 pBoxPermute[16] = sBoxByte[ 1];   
	 pBoxPermute[17] = sBoxByte[ 7];   
	 pBoxPermute[18] = sBoxByte[23];   
	 pBoxPermute[19] = sBoxByte[13];   
	 pBoxPermute[20] = sBoxByte[31];   
	 pBoxPermute[21] = sBoxByte[26];   
	 pBoxPermute[22] = sBoxByte[ 2];   
	 pBoxPermute[23] = sBoxByte[ 8];   
	 pBoxPermute[24] = sBoxByte[18];   
	 pBoxPermute[25] = sBoxByte[12];   
	 pBoxPermute[26] = sBoxByte[29];   
	 pBoxPermute[27] = sBoxByte[ 5];   
	 pBoxPermute[28] = sBoxByte[21];   
	 pBoxPermute[29] = sBoxByte[10];   
	 pBoxPermute[30] = sBoxByte[ 3];   
	 pBoxPermute[31] = sBoxByte[24];      
	 return pBoxPermute;  
	}  
	  
	function finallyPermute(endByte){      
	 var fpByte = new Array(64);    
	 fpByte[ 0] = endByte[39];   
	 fpByte[ 1] = endByte[ 7];   
	 fpByte[ 2] = endByte[47];   
	 fpByte[ 3] = endByte[15];   
	 fpByte[ 4] = endByte[55];   
	 fpByte[ 5] = endByte[23];   
	 fpByte[ 6] = endByte[63];   
	 fpByte[ 7] = endByte[31];   
	 fpByte[ 8] = endByte[38];   
	 fpByte[ 9] = endByte[ 6];   
	 fpByte[10] = endByte[46];   
	 fpByte[11] = endByte[14];   
	 fpByte[12] = endByte[54];   
	 fpByte[13] = endByte[22];   
	 fpByte[14] = endByte[62];   
	 fpByte[15] = endByte[30];   
	 fpByte[16] = endByte[37];   
	 fpByte[17] = endByte[ 5];   
	 fpByte[18] = endByte[45];   
	 fpByte[19] = endByte[13];   
	 fpByte[20] = endByte[53];   
	 fpByte[21] = endByte[21];   
	 fpByte[22] = endByte[61];   
	 fpByte[23] = endByte[29];   
	 fpByte[24] = endByte[36];   
	 fpByte[25] = endByte[ 4];   
	 fpByte[26] = endByte[44];   
	 fpByte[27] = endByte[12];   
	 fpByte[28] = endByte[52];   
	 fpByte[29] = endByte[20];   
	 fpByte[30] = endByte[60];   
	 fpByte[31] = endByte[28];   
	 fpByte[32] = endByte[35];   
	 fpByte[33] = endByte[ 3];   
	 fpByte[34] = endByte[43];   
	 fpByte[35] = endByte[11];   
	 fpByte[36] = endByte[51];   
	 fpByte[37] = endByte[19];   
	 fpByte[38] = endByte[59];   
	 fpByte[39] = endByte[27];   
	 fpByte[40] = endByte[34];   
	 fpByte[41] = endByte[ 2];   
	 fpByte[42] = endByte[42];   
	 fpByte[43] = endByte[10];   
	 fpByte[44] = endByte[50];   
	 fpByte[45] = endByte[18];   
	 fpByte[46] = endByte[58];   
	 fpByte[47] = endByte[26];   
	 fpByte[48] = endByte[33];   
	 fpByte[49] = endByte[ 1];   
	 fpByte[50] = endByte[41];   
	 fpByte[51] = endByte[ 9];   
	 fpByte[52] = endByte[49];   
	 fpByte[53] = endByte[17];   
	 fpByte[54] = endByte[57];   
	 fpByte[55] = endByte[25];   
	 fpByte[56] = endByte[32];   
	 fpByte[57] = endByte[ 0];   
	 fpByte[58] = endByte[40];   
	 fpByte[59] = endByte[ 8];   
	 fpByte[60] = endByte[48];   
	 fpByte[61] = endByte[16];   
	 fpByte[62] = endByte[56];   
	 fpByte[63] = endByte[24];  
	 return fpByte;  
	}  
	  
	function getBoxBinary(i) {  
	 var binary = "";  
	 switch (i) {  
	   case 0 :binary = "0000";break;  
	   case 1 :binary = "0001";break;  
	   case 2 :binary = "0010";break;  
	   case 3 :binary = "0011";break;  
	   case 4 :binary = "0100";break;  
	   case 5 :binary = "0101";break;  
	   case 6 :binary = "0110";break;  
	   case 7 :binary = "0111";break;  
	   case 8 :binary = "1000";break;  
	   case 9 :binary = "1001";break;  
	   case 10 :binary = "1010";break;  
	   case 11 :binary = "1011";break;  
	   case 12 :binary = "1100";break;  
	   case 13 :binary = "1101";break;  
	   case 14 :binary = "1110";break;  
	   case 15 :binary = "1111";break;  
	 }  
	 return binary;  
	}  
	/* 
	* generate 16 keys for xor 
	* 
	*/  
	function generateKeys(keyByte){      
	 var key   = new Array(56);  
	 var keys = new Array();    
	   
	 keys[ 0] = new Array();  
	 keys[ 1] = new Array();  
	 keys[ 2] = new Array();  
	 keys[ 3] = new Array();  
	 keys[ 4] = new Array();  
	 keys[ 5] = new Array();  
	 keys[ 6] = new Array();  
	 keys[ 7] = new Array();  
	 keys[ 8] = new Array();  
	 keys[ 9] = new Array();  
	 keys[10] = new Array();  
	 keys[11] = new Array();  
	 keys[12] = new Array();  
	 keys[13] = new Array();  
	 keys[14] = new Array();  
	 keys[15] = new Array();    
	 var loop = [1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];  
	  
	 for(i=0;i<7;i++){  
	   for(j=0,k=7;j<8;j++,k--){  
	     key[i*8+j]=keyByte[8*k+i];  
	   }  
	 }      
	   
	 var i = 0;  
	 for(i = 0;i < 16;i ++){  
	   var tempLeft=0;  
	   var tempRight=0;  
	   for(j = 0; j < loop[i];j ++){            
	     tempLeft = key[0];  
	     tempRight = key[28];  
	     for(k = 0;k < 27 ;k ++){  
	       key[k] = key[k+1];  
	       key[28+k] = key[29+k];  
	     }    
	     key[27]=tempLeft;  
	     key[55]=tempRight;  
	   }  
	   var tempKey = new Array(48);  
	   tempKey[ 0] = key[13];  
	   tempKey[ 1] = key[16];  
	   tempKey[ 2] = key[10];  
	   tempKey[ 3] = key[23];  
	   tempKey[ 4] = key[ 0];  
	   tempKey[ 5] = key[ 4];  
	   tempKey[ 6] = key[ 2];  
	   tempKey[ 7] = key[27];  
	   tempKey[ 8] = key[14];  
	   tempKey[ 9] = key[ 5];  
	   tempKey[10] = key[20];  
	   tempKey[11] = key[ 9];  
	   tempKey[12] = key[22];  
	   tempKey[13] = key[18];  
	   tempKey[14] = key[11];  
	   tempKey[15] = key[ 3];  
	   tempKey[16] = key[25];  
	   tempKey[17] = key[ 7];  
	   tempKey[18] = key[15];  
	   tempKey[19] = key[ 6];  
	   tempKey[20] = key[26];  
	   tempKey[21] = key[19];  
	   tempKey[22] = key[12];  
	   tempKey[23] = key[ 1];  
	   tempKey[24] = key[40];  
	   tempKey[25] = key[51];  
	   tempKey[26] = key[30];  
	   tempKey[27] = key[36];  
	   tempKey[28] = key[46];  
	   tempKey[29] = key[54];  
	   tempKey[30] = key[29];  
	   tempKey[31] = key[39];  
	   tempKey[32] = key[50];  
	   tempKey[33] = key[44];  
	   tempKey[34] = key[32];  
	   tempKey[35] = key[47];  
	   tempKey[36] = key[43];  
	   tempKey[37] = key[48];  
	   tempKey[38] = key[38];  
	   tempKey[39] = key[55];  
	   tempKey[40] = key[33];  
	   tempKey[41] = key[52];  
	   tempKey[42] = key[45];  
	   tempKey[43] = key[41];  
	   tempKey[44] = key[49];  
	   tempKey[45] = key[35];  
	   tempKey[46] = key[28];  
	   tempKey[47] = key[31];  
	   switch(i){  
	     case 0: for(m=0;m < 48 ;m++){ keys[ 0][m] = tempKey[m]; } break;  
	     case 1: for(m=0;m < 48 ;m++){ keys[ 1][m] = tempKey[m]; } break;  
	     case 2: for(m=0;m < 48 ;m++){ keys[ 2][m] = tempKey[m]; } break;  
	     case 3: for(m=0;m < 48 ;m++){ keys[ 3][m] = tempKey[m]; } break;  
	     case 4: for(m=0;m < 48 ;m++){ keys[ 4][m] = tempKey[m]; } break;  
	     case 5: for(m=0;m < 48 ;m++){ keys[ 5][m] = tempKey[m]; } break;  
	     case 6: for(m=0;m < 48 ;m++){ keys[ 6][m] = tempKey[m]; } break;  
	     case 7: for(m=0;m < 48 ;m++){ keys[ 7][m] = tempKey[m]; } break;  
	     case 8: for(m=0;m < 48 ;m++){ keys[ 8][m] = tempKey[m]; } break;  
	     case 9: for(m=0;m < 48 ;m++){ keys[ 9][m] = tempKey[m]; } break;  
	     case 10: for(m=0;m < 48 ;m++){ keys[10][m] = tempKey[m]; } break;  
	     case 11: for(m=0;m < 48 ;m++){ keys[11][m] = tempKey[m]; } break;  
	     case 12: for(m=0;m < 48 ;m++){ keys[12][m] = tempKey[m]; } break;  
	     case 13: for(m=0;m < 48 ;m++){ keys[13][m] = tempKey[m]; } break;  
	     case 14: for(m=0;m < 48 ;m++){ keys[14][m] = tempKey[m]; } break;  
	     case 15: for(m=0;m < 48 ;m++){ keys[15][m] = tempKey[m]; } break;  
	   }  
	 }  
	 return keys;    
	} 
	  //================================================DES加密end




</script>
</head>
<body>
 <!-- 登录信息 -->
                <div class="col-xs-6" >
                  <div id="logo" style="margin-left:28%;margin-top:111px;">
                    <img src="${ctx}/static/images/login3.png" alt="" width="120%" height="398px">
                  </div>
                </div>
                
                <div id="login" class="col-xs-6">
                    <div id="logindiv" style='width: 70%;height: 50%;position:relative;left:-50px;top:111px;'>
                       <img src="${ctx}/static/images/login4.png" alt="" width="70%" height="398px">
                    </div>
                    <div id="formdiv" style='width: 60%;height: 50%;position:absolute;left:20px;top:180px;'>
                       
                           <form class='form-horizontal' id='loginForm' action='#' method='post' role='form'>
			                 <div class='form-group' style="position:relative;left:25%;width:80%;height:50px;"><div class='col-xs-3'><label class='control-label' style='margin:6% 6%;'><span style="font-size:18px">帐号:</span></label></div><div class='col-xs-9' style='margin:1% 0 0 -8%'><input id='username' name='username' class='form-control' sytle="background-color:#F5F7F9;" type='text' value='' /></div></div>
			                 <div class='form-group' style="position:relative;left:25%;width:80%;height:50px;"><div class='col-xs-3'><label class='control-label' style='margin:6% 6%'><span style="font-size:18px">密码:</span></label></div><div class='col-xs-9' style='margin:1% 0 0 -8%'><input id='password' name='password' class='form-control' sytle="background-color:#F5F7F9;" type='password' value='' /></div></div>
			                 <div class='form-group' style="position:relative;left:22%;width:80%;height:50px;"><div class='col-xs-3'></div><div class='col-sm-6' style='margin-left:-18px;' ><label class='checkbox' for='rememberMe' style="display:none;"><input type='checkbox'  id='rememberMe' name='rememberMe' />记住用户名</label><label class='control-label'><font  color='red'></font></label></div></div>
			                <!--  <div class='form-group' style="position:relative;left:25%;top:40px;width:80%;height:50px;"><div class='col-xs-3'><label class='control-label' style='margin:6% 6%'><span style="font-size:18px">密码:</span></label></div><div class='col-xs-9' style='margin:1% 0 0 -8%'><input id='password' name='password' class='form-control' sytle="background-color:#F5F7F9;" type='password' value='' /></div></div>
			                 <div class='form-group' style="position:relative;left:22%;width:80%;height:50px;"><div class='col-xs-3'></div><div class='col-sm-6' style='margin-left:-18px;' ><label class='checkbox' for='rememberMe' style="display:none;"><input type='checkbox'  id='rememberMe' name='rememberMe' />记住登录信息</label><label class='control-label'><font  color='red'></font></label></div></div>
			              -->
				              <div class='form-group' style="position:relative;left:25%;width:80%;height:50px;top:-60px;display:none;" id="checkCodeArea">
				              	<div class='col-xs-6'>
				              		<img src="${ctx}/index/graphics/checkCode" onclick="change(this)" style="border: 1px solid black;"/>
				              	</div>
				              	<div class='col-xs-6' style='margin:1% 0 0 -8%'>
				              		<input type="hidden" id="tokenID" name="tokenID" value="<%=TokenProcessor.createToken(session)%>">
				              		<input autocomplete="off" class="form-control" name="checkCode" id="checkCode"
										placeholder="请输入左侧验证码" maxlength="4""/>
				              	</div>
				              </div>
				              <p style="float:left;margin-left:25%;margin-top:-60px;font-family: 微软雅黑;color: red;" id="errormsg"></p>
			               </form>
			               <div style="position:relative;left:38%;">
			               <button id="loginbutton" class="btn btn-primary" style="width:25%;height:40px;">登录</button>
			               
			               
			               
			               
			               </div>
			       </div>
                </div>

    <div id="main-container">
    <div id="myCarousel" class="carousel slide" data-ride="carousel">
            <div class="container">
                <div class="col-xs-11" >
                <!-- Indicators -->
                <ol id="ol1" class="carousel-indicators" onclick="javascript:tt()">
                    <li id="t0" data-target="#carousel-example-generic" 
                        class="active"></li>
                    <li id="t1" data-target="#carousel-example-generic"></li>
                    <li id="t2" data-target="#carousel-example-generic"></li>
                     <li id="t3" data-target="#carousel-example-generic"></li>
                </ol>
                
                <!-- Wrapper for slides -->
                    <div class="carousel-inner">
                    <div id="tab0" class="item active">
                        <img src="${ctx}/static/images/indexB1.png" alt="" >
                        <div class="carousel-caption">
                            <h1 align="left">基于大数据的分析平台</h1>
                            <div class="content-div">
                            <h3><span style="font-weight:bold;">基于<span style="font-size:32px;color:rgb(255,162,0);">Hadoop</span>与<span  style="font-size:32px;color:rgb(255,162,0);">MPP</span>混搭架构的大数据分析平台</span>,具备强大的数据处理与分析能力,支持近实时的从海量的监控数据发现潜在的问题。</h3>
                            <h3 class="h-content"><span id="p1"></span><span id="p11" class="con"></span><span>T</span></h3>
                            <h3 class="h-content"><span id="p2"></span><span id="p21" class="con"></span><span>T</span></h3>
                            <h3 class="h-content"><span id="p3"></span><span id="p31" class="con"></span><span>G</span></h3>
                            </div>
                        </div>
                    </div>
                    <div id="tab1" class="item">
                        <img src="${ctx}/static/images/indexB2.png" alt="">
                        <div class="carousel-caption">
                            <h1 align="left">灵活多变的分析模型</h1>
                            <div class="content-div">
                            <h3><span style="color:rgb(255,162,0);font-weight:bold;">支持多种已验证的分析模型</span>,包括业务量类故障预警模型、平台性能类故障预警模型、业务性能类隐患模型、平台性能类隐患模型、容量压力类隐患模型等;<br><span style="color:rgb(255,162,0);font-weight:bold;">支持自定义新的分析模型</span>,可使用Shell、Perl、R等编程语言。</h3>
                            <h3 class="h-content"><span id="p4"></span><span id="p41" class="con"></span><span>个</span></h3>
                            <h3 class="h-content"><span id="p5"></span><span id="p51" class="con"></span><span>个</span></h3>
                            </div>
                        </div>
                    </div>
                    <div id="tab2" class="item">
                        <img src="${ctx}/static/images/indexB3.png" alt="">
                        <div class="carousel-caption">
                            <h1 align="left">近实时的分析结果输出</h1>
                            <div class="content-div">
                            <h3>分析模型近实时地分析最新的监控数据,输出<span style="color:rgb(255,162,0);font-weight:bold;">故障预警</span>,回顾历史数据,输出<span style="color:rgb(255,162,0);font-weight:bold;">系统性能隐患</span>,提前发现系统问题。</h3>
                            <h3 class="h-content"><span id="p6"></span><span id="p61" class="con"></span><span>个</span></h3>
                            <h3 class="h-content"><span id="p7"></span><span id="p71" class="con"></span><span>个</span></h3>
                           <!--  <h3 class="h-content"><span id="p8"></span><span id="p81" class="con"></span><span>个</span></h3> -->
                            </div>
                        </div>
                    </div>
                    <div id="tab3" class="item">
                        <img src="${ctx}/static/images/indexB4.png" alt="">
                        <div class="carousel-caption">
                            <h1 align="left">全面的分析和管理流程</h1>
                            <div class="content-div">
                      <pre>   数据预分析</pre> 
                      <pre>      数据沙盒验证</pre>  
                      <pre>         数据模型管理</pre> 
                      <pre>            告警监控</pre> 
                      <pre>               协查单管理</pre> 
                       <pre>                   故障管理</pre>               
                            </div>
                        </div>
                    </div>
                </div>
                </div>
                <div class="col-xs-1" >
                <div class="col-xs-4" ><a id="risk" href="#" onclick="javascript:riskClick()"><div class="number">隐患</div></a></div>
                <div class="col-xs-4 active" ><a id="early_warning" href="#" onclick="javascript:earlyWarningClick()"><div class="number">预警</div></a></div>
                <div class="col-xs-4" ><a id="failure" href="#" onclick="javascript:failureClick()"><div class="number">故障</div></a></div>
                <div class="col-xs-12">
                <table id="numberTable" class="table1" style="text-align:center;">
                </table>
                </div>
                </div>
            

                <!-- Controls -->
                <!-- <a class="left carousel-control" href="#myCarousel"
                    data-slide="prev"> <span
                    class="glyphicon glyphicon-chevron-left"></span> </a> <a
                    class="right carousel-control" href="#myCarousel" data-slide="next">
                    <span class="glyphicon glyphicon-chevron-right"></span> </a> -->
            </div>
        </div>
     </div>      
    <shiro:hasAnyRoles name="admin,departmentManage,companyManage,groupManage">    
    <div  id="contentdiv1">   
     <div id="content1" class="container">
            <div class="section">
                <div class="row">
                    <div class="col-xs-4">
                       <div class="number1">
                         <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom1.png" alt="" >
                         </div>
                         <div class="col-xs-9">
                         <h3 class="fontAll">数据预分析</h3>
                          <span>应用于模型创建初期和改进阶段</span>
                          <span>   <ul>
                            <li>探查不同来源数据的特征</li>
                            <li>分析关键业务的环节短板</li></ul></span>
                            <span><a href="${ctx}/MonitorOperation/RegularityAnalysis"><img src="${ctx}/static/images/indexDetail.png" alt="" ></a></span>
                         </div>
                       </div>   
                    </div>
                    <div class="col-xs-4">
                        <div class="number1">
                         <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom2.png" alt="" >
                         </div>
                         <div class="col-xs-9">
                           <h3 class="fontAll">数据沙盒</h3>
                            <span>应用于模型研究阶段</span>
                           <span>  <ul>
                            <li>沙盒数据的配置与管理</li>
                            <li>沙盒任务的配置与管理</li></ul> </span>
                            <span><a href="${ctx}/BaseManage/TaskManage/sandboxHome?selectTab=a_taskDetail"><img src="${ctx}/static/images/indexDetail.png" alt="" ></a></span>
                         </div>
                        </div>
                    </div>
                    <div class="col-xs-4">
                        <div class="number1">
                         <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom3.png" alt="" >
                         </div>
                       <div class="col-xs-9">
                            <h3 class="fontAll">数据建模</h3>
                            <span>应用于模型应用阶段</span>
                            <span> <ul>
                            <li>数据模型创建与修改</li>
                            <li>数据模型运行状态监控</li></ul></span>
                            <span><a href="${ctx}/ModelManage/ModelResult"><img src="${ctx}/static/images/indexDetail.png" alt=""></a></span>
                       </div>
                        </div>
                    </div>
                    <div class="col-xs-4">
                        <div class="number1">
                         <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom4.png" alt="" >
                         </div>
                       <div class="col-xs-9">
                            <h3 class="fontAll">告警监控</h3>   
                             <span>模型输出结果的管理</span>
                           <span>  <ul>
                            <li>预警与隐患的维护</li>
                            <li>告警统计与分析</li>
                            <li>告警明细查询</li>
                            </ul>  </span>
                             <span><a href="${ctx}/MonitorOperation/WarnAnalysis"><img src="${ctx}/static/images/indexDetail.png" alt="" ></a></span>                 
                       </div>
                        </div>
                    </div>
                    <div class="col-xs-4">
                        <div class="number1">
                         <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom5.png" alt="" >
                         </div>
                       <div class="col-xs-9">
                            <h3 class="fontAll">协查单管理</h3>
                             <span>根据模型输出结果与省公司的沟通管理</span>
                            <span> <ul>
                            <li>协查单统计与分析</li>
                            <li>协查单明细查询</li></ul></span>
                            <span><a href="${ctx}/MonitorOperation/WorkingOrderAnalysis"><img src="${ctx}/static/images/indexDetail.png" alt="" ></a></span>
                            
                       </div>
                        </div>
                    </div>
                    <div class="col-xs-4">
                        <div class="number1">
                          <div class="col-xs-3">
                           <img src="${ctx}/static/images/indexBottom6.png" alt="" >
                         </div>
                       <div class="col-xs-9">
                            <h3 class="fontAll">故障管理</h3>
                             <span>省公司确认是故障的故障信息管理</span>
                            <span><ul>
                            <li>故障创建与维护</li>
                            <li>故障统计与分析</li>
                            <li>故障明细查询</li></ul></span>
                           <span><a href="${ctx}/MonitorOperation/FailureAnalysis"><img src="${ctx}/static/images/indexDetail.png" alt="" ></a></span> 
                       </div>
                        </div>
                    </div>
                </div>

            </div>
        </div>
       </div> 
      </shiro:hasAnyRoles>  
        <!-- 工作视图 -->
 <shiro:hasAnyRoles name="businessAnalysis,dataAnalysis">      
  <div id="contentdiv2">
  <div id="content2" class="container" >
            <div class="section">
                <div class="row">
                    <div class="col-xs-12">
                       <div class="panel panel-default" >
                           <div class="panel-heading">待处理的预警和隐患<span style="float:right"><a href="${ctx}/MonitorOperation/WorkingOrderManage?warningId=-2">查看更多...</a></span></div>
                           <div class="panel-body" >
			                     <table id="indexTable1" class="table table-hover table-striped" style="text-align:center;"></table>
                          </div>
                       </div>
		            </div>
                    <div class="col-xs-12">
			        <div class="panel panel-default" >
                           <div class="panel-heading">发出的预警和隐患相关未关闭的协查单<span style="float:right"><a href="${ctx}/MonitorOperation/WorkingOrderReasult?xcdId=-8">查看更多...</a></span></div>
                           <div class="panel-body">
			                     <table id="indexTable2" class="table table-hover table-striped"  style="text-align:center;"> </table>
                         </div>
                    </div>
			        </div>
                </div>
           </div>
     </div>
  </div> 
  </shiro:hasAnyRoles>
 <%--  <input type="hidden" id="xcdWarning" value='${xcdWarningInfo}'>
  <input type="hidden" id="xcdDetail" value='${xcdDetailInfo}'> --%>
     <script type="text/javascript" src="${ctx}/static/js/indexTable.js"></script> 
     <script type="text/javascript" src="${ctx}/static/js/indexTable1.js"></script>
      <script type="text/javascript" src="${ctx}/static/js/indexTable2.js"></script>
    <script type="text/javascript">
    function earlyWarningClick() {
    $("#early_warning").parent().attr("class","col-xs-4 active");
    $("#risk").parent().attr("class","col-xs-4 ");
    $("#failure").parent().attr("class","col-xs-4");
       indexTable('early_warning');
       j=1;
    }
    function riskClick() {
    $("#early_warning").parent().attr("class","col-xs-4");
    $("#risk").parent().attr("class","col-xs-4 active");
    $("#failure").parent().attr("class","col-xs-4");
       indexTable('risk');
       j=2;
    }
    function failureClick() {
    $("#early_warning").parent().attr("class","col-xs-4");
    $("#risk").parent().attr("class","col-xs-4");
    $("#failure").parent().attr("class","col-xs-4 active");
       indexTable('failure');
       j=3;
    }
    
   function numAuto() {
    console.log($(".col-xs-4.active").find("a").attr("id"));
    indexTable($(".col-xs-4.active").find("a").attr("id"));
    } 
     var j = 1;
    function tabNum() {
      if(j == 1) {
        earlyWarningClick();
      }else if (j == 2) {
        riskClick();
      }else if(j == 3) {
        failureClick();
        j = 0;
      }
      j++;
        
    }
    
    
    //add by Eric 2014-05-15 17:52 start
  //链接至告警明细相关信息页面
    function openDialog(warningID,WarningSourceTag,DataSourceTag,channelId,businessId,kpiId,configItemId,provinceId,warningTitle,provinceName,channelName,businessName,dataSourceName,warningSourceName,kpiCode,kpiName,ciCode,ciName,providerName,importanceLevelName,occurTime,closeTime,workingOrderCode,relevantFailureId,riskEarlyWarningTypeId,dataModelName,closestatus,warningStatus) {
        $.dialog({
            title:'告警明细相关信息页面 告警ID:'+warningID, 
            content:"<div class='dialog-p'>"
                + "<div class='col-xs-12'><div class='panel panel-default'><div class='panel-heading'>告警明细</div><div class='panel-body'><table class='table table-vertical'><tr><td>告警标题</td><td colspan='7'>"+warningTitle+"</td></tr><tr><td width='10%'>告警ID</td><td>"+warningID+"</td><td width='10%'>省份</td><td>"+provinceName+"</td><td width='10%'>业务</td><td>"+businessName+"</td><td width='10%'>渠道</td><td>"+channelName+"</td></tr><tr><td>指标编码</td><td>"+kpiCode+"</td><td>指标名称</td><td>"+kpiName+"</td><td>相关集成商</td><td>"+providerName+"</td><td>告警级别</td><td>"+importanceLevelName+"</td></tr><tr><td>配置项编码</td><td>"+ciCode+"</td><td>配置项名称</td><td>"+ciName+"</td><td>关闭类型</td><td>"+closestatus+"</td><td>告警状态</td><td>"+warningStatus+"</td></tr><tr><td>发生时间</td><td>"+occurTime+"</td><td>结束时间</td><td>"+closeTime+"</td><td>协查单号</td><td>"+workingOrderCode+"</td><td>故障单号</td><td>"+relevantFailureId+"</td></tr><tr><td>分析模型</td><td>"+dataModelName+"</td><td width='10%'>数据来源</td><td>"+dataSourceName+"</td><td width='10%'>告警来源</td><td>"+warningSourceName+"</td><td></td><td></td></tr></table> </div> </div> </div>"//告警明细,参数从外部传入
                + ((WarningSourceTag==2||WarningSourceTag==3)?"<div class='dialog-p'><div name='loading' class='loading' style='top:270px;height:300px'><img src='${ctx}/static/images/loading.gif'/></div><iframe id='ewarningIf' style='height:300px;padding: 7px;' scrolling='no' src='${biserver_config}&path=MonitorOperation/WarnAnalysis&action=GJFX_DETAIL_RELATED_EWARN.xaction&wrapper=false&height=208&WarningID="+warningID+"&WarningSourceTag="+WarningSourceTag+"&DataSourceTag="+ DataSourceTag+"&ChannelTag="+ channelId+"&BusinessTag="+ businessId+"&KPITag="+ kpiId+"&ConfigItemTag="+ configItemId+"&ProvinceTag="+ provinceId+"&occurTimeTag="+((occurTime!='')?occurTime:"2014-01-01 00:00:00") +"'></iframe></div><br/>":"")//iframe,当为预警或隐患时显示iframe
                + "<div id='xcdList'> "
                + "<div class='col-xs-6'><div class='panel panel-default'><div class='panel-heading'>协查单</div><div class='panel-body'> <table class='table table-hover table-striped'> <thead> <tr> <th width='15%'>编号</th> <th width='45%'>协查单标题</th> <th width='20%'>开始时间</th> <th width='20%'>结束时间</th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> "//协查单
                + "<div  class='col-xs-6'><div class='panel panel-default'><div class='panel-heading'>变更单</div><div class='panel-body'>  <table class='table table-hover table-striped'> <thead> <tr> <th width='15%'>编号</th> <th width='45%'>变更单标题</th> <th width='20%'>开始时间</th> <th width='20%'>结束时间</th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> "//变更单 
                +"</div>",
            lock: true, 
            initialize:function(){
                $('#ewarningIf').load( function(){ $(this).parent().find('.loading').fadeOut("fast"); });
                var ajax_url='${ctx}/MonitorOperation/WarnAnalysisDetail/getWorkingOrderInfo/'+warningID+'/'+((warningStatus=='已关联协查单')?'null':riskEarlyWarningTypeId)+'/';//当已关联协查单时为null,输出关联的协查单;其他情况传入分析模型id继续查找协查单并输出
                $.ajax({
                    type : 'GET',
                    contentType : 'application/json',
                    url: ajax_url,
                    dataType : 'text',
                    beforeSend: function(data) {},
                    success: function(data) {
                        var obj = JSON.parse(data),  //由JSON字符串转换为JSON对象
                            a_link=" target='_blank' href='${ctx}/MonitorOperation/WorkingOrderDetail?xcdCode=";
                        for(var j=0;j<obj.length&&j<$('#xcdList tbody').length;j++){
                            for(var i=0;i<obj[j].length;i++){
                                $('#xcdList tbody').eq(j).append($("<tr></tr>")
                                    .append((String(obj[j][i][0]).length<27)?//当字数多于两行时隐藏用省略号,协查单时需添加链接
                                        (j==0)?$("<td></td>").append($("<a"+a_link+obj[j][i][0]+"'></a>").html(obj[j][i][0])):$("<td></td>").html(obj[j][i][0]):
                                        (j==0)?$("<td></td>").attr('title',obj[j][i][0]).append($("<a"+a_link+obj[j][i][0]+"'></a>").html(obj[j][i][0].substring(0,26)+'..')):$("<td></td>").attr('title',obj[j][i][0]).html(obj[j][i][0].substring(0,26)+'..'))                    
                                    .append((String(obj[j][i][1]).length<27)?
                                        $("<td></td>").html(obj[j][i][1]):
                                        $("<td></td>").attr('title',obj[j][i][1]).html(obj[j][i][1].substring(0,26)+'..'))
                                    .append("<td>"+((obj[j][i][2]!=null&&obj[j][i][2]!='')?formatDate(obj[j][i][2],"yyyy-MM-dd HH:mm:ss"):"")+"</td>")
                                    .append("<td>"+((obj[j][i][3]!=null&&obj[j][i][3]!='')?formatDate(obj[j][i][3],"yyyy-MM-dd HH:mm:ss"):"")+"</td>")); 
                            }
                        }
                    }
                });
            }
        });         
    }
//add by Eric 2014-05-15 17:52 end 
  
    </script>
</body>
</html>