/**************************************************************
*
* 유틸리티 JavaScript - 2007.10.15 (Object형식으로 변경 - 김경희)
*
**************************************************************/
var ScriptCommon = new Object;

ScriptCommon.Browser=navigator.userAgent;
ScriptCommon.isGecko=ScriptCommon.Browser.indexOf("Gecko")!=-1;
ScriptCommon.isOpera=ScriptCommon.Browser.indexOf("Opera")!=-1;
ScriptCommon.isSafari=ScriptCommon.Browser.indexOf("Safari")!=-1;
ScriptCommon.isMoz= ScriptCommon.Browser.indexOf("Firefox")!=-1;
ScriptCommon.isIE= window.ActiveXObject ? true : false;

//--  ==================== 문자열 관련  처리  ====================

/*
 * 글자수 제한 처리
 * @param lengthLimit : 글자 길이 제한수
 * @param objName : 처리할 Object Name
 */
ScriptCommon.checkTextLength = function(lengthLimit, objName) {

    var obj = ScriptCommon.getById(objName);
    var objValue = obj.value;

    var length = ScriptCommon.getLength(objValue);

    if (length > lengthLimit) {
        alert("한글 "+parseInt(lengthLimit/2)+"자, 영문 "+lengthLimit+"자 이상 입력할수 없습니다.");
        return true;
    }
}


/*
 * 글자의 길이 반환
 * @param stringValue : 처리할 문자열
 * @return 문자열 길이
 */
ScriptCommon.getLength=function(stringValue) {
    var nbytes = 0;

    for (i=0; i<stringValue.length; i++) {
        var ch = stringValue.charAt(i);
        if(escape(ch).length > 4) {
            nbytes += 2;
        } else if (ch == '\n') {
            if (stringValue.charAt(i-1) != '\r') {
                nbytes += 1;
            }
        } else if (ch == '<' || ch == '>') {
            nbytes += 4;
        } else {
            nbytes += 1;
        }
    }
    return nbytes;
}


/*
 * ID값에 해당하는 객체 번환
 * @param elementId : 객체 ID값
 * @return 객체
 */
ScriptCommon.getById=function(elementId) {
    return document.getElementById ? document.getElementById(elementId) : null;
}

/*
 * 숫자여부 체크
 * @param stringValue : 문자열
 * @return 체크여부
 */
ScriptCommon.isNumeric=function(stringValue) {
    if (stringValue.length == 0) return true;
    return stringValue.search(/^[0-9]+$/) != -1;
}

/*
 * 앞뒤 빈문자열 제거 처리
 * @param stringValue : 문자열
 * @return 빈문자열 제거후 반환
 */
ScriptCommon.trim=function(stringValue) {
    return stringValue.replace(/^\s*/, "").replace(/\s*$/, "");
}

/*
 * 알파벳과 숫자여부 체크
 * @param stringValue : 문자열
 * @return 체크여부
 */
ScriptCommon.isAlphaNumeric=function(stringValue) {
    if (stringValue.length == 0) return true;
    return stringValue.search(/^[a-zA-Z0-9]+$/) != -1;
}


/*
 * 이메일 주소 체크
 * @param stringValue : 문자열
 * @return 체크여부
 */
ScriptCommon.checkEmail=function(stringValue) {
    if (stringValue.length == 0) return true;
    return stringValue.search(/^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/) != -1;

}

/*
 * 값이 선택되었는지 여부
 * @param objName : 객체 Name 값
 * @return 체크여부
 */
ScriptCommon.isChecked=function(objName){

    // getElementsByName 은 배열로 return 함
    var obj = document.getElementsByName(objName)
    var flagChecked = false;

    for(i=0; i<obj.length; i++) {
        if (obj[i].checked) {
            flagChecked = true;
            break;
        }
    }
    return flagChecked;
}

/*
 * 체크된 값을 반환
 * @param objName : 객체 Name값
 * @return 체크값
 */
