String.prototype.trim = function() {

    return this.replace(/(^\s*)|(\s*$)/gi, "");
}

String.prototype.isPhoneNum = function() {

    var filter=/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/i;

    return filter.test(this);
}

String.prototype.isEmail = function() {

    var filter=/^[\w-\.]+@[\w-]+\.[\w-]{2,}(?:\.[a-zA-Z]{2})?$/i;

    return filter.test(this);
}

String.prototype.getCharLength = function() {

    var y = "%u";
    var z = "%";

    if (this == null) this = "";

    if (this.indexOf(y) != -1) {

        if (this.substring(2, 4) == '00') {
            return 1;

        } else {
            return 2; // ÇÑ±Û

        }

    } else if (this.indexOf(z) != -1) {

        if (parseInt(this.substring(1, 3), 16) > 127) {
            return 2; // ÇÑ±Û

        } else {
            return 1;

        }

    } else {
        return 1;

    }
}

String.prototype.getByteLength = function() {

    var byteLength = 0;
    for (var i = 0; i < this.length; i++) {
        var c = escape(this.charAt(i));

        if (c.length == 1) {
            byteLength ++;

        } else if (c.indexOf("%u") != -1) {
            byteLength += 2;

        } else if (c.indexOf("%") != -1) {
            byteLength += c.length/3;

        }
    }

    return byteLength;
}

var basicCodes = ",8,9,35,36,37,39,46,109,189,";
var numberCodes = ",48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105,";
var englishCodes = ",65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,";

function inputPermit(mode) {

    var incode = ","+ event.keyCode +",";

    if (mode == "n") {
        event.returnValue = (basicCodes.search(incode) >= 0 || numberCodes.search(incode) >= 0);
    } else if (mode == "e") {
        event.returnValue = (basicCodes.search(incode) >= 0 || englishCodes.search(incode) >= 0);
    } else if (mode == "ne" || mode == "en") {
        event.returnValue = (basicCodes.search(incode) >= 0 || numberCodes.search(incode) >= 0 || englishCodes.search(incode) >= 0);
    } else {
        event.returnValue = false;
    }
}

function inputCheck(eventSrc, mode) {

    var filter;
    if (mode == "n") {
        filter = /^-?[0-9]+(?:\.[0-9]+)?$/i;
        return filter.test(eventSrc.value.replace(/,/ig, ''));

    } else if (mode == "e") {
        filter = /^[a-zA-Z-_\.]+$/i;
        return filter.test(eventSrc.value);

    } else if (mode == "ne" || mode == "en") {
        filter = /^[\w-\.]+$/i;
        return filter.test(eventSrc.value);

    }
}

function checkNumber(eventSrc) {

    if (eventSrc.value.length < 1) return;

    if (!inputCheck(eventSrc, "n")) {
        alert("¼ýÀÚ, '-', '.'¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.");
        eventSrc.select();
        return;
    }
}

function checkEnglish(eventSrc) {

    if (eventSrc.value.length < 1) return;

    if (!inputCheck(eventSrc, "e")) {
        alert("¿µ¹®ÀÚ, '_', '-', '.'¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.");
        eventSrc.select();
        return;
    }
}

function checkNumberEnglish(eventSrc) {

    if (eventSrc.value.length < 1) return;

    if (!inputCheck(eventSrc, "ne")) {
        alert("¼ýÀÚ, ¿µ¹®ÀÚ, '_', '-', '.'¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.");
        eventSrc.select();
        return;
    }
}

function checkLength(eventSrc, minL, maxL) {

    if (eventSrc.value.length < 1) return;

    if (eventSrc.value.getByteLength() < minL) {
        alert("ÃÖ¼Ò "+ minL +"Byte(¿µ¹®, ¼ýÀÚ "+ minL +"ÀÚ, ÇÑ±Û "+ Math.floor(minL/2) +"ÀÚ)¸¦ ÀÔ·ÂÇÏ¼Å¾ßÇÕ´Ï´Ù.");
        eventSrc.select();
        return;
    }
    if (eventSrc.value.getByteLength() > maxL) {
        alert("±ÛÀÚ ¼ö°¡ ÃÊ°úµÇ¾ú½À´Ï´Ù.\n"+ maxL +"Byte±îÁö ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.");
        eventSrc.select();
        return;
    }
}

function checkPhoneNum(eventSrc) {

    if (eventSrc.value.length < 1) return;

    if (!eventSrc.value.isPhoneNum()) {
        alert("¿¬¶ôÃ³ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù.\nÀüÈ­¹øÈ£ ¶Ç´Â ÈÞ´ëÀüÈ­¹øÈ£ Çü½ÄÀ¸·Î ÀÔ·ÂÇØÁÖ¼¼¿ä.");
        eventSrc.select();
        return;
    }
}

function checkEmail(eventSrc) {

    if (eventSrc.value.length < 1) return;

    if (!eventSrc.value.isEmail()) {
        alert("ÀÌ¸ÞÀÏ ÁÖ¼ÒÇü½ÄÀÌ ¾Æ´Õ´Ï´Ù.");
        eventSrc.select();
        return;
    }
}


