/*
    text element에 문자 입력 시 max length에 다다르면 다음 element로 포커스를 이동합니다.
    사용예 : <input type="text" name="e1" size="3" maxlength="3" onkeyup="moveFocus(this, this.value);" />
*/
function moveFocus(x, y)
{
    var f = x.form;
    if (x.maxLength == y.length) {
        for (var i = 0, next = 0; i < f.length; i++) {
            if (x.name == f.elements[i].name) {
                next = i + 1;
                if (next < f.length) {
                    f.elements[next].focus();
                    break;
                }
            }
        }
    }
}

/*
    기능 : 숫자만 입력
    사용예 : <input type="text" onkeyup="checkNumber(this);" />
*/
function checkNumber(obj)
{
    var number = /[^0-9]/g;
    if (number.test(obj.value)) {
        alert("숫자만 입력하실 수 있습니다.");
        obj.value = "";
        obj.focus();
        return;
    }
}

/*
    기능 : 숫자만 리턴
*/
function getNumber(val)
{
    var ptn = /[^0-9]/g;
    return parseInt(val.replace(ptn, ""));
}

/*
    기능 : 통화포멧 만들기 (마이너스 포함)
    사용예 : <input type="text" onkeyup="numberFormat(this);" />
*/
function numberFormat(obj)
{
    var number = obj.value.replace(/,/g, "");
    var currancy = /[^-0-9,]/g;
    var minus = false;

    if (currancy.test(number)) {
        alert("숫자만 입력하실 수 있습니다.");
        obj.value = "";
        obj.focus();
        return;
    }
    if (number.length > 3) {
        if (number.charAt(0) == '-') {
            number = number.substr(1);
            minus = true;
        }
        var mod = number.length % 3;
        var div = number.length / 3;
        var output = (mod > 0 ? (number.substring(0, mod)) : "");

        for (var i = 0; i < Math.floor(div); i++) {
            if ((mod == 0) && (i == 0)) {
                output += number.substring(mod + 3 * i, mod + 3 * i + 3);
            } else {
                output += "," + number.substring(mod + 3 * i, mod + 3 * i + 3);
            }
        }
        if (minus) {
            obj.value = "-"+ output;
        } else {
            obj.value = output;
        }
    } else {
        obj.value = number;
    }
}

/*
    기능 : 정수를 통화포멧으로 리턴
*/
function currencyFormat(val)
{
    var number = val.toString();
    var minus = false;

    if (number.length > 3) {
        if (number.charAt(0) == '-') {
            number = number.substr(1);
            minus = true;
        }
        var mod = number.length % 3;
        var div = number.length / 3;
        var output = (mod > 0 ? (number.substring(0, mod)) : "");
        for (var i = 0; i < Math.floor(div); i++) {
            if ((mod == 0) && (i == 0)) {
                output += number.substring(mod + 3 * i, mod + 3 * i + 3);
            } else {
                output += "," + number.substring(mod + 3 * i, mod + 3 * i + 3);
            }
        }
        if (minus) {
            return "-"+ output;
        } else {
            return output;
        }
    } else {
        return number;
    }
}

/*
    기능 : 새 창 띄우기
*/
function openWindow(url, winName, width, height, flag)
{
    if (!flag) {
        var nW = window.open(url, winName, "width="+ width +",height="+ height);
    } else {
        var nW = window.open(url, winName, "width="+ width +",height="+ height +",scrollbars,resizable");
    }
    nW.focus();
}

function trim(str)
{
    return str.replace(/^\s*|\s*$/g, "");
}

function getExtension(file)
{
    var idx = file.lastIndexOf(".") + 1;
    return file.substr(idx);
}

/*
    글자 수 제한
    obj : Textarea Object
    display : bytes를 표시할 ID
    max : 최대 허용 글자 수
*/
function limitBytes(obj, display, max)
{
    var bytesVal = 0, bytesLength = 0, validMsgLength = 0, validBytesLength = 0;
    var oneChar;

    for (i = 0; i < obj.value.length; i++) {
        /* UTF-8 MySQL의 TEXT, TINYTEXT 타입을 사용할 때
        oneChar = obj.value.charAt(i);
        if (escape(oneChar).length > 4) {
            bytesLength += 3;
        } else if (oneChar == "\r\n") {
            bytesLength += 2;
        } else {
            bytesLength++;
        }
        */
        bytesLength++;
        if ( bytesLength <= max )    {
            validMsgLength = i + 1;
            validBytesLength = bytesLength;
        }
    }
    if (bytesLength > max) {
        alert(max +"바이트 이상 초과된 글자는 삭제됩니다.");
        obj.value = obj.value.substr(0, validMsgLength);
        bytesVal = validBytesLength;
    } else {
        bytesVal = bytesLength;
    }
    document.getElementById(display).innerHTML = bytesVal;
}

function replaceQuot(str)
{
    return str.replace(/\"/g, "&quot;");
}

function nl2br(str)
{
    return str.replace(/\r\n/g, "<br />");
}

function br2nl(str)
{
    if ($.browser.msie) {
        return str.toLowerCase().replace(/<br>/g, "\r\n");
    } else {
        return str.toLowerCase().replace(/<br>/g, "");
    }
}

function getBrowser()
{
    if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) {
        return "E"; // IE
    } else if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1) {
        return "F"; // Firefox
    } else if (navigator.userAgent.toLowerCase().indexOf("chrome") != -1) {
        return "C"; // Chrome
    } else {
        return "X"; // Unknown
    }
}

function gid(id)
{
    return document.getElementById(id);
}

function coverBG(id)
{
    var docWidth = $(window).width() + $(window).scrollLeft();
    var docHeight = $(window).height() + $(window).scrollTop();
    if (docHeight < $("#Last").offset().top) {
        docHeight = $("#Last").offset().top;
    }
    var coverDiv = '<div id="'+ id +'" style="position: absolute; left: 0px; top: 0px; width: '+ docWidth +'px; height: '+ docHeight +'px; background-color: #000000; opacity: 0.7; filter:alpha(opacity=70)"></div>';
    $("body").prepend(coverDiv);
}

function showBox(id, content, w, h)
{
    var left = ($(window).width() - w) / 2 + $(window).scrollLeft();
    var top = ($(window).height() -h) / 2 + $(window).scrollTop();
    var msgDiv = '<div id="'+ id +'" style="position: absolute; z-index: 2; left: '+ left +'px; top: '+ top +'px; width: '+ w +'px; height: '+ h +'px; background-color: #FFFFFF; padding: 10px;">'+ content +'</div>';
    $("body").prepend(msgDiv);
}