/********************************************************
 * 스크립트 공통 함수 모음 
*********************************************************/

//-------------------------------------------------------
//영문, 숫자만 가능토록 체크, 영문 숫자일 경우 return true
//-------------------------------------------------------
var schar = new Array('~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '\\', '+', '|', '{', '}', ':', '"', '<', '>', '?', '*', '-', '`', '-', '=', '[', ']', ';','\'', ',', '.', '/');

function isUserid(name) 
{
    strarr = new Array(name.value.length);

    for (i=0; i<name.value.length; i++)
    {
        for (j=0; j<schar.length-1; j++)
        {
            if (schar[j] ==name.value.charAt(i))
                return false;
            else
                continue;
        }

        strarr[i] = name.value.charAt(i)
        if ((strarr[i] >=0) && (strarr[i] <=9))
            continue;
        else if ((strarr[i] >='a') && (strarr[i] <='z'))
            continue;
        else if ((strarr[i] >='A') && (strarr[i] <='Z'))
            continue;
        else
            return false;
    }
    return true;
}


//-------------------------------------------------------
//영문, 한글만 가능토록 체크, 영문 한글일 경우 return true
//-------------------------------------------------------
var schar1 = new Array('~', '!', '@', '#', '$', '%', '^', '&', '*', '_', '\\', '+', '|', '{', '}', ':', '"', '<', '>', '?', '*', '-', '`', '-', '=', '[', ']', ';','\'', ',', '.', '/');

function isHan(name) {
    strarr = new Array(name.value.length);
    

    for (i=0; i<name.value.length; i++)
    {
        for (j=0; j<schar.length; j++)
        {
            if (schar1[j] ==name.value.charAt(i))
                return false;
            else
                continue;
        }

        strarr[i] = name.value.charAt(i)
        if ((strarr[i] >=0) && (strarr[i] <=9))
            return false;
        else if ((strarr[i] >='a') && (strarr[i] <='z'))
            return false;
        else if ((strarr[i] >='A') && (strarr[i] <='Z'))
            return false;
        else if ((escape(strarr[i]) > '%60') && (escape(strarr[i]) <'%80') )
            return false;
        else
			continue;

    }  
    return true;
}

//-------------------------------------------------------
//바이트 계산, return 총바이트수 
//-------------------------------------------------------
function getBytes(instr) {
    var len = 0;
    for(i=0; i<instr.length; i++) {
        var chr = instr.charAt(i);
        if (escape(chr).length > 4) {
                len += 2;
        }
        else  {
                len++;
        }
    }
    return len;
}


//-------------------------------------------------------
// 이메일 및 이메일형태 ID검사, 이메일 형태일 경우 return true
//-------------------------------------------------------
function CheckEmail(strEmail){
    /** 금지사항
     - @가 2개이상
     - .이 붙어서 나오는 경우
     -  @.나  .@이 존재하는 경우
     - 맨처음이.인 경우 **/
    var regDoNot = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; 
    /** 필수사항
     - @이전에 하나이상의 문자가 있어야 함
     - @가 하나있어야 함
     - Domain명에 .이 하나 이상 있어야 함
     - Domain명의 마지막 문자는 영문자 2~3개이어야 함 **/
    var regMust = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3})$/;
    
    if ( !regDoNot.test(strEmail) && regMust.test(strEmail) )
        return true;
    else
        return false;
}

