var hostname  = window.location.hostname;
var po = window.location.port;
var port ;

if ( po == '' ) {
	port = 80;
}
else {
	port = parseInt( po, 10 );
}

var desc_upload ='';// '파일을 암호화하여 전송합니다...';
var initdir_up = ''; // v 2.1.4 add



var agt=navigator.userAgent.toLowerCase();
var is_gecko = (agt.indexOf('gecko') != -1);
var is_linux = (agt.indexOf('linux') != -1);

//////////////////////////////////////////////////////////////////////////////////
//	Xecure 함수들....
function UserAgent()
{
	return navigator.userAgent.substring(0,9);
}

function IsNetscape()			// by Zhang
{
	if(navigator.appName == 'Netscape')
		return true ;
	else
		return false ;
}

//----------------------------------------------------------------------------------플러그인 추가사항 2009.04.28


//var gXWBrowser = new XWBrowser();

function PrintFileObjectTag()
{
	//aObjectTag = gXWBrowser.getObjectTag(1);
	
	aObjectTag = gXWBrowser.getFileObjectTag(1);
	
	document.write (aObjectTag);

}


function IsNetscape60()			// by Zhang
{
	if (is_gecko) 
		return false;
	else if(IsNetscape() && UserAgent() == 'Mozilla/5')
		return true ;
	else
		return false ;
}

function IsWindow()
{
  if ((gXWBrowser.mPlatform == gXWBrowser.cWIN) || (gXWBrowser.mPlatform == gXWBrowser.cWIN32) || (gXWBrowser.mPlatform == gXWBrowser.cWIN64))
    return true;
  else
    return false;
}

function IsLinux()
{
  if ((gXWBrowser.mPlatform == gXWBrowser.cLINUX) || (gXWBrowser.mPlatform == gXWBrowser.cLINUX32) || (gXWBrowser.mPlatform == gXWBrowser.cLINUX64))
    return true;
  else
    return false;
}

function IsSafari()
{
	var kitName = "applewebkit/";
	var tempStr = navigator.userAgent.toLowerCase();
	var pos = tempStr.indexOf(kitName);
	var pos_ppc = tempStr.indexOf("ppc");
	var isAppleWebkit = (pos != -1);
	var isppc = (pos_ppc != -1);
	
	if (isAppleWebkit && isppc) 
	{
		return 1;
	} 
	else if (isAppleWebkit)
	{
		return 2;
	}
	else 
	{
  		return 0;
	}
}

function IsOpera()
{
    if (navigator.appName == 'Opera')
        return true;
    else
        return false;
}

function XecureUnescape(Msg)		
{
	if(IsNetscape() && !is_gecko)
		return unescape(Msg) ;
	else
		return Msg ;
}

function XecureEscape(Msg)		
{
	if(IsNetscape() && !is_gecko)
		return escape(Msg) ;
	else
		return Msg ;
}

//------------------------------------------------------------------------플러그인 추가 및 수정사항 2009.04.28



String.prototype.replaceAll = function(searchStr, replaceStr) {
    var temp = this;
    
    while (temp.indexOf(searchStr) != -1) {
        temp = temp.replace(searchStr, replaceStr);
    }
    
    return temp;
}





function EAlert ( errCode, errMsg ) {
        alert( "에러코드 : " + errCode + "\n\n" + errMsg );
}


function Agent()
{
        var str;
        var agent;

        str = navigator.userAgent;
        agent = str.substring(0,9);
        return agent;
}


