function isEmpty(str){
    for(var intLoop = 0; intLoop < str.length; intLoop++)
        if(str.charAt(intLoop) != " ")
            return false;
            return true;
}

function open_window(page, nam, status, toolbar, resize, scroll, menu, width, height, top, left) { 
	window.open(page, nam, "status="+status+",toolbar="+toolbar+",resizable="+resize+",scrollbars="+scroll+", menubar="+menu+",width="+width+", height="+height+", top="+top+", left="+left+"")
}

/** 새로고침 막기 */
function LockReload(){

	if (event.keyCode == 116 || event.keyCode == 8) {
		event.keyCode = 0;
		return false;
	}	
}

/** 태그를 없애고 보여주기 */
function stripHTMLtag(string) {
   var objStrip = new RegExp();
   objStrip = /[<][^>]*[>]/gi;
   return string.replace(objStrip, "");
}


/** 태그를 체크 */
function isHTMLTag(str) {
	if( isExistsWord(str, '<') ) return true;
	else {

		if( isExistsWord(str, '>') ) return true;
		else {
			if( isExistsWord(str, '&')) return true;
			else return false;
		}
	} 
}


/** str안에 compStr가 존재하면 참, 아니면 거짓 반환 */
function isExistsWord(str, compStr) {

	var newCompStr = compStr.toLowerCase();
	var newStr = str.toLowerCase();

	if( str.indexOf(newCompStr) == -1 ) {
		return false;
	} else {
		return true;
	}
}

/** HTML tag가 있다면 true, 없다면 false 반환 */
function AAisHTMLTag(str) {
	var newStr = str.replace(/<(.*).*>(.*)<\/\1>/,"");
	if( newStr != str) return true;
	else false;
}

/** 숫자만 걸러낸다. */
function removeNoneNum(val){    
    var reg=/[^\d]/;
    while(reg.test(val)){
        val=val.replace(reg,"");
    }    
    return val;
}
/**
 * 폼에 입력 막기
 * 예) <input type="file" name="filename" size="30" onKeyPress="fnClear()" onfocus="this.click();this.blur()"> 
 */
function fnClear(flag) 
{ 
	event.returnValue=false; 
} 

/**
 * 영어와 숫자만 받아들인다.
 */
function isEng(str) { 
  
  for(var i=0;i<str.length;i++){ 
    achar = str.charCodeAt(i);  

    if (!((achar >=48 && achar <=57) 
    	|| (achar >=65 && achar <=90) 
    	|| (achar >=97 && achar <=122)
    	))
    {
      return false ; 
    }  
    
  }
   
  return true;  
} 

/**
 * string value 가 null인지 여부를 결정하는 함수
 * white space 까지도 null로 인식
 */
function isEmpty(str){
    for(var intLoop = 0; intLoop < str.length; intLoop++)
        if(str.charAt(intLoop) != " ")
            return false;
            return true;
}

/**
 * 숫자인지 체크하는 함수
 * 숫자이면 true를 아니면 false를 return한다.
 */
function isNumber(str){
    if(isNaN(str)){
        return false;
    }else{
        return true;
    }
}

/**
 * textarea 의 max를 체크하는 함수
 * obj => 체크할 textarea의 object
 * max_len => 최대 길이
 * 메시지 창에서 보여줄 필드명(예:비고, 설명, 내용)
 */
function textareaMaxCheck(obj, max_len, field_name){
    if(max_len > 0){
        var i, len=0
        if (typeof obj == "undefined")
            return true
        var s = obj.value;
        for(i=0;i < s.length; i++){
            if(s.charCodeAt(i) > 255 && (event.keyCode != 8)){
             len+=2
            }else if(event.keyCode != 8){
             len++;
            }
        }
        if (max_len-1 < len) {
            if (typeof field_name != "undefined") alertDiv(field_name + "은(는) " + max_len + "자를 넘을 수 없습니다\n(한글은 글자당 2자로 계산됩니다.)", 0);
            if ((event.keyCode == 8) || (event.keyCode == 46) || (event.keyCode == 37) || (event.keyCode == 38) || (event.keyCode == 39) || (event.keyCode == 40)){
                obj.focus();
                event.returnValue = true;
            }else{
                obj.focus();
                event.returnValue = false;
            }
        }
        return true;
    }
}

