﻿var ie, moz;

ie    = document.all;
moz   = document.getElementById && !document.all;

// 폼 검증 함수
function checkForm(f)
{
    var fn      = document.getElementById(f);
    var fLen    = fn.elements.length;
    var fObj;   // 폼 요소
    var fTyp;   // 폼 요소 Type
    var fVal;   // 폼 요소 Value
    var fMsg;   // 경고 메시지 속성
    var fMax;   // 최대 길이 지정
    var fMin;   // 최소 길이 지정
    var fMxN;   // 최대값 지정
    var fMnN;   // 최소값 지정
    
    var fDigitOnly;
    var fDigitDotOnly;
    var fEngDigitOnly;
    var fEngOnly;
    var fEmail;            

    for (i = 0; i < fLen; i++ )
    {
        fObj = fn.elements[i];
        fTyp = fObj.type;
        fVal = fn.elements[i].value;
        
        fMsg = fObj.getAttribute("msg");        // 경고 메시지
        fMax = fObj.getAttribute("maxlen");     // 최대 입력글자수 제한
        fMin = fObj.getAttribute("minlen");     // 최소 입력글자수 제한
        fMxN = fObj.getAttribute("maxnum");     // 최대 숫자 제한
        fMnN = fObj.getAttribute("minnum");     // 최소 숫자 제한

        fDigitOnly      = fObj.getAttribute("isDigitOnly");
        fDigitDotOnly   = fObj.getAttribute("isDigitDotOnly");
        fEngDigitOnly   = fObj.getAttribute("isEngDigitOnly");
        fEngOnly        = fObj.getAttribute("isEngOnly");
        fEmail          = fObj.getAttribute("isEmail");
        
        if (fMsg != null && (fTyp == "text" || fTyp == "hidden" || fTyp == "textarea" || fTyp == "password") && fVal.replace(/ /gi,"") == "") {
            alert(fMsg + " 입력해 주세요");
            if (fTyp != "hidden" && fObj.disabled == false) {fObj.focus();}
            return false;
        }
        if (fObj.style.display != "none" && fMsg != null && (fTyp == "select-one" || fTyp == "select-multiple") && fVal =="") {
            alert(fMsg + " 선택해 주세요");
            fObj.focus(); return false;
        }
        if(fMsg != null && fTyp == "file" && fVal ==""){
            alert(fMsg + " 올려주세요.");
            fObj.focus(); return false;
        }
        if (fMsg != null && (fTyp == "radio" || fTyp == "checkbox") && checkChecked(f.name, fObj) == false) {
            alert(fMsg + " 선택해 주세요");
            fObj.focus(); return false;
        }
        if (fMax != null && fMax < getLen(fVal)) {
            alert(fMsg+"다시 입력해 주세요. \n입력된 글자수가 "+fMax+"자보다 작아야합니다.\n(영문 "+fMax+"자, 한글 "+Math.floor(fMax/2)+"자 까지 가능합니다.)");
            fObj.focus(); return false;
        }
        if (fMin != null && fMin > getLen(fVal)) {
            alert("입력된 글자수가 "+fMin+"자보다 커야합니다.");
            fObj.focus(); return false;
        }
        if (fMxN != null && parseInt(fMxN) < parseInt(fVal)) {
            alert("입력된 숫자는 "+fMxN+"보다 작아야합니다.");
            fObj.focus(); return false;
        }
        if (fMnN != null && parseInt(fMnN) > parseInt(fVal)) {
            alert("입력된 숫자는 "+fMnN+"보다 커야합니다.");
            fObj.focus(); return false;
        }
        
        if (fDigitOnly != null && CheckNumber(fVal) == false ) {
            alert("숫자로만 입력해 주세요");
            fObj.focus();
            return false;
        }
        if (fDigitDotOnly != null && CheckNumber2(fVal) == false )
        {
            alert("숫자와 소수점만 입력해 주세요");
            fObj.focus();
            return false;
        }
        if (fEngDigitOnly != null && CheckEngNumber(fVal) == false )
        {
            alert("영어와 숫자만 입력해 주세요");
            fObj.focus();
            return false;
        }
        if (fEngOnly != null && CheckEnglish(fVal) == false )
        {
            alert("영어만 입력해 주세요");
            fObj.focus();
            return false;
        }
        if (fEmail != null && CheckEmail(fVal) == false )
        {
            alert("E-Mail양식만 입력해 주세요");
            fObj.focus();
            return false;
        }
    }
    return true;
}

//공백
function CheckBlank(value) {
    if(!value) { 
        return false;
    } else {
        var count = 0;
        if(value.length > 0) {
            for(i=0;i<value.length;i++) {
                if(value.charAt(i) == " ") count++;
            }
            if(count == value.length) return false;
        }
    }
    return true;
}

