function navigate(src)
{
	location.href=src;
}

/**
	alert(sprintf('text%stext\%stext', 'A', 'B'));
 */
var sprintf = function(str)
{
	for(var i=1;i<arguments.length;i++) {
		str = str.replace(/([^\\])%s/, '$1'+arguments[i]);
	}
	return str;
}

function dlgWnd(url, width, height)
{
	var wnd=window.open(url, '',
		  ' toolbar=0, directories=0, menubar=0,'
		+ ' resizable=1, left=0, top=0,'
		+ ' width=' + ((width) ? width : '300') + ','
		+ ' height=' + ((height) ? height : '300') + ','
		+ ' status=0, scrollbars=1');
	wnd.focus();
	return wnd;
}

//function Utf82Win(text)
//{
//	// Инициализируем таблицу перевода
//	var trans = [];
//	for (var i = 0x410; i <= 0x44F; i++)
//		trans[i] = i - 0x350; // А-Яа-я
//	trans[0x401] = 0xA8;	// Ё
//	trans[0x451] = 0xB8;	// ё
//
//	var str = [];
//	// Составляем массив кодов символов, попутно переводим кириллицу
//	for (var i = 0; i < text.length; i++)
//	{
//		var n = text.charCodeAt(i);
//		if (typeof trans[n] != 'undefined')
//			n = trans[n];
//		if (n <= 0xFF)
//			str.push(n);
//	}
//	return String.fromCharCode.apply(null, str);
//}

function a_logout()
{
	setCookie('member', '');
	window.location.reload();
	return false;
}

function a_image(a)
{
	var url = '/images/?img=' + encodeURI(a.href)
		+ '&wnd=image&db=0'
		+ '&title=' + encodeURI(a.title);
	return Bereg.show_dialog(url, true);
}

function a_dialog(a, a_href, a_close)
{
	a_href = a_href
		+ ((a_href.indexOf('?') === -1) ? '?' : '&')
		+ '&wnd=dialog'
		+ '&title=' + encodeURI(a.title);
	return Bereg.show_dialog(a_href, a_close);
}

/*function a_dialog(a, a_href, a_close)
{
	a_href = a_href
		+ ((a_href.indexOf('?') === -1) ? '?' : '&')
		+ 'wnd=dialog'
		+ '&title=' + (a.getAttribute('title') ? '' : escape(Utf82Win(a.title)));
	Bereg.dialog = new Dialog(a_href);
	Bereg.dialog.set_close(((typeof(a_close)==='undefined') ? true : a_close));
	return true;
}*/

function a_popup(a, href, wnd_size)
{
	href = href
		+ ((href.indexOf('?') === -1) ? '?' : '&')
		+ 'wnd=popup'
		+ '&title=' + (a.getAttribute('title') ? '' : encodeURI(a.title));

	var cur_url = location.href;
	if (cur_url.indexOf('wnd=popup') === -1)
	{
		wnd_size = (wnd_size ? wnd_size.split('x') : [300, 300]);
		dlgWnd(href, wnd_size[0], wnd_size[1]);
	}
	else
		location.href = href;

	return true;
}

function attach_event(sender, event, func)
{
	if (sender.addEventListener)
		return sender.addEventListener(event, func, false);
	else
		return sender.attachEvent('on'+event, func);
}

function detach_event(sender, event, func)
{
	if (sender.addEventListener)
		return sender.removeEventListener(event, func, false);
	else
		return sender.detachEvent('on'+event, func);
}

