/**
* 기본 포맷 정의
*/
//var _dateFormat		= /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/;
var _dateFormat		= /^[1-2][0-9][0-9][0-9]\-[0-1][0-9]\-[0-1][0-9]$/;
var _numberFormat	= /^\d+$/;
var _wordFormat		= /^\w+$/;
var _emailFormat	= /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
var _phoneFormat	= /^(\d){2,4}-(\d){3,4}-(\d){4}$/;
var _specialFormat  = "!,*&^%$#@~\"";

/**
* 입력한 값/길이가 유효한 범위의 값인지 체크
*/
function isValidRange(initValue, minValue, maxValue){
	if(initValue < minValue || initValue > maxValue){
		return false;
	}

	return true;
}

/**
 * 입력값이 NULL인지 체크
 */
function isNull(objVal) {
    if (objVal == null || objVal == "") {
        return true;
    }
    return false;
}

/**
* 입력값이 옳바른 날짜인지 체크
*/
function isDate(objVal, nullType){
	if(nullType=="Null" && objVal == "--"){
		return true;
	}else if(!isValidFormat(objVal,_dateFormat)){
		return false;
	}

	try{
		
		var yy = parseInt(objVal.substr(0,4));
		var mm = parseInt(objVal.substr(5,7))-1;
		var dd = parseInt(objVal.substr(8,10));

		new Date(yy, mm, dd);

	}catch(e){
		alert(e);
		return false;
	}

	return true;
}

/**
*
*/
function isValidDate(year, month, date){
	try{
		var yy = parseInt(year);
		var mm = parseInt(month)-1;
		var dd = parseInt(date);
		new Date(yy, mm, dd);
	}catch(e){
		return false;
	}

	return true;
}

/**
 * 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
 */
function isEmpty(objVal) {
    if (objVal == null || objVal.replace(/ /gi,"") == "") {
        return true;
    }
    return false;
}

/**
 * 입력값에 특정 문자(chars)가 있는지 체크
 * 특정 문자를 허용하지 않으려 할 때 사용
 * ex) if (containsChars(string,"!,*&^%$#@~;")) {
 *         alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
 *     }
 */
function containsChars(objVal, chars) {
    for (var inx = 0; inx < objVal.length; inx++) {
       if (chars.indexOf(objVal.charAt(inx)) != -1)
           return true;
    }
    return false;
}

/**
 * 입력값이 특정 문자(chars)만으로 되어있는지 체크
 * 특정 문자만 허용하려 할 때 사용
 * ex) if (!containsCharsOnly(string,"ABO")) {
 *         alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
 *     }
 */
function containsCharsOnly(objVal,chars) {
    for (var inx = 0; inx < objVal.length; inx++) {
       if (chars.indexOf(objVal.charAt(inx)) == -1)
           return false;
    }
    return true;
}

function change_chars(obj) {
	if(containsChars(obj.value, _specialFormat)){
	    alert("특수문자는 사용하실 수 없습니다.");
	    obj.value = obj.value.substring(0, obj.value.length-1);
	    obj.focus();
	    return;
	}
}    
        
/**
 * 입력값이 알파벳인지 체크
 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
 * 자주 쓰이는 경우에는 var chars 변수를 
 * global 변수로 선언하고 사용하도록 한다.
 * ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 *     var lowercase = "abcdefghijklmnopqrstuvwxyz"; 
 *     var number    = "0123456789";
 *     function isAlphaNum(objVal) {
 *         var chars = uppercase + lowercase + number;
 *         return containsCharsOnly(objVal,chars);
 *     }
 */
function isAlphabet(objVal) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    return containsCharsOnly(objVal,chars);
}

/**
 * 입력값이 알파벳 대문자인지 체크
 */
function isUpperCase(objVal) {
	var _upperCaseFormat = /^[A-Z][0-9]+$/;
    return isValidFormat(objVal,_upperCaseFormat);
}

/**
 * 입력값이 알파벳 소문자인지 체크
 */
function isLowerCase(objVal) {
    var _lowerCaseFormat = /^[a-z][0-9]+$/;
    return isValidFormat(objVal,_lowerCaseFormat);
}

/**
 * 입력값에 숫자만 있는지 체크
 */
function isNumber(objVal) {
    return isValidFormat(objVal,_numberFormat)
}

/**
 * 입력값이 알파벳,숫자로 되어있는지 체크
 */
