var AvatarMenu = {
	// Login YN
	bLogin : !!getCookie("userId"),

	// Menu Item Initialize
	initItems : function(){
		AvatarMenu.items.add('pocketBook', new AvatarMenu.Item('プロフィール', function(){
			openPocketBook(AvatarMenu.user.useruuId);
		}));
		AvatarMenu.items.add('message', new AvatarMenu.Item('メッセージ送信', function(){
			sendMessage(AvatarMenu.user.useruuId,0);
		}));
		AvatarMenu.items.add('chatting', new AvatarMenu.Item('会話する', function(){
			sendChatting(AvatarMenu.user.useruuId);
		}));
		AvatarMenu.items.add('goPark', new AvatarMenu.Item('パークへ移動', function(){
			pWnd.document.WebOcx.WEB2OCXGETUSERDEFROOM(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,0);
		}));
		AvatarMenu.items.add('meet', new AvatarMenu.Item('会いに行く', function(){
			pWnd.document.WebOcx.WEB2OCXGETFRIENDROOM(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,0);
		}));
		AvatarMenu.items.add('applyFriend', new AvatarMenu.Item('フレンド申込み', function(){
			pWnd.document.WebOcx.WEB2OCXSETFRIEND(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,0,1);
		}));
		AvatarMenu.items.add('delFriend', new AvatarMenu.Item('フレンド解消', function(){
			pWnd.document.WebOcx.WEB2OCXDELFRIEND(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,0);
		}));
		AvatarMenu.items.add('delCouple', new AvatarMenu.Item('カップル解消', function(){
			pWnd.document.WebOcx.WEB2OCXDELOPFRIEND(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,0);
		}));
		AvatarMenu.items.add('block', new AvatarMenu.Item('ブロックする', function(){
			setBlock(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,true);
		}));
		AvatarMenu.items.add('cancelBlock', new AvatarMenu.Item('ブロック解除', function(){
			setBlock(AvatarMenu.user.avatarType,AvatarMenu.user.useruuId,false);
		}));
	},

	// Avatar Menu (onClick Listener)
	open : function(_event, _useruuId, _avatarType, _friendKind){
		var element = Event.element(_event);
		if (element.tagName.toUpperCase()=="IMG") {
			element = element.up("span");
		}
		var userId = element.id.substring(5);
		var layer = AvatarMenu.layer.get();
		var pointerX = Event.pointerX(_event);
		var pointerY = Event.pointerY(_event);

		if (!AvatarMenu.bLogin) {
			layer.down("ul").hide();
			AvatarMenu.user.set(userId);
			AvatarMenu.layer.show(pointerX, pointerY);
		}
		else {
			layer.down("ul").show();
			
			if (AvatarMenu.items.empty()) {
				AvatarMenu.initItems();
			}

			if (_useruuId && _avatarType && _friendKind)
			{
				AvatarMenu.user.set(userId, _useruuId, _avatarType, _friendKind);
				AvatarMenu.layer.show(pointerX, pointerY);
			} 
			else {
				new Ajax.Request("/servlet/trid.common.COAvatarMenuInfoRF", {
					parameters : "userId="+userId,
					onSuccess : function(_response){
						var info = eval("(" + _response.responseText + ")");
						if(info.useruuId == null || info.useruuId == getCookie("useruuId"))
						{
							layer.down("ul").hide();
							AvatarMenu.user.set(userId);
						}
						else
						{
							AvatarMenu.user.set(userId, info.useruuId, info.avatarType, info.friendKind);
						}
						AvatarMenu.layer.show(pointerX, pointerY);
					},
					onFailure : function(){
						
					}
				});
			}
		}
	},

	// avatarName HTML Code generate
	getAvatarNameHTML : function(_userId, _avatarName, _avatarType) {
		var imgTag = '';
		if (_avatarType) {
			imgTag = 
				'<img src="http://image.ntomo.jp/image/emoticon/' +
				(_avatarType==131073 ? 'boy' : 'girl') + '_state0.gif" />';
		}
		var HTML = 
			'<span class="avatarName" id="user-' + _userId + '"' + 
			' onclick="AvatarMenu.open(event)">' + imgTag + _avatarName + '</span>';

		return HTML;
	}, 

	// avatarName HTML Code generate(friend)
	getFriendNameHTML : function(_userId, _avatarName, _avatarType, _useruuId, _avatarStatus, _friendKind) {
		var imgTag = 
			'<img src="http://image.ntomo.jp/image/emoticon/' + 
			getIcon(_avatarType, _avatarStatus, !_friendKind & 0x01) + '" />';
		var params = 
			'event,' + _useruuId + ',' + _avatarType + ',' + _friendKind;
		var HTML = 
			'<span class="avatarName" id="user-' + _userId + '"' + 
			' onclick="AvatarMenu.open(' + params + ')">' + imgTag + _avatarName + '</span>';

		return HTML;
	}

};