var popupSizer = {
	WindowWidth: 0,
	WindowHeight: 0,
	OldWindowWidth: 0,
	OldWindowHeight: 0,
	autosize: false,
	doResize: [],

	onresize: function(event)
	{
		this.doResize.push(event);
	},

	on: function()
	{
		function SaveSize()
		{
			popupSizer.WindowWidth = Bereg.isIE ? document.documentElement.clientWidth : window.innerWidth;
			popupSizer.WindowHeight = Bereg.isIE ? document.documentElement.clientHeight : window.innerHeight;
		}
		f_event('load',
			function() {
				SaveSize();
				popupSizer.OldWindowWidth = popupSizer.WindowWidth;
				popupSizer.OldWindowHeight = popupSizer.WindowHeight;

				f_event('resize',
					function()
					{
						for (var i=0; i<popupSizer.doResize.length; i++)
							popupSizer.doResize[i]();
						popupSizer.autosize = false;
					}
				)
			}
		);
		popupSizer.onresize(
			function()
			{
				popupSizer.OldWindowWidth = popupSizer.WindowWidth;
				popupSizer.OldWindowHeight = popupSizer.WindowHeight;
				SaveSize();
			}
		);
	},

	auto: function()
	{
		f_event('load', function() {
			popupSizer.autosize = true;
			var el = Bereg.$('main');
			if (el)
			{
				var iHeight = (Bereg.isIE ? el.offsetHeight + 15 : el.clientHeight) + 20 - popupSizer.WindowHeight;
				var iWidth = (Bereg.isIE ? el.offsetWidth + 15 : el.clientWidth) + 20 - popupSizer.WindowWidth;
				window.resizeBy(iWidth, iHeight);
			}
		})
	},

	editor_resize: function(name)
	{
		var el = document.getElementById(name + '_tbl');
		if (el)
		{
			el.style.height = el.offsetHeight - (popupSizer.OldWindowHeight - popupSizer.WindowHeight) + 'px';
			el.style.width = el.offsetWidth - (popupSizer.OldWindowWidth - popupSizer.WindowWidth) + 'px';
		}
		el = document.getElementById(name + '_ifr');
		if (el)
		{
			el.style.height = el.offsetHeight - (popupSizer.OldWindowHeight - popupSizer.WindowHeight) + 'px';
		}
	}
}


function frm_defbtn(sender, enter)
{
	sender.onkeypress = function(event) {
		if (!event) event = window.event;
		if (event.keyCode === 13)
		{
			if (enter)
			{
				switch ((Bereg.isIE ? event.srcElement : event.target).tagName)
				{
					case 'TEXTAREA':
						return true;
					case 'INPUT':
						var type = (Bereg.isIE ? event.srcElement : event.target).getAttribute('type');
						if ((type === 'text') || (type === 'password') || (type === 'checkbox') || (type === 'radio'))
						{
							var noenter = (Bereg.isIE ? event.srcElement : event.target).getAttribute('noenter');
							if (noenter !== '1')
								enter();
						}
						break;
				}
			}
			return false;
		}
		else
			return true;
	}
}