//-------------------------------------------------------
// 주민등록번호 체크 (1 Parameter), 중간에 - 들어간 주민번호
// 유효할 경우 return true
//-------------------------------------------------------
function Jumin_Num_Check(arg_v)
{
	ResNo1 = arg_v.substring(0, 6);
	ResNo2 = arg_v.substring(6);
	
	var chk = 0;
	var yy  = ResNo1.substring(0,2);
	var mm  = ResNo1.substring(2,4);
	var dd  = ResNo1.substring(4,6);
	var sex = ResNo2.substring(0,1);

	if (ResNo1.length != 6) 
	{
		return false;
	}
	
	if ((sex != 1 && sex != 2 && sex != 3 && sex != 4) || (ResNo2.length != 7)) 
	{
		return false;
	}   

	if ((ResNo1.length == 6) && (ResNo2.length == 7)) 
	{
		var ich = parseInt(sex, 10);	
		switch(ich) 
		{
			case 1: break;
			case 2: break;
			case 3: if(yy == 00) break;
			case 4: if(yy == 00) break;
			default:
				return false;
		}
	}
	
	for(var i = 0; i <=5; i++) 
	{ 
		chk = chk + (((i % 8) + 2) * parseInt(ResNo1.substring(i, i + 1)));
	}
	
	for(var i = 6; i <= 11; i++) 
	{
		chk = chk + (((i % 8) + 2) * parseInt(ResNo2.substring(i - 6, i - 5)));
	}
	
	chk = 11 - (chk % 11);
	chk = chk % 10;
	
	if(chk != ResNo2.substring(6, 7)) 
	{
		return false;
	}
	
	return true
}

//-------------------------------------------------------
// 주민등록번호 체크(2 parameter), 앞 뒷 자리 구분
// 유효할 경우 return true
//-------------------------------------------------------

function JuminCheck(ResNo1, ResNo2)
{
	var chk = 0;
	var yy  = ResNo1.substring(0,2);
	var mm  = ResNo1.substring(2,4);
	var dd  = ResNo1.substring(4,6);
	var sex = ResNo2.substring(0,1);

	if(ResNo1.length != 6) {
		alert('주민등록번호 앞부분이 잘못되었습니다.');
		return false;
	}
	
	if((sex != 1 && sex != 2 && sex != 3 && sex != 4) || (ResNo2.length != 7)) {
		alert ('주민등록번호 뒷부분이 잘못되었습니다.');
		return false;
	}   

	if((ResNo1.length == 6) && (ResNo2.length == 7)) {
		var ich = parseInt(sex, 10);	
		switch(ich) {
			case 1: break;
			case 2: break;
			case 3: if(yy == 00) break;
			case 4: if(yy == 00) break;
			default:
				alert('주민등록번호 뒷부분이 잘못되었습니다.');
				return false;
		}
	}
	
	for(var i = 0; i <=5; i++) { 
		chk = chk + (((i % 8) + 2) * parseInt(ResNo1.substring(i, i + 1)));
	}
	
	for(var i = 6; i <= 11; i++) {
		chk = chk + (((i % 8) + 2) * parseInt(ResNo2.substring(i - 6, i - 5)));
	}
	
	chk = 11 - (chk % 11);
	chk = chk % 10;
	
	if(chk != ResNo2.substring(6, 7)) {
		alert('유효하지 않은 주민등록번호입니다.');
		return false;
	}
	return true;
}
	
//-------------------------------------------------------
// 이름 체크, 해당특수 문자가 들어 있으면 return false
//-------------------------------------------------------
function NameCheck(n)
{
	var charck = '0123456789~!@#$%^&*()_-+=|{}[]<>,./?';
	for(var i = 0; i < n.length; i++) {
		var substr = n.substring(i, i + 1);
		if(charck.indexOf(substr) >= 0) return false;
	}
	return true;
}

//-------------------------------------------------------
// E-Mail Check, 유효한 경우 return true
//-------------------------------------------------------
function EmailCheck(str)
{
	var checkstr1 = '~!#$%^&*()+=|{}<>,/?';
	var checkstr2 = '@';
	var checkstr3 = '.';
	var alt = 0;
	var dot = 0;

	var st = str.indexOf('@');
	if(st < 1) {
		return false;
	}
	for(var i = 0; i < str.length; i++) {
		var substr = str.substring(i, i + 1);
		if(checkstr1.indexOf(substr) >= 0) {
			return false;
		}
		if(checkstr2.indexOf(substr) >= 0) {
			alt = alt + 1;
		}
		if(checkstr3.indexOf(substr) >= 0) {
			dot = dot + 1;
		}
	}
	if((alt != 1) || (dot > 3) || (dot < 1)) {
		return false;
	}
	return true;
}

