
//Copyright 2006 ±³º¸ÅõÀÚ½ÅÅ¹¿î¿ë, Inc. All rights reserved.

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}



function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

var GLB_MONTH_IN_YEAR       = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var GLB_SHORT_MONTH_IN_YEAR = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var GLB_DAY_IN_WEEK         = ["Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"];
var GLB_SHORT_DAY_IN_WEEK   = ["Sun", "Mon", "Tue", "Wed","Thu", "Fri", "Sat"];

/**
 * @type   : prototype_function
 * @access : public
 * @desc   : ??????? ?? ??? String ??? toDate ???? ????. toDate ???? ??? ????
 *           ??? ?? ??????? ?? ??? Date ??? ????.
 * <pre>
 *     var date = "2002-03-05".toDate("YYYY-MM-DD")
 * </pre>
 * ?? ??? date ??? ??? 2002? 3? 5?? ???? Date ????? ????.
 * @sig    : [pattern]
 * @param  : pattern optional Date? ???? ?? ??? String? pattern?? ????. (default : YYYYMMDD)
 * <pre>
 *     # syntex
 *
 *       YYYY : year(4??)
 *       YY   : year(2??)
 *       MM   : month in year(number)
 *       DD   : day in month
 *       HH   : hour in day (0~23)
 *       mm   : minute in hour
 *       ss   : second in minute
 *       SS   : millisecond in second
 *
 *     <font color=red>??)</font> YYYY(YY)? ??? ??? ??. YYYY(YY) ? ??? ??? 1? 1?? ????
 *     ?? YYYY? MM ???? ??? 1?? ???? ??.
 * </pre>
 * @return : ??? Date Object.
 * @author :
 */
String.prototype.toDate = function(pattern) {
 var index = -1;
 var year;
 var month;
 var day;
 var hour = 0;
 var min  = 0;
 var sec  = 0;
 var ms   = 0;
 var newDate;
 if (pattern == null) {
  pattern = "YYYYMMDD";
 }
 if ((index = pattern.indexOf("YYYY")) == -1 ) {
  index = pattern.indexOf("YY");
  year = "20" + this.substr(index, 2);
 } else {
  year = this.substr(index, 4);
 }
 if ((index = pattern.indexOf("MM")) != -1 ) {
  month = this.substr(index, 2);
 } else {
  month = 1;
 }
 if ((index = pattern.indexOf("DD")) != -1 ) {
  day = this.substr(index, 2);
 } else {
  day = 1;
 }
 if ((index = pattern.indexOf("HH")) != -1 ) {
  hour = this.substr(index, 2);
 }
 if ((index = pattern.indexOf("mm")) != -1 ) {
  min = this.substr(index, 2);
 }
 if ((index = pattern.indexOf("ss")) != -1 ) {
  sec = this.substr(index, 2);
 }
 if ((index = pattern.indexOf("SS")) != -1 ) {
  ms = this.substr(index, 2);
 }
 newDate = new Date(year, month - 1, day, hour, min, sec, ms);
 if (month > 12) {
  newDate.setFullYear(year + 1);
 } else {
  newDate.setFullYear(year);
 }
 return newDate;
}

/**
 * @type   : prototype_function
 * @object : Date
 * @access : public
 * @desc   : ??????? ?? ??? Date ??? format ???? ????. format ???? Date ??? ?? ???
 *           ??? ??? ????? ????.
 * <pre>
 *     var dateStr = new Date().format("YYYYMMDD");
 *
 *     ?? : Date ???? ???? - dateObj = new Date()
 *                                   - dateObj = new Date(dateVal)
 *                                   - dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
 * </pre>
 * ?? ??? ????? 2002? 3? 5???? dateStr? ?? "20020305"? ??.
 * default pattern? "YYYYMMDD"??.
 * @sig    : [pattern]
 * @param  : pattern optional ????? ?? ?? ???. (default : YYYYMMDD)
 * <pre>
 *     # syntex
 *
 *       YYYY : hour in am/pm (1~12)
 *       MM   : month in year(number)
 *       MON  : month in year(text)  ?) "January"
 *       mon  : short month in year(text)  ?) "Jan"
 *       DD   : day in month
 *       DAY  : day in week  ?) "Sunday"
 *       day  : short day in week  ?) "Sun"
 *       hh   : hour in am/pm (1~12)
 *       HH   : hour in day (0~23)
 *       mm   : minute in hour
 *       ss   : second in minute
 *       SS   : millisecond in second
 *       a    : am/pm  ?) "AM"
 * </pre>
 * @return : Date? ???? ??? String.
 * @author :
 */