var Bereg = new function()
{
	var self = this;

	this.isOpera = (navigator.appName === "Opera") ? true : false;
	this.isFF = (navigator.appName === "Netscape") ? true : false;
	this.isFF3 = this.isFF && /Firefox\/3/.test(navigator.userAgent);
	this.isFF2 = this.isFF && !this.isFF3;
	this.isWebKit = /WebKit/.test(navigator.userAgent);
	this.isIE = (navigator.appName === "Microsoft Internet Explorer") ? true : false;
	this.isIE8 = this.isIE && /MSIE [8]/.test(navigator.userAgent);
	this.isIE6 = this.isIE && /MSIE [56]/.test(navigator.userAgent); //ie6 - тварь

	this.$ = function(id)
	{
		return document.getElementById(id);
	}

	this.select_head_btn = function(el, value)
	{
		el.style.background = (value ? '#436AB4 url(/imgs/tm-bg-sel.png)' : '#24396a url(/imgs/tm-bg.png)') +' repeat-x top';
	}

	var _ajax = function()
	{
		var req = false;
		if (window.XMLHttpRequest)
		{
			try
			{
				req = new XMLHttpRequest();
			}
			catch (e){}
		}
		else
		if (window.ActiveXObject)
		{
			try
			{
				req = new ActiveXObject('Msxml2.XMLHTTP');
			}
			catch (e)
			{
				try
				{
					req = new ActiveXObject('Microsoft.XMLHTTP');
				}
				catch (e){}
			}
		}
		else
			req = false;

		if (req && !self.isIE6)
			req.caching = false;
		return req;
	}

	this.ajax = function(onget)
	{
		var req = _ajax();
		if (req)
		{
			req.onreadystatechange =
				function()
				{
					if (req.readyState === 4)
					{
						if (req.status === 200)
						{
							onget(req.responseText);
						}
					}
				}
		}
		return req;
	}

	this.show_dialog = function(url, aclose)
	{
		self.dialog = new Dialog();
		if (aclose) self.dialog.set_close(true);

		if (url != '')
		{
			this.aget(url,
				function(value){
					self.dialog.set_page(value)
				})
		}
		return true;
	}

	this.aget = function(url, onget, async)
	{
		var req = this.ajax(
			function(value) {
				if (onget)
					onget(window.eval('('+value+')'))
			});
		if (req) {
			req.open('GET', url, (typeof(async)==='undefined') ? true : async);
			req.send(null);
			return true;
		}
		else
			return false;
	}

	this.dlg_send_frm = function(url, values, onsend)
	{
		this.dialog.set_close(false);
		this.dialog.disable.visible(true);
		this.dialog.disable.loading_visible(true);
		return this.send_frm(url, values, onsend);
	}

	this.dlg_post_frm = function(sender, url, onpost) //отправка формы через iframe
	{
		this.dialog.set_close(false);
		this.dialog.disable.visible(true);
		this.dialog.disable.loading_visible(true);
		return this.post_frm(sender, url, onpost);
	}

	this.send_frm = function(sender, url, onsend) //отправка формы ajax'ом
	{
		var req = this.ajax(
			function(value){
				onsend(window.eval('('+value+')'))});
		if (req)
		{
			req.open('POST', url, true);
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			var data = '';
			var value = '';
			var values = sender.elements;// getElementsByTagName('input');
			for (var i=0; i<values.length; i++)
			{
				if (values[i].type === 'button') continue;
				if ((values[i].type === 'checkbox') && !values[i].checked) continue;
				if ((values[i].type === 'radio') && !values[i].checked) continue;
				value = values[i].value;
				data += ((data === '') ? '' : '&')+values[i].name+'='+encodeURIComponent(value);
			}
			req.send(data);
			return true;
		}
		else
			return false;
	}

	this.post_frm = function(sender, url, onpost) //отправка формы через iframe
	{
		//var iframe = document.createElement('iframe');
		//iframe.style.display = 'none';  //-------------------------------------
		//iframe.src = 'about:blank';     //--- не знаю почему, но в ie так не работает
		//iframe.id = 'frm_post';         //--- танцы с бубном плясать нет ни какого желания
		//iframe.name = 'frm_post';       //--- не хочет - не надо. пошёл он в ж.
		//iframe.onload = function(){     //-------------------------------------
		//	setTimeout(function(){sender.removeChild(iframe)}, 500);
		//	onpost(iframe.contentWindow.post_result);
		//}
		//sender.appendChild(iframe);

		var div = document.createElement('div'); //--- только, сцуко, так ---
		div.style.display = 'none';
		this.onPost_frm = function(result){
			onpost(result);
			setTimeout(function(){sender.removeChild(div)}, 500);
		}
		div.innerHTML = '<iframe src="about:blank" id="frm_post" name="frm_post" onload="Bereg.onPost_frm(contentWindow.post_result)"></iframe>';
		sender.appendChild(div);                 //----- End -----

		sender.setAttribute('target', 'frm_post');//target = 'frm_post';
		sender.setAttribute('action', url);//action = url;
		sender.setAttribute('method', 'post');//method = 'post';
		sender.submit();
	}

	this.hint = new function()
	{
		attach_event(window, 'load', function(){
			var hint = document.createElement('div');
			hint.id = 'hint';
			document.body.appendChild(hint);
		});
		var onmove = function(event){Bereg.hint.move(event)}
		this.show = function(sender, hint_id, visible)
		{
			if (visible)
			{
				var _hint = Bereg.$('hint'+hint_id);
				hint.innerHTML = _hint.innerHTML;
				attach_event(sender, 'mousemove', onmove);
				hint.style.display = 'block';
			}
			else
			{
				hint.style.display = 'none';
				hint.innerHTML = '';
				detach_event(sender, 'mousemove', onmove);
			}
			return true;
		}
		this.move = function(event)
		{
			hint.style.left = (Bereg.isIE ? event.x : event.pageX) + 'px';
			hint.style.top = (Bereg.isIE
				? event.y + (document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop)
				: event.pageY) + 'px';
		}
	}

	this.fix_ie6png = function(name)
	{
		if (!this.isIE6) return;
		var el = this.$(name);
		if (el)
		{
			if ((/\.png$/i).test(el.src))
			{
				el.style.width = el.offsetWidth + 'px';
				el.style.height = el.offsetHeight + 'px';
				el.style.filter = "filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+el.src+"', sizingMethod='scale');";
				el.src = '/imgs/null.png';
			}
		}
	}
}

