﻿/* Context Box.js v 1.0 
 * author : yeongun 
 * last update: 2009.01.05 
 * (c) 2008 ncsoft UIDevelopment Team 
 * edit by bluesky 2009.03.02 */
 var contextActionUrlGetGlobalNickname = "/common/inc/message/get_global_nickname";
 var contextActionUrlGetGlobalAccountNo = "/common/inc/message/get_global_accountno";
 
function createContext(contextId,classId) {
	document.observe('click', function(event){
	var targetElement = event.findElement('a[rel^=context]');
	var createScript = Class.create({   
		initialize: function(text,func,param,style) {     
			this.text = text;
			this.func = func;
			this.param = param;
			this.style = style;
		},
		toHTML: function() {
			return '<li class="#{style}"><a href="##{text}" onclick="#{func}(#{param})">#{text}</a></li>'.interpolate(this);
		}
	});
	var createUnlinked = Class.create({
		initialize: function(text,style) {     
			this.text = text;
			this.style = style;
		},
		toHTML: function() {
			return '<li class="#{style}">#{text}</li>'.interpolate(this);
		}
	});
	if (targetElement) {
		targetIdx=parseInt(targetElement.rel.substr(8,8))-1;
		// start 2009.1.5 Aion - Legion Quick Link
		if (targetIdx==1) {
			var parameters;
			parameters=targetElement.rel.split(',');
			openAzit(parseInt(parameters[1]),parseInt(parameters[2]));
			return;
		} // end 2009.1.5 Aion - Legion Quick Link
		var linkValues=Object.values(contextMenu[targetIdx]);
		var params=targetElement.rel.substr(10,targetElement.rel.length-11).split(',');
		var listValues='';
		var textValues,classValue;
		for (var i=1;i<linkValues.length;i++) {
			var param=function() {
				var rtnData='';
				if (!linkValues[i][2]) return 0;
				if (linkValues[i][2].length==0) return 0;
				for (var k=0;k<linkValues[i][2].length;k++)	{					
					rtnData+='\'' + params[parseInt(linkValues[i][2][k])-1] + '\','
				}
				rtnData=rtnData.substr(0,rtnData.length-1);
				return rtnData;
			};
			classValue=classId + i;
			if (linkValues[i][1]) textValues=new createScript(linkValues[i][0],linkValues[i][1],param(),classValue);
			else textValues=new createUnlinked(linkValues[i][0],classValue);
			listValues+=Object.toHTML(textValues);
		}
		$(contextId).className=linkValues[0];
		$(contextId).update('<div class=\"context_inner\"><ul>'+ listValues +'</ul></div>').setStyle({
			display:'block',
			top:Event.pointerY(event)+'px',
			left:Event.pointerX(event)+'px'
		});
	}
	else {
		if ($(contextId).getStyle('display')!='none') $(contextId).setStyle({display:'none'});
	}		

});
}

function openAzit (serverID, legionID) {
	if (serverID != "" && legionID != "") {
		location.href = "/info/search/search?serverID="+serverID+"&guildID="+legionID
/* 기존 새창
		var azitUrl = "http://azit.plaync.co.kr/azitapi/redirectAzitPage?gameCode=27&serverID="+serverID+"&clanID="+legionID
		window.open(azitUrl, "azit_new", "");
*/
	} else alert('沒有伺服器或軍團情報. ');
}
function viewLegionInfo (serverID, legionID) {
	if (serverID != "" && legionID != "") location.href = "/info/search/search?serverID=" + serverID + "&guildID=" + legionID
	else alert('沒有伺服器或軍團情報. ');
}
function viewCharacterInfo (serverID, charID) {
	if (serverID != "" && charID != "") location.href = "/info/search/search?serverID=" + serverID + "&charID=" + charID
	else alert('沒有伺服器或角色情報. ');
}
function viewCharacterArticle (uid, charName, serviceId) {
	if (typeof serviceId == "undefined" || serviceId == "undefined" || serviceId == 13) {
		serviceId = 13;
		viewCharacterArticle2(uid, charName, serviceId);
	} else  getAjaxGlobalAccountNo(uid, charName, serviceId, viewCharacterArticle2, null);
}

function viewCharacterArticle2(uid, charName, serviceId) {
	if (uid != "" && charName != "") location.href = encodeURI("/board/user/user_list?uid=" + uid + "&charName=" + charName);
	else alert('沒有其他的文字情報. ');
}

function requestSendMessage (uid, charName, serviceId) {
	if (uid != "") {
		if (typeof serviceId == "undefined" || serviceId == "undefined" || serviceId == 13) {
			serviceId = 13;
			getAjaxContentBoxReturnByMethod(contextActionUrlGetGlobalNickname, uid, charName, serviceId, goMessage);
		}
		else getAjaxGlobalAccountNo(uid, charName, serviceId, getAjaxContentBoxReturnByMethod, goMessage);
	}
	else alert('쪽지 전송에 필요한 정보가 없습니다.');
}