//-------------------------------------------------------
// 문자열  소 --> 대문자 변환 함수, return 변환된 문자열 
//-------------------------------------------------------

function ToUpper(arg_v)
{
	var upperStr = "";
	var str1 = "abcdefghijklmnopqrstuvwxyz";
	var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	for(i = 0; i < arg_v.length; i++) {
		value = arg_v.charAt(i);
		index = str1.indexOf(value);
		if(index >= 0) value = str2.charAt(index);
		upperStr = upperStr + value;
	}
	return upperStr;
}

//-------------------------------------------------------
// 문자열 대 --> 소문자 변환 함수, return 변환된 문자열 
//-------------------------------------------------------
function ToLower(arg_v)
{
	var lowerStr = "";
	var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var str2 = "abcdefghijklmnopqrstuvwxyz";
	
	for(i = 0; i < arg_v.length; i++) {
		value = arg_v.charAt(i);
		index = str1.indexOf(value);
		if(index >= 0) value = str2.charAt(index);
		lowerStr = lowerStr + value;
	}
	return lowerStr;
}

//-------------------------------------------------------
// 전화 번호 Check, 전화번호 형식이 유효할 경우  return true
//-------------------------------------------------------
function isPhoneCheck(num)
{	
	var num_Str = "0123456789( ).-,<>{}[]_~";

	for (var i = 0; i < num.length; i++) {
		var substr = num.substring(i, i + 1);
		if(num_Str.indexOf(substr) < 0) return false;
	}
	return true;
}

//-------------------------------------------------------
// 숫자 판별, 숫자일 경우 return true
//-------------------------------------------------------
function isNumberCheck(num)
{	
	var num_Str = "0123456789";

	for (var i = 0; i < num.length; i++) {
		var substr = num.substring(i, i + 1);
		if(num_Str.indexOf(substr) < 0) return false;
	}
	return true;
}

//-------------------------------------------------------
// 영문 판별, 알파벳일경우 return true
//-------------------------------------------------------
function isAlphaCheck(str)
{
	var alpha_Str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

	for(var i = 0; i < str.length; i++) {
		var substr = str.substring(i, i+1);
		if(alpha_Str.indexOf(substr) < 0) return false;
	}
	return true;
}

//-------------------------------------------------------
// 영숫자 판별, 영숫자일경우 return true
//-------------------------------------------------------
function isAlphaNumCheck(arg_v)
{
	var alpha_num_Str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

	for(var i = 0; i < arg_v.length; i++) {
		var substr = arg_v.substring(i, i + 1);
		if(alpha_num_Str.indexOf(substr) < 0) return false;
	}
	return true;
}

//-------------------------------------------------------
//값이 있는지 없는지 판별. 비어 있는 경우 return true
//-------------------------------------------------------
function IsEmpty(data) {
	for (var i=0; i<data.length; i++) {
        if (data.charAt(i) != ' '){
            if (data.charAt(i) != '\r'){
                if (data.charAt(i) != '\n'){
                    return false;
                }
            }
        }
    }

    return true;
}

//-------------------------------------------------------
// 문자열에서 앞뒤 공백 제거 , return 공백 제거된 문자열 
//-------------------------------------------------------
function Trim( value ) {
	var len = value.length;
	if (len == 0) return('');
	
	var value1 = RTrim(value);
	var value2 = LTrim(value1);	
	return(value2);
}	

//-------------------------------------------------------
// 문자열에서 앞 공백 제거 , return 공백 제거된 문자열 
//-------------------------------------------------------
function LTrim( arg ) {
	var len = arg.length;
	if (len == 0) return('');
	
	var i = 0;
	for (; i < arg.length; i++) {
		var ch = arg.charAt(i);
		if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
			continue;
		}	
		else
			break;
	}
	return(arg.substr(i));
}

