String.prototype.trim = function() {return this.replace(/(^\s*)|(\s*$)|($\s*)/g, "");}
var tid;

function MessageSildeDown(Message) {
	MessageSildeUp();
	tid = window.setTimeout("MessageSildeUp();", 7000);
	$("#TopMessageToggleBox").html("<div>"+ Message +"</div>").slideDown(700);
};

function MessageSildeUp() {
	window.clearTimeout(tid);
	if ($("#TopMessageToggleBox").css("display") == "block") $("#TopMessageToggleBox").slideUp(800, function() { $("#Message").empty(); });
};

//빈칸 확인
NullChk_obj = function(obj) {
	if (obj.val().replace(/\s/g, "").length == 0) {
		return false;
	}
	return true;
}

//빈칸 확인
NullChk = function(obj, text) {
	if (obj.val().replace(/\s/g, "").length == 0) {
		alert(text + " 입력하세요.");
		obj.focus();
		return false;
	}
	return true;
}

//패스워드 확인
PwChk = function(obj, text) {
	if (!NullChk(obj, text)) return false;
	var str = obj.val();
	var chkStr = '0123456789';
	var chkEng = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var j = 0;
	var k = 0;

	if(str.length < 6 || str.length > 20){
		alert("패스워드는 6 ~ 20자 숫자/영문 혼용만 가능합니다.");
		obj.val("");
		obj.focus();
		return false;
	}
	for(var i = 0; i < str.length; i++) {
		if(chkStr.indexOf(str.substring(i, i+1))== -1){ //숫자가 아니고
			if(chkEng.indexOf(str.substring(i, i+1))==-1){ //영문소문자가 아닌경우
				alert("패스워드는 특수문자 또는 한글은 불가능합니다.");
				obj.val("");
				obj.focus();
				return false;
			} else {
				j++;
			}
		} else {
			k++;
		}
	}
	if((j==str.length || k==str.length)){
		alert("패스워드는 숫자와 영문을 혼용하여야합니다.");
		obj.val("");
		obj.focus();
		return false;
	}
	return true;
}

// 라디오 버튼 Null 체크 
NullChk_Radio = function(obj, text) {
	var isChecked = false;
	if (obj.length == undefined) {
		if (obj.checked) isChecked = true;
	} else {
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked) isChecked = true;
		}
	}
	if (!isChecked) {alert(text + " 선택하세요"); return isChecked;}
	return isChecked;
}


//radio Null 체크
NullChk_Radio2 = function(obj, text) {
	isChecked = obj.is(":checked");
	if (!isChecked) { alert(text +" 선택하세요"); };
	return isChecked;
};


//obj input Null 체크
NullChk_Obj = function(obj) {
	if ($.trim(obj.val()).replace(/\s/g, "").length == 0) { return false; };
	return true;
};

//obj radio Null 체크
NullChk_Radio_Obj = function(obj) { return obj.is(":checked"); };


//<------------- 이미지 체크
ExtChk_File = function(mode, obj, text) {
	var isChecked = false;
	var file_Name = obj.val().slice(obj.val().lastIndexOf(".")).toLowerCase();
	if (mode == "img") {
		for (var i = 0; i < Img_extArray.length; i++) {
			if (file_Name == Img_extArray[i]) {
				isChecked = true;
				break;
			}
		}
	} else if (mode == "file") {
		for (var i = 0; i < File_extArray.length; i++) {
			if (file_Name == File_extArray[i]) {
				isChecked = true;
				break;
			}
		}
	}
	if (!isChecked) {
		alert(text);
		obj.val("");
		obj.focus();
	}
	return isChecked;
}

//<------------- 이미지/파일 체크
ExtChk_File2 = function(arrExt, obj, text) {
	var isChecked = false;
	var file_Name = obj.val().slice(obj.val().lastIndexOf(".")).toLowerCase();
	for (var i = 0; i < arrExt.length; i++) {
		if (file_Name == arrExt[i]) {
			isChecked = true;
			break;
		};
	};
	if (!isChecked) {
		alert(text);
		obj.val("");
		obj.focus();
	};
	return isChecked;
};



