﻿// expressions
function GetEmailExpression() {
    return "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
}
function GetUrlExpression() {
    return "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
}

function ToDateString(d) {
    //12/18/2005 2:19 PM
    var isPM = d.getHours() > 12;
    var hour = isPM ? (d.getHours() - 12).toString() : d.getHours().toString();
    var minute = d.getMinutes().toString();
    if (hour.length == 1) {
        hour = "0" + hour;
    }
    if (minute.length == 1) {
        minute = "0" + minute;
    }
    return d.getMonth() + "/" + d.getDate() + "/" + d.getFullYear() + " " + hour + ":" + minute + " " + ((d.getHours() == 12 || isPM) ? "PM" : "AM");
}

function SetHeight(controlID, targetControlID) {
    var ocontrol = document.getElementById(controlID);
    var otargetControl = document.getElementById(targetControlID);
    
    otargetControl.style.height = (otargetControl.offsetHeight + ocontrol.offsetHeight) + "px";
    return;
}

function AttachEvent (obj, evt, fuc, useCapture) {
    if(!useCapture)
        useCapture = false;
    if(obj.addEventListener) { // W3C DOM 지원 브라우저
        obj.addEventListener(evt, fuc, useCapture);
        return;
    }
    else if(obj.attachEvent) { // MSDOM 지원 브라우저
        obj.attachEvent("on" + evt, fuc);
        return;
    }
    else { // NN4 나 IE5mac 등 비 호환 브라우저
        MyAttachEvent(obj, evt, fuc);
        obj["on" + evt]=function() { MyFireEvent(obj,evt) };
    }
}

function MyAttachEvent(obj, evt, fuc) {
    if(!obj.myEvents)
        obj.myEvents= {};
    if(!obj.myEvents[evt])
        obj.myEvents[evt]=[];
    var evts = obj.myEvents[evt];
    evts[evts.length] = fuc;
}

function MyFireEvent(obj, evt) {
    if(!obj || !obj.myEvents || !obj.myEvents[evt])
        return;
        
    var evts = obj.myEvents[evt];
    for (var i=0; i<evts.length; i++)
        evts[i]();
}

function ValidatorHookupEvent(control, eventType, functionPrefix) {
    var ev;
    eval("ev = control." + eventType + ";");
    if (typeof(ev) == "function") {
        ev = ev.toString();
        ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
    }
    else {
        ev = "";
    }
    var func;
    if (navigator.appName.toLowerCase().indexOf('explorer') > -1) {
        func = new Function(functionPrefix + " " + ev);
    }
    else {
        func = new Function("event", functionPrefix + " " + ev);
    }
    eval("control." + eventType + " = func;");
}

function RemoveTags(s) {
    return s.replace(/(<\s*(\S+)(\s[^<>]*)?>)|(<\s*\/\1\s*>)/g, "");
}

function ReplaceTags(s) {
    return s.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/&/g, "&amp;").replace(/\"/g, "&quot;");
}

function HasTags(s) {
    var m = s.match(/<\s*(\S+)(\s[^<>]*)?>|<\s*\/\1\s*>/);
    return (m != null);
}

function CreateCookie(key, value, days) {
    if (days) {
        var expires = new Date();
        expires.setDate(expires.getDate() + days);
    }
    
    document.cookie = key + "=" + escape(value) + (days ? ";expires=" + expires.toGMTString() : "");
}

function GetCookie(key) {
    if (document.cookie.length == 0 || document.cookie.indexOf(key + "=") == -1) {
        return "";
    }
    
    var keyIndex = document.cookie.indexOf(key + "=");
    var valueStart = keyIndex + key.length + 1;
    var valueEnd = document.cookie.indexOf(";", valueStart);
    if (valueEnd == -1) {
        valueEnd = document.cookie.length;
    }
    
    return unescape(document.cookie.substring(valueStart, valueEnd));
}

function GetFileSize(path) {
    var img = new Image();
    img.dynsrc = path;
    
    return img.fileSize;
}

var imageFileTypes = [".jpg", ".gif", ".png"];
var movieFileTypes = [".avi", ".wmv", ".mov", ".mp4"];
var falidExtention = "falidExtention";
var falidFileSize = "falidFileSize";

