//操作的状态。0一般状态；1正在获取数据；2获取数据完成；3正在提交数据；4提交数据完成
var gf_doaction_status = 0;

//game_favorite_box层的ID
var game_favorite_box_id = 'game_favorite_box_id';

//遮罩层ID
var gf_opacity_div_id = 'gf_opacity_div_id';

//只能使用中文和英文字符以及数字作为标签
var game_favorite_illege_reg = /^[\u4E00-\u9FA5|0-9|A-Z|a-z]+$/;

var GAME_FAVORITES_MAX_NUM = 10;  //最多可以输入10个标签
var GAME_FAVORITE_LEN_MAX   = 25;   //标签名长度的最大值
var GAME_MSG_MAX_LEN = 140;   //简评长度限制（字符）


var gf_add_favorite_callback_func = null;//提交之后的回调函数

var game_favorite_box_title_list = ['', '我想玩', '我正在玩', '我玩过'];

var gf_is_refresh_page = false;  //添加成功之后是否需要刷新页面
var gf_default_grade = null;  //默认评分

//对外接口
/* 参数列表
gameid：游戏ID, 
callback: 回调函数（它有一个参数：JSON格式的数据对象）, 
type: 游戏状态 1为想玩 2为正在玩 3为玩过 0为尚未收藏此游戏
title: 游戏标题
is_refresh_page: 添加成功之后是否需要刷新页面（true or false）（可选）
default_grade: 默认评分（可选）

其中 JSON格式的数据对象
json = array(
	'tid' => ,   //标志操作是否成功0，1
	'msg' => '', //操作是否成功的相关信息
	'data'=> array(
		'gameid'=>, //游戏ID
		'type'=>,   //类型：1想玩，2正在玩，3玩过
		'grade'=>,   //评分0-10
		'msg'=>,      //简评
		'is_open'=>,  //是否公开0,1
		'favorites'=>array()  //标签数组（可能为空）
	)
);
*/
var gf_old_y_position = 0;
var KEY_VALUE_ESC     = 27;
function game_favorite_box_show(gameid, callback, type, title, is_refresh_page, default_grade){
	if(document.getElementById(game_favorite_box_id) == null){
		gf_doaction_status = 1;
		create_global_opacity_div(gf_opacity_div_id);

		var div = document.createElement("div");
		div.setAttribute('id', game_favorite_box_id);
		div.className = 'box4 favOPLayer';
		div.innerHTML = get_game_favorite_box_html(gameid, type, title);
		div.onkeydown = function(event){
			var event=document.all?window.event:arguments[0];
			if(event.keyCode == KEY_VALUE_ESC){
				game_favorite_box_close();
			}
		};
		document.body.appendChild(div);

		try{
			if(is_refresh_page==true){
				gf_is_refresh_page = true;
			}else{
				gf_is_refresh_page = false;
			}
		}catch(e){}

		if(typeof default_grade == 'number'){
			gf_default_grade = default_grade;
		}

		setTimeout("gf_init_game_favorite_box("+gameid+", "+callback+")", 1);
	}
}


//del game
var gf_del_game_callback_func = null;
function game_favorite_del_game(gameid, callback){
	gf_del_game_callback_func = callback;
	var url = 'http://usercp.movie.xunlei.com/game.php?action=del&gameid='+gameid+'&callback=gf_del_game_callback';
	//JSONscriptQuery(url);
	setTimeout("JSONscriptQuery('"+url+"');", 1);
	//alert('aa');
}


//***************************************************************************
//************************  接口结束  ***************************************
//***************************************************************************

//初始化层的数据
var gf_position_handle = null;
function gf_init_game_favorite_box(gameid, callback){
	//初始化层的位置
	$obj(game_favorite_box_id).style.top = parseInt(getScroll().t) + 200 + 'px';
	gf_old_y_position = parseInt($obj(game_favorite_box_id).style.top);
	gf_position_handle = setInterval('game_favorite_box_position_change();', 1);

	//初始化数据(如果用户已经收藏过此游戏，则需要显示原有的信息)
	init_user_game_info(gameid);

	//alert(typeof gf_default_grade);
	if(typeof gf_default_grade == 'number'){
		set_grade_value(gf_default_grade);
		//alert(gf_default_grade);
	}

	//设置回调函数
	gf_add_favorite_callback_func = callback;
}