Date.prototype.format = function(pattern) {
    var year      = this.getFullYear();
    var month     = this.getMonth() + 1;
    var day       = this.getDate();
    var dayInWeek = this.getDay();
    var hour24    = this.getHours();
    var ampm      = (hour24 < 12) ? "AM" : "PM";
    var hour12    = (hour24 > 12) ? (hour24 - 12) : hour24;
    var min       = this.getMinutes();
    var sec       = this.getSeconds();
    var YYYY = "" + year;
    var YY   = YYYY.substr(2);
    var MM   = (("" + month).length == 1) ? "0" + month : "" + month;
    var MON  = GLB_MONTH_IN_YEAR[month-1];
    var mon  = GLB_SHORT_MONTH_IN_YEAR[month-1];
    var DD   = (("" + day).length == 1) ? "0" + day : "" + day;
    var DAY  = GLB_DAY_IN_WEEK[dayInWeek];
    var day  = GLB_SHORT_DAY_IN_WEEK[dayInWeek];
    var HH   = (("" + hour24).length == 1) ? "0" + hour24 : "" + hour24;
    var hh   = (("" + hour12).length == 1) ? "0" + hour12 : "" + hour12;
    var mm   = (("" + min).length == 1) ? "0" + min : "" + min;
    var ss   = (("" + sec).length == 1) ? "0" + sec : "" + sec;
    var SS   = "" + this.getMilliseconds();
    var dateStr;
    var index = -1;
    if (typeof(pattern) == "undefined") {
     dateStr = "YYYYMMDD";
    } else {
     dateStr = pattern;
    }
 dateStr = dateStr.replace(/YYYY/g, YYYY);
 dateStr = dateStr.replace(/YY/g,   YY);
 dateStr = dateStr.replace(/MM/g,   MM);
 dateStr = dateStr.replace(/MON/g,  MON);
 dateStr = dateStr.replace(/mon/g,  mon);
 dateStr = dateStr.replace(/DD/g,   DD);
 dateStr = dateStr.replace(/DAY/g,  DAY);
 dateStr = dateStr.replace(/day/g,  day);
 dateStr = dateStr.replace(/hh/g,   hh);
 dateStr = dateStr.replace(/HH/g,   HH);
 dateStr = dateStr.replace(/mm/g,   mm);
 dateStr = dateStr.replace(/ss/g,   ss);
 dateStr = dateStr.replace(/(\s+)a/g, "$1" + ampm);
 return dateStr;
}

/**
 * @type   : prototype_function
 * @object : Date
 * @access : public
 * @desc   : ?? Date ??? ???? ????? ?? Date ??? ????.
 *           ?? ?? ?? ??? ???? ??? ?? ?? ??.
 * <pre>
 *     var oneDayAfter = new Date.after(0, 0, 1);
 *     alert(new Date().after(1, 1, 1, 1, 1, 1).format("YYYYMMDD HHmmss"));
 * </pre>
 * @sig    : [years[, months[, dates[, hours[, minutes[, seconds[, mss]]]]]]]
 * @param  : years   optional ?? ??
 * @param  : months  optional ?? ??
 * @param  : dates   optional ?? ??
 * @param  : hours   optional ?? ???
 * @param  : minutes optional ?? ??
 * @param  : seconds optional ?? ??
 * @param  : mss     optional ?? ????
 * @return : ????? ???? Date ??
 * @author :
 */
Date.prototype.after = function(years, months, dates, hours, miniutes, seconds, mss) {
    if (years == null)    years    = 0;
    if (months == null)   months   = 0;
    if (dates == null)    dates    = 0;
    if (hours == null)    hours    = 0;
    if (miniutes == null) miniutes = 0;
    if (seconds == null)  seconds  = 0;
    if (mss == null)      mss      = 0;
 return new Date(this.getFullYear() + years,
                 this.getMonth() + months,
                 this.getDate() + dates,
                 this.getHours() + hours,
                 this.getMinutes() + miniutes,
                 this.getSeconds() + seconds,
                 this.getMilliseconds() + mss
                );
}
