if (typeof(SIDEVIEW_JS) === 'undefined') // 한번만 실행
{
if (typeof is_member === 'undefined') {
alert('is_member 변수가 선언되지 않았습니다.');
}
var SIDEVIEW_JS = true;
// 아래의 소스코드는 daum.net 카페의 자바스크립트를 참고하였습니다.
// 회원이름 클릭시 회원정보등을 보여주는 레이어
function insertHead(name, text, evt) {
var idx = this.heads.length;
var row = new SideViewRow(-idx, name, text, evt);
this.heads[idx] = row;
return row;
}
function insertTail(name, evt) {
var idx = this.tails.length;
var row = new SideViewRow(idx, name, evt);
this.tails[idx] = row;
return row;
}
function SideViewRow(idx, name, onclickEvent) {
this.idx = idx;
this.name = name;
this.onclickEvent = onclickEvent;
this.renderRow = renderRow;
this.isVisible = true;
this.isDim = false;
}
function renderRow() {
if ( ! this.isVisible)
return '';
var str = '
' + this.onclickEvent + ' |
';
return str;
}
function getSideView(curObj, userid) {
clickAreaCheck = true;
$.ajax({
url : cb_url + '/profile/sideview/' + userid,
type : 'get',
dataType : 'json',
success : function(data) {
if (data.error) {
alert(data.error);
return false;
} else if (data.success) {
showSideView(curObj, userid, data.name, data.homepage, data.note, data.email, data.profile, data.following, data.memid);
}
}
});
}
function showSideView(curObj, userid, name, homepage, note, email, profile, following, memid) {
var sideView = new SideView('nameContextMenu', curObj, userid, name, homepage, note, email, profile, following, memid);
sideView.showLayer();
}
function SideView(targetObj, curObj, userid, name, homepage, note, email, profile, following, memid) {
this.targetObj = targetObj;
this.curObj = curObj;
this.userid = userid;
name = name.replace(/…/g,"");
this.name = name;
this.homepage = homepage;
this.note = note;
this.email = email;
this.profile = profile;
this.following = following;
this.showLayer = showLayer;
this.makeNameContextMenus = makeNameContextMenus;
this.heads = new Array();
this.insertHead = insertHead;
this.tails = new Array();
this.insertTail = insertTail;
this.getRow = getRow;
this.hideRow = hideRow;
this.dimRow = dimRow;
// 회원이라면 // (비회원의 경우 검색 없음)
if (is_member) {
if (userid) {
// 쪽지보내기
if (note == '1')
this.insertTail('note', '쪽지보내기');
else if (note == '3')
this.insertTail('note', '쪽지보내기');
else if (note == '2')
this.insertTail('note', '쪽지보내기');
// 친구등록
if (following == '1')
this.insertTail('follow', '친구해제');
else
this.insertTail('follow', '친구등록');
// 메일보내기
if (email == '1')
this.insertTail('email', '메일보내기');
else if (email == '3')
this.insertTail('email', '메일보내기');
else if (email == '2')
this.insertTail('email', '메일보내기');
// 홈페이지
if (homepage == '1')
this.insertTail('homepage', '홈페이지');
// 자기소개
if (profile == '1')
this.insertTail('profile', '프로필');
else if (profile == '3')
this.insertTail('profile', '프로필');
else if (profile == '2')
this.insertTail('profile', '프로필');
}
}
// 게시판테이블 아이디가 넘어왔을 경우
if (cb_board) {
if (userid) // 회원일 경우 아이디로 검색
this.insertTail('userid', '아이디로 검색');
else // 비회원일 경우 이름으로 검색
this.insertTail('name', '이름으로 검색');
}
// 최고관리자일 경우
if (is_admin == 'super') {
// 회원정보변경
if (userid)
this.insertTail('modify', '회원정보변경');
// 포인트내역
if (userid)
this.insertTail('point', '포인트내역');
if (userid)
this.insertTail('new', '전체게시물');
if (userid)
this.insertTail('new', '전체댓글');
}
}
function showLayer() {
var oSideViewLayer = document.getElementById(this.targetObj);
var oBody = document.body;
if (oSideViewLayer === null) {
oSideViewLayer = document.createElement('DIV');
oSideViewLayer.id = this.targetObj;
oSideViewLayer.style.position = 'absolute';
oBody.appendChild(oSideViewLayer);
}
oSideViewLayer.innerHTML = this.makeNameContextMenus();
if (getAbsoluteTop(this.curObj) + this.curObj.offsetHeight + oSideViewLayer.scrollHeight + 5 > oBody.scrollHeight)
oSideViewLayer.style.top = (getAbsoluteTop(this.curObj) - oSideViewLayer.scrollHeight) + 'px';
else
oSideViewLayer.style.top = (getAbsoluteTop(this.curObj) + this.curObj.offsetHeight) + 'px';
oSideViewLayer.style.left = (getAbsoluteLeft(this.curObj) - this.curObj.offsetWidth + 14) + 'px';
divDisplay(this.targetObj, 'block');
selectBoxHidden(this.targetObj);
}
function getAbsoluteTop(oNode) {
var oCurrentNode=oNode;
var iTop = 0;
while(oCurrentNode.tagName != 'BODY') {
iTop+=oCurrentNode.offsetTop - oCurrentNode.scrollTop;
oCurrentNode=oCurrentNode.offsetParent;
}
return iTop;
}
function getAbsoluteLeft(oNode) {
var oCurrentNode=oNode;
var iLeft = 0;
iLeft+=oCurrentNode.offsetWidth;
while(oCurrentNode.tagName != 'BODY') {
iLeft+=oCurrentNode.offsetLeft;
oCurrentNode=oCurrentNode.offsetParent;
}
return iLeft;
}
function makeNameContextMenus() {
var str = '';
var i = 0;
for (i=this.heads.length - 1; i >= 0; i--)
str += this.heads[i].renderRow();
var j = 0;
for (j = 0; j < this.tails.length; j++)
str += this.tails[j].renderRow();
str += '
';
return str;
}
function getRow(name) {
var i = 0;
var row = null;
for (i = 0; i
function selectBoxHidden(layer_id) {
//var ly = eval(layer_id);
var ly = document.getElementById(layer_id);
// 레이어 좌표
var ly_left = ly.offsetLeft;
var ly_top = ly.offsetTop;
var ly_right = ly.offsetLeft + ly.offsetWidth;
var ly_bottom = ly.offsetTop + ly.offsetHeight;
// 셀렉트박스의 좌표
var el;
for (i = 0; i < document.forms.length; i++) {
for (k = 0; k < document.forms[i].length; k++) {
el = document.forms[i].elements[k];
if (el.type == 'select-one') {
var el_left = el_top = 0;
var obj = el;
if (obj.offsetParent) {
while (obj.offsetParent) {
el_left += obj.offsetLeft;
el_top += obj.offsetTop;
obj = obj.offsetParent;
}
}
el_left += el.clientLeft;
el_top += el.clientTop;
el_right = el_left + el.clientWidth;
el_bottom = el_top + el.clientHeight;
// 좌표를 따져 레이어가 셀렉트 박스를 침범했으면 셀렉트 박스를 hidden 시킴
if ( (el_left >= ly_left && el_top >= ly_top && el_left <= ly_right && el_top <= ly_bottom) ||
(el_right >= ly_left && el_right <= ly_right && el_top >= ly_top && el_top <= ly_bottom) ||
(el_left >= ly_left && el_bottom >= ly_top && el_right <= ly_right && el_bottom <= ly_bottom) ||
(el_left >= ly_left && el_left <= ly_right && el_bottom >= ly_top && el_bottom <= ly_bottom) ||
(el_top <= ly_bottom && el_left <= ly_left && el_right >= ly_right)
)
el.style.visibility = 'hidden';
}
}
}
}
// 감추어진 셀렉트 박스를 모두 보이게 함
function selectBoxVisible() {
for (i = 0; i