var grade_empty_code = "<h4 onmouseover='game_favorite_grade_change_show(0, 1)' "
					+ "onmouseout='game_favorite_grade_change_show(0, 0)' "
					+ "onclick='game_favorite_grade_change(0);'>收藏指数：</h4>";
var grade_img0_src = 'http://user.movie.xunlei.com/uh/images/star02.png'
var grade_img1_src = 'http://user.movie.xunlei.com/uh/images/star01.png'
var grade_img2_src = 'http://user.movie.xunlei.com/uh/images/star03.png'
function get_game_favorite_box_html(gameid, type, title){
	var grade_empty_init = '';
	for(var i=1; i<=10; i++){
		grade_empty_init += "<img id='game_favorite_grade_show_"+i+"' src='"+grade_img0_src+"'"
					+ "onmouseover='game_favorite_grade_change_show("+i+", 1)' "
					+ "onmouseout='game_favorite_grade_change_show("+i+", 0)' "
					+ "onclick='game_favorite_grade_change("+i+");' />";
	}

	var code = "";
	if(type>0){
		code = "<h3 id='game_favorite_box_title'>"+game_favorite_box_title_list[type] + "\""+title+"\"这个游戏</h3>";
	}else{
		code = "<h3 id='game_favorite_box_title'>\""+title+"\"收藏选项</h3>";
	}

	code += ""
	+ "<form id='game_favorite_box_frm' method='get' action='' class='favOPBox' onsubmit='return false;'>"
	+ "	<div class='favContent'>"
	+ "		<div id='game_favorite_grade_show' class='favNum'>"
	+ grade_empty_code + grade_empty_init
	+ "		</div>"
	+ "		<div class='tagTitle'>"
	+ "			<label>标签(标签之间用空格分隔)：</label> <input type='text' name='favorites' value='' onkeyup='gf_check_favorites_input(this.value)' /><br /><span id='favorites_input_alert'></span>"
	+ "		</div>"
	+ "		<div class='tagValue'>"
	+ "			<label>简短评价：</label>"
	+ "			<textarea name='msg' rows='4' cols='4'></textarea>"
	+ "		</div>"
	+ "		<div class='hiddenTag'>"
	+ "			<input name='is_open' type='checkbox' value='1' /> <label>不让其他人看到这个收藏</label>"
	+ "		</div>"
	+ "	</div>"
	+ "	<dl>"
	+ "		<dt>我常用的标签：</dt>"
	+ "		<dd id='my_often_favorites'></dd>"
	+ "		<dt>迅雷用户常用的标签：</dt>"
	+ "		<dd id='often_favorites'></dd>"
	+ "	</dl>"
	+ "	<div class='aboutThis' id='add_favorite_action_alert'>"
	+ "";
	if(type == 3){
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(3)'><span style='color:red'>玩过这款游戏</span></a> ";
	}
	else{
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(3)'><span>玩过这款游戏</span></a> ";
	}
	
	if(type == 2){
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(2)'><span style='color:red'>最近在玩这款游戏</span></a> ";
	}
	else{
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(2)'><span>最近在玩这款游戏</span></a> ";
	}
	
	if(type == 1){
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(1)'><span style='color:red'>想玩这款游戏</span></a></div>";
	}
	else{
		code +="	<a href='javascript:void(0)' onclick='submit_button_click(1)'><span>想玩这款游戏</span></a></div>";
	}
	code = code 
	+ "	<a href='javascript:void(0)' onclick='game_favorite_box_close();' class='cannel'>取消</a>"
	+ "<input type='hidden' name='grade' value='0' />"
	+ "<input type='hidden' name='gameid' value='"+gameid+"' />"
	+ "</form>"
	+ "<a href='javascript:void(0)' onclick='game_favorite_box_close();' class='closed'>关闭</a>"

	return code;
}