function $name() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') {
			//element = document.getElementById(element);
			element = document.getElementsByName(element); // String 값일 때도 배열 가능하도록 함. (LEEDAN)
			if(element.length == 1) {
				element = element[0];
			}
		}
		if (arguments.length == 1)
		return element;
		elements.push(element);
	}
	return elements;
}

function $id() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') {
			element = document.getElementById(element);
			//element = document.getElementsByName(element); // String 값일 때도 배열 가능하도록 함. (LEEDAN)
			if(element.length == 1) {
				element = element[0];
			}
		}
		if (arguments.length == 1)
		return element;
		elements.push(element);
	}
	return elements;
}

//------------->입력폼에 포커스가 이동하면 테두리 색상이 변경됩니다.
function overInput(f) {
    f.className = "onInput";
}

function outInput(f) {
    f.className = "offInput";
}
//<-------------입력폼에 포커스가 이동하면 테두리 색상이 변경됩니다.

//<------------- 텍스트 박스 문자열 길이 반환
function updateChar(obj, length_limit) {
   var length = calculate_msglen(obj.value);
//   textlimit.innerText = length;
   if (length > length_limit) {
       alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
       obj.value = obj.value.replace(/\r\n$/, "");
       obj.value = assert_msglen(obj.value, length_limit);
   }
}

function calculate_msglen(message) {
   var nbytes = 0;

   for (i=0; i<message.length; i++) {
       var ch = message.charAt(i);
       if(escape(ch).length > 4) {
           nbytes += 2;
       } else if (ch == '\n') {
           if (message.charAt(i-1) != '\r') {
               nbytes += 1;
           }
       } else if (ch == '<' || ch == '>') {
           nbytes += 4;
       } else {
           nbytes += 1;
       }
   }

   return nbytes;
}

function assert_msglen(message, maximum) {
   var inc = 0;
   var nbytes = 0;
   var msg = "";
   var msglen = message.length;

   for (i=0; i<msglen; i++) {
       var ch = message.charAt(i);
       if (escape(ch).length > 4) {
           inc = 2;
       } else if (ch == '\n') {
           if (message.charAt(i-1) != '\r') {
               inc = 1;
           }
       } else if (ch == '<' || ch == '>') {
           inc = 4;
       } else {
           inc = 1;
       }
       if ((nbytes + inc) > maximum) {
           break;
       }
       nbytes += inc;
       msg += ch;
   }
//   textlimit.innerText = nbytes;
   return msg;
}