function isWord(objVal) {
    return isValidFormat(objVal,_wordFormat);
}

/**
 * 입력값이 숫자,대시(-)로 되어있는지 체크
 */
function isNumDash(objVal) {
    var _numDashFormat = /^([0-9][-]*)+$/;
    return isValidFormat(objVal,_numDashFormat);
}

/**
 * 입력값이 숫자,콤마(,)로 되어있는지 체크
 */
function isNumComma(objVal) {
    var _numCommaFormat = /^([0-9][,]*)+$/;
    return isValidFormat(objVal,_numCommaFormat);
}

/**
 * 입력값이 숫자,포이트(.)로 되어있는지 체크
 */
function isNumPoint(objVal) {
    var _numPointFormat = /^([0-9][,]*)+$/;
    return isValidFormat(objVal,_numPointFormat);
}

/**
 * 입력값이 이메일 형식인지 체크
 */
function isEmail(objVal) {
    return isValidFormat(objVal,_emailFormat);
}

/**
* 입력값이 전화번호 형식인지 체크
*/
function isTel(objVal){
	return isValidFormat(objVal, _phoneFormat);
}

/**
 * 입력값에서 콤마를 없앤다.
 */
function removeComma(objVal) {
    return objVal.replace(/,/gi,"");
}

/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
 */
function isValidFormat(objVal,format) {
    if (objVal.search(format) != -1) {
        return true; //올바른 포맷 형식
    }
    return false;
}

/**
 * Hashtable
 */
function Hashtable () {
    var m_objHash = new Object();
    
    this.put = function (key, value) {
        m_objHash[key] = value;
    }
    
    this.get = function (key) {
        return m_objHash[key];
    }
    
    this.remove = function (key) {
        var temp = m_objHash[key];
        delete m_objHash[key];
        return temp;
    }
    
    this.getKeys = function () {
        var keys = new Array();
        for (var key in m_objHash) {
            keys.push(key);
        }
        
        return keys;
    }
}

/**
* 파일 확장자를 반환한다.
*/
function getFileExt(filename)
{
	var pos;

	if ((filename == null) || (filename == ""))
	{
		return "";
	}

	var pos = filename.lastIndexOf('.');
	if (pos == -1 )
	{
		return "";
	}
	else
	{
		return filename.substr(pos+1);
	}	
}



/**
 * 선택된 라디오버튼이 있는지 체크
 */
function hasCheckedRadio(obj) {
    if (obj.length > 1) {
        for (var inx = 0; inx < obj.length; inx++) {
            if (obj[inx].checked) return true;
        }
    } else {
        if (obj.checked) return true;
    }
    return false;
}

/**
 * 선택된 체크박스가 있는지 체크
 */
function hasCheckedBox(obj) {
    return hasCheckedRadio(obj);
}

function isCheckLength(obj, byteLen)
{	
	var tmpStr;

	tmpStr = obj.value;
	sw = cal_byte(obj, byteLen, tmpStr);
	if (sw) return true;
	else return false;
}

function cal_byte(obj, byteLen, aquery) 
{

	var tmpStr;
	var temp=0;
	var onechar;
	var tcount;
	tcount = 0;

	tmpStr = new String(aquery);
	temp = tmpStr.length;

	for (k=0;k<temp;k++)
	{
		onechar = tmpStr.charAt(k);
		if (escape(onechar) =='%0D') { 
		} else if (escape(onechar).length > 4) { 
			tcount += 2; 
		} else { 
			tcount++; 
		}
	}

//	document.all.reply_contents.value = tcount;
	if(tcount>byteLen) 
	{
		reserve = tcount-byteLen;
		alert("메시지 내용은 "+byteLen+"바이트 이상은 넘을수 없습니다.\r\n 쓰신 메세지는 "+reserve+"바이트가 초과되었습니다.\r\n 초과된 부분은 자동으로 삭제됩니다.");
		cutText(obj, byteLen);
		return false;
	}
	return true;

}

//문자열의 길이를(byte) 구한다.
function getStringLength(str) 
{	
	byteLength = 0;
	strLength = str.length;

	for (k=0;k<strLength;k++)
	{
		onechar = str.charAt(k);
		if (escape(onechar) =='%0D') { 

		} else if (escape(onechar).length > 4) { 
			byteLength += 2; 
		} else { 
			byteLength++; 
		}
	}

	return byteLength;
}