function FileUpload(link)
{
	var qs;
	var errCode;
	var errMsg='';
	var extname;
	var filename;
	var docKind;
	var agent = Agent();

	//alert("filename of FileUpload : "+ filename);

	qs = link.search;
	if ( qs.length > 1 ) {
    	qs = link.search.substring(1);
	}
     
	path = link.pathname;
	ext = path.lastIndexOf('.');
	//php확장자가 php3 php4 phps php 인 경우에 대해서 처리한다. 그 이외의 경우에는 조건문에 추가해 준다.
	extname = path.substring(ext + 1, ext + 4);
	if(extname == 'php')
		docKind = "php";
	else
		docKind	= "jsp";
	if(navigator.appName == 'Netscape') {
    	if(agent != 'Mozilla/5') {
			filename = document.FileAccess.FileSelect2(escape(initdir_up));
   			if( filename == "" ) {
				errCode = document.FileAccess.LastErrCode();
				errMsg = unescape(document.FileAccess.LastErrMsg());
				EAlert( errCode, errMsg );
    			return false;
			}
			else if( filename == "CANCEL" )
    		{
    			alert('암호화 파일 전송이 취소되었습니다!');
       			return false;
    		}
			if(docKind == "php")
				r = document.FileAccess.FileUpload(
					xgate_addr, "/cgi-bin/xw_upload.cgi", "", hostname, port, filename, escape(desc_upload));
			else
    			r = document.FileAccess.FileUpload(
					xgate_addr, path, escape(qs), hostname, port, filename, escape(desc_upload));
			if( r== "" )
   			{
   				errCode = document.FileAccess.LastErrCode();
   				errMsg = unescape(document.FileAccess.LastErrMsg());
				EAlert( errCode, errMsg );
   				return false;
   			}
		}
		else { 
			filename = document.FileAccess.nsIXecureFileInstance.FileSelect2(escape(initdir_up));
	   		if( filename == "" ) {
    			errCode = document.FileAccess.nsIXecureFileInstance.LastErrCode();
    			errMsg = unescape(document.FileAccess.nsIXecureFileInstance.LastErrMsg());
				EAlert( errCode, errMsg );
    			return false;
    		}
			r = document.FileAccess.nsIXecureFileInstance.FileUpload(
					xgate_addr, path, escape(qs), hostname, port, filename, escape(desc_upload));
	   		if( r== "" )
	   		{
	    		errCode = document.FileAccess.nsIXecureFileInstance.LastErrCode();
	    		errMsg = unescape(document.FileAccess.nsIXecureFileInstance.LastErrMsg());
				EAlert( errCode, errMsg );
	    		return false;
	   		}
		}
	}


	else
	{	/* Explorer */
		//	alert("Expolor");
      		path = "/" + path;
		filename = document.FileAccess.FileSelect2(initdir_up);
		alert("filename = " + filename);
	 	if( filename == "" )
	 	{
	     		errCode = document.FileAccess.LastErrCode();
	     		errMsg = unescape(document.FileAccess.LastErrMsg());
			EAlert( errCode, errMsg );
	       		return false;
    		}
    		
    		else if( filename == "CANCEL" )
		{
			alert('암호화 파일 전송이 취소되었습니다!');
   			return true;
		}
		
		if(docKind == "php")
    			r = document.FileAccess.FileUpload(xgate_addr, "/cgi-bin/xw_upload.cgi" ,"",hostName, port, filename, desc_upload);
    		else
            {
    			// Explorer 의 경우 파일 암호화 하여 업로드 하는 부분
			r = document.FileAccess.FileUpload(xgate_addr, path , qs , hostname, port, filename, desc_upload);
            alert("r = "+r);
            }
	   	

	   	if( r== "" )
	   	{
	      		errCode = document.FileAccess.LastErrCode();
	       		errMsg = document.FileAccess.LastErrMsg();
			EAlert( errCode, errMsg );
	       		return false;
	  	}
    	}

	if( r == 'OK' ){
		alert('암호화 파일 전송이 완료되었습니다!');
		return true;
	}
	
	if( r == 'CANCEL'){
		alert('암호화 파일 전송이 취소되었습니다!');
		return false;
	}
	

	if( r != '') {
    alert("test");
		redirect = BlockDec(r);
		path='fileindex.html';
		if(redirect == null || redirect.length == 0){
			alert('암호화 파일 전송이 실패하였습니다!');
			return false;
		}
		if(qs.length > 1) {
			redirect = path + "?" + redirect + "&" + qs;
		}
		else{
			redirect = path + "?" + redirect;
		}
		//alert(redirect);
	    XecureNavigate( redirect, '_self' )
		return true;
	}
    return false;
}


function FileUploadEx3( filePath, form, upOption )

