var status_obj = {};
status_obj.url_forums				= "http://api.forum.mail.ru/board?action=user_replies_count&project_id=forum.deti.mail.ru&object_name=status_obj&user_email=";
status_obj.url_deti					= "http://deti.mail.ru/ctrl/func/get_status_star_user/";
status_obj.users_status			= {};
status_obj.users_data				= [];
status_obj.email_data				= [];
status_obj.user_block_text	= {};
status_obj.status_data			= {
	data:				[4, 50, 250, 500, 1500, 3000, 5000, 5001, 5001, 5001, 5001],
	us_already:	['1-d', '7-d', '1-m', '3-m', '6-m', '12-m', '18-m', '24-m', '30-m', '36-m'],
	status:			['Гость',	'Новичок',	'Продвинутый',	'Знаток',		'Эксперт',	'Суперэксперт',	'Профи',	'Бронзовый',	'Серебряный',	'Золотой',	'Бриллиантовый','Модератор','Администратор'],
	status_eng:	['guest',	'rookie',		'advanced',			'scholar',	'expert',		'super_expert',	'proffi',	'bronze',			'silver',			'gold',			'diamond','moder','admin']
};

var tags;

//	Функция формирования вызова скриптов с данными
function draw_users_statuses(own_email) {
	//	Получаем все теги на странице, которые могут содержать информацию о мыле
	if ( typeof( user_tag_name )=='undefined' ) user_tag_name = 'SPAN';
	tags	= document.getElementsByTagName( user_tag_name );
	var str = "";

	for ( var i=0; i < tags.length; i++ ) {
		//	Получаем значение атрибута
		$m = plugin_get_param(tags.item(i).getAttribute('rel'), 'email');
		if ($m.length > 0) {
			if ( status_obj.email_data[ $m ] != 1 ) str += ',' + $m;
			status_obj.email_data[ $m ] = 1;
		}
	}
	//	Мыл нет, дальше ничего делать не нужно
	if ( ! str.length ) return;

	var str_email = str.substring(1);
	var js = document.createElement('SCRIPT');
	js.src = status_obj.url_forums + str_email;
	document.body.appendChild(js);

	js = document.createElement('SCRIPT');
	js.src = status_obj.url_deti + str_email;
	document.body.appendChild(js);

	function check_load() {
		if(typeof(users_status_load) != 'undefined' && typeof(users_data_load) != 'undefined') {
			clearInterval(int);
			set_status(own_email);
		}
	}
	var int = setInterval(check_load, 10);
}

//	Рассчитывает статусы и выводит на страницу
function set_status(check_own_email) {
	if (typeof(users_data_load) == 'undefined' || typeof(users_status_load) == 'undefined') return;
	var st = status_obj.status_data;
	var us_already_text = ''
	//	Накапливаем статусы
	for(var i=0; i<status_obj.users_data.length; i++) {
		us_already_text = ''
		if (status_obj.users_status[status_obj.users_data[i].email] && status_obj.users_status[status_obj.users_data[i].email].us_already_text && status_obj.users_data[i].count > status_obj.status_data.data[0]) {
			us_already_text = status_obj.users_status[status_obj.users_data[i].email].us_already_text;
		}
		var status_idx = get_status_idx( status_obj.users_data[i].count, status_obj.users_status[ status_obj.users_data[i].email ] ? status_obj.users_status[ status_obj.users_data[i].email ].status : '', status_obj.users_status[ status_obj.users_data[i].email ] ? status_obj.users_status[ status_obj.users_data[i].email ].us_already : '' );
		status_obj.user_block_text[ status_obj.users_data[i].email ] = {};
		status_obj.user_block_text[ status_obj.users_data[i].email ].personal_status = '<em class="block_blue">' + st.status[status_idx] + '</em>&nbsp;' + us_already_text + '<span class="' + st.status_eng[status_idx] + '" title="' + st.status[status_idx] + '"></span>';
	}
	for(var u in status_obj.users_status) {
		if(typeof(status_obj.user_block_text[u]) == 'undefined') {
			status_obj.user_block_text[u] = {};
		}
		if(status_obj.users_status[u].rating >= 5) {
			status_obj.user_block_text[u].star = Math.floor(status_obj.users_status[u].rating / 5) + '<i></i>';
		}
		var status_idx = get_status_idx( null, status_obj.users_status[ u ].status, status_obj.users_status[ u ].us_already);
		if(typeof(status_obj.user_block_text[u].personal_status) == 'undefined') {
			status_obj.user_block_text[u].personal_status = '<em class="block_blue">' + st.status[status_idx] + '</em><span class="' + st.status_eng[status_idx] + '" title="' + st.status[status_idx] + '"></span>';
		}
	}
	//	Снова бежим по нужным тегам и меняем содержимое
	for(var i=0; i < tags.length; i++) {
		m = plugin_get_param(  tags.item(i).getAttribute('rel'), 'email');
		if (m.length > 0 && (typeof(status_obj.user_block_text[ m ]) != 'undefined' || typeof(status_obj.user_block_text[ m ]) != 'undefined')) {
			tags.item(i).innerHTML = (status_obj.user_block_text[ m ].star && status_obj.user_block_text[ m ].personal_status) ?
				status_obj.user_block_text[ m ].personal_status + '&nbsp;' + status_obj.user_block_text[ m ].star :
				((status_obj.user_block_text[ m ].star) ? status_obj.user_block_text[ m ].star : status_obj.user_block_text[ m ].personal_status);
		}
	}
}

//	Определение статуса пользователя
function get_status_idx( count, personal, us_already ) {
	//	Статус установлен юзером, вернем его
	if ( personal ) {
		if(personal == 'Модератор') {
			return 11; // это индекс в массиве status_eng
		}
		if(personal == 'Администратор') {
			return 12; // это индекс в массиве status_eng
		}
		return personal;
	}

	var st = status_obj.status_data;

	//	Считаем в какой статус попадаем по количеству комментов
	retval_count = 0;

	for ( var i = 0; i < st.data.length; i++) {
		if ( count > st.data[i] ) retval_count = i + 1;
	}

	//	Считаем в какой статус попадаем по "с нами уже"
	retval_us_already = 0;

	var us_already_array = us_already.split('-');
	var us_already_digit = parseInt(us_already_array[0]),
		us_already_letter = us_already_array[1];
	for ( var i = 0; i < st.us_already.length; i++) {
		var st_us_already_array = st.us_already[i].split('-');
		var st_us_already_digit = parseInt(st_us_already_array[0]),
			st_us_already_letter = st_us_already_array[1];
		if ( us_already_letter == st_us_already_letter && us_already_digit >= st_us_already_digit ) {
			retval_us_already = i + 1;
		}
	}

	var dest_status = Math.min(retval_count, retval_us_already);
	if(dest_status >= st.status.length) {
		dest_status = st.status.length - 1;
	}
	return dest_status;
}

//	Получение параметра из атрибута
function plugin_get_param( str, type ) {
	var re	= new RegExp("^"+ type +":(.*)$", "");
	var arr = re.exec(str);
	return ( arr == null ) ? "" : arr[1];
}