//-------------------------------------------------------
// 문자열에서 뒤 공백 제거 , return 공백 제거된 문자열 
//-------------------------------------------------------
function RTrim( arg ) {
	var len = arg.length;
	if (len == 0) return('');
		
	var i = len - 1;
	for (; i >= 0; i--) {
		var ch = arg.charAt(i);
		if (ch == ' ' || ch == '\t' || ch == '\n') 
			continue;
		else
			break;
	}
	return(arg.substring(0, i+1));					
}

//-------------------------------------------------------
// 숫자 체크, 숫자일 경우 return true
//-------------------------------------------------------
function strIsNum(str) {
	str = Trim(str);
	if (str.length == 0) return(false);
	for (var i = 0; i < str.length; i++) {
		if (str.charAt(i) < '0' || str.charAt(i) > '9')
			return(false);
	}
	return(true);
}

//-------------------------------------------------------
// 숫자에 , 추가된 포맷으로 변경
//-------------------------------------------------------
function formatNumber(strOrg) {
	strOrg = "" + strOrg;
	if(strOrg == "")	return "";
	
	var strNum = "";
	for(i=0; i<strOrg.length; i++) {
		if(strOrg.charAt(i) == ",")
			continue;
		strNum += strOrg.charAt(i);
	}
	
	if(!strIsNum(strNum))	return strOrg;
	
	var dot = strNum.indexOf(".");
	var strInt = "";
	var strFlt = "";
	if(dot > 0) {
		strInt = strNum.substring(0,dot);
		strFlt = strNum.substring(dot);
	}
	else 
		strInt = strNum;
	
	var smod = strInt.length % 3;
	var strRtn = "";
	if(smod > 0)	strRtn = strInt.substring(0,smod);
	for(i=smod; i<strInt.length; i++) {
		if(smod != 0 && i == smod)	strRtn += ",";
		else if(i > 0 && (i - smod) % 3 == 0)
			strRtn += ","
		strRtn += strInt.charAt(i);
	}
	if(dot > 0)	strRtn += strFlt;
	
	return strRtn;
}

//-------------------------------------------------------
// 숫자 체크 , 숫자일 경우 return true
//-------------------------------------------------------
function validationNumber(obj) {
	var val = obj.value;
	var str = "";
	for(i=0; i<val.length; i++) {
		var chr = val.charAt(i);
		if(chr >= '0' && chr <= '9')
			str += chr;
	}
	//alert(str)
	if(str != "") str = parseInt(str);
	obj.value = formatNumber(str);
}

//-------------------------------------------------------
// 숫자에서  , 제거 
//-------------------------------------------------------
function rmcomma(str) {
	var len = str.length;
	var rstr = "";
	if (len > 0) {
		for (var i = 0; i < len; i++) {
			var ch = str.charAt(i);
			if (ch != ',') rstr += ch;
		}
	}
	return(rstr);
}		


//-------------------------------------------------------
// 숫자에  , 추가 
//-------------------------------------------------------
function insertcomma(vstr) {
	var str = vstr;
	str += "";
	
	var comval = "";
	var inversecomval = "";
	
	for ( k = 0 ; k < str.length ; k++ ) {
		if ( k != 0 && k%3 == 0 ) {
			comval += ",";
		}
		comval += str.charAt(str.length-(k+1));
	}
	
	for ( k = 0 ; k < comval.length; k++ ) {
		inversecomval += comval.charAt(comval.length-(k+1));
	}
	
	return inversecomval;
}
	

//-------------------------------------------------------
// 팝업창 띄우기 
//-------------------------------------------------------
function popup(url, options) {
	window.open(url, "", options);
}


/********************************************************
 * 날짜 관련 함수들  
 * 주로 어드민의 날짜 기준 search에서 사용 
*********************************************************/

Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();

if (NowYear < 2000) NowYear += 1900; 

