//author : guiyj (evan_gui@163.com) on 2009.01.04
var gUcSiteUrl  = "http://accounts.mmosite.com/";					//mmosite用户中心站点地址
var gSvcUrl     = "http://accounts.mmosite.com/port/js_svc.php?1";	//php脚本服务器端服务请求处理url
var gImagesUrl  = "http://image.91.com/zx.sj.91/wm/1201/";		    //图片服务器目录路径
var gCurPageUrl = window.location.href;

//----------------------------------------------------------------------
//    2. 
//----------------------------------------------------------------------

// detect loged user's info.
//  (in fact we just need to fetch bookmark categores from server)
function showMmoUserInfo() {
	try{
		url = gSvcUrl + '&action=get_userinfo&s=' + (new Date()).getTime();
		requestSvc('bookmarkJs', url, 'callbackShowMmoUserInfo');
	}catch( err ){
		alert( "bookmark.js:addToBookmark" + " | " + err.description );
	}

}

// callbakc func of showMmoUserInfo
// - if logged in, then show loged user's info div; else show login url
function callbackShowMmoUserInfo(s) {
	var sJson = s.toString();
	eval("var oJson = " + sJson + ";");
	var res = oJson.result.trim();
	if ('not_logged' == res) {
		//未登陆
		showLogingUserPannel();
//		window.location.href = gLoginUrl + '&url=' + gCurPageUrl;
		return;
	} else if ('success' == res) {
		//
		showLogedUserPannel(oJson.username, oJson.nickname, oJson.goldNum, oJson.newPmNum);
	} else {

		alert('error occured');
	}
}


//未登陆的用户: 显示登陆和注册链接
function showLogingUserPannel() {
	try{
		var inner = '';
		var _oDiv = document.getElementById('mmouser__infoDiv');
		var _signInUrl = gUcSiteUrl + 'port/login.php?url=' + gCurPageUrl;
		var _signUpUrl = gUcSiteUrl + 'port/reg.php?url=' + gCurPageUrl;

		inner += '<a class="btn_signin" href="' + _signInUrl + '" onfocus="blur();">sign in</a> <a href="' + _signUpUrl + '" class="btn_signup" onfocus="blur();">sign up </a>';

		if (!_oDiv) {
			_oDiv = document.createElement("div");
			_oDiv.id = "mmouser__infoDiv";

			document.getElementById("signbox").appendChild(_oDiv);
			_oDiv.innerHTML = inner;
			
		} else {

			_oDiv.style.display = 'block';	
		}

	}catch( err ){
		alert( "bookmark.js:showCatsDiv" + " | " + err.description );
	}
}

//已登陆的用户: 显示已经登陆的用户的信息
function showLogedUserPannel(username, nickname, goldNum, newPmNum) {
	try{
		var inner = '';
		var _oDiv = document.getElementById('mmouser__infoDiv');
		
		inner += '<dl>';
		inner += '<dt><a href="http://my.mmosite.com/' + username + '">' + nickname + '</a></dt>';
		inner += '<dd><span><a class="user_1" href="http://accounts.mmosite.com/user/myprofile.php">My Profile</a> <a class="user_2" href="https://accounts.mmosite.com/gold/">' + goldNum + '</a> <a class="user_3" href="http://accounts.mmosite.com/user/index.php?m=pm_client&a=ls">' + newPmNum + '</a> <a class="user_4" href="http://my.mmosite.com/blog/' + username + '">My Blog</a> <a class="user_5" href="http://my.mmosite.com/' + username + '/Photo">My Album</a> <a class="user_6" href="http://answer.mmosite.com/member/user_info.php">My Answer</a> <a class="user_7" href="http://accounts.mmosite.com/port/logout.php">Sign Out</a></span></dd>';
		inner += '</dl>';


		if (!_oDiv) {
			_oDiv = document.createElement("div");
			_oDiv.id = "mmouser__infoDiv";
			
			document.getElementById("signbox").appendChild(_oDiv);
			_oDiv.innerHTML = inner;
		} else {

			_oDiv.style.display = 'block';	
		}

	}catch( err ){
		alert( "bookmark.js:showCatsDiv" + " | " + err.description );
	}
}

function showMmoUserItemList(open) {
	if (typeof(open) == 'undefined' || open==true) {
		document.getElementById('_mmouserItemList').style.display = "block";
	} else {
		document.getElementById('_mmouserItemList').style.display = "none";
	}
}


//----------------------------------------------------------------------
//    3. common functions
//----------------------------------------------------------------------

//defautl callback function
function callbackFunc(s) { }

String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, '');
}