// Menu Items
AvatarMenu.items = {
	__array : null,

	add : function(_id, _item){
		var layer = AvatarMenu.layer.get();
		layer.down("ul").appendChild(_item.element);

		if (!this.__array) {
			this.__array = [];
		}
		this.__array[_id] = _item;
	},

	get : function(_id){
		return this.__array[_id];
	},

	empty : function(){
		return !this.__array;
	}
}

// Menu Layer
AvatarMenu.layer = {
	create : function(){
		var code = 
			'<div class="inner">' +
			'	<p></p>' +
			'	<ul></ul>' +
			'</div>';
		var layer = document.createElement("div");
		layer.id = "avatarMenu";
		layer.innerHTML = code;
		$(layer).setStyle({zIndex : 100, top : "0px", left : "0px"});
		document.body.appendChild(layer);

		// prevent from selectbox overlapping (IE6)
		var layerBG = document.createElement("iframe");
		layerBG.id = "avatarMenuBG";
		layerBG.frameBorder = 0;
		layerBG.scrolling = "no";
		$(layerBG).setStyle({zIndex : 99, top : "0px", left : "0px"});
		document.body.appendChild(layerBG);

		// prevent 'document.onmousedown' 
		Event.observe(layer, "mousedown", function(_event){Event.stop(_event);});

		return layer;
	},

	get : function(){
		var layer = $("avatarMenu");
		if (layer)
			return layer;
		else
			return AvatarMenu.layer.create();
	},

	show : function(_posX, _posY){
		var layer = AvatarMenu.layer.get();
		layer.setStyle({top : _posY+"px", left : _posX+"px"});
		layer.addClassName("on");

		Event.observe(document, "mousedown", AvatarMenu.layer.hide);

		// prevent from selectbox overlapping (IE6)
		var layerBG = $("avatarMenuBG");
		layerBG.setStyle({top : _posY+"px", left : _posX+"px", height : layer.clientHeight});
		layerBG.addClassName("on");
	},

	hide : function(){
		var layer = AvatarMenu.layer.get();
		layer.removeClassName("on");
		Event.stopObserving(document, "mousedown", AvatarMenu.layer.hide);

		// prevent from selectbox overlapping (IE6)
		var layerBG = $("avatarMenuBG");
		layerBG.removeClassName("on");
	}
};

// User Info
AvatarMenu.user = {
	userId : null,
	useruuId : null,
	avatarType : null,
	friendKind : null,
	
	set : function(_userId, _useruuId, _avatarType, _friendKind){
		this.userId = _userId;
		this.useruuId = _useruuId;
		this.avatarType = _avatarType;
		this.friendKine = _friendKind;

		var layer = AvatarMenu.layer.get();
		layer.down("p").innerHTML = "ID:"+_userId;

		if (AvatarMenu.bLogin) {
			// friend or not
			if (_friendKind & 0x10) { 
				AvatarMenu.items.get("applyFriend").off();
				AvatarMenu.items.get("delFriend").on();
			}
			else {
				AvatarMenu.items.get("applyFriend").on();
				AvatarMenu.items.get("delFriend").off();
			}

			// couple or not
			if (_friendKind & 0x20) {
				AvatarMenu.items.get("delCouple").on();
			}
			else {
				AvatarMenu.items.get("delCouple").off();
			}


			// block or not
			if (_friendKind & 0x01) {
				AvatarMenu.items.get("block").off();
				AvatarMenu.items.get("cancelBlock").on();
			}
			else {
				AvatarMenu.items.get("block").on();
				AvatarMenu.items.get("cancelBlock").off();
			}
		}
	}
};

