// для простоты обращения к document
var d = document;
var requests = Array();
var CachObjects = Array();
var GooglePoints = Array();
var ShowedMaps = Array();
var Timers = Array();


// массив с месяцами
var Monthes = Array();
Monthes[0] = Array();
Monthes[0][0] = '01';
Monthes[0][1] = 'январь';
Monthes[0][2] = 'января';
Monthes[1] = Array();
Monthes[1][0] = '02';
Monthes[1][1] = 'февраль';
Monthes[1][2] = 'февраля';
Monthes[2] = Array();
Monthes[2][0] = '03';
Monthes[2][1] = 'март';
Monthes[2][2] = 'марта';
Monthes[3] = Array();
Monthes[3][0] = '04';
Monthes[3][1] = 'апрель';
Monthes[3][2] = 'апреля';
Monthes[4] = Array();
Monthes[4][0] = '05';
Monthes[4][1] = 'май';
Monthes[4][2] = 'мая';
Monthes[5] = Array();
Monthes[5][0] = '06';
Monthes[5][1] = 'июнь';
Monthes[5][2] = 'июня';
Monthes[6] = Array();
Monthes[6][0] = '07';
Monthes[6][1] = 'июль';
Monthes[6][2] = 'июля';
Monthes[7] = Array();
Monthes[7][0] = '08';
Monthes[7][1] = 'август';
Monthes[7][2] = 'августа';
Monthes[8] = Array();
Monthes[8][0] = '09';
Monthes[8][1] = 'сентябрь';
Monthes[8][2] = 'сентября';
Monthes[9] = Array();
Monthes[9][0] = '10';
Monthes[9][1] = 'октябрь';
Monthes[9][2] = 'октября';
Monthes[10] = Array();
Monthes[10][0] = '11';
Monthes[10][1] = 'ноябрь';
Monthes[10][2] = 'ноября';
Monthes[11] = Array();
Monthes[11][0] = '12';
Monthes[11][1] = 'декабрь';
Monthes[11][2] = 'декабря';


// функция для получения объекта по ID, чтобы не набирать постоянно document.getElementById
// id - идентификатор объекта
function gid(id)
{
	return d.getElementById(id);
}


// переход по якорным ссылкам
function goTo(where)
{
	document.location.replace(where);
	return false;
}


// добавляем несколько функций в window.onload
// func - (string) - наименование функции
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	} else {
		window.onload = function()
		{
			if (oldonload)
			{
				oldonload();
			}
			func();
		}
	}
}


// убираем пробелы в начале и конце строки
// str - строка для обработки
function Trim (str)
{
	var newstr = str.replace(/^\s*(.+?)\s*$/, "$1");
	if (newstr == " ")
	{
		return "";
	}
	return newstr;
}

// проверка телефона
// str - строка для проверки
function CheckPhone (str) 
{
	strletters = str.replace(/[*^(\d) +-]/gi, "");
	if (strletters.length > 0)
		return false;
	for (var i = 0; i < str.length+1; i++)
	{
		strplus = str.substr(i,1);
		if (strplus == '+' && i > 0)
			return false;
	}
	strnums = str.replace(/[*^(\D)]/gi, "");
	if (strnums.length == 7)
	{
		strletters = str.replace(/[*^(\d) -]/gi, "");
		if (strletters.length > 0)
			return false;
		else
			return true;
	}
	else if (strnums.length >= 10 && strnums.length <= 11)
	{
		if (strnums.length == 11)
		{
			for (var i = 0; i < strnums.length+1; i++)
			{
				strseven = strnums.substr(i,1);
				if (strseven != '7' && strseven != '8' && i == 0)
					return false;
			}
			return true;
		}
		return true;
	}
	else 
		return false;
}


// проверка мыла
// str - строка для проверки
function CheckMail(str)
{
	if (str != '')
	{
		var reg = new RegExp("[^A-Za-z0-9_\\-.]", 'ig');
		// проверка на веденную собаку
		chkMailarr = str.split('@');
		if (chkMailarr.length != 2)
		{
			return false;
		}
		else
		{
			// проверка на допустимые символы
			if (reg.test(chkMailarr[0]))
			{
				return false;
			}
			else
			{
				if (reg.test(chkMailarr[1]))
				{
					return false;
				}
				else
				{
					// проверка на наличие точки в домене
					chkMailDotarr = chkMailarr[1].split('.');
					if (chkMailDotarr.length >= 2)
					{
						return true;
					}
					else
					{
						return false;
					}
				}
			}
		}
	}
	return false;
}