//한글/영문 문자열 바이트 반환
function doMessage(lenght_limit, contentid, byteid) {
	var memocontent = document.getElementById(contentid);
	var str = memocontent.value;
	var strlen = getStrByte(str);
	var byte = document.getElementById(byteid);
	byte.innerHTML = strlen;
	if(strlen > lenght_limit) {
		alert("최대"+lenght_limit+"byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
		str = str.replace(/\r\n$/,"");
		memocontent.value = assert_msglen(str,lenght_limit);
		byte.innerHTML = lenght_limit;
	}
}

//바이트 계산 함수
function getStrByte(str) {
	var nbytes = 0;
	for(var i = 0 ; i < str.length ; i++) {
		var ch = str.charAt(i);
		if(escape(ch).length > 4) {
//			nbytes += 1;
			nbytes += 2;
		} else if(ch == '\n') {
			if(str.charAt(i-1) != '\r') {
//				nbytes += 0.5;
				nbytes += 1;
			}
		} else if(ch == '<' || ch == '>') {
//			nbytes += 4;
			nbytes += 2;
		} else {
//			nbytes += 0.5;
			nbytes += 1;
		}
	}
	return nbytes;
}

//한글/영문 문자열 바이트 반환
function StrLenChk_2(len_limit, inputbox_obj) {
	var str_len = getStrByte(inputbox_obj.val());
	if(str_len > len_limit) {
		alert("*** 글자수 제한 ***\n영문 : "+ len_limit +"자\n한글 : "+ len_limit/2 +"자\n\n초과된 글자수는 자동으로 삭제됩니다.");
		inputbox_obj.val(inputbox_obj.val().replace(/\r\n$/,""));
		inputbox_obj.val(assert_msglen(inputbox_obj.val(), len_limit));
//		inputbox_obj.html(inputbox_obj.val());
	}
}

//<---------- iframe height 자동조절
function resizeFrame(iframeObj) {
	var innerBody = iframeObj.contentWindow.document.body;
	var innerHeight = innerBody.scrollHeight + (innerBody.offsetHeight - innerBody.clientHeight);
	var innerWidth = innerBody.scrollWidth + (innerBody.offsetWidth - innerBody.clientWidth);

	if (innerHeight>0 && innerWidth>0) {
		iframeObj.style.height = innerHeight;
		iframeObj.style.width = innerWidth;
	}
}

//<------------- 이미지 체크
function extChk(val_Mode, val_Obj, val_Text) {
	var allowSubmit = false;
	var file_Name = val_Obj.value.slice(val_Obj.value.lastIndexOf(".")).toLowerCase();
	if (val_Mode == "img") {
		for (var i = 0; i < Img_extArray.length; i++) {
			if (file_Name == Img_extArray[i]) {
				allowSubmit = true;
				break;
			}
		}
	} else if (val_Mode == "file") {
		for (var i = 0; i < File_extArray.length; i++) {
			if (file_Name == File_extArray[i]) {
				allowSubmit = true;
				break;
			}
		}
	}
	if (!allowSubmit) {
		alert(val_Text);
		val_Obj.value = "";
		val_Obj.focus();
	}
	return allowSubmit;
}

function ssncheck(obj_form) {
	var f = obj_form;
	if(!nullChk(f.ssn1, "주민등록번호 앞자리를"))
		return false;
	if(!nullChk(f.ssn2, "주민등록번호 뒷자리를"))
		return false;
	var s1 = f.ssn1.value;
	var s2 = f.ssn2.value;
	
	var n1 = s2.charAt(0);

	if((n1 == 5) || (n1 == 6) || (n1 == 7) || (n1 == 8)) {
		if(!isRegNo_fgnno(s1.concat(s2))) {
			alert("올바른 주민등록번호가 아닙니다.");
			f.ssn1.value = '';
			f.ssn2.value = '';
			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	} else {
		var hap = 0;
		for (var i = 0; i < 6; i++) {
			var temp = s1.charAt(i)*(i+2);
			hap += temp;
		}
		var n1 = s2.charAt(0);
		var n2 = s2.charAt(1);
		var n3 = s2.charAt(2);
		var n4 = s2.charAt(3);
		var n5 = s2.charAt(4);
		var n6 = s2.charAt(5);
		var n7 = s2.charAt(6);
	
		hap += n1*8 + n2*9 + n3*2 + n4*3 + n5*4 + n6*5;
		hap %= 11;
		hap = 11 - hap;
		hap %= 10;
	
		if(hap != n7) {
			alert("올바른 주민등록번호가 아닙니다.");
			f.ssn1.value = '';
			f.ssn2.value = '';
			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	}
}

function ssncheck_sexy(obj_form) {
	var f = obj_form;
	if(!nullChk_sexy(f.ssn1, "주민등록번호 앞자리를"))
		return false;
	if(!nullChk_sexy(f.ssn2, "주민등록번호 뒷자리를"))
		return flase;
	var s1 = f.ssn1.value;
	var s2 = f.ssn2.value;
	
	var n1 = s2.charAt(0);

	if((n1 == 5) || (n1 == 6) || (n1 == 7) || (n1 == 8)) {
		if(!isRegNo_fgnno(s1.concat(s2))) {
			Sexy.info("<h1>올바른 주민등록번호가 아닙니다.</h1>");
			f.ssn1.value = '';
			f.ssn2.value = '';
//			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	} else {
		var hap = 0;
		for (var i = 0; i < 6; i++) {
			var temp = s1.charAt(i)*(i+2);
			hap += temp;
		}
		var n1 = s2.charAt(0);
		var n2 = s2.charAt(1);
		var n3 = s2.charAt(2);
		var n4 = s2.charAt(3);
		var n5 = s2.charAt(4);
		var n6 = s2.charAt(5);
		var n7 = s2.charAt(6);
	
		hap += n1*8 + n2*9 + n3*2 + n4*3 + n5*4 + n6*5;
		hap %= 11;
		hap = 11 - hap;
		hap %= 10;
	
		if(hap != n7) {
			Sexy.info("<h1>올바른 주민등록번호가 아닙니다.</h1>");
			f.ssn1.value = '';
			f.ssn2.value = '';
//			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	}
}

function isRegNo_fgnno(fgnno) { 
	var sum=0; 
	var odd=0; 
	buf = new Array(13); 
	for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); } 
	odd = buf[7]*10 + buf[8]; 
	if(odd%2 != 0) { return false; } 
	if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) { 
		return false; 
	} 
	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5]; 
	for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); } 
	sum = 11 - (sum%11); 
	if(sum >= 10) { sum -= 10; } 
	sum += 2; 
	if(sum >= 10) { sum -= 10; } 
	if(sum != buf[12]) { return false } 
	return true; 
} 