ScriptCommon.getCheckedValue=function(objName) {

    // getElementsByName 은 배열로 return 함
    var obj = document.getElementsByName(objName)
    var flagChecked = false;

    for(i=0; i<obj.length; i++) {
        if (obj[i].checked) {
            return obj[i].value;
            break;
        }
    }
}

/*
 * 해당 객체의 값을 체크하여 "checked" 처리
 * @param objName : 객체Name값
 * @param checkedValue : 선택된값
 */
ScriptCommon.setChecked=function(obName, checkedValue) {

    // getElementsByName 은 배열로 return 함
    var obj = document.getElementsByName(objName)
    var flagChecked = false;

    for(i=0; i<obj.length; i++) {
        if (obj[i].value == value)  obj[i].checked = true;
        else obj[i].checked = false;
    }
}

/*
 * 문자열 전체 교체
 * @param stringValue : 문자열
 * @param searchValue : 검색문자열
 * @param replaceValue : 교체문자열
 * @return 교체후 반환
 */
ScriptCommon.replaceAll=function(stringValue, searchValue, replaceValue) {

    return stringValue.replace(new RegExp(searchValue, "g"), replaceValue);
}

/*
 * 문자열에서 HTML 태그를 제거한다.
 * @param contents : 문자열
 * @return HTML태그 제거된 문자열 반환
 */
ScriptCommon.removeHTMLTags=function(contents){

        contents = contents.replace(/&(lt|gt);/g, function (strMatch, p1){
            return (p1 == "lt")? "<" : ">";
        });
        var strTagStrippedText = contents.replace(/<\/?[^>]+(>|$)/g, "");
        return strTagStrippedText;
}


/*
* 스크린의 중앙에 팝업창을 띄운다.
* url : url
* popupname : 팝업 윈도우명
* x : width
* y : height
* scroll : 화면 scroll여부( 'yes','no' )
*/
ScriptCommon.popup=function(url, popupname, x, y, scroll) {

    window.open(url,popupname,"toolbar=no,width=" + x+",height="+y
        + ",top="+ (screen.availheight- y )/2+",left="+(screen.availwidth- x)/2
        +",directories=no,status=no,scrollbars="+scroll+",resize=no,menubar=no");

}

/*
 * 팝업 사이즈 자동 조절 처리
 *
 */
ScriptCommon.autoResizePopup=function() {
    /*
    var maxWidth = 1000;
    var maxHeight = 1000 ;
    var winW, winH, sizeToW, sizeToH;
    if ( parseInt(navigator.appVersion) > 3 ) {
        if ( navigator.appName=="Netscape" ) {
            winW = window.innerWidth;
            winH = window.innerHeight;
        }
        if ( navigator.appName.indexOf("Microsoft") != -1 ) {
            winW = document.documentElement.scrollWidth;
            winH = document.documentElement.scrollHeight;
        }
    }

    sizeToW = 0;
    sizeToH = 0;

    if ( winW > maxWidth ) {
        sizeToW = maxWidth - document.documentElement.clientWidth;
    } else if ( Math.abs(document.documentElement.clientWidth - winW ) > 3 ) {
        sizeToW = winW - document.documentElement.clientWidth;
    }
    if ( winH > maxHeight ) {
        sizeToH = maxHeight - document.documentElement.clientHeight;
    } else if ( Math.abs(document.documentElement.clientHeight - winH) > 4 ) {
        sizeToH = winH - document.documentElement.clientHeight;
    }

    if ( sizeToW != 0 || sizeToH != 0 )
        window.resizeBy(sizeToW + 'px', sizeToH + 'px');
    */
    // IE7.0에서  document.documentElement.clientWidth값이 0으로 리턴됨.
    if( document.documentElement.clientWidth >0 )
       window.resizeTo(document.documentElement.clientWidth, document.documentElement.clientHeight + 20)

    if (document.layers) {
        var sinist = screen.width / 2 - outerWidth / 2;
        var toppo = screen.height / 2 - outerHeight / 2;
    }
    else {
        var sinist = screen.width / 2 - document.documentElement.offsetWidth / 2;
        var toppo = -75 + screen.height / 2 - document.documentElement.offsetHeight / 2;
    }
    self.moveTo(sinist, toppo);


}

