<scRIPT language=javascript>
/****************************************************************************************
* ./lib/js/bbs.js
/****************************************************************************************/
/*
* KimsBoard Main script
*/
//요청된 Url(쿼리스트링 제외)
function getThisFile()
{
//var QuerySplit = location.href.split('?');
//return QuerySplit[0];
return './bbs.php';
}
//요청된 파라미터의 Value
function getUriString(param)
{
return eval("document.DataForm." + param).value;
}
//공통 URL (제어파라미터 query,uid,p 제외 ; 파라미터값은 getUriString('파리미터') )
function getThisUrl()
{
var d = document.DataForm;
var table = d.table.value;
var query = d.query.value;
var p = d.p.value;
var uid = d.uid.value;
var where = d.where.value;
var keyword = d.keyword.value;
var search_step = d.search_step.value;
var search_type = d.search_type.value;
var category = d.category.value;
var sort = d.sort.value;
var orderby = d.orderby.value;
var grecnum = d.grecnum.value;
var cqurl = getThisFile();
cqurl += table ? '?table=' + table : '';
cqurl += where ? '&where=' + where : '';
cqurl += keyword ? '&keyword=' + keyword : '';
cqurl += search_step? '&search_step=' + search_step : '';
cqurl += search_type? '&search_type=' + search_type : '';
cqurl += category ? '&category=' + category : '';
cqurl += sort ? '&sort=' + sort : '';
cqurl += orderby ? '&orderby=' + orderby : '';
cqurl += grecnum ? '&grecnum=' + grecnum : '';
if (where && keyword)
{
cqurl += '&search_sql=' + getSearchSql(where , keyword);
}
return cqurl;
}
//정렬Url (필드명 ASC,DESC지정)
function getSort(field)
{
var d = document.DataForm;
if (d.sort.value == field)
{
if (d.orderby.value == "DESC")
{
d.orderby.value = "";
}
else {
d.orderby.value = "DESC";
}
}
else {
d.sort.value = field;
d.orderby.value = "DESC";
}
location.href = getThisUrl() + '&p=' + getUriString('p');
}
//마지막페이지수
function LastPage(p)
{
return document.getElementById('LastPage').value;
}
//글보기
function ViewArticle(uid,secret,dbid,tbl,win,e)
{
var url = getThisUrl();
var table = tbl != '' ? tbl : getUriString('table');
if(secret != '')
{
var CookieSecret = document.getElementById('CookieSecret').value;
var isRoot = document.getElementById('isRoot').value;
var isAdmin = document.getElementById('isAdmin').value;
var mbid = document.getElementById('mbid').value;
if(CookieSecret.indexOf(table + '_' + uid + '_' ) == -1)
{
if (mbid == '' || (mbid != '' && mbid != dbid))
{
if (isRoot == '0' && isAdmin == '0')
{
if (tbl != '') document.DataForm.table.value = tbl;
getPassLayer('secret',isRoot,isAdmin,mbid,dbid,uid,0,e);
return false;
}
}
}
}
if (win != '_win')
{
location.href = url + '&query=view&uid=' + uid + '&p=' + getUriString('p');
}
else {
var win = './bbs.php?table='+table+'&action=newwin&uid=' + uid;
window.open(win , 'output_win','width=650,height=600,scrollbars=yes');
}
}
//목록으로
function getListPage()
{
location.href = getThisUrl() + '&p=' + getUriString('p');
}
//일반글쓰기
function getWritePage()
{
location.href = getThisUrl() + '&query=write';
}
//답변쓰기
function getReplyPage(uid)
{
location.href = getThisUrl() + '&query=write&write_type=reply&uid=' + uid + '&p=' + getUriString('p');
}
//패스워드체크 레이어, 수정/삭제
function getPassLayer(que,isRoot,isAdmin,mbid,dbid,uid,ruid,e)
{
if (isRoot != '0' || isAdmin != '0' || (mbid != '' && mbid == dbid))
{
if (que == 'modify')
{
location.href = getThisUrl() + '&query=write&write_type=modify&uid=' + uid + '&p=' + getUriString('p');
}
if (que == 'delete')
{
if(confirm('정말로 삭제하시겠습니까? '))
{
location.href = getThisUrl() + '&action=delete&uid=' + uid + '&p=' + getUriString('p');
}
}
return false;
}
if(!x) var x = e.pageX ? e.pageX : document.body.scrollLeft+event.clientX;
if(!y) var y = e.pageY ? e.pageY : document.body.scrollTop+event.clientY;
var l = document.getElementById('PassCheckLayer');
var f = document.pass_check_form;
var t = document.getElementById('PwLayTitle');
l.style.display = 'block';
l.style.left = x - 80;
l.style.top = y + 20;
f.table.value = getUriString('table');
f.action.value = que;
f.uid.value = uid;
f.ruid.value = ruid;
f.p.value = getUriString('p');
if (que == 'delete')
{
t.innerHTML = "게시물을 삭제합니다..";
f.Nparam.value = getThisUrl() + '&p=' + getUriString('p');
}
if (que == 'modify')
{
t.innerHTML = "게시물을 수정합니다..";
f.Nparam.value = getThisUrl() + '&query=write&write_type=modify&p=' + getUriString('p') + '&uid=' + uid;
}
if (que == 'secret')
{
t.innerHTML = "비공개 게시물입니다..";
f.Nparam.value = getThisUrl() + '&query=view&p=' + getUriString('p') + '&uid=' + uid;
}
if (que == 'cdelete')
{
t.innerHTML = "코멘트를 삭제합니다..";
f.Nparam.value = getThisUrl() + '&query=view&p=' + getUriString('p') + '&uid=' + uid;
}
f.COMP_PASS.focus();
}
//검색SQL
function getSearchSql(where , keyword)
{
var i;
var SQL = "";
var search_type = document.DataForm.search_type.value;
search_type = search_type == 'and' ? 'AND' : 'OR';
if (keyword.indexOf(' ') == -1 && keyword.indexOf(',') == -1)
{
if (where == "ALL") return "BB_NAME LIKE '%"+keyword+"%' "+search_type+" BB_SUBJECT LIKE '%"+keyword+"%' "+search_type+" BB_CONTENT LIKE '%"+keyword+"%'";
else return where + " LIKE '%"+keyword+"%'";
}
else {
keyword = keyword.replace(',' , ' ')
var key_exp = keyword.split(' ');
if (where == "ALL")
{
for(i = 0; i < key_exp.length - 1; i++)
{
SQL += "(BB_NAME LIKE '%"+key_exp[i]+"%' "+search_type+" BB_SUBJECT LIKE '%"+key_exp[i]+"%' "+search_type+" BB_CONTENT LIKE '%"+key_exp[i]+"%') "+search_type+" ";
}
SQL += "(BB_NAME LIKE '%"+key_exp[i]+"%' "+search_type+" BB_SUBJECT LIKE '%"+key_exp[i]+"%' "+search_type+" BB_CONTENT LIKE '%"+key_exp[i]+"%')";
}
else {
for(i = 0; i < key_exp.length - 1; i++)
{
SQL += where + " LIKE '%"+key_exp[i]+"%' "+search_type+" ";
}
SQL += where + " LIKE '%"+key_exp[i]+"%'";
}
return SQL;
}
}
//검색어체크
function getSearchStart()
{
if(getUriString('where') && getUriString('keyword'))
{
getKeywordHighLight();
}
}
//검색결과 하이라이트
function getKeywordHighLight()
{
var where = getUriString('where');
var keyword = getUriString('keyword');
var r,i,s=document.selection.createRange().text;
if(!where || !keyword)
{
return false;
}
keyword = keyword.replace(',' , ' ');
var keyexp = keyword.split(' ');
for ( var j = 0; j < keyexp.length; j++)
{
r = document.body.createTextRange();
for(i = 0; r.findText(keyexp[j]); i++)
{
r.execCommand('ForeColor','','#FF0000');
r.execCommand('BackColor','','#FFFF00');
r.collapse(false);
}
}
}
//카테고리셀렉트
function getCategoryForm(use , sbj , opt , cat , event)
{
if (use)
{
var select = "";
var option = opt.split(',');
select += "";
select += "";
document.write(select);
}
else {
document.write("");
}
}
//카테고리이벤트
function getCategoryEvent(obj)
{
location.href = getThisUrl().replace('category=' + getUriString('category') + '&' , '') + '&category=' + obj.value;
}
//비공개체크박스
function getSecretCheck(use , que)
{
if(use == 'checked')
{
document.write("관리자에게만 공개합니다");
}
else {
document.write("");
}
}
//답변메일발송체크박스
function getRemailCheck(use,email,type)
{
if (use && email && type == 'reply')
{
document.write("");
document.write("이메일로 답변발송");
}
}
//등록인선택셀렉트
function getIsRootSelect(isRoot,v_LogId)
{
if (isRoot != '0' && v_LogId != '')
{
document.write("");
if(navigator.userAgent.indexOf('Opera') == -1 && navigator.userAgent.indexOf('MSIE') != -1)
{
getSelectToLayer(document.getElementById('writer_select'),150,'');
}
}
}
//비밀번호 입력폼(글쓰기)
function getPasswdInput(wType,secret,pass,name)
{
var passinput = "";
if (wType)
{
if (wType == 'reply')
{
//답변
if (secret == 'checked')
{
passinput = "";
}
else {
passinput = "";
}
}
else {
//수정
passinput = "";
}
}
else {
//일반글
passinput = "";
}
document.write(passinput);
}
//이름,패스워드 입력폼(코멘트)
function getNameInputCmt(mbid,isroot)
{
var f = document.CommentForm;
var wperm = f.write_perm.value;
var yNull = "";
var nNull = "";
if (mbid != '' || isroot != '0')
{
if (wperm != '0')
{
document.write(nNull);
}
else {
document.write(yNull);
}
}
else {
if (wperm != '0')
{
document.write(" ");
document.write(" ");
}
else {
document.write(yNull);
}
}
}
//코멘트갯수
function getCommentNum(num)
{
if (num)
{
document.write("("+num+"개)");
}
}
//코멘트삭제 권한
function getCommentDeletePerm(isRoot,isAdmin,v_LogId,skin,uid,rp_id,ruid)
{
var pass = (isRoot != '0' || isAdmin != '0' || (v_LogId != '' && v_LogId == rp_id)) ? 1 : 0;
document.write("");
}
//코멘트삭제
function doCommentDelete(uid,ruid,pass,e)
{
if (pass == 1)
{
if (!confirm('\n정말로 삭제하시겠습니까? \n'))
{
return false;
}
var f = document.pass_check_form;
f.table.value = getUriString('table');
f.action.value = 'cdelete';
f.uid.value = uid;
f.ruid.value = ruid;
f.p.value = getUriString('p');
f.Nparam.value = getThisUrl() + '&query=view&p=' + getUriString('p') + '&uid=' + uid;
f.submit();
}
else {
getPassLayer('cdelete',0,0,'','',uid,ruid,e);
return false;
}
}
//이모션아이콘
function getEmotionIcon(color)
{
var icon = "";
icon += "
";
icon += "
";
for(var i = 1; i < 19; i++)
{
icon += "
";
}
icon += "
";
icon += "
";
document.write(icon);
}
//이모션선택
function getSelectEm(g,color)
{
for(var i = 1; i < 19; i++)
{
if(i == g)
{
document.getElementById('emotion_td_' + i).style.border = '1 solid gray';
document.getElementById('emotion_td_' + i).style.background = '#ffffff';
document.getElementById('emotion_img_' + i).style.filter = 'none';
document.CommentForm.RP_EMOTION.value = i;
}
else {
document.getElementById('emotion_td_' + i).style.border = '1 solid '+color;
document.getElementById('emotion_td_' + i).style.background = color;
document.getElementById('emotion_img_' + i).style.filter = 'gray()';
}
}
}
//코멘트필드 리사이즈
function CommentLayResize(que)
{
var area = document.getElementById('CommentTextAreaLay');
var heit = parseInt(area.style.height.replace('px',''));
if (que == '-')
{
if (heit - 100 >= 60) area.style.height = heit - 100;
}
else if (que == '+')
{
if (heit + 100 <= 600) area.style.height = heit + 100;
}
else {
area.style.height = 60;
}
}
//첨부파일
function LayerUpfile(enable,files,table,uid,where,colnum,type)
{
if(enable)
{
var Layer_Tag = "";
var Tmp_FileNum = files.split(';');
if (Tmp_FileNum.length > 1)
{
Layer_Tag += "<IFRAME NAME='TmpFrameForDownload' WIDTH=0 HEIGHT=0 FRAMEBORDER=0 SCROLLING=0></IFRAME>";
Layer_Tag += "
";
Layer_Tag += "
";
Layer_Tag += "
";
for (var i = 0; i < Tmp_FileNum.length; i++)
{
if (Tmp_FileNum[i] == "") continue;
var fname_arr = getFileName(Tmp_FileNum[i]).split('=');
if(fname_arr[1])
{
Layer_Tag += "