function requestSvc(id, url, funcName) {
	if (typeof(funcName) == 'undefined') { funcName = 'callbackFunc'; } 
	url += '&func_name=' + funcName;
	oScript = document.getElementById(id);
	var head = document.getElementsByTagName("head").item(0);
	if (oScript) {
		head.removeChild(oScript);
	}
	oScript = document.createElement("script");
	oScript.setAttribute("src", url);
	oScript.setAttribute("id",id);
	oScript.setAttribute("type","text/javascript");
	oScript.setAttribute("language","javascript");

	head.appendChild(oScript);
	return oScript;
}

//----------------------------------------------------------------------
//    4. bookmark
//----------------------------------------------------------------------

//processing mmosite ucenter login 
function mmoUcLoginUser() {
	var url = gSvcUrl; 
	var mmoUcUsername = document.getElementById('mmoUcUsername').value.trim();
	var mmoUcPassword = document.getElementById('mmoUcPassword').value.trim();
	if ('' == mmoUcUsername) {
		document.getElementById('loginResMsg').innerHTML = '<font color="red">Please input your username!</font>';
		return false;
	}
	if ('' == mmoUcPassword) {
		document.getElementById('loginResMsg').innerHTML = '<font color="red">Please input your password!</font>';
		return false;
	}

	url += '&action=login&u=' + mmoUcUsername + '&p=' + mmo_hhp(mmoUcPassword) + '&r=' + document.getElementById('is_remember').checked + '&s=' + (new Date()).getTime();
	requestSvc('bookmarkJs', url, 'processLoginRes');
	return false;
}

//callback func of logging in ucenter
function processLoginRes(s) {
	var _t = s.split('|');
	s = _t[0];
	eval("var oJson = " + s + ";");
	var result = oJson.result;
	switch (result) {
		case 'success': 
			onMmoUcLoginSuccess();

			//dynamicly write request script string...
			startSynLogin(_t[1]);

			break;
		case 'username_empty': 
			showMmoLoginRes("Please input your username!");
			break;
		case 'passwd_empty': 
			showMmoLoginRes("Please input your password!");
			break;
		case 'user_not_exist':
			showMmoLoginRes("This user do not exist!");
			break;
		case 'passwd_error': 
			showMmoLoginRes("Password error!");
			break;
		default : 
			break;
	}
	return false;
}

//synlogin processing of other sites.
function startSynLogin(_in) {
	var _middle = /"><\/script><script type="text\/javascript" src="/g;  
	var _head = /<script type="text\/javascript" src="/g;  
	var _tail = /"><\/script>/g;
	var _sScript = _in.replace(_middle, '|').replace(_tail, '').replace(_head, '');
	var _a = _sScript.split('|');
	var _l = _a.length;
	for (var i=0; i<_l; i++) {
		requestSvc('l'+i, _a[i]);
	}
	return;
}

function showMmoLoginRes(msg, warm) {
	if ('undefined' == typeof(warm)) {
		warm = true;
	}
	var obb = document.getElementById('loginResMsg');
	if (warm) {
		obb.innerHTML = '<br><font color="red">' + msg + '</font>';
	} else {
		obb.innerHTML = '<br><font color="green">' + msg + '</font>';
	}
}

//
function onMmoUcLoginSuccess() {
//	$('#script_container').html(oJson.scriptStr);
	showMmoLoginRes('success!', false);
	setTimeout("closeMmoLoginDiv()", 2000);
	setTimeout("addToBookmark()", 2200);
	
}

function closeMmoLoginDiv() {
	document.getElementById('mmoLoginDiv').style.display = 'none';
}

function usersignIn(){

		window.location.href = "http://accounts.mmosite.com/port/login.php?url=" + window.location.href;
	}