// Menu Item Class
AvatarMenu.Item = Class.create();
AvatarMenu.Item.prototype = {
	initialize : function(_name, _action){
		this.name = _name;
		this.action = _action;
		this.element = null;

		var li = document.createElement("li");
		var span = document.createElement("span");
		span.innerHTML = _name;
		Event.observe(span, "click", AvatarMenu.Item.listeners.click.bind(this));
		Event.observe(span, "mouseover", AvatarMenu.Item.listeners.mouseover.bind(this));
		Event.observe(span, "mouseout", AvatarMenu.Item.listeners.mouseout.bind(this));

		li.appendChild(span);
		this.element = li;
	},

	off : function(){
		this.element.hide();
	},

	on : function(){
		this.element.show();
	},

	execute : function(){
		this.action();
	}
};
AvatarMenu.Item.listeners = {
	mouseover : function(){
		this.element.setStyle({cursor:'pointer', fontWeight:'bold', color:'#333'});
	},
	mouseout : function(){
		this.element.setStyle({cursor:'default', fontWeight:'normal', color:'#666'});
	},
	click : function(){
		this.execute();
		AvatarMenu.layer.hide();
	}
};


// puppyred avatarMenu.js
function sendChatting(useruuId)
{
	// hideUserMenuLayer();
	newWnd = window.open("/servlet/trid.chatting.CTChattingEE?" + ((useruuId!=-1)? ("useruuId="+useruuId) : ""), "popChatting", "width=390,height=360,resizable,alwaysRaised");
//	pWnd.addChatWnd(useruuId,newWnd);
	newWnd.opener = pWnd;
}

function openPocketBook(useruuId) {
	newWnd = window.open("/servlet/trid.pocketBook.PBProfileLF?" + ((useruuId!=-1)? ("useruuId="+useruuId) : ""), "pocketBook", "width=580,height=400,resizable,alwaysRaised");
	newWnd.opener = pWnd;
}

function sendMessage(useruuId,msgType) {
	// hideUserMenuLayer();
	var newWnd;
	newWnd = window.open("/servlet/trid.chatting.CTMessageIF?" + ((useruuId!=-1)? ("useruuId="+useruuId+"&") : "") + "msgType="+msgType,"","width=450,height=430");
//	pWnd.addChatWnd(useruuId,newWnd);
	newWnd.opener = pWnd;
}

function addFriend(avatarType,useruuId) {
	// hideUserMenuLayer();
	pWnd.document.WebOcx.WEB2OCXSETFRIEND(avatarType,useruuId,0,1);
}

function delFriend(avatarType,useruuId)
{
	// hideUserMenuLayer();
	pWnd.document.WebOcx.WEB2OCXDELFRIEND(avatarType,useruuId,0);
	getFriendList();
}

function setBlock(avatarType,useruuId,bBlock) {
	// hideUserMenuLayer();
	(bBlock)? pWnd.document.WebOcx.WEB2OCXSETBLOCK(avatarType,useruuId,0) : pWnd.document.WebOcx.WEB2OCXDELBLOCK(avatarType,useruuId,0);
}

function meetFriend(avatarType,useruuId) {
	// hideUserMenuLayer();
	pWnd.document.WebOcx.WEB2OCXGETFRIENDROOM(avatarType,useruuId,0);
}

function visitFriend(avatarType,useruuId) {
	// hideUserMenuLayer();
	pWnd.document.WebOcx.WEB2OCXGETUSERDEFROOM(avatarType,useruuId,0);
}

function joinRoom(spaceTypeID,spaceID,spaceLowID,strPwd) {
	try
	{
//		var useruuId = Cookie.get("useruuId",-1);
//		var avatarType = (Cookie.get("avatarSex",0)/10) * 10 + 131072;
		pWnd.document.WebOcx.WEB2OCXMOVEINTO(spaceTypeID,spaceID,spaceLowID,(typeof(strPwd)=='undefined') ? '' : strPwd);
	}
	catch(e)
	{
	}
}