/*
 * 파일 사이즈를 KB로 변환
 * @param totalFileSize : 총 파일 사이즈
 */
ScriptCommon.getByteMask=function(totalFileSize) {

    if( parseInt(totalFileSize) <= 0 )
        return size = "0Kb";

    var size, attMSize, attKSize;
    attMSize = parseInt(totalFileSize) / 1048576;
    attKSize = ""+( parseInt(totalFileSize) % 1048576)/1024;


    msize = parseInt(attMSize);
    if( msize > 0 )
        size = msize +"M";
    else size ="";

    if( attKSize.indexOf(".") > 0 )
        size += attKSize.substring(0, attKSize.indexOf(".")+2)+"Kb";
    else
        size += attKSize + "Kb";

    if( parseInt(size) <= 0 ) size = "0.1Kb";

    return size;

 }

/**
 * Span html내용을 서로 변경한다.
 *
 * @param spanName 문자열의 SPAN 이름
 * @param objName1 문자열 1이 포함된 element의 ID
 * @param objName2 문자열 2이 포함된 element의 ID
 */
ScriptCommon.swapSpanInnerHTML=function(spanName, objName1, objName2){
    var object1 = ScriptCommon.getById(spanName + objName1);
    var object2 = ScriptCommon.getById(spanName+objName2);

    var tempStr = object2.innerHTML;
    object2.innerHTML = object1.innerHTML;
    object1.innerHTML = tempStr;
}



  //--  ==================== 날짜 관련 처리  ====================


/*
 * 해당년월의 마지막 날짜를 반환
 * @param thisYear : 해당년
 * @param thisMonth : 해당월
 */
ScriptCommon.getMaxDay=function(thisYear, thisMonth ) {

    var monthArray=new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var maxDays=monthArray[thisMonth-1];

    if (thisMonth==2) {
        if ((thisYear/4)!=parseInt(thisYear/4)) maxDays=28;
        else maxDays=29;
    }

    return maxDays;
}

/*
 * 날짜 옵션 만들기
 * @param elementString : 구분값 (start, end 등의 값 )
 * @param selectedyear : 초기 셋팅 년
 * @param selectedMonth :초기 셋팅 월
 * @param selectedDay : 초기 셋팅 날
 */
ScriptCommon.makeDayOption=function(elementString, selectedYear, selectedMonth, selectedDay) {

    var yearObj = ScriptCommon.getById(elementString + 'Year');
    var monthObj = ScriptCommon.getById(elementString + 'Month');
    var dayObj = ScriptCommon.getById(elementString + 'Day');

    // 날짜옵션 삭제
    dayObj.length = 0;

    // 기본셋팅 정보가 없으면 현재 선택된 값을 가져온다.
    if (selectedYear == '') selectedYear = yearObj.options[yearObj.selectedIndex].value;
    else {
        // 년 선택 하기
        for (i=0; i<=yearObj.length; i++) {

            if (yearObj.options[i].value==selectedYear) {
                 yearObj.options[i].selected = true;
                 break;
            }
        }
    }
    // 기본셋팅 정보가 없으면 현재 선택된 값을 가져온다.
    if (selectedMonth == '') selectedMonth = monthObj.options[monthObj.selectedIndex].value;

    else {
        // 월 선택 하기
        for (i=0; i<=monthObj.length; i++) {

            if (monthObj.options[i].value==selectedMonth) {
                 monthObj.options[i].selected = true;
                 break;
            }
        }
    }
    // 마지막 날 구하기
    var maxDay = ScriptCommon.getMaxDay(selectedYear,selectedMonth);
    // 해당년월의 날짜옵션 만들기
    for (i=1,j=0 ; i<=maxDay ; i++,j++) {

        var ival = (i < 10) ? '0' + i : i;
        dayObj[j] = new Option();
        dayObj[j].value = ival;
        dayObj[j].text  = i;

    }

    // 기본셋팅 정보가 없으면 첫번째 옵션을 선택 (옵션을 새로 만들었기 때문에 현재선택값이 없음)
    if (selectedDay == '') dayObj.selectedIndex = 0;
    else {
        // 일 선택하기
        for (i=0; i<=dayObj.length; i++) {

            if (dayObj.options[i].value==selectedDay) {
                 dayObj.options[i].selected = true;
                 break;
            }
        }
    }
}

 //--  ==================== 쿠키 관련 처리  ====================

 /**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
ScriptCommon.setCookie=function(name, value, expires, path, domain, secure) {

    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
ScriptCommon.getCookie=function(name) {

    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


/**
 * Deletes the specified cookie.
 *
 * name      name of the cookie
 * [path]    path of the cookie (must be same as path used to create cookie)
 * [domain]  domain of the cookie (must be same as domain used to create cookie)
 */
