
Object.extend = function(t, s) {
	for (var property in s) 
		t[property] = s[property];
	return t;
};

window.onerror = function(msg, url, line) {
	if (g_bDebug)
		alert("ERROR: " + msg + "\n" + url + ":" + line);
	return true;
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}

String.prototype.reverse = function() {
	var s = "";
	var i = this.length;
	while (--i >= 0)
		s += this.charAt(i);
	return s;
}

function $(element) {
	if (arguments.length > 1) {
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
			elements.push($(arguments[i]));
		return elements;
	}
    if (typeof element == "string")
		element = document.getElementById(element);
	return element;
}

//ID Check
function g_checkID(str)
{
	var ValidID = /^[A-Za-z][A-Za-z0-9_]{3,10}$/

	if (!ValidID.test(str))
	{
    	alert("ID를 다시 확인해주세요!\n\nID 첫글자는 영문자이어야 하며, 공백없이 4~10자의 영문, 숫자, _로 구성해야 합니다.");
    	return false;
	}
	return true;
}

//E-mail Check
function g_checkEmail(strEmail) {
    var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);
    if (arrMatch == null) {
        return false;
    }

    var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
    if (arrIP != null) {
        for (var i = 1; i <= 4; i++) {
            if (arrIP[i] > 255) {
                return false;
            }
        }
    }
    return true;
}

// 주민번호 체크
function g_checkResno(ResNo1, ResNo2)
{
	var chk =0;
	var yy = ResNo1.value.substring(0,2);
	var mm = ResNo1.value.substring(2,4);
	var dd = ResNo1.value.substring(4,6);
	var sex = ResNo2.value.substring(0,1);

 	if (ResNo1.value.length!=6){
    		alert ('주민등록번호 앞부분이 잘못되었습니다.'+ResNo1.value.length);
    		ResNo1.focus();
    		return false;
	}

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

  	for (var i = 0; i <=5 ; i++){
		chk = chk + ((i%8+2) * parseInt(ResNo1.value.substring(i,i+1)))
 	}

  	for (var i = 6; i <=11 ; i++){
        	chk = chk + ((i%8+2) * parseInt(ResNo2.value.substring(i-6,i-5)))
 	}

  	chk = 11 - (chk %11)
  	chk = chk % 10

  	if (chk != ResNo2.value.substring(6,7))
  	{
    		alert ('유효하지 않은 주민등록번호입니다.');
    		ResNo1.focus();
    		return false;
  	}
  	
  	return true
}

//이름 체크
function g_asclen(s)
{
	var i, len=0;
	for(i=0;i < s.length; i++) (s.charCodeAt(i) > 255)? len+=2:len++;
	return len;
}

function g_checkName(str)
{
    if(g_asclen(str) <= 0) {
        alert("이름을 입력하세요.");
        return false;
    }
    else if(g_asclen(str) <= 2) {
        alert("이름을 2자 이상 입력하세요. 한글 한글자는 2자로 인식됩니다.");
        return false;
    }
    else if(g_asclen(str) > 20 )  {
        alert("이름을 20자 이내로 입력하세요. 한글 한글자는 2자로 인식됩니다.");
        return false;
    }
    return true;
}

// input 관련
function g_checkEnter(func)
{
	if (event.keyCode == 10 || event.keyCode == 13)
	{
		func();
		return false;
	}
}

function g_inFocus1(i) {
	(i).style.border='1px solid #686868';
}

function g_outFocus1(i) {
	(i).style.border='1px solid #cccccc';
}

function g_isNumeric(s)
{
     var isNum = /\d/;
     if( !isNum.test(s) ) { return false; }
     else { return true; }
}

var g_next_go = true;
var g_cur_val = null;
function g_moveNext(from, length, to)
{
	var cur = from.value;
	curSize = cur.length;
	numFlag = g_isNumeric(cur);
	
	if ( !numFlag && curSize >= 1 && cur != '00' &&  cur != '000') {
		alert('숫자를 넣어주세요');
		from.value='';
		from.focus();
		return false;
	}
	if (curSize == length) {
		if(g_next_go || g_cur_val != cur)
		{
			g_cur_val = cur;
			g_next_go = false;
			to.focus();
		}
		return true;
	}
	g_next_go = true;
}

function g_moveNext2(from, length, to)
{
	var cur = from.value;
	curSize = cur.length;
	numFlag = g_isNumeric(cur);
	
	if (curSize == length) {
		if(g_next_go || g_cur_val != cur)
		{
			g_cur_val = cur;
			g_next_go = false;
			to.focus();
		}
		return true;
	}
	g_next_go = true;
}

// 숫자에 콤마 넣기
function g_addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function g_editViewImage(element)
{
	window.open(element.src);
}

function g_trim(str) {  
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');  
}