function cutText(obj, byteLen)
{
	nets_check(obj, byteLen);
}

function nets_check(obj, byteLen)
{

	var tmpStr;
	var temp=0;
	var onechar;
	var tcount;
	tcount = 0;

	tmpStr = new String(obj.value);
	temp = tmpStr.length;

	for(k=0;k<temp;k++)
	{
		onechar = tmpStr.charAt(k);

		if(escape(onechar).length > 4)
		{
			tcount += 2;
		} else {
			// 엔터값이 들어왔을때 값(\r\n)이 두번실행되는데 첫번째 값(\n)이 들어왔을때 tcount를 증가시키지 않는다.
			if(escape(onechar)=='%0A') {
			} else {
				tcount++;
			}
		}

		if(tcount>byteLen) {
			tmpStr = tmpStr.substring(0,k);
			break;
		}

	}
	obj.value = tmpStr;
	cal_byte(obj, byteLen, tmpStr);

}


/**
 * 입력값의 바이트 길이를 리턴
 */
function getByteLength(str) {
	str_len = str.length;
	str_byte_len = 0;

	for(i = 0; i < str_len; i++)
	{
		c = str.charAt(i);
		if(escape(c) == '%OD')
		{
			//
		}
		else if(escape(c).length > 4)
		{
			str_byte_len += 2;
		}
		else
		{
			str_byte_len++;
		}
	}

	return str_byte_len;
}

//통화형 포맷
function formatCurrency(obj, mode) { 
     
    var txtNumber = '';
	var txtFormat = '';
	
	//','허용
	if(mode == 'AllowComma'){
		txtNumber += obj.value.replace(/\,/gi, '');		
		txtFormat = txtNumber;

	//',' 또는 '.' 허용
	}else if(mode == 'AllowDot'){
		txtNumber += obj.value.replace(/\,/gi, '');	
		txtFormat = txtNumber.replace(/\./gi, '');
	}

    if (!isNumber(txtFormat)) { 
        obj.value = obj.value.substring(0, obj.value.length-1 ); 
        obj.focus(); 
        return obj.value; 
    } 
    else { 
        var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])'); 
        var arrNumber = txtNumber.split('.'); 
        arrNumber[0] += '.'; 
		//alert(arrNumber[0]);
        do { 
            arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2'); 
        } 
        while (rxSplit.test(arrNumber[0])); 
         
        if (arrNumber.length > 1) { 
            obj.value = arrNumber.join(''); 			
        } 
        else { 
            obj.value = arrNumber[0].split('.')[0];
        } 
   } 

   
} 

/**
* 쿠키설정
* ex)
*	cookieName으로 쿠키를 1일간 유효하게 설정한다.
*	setCookie('cookieName', 'cookieValue', 1)
*/
function setCookie( name, value, expiredays)
{
	var todayDate = new Date();
	todayDate.setDate( todayDate.getDate() + expiredays );
	document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
} 

/**
* 쿠키정보를 추출한다.
*/
function getCookie(sName)
{
	var x = 0;
	var sNameOfCookie = sName + "=";
	while ( x <= document.cookie.length)
	{
		var y = (x + sNameOfCookie.length);
		if ( document.cookie.substring( x, y ) == sNameOfCookie )
		{
			if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
				endOfCookie = document.cookie.length; 
			return unescape( document.cookie.substring( y, endOfCookie ) );
		}
		x = document.cookie.indexOf( " ", x ) + 1;
		if ( x == 0 )
			break; 
	}
	return ""; 
}

/**
* 입력받은 문자가 주민등록번호인지 체크
*/
function isJuminNo2(regno){
	regno = replaceChar(regno, "-", "");
	if(regno.length != 13){
		return false;
	}else{
		return isJuminNo(regno.substring(0,6), regno.substring(6,13));
	}
}