/**
 * 새창을 여는 함수.
 * 새창은 항상 화면 중앙에 뜨도록 되어있다
 */
function openWindow(windowName, url, width, height, marginwidth, marginheight, menubar, scrollbars, resizable){
    var left = (screen.width - width) / 2;
    var top = (screen.height - height) / 2;
    var newWin = window.open(url, windowName, "left=" + left + ",top=" + top + ",width=" + width + ",height=" + height + ",marginwidth=" + marginwidth + ", marginheight=" + marginheight + ", menubar=" + menubar + ",scrollbars=" + scrollbars + ", resizable=" + resizable);
    newWin.focus();
}

/**
 * 체트된 값들을 return
 * formName : form 의 name
 * checkboxName : checkbox 의 name
 * delimeter
 * canMulti : true -> 다중선택 가능 false -> 다중선택 불가
 * Name : 오류메시지용(***을 선택하여주십시오.)
 */
function getCheckedList(formName, checkboxName, delimeter, canMulti, Name){
    var chk = eval("document." + formName + "." + checkboxName);
    var checkedList = "";
    var count = new Number(0);

    if(chk == null) return false;

    if(chk.length == null){
        if(chk.checked == true){
            checkedList = chk.value + delimeter;
            count++;
        }
    }else{
        for(i=0 ; i<chk.length ; i++){
            if(chk[i].checked == true){
                checkedList = checkedList + chk[i].value + delimeter;
                count++;
            }
        }
    }

    if(count == 0){
        alertDiv(Name + " 선택하여주십시오.", 0);
        return;
    }

    if(!canMulti){
        if(count > 1){
            alertDiv(Name + " 하나만 선택하여주십시오.", 0);
            return;
        }
    }
    return checkedList;
}

/**
 * 한글 한글자를 2byte로 인식하여, IE든 Netscape든
 * 제대로 byte길이를 구해 줍니다.
 */
function getByteLength(s){
   var len = 0;
   if ( s == null ) return 0;
   for(var i=0;i<s.length;i++){
      var c = escape(s.charAt(i));
      if ( c.length == 1 ) len ++;
      else if ( c.indexOf("%u") != -1 ) len += 2;
      else if ( c.indexOf("%") != -1 ) len += c.length/3;
   }
   return len;
}

/**
 * 앞뒤 공백을 제거한다.
 * trim(String)
 */
function trim (strSource) {
    re = /^\s+|\s+$/g;
    return strSource.replace(re, '');
}


function truncate(srcStr, maxLength) {
    /*
    if (maxLength == null) {
        maxLength = 45;
    }
    */
    var len = 0;
    var ret = "";

    for(var i=0;i<srcStr.length;i++){
        var c = escape(srcStr.charAt(i));
        if ( c.length == 1 ) len ++;
        else if ( c.indexOf("%u") != -1 ) len += 2;
        else if ( c.indexOf("%") != -1 ) len += c.length/3;

        if(len <= maxLength) {
            ret += c;
        }
        else break;
   }

    ret += "<b>...</b>";
    return unescape(ret);
}

//오른쪽마우스 눌렀을때 소스보기,새로고침 등등의 익스플로러창 않뜨게 하는 메소드
function getContextmenuProperty() {
    event.returnValue = true;
}

// 입력받은 문자열에 포함된 특정 Character를 replace시킨다.
function replaceAll(oldStr, from, to) {
    var re = new RegExp (from, 'gi');
    var newStr = oldStr.replace(re, to);
    return newStr;
}