function validFile(sizeMB, fileType, obj) {
    var path = obj.value;
    var extention = path.substring(path.lastIndexOf("."), path.length).toLowerCase();
    var extentionValid = false;
    
    // valid extention
    if (fileType == "image") {
        for (var i=0; i<imageFileTypes.length; i++) {
            if (imageFileTypes[i] == extention) {
                extentionValid = true;
                break;
            }
        }
    }
    else if (fileType == "movie") {
        for (var i=0; i<movieFileTypes.length; i++) {
            if (movieFileTypes[i] == extention) {
                extentionValid = true;
                break;
            }
        }
    }
    else {
        extentionValid = true;
    }
    
    if (!extentionValid) {
        alert("허용하지 않는 파일입니다.");
        obj.value = "";
        
        var newObj = document.createElement("input");
        newObj.setAttribute("name", obj.name);
        newObj.setAttribute("type", "file");
        newObj.style.width = "400px";
        newObj.style.height = "20px";
        newObj.style.borderStyle = "solid";
        newObj.style.borderWidth = "1px";
        newObj.style.borderColor = "#BBBBBB";
        newObj.setAttribute("className", "thm p11 gray02");
        ValidatorHookupEvent(newObj, "onchange", "validFile(" + sizeMB + ", '" + fileType + "', this);");
        obj.parentNode.appendChild(newObj);
        obj.parentNode.removeChild(obj);
    
        return
    }
    
    // valid size
    var fileSize = GetFileSize(path);
    if (fileSize != "undefined") {
        var mbSize = parseInt(fileSize) / 1024 / 1024;
        if (mbSize > sizeMB) {
            alert(sizeMB + "MB를 초과하였습니다.");
            obj.value = "";
            
            var newObj = document.createElement("input");
            newObj.setAttribute("name", obj.name);
            newObj.setAttribute("type", "file");
            newObj.style.width = "400px";
            newObj.style.height = "20px";
            newObj.style.borderStyle = "solid";
            newObj.style.borderWidth = "1px";
            newObj.style.borderColor = "#BBBBBB";
            newObj.setAttribute("className", "thm p11 gray02");
            ValidatorHookupEvent(newObj, "onchange", "validFile(" + sizeMB + ", '" + fileType + "', this);");
            obj.parentNode.appendChild(newObj);
            obj.parentNode.removeChild(obj);
        
            return;
        }
    }
    
    return;
}

function validatorTrim(s) {
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
}

function requiredField(value, initialvalue) {
    if (validatorTrim(value).length == 0) {
        return false;
    }
    
    return (validatorTrim(value) != validatorTrim(initialvalue));
}

function requiredEmail(value) {
    var s = validatorTrim(value);
    var m = s.match(/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/);
    
    return (m != null);
}

function requiredPhone(value) {
    var s = validatorTrim(value);
    var m = s.match(/^\d{2,3}-\d{3,4}-\d{4}$/);
    
    return (m != null);
}

function onlyNumber() {
    if (event.keyCode == 8) return;
    if (event.keyCode == 9) return;
    if (event.keyCode == 46) return;
    
    if ((event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 96) || (event.keyCode > 105))
        event.returnValue = false;
}

function onlyPhone() {
    if (event.keyCode == 8) return;
    if (event.keyCode == 9) return;
    if (event.keyCode == 46) return;
    
    if (event.keyCode == 107) return;
    if (event.keyCode == 109) return;
    if (event.keyCode == 187) return;
    if (event.keyCode == 189) return;
    
    
    if ((event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 96) || (event.keyCode > 105))
        event.returnValue = false;
}

function onlyNumberAndDash() {
    if (event.keyCode == 8) return;
    if (event.keyCode == 46) return;
    if (event.keyCode == 9) return;
    if (event.keyCode == 57) return;
    if (event.keyCode != 107 && event.keyCode != 187) {
        if (event.keyCode != 109 && event.keyCode != 189) {
            if ((event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 96) || (event.keyCode > 105)) {
                event.returnValue = false;
            }
        }
    }
}

function openImage(url) {
    var htmlText = "<html><title>2007 KOREA in MOTION, DAEGU</title><script type=\"text/javascript\">function loaded() { window.resizeTo(document.images[0].offsetWidth, document.images[0].offsetHeight); }</script><body style=\"margin: 0;\" onload=\"loaded();\" onclick=\"window.close();\"><img src=\""+url+"\" /></body></html>";
    var imgwin = window.open("about:blank", "imgpopup", "scorllbar=no");
    imgwin.document.open();
    imgwin.document.write(htmlText);
    imgwin.document.close();
}