//-------------------------------------------------------
// 년월을 받아 해당 년, 월의 일수를 리턴 
//-------------------------------------------------------
function DaysInMonth(WhichMonth, WhichYear)
{
  var DaysInMonth = 31;
  if (WhichMonth == "04" || WhichMonth == "06" || WhichMonth == "09" || WhichMonth == "11") DaysInMonth = 30;
  if (WhichMonth == "02" && (WhichYear/4) != Math.floor(WhichYear/4))        DaysInMonth = 28;
  if (WhichMonth == "02" && (WhichYear/4) == Math.floor(WhichYear/4))        DaysInMonth = 29;
  return DaysInMonth;
}

//-------------------------------------------------------------------------
// 년월을 select box에서 선택하면 해당 년월의 달수로 일자 선택 select box의 값 변경 
//-------------------------------------------------------------------------
function ChangeOptionDays(form, name)
{
  DaysObject = eval("document." + form + "." + name + "day");
  MonthObject = eval("document." + form + "." + name + "month");
  YearObject = eval("document." + form + "." + name + "year");

  Month = MonthObject[MonthObject.selectedIndex].value;
  Year = YearObject[YearObject.selectedIndex].value;

  DaysForThisSelection = DaysInMonth(Month, Year);
  CurrentDaysInSelection = DaysObject.length ;
  
  if (CurrentDaysInSelection > (DaysForThisSelection + 1))
  {
  	
    for (i=0; i<(CurrentDaysInSelection-(DaysForThisSelection + 1)); i++)
    {
      DaysObject.options[DaysObject.options.length - 1] = null
    }
  }
  if ((DaysForThisSelection + 1) > CurrentDaysInSelection)
  {
    for (i=0; i<((DaysForThisSelection + 1) - CurrentDaysInSelection); i++)
    {
      NewOption = new Option(DaysObject.options.length);
      DaysObject.add(NewOption);
    }
  }
    if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}

//-------------------------------------------------------------------------
// 연월일 select box를 오늘 날짜로 defautl 선택 
//-------------------------------------------------------------------------
function SetToToday(form, name)
{
  DaysObject = eval("document." + form + "." + name + "day");
  MonthObject = eval("document." + form + "." + name + "month");
  YearObject = eval("document." + form + "." + name + "year");

  YearObject[0].selected = true;
  MonthObject[NowMonth].selected = true;

  ChangeOptionDays(Which);

  DaysObject[NowDay-1].selected = true;
}

function WriteYearOptions(YearsAhead)
{
  line = "";
  for (i=0; i<YearsAhead; i++)
  {
    line += "<OPTION value='" + NowYear + i + "'>";
    line += NowYear + i;
    line += NowYear + "</OPTION>";
  }
  return line;
}

//-------------------------------------------------------
//바이트 계산, return 총바이트수
//-------------------------------------------------------
function getByte(instr) {
    var len = 0;
    for(i=0; i<instr.length; i++) {
        var chr = instr.charAt(i);
        if (escape(chr).length > 4) {
                len += 2;
        }
        else  {
                len++;
        }
    }
    return len;
}

//-------------------------------------------------------------------------
//폼체크  - 테그체크
//-------------------------------------------------------------------------
function checkTag(source) {
	if (source.indexOf("<") > -1) {
		alert("'<' 는 사용 하실 수 없습니다.");
		return false;
	}

	return true;
}

//-------------------------------------------------------------------------
//폼체크 - 일반 isHtml=>html일경우 Y, text:N
//-------------------------------------------------------------------------
function checkField(obj, name, limitByte) {
	var b = getByte(obj.value);
	if (b == 0) {
		alert(name + "를(을) 입력하세요.");
		obj.focus();
		return false;
	}

	if (limitByte != 0 && b > limitByte) {
		alert(name + "는(은) 한글인 경우에는 " + limitByte / 2 + "자, 영문인 경우에는 " + limitByte + "자 이하로 입력되어야 합니다.");
		obj.focus();
		return false;
	}

	return true;
}


