var isIE = (navigator.appName == "Microsoft Internet Explorer");

function ClearBG(obj)
{
    obj.style.background = "#ffffff";
}

function SetBG(obj, url)
{
    obj.style.background = "url(" + url + ")";
    obj.style.backgroundRepeat = "no-repeat";
}


function SetAutoLogin(obj)
{
	if (obj.checked === true)
	{
		if (confirm("자동 로그인 기능을 사용하시겠습니까?\n\n유의사항:\n---------\n1) 2주 이내 사이트 미 접속시에는 자동 로그인이 해제됩니다.\n2) 다른 컴퓨터에서 자동 로그인을 설정하면 기존에 설정된 컴퓨터는 해제됩니다.\n3) PC방, 학교 등 공공장소에서 사용시에는 개인정보가 유출될 수 있습니다.") === false) obj.checked = false;
	}
}

function login(form)
{
	if (!form.id.value) {alert('아이디를 입력하십시오.'); form.id.focus(); return false;}
	if (!form.passwd.value) {alert('암호를 입력하십시오.'); form.passwd.focus(); return false;}

	if (isIE === true && false)
	{
		form.action = 'https://security.playxp.com' + form.action;
	}
	
	return true;
}

function getElementsByName(tag, name)
{
	var elem = document.getElementsByTagName(tag);
	var arr = new Array();
	for(i = 0,iarr = 0; i < elem.length; i++)
	{
		att = elem[i].getAttribute("name");
		if(att == name)
		{
			arr[iarr] = elem[i];
			iarr++;
		}
	}
	return arr;
}

function MyPocket()
{
	PopUp('/services/pocket/my.php', 'pocket', 600, 400);
}

function ViewMemo()
{
	PopUp('/services/memo/received.php', 'memo', 600, 450);
}

function InputDigitOnly(event)
{
	if (/[0-9]/.test(String.fromCharCode(event.keyCode)) === false)
	{
		// 46 = del, 8 = bs, 35 = end, 36 = home, 16 = lshife
		if (event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 35 && event.keyCode != 36 && event.keyCode != 37 && event.keyCode != 38 && event.keyCode != 16)
		{
			event.returnValue = false;
		}
	}
}

function rd(args, popup)
{
	url = 'http://rd.playxp.com' + args;
	
	if (typeof(popup) == 'object')
	{
		if (popup.width == -1 && popup.height == -1)
		{
			var win = window.open(url);
		}
		else
		{
			var win = PopUp(url, popup.target, popup.width, popup.height, popup.scrollable, popup.resizable);
		}
	}
	else
	{
		var vForm = document.createElement('form');
		vForm.action = url;
		
		document.body.appendChild(vForm);
	
		vForm.submit();
	}
}

// 지정 월의 마지막 날 구하기
Date.getLastDay = function(y,m) {
    return new Date(y,m,0).getDate();
}

// 바이트 계산
String.prototype.bytes = function() {
    var str = this;
    var l = 0;
    for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
    return l;
}

// number_format() 3자리 마다 콤마 출력
String.prototype.number_format = function() {
    return this.replace(/(\d)(?=(?:\d{3})+(?!\d))/g,'$1,');
}

// trim() 양 끝 공백 제거
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,'');
}

// Battle.net 래더 페이지 호출
function ladder(form)
{
	var ladder_url;

	if (form.Gateway.value=='Kalimdor')
	{
		ladder_url = 'http://asialadders.battle.net/war3/ladder/';
	}
	else
	{
		ladder_url='http://www.battle.net/war3/ladder/';
	}

	if (form.IsExpension.checked === true)
	{
		ladder_url += 'w3xp';
	}
	else
	{
		ladder_url += 'war3';
	}

	ladder_url += '-ladder-solo.aspx?Gateway=' + form.Gateway.value;

	if (form.PlayerSearch.value) ladder_url += '&PlayerSearch=' + form.PlayerSearch.value;

	window.open(ladder_url);
	return false;
}

function ViewUnion(member_id, event)
{
	PopUp('/member/union/main.php?member_id=' + member_id, 'union', 800, 500);
	return false;
}

function setFontags(x)
{
	if (/pt$/.test(x) === true) return x;

	switch (x)
	{
		case '1': case 'xx-small':
			return '8pt';
			break;
			
		case '2': case 'x-small':
			return '9pt';
			break;
			
		case '3': case 'small':
			return '12pt';
			break;
			
		case '4': case 'medium':
			return '16pt';
			break;
			
		case '5': case 'large':
			return '20pt';
			break;
			
		case '6': case 'x-large':
			return '26pt';
			break;
			
		case '7': case 'xx-large':
			return '32pt';
			break;
			
		default:
			return '10pt';
	}
} 

function ImgView(pocket_id)
{
	PopUp('/services/pocket/viewer.php?pocket_id=' + pocket_id, 'ImgViewer', 300, 100);
}



/**
 * 이벤트 등록
 *
 * @param  (object)  handle
 * @param  (string)  eventName
 * @param  (object)  functionName
 * @return (boolean) added
 */
function addEvent(handle, eventName, functionName)
{
	return Event.observe(handle, eventName, functionName);
}

