/*
 * @(#)html_util.js
 *
 * Copyright (C) 2004-2008 D.TRIBE, Inc. All rights reserved.
 *
 * THIS SOFTWARE IS THE PROPRIETARY INFORMATION OF D.TRIBE, INC.
 * USE IS SUBJECT TO LICENSE TERMS.
 *
 * @author	Barney Kim
 */

function isFormText(el, msgId, msg) {
	return isFormNotNull(el, msgId, msg);
}

function chkForm(el, msgId, msg, chk) {
	var sp = document.getElementById(msgId);
	if(!chk){
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		return false;
	} else {
		if(sp != undefined) {
			sp.innerHTML = "";
		}
	}
}

function isFormStringLen(el, len, msgId, msg) {
	if(!isFormNotNull(el, msgId, msg)) return false;
	var sp = document.getElementById(msgId);
	if(el.value.length != len) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormMinStringLen(el, minlen, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(!isFormNotNull(el, msgId, msg)) return false;
	if(el.value.length < minlen) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormNumberLen(el, len, msgId, msg) {
	if(!isFormNotNull(el, msgId, msg)) return false;
	if(!isFormNumber(el, msgId, msg)) return false;
	var sp = document.getElementById(msgId);
	if(el.value.length != len) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormMaxNumberLen(el, minlen, maxlen, msgId, msg) {
	if(!isFormNotNull(el, msgId, msg)) return false;
	if(!isFormNumber(el, msgId, msg)) return false;
	var sp = document.getElementById(msgId);
	if(el.value.length < minlen || el.value.length > maxlen) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormEqual(el1, el2, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(el1.value != el2.value) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el1.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}


function isFormHidden(el, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(isNull(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormNumber(el, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(!isFormNotNull(el, msgId, msg)) return false;
	else if(!isNumber(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormNotNull(el, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(isNull(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormPassword(el1, el2, msgId, msg, req, min) {
	if(req == undefined) {
		req = true;
	}
	if(min == undefined) {
		min = 4;
	}
	if(req) {
		if(!isFormMinStringLen(el1, min, msgId, msg)) { return false; }
		if(!isFormMinStringLen(el2, min, msgId, msg)) { return false; }
		if(!isFormEqual(el1, el2, msgId, msg)) { return false; }
	} else {
		if(!isNull(el1.value)) {
			if(!isFormMinStringLen(el1, min, msgId, msg)) { return false; }
		}
		if(!isNull(el2.value)) {
			if(!isFormMinStringLen(el1, min, msgId, msg)) { return false; }
		}
		if(!isNull(el1.value) && !isNull(el2.value)) {
			if(!isFormEqual(el1, el2, msgId, msg)) { return false; }
		}
	}
	return true;
}

function isFormPhone(el1, el2, el3, msgId, msg) {
	if(!isFormMaxNumberLen(el1, 2, 4, msgId, msg)) return false;
	if(!isFormMaxNumberLen(el2, 3, 4, msgId, msg)) return false;
	if(!isFormMaxNumberLen(el3, 4, 4, msgId, msg)) return false;
	return true;
}

function isFormMobile(el1, el2, el3, msgId, msg) {
	if(!isFormMaxNumberLen(el1, 3, 3, msgId, msg)) return false;
	if(!isFormMaxNumberLen(el2, 3, 4, msgId, msg)) return false;
	if(!isFormMaxNumberLen(el3, 4, 4, msgId, msg)) return false;
	return true;
}

//
//주민등록번호 확인
//
function isFormResidentNo(el1, el2, msgId, msg) {
	if(!isFormNotNull(el1, msgId, msg)) return false;
	if(!isFormNotNull(el2, msgId, msg)) return false;
	
	var sp = document.getElementById(msgId);

	if(!isFormNumberLen(el1, 6, msgId, msg)) return false;
	if(!isFormNumberLen(el2, 7, msgId, msg)) return false;

	var jumin1 = el1.value;
	var jumin2 = el2.value;

	if(!(jumin2.charAt(0) == '1' || jumin2.charAt(0)  == '2' || jumin2.charAt(0) == '3' || jumin2.charAt(0) == '4')) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		return false;
	}

	var sum = 0;
	sum += jumin1.charAt(0)*2;
	sum += jumin1.charAt(1)*3;
	sum += jumin1.charAt(2)*4;
	sum += jumin1.charAt(3)*5;
	sum += jumin1.charAt(4)*6;
	sum += jumin1.charAt(5)*7;

	sum += jumin2.charAt(0)*8;
	sum += jumin2.charAt(1)*9;
	sum += jumin2.charAt(2)*2;
	sum += jumin2.charAt(3)*3;
	sum += jumin2.charAt(4)*4;
	sum += jumin2.charAt(5)*5;

	var check = (11 - sum%11)%10;

	if(jumin2.charAt(6) != check) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el1.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}


//
// 폼의 날짜인지 확인한다
//
function isFormDate(el, msgId, msg, ignoreNull) {
	if(ignoreNull == true && isNull(el.value)) {
		return true;
	}
	var sp = document.getElementById(msgId);
	if(!isFormNotNull(el, msgId, msg)) return false;
	else if(!isDate(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 폼의 날짜를 비교한다.
//
function isFormDateRange(el1, el2, msgId, msg, ignoreNull) {
	if(!isFormDate(el1, msgId, msg, ignoreNull)) {
		return false;
	}
	if(!isFormDate(el2, msgId, msg, ignoreNull)) {
		return false;
	}
	var sd = el1.value.split("-");
	var ed = el2.value.split("-");
    var sp = document.getElementById(msgId);
	if(new Date(sd[0], sd[1], sd[2]) > new Date(ed[0], ed[1], ed[2])) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el1.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 폼에서 SELECT를 선택했는지를 확인한다.
//
// @param el 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormSelect(el, msgId, msg) {
	var sp = document.getElementById(msgId);
	if (el.selectedIndex == -1 ||
		isNull(el.options[el.selectedIndex].value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 폼에서 라디오 버튼을 선택했는지를 확인한다.
//
// @param el 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormRadio(el, msgId, msg) {
	var flag = false;
	if (!el.length) {
		flag = el.checked;
	} else {
    	for (var i = 0; i < el.length; i++) {
			if ((flag = el[i].checked)) {
				break;
			}
		}
	}
	var sp = document.getElementById(msgId);
  	if (!flag) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el[0].focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 폼에서 체크박스를 선택했는지를 확인한다.
//
// @param el 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormCheckBox(el, msgId, msg) {
	var flag = false;
	if (el.length === undefined) {
		flag = el.checked;
	}
	else {
    	for (var i = 0; i < el.length; i++)
			if ((flag = el[i].checked))
				break;
	}
	var sp = document.getElementById(msgId);
  	if (!flag) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		if (el.length === undefined) {
			el.focus();
		}
		else {
			el[0].focus();
		}
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 이메일인지 확인
//
function isFormEmail(el, msgId, msg) {
	var sp = document.getElementById(msgId);
	if(!isEmail(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 사용 가능한 아이디인지 확인
//
function isFormId(el, msgId, min, max, msg) {
	if(min == undefined) {
		min = 6;
	}
	if(max == undefined) {
		max = 12;
	}
	var sp = document.getElementById(msgId);
	if(!isId(el.value, min, max)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}


function isFormSepEmail(el1, el2, msgId, msg) {
	if(!isFormMinStringLen(el1, 2, msgId, msg)) return false;
	if(!isFormMinStringLen(el2, 6, msgId, msg)) return false;
	var sp = document.getElementById(msgId);
	if(!isEmail(el1.value + "@" + el2.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el1.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

function isFormImageFile(el, msgId, msg) {
	if(!isFormNotNull(el, msg)) return false;
	var sp = document.getElementById(msgId);
	if(!isImageFile(el.value)) {
		if(sp != undefined) {
			sp.innerHTML = msg;
		} else {
			alert(msg);
		}
		el.focus();
		return false;
	}
	if(sp != undefined) {
		sp.innerHTML = "";
	}
	return true;
}

//
// 폼 값을 리턴한다.
//
// @param el 확인할 객체
// @param selectText select 이름을 리턴할지 여부
//
function getFormValue(el, selectText) {
	var t = el.type || el[0].type;
	selectText = selectText || false;
	switch(t) {
		case "hidden":
		case "password":
		case "textarea":
		case "file":
		case "text":
			return el.value;
			break;
		case "select-one":
			if(selectText) {
				return getFormSelectName(el);
			} else {
				return getFormSelectValue(el);
			}
			break;
		case "radio":
			return getFormRadioValue(el);
			break;
		case "checkbox":
			return getCheckBoxValue(el);
			break;
	}
	return null;
}

function getFormRadioValue(el) {
	if (!el.length) {
		return (el.checked) ? el.value : null;
	} else {
    	for (var i = 0; i < el.length; i++) {
			if ((flag = el[i].checked)) {
				return el[i].value;
			}
		}
	}
	return null;
}

function getCheckBoxValue(el) {
	var result = null;
	if (el.length === undefined) {
		result = (el.checked) ? el.value : null;
	}
	else {
    	for (var i = 0; i < el.length; i++) {
			if ((flag = el[i].checked)) {
				if(result != null) {
					result += "|" + el[i].value;
				} else {
					result = el[i].value;
				}
			}
		}
	}
	return result;
}

function getFormSelectValue(el) {
	return el.options[el.selectedIndex].value;
}
function getFormSelectText(el) {
	return el.options[el.selectedIndex].text;
}


function removeSpace(str) {
	var s = str;
	if(s.indexOf(" ") != -1) {
		s = s.replace(/\s/gi, "" );
	}
	return s;
}

//
// 문자열 null 확인
//
function isNull(str) {
	if(str == null || str.length == 0 || removeSpace(str) == "" || removeSpace(str) == " ") {
		return true;
	}
	return false;
}

//
// 숫자인지 확인
//
function isNumber(str) {
	if(isNull(str)) return false;
	var rgNum = /\D/;
	if(rgNum.test(str)) {
		return false;
	}
	return true;
}

//
// 문자열 이메일 확인
//
function isEmail(str) {
	var rgEmail = /^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.\w{2,3}$/i
	if(rgEmail.test(str)) return true;
	return false;
}

//
// 적합한 아이디인지 확인 (영문, 숫자)
//
function isId(str, min, max) {
	var s = String(str);
	return eval("s.match(/^[A-Za-z0-9]{"+min+","+max+"}$/)");
}

//
// 날짜인지 확인한다
//
function isDate(str) {
	var fmt = /^\d{4}-\d{2}-\d{2}$/i;
	var r = fmt.test(str);
	if(!fmt.test(str)) {
		return false;
	} else {
		var d = str.split("-");
		if(d[0] < 1900 || d[0] > 2069) return false;
		if(d[1] < 1 || d[1] > 12) return false;
		if(d[2] < 1 || d[2] > 31) return false;
		return true;
	}
}

/**
 * 이미지 파일 인지 여부를 리턴
 *
 * @param str 파일이름
 */
function isImageFile(str) {
	str = str.replace(/\\/g, "\\\\");
	var ext = str.substring(str.lastIndexOf(".")+1).toUpperCase();
	return (ext == "JPG" || ext=="JPEG" || ext=="GIF" || ext=="PNG")?true:false;
}

//
// 라디오 값 추출
//
function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }

    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}

function $CF(el, checkboxGroup){
    if($(el).type && $(el).type.toLowerCase() == 'checkbox') {
        var checkboxGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }
    var form = eval("document."+el+"."+checkboxGroup);
	return getFormValue(form);
}
//
// 창 가운데 팝업창 띄우기
//
function html_popupCenterWindow(url, wname, w, h, f) {
	var gab = 20;
	var wx = (window.screen.width-w)/2;
	var wy = (window.screen.height-h)/2;
	if(wy > gab) {
		wy -= gab;
	}
	var features = "width="+w+",height="+h+",left="+wx+",top="+wy+",toolbar=no,menubar=no,location=no,status=no";
	if (f != null) {
		features += "," + f;
	}
	var p=window.open(url, wname, features);
	if(p != null) {
		p.focus();
		return p;
	}	
}

// 동영상 플래이어 로드
//
// @param id Object 아이디
// @param url 플래시 URL
// @param w 넓이
// @param h 높이
//
function create_player(id, url) {
	var strObj = '\
	<object id="' + id + '" \
			classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" \
			codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" \
			standby="Loading Microsoft Windows Media Player components..." \
			type="application/x-oleobject" \
			bgcolor="DarkBlue" VIEWASTEXT> \
			<param name="FileName" value="' + url + '"> \
			<param name="AutoStart" value="1"> \
			<param name="AutoSize" value="1"> \
			<param name="AnimationAtStart" value="0"> \
			<param name="DisplayMode" value="4"> \
			<param name="Enabled" value="1"> \
			<param name="ShowControls" value="1"> \
			<param name="ShowAudioControls" value="1"> \
			<param name="ShowDisplay" value="0"> \
			<param name="ShowGotoBar" value="0"> \
			<param name="ShowPositionControls" value="1"> \
			<param name="ShowStatusBar" value="0"> \
			<param name="Volume" value="50"> \
			<param name="ShowCaptioning" value="0"> \
			<param name="TransparentAtStart" value="0"> \
			<embed name="' + id + '" Name="MediaPlayer" invokeURLs="false" \
				type="application/x-mplayer2" \
				pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" \
				src="' + url + '" \
				AutoStart="1" \
				AutoSize="1" \
				AnimationAtStart="0" \
				DisplayMode="4" \
				Enabled="1" \
				ShowControls="1" \
				ShowAudioControls="1" \
				ShowDisplay="0" \
				ShowGotoBar="0" \
				ShowPositionControls="1" \
				ShowStatusBar="0" \
				Volume="50" \
				ShowCaptioning="0" \
				TransparentAtStart="1"></embed> \
		</object>';

	document.write(strObj);
}


//
//DHTML 유틸리티
//
var DhtmlUtil = {
	// 브라우저 정보 추출
	getInfo:function() {
		this.ie=document.all && !window.opera;
		this.dom_client_width = document.documentElement && parseInt(document.documentElement.clientWidth) || 100000;
		this.standard_body=(document.compatMode=="CSS1Compat")? document.documentElement : document.body;
		this.scroll_top=(this.ie)? this.standard_body.scrollTop : window.pageYOffset;
		this.scroll_left=(this.ie)? this.standard_body.scrollLeft : window.pageXOffset;
		this.doc_width=(this.ie)? this.standard_body.clientWidth : (/Safari/i.test(navigator.userAgent))? window.innerWidth : Math.min(this.dom_client_width, window.innerWidth-16);
		this.doc_height=(this.ie)? this.standard_body.clientHeight: window.innerHeight;
		this.page_width=this.standard_body.scrollWidth;
		this.page_height=this.standard_body.scrollHeight;
	},
	// 브라우저 전체 크기로 변경
	fullSize:function(el) {
		this.getInfo();
		var w = (this.doc_width > this.page_width) ? this.doc_width : this.page_width;
		var h = (this.doc_height > this.page_height) ? this.doc_height : this.page_height;
		$(el).setStyle( {width: w + "px", height: h + "px"} );
	},
	// 브라우저 중앙으로 위치 변경
	center:function(el) {
		this.getInfo();
		var w = (this.doc_width > this.page_width) ? this.doc_width : this.page_width;
		var h = (this.doc_height > this.page_height) ? this.doc_height : this.page_height;	
		var t = ((document.viewport.getHeight()-$(el).getHeight()) / 2) + this.scroll_top;
		var l = ((document.viewport.getWidth()-$(el).getWidth()) / 2) + this.scroll_left;
		$(el).setStyle( {top: t + "px", left: l + "px"} );
	},
	// 어버레이 엘리먼트를 브라우저 전체로 만들고 해당 엘리먼트를 중앙으로 출력
	fullSizeCenter:function(el, overlay) {
		$(overlay).show();
		this.center(el);
		$(el).show();
		this.fullSize(overlay);
	}
};


/**
  * 쿠키값 추출
  * @param cookieName 쿠키명
  */
function getCookie( cookieName ) {
	var search = cookieName + "=";
	var cookie = document.cookie;
	
	// 현재 쿠키가 존재할 경우
	if( cookie.length > 0 ){
		// 해당 쿠키명이 존재하는지 검색한 후 존재하면 위치를 리턴.
		startIndex = cookie.indexOf( cookieName );
	
		// 만약 존재한다면
		if( startIndex != -1 ) {
			// 값을 얻어내기 위해 시작 인덱스 조절
			startIndex += cookieName.length;
			
			// 값을 얻어내기 위해 종료 인덱스 추출
			endIndex = cookie.indexOf( ";", startIndex );
			
			// 만약 종료 인덱스를 못찾게 되면 쿠키 전체길이로 설정
			if( endIndex == -1) endIndex = cookie.length;
			
			// 쿠키값을 추출하여 리턴
			return unescape( cookie.substring( startIndex + 1, endIndex ) );
		} else {
			// 쿠키 내에 해당 쿠키가 존재하지 않을 경우
			return false;
		}
	} else {
		// 쿠키 자체가 없을 경우
		return false;
	}
}


 /**
  * 쿠키 설정
  * @param cookieName 쿠키명
  * @param cookieValue 쿠키값
  * @param expireDay 쿠키 유효날짜
  */
function setCookie( cookieName, cookieValue, expireDate ) {
	var today = new Date();
	today.setDate( today.getDate() + parseInt( expireDate ) );
	document.cookie = cookieName + "=" + escape( cookieValue ) + "; path=/; expires=" + today.toGMTString() + ";";
}



//EOF 