//-------------------------------------------------------------------------
//폼체크  - FCKEditor에디터
//-------------------------------------------------------------------------

function checkFCKEditor(obj, name){
	var txt_value = eval("document.frames['" + obj + "___Frame'].eEditorArea.document.body.innerHTML");
	if(txt_value == ""){
		alert(name + "을(를) 입력하세요.");
		eval("document.frames['" + obj + "___Frame'].eEditorArea.focus()");
		return false;
	} 
	return true;
}

//-------------------------------------------------------------------------
//폼체크  - 첨부파일 특수문자 체크
//-------------------------------------------------------------------------

function checkFile(obj,name){
	var charck = '\\~!@#$%^&*()_-+=|{}\[]<>,./?';
	for(var i = 0; i < obj.length; i++) {
		var substr = obj.substring(i, i + 1);
		if(charck.indexOf(substr) >= 0) {
			alert( name + "는(은) 특수문자(\\~!@#$%^&*()_-+=|{}\[]<>,./?)을 사용할수 없습니다.");
			obj.focus();
			return false;
		}
	}

	return true;
}


//-------------------------------------------------------------------------
//폼체크  - 이미지 체크 
//-------------------------------------------------------------------------

function isImage(val) {
	v = val.toLowerCase();
	if (v.indexOf('.jpg') == -1 && v.indexOf('.gif') == -1 && v.indexOf('.jpeg') == -1) {
		return false;
	} else {
		return true;
	}
}

//-------------------------------------------------------------------------
//아이 프레임 리사이즈 
//-------------------------------------------------------------------------

 function resizeFrame(){
 	self.resizeTo( document.body.scrollWidth, document.body.scrollHeight);
 } 
 
 function resizeWindow() { 
       var oBody = document.body;
       var p_height, p_width;   
       
       p_width  = oBody.scrollWidth + (oBody.offsetWidth-oBody.clientWidth)+8;
       p_height =  oBody.scrollHeight + (oBody.offsetHeight-oBody.clientHeight)+8;    
       self.resizeTo(p_width - 2, p_height + 37); 
}
 
//-------------------------------------------------------------------------
//keyPressHandler 
//-------------------------------------------------------------------------

 function keyPressHandler(code) {
	if(isNaN(code)) {
		return false;
	} else if(event.keyCode == code) {
		return false;
	}
}

//-------------------------------------------------------------------------
//checkbox 전체 선택 
//-------------------------------------------------------------------------

 function selectAll(val1, val2) {
 	if(val1.checked){
 		if(val2.length){
			for(i=0;i<val2.length;i++){
				val2(i).checked = true;
			}
		}else{
			val2.checked = true;
		}
	}else{
		val1.checked = false;
		if(val2.length){
			for(i=0;i<val2.length;i++){
				val2(i).checked = false;
			}
		}else{
			val2.checked = false;
		}
	}
}


function objectlaunchSwf(width, height, url){

	document.write("<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0 width=" + width + " height=" + height + ">");
	document.write("<param name=movie value="+ url + ">");
	document.write("<param name=wmode value=transparent>");
	document.write("<param name=quality value=high>");
	document.write("<embed src=" + url + " quality=high pluginspage=http://www.macromedia.com/go/getflashplayer type=application/x-shockwave-flash width=" + width + " height=" + height + "></embed>");
	document.write("</object>");
}

function setCate(str){
	window.document.portfolio.SetVariable("cate", str);
}


<!-- 포트폴리오부분-->
function portfolioSwf(width, height, url){
	document.write("<object id=portfolio classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0 width=" + width + " height=" + height + ">");
	document.write("<param name=movie value="+ url + ">");
	document.write("<param name=wmode value=transparent>");
	document.write("<param name=quality value=high>");
	document.write("<embed name=portfolio src=" + url + " quality=high pluginspage=http://www.macromedia.com/go/getflashplayer type=application/x-shockwave-flash width=" + width + " height=" + height + "></embed>");
	document.write("</object>");
}