/**
* 입력받은 문자가 주민등록번호인지 체크
*/
function isJuminNo(regno1, regno2) {
	var str_f_num = regno1;
	var str_l_num = regno2;

	var i3=0
	var i4=0
	for (var i=0;i<str_f_num.length;i++) {
			var ch1 = str_f_num.substring(i,i+1);
			if (ch1<'0' || ch1>'9') { i3=i3+1 }
	}

	if ((str_f_num == '') || ( i3 != 0 )) return false;
	
	for (var i=0;i<str_l_num.length;i++) {
			var ch1 = str_l_num.substring(i,i+1);
			if (ch1<'0' || ch1>'9') { i4=i4+1 }
	}

	if ((str_l_num == '') || ( i4 != 0 ))  
		return false;

	if(str_f_num.substring(0,1) < 0) 
		return false;

	if(str_l_num.substring(0,1) > 2) 
		return false;

	if((str_f_num.length > 7) || (str_l_num.length > 8))
		return false;
		
	if ((str_f_num == '72') || ( str_l_num == '18'))
		return false;
		
	var f1=str_f_num.substring(0,1)
	var f2=str_f_num.substring(1,2)
	var f3=str_f_num.substring(2,3)
	var f4=str_f_num.substring(3,4)
	var f5=str_f_num.substring(4,5)
	var f6=str_f_num.substring(5,6)
	var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7
	var l1=str_l_num.substring(0,1)
	var l2=str_l_num.substring(1,2)
	var l3=str_l_num.substring(2,3)
	var l4=str_l_num.substring(3,4)
	var l5=str_l_num.substring(4,5)
	var l6=str_l_num.substring(5,6)
	var l7=str_l_num.substring(6,7)

	hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5
	hap=hap%11
	hap=11-hap
	hap=hap%10
	if (hap != l7) return false;
		
	return true; 
}

/**
* 사업자 번호 체크
*/
function isBusinessNo(strNumb)
{

        strNumb        = replaceChar(strNumb, "-", "");
        if        (strNumb.length        !=        10)
        {
                alert("사업자등록번호가 잘못되었습니다.");
                return false;
        }
        
        sumMod        =        0;
        sumMod        +=        parseInt(strNumb.substring(0,1));
        sumMod        +=        parseInt(strNumb.substring(1,2)) * 3 % 10;
        sumMod        +=        parseInt(strNumb.substring(2,3)) * 7 % 10;
        sumMod        +=        parseInt(strNumb.substring(3,4)) * 1 % 10;
        sumMod        +=        parseInt(strNumb.substring(4,5)) * 3 % 10;
        sumMod        +=        parseInt(strNumb.substring(5,6)) * 7 % 10;
        sumMod        +=        parseInt(strNumb.substring(6,7)) * 1 % 10;
        sumMod        +=        parseInt(strNumb.substring(7,8)) * 3 % 10;
        sumMod        +=        Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
        sumMod        +=        parseInt(strNumb.substring(8,9)) * 5 % 10;
        sumMod        +=        parseInt(strNumb.substring(9,10));
        
        if        (sumMod % 10        !=        0)
        {
                alert("사업자등록번호가 잘못되었습니다.");
                return false;
        }
        return        true;
}

/**
* 전화번호 유효성 검사
* @param telNumber 전화번호(021231234)
* @param telType 전화유형("Home":집전화번호, "Mobile":핸드폰번호)
* @param nullType 필수입력 여부("NotNull":비입력 허용하지 않음, "Null":비입력 허용)
* @return boolean 전화번호가 옳바르면 true 그렇지 않다면 false 를 리턴한다.
*/
function isPhone(telNumber, telType, nullType){
	if(nullType == "Null" && telNumber == ""){
		return true;
	}else if( !isNumber(telNumber) ){
		return false;
	}else if( telNumber.length < 9 ){
		return false;
	}

	var localNum;
	if(telType == "Home"){
		localNum = new Array(
					"02", "031", "032", "033", "041", "042", "043", "051", "052", 
					"053", "054", "055", "061", "062", "063", "064", "012", "015",
					"010", "011", "016", "017", "018", "019", "0502");
	}else if(telType == "Mobile"){
		localNum = new Array("010", "011", "016", "017", "018", "019");
	}

	tel1 = "";

	// 앞에 세 자리 가운데 지역번호 유효성 검사
	for (ia=0; ia<localNum.length; ia++)  {
		if(telNumber.substr(0,3) == localNum[ia]) {
			 tel1 = telNumber.substr(0,3);
			 tel2 = telNumber.substr(3,telNumber.length);
			 break;
		}       
	}

	if(tel1 == ""){
		 // 앞에 두 자리 가운데 지역번호 유효성 검사
		for (ia=0; ia<localNum.length; ia++){
			if (telNumber.substr(0,2) == localNum[ia]){
				 tel1 = telNumber.substr(0,2);
				 tel2 = telNumber.substr(2,telNumber.length);
				 break;
			}       
		}
	}

	if(tel1 == ""){
		// 앞에 네 자리 가운데 지역번호 유효성 검사
		for (ia=0; ia<localNum.length; ia++){
			if (telNumber.substr(0,4) == localNum[ia]){
				tel1 = telNumber.substr(0,4);
				tel2 = telNumber.substr(4,telNumber.length);
				break;
			}       
		}
	}

	// 앞에 2,3,4 자리 가운데 지역번호가 없으면 잘못된 번호
	if(tel1 == "" || tel2.length > 8){
		return false;
	}else{
		return true;
	}

	//tel3 = tel2.substr(tel2.length-4,4)
	//tel2 = tel2.substr(0,tel2.length-4)
	//resultTel = tel1 + "-" + tel2 + "-" + tel3;       
	//return resultTel;
} 

