// COOKIES

function addCookie(name, value, hours) {
	if(hours) {
		var date = new Date();
		date.setTime(date.getTime()+(hours*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function removeCookie(name) {
	addCookie(name, "", -1);
}
function getCookie(name, def) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return def;
}

function trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

// API

var message_timer_id = 0;
var message_count = 0;
var message_ids = 0;

function api_send($params) {
	$.post('/ajax.php', $params, api_onAjaxSuccess);
}
function api_onAjaxSuccess(data) {
	if(!data || data == "") return;
	//alert(data);
	json = eval('('+data+')');
	if(json.errorNum) {
		if(json.action == "login") {
			$("#login_form > #password").get(0).value = "";
			$("#login_form > #password").addClass("error");
		} else if(json.action == "rating" || json.action == "favadd" || json.action == "favremove" || json.action == "comm_add") {
			location.href = portal+"/reg";
		} else {
			alert(json.errorMsg);
		}
	} else {
		//alert(data);
		var a = json.action;
		if(a == "ping") {
			//alert(data);
			var val = '';
			if(json.messages != null) {
				for(var i = 0; i < json.messages.length; i++) {
					var m = $("#message_container > .message:first").clone();
					m.removeClass('tpl');
					m.html(json.messages[i].msg);
					alert
					message_ids++;
					eval("m.addClass('message"+message_ids+"');");
					eval("setTimeout(function() {$(\".message"+message_ids+"\").hide('normal'); setTimeout(function() {$(\".message"+message_ids+"\").remove();}, 2000); if(--message_count <= 0) {$(\"#message_container\").hide('normal');}}, 3000);");
					m.appendTo("#message_container");
					m.show('normal');
					if(json.messages[i].type == "achieve") {
						$("#ach_"+json.messages[i].data[1]).removeClass('skip');
						$("#ach_"+json.messages[i].data[1]+"_lock").addClass('skip');
					}
				}
				if(message_count <= 0 && json.messages.length > 0) {
					$("#message_container").show('normal');
				}
				message_count += json.messages.length;
				//clearTimeout(message_timer_id);
				//message_timer_id = setTimeout(function() {$("#message").hide('normal');}, 3000);
			}
		} else if(a == "reg") {
			//alert("reg");
			location.href = portal+"#regok";
		} else if(a == "login") {
			if(module_name == "game" || module_name == "user") {
				location.reload(true);
				return;
			}
			if(module_name == "join") {
				location.href = portal;
				return;
			}
			$("#login_form > #password").get(0).value = "";
			$("#login_info_block > a > .userlogin").text(json.login);
			$(".char_level").text(json.char_level);
			$(".char_expirience").text(json.char_expirience);
			$(".char_expirience_max").text(json.char_expirience_max);
			$(".char_points").text(json.char_points);
			$(".char_strength").text(json.char_strength);
			$(".char_dexterity").text(json.char_dexterity);
			$(".char_luck").text(json.char_luck);
			$("img#avatar").attr({src:json.avatar});
			$("#login_info_block").removeClass("skip");
			$("#login_form_block").addClass("skip");
			$("#login_info_block").removeClass("tip");
			//$("#login_info_block").addClass("tip");
		} else if(json.action == "logout") {
			if(module_name == "user") {
				location.href = portal;
				return;
			} else if(true || module_name == "game") {
				location.reload(true);
				return;
			}
			/*
			$("#login_form_block").removeClass("skip");
			$("#login_info_block").addClass("skip");
			*/
		} else if(a == "forgot") {
			$("#txt_forgot").removeClass("skip");
			$("#frm_forgot").addClass("skip");
		} else if(a == "upload") {
			if(json.type == "avatar") {
				api_send({a:"change_avatar", file:json.file});
			}
		} else if(a == "avatar") {
			//$("img#avatar").attr({src:"1"});
			$("img#avatar").attr({src:json.avatar+"?"+Math.random()});
		} else if(json.action == "favadd") {
			$("#favadd").addClass("skip");
			$("#favremove").removeClass("skip");
		} else if(json.action == "favremove") {
			if(module_name == "game") {
				$("#favadd").removeClass("skip");
				$("#favremove").addClass("skip");
			} else if(module_name == "user") {
				$("#game"+json.game_id).addClass("skip");
			}
		} else if(json.action == "frndadd") {
			$("#frndadd").addClass("skip");
			$("#frndremove").removeClass("skip");
		} else if(json.action == "frndremove") {
			$("#frndadd").removeClass("skip");
			$("#frndremove").addClass("skip");
		} else if(json.action == "rating") { // RATING
			//$("#user_rating > .score").text(json.score);
			//$("#user_rating").removeClass("skip");
			$("#user_rating").addClass("skip");
			is_rating_auto = true;
			$(".star").rating('select', Math.round(json.rating.score)-1);
			is_rating_auto = false;
			//$("#norating").addClass("skip");
		} else if(json.action == "comm_add") {
			//location.href = location.href+"#comments";
			//location.reload(true);
			c = $("#commenttemplate").clone();
			$(".login > a", c).attr("href", portal+"/user/"+json.login);
			$(".login > a", c).html(json.login);
			$(".text", c).html(json.text);
			$(c).removeClass("skip");
			c.insertBefore($(".comment").get(0));
		} else if(a == "comm_publish") {
			if(json.val == 0) { // hide
				$("#comm"+json.id+"_control_nohide").addClass("skip");
				$("#comm"+json.id+"_control_hide").removeClass("skip");
			} else { // show
				$("#comm"+json.id+"_control_nohide").removeClass("skip");
				$("#comm"+json.id+"_control_hide").addClass("skip");
			}
		} else if(a == "comm_remove") {
			$("#comment"+json.id).addClass("skip");
		} else if(a == "char_add") {
			$(".char_points").text(json.points);
			$(".char_"+json.name).text(json.value);
			if(json.points <= 0) {
				$(".char_add").addClass("skip");
			}
		}
	}
}

// user
function user_reg() {
	var login = $("#reg_form > p > #login").get(0).value;
	var password = $("#reg_form > p > #password").get(0).value;
	var password2 = $("#reg_form > p > #password2").get(0).value;
	if(password != password2) {
		$("#reg_form > p > #password").get(0).value = "";
		$("#reg_form > p > #password2").get(0).value = "";
		alert("Passwords error...");
		return;
	} else {
		var key = $("#reg_form > p > #key").get(0).value;
		var hkey = $("#reg_form > #hkey").get(0).value;
		var email = $("#reg_form > p > #email").get(0).value;
		api_send({a:"reg", login:login, password:password, email:email, key:key, hkey:hkey});
	}
}
function user_login() {
	// находим логин и пароль и используем AJAX API.
	$("#login_form > #login").removeClass("error");
	var login = $("#login_form > #login").get(0).value;
	$("#login_form > #password").removeClass("error");
	var password = $("#login_form > #password").get(0).value;
	api_send({a:"login", login:login, password:password});
}
function user_logout() {
	api_send({a:"logout"});
}
function user_forgot() {
	var email = $("#forgot_form > p > #email").get(0).value;
	var key = $("#forgot_form > p > #key").get(0).value;
	var hkey = $("#forgot_form > #hkey").get(0).value;
	api_send({a:"forgot", email:email, key:key, hkey:hkey});
}

// favorites
function fav_add(game_id) {
	api_send({a:"favadd", game_id:game_id});
}
function fav_remove(game_id) {
	api_send({a:"favremove", game_id:game_id});
}

// friends
function frnd_add(friend_id) {
	api_send({a:"frndadd", friend_id:friend_id});
}
function frnd_remove(friend_id) {
	api_send({a:"frndremove", friend_id:friend_id});
}

// rating
function rating(game_id, score) {
	api_send({a:"rating", game_id:game_id, score:score});
}

// comments
function comm_add(type, parent_id) {
	var text = trim($("#comment_form > #text").get(0).value);
	if(text.length > 0) {
		$("#comment_form > #text").get(0).value = "";
		api_send({a:"comm_add", type:type, parent_id:parent_id, text:text});
	}
}
function comm_publish(id, v) {
	api_send({a:"comm_publish", id:id, val:v});
}
function comm_remove(id) {
	api_send({a:"comm_remove", id:id});
}

// games
function game_play(id) {
	var is_play = getCookie("play_game_"+id, false);
	//alert("play "+id+" is "+is_play);
	if(!is_play) {
		addCookie("play_game_"+id, true, 1);
		api_send({a:"game_play", id:id});
	}
}

// character
function char_add(name) {
	api_send({a:"char_add", name:name});
}

// ping
function api_ping() {
	api_send({a:"ping", rnd:Math.random()});
}

//$(function() {
	//removeCookie("play_game_6");
//});
