<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="org.apache.commons.io.*" %>
<%@ page import="com.csc.library.utilities.UProfile" %>
<%@ page import="com.csc.library.fileutils.*" %>
<%@ page import="com.csc.library.upload.*" %>
<%@ page import="com.csc.library.upload.utils.*" %>
<%@ page import="com.csc.library.upload.UploadConfig" %>
<%@ page import="com.csc.library.session.InitialEnvironment" %>
<%@ page import="com.csc.library.download.FileDownloadUtils2" %>
<jsp:useBean id="uploadbean" class="com.csc.library.upload.CscFileUpload" scope="request" />
<%
		String cancel = "", root = "", folder= "", fieldreturn = "", filter = "", uploadfield ;
		boolean blacklistenabled=false;
		int fileCount =1;
		long filesizemax=-1; 
		
		uploadfield = request.getParameter("uploadfield");
		fieldreturn = request.getParameter("fieldreturn");	
		
		//String configpath = application.getRealPath(application.getInitParameter("upload-config"));
		//System.out.println("upload config=" +configpath);
			
		try {
		
			UploadConfig uconfig = new UploadConfig( );
			//uconfig.load();
			uconfig.setUploadField( uploadfield );
			
			root = uconfig.getRoot();
			folder = uconfig.getFolder();
			filter=uconfig.getFilter();
			blacklistenabled =  uconfig.isBlacklistenabled();
			filesizemax = uconfig.getFileSizeMax();
			fileCount = uconfig.getFileCount();
			
		} catch (Exception e) {
			 request.setAttribute("error", e.getMessage() );
		}

		if(CscFileUpload.isMultipartFormData( request ) ) {
		
			 try {
			 
				uploadbean.setProgressListener(new FileUploadProgressListener(request, 30) );
				uploadbean.setFileSizeMax(filesizemax);	
				//uploadbean.setSizeMax(1048576);		// 1MB
				uploadbean.process( request );
				//HashMap parameter = uploadbean.getParameter();
				HashMap files = uploadbean.getFiles();
				
				String uploadpath;	
				InitialEnvironment env = new InitialEnvironment("GLOBAL");
				uploadpath = env.getValue( root +"-dir"  );
				if( folder != null && !("").equals(folder) ) {
					uploadpath = uploadpath +folder;
				}
						
				uploadbean.setUploadDirectory( uploadpath );
				uploadbean.setFileFilter( filter );
				uploadbean.setBlacklistEnabled( blacklistenabled );
				//uploadbean.setBlacklistEnabled( true );
				uploadbean.setFileRenamePolicy( new TimeStampFileRename() );
						

				System.out.println("Process file upload ");
						
				if(FileUploadUtils.getUploadInfo(request).isCancel()) {
					request.setAttribute("cancel", "Upload cancel.");
					System.out.println("jsp-Cancel");
							
				} else if( files != null && files.size()>0 ) {
					uploadbean.save();
					request.setAttribute("success", "The file was uploaded successfully!");
					System.out.println("jsp-success");
							
				} else {
					 request.setAttribute("error", "No file upload");
					 System.out.println("jsp-error : No file upload");
				}
			
			} catch(Exception e) {
				 	request.setAttribute("error", e.getMessage());
				 	System.out.println("jsp-error :" +e.getMessage());
			}
			
		}
		
		UProfile uprofile = (UProfile)request.getSession().getAttribute("userprofile");
		String lang= "tha";
		if( uprofile!= null && uprofile.get("lang")!=null ) {
			lang = uprofile.get("lang");
		}
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="CSS/TISCO.css" />
<link rel="stylesheet" type="text/css" href="CSS/UPLOAD_UI.css" />
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/UploadMonitor.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/engine.js"></script>
<script type="text/javascript" src="JS/JavaUtils.js"></script>
<script type="text/javascript" src="JS/FilenameUtils.js"></script>
<script type="text/javascript" src="JS/UPLOAD2.js"></script>
<script type="text/javascript">

var fileFilter, restrict;
var lang = "<%=lang%>";
function activeButton(obj, active){
}
function cancelUpload(){
	activeButton($("cancelButton"), false);
	if(submitted) {
		cancelProgress();
	}else {
		closePage();
	} 
}

function closePage() {
	window.close();
}

function reloadPage() {
	window.location.replace( window.location.href );
}

function uploadReturn(){
	with(document.cscform) {
		var fieldreturn = window.opener.document.getElementsByName(__fieldreturn.value)[0];
		var cmd = window.opener.document.getElementsByName("__cmd")[0];
		var cmdchild = window.opener.document.getElementsByName("__cmdchild")[0];
		fieldreturn.value = __uploadreturn.value;
		cmd.value = 'refresh';
		if(cmdchild != null && typeof(cmdchild) !="undefined" ) {
			cmdchild.value = 'upload';
		}
		window.opener.document.cscform.submit();
	}
}