{
	//alert("filePath="+filePath);
	var qs;
	var errCode;
	var errMsg='';
	var extname;
	var filename;
	var docKind;
	var agent = Agent();
	var path;

	qs_begin_index = form.action.indexOf('?');
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = form.action.substring(qs_begin_index + 1, form.action.length );
 	}
	
	path = getPath(form.action)
	ext = path.lastIndexOf('.');
        
	//php확장자가 php3 php4 phps php 인 경우에 대해서 처리한다. 그 이외의 경우에는 조건문에 추가해 준다.

	extname = path.substring(ext + 1, ext + 4);
	if(extname == 'php')
		docKind = "php";
	else
		docKind	= "jsp";

	if(navigator.appName == 'Netscape') {

    	if(agent != 'Mozilla/5') {
			filename = document.FileAccess.FileSelect2(escape(initdir_up));

   			if( filename == "" ) {
				errCode = document.FileAccess.LastErrCode();
				errMsg = unescape(document.FileAccess.LastErrMsg());
				EAlert( errCode, errMsg );
    			return false;
			}
			else if( filename == "CANCEL" )
    		{
    			alert('암호화 파일 전송이 취소되었습니다!');
       			return false;
    		}

			if(docKind == "php")
				r = document.FileAccess.FileUpload(
					xgate_addr, "/cgi-bin/xw_upload.cgi", "", hostname, port, filename, escape(desc_upload));
			else
    			r = document.FileAccess.FileUpload(
					xgate_addr, path, escape(qs), hostname, port, filename, escape(desc_upload));

			if( r== "" )
   			{
   				errCode = document.FileAccess.LastErrCode();
   				errMsg = unescape(document.FileAccess.LastErrMsg());
				EAlert( errCode, errMsg );
   				return false;
   			}
		}
		else { 
			filename = document.FileAccess.nsIXecureFileInstance.FileSelect2(escape(initdir_up));
	   		if( filename == "" ) {
    			errCode = document.FileAccess.nsIXecureFileInstance.LastErrCode();
    			errMsg = unescape(document.FileAccess.nsIXecureFileInstance.LastErrMsg());
				EAlert( errCode, errMsg );
    			return false;
    		}

	    	r = document.FileAccess.nsIXecureFileInstance.FileUpload(
					xgate_addr, path, escape(qs), hostname, port, filename, escape(desc_upload));

	   		if( r== "" )
	   		{
	    		errCode = document.FileAccess.nsIXecureFileInstance.LastErrCode();
	    		errMsg = unescape(document.FileAccess.nsIXecureFileInstance.LastErrMsg());
				EAlert( errCode, errMsg );
	    		return false;
	   		}
		}
	}

    else  {	/* Explorer */

      	//path = "/" + path;
      		if( filePath == "" )
			filename = document.FileAccess.FileSelect2(initdir_up);
		else
			filename = filePath;

	 	if( filename == "" ) {
     		errCode = document.FileAccess.LastErrCode();
     		errMsg = unescape(document.FileAccess.LastErrMsg());
			EAlert( errCode, errMsg );
       		return false;
    	}

    	else if( filename == "CANCEL" )
		{
			alert('암호화 파일 전송이 취소되었습니다!');
   			return true;
		}
		if(docKind == "php")
    		r = document.FileAccess.FileUploadEx(
					xgate_addr, "/cgi-bin/xw_upload.cgi" ,"", 
					hostname, port, filename, desc_upload, upOption);
    	else
    		r = document.FileAccess.FileUploadEx(
					xgate_addr,path ,qs, hostname, port, filename, desc_upload, upOption);
                    
	   	//alert("r:" + r + ":");
        
        if( r== "" )
	   	{
      		errCode = document.FileAccess.LastErrCode();
       		errMsg = document.FileAccess.LastErrMsg();
			EAlert( errCode, errMsg );
       		return false;
	   	}
    }

	if( r == 'OK' ){
		//alert('암호화 파일 전송이 완료되었습니다!');
		return true;
	}
	if( r == 'CANCEL'){
		alert('암호화 파일 전송이 취소되었습니다!');
		return false;
	}

	if( r != '') {
		redirect = BlockDec(r);
		if(redirect == null || redirect.length == 0){
			alert('암호화 파일 전송이 실패하였습니다!');
			return false;
		}
		if(qs.length > 1) {
			redirect = path + "?" + redirect + "&" + qs;
		}
		else{
			redirect = path + "?" + redirect;
		}

	    XecureNavigate( redirect, '_self' )
		return true;
	}

    return false;
}

/*
function PrintFileObjectTag()
{
	var Agent = navigator.userAgent;
	    Agent = Agent.toLowerCase();
	
	if(IsNetscape60())	alert("Netscape 6.0은 지원하지 않습니다");
	else
	{
		if(navigator.appName == 'Netscape')
		{
			document.write("<EMBED type='application/x-SoftForum-XecSSL40' hidden=true name='XecureWeb'></EMBED><NOEMBED>No XecureWeb PlugIn</NOEMBED>") ;
		}
		else
			//document.write('<OBJECT ID="FileAccess" CLASSID="CLSID:6AC69002-DAD5-11D4-B065-00C04F0CD404" CODEBASE="http://download.softforum.co.kr/Published/XecureWeb/v7.2.0.2/xw_install.cab#Version=7,2,0,2" width=0 height=0><param name="lang" value="korean"><param name="lang" value="korean">No XecureWeb PlugIn</OBJECT>');	
            document.write('<OBJECT ID="FileAccess" CLASSID="CLSID:6AC69002-DAD5-11D4-B065-00C04F0CD404" CODEBASE="/activeX/xecureweb/xw_install.cab#Version=7,2,0,2" width=0 height=0><param name="lang" value="korean"><param name="lang" value="korean">No XecureWeb PlugIn</OBJECT>');    
	}	 
}
*/

/////////////// G4F 프로젝트에서 추가한 함수  ////////////////////

// 파일 선택
function FileSelect(obj){
    var rtn = document.FileAccess.FileSelect();
    if( rtn!='CANCEL' ){
        obj.value = rtn;
    }
}