//show mmosite ucenter login div
function showMmoLoginDiv() {
	try{
		var inner = '';
		var oLoginDiv = document.getElementById('mmoLoginDiv');

		inner += '<div class="winbox_bg" id="winbox_bg"></div><div class="winbox_main" id="winbox_main"><div class="winbox_close" title="click to close" onclick="closeMmoLoginDiv();"></div><form method="" action="" onSubmit="return mmoUcLoginUser();">';
		inner += '<div class="win_tit">Login</div><div class="win_con"><table width="100%" border="0" cellspacing="0" cellpadding="0">';
		
		inner += '<td colspan="2" class="notice">Please sign in for mmosite, and click this button again for adding to Your Bookmark :)<br /><br />';
		inner += '</td>';
		inner += '<tr>';
		inner += '<td colspan="2" align="center"><input name="submit" type="button" onclick="usersignIn();" value="Sign in" title="Sign in" class="btn_yellow">   <input name="submit" type="button" value="Cancel" onclick="closeMmoLoginDiv();" class="btn_gray"></td>';
		inner += '</tr>';
		inner += '</tr>';
		inner += '</table>';
		inner += '</form><div class="clear"></div></div>';

		if (!oLoginDiv) {
			var clientWidth = document.body.clientWidth;
			var pmwidth  = 340;		//应该作为参数传入的
			var pmheight = 180;		//应该作为参数传入的

			oLoginDiv = document.createElement("div");
			oLoginDiv.id = "mmoLoginDiv";
			oLoginDiv.style.width = pmwidth + 'px';
			oLoginDiv.style.height = pmheight + 'px';

			oLoginDiv.style.left = ((clientWidth - pmwidth) / 2) + 'px';
			oLoginDiv.style.position = 'absolute';
			oLoginDiv.className = "winbox";
			oLoginDiv.style.zIndex = '999';

			document.body.appendChild(oLoginDiv);
			oLoginDiv.innerHTML = inner;
			
			document.getElementById("winbox_bg").style.width = pmwidth + "px";
			document.getElementById("winbox_bg").style.height = pmheight + "px";
			if(document.compatMode == "BackCompat" && navigator.userAgent.indexOf("MSIE")>0){
				
				document.getElementById("winbox_main").style.width = pmwidth - 20 + "px";
			}else{
				document.getElementById("winbox_main").style.width = pmwidth - 40 + "px";
			}
			
			document.getElementById("winbox_main").style.height = pmheight - 20 + "px";
		} else {

			oLoginDiv.style.display = 'block';	
		}
//		oBookmarkDiv.innerHTML = inner;

	}catch( err ){
		alert( "bookmark.js:showCatsDiv" + " | " + err.description );
	}
}

// show bookmark adding div
//  (in fact we just need to fetch bookmark categores from server)
function addToBookmark() {
	try{
		url = gSvcUrl + '&action=get_bcs&s=' + (new Date()).getTime();
		requestSvc('bookmarkJs', url, 'processGetBcs');
	}catch( err ){
		alert( "bookmark.js:addToBookmark" + " | " + err.description );
	}

}

// callbakc func of addToBookmark
// - if logged in, then show adding bookmark div; else show login div
function processGetBcs(s) {
	var sJson = s.toString();
	eval("var oJson = " + sJson + ";");
	if ('not_logged' == oJson.result) {
		//未登陆
		showMmoLoginDiv();
//		window.open("http://accounts.mmosite.tom/port/login.php?login_remote=true", '_blank', "height=200,width=400,status=no,toolbar=no,menubar=no,location=no");
		return;
	} else if ('success' == oJson.result) {
		//
		var len = oJson.aCatsOptions.length;
		var sCatsOptions = '';

		sCatsOptions += '<option  value="0">Default</option>';
		for (var i=0; i<len; i++) {
			sCatsOptions += '<option value="' + oJson.aCatsOptions[i].bc_id +  '" >' + oJson.aCatsOptions[i].bc_name + '</option>';
		}

		showBookmarkDiv(sCatsOptions);
	} else {

		alert('error occured');
	}
}

//submit bookmark adding result 
function doAddToBookmark() {
	try{
		var oCat = document.getElementById('bm_cid');
		var url = gSvcUrl; 

		url += '&action=add_bookmark';
		url += '&bm_name=' + document.getElementById('bm_name').value;
		url += '&bm_url=' + document.getElementById('bm_url').value;
		url += '&bm_desc=' + document.getElementById('bm_desc').value;
		url += '&bm_cid=' + document.getElementById('bm_cid').value;
		url += '&bm_cname=' + oCat.options[oCat.selectedIndex].text,
		url += '&s=' + (new Date()).getTime();

		requestSvc('bookmarkJs', url, 'processAddBookmark');
		return false;
	}catch( err ){
		alert( "bookmark.js:doAddToBookmark" + " | " + err.description );
	}
}

// callback of doAddToBookmark
function processAddBookmark(s) {
	var sJson = s.toString();
//	alert(sJson);
	eval("var oJson = " + sJson + ";");
	if ('not_logged' == oJson.result) {
		//未登陆
		
	} else if ('success' == oJson.result) {
		//
		alert("success");
		document.getElementById('bookmarkDiv').style.display = 'none';
	} else if ('allready_exist' == oJson.result) {
		//
		alert("this bookmark has been added before");
	} else {
		alert('error occured');
	}
}