ScriptCommon.deleteCookie=function(name, path, domain) {

    if (ScriptCommon.getCookie(name))
    {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

 //--  ==================== 태그 문자열 관련 처리  ====================

/*
 * 태그글 문자열이 유효한지 체크한다.
 * @param tags : 태그문자열
 */
ScriptCommon.tagValidator=function(tags){

    var checkSpace = /\s/;

    // 구분자체크
    if(tags.length-1 == tags.lastIndexOf(',')){
        alert('마지막에 , 가 올수 없습니다');
        return false;
    }

    var parseStr = tags.split(',');

    if(parseStr.length > 10){
        alert('태그는 10개까지 입력하실수 있습니다');
        return false;
    }

    // 공백체크
    for(var k=0;k<parseStr.length;k++){
        if(checkSpace.test(parseStr[k]  )){
            alert('태그명에 공백이 올수 없습니다');
            return false;
        }
        if(parseStr[k] == ""){
            alert('공백인 태그가 있습니다');
            return false;
        }
    }

    // 중복체크
    for(var i=0;i<parseStr.length;i++){
        var targetStr = parseStr[i];
        if(i+1 < parseStr.length){
            for(var j=i+1;j<parseStr.length;j++){
                if(targetStr == parseStr[j]){
                    alert('태그 \"'+parseStr[j]+'\" 가 중복되었습니다.');
                    return false;
                }
            }
        }
    }
    return true;
}

/*
 * 특수문자가 입력되었는지  체크한다.
 * @param tags : 태그문자열
 */
ScriptCommon.inputCheckSpecial=function(obj){
  re = /[~!@\#$%^&*\()\-=+_']/gi;
  if(re.test(obj.value)){
    alert("특수문자는 입력하실수 없습니다.");
    obj.value=obj.value.replace(re,"");
  }
}

 //--  ==================== 이미지 관련 처리  ====================
/*
 * 이미지 처리 함수 (Macromedia)
 */
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];}}
}


/*
 * 이미지 처리 함수 (Macromedia)
 */
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;
}


/*
 * 이미지 처리 함수 (Macromedia)
 */
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)].nwafdocument; 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].nwafdocument);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


/*
 * 이미지 처리 함수 (Macromedia)
 */
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];}
}

/*
 * 객체의 ID값으로 해당 값을 document로 출력해준다.
 * @param embID : 객체ID
 */
ScriptCommon.printEmbed=function(embID){
    document.write(document.getElementById(embID).value);
}


/*
 * DIV 내부에 존재하는 이미지 들의 사이즈를 조정한다.
 *
 * divName : 이미지가 존재하는 div명(텍스트로 전달)
 * maxWidth : 허용할 최대 가로크기(옵션) (-1시 무시)
 * maxHeight : 허용할 최대 세로 크기(옵션) (-1시 무시)
 * hideFlag : 이미지 리사이징 동안 본문정보를 보일것인지 여부(옵션) true입력시 감췄다가 보임
 *
 * resize_images('dealerdetsright', 550);
 * resize_images('dealerdetsright', 550, 400);
 */