//target 문자열이 prefix로 시작하는가 체크
function startsWith(target,prefix) {
	
	var tLength = target.length();
	var pLength = prefix.length();
	
	if(pLength < 1 || tLength < pLength ) return false;
	
	for(var i = 0 ; i < pLength ; i++ ) {
	
		if( prefix.charAt(i) != target.charAt(i) )  return false;
	}
	return true;
}
	var acookie = document.cookie;
	var op = 0;
	var dd;
	var s_username = "";
	var ck_photo = "";
function login_check(){

	if(acookie.length > 0) {
		var cc = acookie.split(";");
		for(var i=0;i<cc.length;i++){
			if(cc[i].match("s_userid")) {
				var posSemi = cc[i].indexOf("=");
				var s_userid = cc[i].substr(posSemi + 1, cc[i].length - posSemi);
				op = 1;
			}
			if(cc[i].match("s_username")) {
				var posSemi = cc[i].indexOf("=");
				s_username = cc[i].substr(posSemi + 1, cc[i].length - posSemi);
			}		
			if(cc[i].match("ck_point")) {
				var posSemi = cc[i].indexOf("=");
				ck_point = cc[i].substr(posSemi + 1, cc[i].length - posSemi);
			}		
			if(cc[i].match("ck_photo")) {
				var posSemi = cc[i].indexOf("=");
				ck_photo = cc[i].substr(posSemi + 1, cc[i].length - posSemi);
			}		
		}	 
	}
	
}

/*********************************************************************************
	기능 : 공란 체크 (자동 Focus 기능)
	개발자 : 정성학
	수정일 : 2004-12-10
*********************************************************************************/
function check_blank(form, msg) {
	if (form.value == "") {
		alertDiv(msg, 0);
//		form.focus();
		return false;
	}
	return true;
}

/*********************************************************************************
	기능 : 이메일 유효성 검사
	개발자 : 정성학
	수정일 : 2005-01-07
*********************************************************************************/
function simple_email_check(user_email) {
	var len = user_email.length;
	if (user_email.indexOf("@") < 0 || user_email.indexOf(".") < 0) {
		alertDiv("유효한 이메일 주소가 아닙니다.", 0);
		return false;
	}
	else {
		return true;
	}
}


/*********************************************************************************
	기능 : 필터링 메일  (hanmail.net / daum.net / yahoo.com / nexonclub.com / lycos.com)
	개발자 : 정성학
	수정일 : 2005-01-07
*********************************************************************************/
function check_not_email(email_val) {
	var emailstr = email_val;
	var emaillen = email_val.length
	var pos_at = emailstr.indexOf("@");
	var mailserver = emailstr.substring(pos_at + 1, emaillen);

	if (mailserver == "hanmail.net" || mailserver == "daum.net" || mailserver == "yahoo.com" || mailserver == "nexonclub.com" || mailserver == "lycos.com" ) {
		alertDiv("사용할 수 없는 메일서버입니다", 0);
		return false;
	}
	else {
		return true;
	}
}

function check_ImageType(form, div, msg) {
        var filename = form.value.toLowerCase();
        switch (div) {
                case "gj" :
                        if (filename.match(/\.(jpg|jpeg|gif)$/i)) {
                                return true;
                        }
                        else {
                                alertDiv(msg, 0);
                                return false;
                        }
                        break;
                case "gb" :
                        if (filename.match(/\.(gif|bmp)$/i)) {
                                return true;
                        }
                        else {
                                alertDiv(msg, 0);
                                return false;
                        }
                        break;
                case "jb" :
                        if (filename.match(/\.(jpg|jpeg|bmp)$/i)) {
                                return true;
                        }
                        else {
                                alertDiv(msg, 0);
                                return false;
                        }
                        break;
                case "jgb" :
                        if (filename.match(/\.(jpg|jpeg|gif|bmp)$/i)) {
                                return true;
                        }
                        else {
                                alertDiv(msg, 0);
                                return false;
                        }
                        break;
                case "jgpz" :
                        if (filename.match(/\.(jpg|jpeg|gif|png|zip)$/i)) {
                                return true;
                        }
                        else {
                                alertDiv(msg, 0);
                                return false;
                        }
                        break;
        }      

}