function game_favorite_box_close(){
	gf_add_favorite_callback_func = null;
	gf_is_refresh_page = false;
	gf_default_grade = null;
	gf_doaction_status = 0;

	cancel_div(game_favorite_box_id);
	cancel_div(gf_opacity_div_id);
}

function game_favorite_box_position_change(){
	try{
		var b = $obj(game_favorite_box_id);//定位是相当于父div的
		var top = getScroll().t + 200;
		var step = 0.1*(top-gf_old_y_position);
		if(step>0){
			step = Math.ceil(step);
		}else{
			step = Math.floor(step);
		}
		if(step==0){
			return '';
		}
		gf_old_y_position = gf_old_y_position + step;
		b.style.top = gf_old_y_position + "px";
	}catch(e){}
}


function init_user_game_info(gameid){
	var url = 'http://usercp.movie.xunlei.com/game.php?action=get_game_info&gameid='+gameid+'&callback=init_user_game_info_success';
	JSONscriptQuery(url);
}

function init_user_game_info_success(jsonData){
	var frm = $obj('game_favorite_box_frm');
	if(parseInt(jsonData.tid)==1){
		jsonData = jsonData.data;
		if(parseInt(jsonData.is_favorited)==1){  //如果已经被收藏的
			//设置评分
			if(typeof gf_default_grade != 'number'){
				var grade = parseInt(jsonData.info.grade);
				//set_grade_value(grade);
				game_favorite_grade_change(grade);
			}
			
			frm.favorites.value = jsonData.info.favorites;
			frm.msg.value = jsonData.info.msg;

			//设置是否公开
			var is_open = parseInt(jsonData.info.is_open);
			frm.is_open.value = is_open;
			if(is_open==0){
				frm.is_open.checked = true;
			}else{
				frm.is_open.checked = false;
			}

		}

		//设置我常用的标签
		try{
			var len = jsonData.my_often_favorites.length;
			if(0==len){
				$obj('my_often_favorites').innerHTML = '(暂时还没有标签)';
			}else{
				$obj('my_often_favorites').innerHTML = '';
				for(var i=0; i<len; i++){
					$obj('my_often_favorites').innerHTML += "<a title='"+jsonData.my_often_favorites[i]+"' href='javascript:void(0)' onclick=\"gf_add_favorite_to_input('"+jsonData.my_often_favorites[i]+"');return false;\"><span>"+jsonData.my_often_favorites[i]+"</span></a>";
				}
			}
		}catch(e){}

		//设置用户常用的标签
		try{
			var len = jsonData.often_favorites.length;
			if(0==len){
				$obj('often_favorites').innerHTML = '(这款游戏暂时还没有标签)';
			}else{
				$obj('often_favorites').innerHTML = '';
				for(var i=0; i<len; i++){
					$obj('often_favorites').innerHTML += "<a title='"+jsonData.often_favorites[i]+"' href='javascript:void(0)' onclick=\"gf_add_favorite_to_input('"+jsonData.often_favorites[i]+"');return false;\"><span>"+jsonData.often_favorites[i]+"</span></a>";
				}
			}
		}catch(e){}


		//设置标签   把光标定位到输入框
		frm.favorites.focus();
		frm.favorites.value += '';
		if(''!=frm.favorites.value){
			frm.favorites.value += ' ';
		}

		//把常用标签里已经在输入框里的变灰（不可用）
		setTimeout("set_often_favorites_status()", 50);

		//初始选择评分为零
		old_grade_selected_value = 0;

	}
	JSONscriptQueryEnd();

	gf_doaction_status = 2;
}

//*****************评分相关 BEGIN ***********************************

var old_grade_value = 0;
var old_grade_selected_value = 0;
var is_on_grade_selected = false;
//设置评分
function set_grade_value(grade){
	if(is_on_grade_selected){
		return ;
	}
	for(var i=1; i<=10; i++){
		if(i>grade){
			$obj('game_favorite_grade_show_'+i).src = grade_img0_src;
		}else{
			$obj('game_favorite_grade_show_'+i).src = grade_img1_src;
		}
	}
	$obj('game_favorite_box_frm').grade.value = grade;
	old_grade_selected_value = 0;
	old_grade_value = grade;
}