//배열 요소일 경우 checked 된것이 있는지 확인
function checkChecked(f, obj) {
    var objnm = obj.name;
    var oElem = eval(f+"."+objnm);
    var ret = false;
    
    if (typeof(oElem.length) == "undefined") {
        if (oElem.checked) {
            ret = true;
        }
    } else {
        for (var i=0;i<oElem.length;i++) {
            if (oElem[i].checked) {
                ret = true;
            }
        }
    }
    return ret;
}
//문자 길이 반환 (영문 1byte, 한글 2byte 계산)
function getLen(str) {
    var len;
    var temp;

    len = str.length;
    var tot_cnt = 0;

    for(k=0;k < len;k++){
        temp = str.charAt(k);
        if(escape(temp).length > 4)
            tot_cnt += 2;
        else
            tot_cnt++;
    }
    return tot_cnt;
}

//숫자 패턴 검사 true : 숫자
function CheckNumber(input) {
    var arrMatch = input.match(/^([0-9]*)$/);
    if(arrMatch == null) return false;
    return true;
}

//소수점 숫자 패턴 검사 true : 숫자
function CheckNumber2(input) {
    var arrMatch = input.match(/^([0-9.]*)$/);
    if(arrMatch == null) return false;
    return true;
}

//E-Mail 패턴 검사
function CheckEmail(emailAddress) {
    var arrMatch = emailAddress.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;
}

//한글 패턴 검사 true : 한글
function CheckHangle(input) {
    var form = input;

    for(var i = 0; i < form.length; i++) {

        var chr = form.substr(i,1);
        chr = escape(chr);
        if (chr.charAt(1) == "u") {
            chr = chr.substr(2, (chr.length - 1));
            if((chr < "AC00") || (chr > "D7A3")) return false;
        }
        else return false;
    }

    return true;
}

// 영문 패턴 검사 true : 영문
function CheckEnglish(input) {
    var arrMatch = input.match(/^([A-Za-z]*)$/);
    if(arrMatch == null) return false;

    return true;
}

//영문 패턴 검사 true : 영문
function CheckEngNumber(input) {
    var arrMatch = input.match(/^([A-Za-z0-9.]*)$/);
    if(arrMatch == null) return false;

    return true;
}

// 현재 해당되는 일자별 Select 하는 것.
function change_date(sYear, sMonth, sDay, nDay) {
    var last_day    = new Date(sYear.value,sMonth.value,0);
    var todays      = new Date();

    if(!nDay) nDay = todays.getDate();

    if(nDay == "08")            nDay = "8";
    else if(nDay == "09")   nDay = "9";
    else                                    nDay = parseInt(nDay);
    nDay    = ( ( nDay < 10 ) ? "0"+ nDay : nDay );
    
    sDay.length = last_day.getDate();

    for(x=0;x<last_day.getDate();x++) {

        var x_t = (x + 1);
        var x_v = ( ( x_t < 10) ? "0"+x_t : x_t );

        if(nDay == x_v) sDay.options[x].selected = true;

        sDay.options[x].text = x_t;
        sDay.options[x].value = x_v;
    }

}

function change_date_Layer(byun, sYear, sMonth, sDay, nDay) {
    var last_day    = new Date(sYear.value,sMonth.value,0);
    var todays      = new Date();

    if(!nDay) nDay = todays.getDate();
    
    if(nDay == "08")            nDay = "8";
    else if(nDay == "09")   nDay = "9";
    else                                    nDay = parseInt(nDay);
    nDay    = ( ( nDay < 10 ) ? "0"+ nDay : nDay );
    
    sDay.length = last_day.getDate();

    SS_clearOption(byun,0);
    for(x=0;x<last_day.getDate();x++) {

        var x_t = (x + 1);
        var x_v = ( ( x_t < 10) ? "0"+x_t : x_t );

        SS_addOption(byun,x_v,x_t);

        if(nDay == x_v) sDay.options[(x+1)].selected = true;
    }
}

/*
 * 콤보박스 값을 set
 */ 
function setComboValue(obj, val) {
    for (var i=0; i<obj.length;i++) {
        if (obj.options[i].value == val) {
            obj.options[i].selected = true;
            return;
        }
    }
}

function setEvents()
{
    var inputFields = document.getElementsByTagName("input");
    
    var field = null;
    for(var i = 0; i < inputFields.length; i++) {
        field = inputFields[i];
        if (field.type == 'button') {
            field.style.cursor = 'hand';
            continue;
        }
        if (isField(field)) {
    
            if ((field.isDigitDotOnly != undefined) || (field.isDigitOnly != undefined) || (field.isEngDigitOnly != undefined)
                    || (field.isEngOnly != undefined) || (field.isTel != undefined)
                    || (field.isEmail != undefined)){
                field.style.imeMode = 'disabled';
            }
            
            if ( moz == false )
            {
                field.detachEvent ( "onkeypress", inputCheck );
                field.attachEvent ( "onkeypress", inputCheck );
                
                field.detachEvent ( "onkeyup", alertCheck );
                field.attachEvent ( "onkeyup", alertCheck );
            }
            else
            {
//                field.removeEventListener ( "keydown", inputCheck, false );
//                field.addEventListener ( "keydown", inputCheck, false );
                
                //field.removeEventListener ( "keyup", alertCheck, true );
                //field.addEventListener ( "keyup", alertCheck, true );
            }
        }
    }
}

