var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the FSCommand messages  in a Flash movie.
function calendar_DoFSCommand(command, args) {
	var calendarObj = isInternetExplorer ? document.all.calendar : document.calendar;
	if(command=="setDate"){
        AutoDate.setDate(args);
    }else if(command=="hideDate"){
        AutoDate.CalendarHide();
    }
}
// Hook for Internet Explorer.
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
	document.write('<script language=\"VBScript\"\>\n');
	document.write('On Error Resume Next\n');
	document.write('Sub calendar_FSCommand(ByVal command, ByVal args)\n');
	document.write('	Call calendar_DoFSCommand(command, args)\n');
	document.write('End Sub\n');
	document.write('</script\>\n');
}

document.write('<div id="AutoDateCalendar" style="display:none;position: absolute; z-index: 2006"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="calendar" width="151" height="151" align="middle"> 	<param name="allowScriptAccess" value="sameDomain" /> 	<param name="movie" value="/lib/calendar/calendar.swf" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param name="wmode" value="transparent" /><param name="bgcolor" value="#ffffff" /><embed src="/lib/calendar/calendar.swf" loop="false" menu="false" quality="high" scale="noscale" wmode="transparent" bgcolor="#ffffff" width="151" height="151" swLiveConnect=true id="calendar" name="calendar" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></div><div id="AutoDateCalendarBG" style=" width:151px;height:151px;display:none;position:absolute;z-index:1005"><iframe scrolling="no" border="0" frameborder="0" width="100%" height="100%"></iframe></div>');

var AutoDateClass = Class.create();
AutoDateClass.prototype = {
	   initialize: function() {
	      this.target_obj ;
          this.gtCalObj ;
	   },
    /* --- 날짜 형식 (onKeyUp 이벤트) --- */
    dateFormat : function (obj){

     this.target_obj = obj ;
     var str  = this.onlyNum(obj.value);
     if(event.keyCode==8){
         return;
     }
     var leng = str.length;
			switch (leng)
			{
                case 0 :
                case 1 :
                case 2 :    
                case 3 :    obj.value = str ;
                            break;
                case 4 : 
                            obj.value = str + "-";
                            break;
                case 5 :
                            obj.value = str.substring(0, 4) + "-" + str.substring(4);
                            break;
                case 6 :
                            obj.value = str.substring(0, 4) + "-" + str.substring(4) + "-" ;
                            break;
                case 7 :
                            obj.value = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6);
                            break;
                case 8 :
                            obj.value = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6);
                            break;
			}

    },
    /* --- 숫자만 리턴 --- */
    onlyNum : function (val)
    {
     var num = val;
     var tmp = "";

     for (var i = 0; i < num.length; i ++)
     {
      if (num.charAt(i) >= 0 && num.charAt(i) <= 9)
       tmp = tmp + num.charAt(i);
      else
       continue;
     }

     return tmp;
    },
 

    sub_DateValidation : function (strTmp){

        var intLen	= strTmp.length;

        if( intLen != 8 && intLen > 0 ) { 
            MsgUtils.alertMsg(6001);/*alert("일자(YYYYMMDD) 입력 오류입니다.")*/; 
            this.target_obj.value="" ;
            return; 
        }

        var intYear	= (+strTmp.substring(0,4)) ;
        var intMM	= (+strTmp.substring(4,6)) ;
        var intDD	= (+strTmp.substring(6));
        
        if( !this.sub_MonthValidation(intMM) ) return(null);
        if( !this.sub_DayValidation(intYear, intMM, intDD) ) return(null);
        return(strTmp);
    },

    sub_MonthValidation : function (argIntMM)
    {
        var oRegExp = ( argIntMM.toString().length == 1 )? /[1-9]/ : /(10)|(11)|(12)/;

        if( !oRegExp.test(argIntMM) )
        {
            MsgUtils.alertMsg(6002);
            //alert("존재하지 않는 날짜(MM) 입니다.");
            this.target_obj.value="" ;
            return(false);
        }
        return(true);
    },

    sub_DayValidation : function (argIntYear, argIntMM, argIntDD)
    {
        var intDateRange= 0;

        switch( argIntMM )
        {
        case 2	: intDateRange = (!(argIntYear % 4) && (argIntYear % 100) || !(argIntYear % 400)) ? 29 : 28; break;
        case 4	:
        case 6	:
        case 9	:
        case 11	: intDateRange = 30; break;
        default : intDateRange = 31; break;
        }

        if( argIntDD > intDateRange || argIntDD < 1 )
        {
            MsgUtils.alertMsg(6003);//alert("존재하지 않는 날짜(DD) 입니다.");
            this.target_obj.value="" ;
            return(false);
        }
        return(true);
    },

    /* --- 날짜 유효성 검사 --- */
    chkDate : function (obj){
			var str  = this.onlyNum(obj.value);
			if(str.length>0){
				this.sub_DateValidation(str);
			}
    },

    CalendarShow : function (obj) {
        gtCalObj = obj

        var arrPosval = Position.cumulativeOffset(obj);

        Element.setStyle("AutoDateCalendar", {top:(arrPosval[1]+15)+'px',left:(arrPosval[0]-120)+'px'});
        Element.setStyle("AutoDateCalendarBG", {top:(arrPosval[1]+15)+'px',left:(arrPosval[0]-120)+'px'});

        if(Element.visible("AutoDateCalendar")){
            Element.hide("AutoDateCalendar");
            Element.hide("AutoDateCalendarBG");
        }else{
            Element.show("AutoDateCalendar");
            if(new RegExp(/MSIE/).test(navigator.userAgent)){ 
                Element.show("AutoDateCalendarBG");
            }
        }
    },

    CalendarHide : function () {
        Element.hide("AutoDateCalendar");
        Element.hide("AutoDateCalendarBG");
    },

    setDate : function (val){
        element = $(gtCalObj);
        var NodeList = $(element.parentNode).getElementsByTagName('input');
        var nodes = $A(NodeList);
        nodes.each(function(node){
            switch (node.getAttribute("name")){
                case gtCalObj.getAttribute("targetname") : 
                    node.value = val;
                break;
            }
        });
        this.CalendarHide();
    }


}


var AutoDate = new AutoDateClass();