function resize_images(divName, maxWidth, maxHeight) {

    var isCheckWidth = (maxWidth!=undefined && maxWidth>0);
    var isCheckHeight = (maxHeight!=undefined && maxHeight>0);


    var imgList = document.getElementsByTagName('img');

    if(imgList) {

        if(!imgList.length) {
            var imgObj = imgList;
            var imgWidth = imgObj.width;
            var imgHeight = imgObj.height;

            if(isCheckWidth) {
                if(imgWidth > maxWidth) {
                    var widthRatio = maxWidth/imgWidth;
                    imgObj.width = imgWidth * widthRatio;
                    imgObj.height = imgHeight * widthRatio;
                }
            }

            imgWidth = imgObj.width;
            imgHeight = imgObj.height;

            if(isCheckHeight) {
                if(imgHeight > maxHeight) {
                    var heightRatio = maxHeight/imgHeight;
                    imgObj.height = imgHeight * heightRatio;
                    imgObj.width = imgWidth * heightRatio;
                }
            }
        } else {
            for(var i=0; i<imgList.length; i++) {
                var imgObj = imgList[i];
                var imgWidth = imgObj.width;
                var imgHeight = imgObj.height;

                if(isCheckWidth) {
                    if(imgWidth > maxWidth) {
                        var widthRatio = maxWidth/imgWidth;
                        imgObj.width = imgWidth * widthRatio;
                        imgObj.height = imgHeight * widthRatio;
                    }
                }

                imgWidth = imgObj.width;
                imgHeight = imgObj.height;

                if(isCheckHeight) {
                    if(imgHeight > maxHeight) {
                        var heightRatio = maxHeight/imgHeight;
                        imgObj.height = imgHeight * heightRatio;
                        imgObj.width = imgWidth * heightRatio;
                    }
                }
            }
        }


    }
}

/* object 위치찾기 추가 2008.05.28 by kenny */
function getTopPos(inputObj){

  var returnValue = inputObj.offsetTop + inputObj.offsetHeight;
  var parentEl = inputObj.offsetParent;
  while(parentEl.offsetParent != null){
      returnValue += parentEl.offsetTop;
      parentEl=parentEl.offsetParent;
  }
  return returnValue;
}

function getleftPos(inputObj){
  var returnValue = inputObj.offsetLeft;
  var parentEl = inputObj.offsetParent;
  while(parentEl.offsetParent != null){
      returnValue += parentEl.offsetLeft;
      parentEl=parentEl.offsetParent;
  }
  return returnValue;
}

function getCurrentTime(){
    var _day =["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
    var _month =["January","February","March","April","May","June","July","August","September","October","November","December"];
    var _dt=new Date();
    var _year=_dt.getYear();
    if(_year<1000){
       _year+=1900;
    }

    return _day[_dt.getDay()]+", "+_month[_dt.getMonth()]+" "+_dt.getDate()+", "+_year;
}

function getFormParamValue(formObj){
    var queryString = "";
    var numberElements = formObj.elements.length;
    var typeStr="";
    for(var i = 0; i < numberElements; i++){

       typeStr=formObj.elements[i].type;
       if(typeStr=="checkbox"){
         if(formObj.elements[i].checked==false) continue;
       }else if(typeStr=="radio"){
         if(formObj.elements[i].checked==false) continue;
       }else if(typeStr=="select-one"){
         if(formObj.elements[i].selected==false) continue;
       }else if(typeStr=="select-multiple"){
         if(formObj.elements[i].selected==false) continue;
       }

       if(i < numberElements-1){
           queryString += formObj.elements[i].name + "=" + encodeURIComponent(formObj.elements[i].value) + "&";
       }else{
           queryString += formObj.elements[i].name + "=" + encodeURIComponent(formObj.elements[i].value);
       }
    }
    return  queryString;
}