function printHTML(str) {
        var strHTML=str;
        document.write(strHTML);
}

// 특정 object에 위치 좌표값을 배열로 반환한다.
function getImagePosFortext(obj) {
	var cnt=0;
	var total=new Array(2);
	total[0]=0;
	total[1]=0;
	while(obj)
	{
		total[0]=total[0]+obj.offsetLeft;
		total[1]=total[1]+obj.offsetTop;
		obj=obj.offsetParent
		cnt++;
		if (cnt>100)
			return false;
	}
	return total;
}	

// ajax 송신 함수 (원하는 위치를 지정하고 하는 경우)
function loadAjaxWindow(parameter, method, url, posObj, layObj) {

	sendRequest(on_loaded1, parameter, method, url, true, true);

	//레이어 위치 결정
	var Position = getImagePosFortext(posObj);
	layObj.innerHTML = "";
	layObj.style.display = '';
	layObj.style.top=Position[1];
	layObj.style.left=Position[0];
}

// ajax 송신 함수 (원하는 위치를 지정하고 하는 경우)
function loadAjaxWindowPos(parameter, method, url, wPos, hPos, layObj) {
	sendRequest(on_loaded1, parameter, method, url, true, true);

	//레이어 위치 결정
	layObj.innerHTML = "";
	layObj.style.display = '';
	layObj.style.top=hPos;
	layObj.style.left=wPos;
}

// ajax 송신 함수 (고정 위치로 지정하는 경우)
function loadAjaxFixWindow(parameter, method, url, layObj) {
	sendRequest(on_loaded1, parameter, method, url, true, true);

	layObj.innerHTML = "";
	layObj.style.display = '';
}

// ajax 송신 함수 (원하는 위치를 지정하고 하는 경우)
function gmLoadAjaxWindow(parameter, method, url, posObj, layObj) {
	sendRequest(gmNotice_load, parameter, method, url, true, true);

	//레이어 위치 결정
	var Position = getImagePosFortext(posObj);
	layObj.innerHTML = "";
	layObj.style.display = '';
	layObj.style.top=Position[1]+20;
	layObj.style.left=Position[0]+80;
}

// 특정문자 제거한 후 int로 변환 
function strToNumber(str) {
	var Re = /[^0-9]/g;
	str = str.replace(Re,''); 

	return parseInt(str);
}

// 숫자 포맷 정의 
function numberFormat(str) {
	str += "";
	var Re = /[^0-9]/g;
	var ReN = /([0-9]+)([0-9]{3})/;
	str = str.replace(Re,''); 
	while (ReN.test(str)) { 
		str = str.replace(ReN, "$1,$2"); 
	}
	
	return str;
}

//아이디 체크
function idInputCheck(id) {
	var Alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	var Num   = '0123456789';
	var char_check = Alpha + Num;

	if (isEmpty(id.value)) {
		alertDiv("아이디를 입력해주세요.", 0);
		return false;
	}
	if (!isEng(id, "아이디는 영문 및 숫자로 입력해주세요")) {
		return false;
	}
	if (!check_length(id, 4, 12, "아이디는 4 ~ 12 자리의 영문 및 숫자만 가능합니다.")) {
		return false;
	}
	if (!char_type(id, char_check, "아이디는 영문 및 숫자만 가능합니다.")) {
		return false;
	}
	if (!first_char(id, Alpha, "아이디의 첫글자는 영어로 입력해주세요")) {
		return false;
	}
	
	return true;
}

