/*****************************************************************************
 * 파일명 : boardlist.js
 * 작성일 : 
 * 작성자 : 
 * 설   명 : board 기본기능  javascript 정의 파일
 * 2단계(jsl.examples) 까지의 namespace는 kbl_package.js 에 정의 되어 있다.
 * ===========================================================================
 * 변경이력:
 * DATE				AUTHOR		DESCRIPTION
 * ---------------------------------------------------------------------------
 * 
 *****************************************************************************/

common = function() {
	return {
		/**
		 * 우편번호 검색창 열기
		 * @param formId
		 */		
		open_postSearch: function(formId,post1,post2,addr,addrDetail) {
			var formObj = $(formId);
			
			// 검색후 상위창에 설정할 필드명.
			JslForm.createHiddenField(formObj,'postField1',post1);	
			JslForm.createHiddenField(formObj,'postField2',post2);
			JslForm.createHiddenField(formObj,'addrField',addr);
			JslForm.createHiddenField(formObj,'addrDetailField',addrDetail);
			
			var url = jsl.APPLICATION_CONTEXT_ROOT + "/com/postSearch.action";
			JslWindow.openwin(url, formObj, "우편번호검색", 480, 400, "yes");						
		},
		/**
		 * 우편번호 검색하기
		 * @param formId
		 */		
		do_postSearch: function(formId) {
			var formObj = $(formId);
			
			var jForm = new JslJForm();
			jForm.add(new JslJText('동(읍/면/리)', formObj.dong));
			
			if(!jForm.validate()){
				return;
			}
			var url = jsl.APPLICATION_CONTEXT_ROOT + "/com/postSearchResult.action";
            jsl.Ajax.submitUpdate(jsl.POPUP_RESULT_WRAP, url, formObj);
		},
		/**
		 * 우편번호 선택시 상위창에 셋팅.
		 * @param formId
		 */		
		do_postChoice: function(postNo,addr,dtlAddr) {
 
			var postField1 = opener.document.getElementById($('postField1').value);
			var postField2 = opener.document.getElementById($('postField2').value);
			var addrField = opener.document.getElementById($('addrField').value);
			var addrDetailField = opener.document.getElementById($('addrDetailField').value);
 
			if(postField1){
				postField1.value = postNo.substring(0,3);
			}
			if(postField2){
				postField2.value = postNo.substring(3);
			}
			if(addrField){
				addrField.value = addr;
			}
			if(addrDetailField && dtlAddr != undefined){
				addrDetailField.value = dtlAddr;
			}
			
			self.close();
		},
		/**
		 * 실명인증 하기		
		 * @param formId
		 */		
		do_chkName: function(formId) {
			if(!this.do_validate(formId, 'name')){
				return;
			}
			var formObj = $(formId);
			
			formObj.method = "post";
			JslWindow.openwin("https://www.happyconpoint.com/NameCheck/join_siren_check.jsp", formObj, "실명인증", 400, 250, "no");
		},
		/**
		 * 휴대전화인증 하기
		 * @param formId
		 */		
		do_chkPhone: function(formId, hpId1, hpId2, hpId3) {
			if(!this.do_validate(formId,'hp', hpId1, hpId2, hpId3)){
				return;
			}
			
			var formObj = $(formId);
			JslForm.createHiddenConcat(formObj,'recvPhone', hpId1, hpId2, hpId3);
			JslForm.createHiddenField(formObj,'sendPhoneNo','1599-2799');	
 
			var url = jsl.APPLICATION_CONTEXT_ROOT + "/com/hpCheck.action";
			JslWindow.openwin(url, formObj, "휴대전화인증", 440, 325, "no");						
		},		
		// 입력값 휴효성 체크
		do_validate: function(formId, mode, hpId1, hpId2, hpId3) {
			var formObj = $(formId);
			
			var jForm = new JslJForm();
			
			if(mode == 'name'){
				jForm.add(new JslJText('이름', formObj.name));
				jForm.add(new JslJNumber('주민번호 앞자리', formObj.jumin1).limitLength(6,6));
				jForm.add(new JslJNumber('주민번호 뒷자리', formObj.jumin2).limitLength(7,7));
			}else if(mode == 'hp'){
				jForm.add(new JslJCheck('통신사', formObj.com));
				jForm.add(new JslJSelect('휴대폰번호', $(hpId1)));
				jForm.add(new JslJNumber('휴대폰번호', $(hpId2)).limitLength(3,4));
				jForm.add(new JslJNumber('휴대폰번호', $(hpId3)).limitLength(4,4));
			}
			return jForm.validate();
		},		
		/**
		 * 파일 다운로드
		 * @param fileKey
		 */
		fileDownload : function(fileKey){
			if ($('_fileDownloadForm')) {
				$('_fileDownloadForm').innerHTML = '';
			}
			else {
				var formHtml = "<form method='post' id='_fileDownloadForm' name='_fileDownloadForm'></form>";
				Insertion.Before($('Bottom'), formHtml);
			}
			
			var contents = "<input type='hidden' name='downloadFileKey' id='downloadFileKey' value='"+fileKey+"'/>";
			Insertion.Top($('_fileDownloadForm'), contents);

			var form = $('_fileDownloadForm');
			form.action = jsl.APPLICATION_CONTEXT_ROOT + '/com/fileDownload.action';
		    form.submit();
		},
		/**
		 * 엑셀파일 다운로드
		 * @param params
		 */
		excelFileDownload : function(params){
			if ($('_excelFileDownloadForm')) {
				$('_excelFileDownloadForm').innerHTML = '';
			}
			else {
				var formHtml = "<form method='post' id='_excelFileDownloadForm' name='_excelFileDownloadForm'></form>";
				Insertion.Before($('Bottom'), formHtml);
			}

			var contents = '';
			for (i = 0; i < params.length; i++) {
				contents += "<input type='hidden' name='"+params[i].name+"' id='"+params[i].name+"' value='"+params[i].value+"'/>";
			}

			Insertion.Top($('_excelFileDownloadForm'), contents);

			var form = $('_excelFileDownloadForm');
			//form.action = 'http://www.hopebank.or.kr/com/excelFileDownload.action';
			form.action = jsl.APPLICATION_CONTEXT_ROOT + '/com/excelFileDownload.action';
		    form.submit();
		},
		/**
		 * 파일 삭제
		 * @param fileKey
		 */
		fileDelete : function(fileKey){
			if ($('_fileDeleteForm')) {
				$('_fileDeleteForm').innerHTML = '';
			}
			else {
				var formHtml = "<form method='post' id='_fileDeleteForm' name='_fileDeleteForm'></form>";
				Insertion.Before($('Bottom'), formHtml);
			}
			
			var contents = "<input type='hidden' name='deleteFileKey' id='deleteFileKey' value='"+fileKey+"'/>";
			Insertion.Top($('_fileDeleteForm'), contents);

			var form = $('_fileDeleteForm');
			form.action = jsl.APPLICATION_CONTEXT_ROOT + '/com/fileDelete.action';
		    form.submit();
		},
				
		/**
		 * 선택한 파일수
		 */
		liRowIdx : 0,
		
	    /**
	     * JSP 화면에 파일을 첨부 할수 있는 라인을 한줄씩 추가 한다.
	     * JSP 화면에 필수적으로 테이블 아이디는 addTr로 정의 한다.
	     * 예제) <table id="addTr" width="100%" border="0" cellspacing="1" cellpadding="0">
	     *      </table> 
	     *      addFileLine이 호출 되면 테이블안에 파일첨부 라인이 한줄 생성된다.
	     */
	    addFileLine: function(){
	    	var oRow = document.all.addTr.insertRow();
	    	oRow.onmouseover=function(){this.fncOnMouseOver(oRow.rowIndex)};
	 		// 생성된 TR(Row)에 스타일 속성값을 정의 한다.
	 		var oCell1 = oRow.insertCell();
	 		oCell1.innerHTML = '<input type="file" size="50" id="upload" name="upload" value=""/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);"><img src="../images/button/sbtn_delete.gif" alt="삭제버튼" border="0" align="top" onclick="javascript:common.deleteFileLine();"></a>';
	 		// RowIndex의 자동 재설정을 보여주기 위해 생성시마다 1씩 증가하는 변수.
	 		this.liRowIdx++;
	    },
	    deleteFileLine: function(){
	    	// table에서 지정한 줄(tr)을 rows 컬렉션에서 삭제한다.
	         document.all.addTr.deleteRow(addTr.clickedRowIndex );
	         this.liRowIdx--;
	    },
	    fncOnMouseOver: function(selectedIndex){
	    	document.all.addTr.clickedRowIndex = selectedIndex;
	    },
	    /**
	     * 이미 존재하는 파일을 리스트에서 삭제한다.
	     */	    
	    deleteAlreadyFileLine: function(inx,fileKey,formId){
	    	// table에서 지정한 줄(tr)을 rows 컬렉션에서 삭제한다.
			var oRow = document.all.alreadyFileTbl.rows('alreadyFileTr_'+inx);
			document.all.alreadyFileTbl.deleteRow(oRow.sectionRowIndex);

			// 삭제한 파일정보를 배열로 저장한다.
			var formObj = $(formId);
			JslForm.createHiddenField(formObj,'checkList',fileKey,true);			 
	    },
	    /**
	     * 로그인 여부를 체크한 후 로그인 창을 띄운다. 로그인후에는 전달된 url로 forward
	     */
		loginCheckSubmit: function(formObj, returnUrl) {
// HJLEE REPLACE
// BEFORE START	    	
//	    	if(!common.loginCookieCheck()) return;
//	    	
//	    	common.setUserInfo(formObj);
//			formObj.action = returnUrl;
//			formObj.submit();
// BEFORE END
// AFTER START
	    	common.loginCheck(function() {
    			formObj.action = returnUrl;
    			formObj.submit();
	    	});
// AFTER END
	    },
	    /**
	     * 로그인 여부를 체크한 후 로그인 창을 띄운다. 로그인후에는 전달된 url를 call
	     */
	     AjaxUpdater: function(div, forwardUrl, formObj, callback) {
// HJLEE REPLACE	    	
// BEFORE START	    	
//			if(!common.loginCookieCheck()) return;
//			
//			common.setUserInfo(formObj);
//	    	var params = Form.serialize(formObj);
//			var options = {
//					parameters: params
//			};
//	    	jsl.Ajax.updater(div, forwardUrl, options);
// BEFORE END
// AFTER START

	    	common.loginCheck(function() {
		    	var params = Form.serialize(formObj);
				var options = {
						parameters: params
				};
		    	jsl.Ajax.updater(div, forwardUrl, options);
	    	});
// AFTER END
	    },
	    /**
	     * 로그인 여부를 체크한 후 로그인 창을 띄운다. 로그인후에는 전달된 url를 call
	     */
	     AjaxSubmitUpdate: function(div, forwardUrl, formObj, callback) {
// HJLEE REPLACE	    	
// BEFORE START	    	
//			if(!common.loginCookieCheck()) return;
//			
//			common.setUserInfo(formObj);
//	    	jsl.Ajax.submitUpdate(div, forwardUrl, formObj, callback);    	
// BEFORE END
// AFTER START
	    	common.loginCheck(function() {
		    	jsl.Ajax.submitUpdate(div, forwardUrl, formObj, callback);    	
	    	});
// AFTER END
		},	
	    /**
	     * 로그인 여부를 체크한 후 로그인 창을 띄운다. 로그인후에는 전달된 url를 call
	     */
	     AjaxSubmitRequest: function(forwardUrl, formObj, callback) {
// HJLEE REPLACE	    	
// BEFORE START	    	
//	    	if(!common.loginCookieCheck()) return;
//	    	
//	    	common.setUserInfo(formObj);
//	    	jsl.Ajax.submitRequest(forwardUrl, formObj,callback);		
// BEFORE END
// AFTER START
	    	common.loginCheck(function() {
		    	jsl.Ajax.submitRequest(forwardUrl, formObj,callback);		
	    	});
// AFTER END
		},		
		
		setUserInfo: function(formObj) {
			if(formObj){
				//JslForm.createHiddenField(formObj,'userCd',jsl.getCookie("userCd"));
				//if(!formObj.userNm) 	JslForm.createHiddenField(formObj,'userNm',jsl.getCookie("userNm"));
		    	//if(!formObj.userMobl) 	JslForm.createHiddenField(formObj,'userMobl',jsl.getCookie("userMobl"));
			}
		},
		
		loginCheck: function(callback){
	    	//var userCd = jsl.getCookie("userCd");
			// 로그인여부를 조회한다.
			var loginCheckUrl = jsl.APPLICATION_CONTEXT_ROOT + "/login/loginCheck.action";
			var options = {
				success : function(res) {
					var result = res.responseJSON;
					if (result.code.substring(0, 4) != 'CMMI') {
						var loginUrl = jsl.APPLICATION_CONTEXT_ROOT + "/login/login.action";
						// var loginUrl = "https://www.happyconpoint.com/login/loginProc.action";

						common.loginPopupDisplayAction();

						// window.open(loginUrl, 'login_pop', 'scollbars=no, height=243, width=476');
/*
                                                var returnVal = JslWindow.openmodal(loginUrl,476,243,"no");
                                                if(returnVal && returnVal.value) {
                                                        callback();
                                                }
*/
					}
					else {
						callback();
					}
				}
			};
			jsl.Ajax2.request(loginCheckUrl, options);
		},

                loginPopupDisplayAction: function() {
                        // document.login_hid_from.action = "https://www.happyconpoint.com/login/loginProc.action";
                        document.login_hid_from.action = "https://www.happyconpoint.com/login/loginProc.action?returnURL=" + window.location.pathname + window.location.search;
                        window.open("", "popup", 'scollbars=no, height=243, width=476');
                        document.login_hid_from.submit();
                },

//		loginCookieCheck: function(){
//	    	if(!userCd) {
//				var loginUrl = jsl.APPLICATION_CONTEXT_ROOT + "/login/login.action";
//				var returnVal = JslWindow.openmodal(loginUrl,476,243,"no");
//				if(returnVal && returnVal.value) {
//					common.loginCookieSet(returnVal.user);
//				}else{
//					return false;
//				}
//	    	}
//	    	return true;
//		},
		loginCookieSet: function(uc){
			jsl.setCookie("userCd",uc.userCd);
			jsl.setCookie("userNm",uc.userNm);
			jsl.setCookie("userSsn",uc.userSsn);
			jsl.setCookie("telNo",uc.telNo);
			jsl.setCookie("userMobl",uc.userMobl);
			jsl.setCookie("userEml",uc.userEml);
			jsl.setCookie("addr",uc.addr);
			jsl.setCookie("userPwd",uc.userPwd);
			jsl.setCookie("postNo",uc.postNo);
			jsl.setCookie("dtlAddr",uc.dtlAddr);
			jsl.setCookie("custStat",uc.custStat);
			jsl.setCookie("telNo",uc.telNo);
			jsl.setCookie("addrGbn",uc.addrGbn);
			jsl.setCookie("emlRecvAgre",uc.emlRecvAgre);
			jsl.setCookie("smsRecvAgre",uc.smsRecvAgre);
			jsl.setCookie("corpNm",uc.corpNm);
			jsl.setCookie("brn",uc.brn);
			jsl.setCookie("faxNo",uc.faxNo);
			jsl.setCookie("custGbn",uc.custGbn);
			jsl.setCookie("logDttm",uc.logDttm);
		},
		loginCookieDelete: function() {
			jsl.deleteCookie("userCd");
			jsl.deleteCookie("userNm");
			jsl.deleteCookie("userSsn");
			jsl.deleteCookie("telNo");
			jsl.deleteCookie("userMobl");
			jsl.deleteCookie("userEml");
			jsl.deleteCookie("addr");
			jsl.deleteCookie("userPwd");
			jsl.deleteCookie("postNo");
			jsl.deleteCookie("com");
			jsl.deleteCookie("dtlAddr");
			jsl.deleteCookie("custStat");
			jsl.deleteCookie("telNo");
			jsl.deleteCookie("addrGbn");
			jsl.deleteCookie("emlRecvAgre");
			jsl.deleteCookie("smsRecvAgre");
			jsl.deleteCookie("corpNm");
			jsl.deleteCookie("brn");
			jsl.deleteCookie("faxNo");
			jsl.deleteCookie("custGbn");
			jsl.deleteCookie("logDttm");
		},
		sessionChkInterval: function(){
	    	//var userCd = jsl.getCookie("userCd");
			// 로그인여부를 조회한다.
			var sessionCheckUrl = jsl.APPLICATION_CONTEXT_ROOT + "/com/DummyAction.action";
			var options = {
				success : function(res) {
					//var result = res.responseJSON;
				}
			};
			jsl.Ajax2.request(sessionCheckUrl, options);
		}	
	}
}();