//选择评分
function game_favorite_grade_change_show(id, flag){
		is_on_grade_selected = true;
		if(id>old_grade_selected_value){
			for(var i=old_grade_selected_value+1; i<=id; i++){
				$obj('game_favorite_grade_show_'+i).src = grade_img2_src;
			}
		}else{
			for(var i=old_grade_selected_value; i>id; i--){
				$obj('game_favorite_grade_show_'+i).src = grade_img2_src;
			}
			for(var i=id+1; i<=10; i++){
				if(i>old_grade_value){
					$obj('game_favorite_grade_show_'+i).src = grade_img0_src;
				}else{
					$obj('game_favorite_grade_show_'+i).src = grade_img1_src;
				}
			}
		}
	if(1==flag){ ;
	}else{
		if(gf_doaction_status!=1){
			old_grade_selected_value = id;
			is_on_grade_selected = false;
			var grade = parseInt($obj('game_favorite_box_frm').grade.value);
			setTimeout('set_grade_value('+grade+')', 200);
		}
	}
}

function game_favorite_grade_change(grade){
	is_on_grade_selected = false;
	set_grade_value(grade);
}
//*****************评分相关 END ***********************************

function gf_add_favorite_to_input(favorite){
	var o = $obj('game_favorite_box_frm').favorites;
	var val = o.value;//.split(' ')
	if(gf_check_favorites_input(val+' '+favorite)){
		val += ' ' + favorite + ' ';
	}

	o.value = gf_formate_favorites_input(val);
	setCaretAtEnd(o);
	o.focus();
	setTimeout("gf_set_favorite_input_alert_default();", 1000);
	setTimeout("set_often_favorites_status();", 50);
	//set_often_favorites_status();
	return false;
}

function gf_set_favorite_input_alert_default(){
	gf_set_favorite_input_alert('');
}

function gf_formate_favorites_input(str){
	var reg = /^(\s+)/;
	str = str.replace(reg, '');
	reg = /(\s+)/g;
	str = str.replace(reg, ' ');
	return str;
}



//检查输入框的标签数量,是否重复及标签的长度
function gf_check_favorites_input(fs){
	if(fs==''){
		fs = $obj('game_favorite_box_frm').favorites.value;
	}
	fs = fs.trim();
	//if(fs==''){
	//	favorite_input_alert('请输入标签名');
	//	return false;
	//}


	var fa = fs.split(' ');  //原数组
	var len = fa.length;
	var max_str_len = 0;
	var max_str_val = '';

	//非法标签
	var illege_favorite = '';
	var is_illege = false;

	for(var i=len-1; i>=0; i--){
		fa[i] = fa[i].trim();
		if(fa[i]==''){
			fa.splice(i, 1);
		}else{
			if(fa[i].strlen()>max_str_len){
				max_str_len = fa[i].strlen();
				max_str_val = fa[i];
			}
			if(!game_favorite_illege_reg.test(fa[i])){
				illege_favorite = fa[i];
				is_illege = true;
			}
		}
	}
	len = fa.length;

	if(len>GAME_FAVORITES_MAX_NUM){
		gf_set_favorite_input_alert('最多可以输入'+GAME_FAVORITES_MAX_NUM+'个');
		return false;
	}

	if(fa.hasRepeatElementLowerCase()){
		gf_set_favorite_input_alert('输入的标签有重复(不区分大小写)');
		return false;
	}

	if(max_str_len>GAME_FAVORITE_LEN_MAX){
		gf_set_favorite_input_alert('标签长度不能超过'+GAME_FAVORITE_LEN_MAX+'个字符');
		return false;
	}

	//您只能使用中文和英文字符以及数字作为标签
	if(is_illege){
		gf_set_favorite_input_alert('您只能使用中文和英文字符以及数字作为标签');
		return false;
	}

	gf_set_favorite_input_alert('');
	setTimeout("set_often_favorites_status()", 50);
	return true;
}

