var CMember = Class.create(); CMember.prototype = { initialize: function(member_uid) { this.el = 'pop_member'; this.member_uid = parseInt(member_uid); //피드관련 this.feedlHandle = 0; this.feedOrderList = ''; this.sections_el = null; //피드 카테고리 엘리멘트 목록 this.sections = new Array(); //피드 카테고리 ID 저장 어레이 //드래그 관련 this.nowDragable = 0; //회원가입,로그인 관련 this.join_check_result = Array(11); this.join_check_result['join_id'] = 0; this.join_check_result['join_nick'] = 0; this.join_check_result['join_email'] = 0; this.join_check_result['join_pw'] = 0; this.join_check_result['join_pw2'] = 0; this.join_check_result['modify_nick'] = 1; this.join_check_result['modify_email'] = 1; this.join_check_result['modify_homepage'] = 1; this.join_check_result['modify_nowpw'] = 0; this.join_check_result['modify_pw'] = 0; this.join_check_result['modify_pw2'] = 0; this.code2name = Array(10); this.code2name['join_id'] = "아이디"; this.code2name['join_nick'] = "닉네임"; this.code2name['join_email'] = "이메일"; this.code2name['modify_nick'] = "닉네임"; this.code2name['modify_email'] = "이메일"; this.ban_name = Array(); this.ban_name.push('mixsh'); this.ban_name.push('믹시'); this.ban_name.push('endless9'); this.ban_name.push('운영자'); }, chkJoinForm: function(el) { el.value = el.value.strip_space(); switch(el.id) { case 'join_id': case 'join_nick': case 'modify_nick': if(el.id=='join_id' && !el.value.is_id()) { $(el.id+'_desc').className = 'err'; $(el.id+'_desc').innerHTML = '영어와 숫자만 입력가능합니다.'; this.join_check_result[el.id]=0; return; } if(el.value.bytes()>16 || el.value.bytes()<4) { $(el.id+'_desc').className = 'err'; $(el.id+'_desc').innerHTML = '최소3자 최대16자 이내로 입력해주세요.'; this.join_check_result[el.id]=0; return; } if(el.value.is_schar()) { $(el.id+'_desc').className = 'err'; $(el.id+'_desc').innerHTML = '특수문자를 사용할 수 없습니다.'; this.join_check_result[el.id]=0; return; } //금지어 사용여부 for(var i=0;i64 || el.value.length<4) { $(el.id+'_desc').show(); $(el.id+'_desc').className = 'err'; $(el.id+'_desc').innerHTML = '비밀번호는 4자이상 입력하여야 합니다.'; this.join_check_result[el.id]=0; } else { Element.hide(el.id+'_desc'); if(el.id=='join_pw') $('join_pw2_form').style.display='block'; this.join_check_result[el.id]=1; } break; case 'join_pw2': case 'modify_pw2': if(el.value != $(el.id.substring(0,el.id.length-1)).value) { $(el.id+'_desc').show(); $(el.id+'_desc').className = 'err'; $(el.id+'_desc').innerHTML = '비밀번호가 일치하지 않습니다.'; this.join_check_result[el.id]=0; } else { Element.hide(el.id+'_desc'); this.join_check_result[el.id]=1; } break; case 'modify_homepage': el.value = el.value.str_replace('http://',''); t = el.value.split('.'); if(t.length<2) { this.setFormMsg($(el.id+'_desc'),'err','홈페이지 주소가 정확하지 않습니다.'); this.join_check_result[el.id]=0; } else { this.setFormMsg($(el.id+'_desc'),'ok','유효한 홈페이지 주소 입니다.'); this.join_check_result[el.id]=1; } break; } }, submitJoinForm: function(f) { if( this.join_check_result['join_id'] && this.join_check_result['join_nick'] && this.join_check_result['join_email'] && this.join_check_result['join_pw'] && this.join_check_result['join_pw2'] ) return true; else { alert('정상적으로 작성되지 않은 내용이 있습니다.\n\n입력내용을 다시 확인 해 주세요.'); return false; } }, submitModifyForm: function(f) { if( this.join_check_result['modify_nick'] && this.join_check_result['modify_email'] && this.join_check_result['modify_homepage'] ) return true; else { alert('정상적으로 작성되지 않은 내용이 있습니다.\n\n입력내용을 다시 확인 해 주세요.'); return false; } }, submitPwModifyForm: function(f) { this.chkJoinForm($('modify_nowpw')); this.chkJoinForm($('modify_pw')); this.chkJoinForm($('modify_pw2')); if( this.join_check_result['modify_nowpw'] && this.join_check_result['modify_pw'] && this.join_check_result['modify_pw2'] ) return true; else { alert('정상적으로 작성되지 않은 내용이 있습니다.\n\n입력내용을 다시 확인 해 주세요.'); return false; } }, chkSubmitKey: function(ev) { if(ev.keyCode==13) { this.submitLoginForm($('login_form')); return false; } }, submitLoginForm: function(f) { if($F('login_id').length<2) { this.setFormMsg($('login_id_desc'),'err','아이디를 2자 이상 입력 해 주세요.'); $('login_id').focus(); return false; } else Element.hide('login_id_desc'); if($F('login_pw').length<4) { this.setFormMsg($('login_pw_desc'),'err','비밀번호를 4자 이상 입력 해 주세요.'); $('login_pw').focus(); return false; } else Element.hide('login_pw_desc'); this.chkLoginForm($('login_id'),$('login_pw')); return false; }, chkLoginForm: function(id,pass) { //ID확인 param = 'id='+$F('login_id')+'&pw='+$F('login_pw'); this.xmlRequest = new Ajax.Request( '/inc/ajax/member/chk_login_form.html', { method: 'get', parameters: param, onComplete: (function() { //존자하지 않는 아이디 if(this.xmlRequest.transport.responseText=="0") { this.setFormMsg($('login_id_desc'),'err','존재하지 않는 아이디 입니다'); $('login_id').focus(); } else if(this.xmlRequest.transport.responseText=="1") //비번틀림 { this.setFormMsg($('login_pw_desc'),'err','비밀번호가 정확하지 않습니다.'); $('login_pw').focus(); } else if(this.xmlRequest.transport.responseText=="2") { this.setFormMsg($('login_id_desc'),'err','탈퇴된 아이디입니다.'); $('login_id').focus(); } else { $('login_form').submit(); } } ).bind(this) }); }, setFormMsg: function(el,type,msg) { el.show(); el.className = type; el.innerHTML = msg; }, closePop: function(ev) { $('cover').hide(); $(this.el).hide(); }, showPop: function(goal_url,type) { //변수초기화 if(!type) type=''; if(type=='mixupcast_widget') //별도로 정의된 로그인 액션이 있을 경우 { content.showLogin(); } else { if(goal_url) { $('login_goal').value = goal_url; $('join_goal').value = goal_url; } $('cover').fill(); $('cover').show(); var ef = Effect.Appear($(this.el), {duration:0.5,beforeFinish:function(){$('login_id').focus();}}); Event.observe($('cover'), 'dblclick', member.closePop.bind(this), false); } }, showLanguagePop: function() { var tarel = $('pop_language'); if(tarel.visible()) { new Effect.Fade(tarel,{duration:0.5}); } else { new Effect.Appear(tarel,{duration:0.5}); } }, expendFeedBox: function(tar) { if(this.feedlHandle) clearTimeout(this.feedlHandle); this.feedlHandle= setTimeout((function(){ tar.style.width='300px'; this.setChildWidthByClassName($('feedarea'),'item_title',230); this.setChildWidthByClassName($('feedarea'),'box_title',235); }).bind(this),0); }, retrenchFeedBox: function(tar) { if(this.feedlHandle) clearTimeout(this.feedlHandle); this.feedlHandle= setTimeout((function(){ tar.style.width='159px'; this.setChildWidthByClassName($('feedarea'),'item_title',85); this.setChildWidthByClassName($('feedarea'),'box_title',95); }).bind(this),300); }, saveFeedSortOrder: function() { //리스트 순서 변경여부 체크 var t_order_list=''; this.sections_el.each((function(section) { t_order_list += this.getFeedOrderList(section.id); }).bind(this)); if(t_order_list!=this.feedOrderList) { //폴더별 전체 신규 포스트개수 업데이트 this.setFeedBoxCategoryCnt(); //변경내용 DB에 저장 param = 'v='+t_order_list this.xmlRequest = new Ajax.Request( '/inc/ajax/member/proc_feedorder_change.html', { method: 'post', parameters: param, onComplete: (function() { //alert(this.xmlRequest.transport.responseText); }).bind(this) }); //변경내용 변수에도 저장 this.feedOrderList = t_order_list; } }, setChildWidthByClassName: function(tarel,tarclassname,width) { tar_titel = tarel.getElementsByClassName(tarclassname); for(i=0;i순서변경기능 활성화
드래그화면 예시
"); //Effect.Appear($('pop_ondragable_desc')); setTimeout(function(){Effect.Fade($('pop_ondragable_desc'));},5000); } }, initFeedBox: function() { this.sections_el = document.getElementsByClassName('feedbox'); this.setFeedBoxCategoryCnt(); }, getFeedOrderList: function(tar) { var result = ''; var t_arr = tar.split('_'); var folder_uid = t_arr[1]; if(!folder_uid) return; result+=folder_uid+':' var feedl_el = $(tar).getElementsByClassName('item'); var t_arr2 = new Array(); feedl_el.each((function(t) { t_arr2 = t.id.split('_'); result+=t_arr2[1]+',' }).bind(this)); result+='|' return result; //getthis.feedOrderList }, setFeedBoxCategoryCnt: function() { var total_tot_cnt = 0; this.sections_el.each(function(section) { cnts = section.getElementsByClassName('item_cnt'); tot_cnt = 0; cnts.each(function(el) { //아이템별 신규 포스트갯수 얻어오기 if(el.innerHTML) tot_cnt += parseInt(el.innerHTML.stips_schar()); }); //합계 업데이트 tot_el = section.getElementsByClassName('box_cnt'); if(tot_cnt>999) { tot_el[0].update("+999"); } else if(tot_cnt>=1) { tot_el[0].update(String(tot_cnt).number_format()); } else { tot_el[0].update(''); } total_tot_cnt+=tot_cnt; }); if(total_tot_cnt) $('feedarea_new_cnt').update(total_tot_cnt); else $('feedarea_new_cnt').update(''); }, toogleFeedBoxList: function(fuid) { var tar_list_el = $('feedbox_'+fuid).getElementsByClassName('item'); var icon_el = $('feedbox_tbut_'+fuid); var change_v = ''; if(icon_el.src.indexOf('tbut_open.gif')!=-1) //닫음 { for(i=0;i  새글을 불러오는 중 입니다.
  최대 1분까지 소요됩니다.
"); //프로세스 호충 param = 'media_uid='+media_uid this.xmlRequest = new Ajax.Request( '/inc/ajax/media/proc_rescan.html', { method: 'post', parameters: param, onComplete: (function() { if(!this.xmlRequest.transport.responseText) { alert('수동 수집중 오류가 발생했습니다.'); } else { $('pop_rescan_loading').update('"'+this.xmlRequest.transport.responseText+'"글 까지 수집되었습니다'); setTimeout(function(){ Effect.Fade($('pop_rescan'), {duration:0.5, afterFinish:function(){location.href='/member/myblog/?media_uid='+media_uid;}}); },1500); } } ).bind(this) }); }, closeRescanPop: function() { $('cover').hide(); $('pop_rescan').hide(); //alert('새글을 불러오는 동안에는 중단할 수 없습니다.\n\n잠시 기다려주세요'); }, /********************************************************************************* 쪽지관련 *********************************************************************************/ submit_msg: function() { if(!this.member_uid) this.showPop(); $('recipient').value = $('recipient').value.trim(); if($('recipient').value.bytes()<4) { alert('받을사람 닉네임을 정확히 입력해주세요'); $('recipient').focus(); return false; } $('message').value = $('message').value.trim(); if($('message').value.bytes()<1) { alert('내용을 입력해주세요.'); $('message').focus(); return false; } }, change_msg_friend: function(el) { if(!this.member_uid) this.showPop(); if(el.value=='0') $('recipient').focus(); else $('recipient').value=el.value; }, openpop_msg: function(type,num) { if(!this.member_uid) { this.showPop(); return; } pop_width=500; pop_height=350; switch(type) { case 'inbox': $('msgbox_'+num).addClassName('msgbox_read'); popobj = window.open('/myhome/msg/read.html?msg_uid='+num,'msgpop_'+num,'toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width='+pop_width+',height='+pop_height); break; case 'sendbox': popobj = window.open('/myhome/msg/read.html?msg_uid='+num,'msgpop_'+num,'toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width='+pop_width+',height='+pop_height); break; case 'newmsg': popobj = window.open('/myhome/msg/read.html?msg_uid='+num,'msgpop_'+num,'toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width='+pop_width+',height='+pop_height); break; case 'write': if(num==this.member_uid) { alert('※자기 자신에게는 쪽지를 보낼 수 없습니다.'); return; } popobj = window.open('/myhome/msg/write_pop.html?recipient_uid='+num,'writepop_'+num,'toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width='+pop_width+',height='+pop_height); break; } return popobj; }, delete_msg: function(msg_uid) { if(!this.member_uid) this.showPop(); if(!msg_uid) return; if(confirm('이 쪽지를 삭제하시겠습니까?\n\n삭제된 쪽지는 복구되지 않습니다.')) { location.href='/myhome/msg/del.html?msg_uid='+msg_uid; } }, /**************************************************************************************** 친구관련 ****************************************************************************************/ request_friend: function(type,friend_uid,el,feedback) { if(!this.member_uid) { if(feedback && (feedback.type=='mymixsh_widget' || feedback.type=='mymixsh_widgetlist') ) { content.showLogin(); } else { member.showPop(); } return; } if(friend_uid==this.member_uid) { alert('※본인에게는 소식듣기 신청을 하실 수 없습니다.'); return; } el.update(''); el.addClassName('loading'); //상태 확인 var rowTemplate = new Template("type=#{type}&friend_uid=#{friend_uid}"); param = rowTemplate.evaluate({ type : type, friend_uid : friend_uid }); this.xmlRequest = new Ajax.Request( '/inc/ajax/member/request_friend.html', { method: 'post', parameters: param, onComplete: (function(t) { if(t.responseText=='-9') { alert('처리중 오류가 발생했습니다'); return; } jv = t.responseText.evalJSON(); setTimeout((function(){ if(feedback) { //var finish_feedback = function(){}; switch(feedback.type) { case 'leftmenu': feedback_el = $('my_left').select('.but_feedback')[0]; feedback_msg_add = '지금부터 '+feedback['nick']+'님의 소식을 듣습니다. 지금 확인하기'; buttext = el; break; case 'mediapage': feedback_el = $('rightbox').select('.but_feedback')[0]; feedback_msg_add = '지금부터 '+feedback['nick']+'님의 소식을 듣습니다. 지금 확인하기'; buttext = el; break; case 'list': feedback_el = $('peoplelist').select('.but_feedback_'+feedback['uid'])[0]; feedback_msg_add = '지금부터 '+feedback['nick']+'님의 소식을 듣습니다. 지금 확인하기'; buttext = el; break; case 'mymixsh_widget_list': feedback_el = $('peoplelist').select('.but_feedback_'+feedback['uid'])[0]; feedback_msg_add = '지금부터 '+feedback['nick']+'님의 소식을 듣습니다. 지금 확인하기'; el.update('
'); buttext = el.select('.buttext')[0]; setTimeout(function(){ content.scroll_height = $('cbody').scrollHeight-$('cbody').getHeight(); content.scroll_term = Math.ceil(content.scroll_height/content.scroll_step); },500); break; case 'mymixsh_widget': feedback_el = $('actions_feedback'); feedback_msg_add = '지금부터 '+feedback['nick']+'님의 소식을 듣습니다. 지금 확인하기'; el.update('
'); buttext = el.select('.buttext')[0]; setTimeout(function(){ content.frameInit(); },500); break; } switch(type) { case 'add': feedback_el.update(feedback_msg_add); feedback_el.setStyle({ backgroundImage:'url(http://static.mixsh.net/img/icon_ok3.gif)' }); if(!feedback_el.visible()) Effect.BlindDown(feedback_el, {duration:0.5,beforeFinish:function(){}}); break; case 'cancle': feedback_el.update('지금부터 '+feedback['nick']+'님의 소식을 듣지 않습니다.'); feedback_el.setStyle({ backgroundImage:'url(http://static.mixsh.net/img/icon_stop.gif)' }); if(!feedback_el.visible()) Effect.BlindDown(feedback_el, {duration:0.5,beforeFinish:function(){}}); break; } switch(type) { case 'add': buttext.update('듣기취소'); el.removeClassName('loading'); buttext.removeClassName('fadd'); buttext.addClassName('fcancle'); if($('myhome_uid') && $('myhome_uid').value==friend_uid) $('people_talk').update(parseInt($('people_talk').innerHTML)+1); el.onclick= function(){ member.request_friend('cancle',friend_uid,el,feedback); return false; }; break; case 'cancle': buttext.update('소식듣기'); el.removeClassName('loading'); buttext.removeClassName('fcancle'); buttext.addClassName('fadd'); if($('myhome_uid') && $('myhome_uid').value==friend_uid) $('people_talk').update(parseInt($('people_talk').innerHTML)-1); el.onclick= function(){ member.request_friend('add',friend_uid,el,feedback); return false; }; break; } } }).bind(this),300); }).bind(this) }); }, /**************************************************************************************** 초대관련 ****************************************************************************************/ onfocus_invite_mail: function(t) { if(t.value=='주소입력후 엔터를 눌러주세요.') t.value=''; }, onblur_invite_mail: function(t) { if(t.value=='') t.value='주소입력후 엔터를 눌러주세요.'; }, submit_invite_mail: function(el) { el_msg = el.select('.cmsg')[0]; if(!el.invite_email.value.is_email()) { el_msg.update('이메일주소가 정확하지 않습니다'); el_msg.show(); new Effect.Pulsate(el_msg,{pulses: 3,duration:1.5,afterFinish:(function(){}).bind(this)}); return false; } //중복여부 체크 param = 'invite_email='+el.invite_email.value; this.xmlRequest = new Ajax.Request( '/inc/ajax/member/invite/send.html', { method: 'get', parameters: param, onComplete: (function(t) { jv = t.responseText.evalJSON(); switch(jv[0]) { case -1: msg = '초대는 로그인 후 가능합니다.'; break; case -2: msg = el.invite_email.value+"메일을 사용하시는 분은 이미 믹시 회원입니다. 홈페이지 바로가기"; break; case -3: msg = jv[1].date+' 에 이미 초대하셨습니다.'; break; case -4: msg = el.invite_email.value+'메일을 사용하시는 분은 모든 초대를 거부하고 있습니다.'; break; case 1: msg = '초대장이 발송되었습니다. 상대방이 초대에 응하면 자동으로 서로의 소식을 듣도록 설정됩니다.'; break; } el_msg.update(msg); el_msg.show(); new Effect.Pulsate(el_msg,{pulses: 3,duration:1.5,afterFinish:(function(){ }).bind(this)}); el.invite_email.value = ''; } ).bind(this) }); //초대장이 발송되었습니다. 상대방이 초대에 응하면 자동으로 친구로 추가되고 내용을 메일로 알려드립니다. return false; }, blank: function() { } }