//show bookmark adding div
function showBookmarkDiv(sCatsOptions) {
	try{
		var inner = '';
		var oBookmarkDiv = document.getElementById('bookmarkDiv');
		
		inner += '<div class="winbox_bg" id="winbox_bg2"></div><div class="winbox_main" id="winbox_main2"><div class="winbox_close" title="click to close" onclick="document.getElementById(\'bookmarkDiv\').style.display = \'none\';"></div><form action="" method="POST" onsubmit="return doAddToBookmark();">';
		inner += '<div class="win_tit">Bookmark</div><div class="win_con"><div class="title_left">Name: </div><input  type="text" id="bm_name" name="bm_name" value="' + document.title + '" size="55"/> </br>';
		inner += '<div class="title_left">Address: </div><input type="text" id="bm_url" name="bm_url" value="' + gCurPageUrl + '" size="55"/> </br>';
		inner += '<div class="title_left">Category: </div>';
		inner += '<select id="bm_cid">';
		inner += sCatsOptions;
		inner += '</select>';
		inner += '</br>';

		inner += '<div id="adding_cat" style="display: none;">';
		inner += 'Maximum of 50 characters<br><input id="cat_name" type="text" />';
		inner += '<input type="button" onclick="submitAddCat();" value="Create"/>';
		inner += '<a href="javascript: cancelCat();">Cancel</a>';
		inner += '</div>';
		inner += '<div id="add_cat">';
		inner += '<a href="javascript: addCat();">Create category</a>';
		inner += '</div>';


		inner += 'Description:<br><textarea id="bm_desc" rows="5" cols="30" name="bm_desc"></textarea>';
		inner += '<span id="bm_msg" style="display:block"></span>';
		inner += '<input type="submit"  name="submit" value="Confirm" class="btn_yellow"/> ';
		inner += '<input type="button"  name="cancel" value="cancel" onclick="document.getElementById(\'bookmarkDiv\').style.display = \'none\';" class="btn_gray"/>';
		inner += '</form><div class="clear"></div></div>';

		if (!oBookmarkDiv) {
			var clientWidth = document.body.clientWidth;
			var pmwidth  = 470;		//应该作为参数传入的
			var pmheight = 420;		//应该作为参数传入的


			oBookmarkDiv = document.createElement("div");
			oBookmarkDiv.id = "bookmarkDiv";
			oBookmarkDiv.className = "winbox";
			oBookmarkDiv.style.width = pmwidth + 'px';
			oBookmarkDiv.style.height = pmheight + 'px';
			oBookmarkDiv.style.left = ((clientWidth - pmwidth) / 2) + 'px';
			oBookmarkDiv.style.position = 'absolute';
			oBookmarkDiv.style.zIndex = '999';

			document.body.appendChild(oBookmarkDiv);
			oBookmarkDiv.innerHTML = inner;
			
			document.getElementById("winbox_bg2").style.width = pmwidth + "px";
			document.getElementById("winbox_bg2").style.height = pmheight + "px";
			if(document.compatMode == "BackCompat" && navigator.userAgent.indexOf("MSIE")>0){
				document.getElementById("winbox_main2").style.width = pmwidth - 20 + "px";
			}else{
				document.getElementById("winbox_main2").style.width = pmwidth - 40 + "px";
			}
			document.getElementById("winbox_main2").style.height = pmheight - 20 + "px";
			
		} else {

			oBookmarkDiv.style.display = 'block';	
		}
//		oBookmarkDiv.innerHTML = inner;

	}catch( err ){
		alert( "bookmark.js:showCatsDiv" + " | " + err.description );
	}
}

function addCat() {
	document.getElementById('adding_cat').style.display = 'block';
	document.getElementById('add_cat').style.display = 'none';
}

function cancelCat() {
	document.getElementById('adding_cat').style.display = 'none';
	document.getElementById('add_cat').style.display = 'block';
}

// do add category
function submitAddCat() {
	var sCatName = document.getElementById('cat_name').value.trim();
	if ('' == sCatName) {
		showCatTip('Please input category name!');
		return ;		
	}

	url = gSvcUrl + '&action=add_bc&bc_name=' + sCatName + '&s=' + (new Date()).getTime();
	requestSvc('bookmarkJs', url, 'processAddBc');
}

function processAddBc(s) {
	var sJson = s.toString();
	eval("var oJson = " + sJson + ";");
	switch (oJson.result.trim()) {
		case 'success':
			addCatOption('bm_cid', oJson.catId, oJson.catName);
			cancelCat();
			setSelectByVal(document.getElementById('bm_cid'), oJson.catId);
			break;
		case 'param_error' :
			showCatTip('parameter error!'); return ; break;
		case 'allready_exist' :
			showCatTip('this category name is allready exist!'); return ; break;
		case 'error' :
			showCatTip('operation failed!'); return ; break;
		default:
			showCatTip('operation failed!'); return ; break;
	}//end of switch}
}

