/**
 * form.field를 매개변수로 하여
 * 해당하는 필드에 체크된 radio버튼 혹은 checkbox가 있다면 true를
 * 없다면 false를 반환한다.
 * @param {Object} field_obj
 */
function hasChecked(field_obj) {
    if (field_obj.length > 1) {
        for (var idx = 0; idx < field_obj.length; idx++) {
            if (field_obj[idx].checked) return true;
        }
    }
    else {
        if (field_obj.checked) return true;
    }
    return false;
}
function hasCheckedValue(field_obj) {
    if (field_obj.length > 1) {
        for (var idx = 0; idx < field_obj.length; idx++) {
            if (field_obj[idx].checked) return field_obj[idx].value;
        }
    }
    else {
        if (field_obj.checked) return field_obj[idx].value;
    }
    return field_obj[idx].value;
}
function openWindow(url, name, width, height)   {
    var top  = screen.height / 2 - height / 2 - 50;
    var left = screen.width / 2 - width / 2 ;
    var win =
        open(url,
            name,
            'width=' + width + ', height=' + height + ', top=' + top +
            ', left=' + left + ', resizable=no, status=yes, toolbar=no, menubar=no, scrollbars=auto');
    win.focus();
    return win;
}

/**
 * top display
 */

function displaySubMenu(id_name,targer_menu_seq,total) {
    var target_menu = id_name+targer_menu_seq;
    for(i=1 ; i<=total ; i++) {
		if (document.getElementById(id_name + i)) {
			document.getElementById(id_name + i).style.display = "none";
		}
    }
	if (document.getElementById(target_menu)) {
		document.getElementById(target_menu).style.display = "block";
	}
}

function change_subMenuImage(id_name,targer_menu_seq,total) {
    var target_menu = id_name+targer_menu_seq;
    for(i=1 ; i<=total ; i++) {
        var re = /on\./g;
        imgName = document.getElementById(id_name+i).src;
        document.getElementById(id_name+i).src = imgName.replace(re,"off.");
    }
    imgName = document.getElementById(target_menu).src;
    var re = /off\./g;
	document.getElementById(target_menu).src = imgName.replace(re,"on.");
}

/**
 * 이미지 스왑
 */
function chImg(img) {
	imgName = img.src;
	if( imgName.indexOf("on.") > -1 ) {
		var re = /on\./g;
		img.src = imgName.replace(re,"off.");
	} else {
		var re = /off\./g;
		img.src = imgName.replace(re,"on.");
	}
}

/**
 * 마우스 좌표값을 반환한다.
 * Added by cheonboshim
 */
function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX +
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY +
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

/**
 * 입력된 HTML텍스트 내용에서 모든 HTML 태그를 삭제함
 *
 * @param   htmlText    HTML 문자열
 * @return  모든 HTML 태그를 삭제한 텍스트
 * @since   2009.04 by rhkd.
 */
function removeHtmlTag(htmlText) {
    if (htmlText==null || htmlText=='') return htmlText;

    var re1 = /[<][^>]*[>]/g;

    var newtext1 = htmlText.replace(re1, "");

    return newtext1;
}

function removeNewLine(txt) {
    if (txt==null || txt=='') return txt;

    var re1 = /\n/g;

    var newtext1 = txt.replace(re1, "");

    return newtext1;
}


/**
 * 입력된 텍스트내용에서 노출된 XSS취약점의 내용을 제거한 텍스트를 반환
 *
 * @param   htmlText    HTML 문자열
 * @return  XSS취약점의 내용을 제거한 텍스트
 * @since   2009.04 by rhkd.
 */
function filterXss(htmlText) {
    if (htmlText==null || htmlText=='') return htmlText;

    var re1 = /<script>.*<\/script>/gi;
    var re2 = /<script\s*.*\/>/gi;

    var re3 = /<iframe>.*<\/iframe>/gi;
    var re4 = /<iframe\s*.*\/>/gi;

    var re5 = /<img\s*.*src.*=.*([\.exe|\.cmd|\.bat|\.sh])([\s*|\'|\"]).*>/gi;
    var re6 = /<img\s*.*src.*=.*([\.exe|\.cmd|\.bat|\.sh])>/gi;

    //#1. remove 'script' tag and it's inner content
    var newtext1 = htmlText.replace(re1, "");
    var newtext2 = newtext1.replace(re2, "");

    //#2. remove 'iframe' tag and it's inner content
    var newtext3 = newtext2.replace(re3, "");
    var newtext4 = newtext3.replace(re4, "");

    //#3. remove 'img' tag has the wrong image source link(ex, .exe, .bat, .sh file)
    var newtext5 = newtext4.replace(re5, "");
    var newtext6 = newtext5.replace(re6, "");

    //#4. left-right trim
    var newtext0 = newtext6.replace(/^\s*/, "").replace(/\s*$/, "");

    return newtext0;
}

/**
 * 입력된 HTML텍스트내용에서 브라우저 표시에 의미없는 HTML문장을 제거함
 *
 * @param   htmlText    HTML 문자열
 * @return  브라우저 표시에 의미없는 HTML문장을 제거한 HTML 텍스트
 * @since   2009.04 by rhkd.
 */
function trimBlankHtml(htmlText) {
    if (htmlText==null || htmlText=='') return htmlText;

    var re1 = /<p>\s*<\/p>/gi;
    var re2 = /<div>\s*<\/div>/gi;
    var re3 = /<span>\s*<\/span>/gi;


    //#1. remove
    var newtext1 = htmlText.replace(re1, "");
    var newtext2 = newtext1.replace(re2, "");
    var newtext3 = newtext2.replace(re3, "");

    //#0. left-right trim
    var newtext0 = newtext3.replace(/^\s*/, "").replace(/\s*$/, "");

    return newtext0;
}

/**
 * 글쓰기의 입력된 [제목] 문자열의 값을 정제하여 반환
 *
 * @param   titleValue    글쓰기의 입력된 [제목] 문자열
 * @return  스크립트, HTML 태그등을 제거한 문자열
 * @since   2009.04 by rhkd.
 */
function getRefinedTitle(titleValue) {
    if (titleValue==null || titleValue=='') return titleValue;

    var refinedTitle = filterXss( titleValue );       //XSS 취약점관련 태그 삭제
        refinedTitle = removeHtmlTag(refinedTitle); //제목에서 HTML태그 제거
        refinedTitle = removeNewLine(refinedTitle); //제목에서 줄바꿈 문자 제거
    return refinedTitle;
}

/**
 * 글쓰기의 입력된 [내용] 문자열의 값을 정제하여 반환
 *
 * @param   contentValue    글쓰기의 입력된 [내용] 문자열
 * @return  스크립트, HTML 태그등을 제거한 문자열
 * @since   2009.04 by rhkd.
 */
function getRefinedContent(contentValue) {
    if (contentValue==null || contentValue=='') return contentValue;

    var refinedContent = filterXss(contentValue);       //XSS 취약점관련 태그 삭제
        refinedContent = trimBlankHtml(refinedContent); //표시에 의미없는 HTML문 제거
    return refinedContent;
}

/**
 * 문자열의 앞뒤 공백문자(white-space)를 제거한 문자열 반환
 */
function _trim(s) {
    return s.replace(/^\s*/, "").replace(/\s*$/, "");
}