/**
* 입력받은 문자열에서 특정문자를 새로운 문자로 대치한다.
*/
function replaceChar(orgStr, oldChr, newChr)
{
        var        strTmp        =        "";
        for (i = 0; i< orgStr.length; i++)
        {
                if(orgStr.charAt(i) == oldChr) strTmp = strTmp +  newChr;
				else strTmp = strTmp +  orgStr.charAt(i);
        }
        return strTmp;
}

/**
* 입력받은 문자열의 앞뒤 공백을 제거한다.
*/
function trim(str)
{
	var count = str.length;
	var len = count;
	var st = 0;
                
	while((st < len) && (str.charAt(st) <= ' '))
	{
		st++;
	}
	while((st < len) && (str.charAt(len - 1) <= ' '))
	{
		len--;
	}
	
	return ((st > 0) || (len < count)) ? str.substring(st, len) : str ;   
} 

function chompFirst(str, separator){
	var count = str.length;
	var len = count;
	var st = 0;
                
	while((st < len) && (str.charAt(st) == separator))
	{
		st++;
	}
	
	return (st > 0) ? str.substr(st) : str ;   
}

function chompLast(str, separator){
	var count = str.length;
	var len = count;
	var st = 0;
                
	
	while((len > 0) && (str.charAt(len - 1) == separator))
	{
		len--;
	}
	
	return (len < count) ? str.substring(0, len) : str ;    
}

function chomp(str, separator){
	return chompLast(chompFirst(str, separator), separator);
}

//체크박스 모두 선택 또는 해제
//이함수의 사용을 권장하지 않으며 예고없이 삭제될수 있습니다..
//jsCheckAll 함수를 사용하여 주십시오.
function chkAllList(lst) {
	if(typeof(lst) == 'undefined') return;
	if(typeof(lst.length) == 'undefined') {
		if(lst.checked)
			lst.checked = false;
		else
			lst.checked = true;
			
		return;
	}
	else {
		if(document.all['chkall'].checked) {
			for(inx=0; inx<lst.length; inx++) 
				lst[inx].checked = true;
		}
		else {
			for(inx=0; inx<lst.length; inx++) 
				lst[inx].checked = false;
		}
	}
}

//체크박스에서 선택된 수 리턴
//이함수의 사용을 권장하지 않으며 예고없이 삭제될수 있습니다..
//jsCheckedCount 함수를 사용하여 주십시오.
function getCheckedCount(lst) {
	cnt = 0; 

	if(typeof(lst) =='undefined') {
		return cnt;
	}

	for(inx=0; inx<lst.length; inx++) {
		if(lst[inx].checked == true) {
			cnt++;
		}
	}

	if(typeof(lst.length) =='undefined') {
		if(lst.checked) {
			cnt++;
		}
	}
	
	return cnt;
}

/**
 * 파라미터 이어붙이기
 */
function addParam() {
	var args   = addParam.arguments;
	var srcUrl = args[0];
	var key    = args[1];
	var val    = args[2];

	if(srcUrl.indexOf("?") != -1) {
		srcUrl += "&" + key + "=" + val;	
	} else {
		srcUrl += "?" + key + "=" + val;	
	}
	
	return srcUrl;
}