function requestAddFriend(uid, charName, serviceId) {
	if (uid != "") {
		if (typeof serviceId == "undefined" || serviceId == "undefined" || serviceId == 13) {
			serviceId = 13;
			getAjaxContentBoxReturnByMethod(contextActionUrlGetGlobalNickname, uid, charName, serviceId, addFriend);
		}
		else getAjaxGlobalAccountNo(uid, charName, serviceId, getAjaxContentBoxReturnByMethod, addFriend)
	}
	else alert('쪽지 전송에 필요한 정보가 없습니다.');
}

function addFriend (nickName, uid, serviceId) {
	if(nickName == '[RESULT_FAIL]') alert('친구 추가 대상자를 찾을수 없습니다.');
	else if(nickName == '[SELF_ID]') {
		var property = "width=350,height=311,toolbars=no,menubars=no,scrollbars=no";
		var url = "http://message.plaync.co.kr/main/?listType=request/list";
		window.open(url, "newNotePopup", property);
	}else{
		var property = "width=350,height=250,toolbars=no,menubars=no,scrollbars=no";
		window.open("about:blank", "addFriendNew", property);
		var form = document.messageForm;
		form.gameCode.value = "13";
		form.user_nickname.value = nickName;
		form.target = "addFriendNew";
		form.action = "http://message.plaync.co.kr/friends/addFriend"
		form.submit(); 
	}
}

function goMessage(nickName, uid, serviceId) {
	if(nickName == '[RESULT_FAIL]') alert('쪽지 전송 대상자를 찾을수 없습니다.');
	else if(nickName == '[SELF_ID]') {
		var property = "width=350,height=311,toolbars=no,menubars=no,scrollbars=no";
		var url = "http://message.plaync.co.kr/main/";
		window.open(url, "newNotePopup", property);
	} else {
		if (uid != "" && nickName != "") {
			var property = "width=350,height=311,toolbars=no,menubars=no,scrollbars=no";
			window.open("about:blank", "newNotePopup", property);	
			var form = document.messageForm;
			form.siteID.value = 27;
			form.fNickNameInfo.value = nickName+","+nickName+","+uid+",13";
			form.target = "newNotePopup";
			form.action = "http://message.plaync.co.kr/main/?listType=friendSendnote"
			form.submit();
		}
		else alert('쪽지 전송에 필요한 정보가 없습니다.');
	}
}

function getAjaxContentBoxReturnByMethod(url, uid, charName, serviceId, returnMethod) {
	new Ajax.Request(url , {
		asynchronous : false,
		method: 'POST', 
		encoding: 'UTF-8', 
		parameters: "uid="+uid, 
		onSuccess: function (request) {
			returnMethod(request.responseText, uid, serviceId); 
		},
		onFail: function (transport) {
			alert('친구 추가에 문제가 발생하였습니다.');
			return "";
		}
	});	
}
function getAjaxGlobalAccountNo(uid, charName, serviceId, returnMethod, returnMethod2) {
	new Ajax.Request(contextActionUrlGetGlobalAccountNo , {
		asynchronous : false,
		method: 'POST', 
		encoding: 'UTF-8', 
		parameters: "uid="+uid, 
		onSuccess: function (request) {
			if (returnMethod2==null)
				returnMethod(request.responseText, charName, serviceId);
			else {
				returnMethod(contextActionUrlGetGlobalNickname, request.responseText, charName, serviceId, returnMethod2);
			} 
		},
		onFail: function (transport) {
			alert('친구 추가에 문제가 발생하였습니다.');
			return "";
		}
	});
}

// param1: serverID, param2: charID, param3: uid, param4: characterName, param5: nickname, param6 : serviceCode(13, 27)
var contextMenu=[
	{
		className:'l_character',
		menu1:['角色情報','viewCharacterInfo',[1,2]],
		menu2:['發表過的文章','viewCharacterArticle',[3,4,5]]//,
		//menu3:['傳送訊息','requestSendMessage',[3,4,5]],
		//menu4:['加入plaync朋友','requestAddFriend',[3,4,5]]
	},
	{
		className:'l_legion',
		menu1:['軍團情報','viewLegionInfo',[1,2]]//,
		//menu2:['카페','openAzit',[1,2]]
	},
	{
		className:'l_none',
		menu1:['角色情報','viewCharacterInfo',[1,2]],
		menu2:['發表過的文章','viewCharacterArticle',[3,4,5]]//,
		//menu3:['傳送訊息','requestSendMessage',[3,4,5]],
		//menu4:['加入plaync朋友','requestAddFriend',[3,4,5]]
	},
	//마이아이온,상세정보 예외
	{
		className:'l_legion',
		menu1:['軍團情報','viewLegionInfo',[1,2]]//,
		//menu2:['카페','openAzit',[1,2]]
	}
	
]

createContext('context_box','context_list');