﻿
// 드림위버 관련함수

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_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_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 activex_build( paramTag){  
  for(var i = 0 ; i < paramTag.length; i++){
		document.write(paramTag[i]);
	}
}

// 팝업 관련 함수 시작.
// 팝업 생성 속도를 높이기 위해서는 UnNamedWindow를 사용할 것.
var newWindow = new Array(); 
function openNamedWindow(winID,winURL,winName,winOption) { 
    newWindow[winID] = window.open(winURL,winName,winOption); 
} 

function openUnNamedWindow(winID,winURL,winOption) { 
    if(newWindow[winID]) { 
        newWindow[winID].close(); 
    }     
    newWindow[winID] = window.open(winURL,'',winOption); 
    } 

function window::onunload() { 
    for(var i=0; i<newWindow.length; i++) { 
        if(newWindow[i]) { 
            try { 
                newWindow[i].window.close(); 
            } 
            catch(e) 
            {} 
        } 
    } 
} 
// 팝업 관련 함수 끝.



// 레이어에 맞도록 창사이즈 조절. 시작
function winResize()
{
    var Dwidth = parseInt(document.body.scrollWidth);
    var Dheight = parseInt(document.body.scrollHeight);
    var divEl = document.createElement("div");
    divEl.style.position = "absolute";
    divEl.style.left = "0px";
    divEl.style.top = "0px";
    divEl.style.width = "100%";
    divEl.style.height = "100%";

    document.body.appendChild(divEl);

    window.resizeBy(Dwidth-divEl.offsetWidth, Dheight-divEl.offsetHeight);
    document.body.removeChild(divEl);
}
 // 레이어에 맞도록 창사이즈 조절. 끝
 
 
 // Obj의 유효성 검사를 위한 함수. 시작
function fnGetValueStringLength(objID)
{
    if($get(objID) != null && $get(objID).value.length > 0)
        return true;
    else
        return false;
}

function fnGetValueLength(objID)
{
    if(fnGetFloatValue(objID) > 0 && $get(objID).value.length > 0)
        return true;
    else
        return false;
}

// Obj의 유효성 검사를 위한 함수. 끝


/*--------------------------------------------------
  기능   :  SELECT OPTION BOX의 값을 RETURN 한다.
  INPUT  : sb = selectBoxName
  RETURN :
----------------------------------------------------*/
function fnCheckSelectBox ( sb )
{
    var temp = document.getElementById(sb).options[document.getElementById(sb).selectedIndex].value ;
    return ( temp );
    
}

function fnCheckSelectBoxNm ( sb )
{
    var temp = document.getElementById(sb).options[document.getElementById(sb).selectedIndex].text ;
    return ( temp );
}

// *************************** Base64 Encoding Start ************************************
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}
// *************************** Base64 Encoding End ************************************


function toTimeObject(time) { //parseTime(time)
    var year  = time.substr(0,4);
    var month = time.substr(4,2) - 1; // 1월=0,12월=11
    var day   = time.substr(6,2);
    var hour  = time.substr(8,2);
    var min   = time.substr(10,2);

    return new Date(year,month,day,hour,min);
}

function getDayInterval(time1,time2) {
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
    var day   = 1000 * 3600 * 24; //24시간

    return parseInt((date2 - date1) / day, 10);
}

function toTimeString(date) { //formatTime(date)
    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
    var day   = date.getDate();

    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }

    return ("" + year + month + day)
}

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
                );
}


function isValidUrl(urls)
{       
    var chkExp = /http:\/\/([\w\-]+\.)+/g;
    
    if (chkExp.test(urls))
        return true;
    else
        return false;
}
        
        
function isNumber(clientID)
{
	var input = document.getElementById(clientID);
	var chars = "1234567890";
	return containsCharsOnly(input, chars, "숫자만 입력 가능합니다.");
}



function containsCharsOnly(input, chars, msg)
{
	for(var inx = 0; inx < input.value.length; inx++)
	{
		if(chars.indexOf(input.value.charAt(inx)) == -1)
		{			
			//alert(msg);
			input.value = '';
			input.focus();			
			return false;
		}
	}
	return true;
}

function OnkeyNumber() 
{
	if((event.keyCode>47)&&(event.keyCode<58))
	{	event.returnValue=true;    }
	else
	{	event.returnValue=false;    }
}



function OnkeyNumber2(obj) 
{
if((event.keyCode<48)||(event.keyCode>57))
		event.returnValue=false;
}


// 부스개설 / 수정시 URL 입력 제약조건
function fn_BoothCreateValidation(InputUrl, InputName, InputCheck)
{

    if(InputUrl == "")
    {
        alert('온라인 부스 주소를 입력하여 주십시오');
        return false;
    }
    else if(InputCheck == "")
    {
        alert('온라인 부스 주소를 중복확인 해 주십시오');
        return false; 
    }
    else
    {
        if(InputUrl.length < 4)
        {
            alert("온라인 부스 주소는 4글자 이상이어야 합니다");
            return false;
        }
        
        var arr = ["www","web","mail","ftp","internet"];
        
	    for(var i = 0; i < arr.length; i++)
	    {
	        if(InputUrl.indexOf(arr[i]) > -1 && InputUrl.length == arr[i].length)
	        {
	            alert(InputUrl + "은(는) 사용할 수 없는 주소 입니다");
	            return false;
	        }
	    }

    	
        for(var i = 0; i < InputUrl.length; i++)
        {
	        var c = InputUrl.charCodeAt(i);
	        if(c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0))
	        {
	            continue;
	        }
	        else if(c >= '0'.charCodeAt(0) && c <= '9'.charCodeAt(0))
	        {
	            continue;
	        }
	        else if(c == '-'.charCodeAt(0))
	        {
	            continue;
	        }
	        else if(c == '_'.charCodeAt(0))
	        {
	            continue
	        }
	        else
	        {
	            alert("한글 및 특수문자 공백 등은 입력할수 없습니다");
	            return false;
	        }
        }
    }

    
    if(InputName == "")
    {
        alert('온라인 부스 제목을 입력하여 주십시오');
        return false;
    }
    else
    {
        for(var i = 0; i < InputName.length; i++)
        {
        	var c = InputName.charCodeAt(i);
        	if(c == "'".charCodeAt(0))
	        {
	            alert("부스 제목에 허용되지 않는 특수문자가 있습니다");
                return false;
	        }
        }
    }
}


// 문자변환
function alterString(str,before,after) 
{
    var returnStr = "";

    for(i = 0; i < str.length; i++) 
    {
        value = str.charAt(i);
        index = before.indexOf(value);
        if(index >= 0) value = after.charAt(index);
        returnStr += value;
    }

    return returnStr;
}

// 대소문자 전환
function ConvertLetter(arg, opt) 
{
    // opt : U - Upper, L - Lower
    var str1 = "abcdefghijklmnopqrstuvwxyz";
    var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    if(opt == "U")
    {
        return alterString(arg,str1,str2);
    }
    else
    {
        return alterString(arg,str2,str1);
    }
}