/**
* 체크박스 전체선택/해제 기능을 제공한다.
* @param checkAllElementName 전체선택/헤제 아이템 요소
* @param checkListElement 체크박스 리스트 아이템 요소
*/
function jsCheckAll(checkAllElement, checkListElement) {
	var flag = false;

	if(typeof(checkListElement) == 'undefined'){
		return;
	}else if(typeof(checkListElement.length) == 'undefined') {
		if(checkAllElement.checked){
			flag = true;
		}
		checkListElement.checked = flag;
	}else {
		if(checkAllElement.checked){
			flag = true;
		}

		for(i=0; i<checkListElement.length; i++){
			checkListElement[i].checked = flag;
		}
	}
}

/**
* 체크박스 리스트 요소중 체크된 항목의 갯수를 리턴한다.
* @param checkListElement 체크박스 리스트 아이템 요소
*/
function jsCheckedCount(checkListElement) {
	var checkedCount = 0; 

	if(typeof(checkListElement) =='undefined') {
	}else if(typeof(checkListElement.length) =='undefined') {
		if(checkListElement.checked) {
			checkedCount++;
		}
	}else{
		for(i=0; i<checkListElement.length; i++) {
			if(checkListElement[i].checked == true) {
				checkedCount++;
			}
		}
	}	
	
	return checkedCount;
}

//가로 사이즈 비율에 맞춰 이미지 사이즈 조정
function resizeImgWidth(imgObj, isize) {
	var img = new Image();
	img.src = imgObj.src
	
    var oldWidth = img.width;
    var oldHeight = img.height;
    
    if (oldWidth > isize) {
        var newWidth = isize;
        var newHeight = Math.round(oldHeight * newWidth / oldWidth);
        imgObj.wdith = newWidth;
        imgObj.height = newHeight;
    }
    
    return imgObj.width;
}

function popup_size() {
	var obj = navigator.appVersion;
	var hei = 29;
	if (navigator.appVersion.indexOf("NT") != -1) {
		os = obj.substr(obj.indexOf("NT"),6);
		if (os > "NT 5.0") {
			hei = 35;
		}
	}
	wid = document.body.scrollWidth+10;
	hei = document.body.scrollHeight+hei;

	// 세로가 800 이상이면 800으로 맞추고 스크롤바를 위해 가로도 16픽셀 늘림 - body에 scroll=yes 추가할 것.
	if (hei > 800) { 
		hei = 800;
		wid = wid + 16;
	}
	hei = hei + 20;
	self.resizeTo(wid,hei);
	this.focus();
}

// Internet Explorer에서 셀렉트박스와 레이어가 겹칠시 레이어가 셀렉트 박스 뒤로 숨는 현상을 해결하는 함수 
// 레이어가 셀렉트 박스를 침범하면 셀렉트 박스를 hidden 시킴 
// 사용법 : 
// <div id=LayerID style="display:none; position:absolute;" onpropertychange="selectbox_hidden('LayerID')"> 
function selectbox_hidden(layer_id) 
{ 
	var ly = eval(layer_id); 
	
	// 레이어 좌표 
	var ly_left = ly.offsetLeft; 
	var ly_top = ly.offsetTop; 
	var ly_right = ly.offsetLeft + ly.offsetWidth; 
	var ly_bottom = ly.offsetTop + ly.offsetHeight; 
	
	// 셀렉트박스의 좌표 
	var el; 
	
	for (i=0; i<document.forms.length; i++) { 
		for (k=0; k<document.forms[i].length; k++) { 
			el = document.forms[i].elements[k]; 
			if (el.type == "select-one") { 
				var el_left = el_top = 0; 
				var obj = el; 
				if (obj.offsetParent) { 
					while (obj.offsetParent) { 
						el_left += obj.offsetLeft; 
						el_top += obj.offsetTop; 
						obj = obj.offsetParent; 
					} 
				} 
				el_left += el.clientLeft; 
				el_top += el.clientTop; 
				el_right = el_left + el.clientWidth; 
				el_bottom = el_top + el.clientHeight; 
				
				// 좌표를 따져 레이어가 셀렉트 박스를 침범했으면 셀렉트 박스를 hidden 시킴
				if ( (el_left >= ly_left && el_top >= ly_top && el_left <= ly_right && el_top <= ly_bottom) || 
						(el_right >= ly_left && el_right <= ly_right && el_top >= ly_top && el_top <= ly_bottom) || 
						(el_left >= ly_left && el_bottom >= ly_top && el_right <= ly_right && el_bottom <= ly_bottom) || 
						(el_left >= ly_left && el_left <= ly_right && el_bottom >= ly_top && el_bottom <= ly_bottom) )
					el.style.visibility = 'hidden'; 
			} 
		} 
	} 
} 

