﻿/*
 * EN-Addons
 * кубки, подписи, календарь
 *
 * Tucker http://56.en.cx/UserDetails.aspx?uid=19577
 *
 * http://56.en.cx/Addons.aspx?aid=3646
 *
 * 2.0
 *
 */
$('<link href="http://d1.endata.cx/data/games/7338/awards.css" type="text/css" rel="stylesheet" />').appendTo('head');
$('<link href="http://d1.endata.cx/data/games/7338/calendar.css" type="text/css" rel="stylesheet" />').appendTo('head');

var oscars_data = [];
var tmedals_data = [];
var medals_data = [];
var games_data = [];
var seasons = [];
seasons[seasons.length] = "";
var g_sid;

var desc = [];
var hiderank = [];

var holidays = [];

function init_popup(){
//	$(".box-tr").click(function(){return false;});	// чтобы НЕкликабельны были даты в календаре
	$(".ul-tr ul").hide(); // Opera Fix
	$(".ul-tr li").hover(
		function(){$(this).find('ul:first').show("fast").attr("style","z-index:10000");},
		function(){$(this).find('ul:first').hide("fast").attr("style","z-index:auto");});
}

function en_addon(){
	var g_init=0;
	var g_init=0;
	var oscars = [];
	var oscars_id = [];
	var tmedals = [];
	var tmedals_id = [];
	var medals = [];
	var medals_id = [];
	var games = [];
	var games_id = [];

	var users = [];
	var users_id = [];
	var teams = [];
	var teams_id = [];

	var it_num = [];
	var lv_sid = -1;
	this.pv_sid = -1;

	var gc_game_unknown = 99; // номер типа игры "Неизвестно"
	var gc_game_planning = 100; // сдвиг для "Запланированная"
	var gc_length_with_type = 6; // кол-во данных по игре вместе с типом игры


	//*************************************************
	// для сортировки
	//*************************************************
	function sortTeamUser(a,b) {
		// сравнение по количеству побед
		for (i in a[5]){if (a[5][i].length<b[5][i].length){return 1;}else if (a[5][i].length>b[5][i].length){return -1;}}
		// по последней игре или по id
		if (a[4]!=b[4]){return a[4]-b[4];} else {return a[0]-b[0];}
	}

	//*************************************************
	// формирование массивов данных
	//*************************************************
	function doInit(){
		if (lv_sid  == -1){lv_sid = g_sid}
		g_init = 1;
		var wa_bdat = seasons[lv_sid][0];
		var wa_edat=(lv_sid==seasons.length-1)?99999999:seasons[lv_sid+1][0];

		it_num[it_num.length] = "I";
		it_num[it_num.length] = "II";
		it_num[it_num.length] = "III";

		for (i in oscars_data){if (oscars_data[i][0]>=wa_bdat && oscars_data[i][0]<wa_edat){oscars.push(oscars_data[i]);}}
		for (i in tmedals_data){if (tmedals_data[i][0]>=wa_bdat && tmedals_data[i][0]<wa_edat){tmedals.push(tmedals_data[i]);}}
		for (i in medals_data){if (medals_data[i][0]>=wa_bdat && medals_data[i][0]<wa_edat){medals.push(medals_data[i]);}}
		for (i in games_data){
			if (games_data[i][0]>=wa_bdat && games_data[i][0]<wa_edat){
				if (games_data[i].length==gc_length_with_type) {
					if (games_data[i][5].length!=0){
						games[games.length]=games_data[i];
					}
				} else if (games_data[i][4].length!=0) {
					games[games.length]=[games_data[i][0],games_data[i][1],gc_game_unknown,games_data[i][2],games_data[i][3],games_data[i][4]];
				}
			}	
		}

		for (i in oscars){for (j in oscars[i][2]){if (oscars_id[oscars[i][2][j]] == null){oscars_id[oscars[i][2][j]] = [];}oscars_id[oscars[i][2][j]].push(i);}}
		for (i in tmedals){for (j in tmedals[i][2]){if (tmedals_id[tmedals[i][2][j]] == null){tmedals_id[tmedals[i][2][j]] = [];}tmedals_id[tmedals[i][2][j]].push(i);}}
		for (i in medals){for (j in medals[i][2]){if (medals_id[medals[i][2][j]] == null){medals_id[medals[i][2][j]] = [];}medals_id[medals[i][2][j]].push(i);}}


		for (i in games){games_id[games[i][1]]=i;}
		for (i in games){ // по играм
			for (j in games[i][5]){ // по местам
				for (k in games[i][5][j][2]){ // по игрокам
					var wa_uid = games[i][5][j][2][k][0];
					var wa_upos = users_id[wa_uid];
					if (wa_upos == null){
						wa_upos = users.length;
						users_id[wa_uid] = wa_upos;
						users[wa_upos] = [wa_uid,"",0,"",0,[],[]];
						for (jj in games[i][5]){users[wa_upos][5][jj]=[]}
					}
					users[wa_upos][1] = games[i][5][j][2][k][1];
					users[wa_upos][2] = games[i][5][j][0];
					users[wa_upos][3] = games[i][5][j][1];
					users[wa_upos][4] = i;
					users[wa_upos][5][j].push(games[i][1]);
					users[wa_upos][6].push([games[i][1],j]);
				}
				var wa_tid = games[i][5][j][0];
				if (wa_tid!=0) {
					var wa_tpos = teams_id[wa_tid];
					if (wa_tpos == null){
						wa_tpos = teams.length;
						teams_id[wa_tid] = wa_tpos;
						teams[wa_tpos] = [wa_tid,"",0,"",0,[],[]];
						for (jj in games[i][5]){teams[wa_tpos][5][jj]=[]}
					}
					teams[wa_tpos][1] = games[i][5][j][1];
					teams[wa_tpos][4] = i;
					teams[wa_tpos][5][j].push(games[i][1]);
					teams[wa_tpos][6].push([games[i][1],j]);
				}
			}
		}
		users.sort(sortTeamUser);
		users_id = [];
		for (i in users){users_id[users[i][0]]=i;}
		teams.sort(sortTeamUser);
		teams_id = [];
		for (i in teams){teams_id[teams[i][0]]=i;}
        }

	//*************************************************
	// строка кубков
	//*************************************************
	function getCups(p_id){
		var wa_st = "";
		var wa_upos = users_id[p_id];
		if (wa_upos != null){
			for (i in users[wa_upos][5]){
				for (j in users[wa_upos][5][i]){
					var wa_gpos = games_id[users[wa_upos][5][i][j]];
					if (games[wa_gpos][3]==0) {
						wa_st += "<a class='a_t a_c" + i + "' href='/GameDetails.aspx?gid=" + games[wa_gpos][1] + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + "'></a>";
					} else {
						wa_st += "<a class='a_t a_c" + i + "' href='http://" + games[wa_gpos][3] + ".en.cx/GameDetails.aspx?gid=" + games[wa_gpos][1] + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></a>";
					}
				}
			}
		}
		return wa_st;
	}

	//*************************************************
	// строка кубков
	//*************************************************
	function getCupsTop(p_id){
	var wa_st = "";
	var wa_gpos;
		var wa_upos = users_id[p_id];
		if (wa_upos != null){
			var wa_title = "";
			for (i in users[wa_upos][5]){
				for (j in users[wa_upos][5][i]){
					wa_gpos = games_id[users[wa_upos][5][i][j]];
					if (games[wa_gpos][3]==0) {
						wa_title += "<span class='a_t a_c" + i + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + "'></span>";
					} else {
						wa_title += "<span class='a_t a_c" + i + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></span>";
					}
				}
			}
			var wa_menu = "";
			for (i in users[wa_upos][6]){
				wa_gpos = games_id[users[wa_upos][6][i][0]];
				if (games[wa_gpos][3]==0) {
					wa_menu += "<li>"+ "<span class='a_t a_c" + users[wa_upos][6][i][1] + "' title='" + seasons[lv_sid][1] + it_num[users[wa_upos][6][i][1]] + " место в игре " + games[wa_gpos][4] + "'></span>&nbsp;<a class='lm' href='/GameDetails.aspx?gid=" + games[wa_gpos][1] + "'>" + games[wa_gpos][4] + "</a></li>";
				} else {
					wa_menu += "<li>"+ "<span class='a_t a_c" + users[wa_upos][6][i][1] + "' title='" + seasons[lv_sid][1] + it_num[users[wa_upos][6][i][1]] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></span>&nbsp;<a class='lm' href='http://" + games[wa_gpos][3] + ".en.cx/GameDetails.aspx?gid=" + games[wa_gpos][1] + "'>" + games[wa_gpos][4] + "</a> [<a class='lm' href='http://" + games[wa_gpos][3] + ".en.cx'>" + games[wa_gpos][3] + ".en.cx</a>]</li>";
				}
			}
			wa_st = "<ul class='ul-tr'><li><a href='' class='box-tr' onClick='return false;'>" + wa_title + "</a><ul>" + wa_menu + "</ul></li></ul>";
		}
		return wa_st;
	}

	//*************************************************
	// строка командных кубков
	//*************************************************
	function getTCups(p_id){
	var wa_st = "";
		var wa_tpos = teams_id[p_id];
		if (wa_tpos != null){
			for (i in teams[wa_tpos][5]){
				for (j in teams[wa_tpos][5][i]){
					var wa_gpos = games_id[teams[wa_tpos][5][i][j]];
					if (games[wa_gpos][3]==0) {
						wa_st += "<a class='a_t a_c" + i + "' href='/GameDetails.aspx?gid=" + games[wa_gpos][1] + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + "'></a>";
					} else {
						wa_st += "<a class='a_t a_c" + i + "' href='http://" + games[wa_gpos][3] + ".en.cx/GameDetails.aspx?gid=" + games[wa_gpos][1] + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></a>";
					}
				}
			}
		}
		return wa_st;
	}

	//*************************************************
	// строка командных кубков
	//*************************************************
	function getTCupsTop(p_id){
	var wa_st = "";
	var wa_gpos;
		var wa_tpos = teams_id[p_id];
		if (wa_tpos != null){
			var wa_title = "";
			for (i in teams[wa_tpos][5]){
				for (j in teams[wa_tpos][5][i]){
					wa_gpos = games_id[teams[wa_tpos][5][i][j]];
					if (games[wa_gpos][3]==0) {
						wa_title += "<span class='a_t a_c" + i + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + "'></span>";
					} else {
						wa_title += "<span class='a_t a_c" + i + "' title='" + seasons[lv_sid][1] + it_num[i] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></span>";
					}
				}
			}
			var wa_menu = "";
			for (i in teams[wa_tpos][6]){
				wa_gpos = games_id[teams[wa_tpos][6][i][0]];
				if (games[wa_gpos][2]==0) {
					wa_menu += "<li><span class='a_t a_c" + teams[wa_tpos][6][i][1] + "' title='" + seasons[lv_sid][1] + it_num[teams[wa_tpos][6][i][1]] + " место в игре " + games[wa_gpos][4] + "'></span>&nbsp;<a class='lm' href='/GameDetails.aspx?gid=" + games[wa_gpos][1] + "'>" + games[wa_gpos][4] + "</a></li>";
				} else {
					wa_menu += "<li><span class='a_t a_c" + teams[wa_tpos][6][i][1] + "' title='" + seasons[lv_sid][1] + it_num[teams[wa_tpos][6][i][1]] + " место в игре " + games[wa_gpos][4] + " [" + games[wa_gpos][3] + ".en.cx]'></span>&nbsp;<a class='lm' href='http://" + games[wa_gpos][3] + ".en.cx/GameDetails.aspx?gid=" + games[wa_gpos][1] + "'>" + games[wa_gpos][4] + "</a> [<a class='lm' href='http://" + games[wa_gpos][3] + ".en.cx'>" + games[wa_gpos][3] + ".en.cx</a>]</li>";
				}
			}
			wa_st = "<ul class='ul-tr'><li><a href='' class='box-tr' onClick='return false;'>" + wa_title + "</a><ul>" + wa_menu + "</ul></li></ul>";
		}
		return wa_st;
	}

	//*************************************************
	// строка премий
	//*************************************************
	function getOscars(p_id){
		var wa_st = "";
		if (oscars_id[p_id] != null){
			for (i in oscars_id[p_id]){
				if (oscars[oscars_id[p_id][i]][3] != null) {
					wa_st += "<a class='a_t a_o' href='" + oscars[oscars_id[p_id][i]][3] + "' title='" + oscars[oscars_id[p_id][i]][1] + "'></a>";
				} else {
					wa_st += "<span class='a_t a_o' title='" + oscars[oscars_id[p_id][i]][1] + "'></span>";
				}
			}
		}
		return wa_st;
	}

	//*************************************************
	// строка орденов
	//*************************************************
	function getMedals(p_id){
		var wa_st = "";
		if (medals_id[p_id] != null){
			for (i in medals_id[p_id]){
				if (medals[medals_id[p_id][i]][4] != null) {
					wa_st += "<a class='a_t a_m" + medals[medals_id[p_id][i]][3] + "' title='" + medals[medals_id[p_id][i]][1] + "' href='http://" + medals[medals_id[p_id][i]][4] + "'></a>";
				} else {
					wa_st += "<span class='a_t a_m" + medals[medals_id[p_id][i]][3] + "' title='" + medals[medals_id[p_id][i]][1] + "'></span>";
				}
			}
		}
		return wa_st;
	}

	//*************************************************
	// строка командных орденов
	//*************************************************
	function getTMedals(p_id){
		var wa_st = "";
		if (tmedals_id[p_id] != null){
			for (i in tmedals_id[p_id]){
				if (tmedals[tmedals_id[p_id][i]][4] != null) {
					wa_st += "<a class='a_t a_m" + tmedals[tmedals_id[p_id][i]][3] + "' title='" + tmedals[tmedals_id[p_id][i]][1] + "' href='http://" + tmedals[tmedals_id[p_id][i]][4] + "'></a>";
				} else {
					wa_st += "<span class='a_t a_m" + tmedals[tmedals_id[p_id][i]][3] + "' title='" + tmedals[tmedals_id[p_id][i]][1] + "'></span>";
				}
			}
		}
		return wa_st;
	}


	//*************************************************
	// отрисовка наград
	//*************************************************
	function doAwards_proc(use_cookie){
	var is_pos;
	var wa_id;
	var wa_awards;
	if (g_init != 1){doInit();}
	if ((navigator.appName.match("Opera")) && ((navigator.appName.match("Mini")) || (navigator.appVersion.match("Mini")))) { exit;}
	if (location.pathname.match("/Messages.aspx") != null) {
		// User
		$('.msgHead .gbUserInfo a[href^="/UserDetails.aspx?uid"]').each(function(el) {
			while ($(this).next().attr('class')=="my_class"){$(this).next().remove();} //цитаты с кубками (было давно, сейчас не знаю)
//titleText.indexOf(document.domain) < 0
			if ($(this).parent().parent().next().attr('class').indexOf("gbMessage")>=0){ //цитаты без кубков
				wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
				if (is_pos){
					if (users_id[wa_id]!=null){
						wa_awards = "<span class='white'>("+(users_id[wa_id] - "-1")+")</span>&nbsp;"+getOscars(wa_id)+getMedals(wa_id);
					} else {
						wa_awards = getOscars(wa_id)+getMedals(wa_id);
					}
				} else {
					wa_awards = getCups(wa_id)+getOscars(wa_id)+getMedals(wa_id);
				}
				if (wa_awards != "") {
//					wa_awards = '<span class="my_class" style="display:none;">&nbsp;'+wa_awards+'</span>';
//					$(this).parent().removeClass("wrap250");
					wa_awards = '<div class="my_class" style="display:none;">&nbsp;'+wa_awards+'</div>';
					$(this).parent().after(wa_awards);
				}
			}
		});

		// Team
		$('.msgHead .gbUserInfo a[href^="/Teams/TeamDetails.aspx?tid"]').each(function(el) {
			wa_id = $(this).attr('href').match(/tid=(\d+)/)[1];
			wa_awards = getTMedals(wa_id);
			if (wa_awards != "") {
				wa_awards = '<span class="my_class" style="display:none;">&nbsp;'+wa_awards+'</span>';
				$(this).parent().after(wa_awards);
			}
		});
	} // Messages

	if (location.pathname.match("/UserList.aspx") != null) {
		$('a[id^="UsersRepeater_ctl"][id$="lnkUserInfo"]').each(function(){
			wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
			wa_awards = getCups(wa_id)+getOscars(wa_id)+getMedals(wa_id);
			wa_awards = '<span class="my_class" style="display:none;">&nbsp;'+wa_awards+'&nbsp;</span>';
			$(this).parent().next().prepend(wa_awards);
		});
	} // UserList

	if (location.pathname.match("/TeamList.aspx") != null) {
		$('a[id^="TeamsRepeater_ctl"][id$="_lnkTeamInfo"]').each(function(){
			wa_id = $(this).attr('href').match(/tid=(\d+)/)[1];
			wa_awards = getTMedals(wa_id);
			if (wa_awards != "") {
				wa_awards = '<span class="my_class" style="display:none;">&nbsp;'+wa_awards+'&nbsp;</span>';
				$(this).parent().next().prepend(wa_awards);
			}
		});
	} // TeamList
	} // function doAwards_proc()

	this.doAwards = function(use_cookie){
		if ((location.pathname.match("/Messages.aspx") != null) ||
		    (location.pathname.match("/UserList.aspx") != null) ||
		    (location.pathname.match("/TeamList.aspx") != null) ){
			$(function(){
				doAwards_proc(use_cookie);
				$(".my_class").animate({opacity: "show"}, "slow")
			});
		}
	} // function doAwards()

	//*************************************************
	// ТОП-10 игроков
	//*************************************************
	function doUTop(p_cnt){
	var i;
	var wa_i = 0;
		if (g_init != 1){doInit();}
		if ((p_cnt == 0) || (p_cnt>users.length)) {p_cnt = users.length;}
		var wa_st="";
		for (i=0;i<p_cnt;i++){
			wa_i = i;
			wa_i++;
			if (users[i][2]!=0){
				wa_st += "<tr><td>"+wa_i+".</td><td><a href='/UserDetails.aspx?uid="+users[i][0]+"'>"+users[i][1]+"</a><br>(<a href='/Teams/TeamDetails.aspx?tid="+users[i][2]+"'>"+users[i][3]+"</a>)</td><td width='100'>"+getCupsTop(users[i][0])+"</td></tr>";
			} else {
				wa_st += "<tr><td>"+wa_i+".</td><td><a href='/UserDetails.aspx?uid="+users[i][0]+"'>"+users[i][1]+"</a></td><td width='100'>"+getCupsTop(users[i][0])+"</td></tr>";
			}
		}
		$(".my_utop").append(wa_st);
	}
	//*************************************************
	// ТОП-10 команд
	//*************************************************
	function doTTop(p_cnt){
	var i;
	var wa_i = 0;
		if (g_init != 1){doInit();}
		if ((p_cnt == 0) || (p_cnt>teams.length)) {p_cnt = teams.length;}
		var wa_st = "";
		for (i=0;i<p_cnt;i++){
			wa_i = i;
			wa_i++;
			wa_st+="<tr><td>"+wa_i+".</td><td width='50'><a href='/Teams/TeamDetails.aspx?tid="+teams[i][0]+"'>"+teams[i][1]+"</a></td><td width='100'>"+getTCupsTop(teams[i][0])+"</td></tr>";
		}
		$(".my_ttop").append(wa_st);
	}

	//*************************************************
	// ТОП-10 игроков и команд
	//*************************************************
	this.doTopList = function(p_cnt){
		$(function(){
			doUTop(p_cnt);
			doTTop(p_cnt);
			$(".doload").remove();
			$(".my_utop").animate({opacity: "show", height: "show"}, "slow");
			$(".my_utop td:not(#my_utoptitle)").css("font-size", "9px");
			$(".my_ttop").animate({opacity: "show", height: "show"}, "slow");
			$(".my_ttop td:not(#my_ttoptitle)").css("font-size", "9px");
			init_popup();
		});
	}

	//*************************************************
	// Общий рейтинг игроков и команд
	//*************************************************
	function doTopList2_proc(){
	var i;
	var wa_i = 0;
	var wa_st="";
		if (g_init != 1){doInit();}
		for (i in users){
			wa_i = i;
			wa_i++;
			if (users[i][2]!=0){
				wa_st += "<tr><td>"+wa_i+".</td><td><a href='/UserDetails.aspx?uid="+users[i][0]+"'>"+users[i][1]+"</a> (<a href='/Teams/TeamDetails.aspx?tid="+users[i][2]+"'>"+users[i][3]+"</a>)</td><td>"+getCups(users[i][0])+"</td><td>&nbsp;&nbsp;</td></tr>";
			} else {
				wa_st += "<tr><td>"+wa_i+".</td><td><a href='/UserDetails.aspx?uid="+users[i][0]+"'>"+users[i][1]+"</a></td><td>"+getCups(users[i][0])+"</td><td>&nbsp;&nbsp;</td></tr>";
			}
		}
		$(".my_top").append(wa_st);

		var wa_td = $(".my_top").children().children().next();
	//	for (i in teams){ // бага лезет. хз
		for (i=0;i<teams.length;i++){
			wa_i = i;
			wa_i++;
			wa_st = "<td>"+wa_i+".</td><td><a href='/Teams/TeamDetails.aspx?tid="+teams[i][0]+"'>"+teams[i][1]+"</a></td><td>"+getTCups(teams[i][0])+"</td>";
			wa_td.eq(i).append(wa_st);
		}
	}
	this.doTopList2 = function(){
		lv_sid = this.pv_sid;
		$(function(){
			doTopList2_proc();
			$(".doload").remove();
			$(".my_top").animate({opacity: "show", height: "show"}, "slow");
			init_popup();
		});
	}

	// ########################################################
	// раздача наград
	// by Tucker (http://56.en.cx/UserDetails.aspx?uid=19577)
	// ########################################################





	//****************************************************
	// КАЛЕНДАРЬ
	// взято с http://omsk.en.cx
	// модифицировано Tucker http://56.en.cx/UserDetails.aspx?uid=19577
	//do_calendar(1,"#0d3b00"); // small=1, color="#0d3b00"
	//
	//var today = new Date();
	//my_en.do_calendar(1,3,2,"#000000",today.getYear(),today.getMonth()+1); 
	////small=1, cnt=3, col=2, color="#000000", year, month
	//****************************************************


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++  calendar
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	function do_calendar_proc(p_small,p_cnt,p_col,p_color,p_yy,p_mm){
		var clndr_data = [];
		var lv_result = "";
		var gc_length_with_type = 6;
		var holidays_data = [];
		var today = new Date();
		var this_day = today.getDate();
		var this_month = today.getMonth()+1;
		var this_year = today.getYear();
		if (this_year < 2000) {
			this_year = this_year + 1900;
		}

		//+++ Объявляем разновидности игр и картинки +++//
		var game_titles = [];
		game_titles[0] = ["Cхватка","/Addons.aspx?aid=336","СХ"];
		game_titles[1] = ["Мозговой штурм","/Addons.aspx?aid=342","МШ"];
		game_titles[2] = ["Фотоэкстрим", "/Addons.aspx?aid=340","ФЭ"];
		game_titles[3] = ["Мокрые войны","/Addons.aspx?aid=338","МВ"];
		game_titles[4] = ["Кешинг","/Addons.aspx?aid=341","КШ"];
		game_titles[5] = ["Фотоохота","/Addons.aspx?aid=337","ФО"];
		game_titles[6] = ["Тайники","/HowTo.aspx?about=TreasureHuntDescription","ТНК"];
		game_titles[7] = ["Точки","/HowTo.aspx?about=PointsDescription","ТЧК"];
		game_titles[8] = ["Видеоохота","/HowTo.aspx?about=VideoHuntDescription","ВО"];
		game_titles[gc_game_unknown] = ["Неизвестно","","ХЗ"];

		//+++ Константы для календаря +++//
		var lt_dnm = ["","Пн","Вт","Ср","Чт","Пт","Сб","Вс"];
		var lt_dnmf = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"];
		var lt_mnm = ["","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
		var lt_mnmr = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
		var lt_ml = [0,31,28,31,30,31,30,31,31,30,31,30,31]; // ниже перееопределение длины февраля
		if (p_yy < 1500) {p_yy = p_yy + 1900;} // Opera и иже
		lt_ml[2] = (((p_yy % 4 == 0) && (p_yy % 100 != 0)) || (p_yy % 400 == 0)) ? 29 : 28; // февраль

		//+++ Праздники. Формат: [День, "Стиль CSS", "Комментарий"], ... +++//
		// если праздники отдельно не определены, то по-умолчанию
		if (holidays.length == 0) {
			// !!!!! ВАЖНО нули в начале дат НЕ ПИСАТЬ !!!!!
			holidays[holidays.length] = [     101,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     102,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     103,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     104,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     105,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     106,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     107,"holiday","Рождество Христово"];
			holidays[holidays.length] = [     108,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     109,"holiday","Новогодние каникулы"];
			holidays[holidays.length] = [     110,"holiday","Новогодние каникулы"];

			holidays[holidays.length] = [     223,"holiday","День защитника Отечества"];
			holidays[holidays.length] = [     308,"holiday","Международный женский день"];
			holidays[holidays.length] = [     501,"holiday","Праздник Весны и Труда"];
			holidays[holidays.length] = [     509,"holiday","День Победы"];
			holidays[holidays.length] = [     612,"holiday","День России"];
			holidays[holidays.length] = [    1104,"holiday","День народного единства"];

			holidays[holidays.length] = [20090111,"wd", ""];
			holidays[holidays.length] = [20090309,"holiday","Дополнительный выходной"];
			holidays[holidays.length] = [20090511,"holiday","Дополнительный выходной"];
			holidays[holidays.length] = [20090430,"pre_holiday","Укороченный день"];
			holidays[holidays.length] = [20090508,"pre_holiday","Укороченный день"];
			holidays[holidays.length] = [20090611,"pre_holiday","Укороченный день"];
			holidays[holidays.length] = [20091103,"pre_holiday","Укороченный день"];
			holidays[holidays.length] = [20091231,"pre_holiday","Укороченный день"];
		}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++ clndr_init (выборка событий для периода вывода календаря)
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		function clndr_init(){
		var i, j, lv_pos;
		var lv_date_from = 0, lv_date_to=0;
		var lv_dom = "", lv_dom2 = "", lv_reg = "";
		var lv_yy1 = 0; 				// год первой даты интервала для дат без года
		var lv_holiday = 0; 				// дата для дат без года
		var lv_result = '';

			if (p_small == 1){
				lv_date_from = p_yy*10000+p_mm*100+1;
				if (p_mm+p_cnt-1>12) {
					lv_date_to = (p_yy+1)*10000+(p_mm+p_cnt-1-12)*100+31;
				} else {
					lv_date_to = p_yy*10000+(p_mm+p_cnt-1)*100+31;
				}
			} else {
				lv_date_from = p_yy*10000+1*100+1;
				lv_date_to = p_yy*10000+12*100+31;
			}
//alert(lv_date_from+'\n'+lv_date_to);

//clndr_data[date,type,url-text,url,text]
//games_data[date,g_id,g_dom,g_name,g_players]
//games_data[date,g_id,g_type,g_dom,g_name,g_players]=[20091109,1232,1,"oren","(#60) &quot;OLYMPIADA-60&quot;",[]]
// 						       20091116,6663,"oren",

			// games +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			for (i=0;i<games_data.length;i++){
				if ((games_data[i][0]>=lv_date_from) && (games_data[i][0]<=lv_date_to)) {
					lv_pos = clndr_data.length;
					clndr_data[lv_pos]=[0,0,""];
					// дата
					clndr_data[lv_pos][0]=games_data[i][0];
					// тип
					if (games_data[i].length==gc_length_with_type) {
						clndr_data[lv_pos][1]=games_data[i][2];
						j=1;
					} else {
						clndr_data[lv_pos][1]=gc_game_unknown;
						j=0;
					}
					// домен
					lv_dom = (games_data[i][j+2]!="")?"http://"+games_data[i][j+2]+".en.cx/":"/";
					lv_dom2_url = (games_data[i][j+2]!="")?" [<a class='lm' href='http://"+games_data[i][j+2]+".en.cx'>"+games_data[i][j+2]+".en.cx</a>]":"";
					lv_dom2 = (games_data[i][j+2]!="")?" ["+games_data[i][j+2]+".en.cx]":"";
					// игра зарегистрирована
					lv_reg = (games_data[i][1]>0)?"GameDetails.aspx?gid=" + games_data[i][1]:"";
					// url
					clndr_data[lv_pos][2]='['+game_titles[clndr_data[lv_pos][1]][2]+"] <a class='lm' href='"+lv_dom+lv_reg+"'>"+games_data[i][j+3]+"</a>"+lv_dom2_url;
					// текст
					clndr_data[lv_pos][3]='['+game_titles[clndr_data[lv_pos][1]][2]+"] "+games_data[i][j+3]+""+lv_dom2;
					// url
					clndr_data[lv_pos][4]=lv_dom+lv_reg;

					// не зарегистрированные игры
					if (games_data[i][1] == 0){clndr_data[lv_pos][1]+=gc_game_planning;};
				} // только в периоде
			} // по всем играм

			// holidays ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			lv_yy1 = lv_date_from - (lv_date_from % 10000);
			for (i=0;i<holidays.length;i++){
				if (holidays[i][0]<10000) {
					lv_holiday = holidays[i][0]+lv_yy1;
					while (lv_holiday <= lv_date_to){
						if ((lv_holiday>=lv_date_from) && (lv_holiday<=lv_date_to)) {
							holidays_data[holidays_data.length]=[lv_holiday,holidays[i][1],holidays[i][2]];
						}
						lv_holiday+=10000;
					}
				} else if ((holidays[i][0]>=lv_date_from) && (holidays[i][0]<=lv_date_to)) {
					holidays_data[holidays_data.length]=holidays[i];
				}
			}
		}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++ fill_day
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//clndr_data[date,type,text]
		function fill_day(p_date, p_day, today){
			var st_url = "";
			var found_day = 0;
			var out_text="";
			// игры
			for (i=0;i<clndr_data.length;i++){
				if (clndr_data[i][0] == p_date) {
					if (found_day) {
						url = 'utype.10';
						wa_menu = '';
						for (ii=0;ii<clndr_data.length;ii++){
							if (clndr_data[ii][0] == p_date) {
								if (clndr_data[ii][1] < gc_game_planning) {url = ((today) ? 't' : '' )+'type.10';}
								wa_menu += "<li>" + clndr_data[ii][2] + "</li>";
							}
						}
						url = "http://cdn.endata.cx/data/games/7338/"+url+".gif";
						cell_content = "<ul class='ul-tr'><li><a href='' class='box-tr' onClick='return false;'><img border='0' width='28' height='28' src='"+url+"' title='Несколько игр' alt='&infin;'></a><ul align='left'>" + wa_menu + "</ul></li></ul>";
						cell_class = "game";
						break;
					} else {
						if (clndr_data[i][1] < gc_game_planning) {
							url = ((today) ? 't' : '' )+'type.' + (clndr_data[i][1]);
							lv_gtype = game_titles[clndr_data[i][1]][2];
						} else {
							url = ((today) ? 't' : 'u' )+'type.' + (clndr_data[i][1] - gc_game_planning);
							lv_gtype = game_titles[clndr_data[i][1] - gc_game_planning][2];
						}
						url = "http://cdn.endata.cx/data/games/7338/"+url+".gif";
						wa_menu = "<li>" + clndr_data[i][2] + "</li>";
// с меню
//						cell_content = "<ul class='ul-tr'><li><a href='"+clndr_data[i][4]+"' class='box-tr'><img border='0' width='28' height='28' src='"+url+"' title='"+clndr_data[i][3]+"' alt='"+lv_gtype+"'></a><ul align='left'>" + wa_menu + "</ul></li></ul>";
// без меню
						cell_content = "<a href='"+clndr_data[i][4]+"'><img border='0' width='28' height='28' src='"+url+"' title='"+clndr_data[i][3]+"' alt='"+lv_gtype+"'></a>";
						cell_class = "game";
						found_day = 1;
					}
				}
			}

			// праздники
			lv_day = p_date%100;
			if (found_day == 0) {
				for (i=0;i<holidays_data.length;i++){
					if (holidays_data[i][0] == p_date) {
						if (holidays_data[i][2] != "") {
		    					cell_content = "<a href='#' title='"+holidays_data[i][2]+"'>"+lv_day+"</a>";
   							cell_class = holidays_data[i][1];
						} else {
		    					cell_content = lv_day;
   							cell_class = holidays_data[i][1];
						}
						found_day = 1;
					}
				}
			}

			if (found_day == 0) {
                		if (today) {
		                       cell_content = lv_day;
		                       cell_class = "currentday";
				} else if (p_day < 6) {
    					cell_content = lv_day;
    					cell_class = "wd";
				} else {
    					cell_content = lv_day;
    					cell_class = "def_holiday";
    				}
			}
			out_text = "<td class='"+cell_class+"'>"+cell_content+"</td>";
			return out_text;
		} //end of fill_day()
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++  fill_table
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		function fill_table(p_mname,p_mlength,p_year,p_month) {
			var lv_today=0;
			var lv_cell=0;
			var lv_day_pos=0;
			var lv_res='';
			lv_res += "<table class='reiting' cellpadding='0' cellspacing='1' border='0' style='background-color: #1B7C00;'>";

			var tt_date = new Date(p_year, p_month-1, 1,0,0,0,0);
			// определение дня недели 1 числа месяца
			var start_day = tt_date.getDay();
				if (start_day == 0) {
				start_day = 7;
			}
			var m_length = p_mlength + start_day - 1;
			var col = Math.ceil(m_length / 7);
			var max_col = col * 7;
			lv_res += "<tr><td class='month' colspan='"+(col+1)+"' align='center' nowrap><center><nobr>"+p_mname+"</nobr></center></td></tr>";
			// по дням недели
			for (var y=1;y<=7;y++) {
				// по столбцам
				for (var x=1;x<=col;x++) {
					// первая колонка - названия дней недели
					if (x == 1) { lv_res += "<tr><td class='dw"+y+"'>"+lt_dnm[y]+"</td>"; }
					lv_cell = y + ((x-1) * 7);
					if (lv_cell >= start_day) {
						lv_day_pos = lv_cell - start_day + 1;
					} else {
						lv_day_pos = 0;
					}
					if (lv_cell > m_length) {
						lv_day_pos = 0;
					}
					//today == true - сегодняшний день
					lv_today = ((p_year == this_year) && (p_month == this_month) && (lv_day_pos == this_day));
					if (lv_day_pos != 0) {
						lv_res += fill_day(p_year*10000+p_month*100+lv_day_pos, y, lv_today);
					} else {
						// пустые дни - до 1 и после последнего
						lv_res += "<td style='background-color: #003300;' width='28' height='28'>&nbsp;</td>";
					}
				} // конец строки
				lv_res += "</tr>";
			} // конец таблицы

			lv_res += "</table>";
			return lv_res;
		} // end of fill_table()


		// если полный год {
		//	вывод в цикле месяцев по текущему году
		// } иначе {
		//	вывод в столбик p_cnt месяцев
		// }


		// инициализация данных
		clndr_init();
//today.getYear(),today.getMonth(),today.getDate()
		if (p_small != 1) {
			lv_result += '<span class="PageTitle" SK><nobr>Сегодня, '+today.getDate()+' '+lt_mnmr[today.getMonth()]+', '+lt_dnmf[today.getDay()]+'</nobr></span><br><br>';
		}
		lv_result += "<table bgcolor='"+p_color+"' cellspacing='0' cellpadding='0' border='0'>";
		if (p_small == 1){
			var m, k = parseInt (p_mm,10);
			lv_result += '<tr>';
			for (m=0; m<p_cnt; m++){
				if (k==13) {
					k = 1; 
					p_yy+=1;
					lt_ml[2] = (((p_yy % 4 == 0) && (p_yy % 100 != 0)) || (p_yy % 400 == 0)) ? 29 : 28; // февраль
				}
				lv_result += '<td><br>'+fill_table(lt_mnm[k], lt_ml[k], p_yy, k)+'</td><td>&nbsp;</td>';
				if (((m+1)%p_col==0) && (m!=p_cnt)){
					lv_result += '</tr><tr>';
				}
				k++;
			}
			lv_result += '</tr>';
		} else {
			var jj = 1;
			for (var m = 1;m<=12;m++){
				if (jj == 1) {
					if (m>1){
						lv_result += "<tr><td><br></td><td><br></td><td><br></td></tr>";
					}
					lv_result += "<tr>";
				}
				lv_result += '<td><br>'+fill_table(lt_mnm[m], lt_ml[m], p_yy, m)+'</td><td>&nbsp;</td>';
				if (jj == 3) {
					lv_result += "</tr>";
					jj = 0;
				}
				jj++;
			}
		}

		lv_result += "</table>";
		if (p_small!=1){
			lv_result += "<table cellspacing='2' cellpadding='0' border='0'>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_green.gif' class='cdr_1'></td><td> - Текущая дата</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_yellow.gif' class='cdr_1'></td><td> - Укороченный день</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_blue.gif' class='cdr_1'></td><td> - Праздник</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_red.gif' class='cdr_1'></td><td> - Выходной день</td></tr>";
			for (var g = 0;g<game_titles.length;g++){
				if (game_titles[g] == undefined) {continue;}
				lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/type." + g + ".gif' title='"+game_titles[g][0]+"' width='28' height='28' style='border: 1px solid #1B7C00'></td><td>&nbsp;-&nbsp;"+game_titles[g][0]+" <sup>(<a href='"+game_titles[g][1]+"'>?</a>)</sup></td></tr>";
			}
			lv_result += "</table>";
		}
		return lv_result;
	} // end of do_calendar_proc()

	this.do_calendar = function(p_small,p_cnt,p_col,p_color,p_yy,p_mm,p_class){
		var lv_clndr_html = do_calendar_proc(p_small,p_cnt,p_col,p_color,p_yy,p_mm);
		if (p_class!=null){
			$(function(){
				$(p_class).html(lv_clndr_html);
				init_popup();
			});
		} else {
			document.write(lv_clndr_html);
			init_popup();
		}
	}


	/****************************************************/
	// подписи в форуме
	//
	// Tucker http://oren.en.cx/UserDetails.aspx?uid=19577
	// doDescription();
	/****************************************************/

	//*********
	function doDescription_proc(){
	var desc_id = [];
	if (location.pathname.match("/Messages.aspx") != null) {
		for (i in desc){
			if (desc_id[desc[i][0]] == null){
				desc_id[desc[i][0]] = [];
			}
			desc_id[desc[i][0]].push(i);
		}
		$('.msgHead .gbUserInfo a[href^="/UserDetails.aspx?uid"]').each(function(el) {
			wa_text = $(this).parent().parent().next();
			if (wa_text.attr('class').indexOf("gbMessage")>=0){
				wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
				wa_desc = "";
				if (desc_id[wa_id]!=null){
					wa_desc = "<br><font class='dark_green11'>------";
					for (i in desc_id[wa_id]){
						wa_desc+= "<br>" + desc[desc_id[wa_id][i]][1];
					}
					wa_desc+= "</font>";
					wa_desc = '<br><span class="my_desc" style="display:none;">'+wa_desc+'</span>';
					wa_text.append(wa_desc);
				}
			}
		});
	}}

	//*********
	this.doDescription = function(){
		if (location.pathname.match("/Messages.aspx") != null){
			$(function(){
				doDescription_proc();
				$(".my_desc").animate({opacity: "show"}, "slow")
			});
		}
	}

	// глобальные переменные

		//*********
	function doHideAdmRank_proc(){
	var rank = ["","Рядовой","Младший сержант","Сержант","Старший сержант","Младший лейтенант","Лейтенант","Старший лейтенант","Капитан","Майор","Подполковник","Полковник","Генерал-полковник"];

		if (location.pathname.match("/Messages.aspx") != null) {
			$('.msgHead .gbUserInfo a[href^="/UserDetails.aspx?uid"]').each(function(el) {
				if ($(this).parent().parent().next().attr('class').indexOf("gbMessage")>=0){
					wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
					if (hiderank[wa_id]!=null){
						$(this).parent().parent().children().children().children().eq(0).attr('src','http://cdn.endata.cx/images/icons/ranks/rr'+hiderank[wa_id]+'.gif').attr('title',rank[hiderank[wa_id]]).attr('alt',rank[hiderank[wa_id]]);
					}
				}
			});
		}


		if (location.pathname.match("/UserDetails.aspx") != null) {
			wa_id = location.href.match(/uid=(\d+)/)[1];
			if (hiderank[wa_id]!=null){
				$('#enUserDetailsPanel_lblPointsVal').next().children().children().attr('src','http://cdn.endata.cx/images/icons/ranks/rr'+hiderank[wa_id]+'.gif').attr('title',rank[hiderank[wa_id]]).attr('alt',rank[hiderank[wa_id]]).parent().parent().next().html(rank[hiderank[wa_id]]);
//				$('#enUserDetailsPanel_userRank_imgUserRank').attr('src','http://cdn.endata.cx/images/icons/ranks/rr'+hiderank[wa_id]+'.gif').attr('title',rank[hiderank[wa_id]]).attr('alt',rank[hiderank[wa_id]]).parent().parent().next().html(rank[hiderank[wa_id]]);
			}
		}

		if ((location.pathname.match("/Default.aspx") != null)||(location.pathname == "/")) {
//			$('a[@id*="_TopUserRepeater_"][@id="lnkUserInfo"]').each(function(i){
			$('.white24 + br + br + table a[href^="/UserDetails.aspx?uid"]').each(function(el) {
				wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
				if (hiderank[wa_id]!=null){
					$(this).parent().prev().children().children().eq(0).attr('src','http://cdn.endata.cx/images/icons/ranks/rr'+hiderank[wa_id]+'.gif').attr('title',rank[hiderank[wa_id]]).attr('alt',rank[hiderank[wa_id]]);
					if ($(this).parent().html().match("очков") != null) {
						var tmp_st = 'очков, '+rank[hiderank[wa_id]]+')';
						$(this).parent().html($(this).parent().html().replace(/очков, .*/,tmp_st));
					}
				}
			});
		}


		if (location.pathname.match("/UserList.aspx") != null) {
			$('a[id^="UsersRepeater_ctl"][id$="lnkUserInfo"]').each(function(){
				wa_id = $(this).attr('href').match(/uid=(\d+)/)[1];
				if (hiderank[wa_id]!=null){
					$(this).parent().parent().children().eq(2).children().attr('src','http://cdn.endata.cx/images/icons/ranks/rr'+hiderank[wa_id]+'.gif').attr('title',rank[hiderank[wa_id]]).attr('alt',rank[hiderank[wa_id]]);
				}
			});
		}
	}

	//*********
	this.doHideAdmRank = function(){
		if ((location.pathname.match("/Default.aspx") != null)||
			(location.pathname == "/")||
			(location.pathname.match("/UserDetails.aspx") != null)||
			(location.pathname.match("/UserList.aspx") != null)||
			(location.pathname.match("/Messages.aspx") != null)){
			$(function(){
				doHideAdmRank_proc();
			});
		}
	}
	/****************************************************/
	// подписи в форуме
	//
	// doDescription();
	/****************************************************/
}


/****************************************************/
// для "Подробности" в анонсах
/****************************************************/
function do_anons_desc(wa_gid){
	$(function(){
		$("#hide"+wa_gid).click(function(){
			$("#box"+wa_gid+"Show").hide();
			$("#box"+wa_gid+"Hide").show();
			$("#box"+wa_gid).animate({opacity: "hide", height: "hide"}, "slow")
			return false;
		});

		$("#show"+wa_gid).click(function(){
			$("#box"+wa_gid+"Hide").hide();
			$("#box"+wa_gid+"Show").show();
			$("#box"+wa_gid).animate({opacity: "show", height: "show"}, "slow")
			return false;
		});
	});
}