function nbClick(sender)
{
	var el = Bereg.$('nb_'+sender+'_items');
	if (el)
	{
		var hidden = el.style.display === 'none';
		el.style.display = ((hidden) ? '' : 'none');
	}
//	el = Bereg.$('nb_'+sender+'_btn');
//	if (el)
//		el.src = ((hidden) ? '/imgs/btnMinus.png' : '/imgs/btnPlus.png');
	Bereg.aget('/@nvg.html?id='+sender, false);
	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var basketPrim = false;
function BasketPrim()
{
	var sender = this;
	this.panel = document.createElement('div');
	this.panel.id = 'basketPrim';
	document.body.appendChild(this.panel);

	this.textarea = document.createElement('textarea');
	this.textarea.id = 'prim';
	this.textarea.cols = 20;
	this.textarea.rows = 3;
	this.textarea.className = 'edit';
	this.panel.appendChild(this.textarea);
	this.textarea.onkeypress = function(evt){
 		evt = (evt) ? evt : (window.event) ? event : null;
		if (evt.keyCode === 13) return false;
		if (sender.textarea.value.length > 49)
			sender.textarea.value = sender.textarea.value.substring(0,49);};
	this.textarea.onchange = function(){
		if (sender.textarea.value.length > 50)
			sender.textarea.value = sender.textarea.value.substring(0,50);};

	this.focused = false;
	var onmove = function(event){sender.move(event);};

	this.show = function(sender, prim_id, visible)
	{
		if (visible)
		{
			var _prim = document.getElementById('info['+prim_id+']');
			this.textarea.value = _prim.value;
			attach_event(sender, 'mousemove', onmove);
			this.panel.style.display = 'block';
			this.focused = false;
		}
		else
		{
			this.panel.style.display = 'none';
			detach_event(sender, 'mousemove', onmove);
			var _prim = document.getElementById('info['+prim_id+']');
			_prim.value = this.textarea.value;
		}
		return true;
	}

	this.move = function(event)
	{
		this.panel.style.left = ((Bereg.isIE ? event.x : event.pageX) - this.panel.scrollWidth) + 'px';
		this.panel.style.top = (Bereg.isIE
			? event.y + (document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop)
			: event.pageY) + 'px';
		if (!this.focused)
			this.textarea.focus();
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

f_update = [];
f_resize = [];
f_load = [];
function f_event(name, event)
{
	switch (name)
	{
		case 'update':
			f_update.push(event);
			break;
		case 'load':
			f_load.push(event);
			break;
		case 'resize':
			f_resize.push(event);
			break;
	}
}
function events_exec(events)
{
	for (var i=0; i<events.length; i++)
	{
		events[i]();
	}
}

attach_event(window, 'load', function(){events_exec(f_load)});
attach_event(window, 'resize', function(){events_exec(f_resize)});