// 감추어진 셀렉트 박스를 모두 보이게 함 
function selectbox_visible() 
{ 
	for (i=0; i<document.forms.length; i++) { 
		for (k=0; k<document.forms[i].length; k++) { 
			el = document.forms[i].elements[k]; 
			if (el.type == "select-one" && el.style.visibility == 'hidden') 
				el.style.visibility = 'visible'; 
		} 
	} 
} 

function showLayer(id) {
	if(typeof(document.getElementById(id)) == 'undefined') return;
	document.getElementById(id).style.display = "block";
	return true;
}

function hideLayer(id) {
	if(typeof(document.getElementById(id)) == 'undefined') return;
	document.getElementById(id).style.display = "none";
	return true;
}


//브로셔 미니홈 팝업
function pop_brc(Val){
	
	if(Val == ""){
		alert("아파트 ID가 잘못되었습니다.");
		return;
	}
	
	popWindow("/web/brochure.co?cmd=home&aptid="+Val,990,610,-1,-1,'brochure','resizable=no,scrollbars=no');
}

//브로셔 미니홈-단지이야기 팝업
function pop_brc_story(Val){

	if(Val == ""){
		alert("아파트 ID가 잘못되었습니다.");
		return;
	}

	popWindow("/web/brochure.co?cmd=story&aptid="+Val,990,610,-1,-1,'brochure','resizable=no,scrollbars=no');
}

function checkMemberId(strValue) {
    lenVal = getByteLength(strValue)
    if (lenVal < 4 || lenVal > 12) {
        return false;
    }
    if (isChar(strValue) == false) {
        return false;
    }
    if (isAlphabet(strValue.substr(0,1)) == false) {
        return false;
    }
    return true;
}

// check password, return 0 if valid
function checkPassword(memId, pwValue) {
    if (pwValue.length < 6) {
        return 1; // must be length >= 6
    }
    if (hasAlpha(pwValue) == false || hasNumber(pwValue) == false) {
        return 2; // required at least one alpha and one number character
    }
    // check serial three same character 
    if (pwValue.length >= 3) {
        for (i = 0 ; i < pwValue.length - 3; i++) {
            if (pwValue.charAt(i) == pwValue.charAt(i+1) && 
                pwValue.charAt(i) == pwValue.charAt(i+2)) {
                return 4; // serial three same character
            }
        }
    }
    // check sequential three number
    if (pwValue.length >= 3) {
        tempNumStr = "01234567890";
        for (i = 0 ; i < pwValue.length - 3; i++) {
            if (tempNumStr.indexOf(pwValue.substr(i, 3)) >= 0) {
                return 8; // sequential three number
            }
        }
    }
    // has member id
    if (memId != null && memId != '') {
        if (pwValue.indexOf(memId) >= 0) {
            return 16;
        }
    }
    return 0;
}

var alphaStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numStr = "0123456789";
var graphStr = ".[]";

// whether strValue has alphaNumGraph
function isChar(strValue) {
    var charStr = alphaStr+numStr+graphStr;
    strValueUpper = strValue.toUpperCase();
    for (i = 0 ; i < strValueUpper.length ; i++){
        if(charStr.indexOf(strValueUpper.charAt(i)) == -1){
            return false;
        }
    }//for      
    return true;
}

// whether strValue has alpha
function hasAlpha(strValue) {
    var charStr = alphaStr;
    strValueUpper = strValue.toUpperCase();
    for (i = 0 ; i < strValueUpper.length ; i++){
        if(charStr.indexOf(strValueUpper.charAt(i)) >= 0 ) {
            return true;
        }
    }//for      
    return false;
}

// whether strValue has number
function hasNumber(strValue) {
    var charStr = numStr;
    for (i = 0 ; i < strValue.length ; i++){
        if(charStr.indexOf(strValue.charAt(i)) >= 0 ) {
            return true;
        }
    }//for      
    return false;
}


function moveNext(currField, length, nextField) {
    if(currField.value.length == length)
        nextField.focus();
}

// print board message
function BoardMsgPrint(uri) {
	window.open('/web/jsp/board/default/print.jsp'+uri, 'board_msg_print', 'width=640,height=500,location=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes');
}

// scrap board message
function BoardMsgScrap(uri) {

}