function uploadInputChanged(obj){
	numOfFileUploads=0;
	var _up = $("fileUploads");
	var c = _up.getElementsByTagName("input");
	for(var i=0; i<c.length; i++) {
		var a=c[i];
		if(a.getAttribute("type")==="file" && a.value!==null &&a.value.length>0) {
			numOfFileUploads++;
		}
	}
	activeButton($("uploadButton"), (numOfFileUploads>0 && !submitted));
}

function initialFileFilter() {
	with(document.cscform) {
		fileFilter = __filter.value.split(",");
		restrict = (__blacklistenabled.value=="true");
	}
}
function fileIsAllow(filename) {
	var isMatch = false;
	for( var i=0; i<fileFilter.length; i++) {
		var isMatch = FilenameUtils.wildcardMatch( filename, fileFilter[i], false );
		if( isMatch ){
			break;
		}
	}
	if( restrict ) {
		return !isMatch;
	}
	return isMatch;
}
function resetFile() {
	$("cscform").reset();
	uploadInputChanged();
}
function chkFileUpload(e, obj) {
	var filename = obj.value;
	var fileExt = FilenameUtils.getExtension(filename);
	if( filename != "" ) {
		if( !fileIsAllow(filename) ) {
			alert( formatString(messages[lang]["upload-file-not-allow"], fileExt ));
			resetFile(obj);
			return false;   
		} else {
			uploadInputChanged(obj);
		}
	} 
}
/*
// used input image and set on form submit = startProgress;
function processUpload(){
	with(document.cscform) {
		submit();
		startProgress();
	}
}
*/
</script>
<style type="text/css">
#mainMasterTable { background: #efefef; }
#preUpload { /*padding-left: 30px;*/ }
.subText2 { color: #000000; }
.input-image { height: 23px; min-width: 73px; border: 0px solid none; }
</style>
</head>
<body>
<div id="wrapper">

<table align="center" cellpadding="0" cellspacing="0" id="mainMasterTable">
      <tr>
        <td class="header">UPLOADFILE,&nbsp;<script type="text/javascript">document.write( messages[lang]["upload-page-title"] );</script>&nbsp;</td>
      </tr>
      
      
          <% if (request.getAttribute("cancel") != null) { %>

	<tr>
      <td valign="top">
        <div class="globalContentSpacing">
        
		<table border="0" cellpadding="0" cellspacing="0" class="maxsize">
          <tr>
            <td width="48" height="48" rowspan="2"><span id="titleIcon"><img src="IMAGES/UPLOAD/ICON/Symbols-Warning-48x48.gif" width="48" height="48" align="absmiddle" /></span></td>
            <td><h1 class="pageTitle"><span id="titleText"><script type="text/javascript">document.write( messages[lang]["upload-cancel-title"] );</script></span></h1></td>
          </tr>
          <tr>
            <td><div class="subText" id="pageSubText"></div></td>
          </tr>
        </table>
       <div id="postUpload" class="displayVisible">  
          <div class="pageTitlePadding"></div>
          
         <div class="uploadContent">         
          	<div class="message"><p><script type="text/javascript">document.write( messages[lang]["upload-cancel-message"] );</script></p></div>
          </div>
          <div class="pageTitlePadding"></div>
          </div>
        </div>
          
      </td>
    </tr>
    <tr id="buttonBarRow">
      <td height="40">
        <div id="buttonCancel" class="buttonline" align="center">
            <a href="javascript:;" onClick="reloadPage();"><img src="IMAGES/BUTTON/RETRY.gif" width="73" height="23" border="0"></a>
            <a href="javascript:;" onClick="closePage();"><img src="IMAGES/BUTTON/CLOSE.gif" width="73" height="23" border="0"></a>        </div>
      </td>
    </tr>


<% } else if (request.getAttribute("error") != null) { %>
	<tr>
      <td valign="top">
        <div class="globalContentSpacing">
        
        
		<table border="0" cellpadding="0" cellspacing="0" class="maxsize">
          <tr>
            <td width="48" height="48" rowspan="2"><span id="titleIcon"><img src="IMAGES/UPLOAD/ICON/Symbols-Error-48x48.gif" width="48" height="48" align="absmiddle" /></span></td>
            <td><h1 class="pageTitle"><span id="titleText"><script type="text/javascript">document.write( messages[lang]["upload-error-title"] );</script></span></h1></td>
          </tr>
          <tr>
            <td><div class="subText" id="pageSubText"><script type="text/javascript">document.write( messages[lang]["upload-error-sub"] );</script></div></td>
          </tr>
        </table>             
        
        <div id="postUpload" class="displayVisible">
        
          <div class="pageTitlePadding"></div>
          
		  <div class="uploadContent">
          	<div class="message"><p><%=request.getAttribute("error")%></p></div>
          </div>
          
          <div class="pageTitlePadding"></div>
          
          </div>
        </div>
          
      </td>
    </tr>
    <tr id="buttonBarRow">
      <td height="40">
       <div id="buttonError" class="buttonline" align="center">
            <a href="javascript:;" onClick="reloadPage();"><img src="IMAGES/BUTTON/RETRY.gif" width="73" height="23" border="0"></a>
            <a href="javascript:;" onClick="closePage();"><img src="IMAGES/BUTTON/CLOSE.gif" width="73" height="23" border="0"></a></div>
      </td>
    </tr>

   
<% }	else if (request.getAttribute("success") != null) { %>
    <form name="cscform" id="cscform" method="post" action="?<%=request.getQueryString()%>">
        <input type="hidden" name="__fieldreturn" value="<%=fieldreturn %>" />
	<tr>
      <td valign="top">
        <div class="globalContentSpacing">

		<table border="0" cellpadding="0" cellspacing="0" class="maxsize">
          <tr>
            <td width="48" height="48" rowspan="2"><span id="titleIcon"><img src="IMAGES/UPLOAD/ICON/Symbols-Tips-48x48.gif" width="48" height="48" align="absmiddle" /></span></td>
            <td><h1 class="pageTitle"><span id="titleText"><script type="text/javascript">document.write( messages[lang]["upload-success-title"] );</script></span></h1></td>
          </tr>
          <tr>
            <td><div class="subText" id="pageSubText"><script type="text/javascript">document.write( messages[lang]["upload-success-sub"] );</script></div></td>
          </tr>
        </table> 
        
          <div id="postUpload" class="displayVisible">
                 
          <div class="pageTitlePadding"></div>
		
        <div class="uploadContent">
          
          	<div id="fileUploads">
            <% 
                ArrayList history = uploadbean.getHistory();
            	StringBuffer uploadReturn = new StringBuffer();
				FileDownloadUtils2 utils = null;
				System.out.println(history.size());
				
				if( history.size()==1) {
					UploadParameters up = (UploadParameters)history.get(0);
					uploadReturn.append(up.getFilename());
					utils = new FileDownloadUtils2(uploadfield, up.getFilename());
			%>
             <div class="listFiles">
             	<span class="attachIcon"><img src="IMAGES/UPLOAD/ICON/ATTACH-ICON.gif" /></span>
                <a href="<%=utils.getDownloadUrl()%>"><%=up.getOrgFilename()%></a>&nbsp;[<%=FileUtils.byteCountToDisplaySize(up.getFilesize())%>]</div>
             <%
				} else {
					for( int i=0; i<history.size(); i++) {
						
						UploadParameters up = (UploadParameters)history.get(i);
						uploadReturn.append(up.getFilename()).append(",");
						utils = new FileDownloadUtils2(uploadfield, up.getFilename());
			%>
			<div class="listFiles">
            	<span class="attachIcon"><img src="IMAGES/UPLOAD/ICON/ATTACH-ICON.gif" /></span>
                <a href="<%=utils.getDownloadUrl()%>"><%=up.getOrgFilename()%></a>&nbsp;[<%=FileUtils.byteCountToDisplaySize(up.getFilesize())%>]</div>
			<%
					}
				}
           %><input type="hidden" id="__uploadreturn" name="__uploadreturn" value="<%=uploadReturn.toString() %>" />
            </div>
          
          </div>
          
          <div class="pageTitlePadding"></div>
          </div>
        </div>
        <script type="text/javascript">uploadReturn();</script>
          
      </td>
    </tr>
    <tr id="buttonBarRow">
      <td height="40">
        <div id="buttonSuccess" class="buttonline" align="center">
            <a href="javascript:;" onClick="closePage();"><img src="IMAGES/BUTTON/CLOSE.gif" width="73" height="23" border="0"></a></div>
      </td>
    </tr>
    </form>
    
      <% } else {%>
    	<% FileUploadUtils.removeUploadInfo(request); %>
    <form name="cscform" id="cscform" enctype="multipart/form-data" method="post" action="?<%=request.getQueryString()%>"  onsubmit="return startProgress();" >
        <input type="hidden" name="__blacklistenabled" value="<%=blacklistenabled %>" />
        <input type="hidden" name="__filter" value="<%=filter %>" />
        <input type="hidden" name="__fieldreturn" value="<%=fieldreturn %>" />
        <script type="text/javascript">initialFileFilter();</script>
  
      <tr>
        <td>
        	
           <div class="globalContentSpacing">
			
          
          <table border="0" cellpadding="0" cellspacing="0" class="maxsize">
          <tr>
            <td width="48" height="48" rowspan="2"><span id="titleIcon"><img src="IMAGES/UPLOAD/ICON/Earth-Upload-48x48.gif" width="48" height="48" align="absmiddle" /></span></td>
            <td><h1 class="pageTitle"><span id="titleText"><script type="text/javascript">document.write( messages[lang]["upload-title"] );</script></span></h1></td>
          </tr>
          <tr>
            <td><div class="subText" id="pageSubText"><script type="text/javascript">document.write( messages[lang]["upload-message"] );</script></div></td>
          </tr>
        </table>
        
          <div id="preUpload" class="displayVisible">
        
          <div class="pageTitlePadding"></div>
          
            <div class="uploadContent">
                <div class="message"><script type="text/javascript">//document.write( messages[lang]["upload-message"] );</script></div>
                <div id="fileUploads">
                <% for(int index=1; index<= fileCount; index++) {%>
                  <input type="file" id="fileUpload<%=index %>" name="fileUpload<%=index %>" size="50" class="fileUploadBox" onchange="chkFileUpload(event, this);" onkeyup="chkFileUpload(event, this);"  />
                <%}%>  
                </div>
                
                 <div class="pageTitlePadding"></div>
                 
                <div class="subText2"><% if(filesizemax>0) {%><script type="text/javascript">document.write( messages[lang]["upload-max-size"] );</script>:&nbsp;<span><%=FileUtils.byteCountToDisplaySize(filesizemax)%> <%}%></span></div>
                <div class="subText2"><script type="text/javascript">document.write( messages[lang]["extensions<% if(blacklistenabled){%>-not<%}%>-allow"] );</script>:&nbsp;<span><%=filter%></span></div>
            </div>
            
             <div class="pageTitlePadding"></div>
             
          </div>
          
          <div id="duringUpload" class="displayVisible">
          		
             <div class="pageTitlePadding"></div>
                
                <div class="uploadContent">
                
                <div id="progressBar">
                   <div id="progressBarText">Upload in progress: 0% </div>
                   <div id="progressBarBox">
                      <div id="progressBarBoxContent" style="width:1px;"></div>
                   </div>
                    <div id="progressStatusText">Status : Upload start</div>
              </div>
              
              </div>
              <div class="pageTitlePadding"></div>
              
          </div>
          
          <div id="postUpload" class="displayVisible">  
              <div class="pageTitlePadding"></div>
              <div class="uploadContent">         
                <div class="message"><p><script type="text/javascript">document.write( messages[lang]["upload-cancel-message"] );</script></p></div>
              </div>
              <div class="pageTitlePadding"></div>
          </div>
          
          <script type="text/javascript">setVisible($("duringUpload"), false);</script>
          <script type="text/javascript">setVisible($("postUpload"), false);</script>

        </div>
           
     </td>
      </tr>
        <tr id="buttonBarRow">
          <td height="40">
            <div id="buttonUpload" class="buttonline" align="center">
                 <!--a href="javascript:;" onClick="processUpload();"><img src="IMAGES/BUTTON/UPLOAD.gif" width="73" height="23" border="0"></a-->
                 <input name="btnUpload" type="image" class="input-image" id="btnUpload" value="upload" src="IMAGES/BUTTON/UPLOAD.gif"  border="0" />
                 <a href="javascript:;" onClick="cancelUpload();"><img src="IMAGES/BUTTON/CANCEL.gif" width="73" height="23" border="0"></a>
            </div>
            <div id="buttonCancel" class="buttonline" align="center">
                <a href="javascript:;" onClick="reloadPage();"><img src="IMAGES/BUTTON/RETRY.gif" width="73" height="23" border="0"></a>
                <a href="javascript:;" onClick="closePage();"><img src="IMAGES/BUTTON/CLOSE.gif" width="73" height="23" border="0"></a>
             </div>
    		<script type="text/javascript">setVisible($("buttonCancel"), false);</script>
          </td>
        </tr>
      </form> 
      <% } %> 
      
        <tr>
        <td class="blankspace"></td>
      </tr>
      <tr>
        <td  class="bottom"></td>
      </tr>
</table>

</div>

</body>
</html>