// 로그인 체크 
function checkLoginInfo(){
	var frm = document.loginFrm;

	if (isEmpty(frm.log_id.value)) {
		alertDiv("아이디를 입력해주세요.", 0);
		return false;
	}
	if (isEmpty(frm.log_pwd.value)) {
		alertDiv("비밀번호를 입력해 주세요.", 0);
		return false;
	}

	return true;
}

//* 배경 이미지 없애기
function fnBgImageNone(obj){
	obj.style.backgroundImage = ''; 
}

//* 배경 이미지 삽입
function fnBgImageInsert(obj, path){
	if(obj.value == ""){
		obj.style.backgroundImage = 'url('+ path +')'; 
	}
}

// 로그인 처리
function loginSubmit(domain) {
	var frm = document.loginFrm;
	var check = checkLoginInfo();
	
	if (check != true) {
		return;
	}

	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member/body/login_prc.php";
	frm.method = "post";
	frm.submit();

}
		
// 로그아웃 처리
function logoutSubmit(domain) {
	var frm = document.loginFrm;
	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member/body/logout.php";
	frm.method = "post";
	frm.submit();
}

function loginKeySubmit(domain) {
	if(event.keyCode == 13){
		loginSubmit(domain);
	}
}

// [로케테스트] 로그인 처리 
function loginSubmit_loc(domain) {
	var frm = document.loginFrm;
	var check = checkLoginInfo();
	
	if (check != true) {
		return;
	}

	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member_loc/body/login_prc.php";
	frm.method = "post";
	frm.submit();

}
		
// [로케테스트] 로그아웃 처리
function logoutSubmit_loc(domain) {
	var frm = document.loginFrm;
	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member_loc/body/logout.php";
	frm.method = "post";
	frm.submit();
}

// [로케테스트]
function loginKeySubmit_loc(domain) {
	if(event.keyCode == 13){
		loginSubmit_loc(domain);
	}
}

// [BR] 로그인 처리 
function loginSubmit_br(domain) {
	var frm = document.loginFrm;
	var check = checkLoginInfo();
	
	if (check != true) {
		return;
	}

	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member_br/body/login_prc.php";
	frm.method = "post";
	frm.submit();

}
		
// [BR] 로그아웃 처리
function logoutSubmit_br(domain) {
	var frm = document.loginFrm;
	frm.target = "loginIFrm";
	frm.action = domain + "/sub_main/member_br/body/logout.php";
	frm.method = "post";
	frm.submit();
}

// [BR]
function loginKeySubmit_br(domain) {
	if(event.keyCode == 13){
		loginSubmit_br(domain);
	}
}

// 기능 : 메세지 정의 (val 변수는 error 구분을 위한 값) 
function showMsg (code, val) {
	var msg = codeToString(code, val);
	alertDiv(msg, 0);
}

function showMsg_callback (code, val, callbackFunc) {
	var msg = codeToString(code, val);
	alertDiv(msg, callbackFunc);
}