// 0 부터 (rate-1) 까지 랜덤 변수 생성
function getRandomValue(rate) {
    // rate : 표시될 확률 : 1/rate 확율임
    var random_value = Math.floor(Math.random()*rate);
    
    return random_value;
}

function writeNewImg(dt) {
    var date = new Date();
    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
    var day   = date.getDate();
    
    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }
    
    var dateTxt = year + "-" + month + "-" + day;
    
    if(dt == dateTxt) {
    	document.write(' <img src="http://www.uasis.com/web/images/common/icon_new.gif" align="absmiddle">');	
    }
}


function __getText(elem)
{ 
	var str = elem.innerText;
	return str;
	/*
    if (elem.innerText) return elem.innerText; 
    //if (elem.textContent) return elem.textContent; 
    return elem.innerHTML.replace(/<\/?[^>]+>/gi,""); 
    */
}

function __setText(elem, text)
{
    if (elem.innerText) { elem.innerText = text; return; }
    //if (elem.textContent) { elem.textContent = text; return; }
    while (elem.firstChild) elem.removeChild(elem.firstChild);
    elem.appendChild(document.createTextNode(text), elem.childNodes[0]);
}

/*
	픽셀 단위로 한글 자르기
	elem     : span or div id
	cutWidth : width (px)
	suffix   : 문자열  
*/
function stringCut(elem, cutWidth, suffix)
{
    //var str = __getText(elem);
    //var elem = document.getElementById(id);
    str = elem.innerHTML;
    
    var len;
    if (!str || !(len = str.length))
        return;

    elem.style.whiteSpace = "nowrap";
    elem.style.textOverflow = "ellipsis";
    elem.style.overflow = "hidden";

    var width = elem.offsetWidth;

    if (!width || width < cutWidth - 8)
        return;

    var temp = cutWidth;

    if (suffix)
    {
        elem.innerHTML += suffix;

        cutWidth -= (elem.offsetWidth - width + 4);

        if (cutWidth < 0)
            return;
    }
    else
    {
        suffix = "";
    }

    elem.title = str;

    var cut = parseInt(cutWidth / (width / len)) + 1;

    __setText(elem, str.substr(0, cut));

    if (elem.offsetWidth > cutWidth)
    {
        while (--cut)
        {
            __setText(elem, str.substr(0, cut).replace(/(\s*$)/g, ""));

            if (elem.offsetWidth < cutWidth)
            {
                break;
            }
        }
    }
    else
    {
        while (cut++ < len)
        {
            __setText(elem, str.substr(0, cut));

            if (elem.offsetWidth > cutWidth)
            {
                __setText(elem, str.substr(0, cut - 1).replace(/(\s*$)/g, ""));
                break;
            }
        }
    }

    elem.innerHTML += suffix;
}

function resizeBoardListTitle() {
	var elements = document.getElementById('contentsDiv').all;
	var width = 160;
	for(i=0; i< elements.length; i++) {
		var el = elements[i];
		if(typeof(el) == 'object' && typeof(el.id) != 'undefined') {
			if(el.id.indexOf('bbs_list')!=-1) {
				var obj = document.getElementById(el.id);
				stringCut(obj, width, '..');
			}
		}
	}
}  


function selectlist_up(sel) {
 
    var sel_len = sel.length;
    var sel_idx = sel.selectedIndex;
    if (sel_idx <= 0) return;
    
    selectlist_goto(sel, sel_idx, sel_idx-1);
}

function selectlist_down(sel) {
    var sel_len = sel.length;
    var sel_idx = sel.selectedIndex;
    if (sel_idx == -1) return;
    if (sel_idx==(sel_len-1)) return;
    
    selectlist_goto(sel, sel_idx, sel_idx+1);
}

function selectlist_goto(ta, st, ed) {
    var ta_num = -1;
    var ol, ta_ol;
    if(st<0 || ed<0 || st >=ta.length  || ed >=ta.length ) 
        return;
    if(st<ed){
        while(st<ed){
            ta_num=st+1;
            ol = ta.options[st].cloneNode(true);
            ta_ol = ta.options[ta_num].cloneNode(true);
            ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
            ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);   
            st=ta_num;
        }
    }else if(st>ed){
        while(st>ed){
            ta_num=st-1;
            ol = ta.options[st].cloneNode(true);
            ta_ol = ta.options[ta_num].cloneNode(true);
            ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
            ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);   
            st=ta_num;
        }
    }
}

