function StringTokenizer(str, key){
    this.original = str;
    this.sentence = str;
    this.parseKey = key;
    this.accessPoint = 0;
    this.tokens = this.sentence.split(this.parseKey);

    this.hasMoreTokens = function(){
        if(this.tokens.length > this.accessPoint){
            return true;
        }else{
            return false;
        }
    }

    this.nextToken = function(){
        if(this.hasMoreTokens()){
            this.accessPoint++;
            return this.tokens[this.accessPoint-1];
        }else{
            return null;
        }
    }
}

function formatMoney(strNumber,mode){
    var nLength=strNumber.length;
    var i=0,j=0;
    var strResult='';
    if(mode=='INSERT'){
        var j=0;
        for(i=nLength-1;i>=0;i--){
            j++;
            strResult=strNumber.substring(i,i+1)+strResult;
            if(j%3==0 && i>0){
                strResult=','+strResult;
            }
        }
    }else if( mode=='DELETE'){
        for(i=nLength-1;i>=0;i--){
            if(strNumber.substring(i,i+1)!=','){
                strResult=strNumber.substring(i,i+1)+strResult;
            }
        }
    }
    return strResult;
}

function endsWith(str, checker){
    if(str!=null && checker!=null && str.length > checker.length){
        if(str.substr(str.length-checker.length).toUpperCase() == checker.toUpperCase()){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}


function startsWith(str, checker){
    if(str!=null && checker!=null && str.length > checker.length){
        if(str.toUpperCase().substr(0,checker.toUpperCase().length) == checker.toUpperCase()){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function addCookie(name, value, url, expiredays){
    var todayDate = new Date();
    if(Number(expiredays)>0){
        todayDate.setDate( eval(todayDate.getDate() + expiredays) );
    }else if(Number(expiredays) == 0){
        todayDate = null;
    }else{
        todayDate.setDate( todayDate.getDate() + 30);
    }
    document.cookie = name + "=" + escape( value ) + 
        (todayDate!=null ? "; expires=" + todayDate.toGMTString() : "") +
        (url!=null ? "; path="+url : " " );
}

function getCookie(name){
    var Found = false;
    var start, end;
    var i = 0;
    while(i <= document.cookie.length){
        start = i;
        end = start + name.length;
        if(document.cookie.substring(start, end) == name){
            Found = true;
            break;
        }
        i++;
    }

    if(Found == true){
        start = end + 1;
        end = document.cookie.indexOf(";", start);
        if(end < start){
            end = document.cookie.length;
        }
        return document.cookie.substring(start, end);
    }else{
        return "";
    }
}

function flashWrite(flashStr){
    document.write(flashStr);
}
function flashInnerWrite(target, flashStr){
    document.getElementById(target).innerHTML = flashStr;
}

function textInRegistCode(str){
    var format = "[0-9]{6}(-|.|)[1|2|3|4]{1}[0-9]{6}";
    if (str.search(format) != -1) {
        return true;
    }
    return false;
}

function strInKrChar(value){ 
    var pattern = new RegExp('[^°¡-ÆR\x20]');
    if(pattern.exec(value) != null){
        return true; 
    }else{
        return false;
    }
}
function strInNumNEn(value){ 
    var pattern = new RegExp(/^[A-Za-z0-9]/);
    if(pattern.exec(value) != null){
        return false; 
    }else{
        return true;
    }
}

function strInNum(value){
    var format = "^[0-9]";

    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function isEmail(value){ 
    var format = "^([-.0-9a-zA-Z]+)@([-.0-9a-zA-Z]+).([a-zA-Z]+)$";

    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function checkEmail(email){
    var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
    var check=/@[\w\-]+\./;
    var checkend=/\.[a-zA-Z]{2,3}$/;

    if(((email.search(exclude) != -1)||(email.search(check)) == -1)||(email.search(checkend) == -1)){
        return false;
    }else{
        return true;
    }
}

function isPhoneNumber(value){ 
    var format = "^[0-9]\{2,3\}-[0-9]\{3,4\}-[0-9]\{4\}$";

    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function isMobileNumber(value){
    var format = "^[0-9]\{3\}-[0-9]\{3,4\}-[0-9]\{4\}$";
    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function strInTag(value){
    value = value.replace("&lt;","<");
    value = value.replace("&gt;",">");
    //var format = "<[^>|[0-9a-zA-Z]]*>";
    var format = "<*[0-9a-zA-Z]*>";
    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function strInScriptTag(value){
    value = value.replace("&lt;","<");
    value = value.replace("&gt;",">");
    var format = "<*[[Ss][Cc][Rr][Ii][Pp][Tt]]*>";
    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

function getXMLContent(strUrl, parserMethodName){
    var req = initRequest(strUrl);
    if(req==null){
        alert("AJAX \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC6F9\uBE0C\uB77C\uC6B0\uC800\uAC00 \uC544\uB2D9\uB2C8\uB2E4.");
        return false;
    }else{
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if (req.status == 200) {
                    eval(parserMethodName+"(req.responseXML)");
                } else if (req.status == 204){
                    alert("HTTP 204\uC5D0\uB7EC \uC785\uB2C8\uB2E4.\n\n\uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC5EC \uC8FC\uC2ED\uC2DC\uC624.");
                    return false;
                } else {
                    alert("HTTP "+req.status+"\uC5D0\uB7EC \uC785\uB2C8\uB2E4.\n\n\uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC5EC \uC8FC\uC2ED\uC2DC\uC624.");
                    return false;
                }
            }
        };
        req.open("GET", strUrl, true);
        req.send(null);
    }
}

function initRequest(url) {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        isIE = true;
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function XMLContent(XML){
    if(XML == null){
        for(var k=0; k < ContentProperties.length; k++){
            eval("this." + ContentProperties[k].name + "= null" );
        }
    }else{
        for(var k=0; k < ContentProperties.length; k++){
            temp = XML.getElementsByTagName(ContentProperties[k].name)[0];
            if(temp.childNodes == null || temp.childNodes.length < 1){
                eval("this."+ContentProperties[k].name+"= null");
            }else{
                eval("this."+ContentProperties[k].getEvalValueSetString(temp.childNodes[0].nodeValue));
            }
        }
    }
}

function Property(name, type){
    this.name = name;
    this.type = type;

    this.getEvalValueSetString = function (value){
        if(this.type.toUpperCase() == "STRING"){
            return this.name + "='" + value + "'";
        }else if(this.type.toUpperCase() == "INT"){
            return this.name + "=" + value + "";
        }else if(this.type.toUpperCase() == "BOOLEAN"){
            if(value == null || value == false || value == "false" || value == 0 || value == "0"){
                return this.name + "=" + false + "";
            }else if(value != null && (value == true || value == "true" || value == 0 || value == "0")){
                return this.name + "="+true+"";
            }else{
                return this.name + "="+false+"";
            }
        }else{
            return this.name + "='"+value+"'";
        }
    }
}

function XMLContentList(list){
    if(list == null){
        return null;
    }else{
        var outList = new Array();
        for(var j=0; j < list.length; j++){
            outList[outList.length] = new XMLContent(list[j]);
        }
        return outList;
    }
}