//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 += 'Welcome to News!';
		inner += ' <strong><a href="' + _signInUrl + '">Sign In</a></strong> or <strong><a href="' + _signUpUrl + '">Sign Up</a></strong>';
		
//		inner += '<a href="' + _signInUrl + '" class="btn_signin" onfocus="blur();">SignIn</a> ';
//		inner += '<a href="' + _signUpUrl + '" class="btn_signup" onfocus="blur();">SignUp</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 += '<div class="signsuccess" onmouseover="showMmoUserItemList();" onmouseout="showMmoUserItemList(false);">';
//		inner += '<div class="username"><ul><li><a href="#">' + nickname + '</a></li></ul></div>';
//		inner += '<div class="select_con" id="_mmouserItemList" style="display:none;">';
//		inner += '<ul>';
//		inner += '<li class="sel_1"><a href="http://accounts.mmosite.com">Enter My Center</a></li>';
//		inner += '<li class="sel_2"><a href="http://my.mmosite.com/' + username + '">My Blog</a></li>';
//		inner += '<li class="sel_3"><a href="http://answer.mmosite.com/member/user_info.php">My Answer</a></li>';
//		inner += '<li class="sel_4"><a href="http://my.mmosite.com/' + username + '/Photo">My Album</a></li>';
//		inner += '<li class="sel_5"><a href="https://accounts.mmosite.com/gold/">MMOGold:(<b>' + goldNum + '</b>)</a></li>';
//		inner += '<li class="sel_6"><a href="http://accounts.mmosite.com/user/index.php?m=pm_client&a=ls">Message:(<b>' + newPmNum + '</b>)</a></li>';
//		inner += '</ul>';
//		inner += '<ul><li class="sel_7"><a href="http://accounts.mmosite.com/port/logout.php">Sign Out</a></li></ul>';
//		inner += '</div>';
//		inner += '</div>';
		
		inner += '<ul>';
		inner += '<li class="ico_1"><a href="http://accounts.mmosite.com">' + nickname + '</a></li>';
		inner += '<li class="ico_2"><a href="https://accounts.mmosite.com/gold/">' + goldNum + '</a></li>';
		inner += '<li class="ico_3"><a href="http://accounts.mmosite.com/user/index.php?m=pm_client&a=ls">' + newPmNum + '</a></li>';
		inner += '<li class="ico_4"><a href="http://my.mmosite.com/' + username + '">Blog</a></li>';
		inner += '<li class="ico_6"><a href="http://accounts.mmosite.com/user/bookmark.php">My Bookmark</a></li>';
		inner += '<li class="ico_5"><a href="http://accounts.mmosite.com">Enter My Center</a></li>';
		inner += '<li class="ico_7"><a href="http://accounts.mmosite.com/port/logout.php">Sign Out</a></li>';
		inner += '</ul>';

		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]);

//			var loginScriptStrDiv = document.createElement("div");
//			loginScriptStrDiv.id = "loginScriptStrDiv";
//			loginScriptStrDiv.innerHTML = _t[1];
//			document.body.appendChild(loginScriptStrDiv);
			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">Username:<br /> <input id="mmoUcUsername" name="mmoUcUsername" class="input_1"/></td>';
//		inner += '</tr>';
//		inner += '<tr>';
//		inner += '<td colspan="2">Password:<br /><input id="mmoUcPassword" name="mmoUcPassword" type="password" class="input_1"/></td>';
//		inner += '</tr>';
//		inner += '<tr>';
//		inner += '<td colspan="2"><input type="checkbox" id="is_remember" name="is_remember">Remember me </br>';
//		inner += '<span id="loginResMsg"></span>';
//		inner += '</td>';
//		inner += '</tr>';
		inner += '<tr>';
		inner += '<td colspan="2" align="center"><input name="submit" type="button" onclick="usersignIn();" value="Sign in" title="Sign in" class="btn_yellow">&nbsp;&nbsp;&nbsp;<input name="submit" type="button" value="Cancel" onclick="closeMmoLoginDiv();" class="btn_gray"></td>';
		inner += '</tr>';
// 		inner += '<tr>';
//		inner += '<td colspan="2" style=" font-weight:nomal; padding:10px 0 0 0;">Please sign in for mmosite, and click this button again for adding to Your Bookmark :)</td>';
//		inner += '</tr>';
//		inner += '<div id="scriptStrDiv"></div>';
		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"/>&nbsp;';
		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>';
	}
}