// функция проверки корректности введенной даты
// Day - значение даты
// Month - значение месяца
// Year - значение года
function ValidDate (Day, Month, Year)
{
	if (Day != '' && Month != '' && Year != '')
	{
		if (Day != 0 && Month != 0 && Year != 0)
		{
			checkdate=new Date(Year, (Month-1), Day);
			if (Day == checkdate.getDate() && Month == (checkdate.getMonth() + 1) && Year == checkdate.getFullYear())
				return true;
			return false;
		}
	}
	return false;
}


// проверка на отсутствие любых символов кроме цифр
// str - строка для проверки
function CheckNumeric (str)
{
	if (str != '')
	{
		var reg = new RegExp("[^0-9]", 'ig');
		if (reg.test(str))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else 
	{
		return false;
	}
}


// проверка на отсутствие любых символов кроме цифр
function OnAirCheckNumeric()
{
	var code = window.event.keyCode;
	if ((code >= 48 && code <= 57) || code == 45 || code == 8 || code == 37 || code == 39 || code == 46)
	{
		window.event.returnValue = true;
	}
	else
	{
		window.event.returnValue = false;
	}
}


// проверка на отсутствие любых символов кроме цифр и точки/запятой
function OnAirCheckDigit(e)
{
	if (!e)
	{
		e = event;
	}
	var code = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	if ((code >= 44 && code <= 57) || code == 45 || code == 8 || code == 37 || code == 39 || code == 46 || code == 190 || code == 188 || code == 191 || code == 36)
	{
		e.returnValue = true;
	}
	else
	{
		e.returnValue = false;
	}
}


// проверка на отсутствие любых символов кроме цифр и букв ABCDEF (для 16ричного задания цвета)
function OnAirCheckHexColor()
{
	var code = window.event.keyCode;
	if ((code >= 48 && code <= 57) || (code >= 97 && code <= 102) || code == 45 || code == 8 || code == 37 || code == 39 || code == 46)
	{
		window.event.returnValue = true;
	}
	else
	{
		window.event.returnValue = false;
	}
}


// проверка на отсутствие любых символов кроме цифр
// str - строка для проверки
function CheckFloat(str)
{
	if (str != '')
	{
		var reg = new RegExp("[^.%,0-9]", 'ig');
		if (reg.test(str))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else 
	{
		return false;
	}
}


// добавляем к урлу в начале "http://" если там ничего такого нет
// str - строка с урлом
function AddHTTP(str)
{
	if (str != "")
	{
		var reg = /^(\w+):\/\//;
		if (!reg.test(str))
		{
			return str = "http://" + str;
		}
		else
		{
			return str;
		}
	}
}


// проверяем урл на правильность
// str - строка с урлом
function CheckULR(str)
{
	if (str != "")
	{
		// (\w+):\/\/([^/:]+)(:\d*)?([^# ]*)
		if (str.match(/(\w+):\/\/(\w*)?\.(\w+)(\.\w*)?([^# ]*)/im))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}


// вычисляет количество дней в месяце
// month - месяц (в формате 1-12)
// year - год
function CheckDaysInMonth(month, year)
{
	if (year > 0 && month > 0)
	{
		var numdays = 31;
		var date = new Date(year, (month - 1), 31);
		var newmonth = date.getMonth() + 1;
		var date = date.getDate()
		if (date == 1 && newmonth > month)
		{
			numdays = 30;
		}
		if (date > 1 && newmonth > month)
		{
			numdays = 31 - date;
		}
		return numdays;
	}
}


// проверка на наличие опасных символов в логине (любые кроме _-().[]" русских и английских букв)
// loginid - строка для проверки
function CheckLogin(str)
{
	if (str != '')
	{
		if (str.match(/[^А-Яа-яA-Za-z0-9_\-\(\)\.\"\[\]]/img))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	return false;
}


// проверка на наличие опасных символов (любые кроме _-()@. и английских букв)
// loginid - строка для проверки
function CheckMessengers(str)
{
	if (str != '')
	{
		if (str.match(/[^A-Za-z0-9_\-\(\)@]/img))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	return false;
}


// заполняет селекты с датами
// dayid - айдишник объекта с датами
// monid - айдишник объекта с месяцами
// yearid - айдишник объекта с годами
// yearend - самый ранний год в списке (если не указано, то 2000)
function FillDates(dayid, monid, yearid, yearend, dayval, monval, yearval)
{
	var nowdate = new Date();
	var nowyear = nowdate.getFullYear();
	if (!yearend) yearend = 2000;
	o_days = d.getElementById(dayid);
	o_monthes = d.getElementById(monid);
	o_years = d.getElementById(yearid);
	// очищаем селекты
	for (i = o_days.options.length; i > 0; i--)
	{
		o_days.options[i] = null;
	}
	for (i = o_monthes.options.length; i > 0; i--)
	{
		o_monthes.options[i] = null;
	}
	for (i = o_years.options.length; i > 0; i--)
	{
		o_years.options[i] = null;
	}
	// задаем певичные значения
	o_days.options[0] = new Option(" — число — ", "00", false, ((dayval == 0) ? true : false));
	o_monthes.options[0] = new Option(" — месяц — ", "00", false, ((monval == 0) ? true : false));
	o_years.options[0] = new Option(" — год — ", "0000", false, ((yearval == 0) ? true : false));
	// заполняем селекты
	i = 1;
	for (n = 1; n < 32; n++)
	{
		addnull = (n < 10 ? '0' : '');
		o_days.options[i] = new Option(addnull + n, addnull + n, false, ((dayval == n) ? true : false));
		i++;
	}
	for (i = 0; i < Monthes.length; i++)
	{
		o_monthes.options[i+1] = new Option(Monthes[i][2], Monthes[i][0], false, ((monval == (i+1)) ? true : false));
	}
	i = 1;
	for (y = nowyear; y >= yearend; y--)
	{
		o_years.options[i] = new Option(y, y, false, ((yearval == y) ? true : false));
		i++;
	}
}


// Заполняет селект с числами в зависимости от количества дней в месяце
// dayid - айдишник объекта с датами
// monid - айдишник объекта с месяцами
// yearid - айдишник объекта с годами
// errorid - идентификатор блока где выводится ошибка
// errortext - текст для вывода ошибки
function ReFillDatesLoc(dayid, monid, yearid)
{
	ShowHideError('professional', "");
	error_prof=0;
	var o_days = d.getElementById(dayid);
	var o_monthes = d.getElementById(monid);
	var o_years = d.getElementById(yearid);

	if (o_monthes.value > 0)
	{
		var dayval = o_days.value;
		var yval = o_years.value;
		if(yval == 0) yval = '1916';
		var numdays = CheckDaysInMonth(o_monthes.value, yval)
		// очищаем селекты
		for (i = o_days.options.length-1; i > numdays; i--)
		{
			o_days.options[i] = null;
		}
		// задаем певичные значения
		o_days.options[0] = new Option(" — число — ", "0", false, false);
		// заполняем селекты
		i = o_days.options.length;
		for (n = o_days.options.length; n < (numdays + 1); n++)
		{
			addnull = (n < 10 ? '0' : '');
			o_days.options[i] = new Option(addnull + n, addnull + n, false, false);
			i++;
		}
		if (dayval <= numdays)
		{
			o_days.value = dayval;
		}
		else
		{
			ShowHideError('professional', "Укажите корректную дату начала стажа");
			error_prof=1;
			o_days.selectedIndex = 0;
			o_days.value = 0;
		}
	}
}

function ReFillDates(dayid, monid, yearid)
{
	ShowHideError('birthday', "");
	error_prof=0;
	var o_days = d.getElementById(dayid);
	var o_monthes = d.getElementById(monid);
	var o_years = d.getElementById(yearid);

	if (o_monthes.value > 0)
	{
		var dayval = o_days.value;
		var yval = o_years.value;
		if(yval == 0) yval = '1916';
		var numdays = CheckDaysInMonth(o_monthes.value, yval)
		// очищаем селекты
		for (i = o_days.options.length-1; i > numdays; i--)
		{
			o_days.options[i] = null;
		}
		// задаем певичные значения
		o_days.options[0] = new Option(" — число — ", "0", false, false);
		// заполняем селекты
		i = o_days.options.length;
		for (n = o_days.options.length; n < (numdays + 1); n++)
		{
			addnull = (n < 10 ? '0' : '');
			o_days.options[i] = new Option(addnull + n, addnull + n, false, false);
			i++;
		}
		if (dayval <= numdays)
		{
			o_days.value = dayval;
		}
		else
		{
			ShowHideError('birthday', "Укажите корректную дату своего рождения");
			error_bday=1;
			o_days.selectedIndex = 0;
			o_days.value = 0;
		}
	}
}

//почти то же самое для форума
function ReFillDatesForum(dayid, monid, yearid)
{

	var o_days = d.getElementById(dayid);
	var o_monthes = d.getElementById(monid);
	var o_years = d.getElementById(yearid);
	if (o_monthes.value > 0 && o_years.value > 0)
	{
		var dayval = o_days.value;
		var numdays = CheckDaysInMonth(o_monthes.value, o_years.value)
		// очищаем селекты
		for (i = o_days.options.length; i > 0; i--)
		{
			o_days.options[i] = null;
		}
		// задаем певичные значения
		o_days.options[0] = new Option(" - число - ", "0", false, false);
		// заполняем селекты
		i = 1;
		for (n = 1; n < (numdays + 1); n++)
		{
			addnull = (n < 10 ? '0' : '');
			o_days.options[i] = new Option(addnull + n, addnull + n, false, false);
			i++;
		}
		if (dayval <= numdays)
		{
			o_days.value = dayval;
			return true;
		}
		else
		{
			o_days.selectedIndex = 0;
			return false;
		}
	}
}


// отслеживает положение мыши на экране и позиционирует по нему положения дива
var mousex = mousey = 0
function MouseMove(e) 
{
	if (typeof( event ) != 'undefined')
	{
		mousex = event.clientX + 10;
    mousey = event.clientY + 10;
		//mousex = event.x + 10;
		//mousey = event.y + 10;
	} else {
		mousex = e.pageX + 10;
		mousey = e.pageY + 10;
	}
	CachObjects['mtooltip'].style.left = mousex + "px";
	CachObjects['mtooltip'].style.top = mousey + "px";
}


// показываем картинку загрузки аякса в нужном блоке
// show - статус отображения: 1 - показывать, 0 - скрыть
// objid - идентификатор блока в котором показывать эту радость
// waitype - html-код картинки загрузки аякса
// text - текст выводимый рядом с картинкой загрузки (справа)
function ShowAjaxWait(show, objid, waitype, text)
{
	if(objid != "")
	{
		if (show == 0)
		{
			gid(objid).style.display = 'none';
			gid(objid).innerHTML = "";
		}
		else
		{
			gid(objid).style.display = 'block';
			gid(objid).innerHTML = waitype + text;
		}
	}
}


// показываем/скрываем 
function ShowHideWait(errid, type)
{
	if (errid != "")
	{
		var err = gid('error_' + errid);
		if (type > 0)
		{
			err.innerHTML = wait;
			err.style.display = "block";
		}
		else
		{
			err.innerHTML = "";
			err.style.display = "none";
		}
	}
}


// меняем размер флоатинговых блоков в зависимости от размера окна
// запускать обязательно через onLoad и onResize
// parentid - (int) - идентификатор блока-контейнера с дивами-флоатингами
// controlid - (int) - идентификатор любого плавающего дива в контейнере
// floatmargin - (int) - сумма левого и правого margin у плавающего дива
// stylename - (string) - название класса для плавающих дивов полное название (напрмер "div.teststyle") 
//												ВНИМАНИЕ! в этом стиле обязательно должен присутствовать параметр width
// minwidth - (int) - минимально возможная ширина плавающего дива в пикселях
// maxwidth - (int) - максимально возможная ширина плавающего дива в пикселях
function ChangeFloatDivWidth(parentid, controlid, floatmargin, stylename, minwidth, maxwidth)
{               
	stylename = stylename.toUpperCase();
	// задаем значение в зависимости от поддерживаемого браузером              
	var CSSRules;
	var modify = 0;
	if (document.all)
	{
		CSSRules = 'rules';
		var modify = 0;
	}
	else if (document.getElementById)
	{
		CSSRules = 'cssRules';
	}
	for (var i = 0; i < document.styleSheets[0][CSSRules].length; i++)
	{
		var incss = document.styleSheets[0][CSSRules][i].selectorText;
		incss = (incss) ? incss.toUpperCase() : '';
		if (incss == stylename)
		{
			var setwidth = 0;
			try
			{
				var allwidth = document.getElementById(parentid).offsetWidth;
			}
			catch(ex)
			{
				return;
			}
			var floatwidth = document.getElementById(controlid).offsetWidth;
			var nowinrow = Math.floor(allwidth / (floatwidth + floatmargin));
			var inrow = nowinrow;
			if (Math.floor(allwidth / (minwidth + floatmargin)) != nowinrow)
			{
				inrow = Math.floor(allwidth / (minwidth + floatmargin));
			}
			setwidth = Math.floor(allwidth / inrow) - floatmargin - modify;
			if (setwidth > maxwidth)
			{
				setwidth = maxwidth;
			}
			else if (setwidth < minwidth)
			{
				setwidth = minwidth;
			}
			if (setwidth != floatwidth)
			{
			document.styleSheets[0][CSSRules][i].style['width'] = setwidth + 'px';
			}
		break;
		}
	}
}


// генерация случайных чисел в диапазоне от m до n
// m - (integer) - начальное значение
// n - (integer) - конечное значение
function Rand(m, n)
{
  var m = parseInt(m);
  var n = parseInt(n);
  return Math.floor( Math.random() * (n - m + 1) ) + m;
}


// генерим никнейм нужной длины
// len - (integer) - количество символов в никнейме
function NickGenerator(len)
{
	if (!len)
	{
		len = 10;
	}
	var vowels = new Array('a','e','i','j','o','u','y');
	var consonant = new Array('b','c','d','f','g','h','k','l','m','n','p','q','r','s','t','v','w','x','z');
	var nick = '';
	var m = len / 2;
	var f = Math.floor(m);
	for (var i = 0; i < f; i++)
	{
		nick += (Rand(0, 1) == 0) ? consonant[Rand(0, consonant.length - 1)] : vowels[Rand(0, vowels.length - 1)];
		nick += (Rand(0, 1) == 1) ? vowels[Rand(0, vowels.length - 1)] : consonant[Rand(0, consonant.length - 1)];
	}
	if (f < m)
	{
		nick += consonant[Rand(0, consonant.length - 1)]
	}
	return nick;
}


// функция открытия нового окна
// obj - объект который будет открыт в новом окне
// w - ширина нового окна
// h - высота нового окна
// wname - название нового окна
// pleft - отступ слева от края экрана
// ptop - отступ сверху от края экрана
// ptool - показывать ли тулбар
// pscroll - есть ли скроллинг у окна
// pmenu - показывать ли меню
// pstat - показывать ли статусную троку
// presize - возможность пользователю изменять размеры окна
var msgWindow;
function WindowOpenerFull (obj, w , h, wname, pleft, ptop, ptool, pscroll, pmenu, pstat, presize)
{
	// задаем значения по умолчанию
	if (!obj)
		obj = '/';
	if (!w)
		w = 300;
	if (!h)
		h = 400;
	if (!wname)
		wname = "newwin";
	if (!pleft)
		pleft = 50;
	if (!ptop)
		ptop = 50;
	if (!ptool)
		ptool = 0;
	if (!pscroll)
		pscroll = 0;
	if (!pmenu)
		pmenu = 0;
	if (!pstat)
		pstat = "no";
	if (!presize)
		presize = 0;
	// вывод окна
	if (msgWindow)
	{
		msgWindow.close()
	}
	msgWindow = window.open (obj, wname, "width=" + w + ",height=" + h + ",screenX=" + pleft + ",screenY=" + ptop + ",left=" + pleft + ",top=" + ptop + ",toolbar=" + ptool + ",scrollbars=" + pscroll + ",menubar=" + pmenu + ",status='" + pstat + "',resizable=" + presize);
}


// получаем тип и версию браузера
function GetBrowserInfo()
{
	var t,v = undefined;
	if (window.opera)
	{
		t = 'Opera';
	}
	else if (document.all)
	{
		t = 'IE';
		var nv = navigator.appVersion;
		var s = nv.indexOf('MSIE')+5;
		v = nv.substring(s,s+1);
	}
 	else if (navigator.appName)
	{
		t = 'Netscape';
	}
	return {type:t,version:v};
}


// говорим браузеру, что хотим добавить в избранное (IE, FF, Opera) 
function Bookmark(a)
{
	var url = window.document.location;
	var title = window.document.title;
	var b = GetBrowserInfo();
	if (b.type == 'IE' && b.version >= 4)
	{
		window.external.AddFavorite(url,title);
	}
	else if (b.type == 'Opera')
	{
	  a.href = url;
  	a.rel = "sidebar";
	  a.title = url+','+title;
  	return true;
	}
 	else if (b.type == "Netscape") 
	{
		window.sidebar.addPanel(title,url,"");
	}
 	else 
	{
		alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
	}
 	return false;
}


// проставляем "RE" для строк-ответов
// str - string - строка для обработки
function SetRE(str)
{
	if (str != '')
	{
		var result1 = str.match(/RE[^:]*:/img);
		// если в строке RE уже есть - наращиваем его каунтер :)
		if (result1)
		{
			result2 = str.match(/\[([^\]]*)\]/img);
			if (!result2)
			{
				str = str.replace(/RE[^:]*:/img, "RE[2]:");
			}
			else
			{
				var tmp = result2[0].replace('[', '');
				tmp = parseInt(tmp.replace(']', ''));
				str = str.replace(/RE[^:]*:/img, "RE[" + (tmp + 1) + "]:");
			}
		}
		// если в строке RE еще нет
		else
		{
			str = 'RE: ' + str;
		}
		return str;
	}
	else
	{
		return '';
	}
}


// получаем аяксом результат
requests['doGetListing'] = "";
function doGetListing(url)
{
/* by ST0RM 20110211 закомменчено из-за неопределённости
	CachObjects['listing'].innerHTML = ajax_wait2;
	if (url)
	{
		if (requests['doGetListing'])
		{
			requests['doGetListing'].abort;
		}
		requests['doGetListing'] = new JsHttpRequest();
		requests['doGetListing'].onreadystatechange = function()
		{
			if (requests['doGetListing'].readyState == 4)
			{
				CachObjects['listing'].innerHTML = '';
				if (requests['doGetListing'].responseText)
				{
					CachObjects['pageerror'].innerHTML += requests['doGetListing'].responseText;
					CachObjects['pageerror'].style.display = "block";
					setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
				}
				if (requests['doGetListing'].responseJS.answer)
				{
					CachObjects['listing'].innerHTML = requests['doGetListing'].responseJS.answer;
				}
			}
		}
		requests['doGetListing'].open(null, '/data/templates/serverside/ajax.listing.php', true);
		requests['doGetListing'].send( { q : url } );
	}
*/
}


// получаем аяксом результат
requests['doAddFavorites'] = "";
function doAddFavorites(what, id, fromid)
{
	if (what != '' && id > 0)
	{
		if (requests['doAddFavorites'])
		{
			requests['doAddFavorites'].abort;
		}
		var val = new Array();
		val['what'] = what;
		val['id'] = id;
		requests['doAddFavorites'] = new JsHttpRequest();
		requests['doAddFavorites'].onreadystatechange = function()
		{
			if (requests['doAddFavorites'].readyState == 4)
			{
				if (requests['doAddFavorites'].responseText)
				{
					CachObjects['pageerror'].innerHTML += requests['doAddFavorites'].responseText;
					CachObjects['pageerror'].style.display = "block";
					setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
				}
				if (requests['doAddFavorites'].responseJS.answer != 'error' && requests['doAddFavorites'].responseJS.answer != '')
				{
					if (gid(fromid))
					{
						gid(fromid).style.display = 'none';
					}
				}
				else
				{
					alert('Не удалось добавить в избранное!\nПопробуйте повторить попытку позже.');
				}
			}
		}
		requests['doAddFavorites'].open(null, '/data/templates/serverside/ajax.addfavorites.php', true);
		requests['doAddFavorites'].send( { q : val } );
	}
}