function gf_set_favorite_input_alert(msg){
	//$obj('add_favorite_submit_btn').disabled = false;
	if(msg.trim()==''){
		$obj('game_favorite_box_frm').favorites.style.backgroundColor = '#fff';
	}else{
		$obj('game_favorite_box_frm').favorites.style.backgroundColor = '#f2f9fe';
	}
	$obj('game_favorite_box_frm').favorites.focus();
	$obj('favorites_input_alert').innerHTML = msg;
}


function set_often_favorites_status(){
	_do_set_often_favorites_status('my_often_favorites');
	_do_set_often_favorites_status('often_favorites');
}

//把常用标签里已经在输入框里的变灰（不可用）
function _do_set_often_favorites_status(div_id){
	var often_favorites_list = $obj(div_id).childNodes;
	var input_values = $obj('game_favorite_box_frm').favorites.value.toLowerCase().split(' ');
	var len = 0;
	len = often_favorites_list.length;

	for(var i=0; i<len; i++){
		try{
			if(often_favorites_list[i].nodeName == 'A'){
				var fav = often_favorites_list[i].title.toLowerCase();
				if(input_values.inArray(fav)){
					often_favorites_list[i].style.backgroundPosition = '0 -550px';
					often_favorites_list[i].childNodes[0].style.backgroundPosition = 'right -550px';
					often_favorites_list[i].onclick = function(){
						gf_del_favorite_from_input(this);
					}
					//alert('测试');
				}else{
					often_favorites_list[i].style.backgroundPosition = '0 -569px';
					often_favorites_list[i].childNodes[0].style.backgroundPosition = 'right -569px';
					often_favorites_list[i].onclick = function(){
						gf_add_favorite_to_input(this.title);
					}
					//alert('测试');
				}
			}
		}catch(e){}
	}
}

function gf_del_favorite_from_input(obj){
	var reg = eval('/'+obj.title+'/gi');
	var o = $obj('game_favorite_box_frm').favorites;
	var input = o.value;
	input = input.replace(reg, '');
	input = gf_formate_favorites_input(input);
	o.value = input;

	setTimeout("set_often_favorites_status()", 50);
	setCaretAtEnd(o);
	o.focus();
}

//提交数据
function submit_button_click(type){
	if(!gf_check_favorites_input('')){
		return false;
	}
	var frm = $obj('game_favorite_box_frm');
	if(frm.is_open.checked){
		frm.is_open.value = 0;
	}else{
		frm.is_open.value = 1;
	}

	if(frm.msg.value.strlen()>GAME_MSG_MAX_LEN){
		alert('简评最长不能操作'+GAME_MSG_MAX_LEN+'个字符（一个汉字按两个字符计算）');
		frm.msg.focus();
		return false;
	}

	var url = 'http://usercp.movie.xunlei.com/game.php?action=add&type='+type+'&callback=gf_callback&'+getQueryString('game_favorite_box_frm');
	setTimeout("JSONscriptQuery('"+url+"');", 1);
	//alert(url);

	return false;
}

//回调函数
function gf_callback(json){
	//alert(json);
	if(1==parseInt(json.tid)){
		$obj('add_favorite_action_alert').innerHTML = "<font color='red'><b>操作成功，1秒之后自动关闭......</b></font>";
		if(gf_is_refresh_page){
			setTimeout("refresh_page();", 1000);
		}else{
			setTimeout("game_favorite_box_close();", 1000);
		}

		var gf_msg = null;
		try{
			gf_msg = gf_add_favorite_callback_func(json);
		}catch(e){}
		JSONscriptQueryEnd();
		return gf_msg;
	}else{
		alert(json.msg);
	}

}


function gf_del_game_callback(json){
	try{
		gf_del_game_callback_func(json);
	}catch(e){
		//alert(e);
	}finally{
		JSONscriptQueryEnd();
	}
}