function passcheck(pw) {
	var str = pw;
	var chkStr = '0123456789';
	var chkEng = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var j=0;
	var k=0;
	
	if(str.length < 6 || str.length > 20){
		alert("패스워드는 6 ~ 20자 숫자/영문 혼용만 가능합니다.");
		return false;
	}
	for(var i=0; i<str.length; i++) {
		if(chkStr.indexOf(str.substring(i, i+1))== -1){ //숫자가 아니고
			if(chkEng.indexOf(str.substring(i, i+1))==-1){ //영문소문자가 아닌경우
				alert("패스워드는 특수문자 또는 한글은 불가능합니다.");
				return false;
			} else {
				j++;
			}
		} else {
			k++;
		}
	}
	if((j==str.length || k==str.length)){
		alert("패스워드는 숫자와 영문을 혼용하여야합니다.");
		return false;
	}
	return true;
}

//빈칸확인
function nullChk(v, str){
	if(v.value.trim() == null || v.value.trim() == '') {
		alert(str + ' 입력하세요.');
		v.focus();
		return false;
	}
	return true;	
}

//빈칸확인_sexy
function nullChk_sexy(v, str){
	if(v.value==null || v.value==''){
		Sexy.info('<h1>' + str + ' 입력하세요.</h1>');
//		v.focus();
		return false;
	}
	return true;	
}


// 라디오 버튼 Null 체크 
NullChk_Radio = function(obj, text) {
	if (!obj.is(":checked")) {
		alert(text +" 선택하세요.");
		return false;
	} else {
		return true;
	};
}

//셀렉트 Null 체크
NullChk_Select = function(obj, text) {
	if (obj.val().replace(/\s/g, "").length == 0) {
		alert(text + " 선택하세요.");
		obj.focus();
		return false;
	}
	return true;
}

// 라이오 버튼 Null 체크 
function nullChk_Option(val_Obj, var_Text) {
	var isChecked = false;
	if (val_Obj.length == undefined) {
		if (val_Obj.checked) isChecked = true;
	} else {
		for (i = 0; i < val_Obj.length; i++) {
			if (val_Obj[i].checked) isChecked = true;
		}
	}
	if (!isChecked) {alert(var_Text + " 선택하세요"); return isChecked;}
	return isChecked;
}