function addCatOption(sltId, catId, catName) {
	var oSelect = document.getElementById(sltId);
	var oOption;
	oOption = document.createElement('option');
	oOption.value = catId;
	oOption.text = catName;
	oSelect.options.add(oOption);
}

function showCatTip(msg, warm) {
	if ('undefined' == typeof(warm)) {
		warm = true;
	}
	var obb = document.getElementById('bm_msg');
	if (warm) {
		obb.innerHTML = '<font color="red">' + msg + '</font>';
	} else {
		obb.innerHTML = '<font color="green">' + msg + '</font>';
	}
}

/******************************
 *header
*******************************/
function loadUserInfo(){
	
	//hot contest setting	
	var hot = [	
        [ "MMOsite Playxpert","http://www.mmosite.com/coop/playxpert/" ],        	
		[ "Writers Recruiting","http://news.mmosite.com/content/2009-05-05/20090505195000100.shtml" ],
		[ "New Game Frontier","http://news.mmosite.com/specials/newgames/" ]
	];

	
	function MMOtopStyle(){
		var str = '<style type="text/css">';

		str += '#mmo_top{  background: url(http://images.mmosite.com/news/images/2009v2/mmo_top_bg.gif) repeat-x; width:100%;height:35px;  font-size:11px}';
		str += '	.mmo_top_bg{background: url(http://images.mmosite.com/news/images/2009v2/mmo_top_bg.gif) repeat-x; margin:0 auto; width:1002px; height:35px}';
		str += '	.mmo_top_con{background: url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat; height:35px; overflow:hidden;}';
		str += '	.mmo_top_con a{ color:#cfbd9a}';
		str += '	.mmo_top_con a:hover{ color:#ffd1a2}';

		str += '	.mmo_hot{ float:left; line-height:33px; width:370px; overflow:hidden; white-space:nowrap  }';
		str += '	.mmo_hot li{ float:left; padding:0 6px 0 8px; background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_bg.gif) no-repeat left -35px;}';

		str += '	.sign{ float:right; line-height:33px; padding:0 5px 0 0;}';
		str += '	.sign dt{ float:left; line-height:33px; font-weight:bold;   margin:0 10px 0 0;white-space:nowrap; overflow:hidden; text-overflow:ellipsis; width:120px}';
		str += '	.sign dt a{background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -496px;padding:3px 0 3px 20px; color:#FFC;}';
		str += '	.sign dd{ float:left;background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat right -77px;  padding:0 10px 0 0}';
		str += '	.sign dd span{background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -40px; display:block; padding:0 0 0 10px}';
		str += '	.sign dd a{ padding:2px 5px 2px 22px}';

		str += '		.user_1{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -180px }';
		str += '		.user_2{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -222px }';
		str += '		.user_3{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -261px }';
		str += '		.user_4{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 5px -304px }';
		str += '		.user_5{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 4px -343px }';
		str += '		.user_6{ background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 4px -381px }';
		str += '		.user_7{ font-weight:bold; text-decoration:underline }';
		
		str += '		.btn_signin, .btn_signup{ float:left; display:block; background:url(http://images.mmosite.com/news/images/2009v2/mmo_top_ico.gif) no-repeat 0 -120px; width:63px; height:19px; overflow:hidden; text-indent:-900em; margin:6px 6px 0 0}';


		str += '		.btn_signup{ background-position:-63px -120px}';
		str += '		.btn_signin:hover{ background-position:0 -140px}';
		str += '		.btn_signup:hover{ background-position:-63px -140px}';
		
		str += '</style>';
		
		return str;
	}
	
	function MMOtopHtml(){
		var str = "";

		str += '<div id="mmo_top" >';
		str += '  <div class="mmo_top_bg">';
		str += '    <div class="mmo_top_con">';
		str += '      <ul class="mmo_hot">';
		for( var i = 0; i < hot.length; i++ ){
			str += '<li><a href="' + hot[i][1] + '" title="' + hot[i][0] + '">' + hot[i][0] + '</a></li>';
		}		
		str += '      </ul>';
		str += '      <div class="sign" id="signbox"></div>';
		str += '    </div>';
		str += '  </div>';
		str += '</div>';
		
		//show user info	
		str += '<script type="text/javascript">showMmoUserInfo();</script>';
		
		return str;
	
	}

	document.write( MMOtopStyle() + MMOtopHtml() );
}