function isField(field)
{
    if(field == null || field == undefined) return false;
    
    if ((field.tagName == 'INPUT' || field.tagName == 'SELECT' ||
        field.tagName == 'TEXTAREA') && field.name != undefined) {
        return true;
    }

    return false;
}

function alertCheck()
{
    var field = event.srcElement;

    if ( field.isDigitDotOnly != undefined )
    {
        if ( CheckNumber2(field.value) == false )
        {
            alert('숫자 타입만 입력해 주시기 바랍니다.');
            field.value = '';
        }
    }

    if ( field.isDigitOnly != undefined )
    {
        if ( CheckNumber(field.value) == false )
        {
            alert('숫자 타입만 입력해 주시기 바랍니다.');
            field.value = '';
        }
    }
}

// 입력값 체크
//입력값 체크
function inputCheck(event) 
{
    var field = event.srcElement;
    var keycode = ( moz == false ? event.keyCode : event.which );
    
    // 소숫점까지 입력되는 것
    if(field.isDigitDotOnly != undefined) {
        if (keycode == 46 || ( keycode >= 48 && keycode <=57 ) ) {
            return true;
        }
        return false;
    }
    
    // 숫자만 입력 받는것
    if(field.isDigitOnly != undefined){
        if (keycode >= 48 && keycode <=57){
            return true;
        }
        return false;
    }
    
    // 금액등 숫자만 들어가는 경우
    if(field.isNumericOnly != undefined){
        if (keycode == 44 || (keycode >= 48 && keycode <=57)){
            //alert(field.value);
            //field.value = setComma(field.value);
            return true;
        }
        return false;
    }

    // 금액등 숫자만 들어가는 경우(소숫점포함)
    if(field.isNumericDotOnly != undefined){
        if (keycode == 44 || keycode == 46 || (keycode >= 48 && keycode <=57)){
            //alert(field.value);
            //field.value = setComma(field.value);
            return true;
        }
        return false;
    }

    // 영문자 및 숫자만 입력 받는것
    if(field.isEngDigitOnly != undefined){
        if (keycode == 46 || keycode == 47 || keycode == 95 ||
          (keycode >= 48 && keycode <=57) ||
          (keycode >= 65 && keycode <=90) ||
          (keycode >= 97 && keycode <=122)) {
            return true;
        }
        return false;    
    }
    
    // 영문자만
    if(field.isEngOnly != undefined){
        if ( (keycode >= 65 && keycode <=90) ||
          (keycode >= 97 && keycode <=122)) {
            return true;
        }
        return false;    
    }
    
    // 메일형태
    if(field.isEmail != undefined){
        if (keycode == 45 || keycode == 46 || keycode == 47 || keycode == 95 ||
          (keycode >= 48 && keycode <=57) ||
          (keycode >= 64 && keycode <=90) ||
          (keycode >= 97 && keycode <=122)) {
            return true;
        }
        return false;
    }
    
    // 전화번호 형태
    if(field.isTel != undefined){
        if ((keycode >= 48 && keycode <=57) || (keycode <=45)){
            return true;
        }
        return false;
    }
}

String.prototype.trim               = function()
{
    var temp = this;
    //정규 표현식을 사용하여 화이트스페이스를 빈문자로 전환
    str = temp.replace(/^\s*/,'').replace(/\s*$/, ''); 
    return temp;
}
String.prototype.replaceAll = function(searchStr, replaceStr )
{
    var temp = this;
    while( temp.indexOf( searchStr ) != -1 ) temp = temp.replace( searchStr, replaceStr );
    return temp;
}

if (typeof HTMLElement!="undefined" && ! HTMLElement.prototype.insertAdjacentElement)
{
  HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
  {
    switch (where){
      case 'beforeBegin':
        this.parentNode.insertBefore(parsedNode,this)
        break;
      case 'afterBegin':
        this.insertBefore(parsedNode,this.firstChild);
        break;
      case 'beforeEnd':
        this.appendChild(parsedNode);
        break;
      case 'afterEnd':
        if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
        else this.parentNode.appendChild(parsedNode);
        break;
    }
  }

  HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
  {
    var r = this.ownerDocument.createRange();
    r.setStartBefore(this);

    var parsedHTML = r.createContextualFragment(htmlStr);
    this.insertAdjacentElement(where,parsedHTML)
  }


  HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
  {
    var parsedText = document.createTextNode(txtStr)
    this.insertAdjacentElement(where,parsedText)
  }
}