//주소 검색 창 띄우기
function do_search_zip() {
	window.open("zip.asp?todo=info","","width=450,height=300, top=100,left=500, resizable=1,scrollbars=yes ");
}

//text박스 자리 이동	
function dokeypress(here, next, strlength) {
	if (here.value.length == strlength) {
		next.focus();
	}
}

//엔터키와 숫자만 넣기
function keypress_enter_number(val_Num) {
	if (event.keyCode == 13) {
		return true;
	} else if( (event.keyCode < 48) || (event.keyCode > 57) ) {
		event.returnValue = false;
	}
}

//공백 지우기
function trim(str) {
	var start;
	var end;
	for (start=0 ; start<str.length ; start++) {
		if(str.charAt(start)!=' ') break;
	}
	for (end=str.length-1 ; end>=0 ; end--) {
		if(str.charAt(end)!=' ') break;
	}
	if (start > end) return "";
	return str.substring(start, end+1);
}
	
//이메일확인
function isEmail(obj, stralert) {
	var str = trim(obj.value);
	if(!nullChk(obj, stralert))
		return false;
	var tempChar;
	for (var i=0; i<str.length; i++) {
		tempChar = str.charAt(i);
		if(!(('a'<= tempChar && tempChar<='z') || (0<=tempChar && tempChar<=9) || tempChar == "." )) {
			alert("잘못된 이메일 형식입니다.");
			obj.select();
			obj.value='';
			obj.focus();
			return false;
		}
	}
	return true;
}

function CallServer(pageName, paramStr) {
	var objXmlHttp = null;
	try {
		// FireFox, Opera 8.0++, Safari, 익스 7.0+
		objXmlHttp = new XMLHttpRequest();	
	} catch(e) {
		try {
			// 익스플로러 6.0+
			objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				// 익스플로러 5.5+
				objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				alert("Ajax가 지원되지 않는 브라우져 입니다.");
				return;
			}
		}
	}
	objXmlHttp.open("POST", pageName, false); //(false:동기)
	objXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objXmlHttp.send(paramStr);
	var txtStr = objXmlHttp.responseText;
	return txtStr.replace(/(^\s*)|(\s*$)/g, "");    // 공백취환
}

//서밋 함수
function goSubmit(obj, mOpt, Act, Tag){
    var nOpt_Type
    
    if(mOpt == true){
        //파일업로드시 
        nOpt_Type = "multipart/form-data";
    }
    else{
        //일반
        nOpt_Type = "application/x-www-form-urlencoded";
    }
    
    with(obj){
        action = Act;
        target = Tag;
        encoding = nOpt_Type;
        submit();
    }
}

//검색함수(검색어)
function goSearch(obj, mOpt, Act, Tag){
    if(obj.SearchCon[obj.SearchCon.selectedIndex].value == 0){
        alert("검색조건을 선택하세요.");
        obj.SearchCon.focus();
        return;
    }
    
    if(obj.SearchVal.value == ""){
        alert("검색어를 입력하세요.");
        obj.SearchVal.focus();
        return;
    }
    
    Act = Act + "?Current_Page=1&SearchCon=" + obj.SearchCon[obj.SearchCon.selectedIndex].value + "&SearchVal=" + obj.SearchVal.value;
    goSubmit(obj, mOpt, Act, Tag)
}

//검색함수(검색어)
function goSearch2(obj, mOpt, Act, strLink, Tag){
    if(obj.SearchCon[obj.SearchCon.selectedIndex].value == 0){
        alert("검색조건을 선택하세요.");
//        obj.SearchCon.focus();
        return false;
    }
    
    if(obj.SearchVal.value == ""){
        alert("검색어를 입력하세요.");
        obj.SearchVal.focus();
        return false;
    }
    
    Act = Act + "?Current_Page=1" + strLink + "&SearchCon=" + obj.SearchCon[obj.SearchCon.selectedIndex].value + "&SearchVal=" + obj.SearchVal.value;
    goSubmit(obj, mOpt, Act, Tag)
}