function joinLockedRoom() {
	var f = document.joinRoomForm;
	if(f.roomPwd.value.replace(/ /g,'')=='') {
		popMessageWnd("COMM0004");
		f.roomPwd.focus();
		f.roomPwd.select();
		return false;
	}
	joinRoom(parseInt(f.spaceTypeId.value),parseInt(f.spaceId.value),parseInt(f.spaceLowId.value),f.roomPwd.value);
	// hideUserMenuLayer();
	return false;
}

function selectStatus(obj,bFlag) {
	if(bFlag)
	{
		if(curSkin == "blue")
		{
			obj.style.border = "1px solid #8dc0ff";
			obj.style.backgroundColor = "#dfecff";
		}
		else
		{
			obj.style.border = "1px solid #ff8d8d";
			obj.style.backgroundColor = "#ffdfdf";
		}
		obj.style.cursor = "hand";
	}
	else
	{
		obj.style.borderTop = "0px";
		obj.style.borderLeft = "0px";
		obj.style.borderRight = "1px solid #e3e3e3";
		obj.style.borderBottom = "1px solid #e3e3e3";
		obj.style.backgroundColor = "#ffffff";
		obj.style.cursor = "default";
	}
}

function displayStatusMenu() {
	var userMenu = getUserMenuLayer();

	try {
		userMenu.style.visibility="hidden";	
	} catch(e) {}
	document.getElementById("statusMenu").style.visibility = (document.getElementById("statusMenu").style.visibility=="visible")? "hidden" : "visible";
}

function changeAvatarStatus(iStatus) {
	try {
		pWnd.document.WebOcx.WEB2OCXCHANGESTATUS(256*iStatus);
	} catch(e) {}
	// hideUserMenuLayer();
}

function setAvatarStatus(ToTypeID,ToID,ToLowID,Status,AvatarName,Age) {
	try {
		(ToTypeID==0 && ToID==0 && ToLowID==0)? setMyStatus(Status,AvatarName) : setFriendStatus(ToTypeID,ToID,ToLowID,Status,AvatarName,Age);
	} catch(e) {}
}

function setMyStatus(newStatus,newAvatarName) {
	newStatus = (typeof(newStatus)!='undefined')? newStatus : pWnd.document.WebOcx.WEB2OCXGETMYSTATUS;
	document.getElementById("avatarStatusImage").src = "http://image.ntomo.jp/image/emoticon/"+getMyIcon(avatarType,newStatus);
	if(typeof(newAvatarName)!='undefined') {
		try {
			document.all['myAvatarName'].innerHTML = newAvatarName;	
		} catch(e) {}
	}
}

function getMyIcon(avatarType, avatarStatus) {
	var tempStr = (avatarType==131073)? "boy_" : "girl_";
	tempStr += "state" + parseInt(avatarStatus/256) + ".gif";
	return tempStr;
}

function getIcon(avatarType,avatarStatus,bBlock) {
	var iBlockBit = parseInt( bBlock, 10 ).toString(16);
	iBlockBit = iBlockBit.substring( iBlockBit.length - 1 );
	bBlock = iBlockBit;

	var tempStr;
	tempStr = (avatarType==131073)? "boy_" : "girl_";
	if(typeof(bBlock)!='undefined' && (bBlock==1 || bBlock==2)) return tempStr+"state38.gif";
	if (typeof(avatarStatus) == "string") avatarStatus = parseInt(avatarStatus);
	
	if(avatarStatus<256) {
		tempStr += "state";
		switch(avatarStatus) {
			case 0:
				tempStr += "19";
				break;
			case 1:
				tempStr += "0";
				break;
			case 2:
				tempStr += "4";
				break;
			case 3:
				tempStr += "3";
				break;
			case 4:
				tempStr += "1";
			default:
				tempStr += "0";
		}
		return tempStr + ".gif";
	}
	tempStr += "state" + parseInt(avatarStatus/256) + ".gif";
	return tempStr;
}