function codeToString(code, val) {
	if (code == "login_err") {
		msg = "로그인 하셔야 합니다.";
	}
	else if (code == "confirm_err1") {
		msg = "확인 후 다시 시도해 주세요.";
	}
	else if (code == "confirm_err2") {
		msg = "일치하는 정보가 없습니다.";
	}
	else if (code == "insert_err1") {
		msg = "정확하게 다시 입력해주세요.";
	}
	else if (code == "insert_err2") { 
		msg = "입력 정보가 없습니다.";
	}
	else if (code == "insert_err3") { 
		msg = "사용할 수 없는 문자열입니다. 다시 입력해주세요.";
	}
	else if (code == "server_err") {
		msg = "게임 서버의 점검중으로 해당 기능을 사용하실 수 없습니다.  <br>점검이 끝난 이후에 다시 이용해 주세요.";
	}
	else if (code == "server_err2") {
		msg = "[1]정보 확인 도중 오류가 발생하였습니다. <br>잠시 후 다시 시도해주세요.";
	}
	else if (code == "server_err3") {
		msg = "[2]정보 확인 도중 오류가 발생하였습니다. <br>잠시 후 다시 시도해주세요.";
	}
	else if (code == "yahoo_err") {
		msg = "yahoo는 이메일 등록이 불가합니다.";
	}
	else if (code == "pwd_err1")	{
		msg = "비밀번호 정보가 없습니다.";
	}
	else if (code == "pwd_err2")	{
		msg = "비밀번호가 일치하지 않습니다.";
	}
	else if (code == "user_err1") {
		msg = "회원 정보를 확인 하신 후 다시 시도해 주세요.";
	}
	else if (code == "user_err2") {
		msg = "로그아웃 후 다시 시도해 주세요.";
	}
	else if (code == "user_err3") {
		msg = "아이디가 존재하지 않습니다.";
	}
	else if (code == "email_err2") {
		msg = "기존 이메일과 동일합니다.";
	}
	else if (code == "email_err3") {
		msg = "가입되어 있는 이메일 주소입니다.";
	}
	else if (code == "authnum_err1")	{
		msg = "발송된 인증번호는 유효하지 않습니다. <br> 잠시 후 다시 시도해 주세요.";
	}
	else if (code == "authnum_err2")	{
		msg = "유효 번호가 만료 되었습니다. <br> 이메일 확인을 다시 해주세요.";
	}
	else if (code == "mail_err1") {
		msg = "메일이 발송에 실패 했습니다. <br> 잠시후 다시 시도해 주세요.";
	}
	else if (code == "shop_err1") {
		msg = "보유하신 파이트머니가 부족하여 <br> 아이템을 구매할 수 없습니다.";
	}
	else if (code == "shop_err2") {
		msg = "해당 캐릭터의 카드를 등록하셔야 이용 가능합니다.";
	}
	else if (code == "shop_err3") {
		msg = "이미 구입한 아이템입니다.";
	}
	else if (code == "shop_err4") {
		msg = "아이템 정보가 없습니다.";
	}
	else if (code == "shop_err5") {
		msg = "칭호선택은 한번만 가능합니다.";
	}
	else if (code == "shop_err6") {
		msg = "국가를 선택한 후 아이템 구매가 가능합니다.";
	}
	else if (code == "shop_err7") {
		msg = "선택하신 아이템은 회원님의 캐릭터에서 사용하실 수 없습니다.<br>회원님의 캐릭터에 맞는 아이템을 구매해 주시기 바랍니다.";
	}
	else if (code == "shop_err8") {
		msg = "선택하신 아이템을 장착하기 위해 필요한 <br>베이스 아이템을 보유하고 계시지 않습니다. 먼저 장착에 <br>필요한 베이스아이템을 구매해주시기 바랍니다.";
	}
	else if (code == "set_err1") {
		msg = "캐릭터 소유 정보가 없습니다.";
	}
	else if (code == "set_err2") {
		msg = "아이템을 선택하셔야 장착이 가능합니다.";
	}
	else if (code == "set_err3") {
		msg = "아이템을 보유하셔야 장착이 가능합니다.";
	}
	else if (code == "set_err4") {
		msg = "장착중인 아이템입니다. 다른 아이템을 선택해주세요.";
	}
	else if (code == "set_err5") {
		msg = "국가를 선택한 후 칭호 아이템 장착이 가능합니다.";
	}
	else if (code == "set_err6") {
		msg = "아이템을 보유하셔야 해제가 가능합니다.";
	}
	else if (code == "set_complete1") {
		msg = "설정이 완료되었습니다.";
	}
	else if (code == "passwd_change") {
		msg = "비밀번호가 변경 되었습니다.다시 로그인해 주세요.";
	}
	else if (code == "name_off") {
		msg = "탈퇴처리가 정상적으로 되었습니다.";
	}	
	else if (code == "error") {
		msg = "[error" + val + "] 잠시 후 다시 시도해 주세요.";
	}
	else {
		msg = code;
	}
	
	return msg;
}