function delEvent(handle, eventName, functionName)
{
	return Event.stopObserving(handle, eventName, functionName);
}






function PopUp(url, target, width, height, scrollable, resizable)
{
	var p_left = parseInt((window.screen.availWidth  - width)  / 2);
	var p_top  = parseInt((window.screen.availHeight - height) / 2);

	if (typeof(scrollable) == 'undefined') scrollable = false;
	if (typeof(resizable) == 'undefined')  resizable = false;

	if (typeof(target) == 'undefined')
	{
		var win = window.open(url, '_blank');	
	}
	else
	{
		var win = window.open(url, target, 'width=' + width + ', height=' + height + ', top=' + p_top + ', left=' + p_left + ', scrollbars=' + (scrollable ? 'yes' : 'no'));
	}
	
	win.focus();

	return win;
}

var objPopupData = {};
objPopupData.width  = -1;
objPopupData.height = -1;
objPopupData.target = '_blank';
objPopupData.scollable = false;
objPopupData.resizable = false;






var PopupMenu = {};
PopupMenu.menuList  = [];
PopupMenu.menuID    = 'mnuDefault';
PopupMenu.SetMenuID = function(menu_id) {this.menuID = menu_id;}
PopupMenu.AddChild  = function(caption, event) {this.menuList[this.menuList.length] = new Array(caption, event);}
PopupMenu.toHTML    = function(obj) {
	var elm = document.createElement('div');
	elm.id = this.menuID;

	var elm2 = document.createElement('div');
	elm2.className = 'innerMenu';

	var tbl   = document.createElement('table');
	var tbody = document.createElement('tbody');

	for (idx in this.menuList)
	{
		if (/^[0-9]+$/.test(idx) === false) continue;

		var arr = this.menuList[idx];

		var tr    = document.createElement('tr');
		var td    = document.createElement('td');
		td.innerHTML = arr[0];

		addEvent(td, 'mouseover', function() {
			if (typeof(event) == 'undefined')
			{
				var obj = this;
			}
			else
			{
				var obj = event.srcElement;
				if (obj.nodeName == 'SPAN') obj = obj.parentNode;
			}

			obj.className = 'over';
		});

		addEvent(td, 'mouseout', function() {
			if (typeof(event) == 'undefined')
			{
				var obj = this;
			}
			else
			{
				var obj = event.srcElement;
			}

			obj.className = '';
		});

		addEvent(td, 'click', arr[1]);

		tr.appendChild(td);
		tbody.appendChild(tr);
	}

	tbl.appendChild(tbody);
	elm2.appendChild(tbl);
	elm.appendChild(elm2);
	obj.appendChild(elm);
}

function delAchievementAlert(id, achievement_id)
{
	new Ajax.Request('/plugins/delAchievementAlert.php?achievement_id=' + achievement_id,
	{
		asynchronous: false,
		onSuccess: function(transport)
		{
			if (transport.responseText == 'ok')
			{
				$(id).style.display = 'none';
			}
			else
			{
				alert('서버와 통신 오류가 발생하였습니다. 잠시 후 다시 시도하십시오.');
			}
		}
	});
}

function addAchievementAlert(achievement_id, icon, title_text, point_text)
{
	var pos_id = getAchievementPosId();
	var div = document.createElement('div');
	div.id = 'Achievement_' + pos_id;
	div.className = 'Achievement';

	var elm = document.createElement('div');
	elm.id = 'Achievementcontainer';
	elm.cssName = 'png_bg';
	elm.style.top = (150 + (pos_id - 1) * 100) + 'px';
	elm.style.cursor = 'pointer';
	elm.title = "클릭하면 업적 알림이 사라집니다.";
	elm.onclick = function()
	{
		delAchievementAlert('Achievement_' + pos_id, achievement_id);
	}

	var el = document.createElement('div');
	el.className = 'icon';
	el.style.background = 'url(http://imports.playxp.com/images/achievement/icons/' + icon + ') no-repeat 12px 22px';

	var img = document.createElement('img');
	img.src = 'http://imports.playxp.com/images/achievement/icon_frame.png';
	img.id = 'AchievementcontainerIconImg';

	var title = document.createElement('div');
	title.className = 'achievement_title';
	title.innerHTML = title_text;

	var point = document.createElement('div');
	point.className = 'achievement_point';
	point.innerHTML = point_text;

	el.appendChild(img);
	elm.appendChild(el);
	elm.appendChild(title);
	elm.appendChild(point);
	div.appendChild(elm);
	$('gnb').appendChild(div);
}

function getAchievementPosId()
{
	var current_pos = 1;
	while (true)
	{
		if ($('Achievement_' + current_pos) == null) break;
		current_pos++;
	}

	return current_pos;
}

function AchievementAlert()
{
	new Ajax.Request('/plugins/getAchievementInfo.php',
	{
		asynchronous: false,
		onSuccess: function(transport)
		{
			if (transport.responseText == 'error') return;

			var data = transport.responseText.evalJSON();
			var max = data.length;

			for (var i = 0; i < max; i++)
			{
				addAchievementAlert(data[i].achievement_id, data[i].icon, data[i].title, data[i].point);
			}
		}
	});
}
