function SetPrintCSS(isPrint)
{
	var link;

	if (document.getElementsByTagName)
		link = document.getElementsByTagName('link');
	else if (document.all)
		link = document.all.tags('link');
	else
		return;

	for (var index=0; index < link.length; index++)
	{
		if (!link[index].title || link[index].title != 'print')
			continue;

		if (isPrint)
		{
			link[index].disabled = false;
			link[index].rel = "stylesheet";
		}
		else
		{
			link[index].disabled = true;
			link[index].rel = "alternate stylesheet";
		}
	}
}

function AddToBookmark()
{
	var title = window.document.title;
	var url = window.document.location;

	if (window.sidebar)
	{
		window.sidebar.addPanel(title, url, "");
	}
	/*else if(window.opera)
	{
		var a = document.createElement("A");
		a.rel = "sidebar";
		a.target = "_search";
		a.title = title;
		a.href = url;
		a.click();
	}*/
	else if(document.all)
	{
		window.external.AddFavorite(url, title);
	}
	else
	{
		alert("Для добавления страницы в Избранное нажмите Ctrl+D");
	}
	
	return false;
}

function BackToDesignMode()
{
	if (document.all)
		window.location.href = window.location.href.replace('#print','');
	else
		SetPrintCSS(false);

	return false;
}

if (document.location.hash == '#print')
	SetPrintCSS(true);

if (window.jsAjaxUtil)
{
	// show ajax visuality
	jsAjaxUtil.ShowLocalWaitWindow = function (TID, cont, bShadow)
	{
		if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
			var obContainerNode = document.getElementById(cont);
		else
			var obContainerNode = cont;
		
		if (obContainerNode.getBoundingClientRect)
		{
			var obRect = obContainerNode.getBoundingClientRect();
			var obWndSize = jsAjaxUtil.GetWindowSize();

			var arContainerPos = {
				left: obRect.left + obWndSize.scrollLeft, 
				top: obRect.top + obWndSize.scrollTop, 
				right: obRect.right + obWndSize.scrollLeft, 
				bottom: obRect.bottom + obWndSize.scrollTop
			};
		}
		else
			var arContainerPos = jsAjaxUtil.GetRealPos(obContainerNode);
		
		var container_id = obContainerNode.id;
		
		if (!arContainerPos) return;

		var obWaitMessage = document.body.appendChild(document.createElement('DIV'));
		obWaitMessage.id = 'wait_' + container_id + '_' + TID;
		obWaitMessage.className = 'waitwindow';
		
		var div_top = arContainerPos.top + 5;
		if (div_top < document.body.scrollTop) div_top = document.body.scrollTop + 5;
		
		obWaitMessage.style.top = div_top + 'px';
		obWaitMessage.style.left = (arContainerPos.right - 200) + 'px';
		obWaitMessage.innerHTML = 'Loading...';
		
		if(jsAjaxUtil.IsIE())
		{
			var frame = document.createElement("IFRAME");
			frame.src = "javascript:''";
			frame.id = 'waitframe_' + container_id + '_' + TID;
			frame.className = "waitwindow";
			frame.style.width = obWaitMessage.offsetWidth + "px";
			frame.style.height = obWaitMessage.offsetHeight + "px";
			frame.style.left = obWaitMessage.style.left;
			frame.style.top = obWaitMessage.style.top;
			document.body.appendChild(frame);
		}
		
		function __Close(e)
		{
			if (!e) e = window.event
			if (!e) return;
			if (e.keyCode == 27)
			{
				jsAjaxUtil.CloseLocalWaitWindow(TID, cont);
				jsEvent.removeEvent(document, 'keypress', __Close);
			}
		}
		
		jsEvent.addEvent(document, 'keypress', __Close);
	}
}

// random home banners --------------------------------------------------------------------------------------------- //

var theImages = new Array() // do not change this
// To add more image files, continue with the
// pattern below, adding to the array.

theImages[0] = '../../../../../bitrix/templates/bitrix/images/banners/banner_1.jpg'
theImages[1] = '../../../../../bitrix/templates/bitrix/images/banners/banner_2.jpg'
theImages[2] = '../../../../../bitrix/templates/bitrix/images/banners/banner_3.jpg'
theImages[3] = '../../../../../bitrix/templates/bitrix/images/banners/banner_4.jpg'
theImages[4] = '../../../../../bitrix/templates/bitrix/images/banners/banner_5.jpg'
theImages[5] = '../../../../../bitrix/templates/bitrix/images/banners/banner_6.jpg'


// do not edit anything below this line

var j = 0
var p = theImages.length;
var preBuffer = new Array()
for (i = 0; i < p; i++){
   preBuffer[i] = new Image()
   preBuffer[i].src = theImages[i]
}
var whichImage = Math.round(Math.random()*(p-1));
function showImage(){
document.write('<img src="'+theImages[whichImage]+'">');
}

// end --------------------------------------------------------------------------------------------- //




var authPreloadImages = ["close.gif"];
for (var imageIndex = 0; imageIndex < authPreloadImages.length; imageIndex++)
{
	var imageObj = new Image();
	imageObj.src = "/bitrix/components/bx/bitrix.image.popup/templates/.default/images/" + authPreloadImages[imageIndex];
}
authPreloadImages = null;

var jsPublicImage = 
{
	Step: 15,
	PaddingSize: 15,
	Timer: 30,
	ImageParams: [],
	ImageObject: null,
	DivObject: null,
	DivShadowObject: null,
	StepWaitImage: 240,
	TimerWaitImage: 125,
	Shadow: false,
	ImageSource: false,
	
	__PrepareImage: function(image)
	{
		//clear
		this.CloseImage();
		this.ImageParams = [];
		this.ImageObject = null;
		this.DivObject = null;
		this.DivShadowObject = null;
		this.Shadow = false;
		this.ImageSource = false
		
		//create div
		this.DivObject =  document.body.appendChild(document.createElement('DIV'));
		this.DivObject.className = 'public-outside-div';
		this.DivObject.id = 'img_container_big';
		
		//create image
		this.ImageObject = this.DivObject.appendChild(document.createElement('IMG'));
		this.ImageObject.src = image;
		this.ImageObject.id = 'img_container_big_image';
	},
	
	__PrepareParams: function()
	{
		//get sizes
		this.ImageParams['ImageWidth'] = this.ImageObject.width;
		this.ImageParams['ImageHeight'] = this.ImageObject.height;
		this.ImageParams['minImageWidth'] = this.ImageParams['ImageWidth']/this.Step;
		this.ImageParams['minImageHeight'] = this.ImageParams['ImageHeight']/this.Step;

		//set image style
		this.ImageObject.className = 'public-image-big';
		
		//get window sizes
		this.ImageParams['WinSize'] = jsUtils.GetWindowSize();
		
		//correction
		var panel = document.getElementById('bx_top_panel_container');
		this.ImageParams['CorrectTop'] = this.PaddingSize;
		this.ImageParams['CorrectLeft'] = this.PaddingSize;

		if(panel && panel.offsetHeight > this.ImageParams['WinSize']['scrollTop'])
			this.ImageParams['CorrectTop'] += panel.offsetHeight - this.ImageParams['WinSize']['scrollTop'];
			
		//show block
		this.DivObject.style.visibility = 'visible';	
	},
	
	ShowImage: function(small_image, image, shadow)
	{
		//close wait window
		this.CloseLocalWaitWindow(this.ImageSource);
		
		//prepare image
		this.__PrepareImage(image);
		this.ImageSource = small_image;
		this.ShowLocalWaitWindow(this.ImageSource);
		//add shadow
		if(shadow)
			this.Shadow = true;
		//check if image loaded
		this.__ImageCheckLoad(1, this.ImageSource);
	},
	
	__ImageCheckLoad: function(i, ImageSource)
	{
		//if image suddenly changed
		if(ImageSource != this.ImageSource)
			return;
	
		if(i>this.StepWaitImage)
		{
			this.CloseLocalWaitWindow(this.ImageSource);
			return;
		}
		
		var _this = this;	
		//wait while image won't be loaded
		if(!this.ImageObject.complete && (!this.ImageObject.width || this.ImageObject.width<=0 || (this.ImageObject.width==28 && jsUtils.IsIE())))
			setTimeout(function() {_this.__ImageCheckLoad(++i, ImageSource)}, this.TimerWaitImage);
		else
		{
			this.__PrepareParams();
			this.CloseLocalWaitWindow(this.ImageSource);
			setTimeout(function() {_this.ImageExpand(1, ImageSource)}, this.Timer);
		}
	},
	
	ImageExpand: function(i, ImageSource)
	{
		//if image suddenly changed
		if(ImageSource != this.ImageSource)
			return;
	
		if(i>this.Step)
		{	
			this.__PrepareClose();
			return;
		}
			
		//resize
		this.DivObject.style.width = this.ImageParams['minImageWidth'] * i + 'px';
		this.DivObject.style.height = this.ImageParams['minImageHeight'] * i + 'px';
			
		//top move
		var TopPadding = this.ImageParams['WinSize']['innerHeight']/2 - (this.ImageParams['minImageHeight'] * i)/2 + this.ImageParams['WinSize']['scrollTop'];
		var TopPaddingCmp = this.ImageParams['CorrectTop'] + this.ImageParams['WinSize']['scrollTop'];
		if(TopPadding < TopPaddingCmp)
			this.DivObject.style.top = TopPaddingCmp + 'px';
		else
			this.DivObject.style.top = TopPadding + 'px';
		
		//left move
		var LeftPadding = this.ImageParams['WinSize']['innerWidth']/2 - (this.ImageParams['minImageWidth'] * i)/2 + this.ImageParams['WinSize']['scrollLeft'];
		var LeftPaddingCmp = this.ImageParams['CorrectLeft'] + this.ImageParams['WinSize']['scrollLeft'] + 'px';
		if(LeftPadding < LeftPaddingCmp)
			this.DivObject.style.left = LeftPaddingCmp + 'px';
		else
			this.DivObject.style.left = LeftPadding + 'px';
			
		//set transparent
		this.setElementOpacity('img_container_big_image', 0.1*i);
		
		//set shadow
		if(this.Shadow)
			this.ShadowExpand();

		//repeat step
		setTimeout(function() {jsPublicImage.ImageExpand(++i, ImageSource);}, this.Timer);
		
	},
	
	ShadowExpand: function()
	{
		if(!this.Shadow)
			return;
		//create shadow block
		if(this.DivShadowObject==null || !this.DivShadowObject)
		{
			this.DivShadowObject = this.DivObject.appendChild(document.createElement('DIV'));
			this.DivShadowObject.className = 'public-inside-div';
			this.DivShadowObject.id = 'img_container_shadow';
			this.setElementOpacity('img_container_shadow', 0.2);
		}
		
		this.DivShadowObject.style.width = this.DivObject.style.width;
		this.DivShadowObject.style.height = this.DivObject.style.height;
	},
	
	__PrepareClose: function()
	{
		//prepare close actions
		function __Close(e)
		{
			if (!e) e = window.event
			if (!e) return;
			if (e.keyCode == 27)
			{
				jsPublicImage.CloseImage();
				jsUtils.removeEvent(document, 'keydown', __Close);
			}
		}
			
		jsUtils.addEvent(document, 'keydown', __Close);
		this.ImageObject.onclick = function() {jsPublicImage.CloseImage()};
		this.__PrepareCloseButton();
	},
	
	__PrepareCloseButton: function()
	{
		//close buttons
		var CloseBtn = this.DivObject.appendChild(document.createElement('DIV'));
		CloseBtn.style.left = this.ImageParams['ImageWidth'] + 'px';		
		CloseBtn.className = 'public-image-close-image';
		CloseBtn.onclick = function() {jsPublicImage.CloseImage()};		
	},
	
	CloseImage: function()
	{
		var obDiv = document.getElementById('img_container_big');
		if(obDiv)
			document.body.removeChild(obDiv);
	},
	
	ShowLocalWaitWindow: function (cont)
	{
		if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
			var obContainerNode = document.getElementById(cont);
		else
			var obContainerNode = cont;
		
		if (obContainerNode.getBoundingClientRect)
		{
			var obRect = obContainerNode.getBoundingClientRect();
			var obWndSize = jsUtils.GetWindowSize();

			var arContainerPos = {
				left: obRect.left + obWndSize.scrollLeft, 
				top: obRect.top + obWndSize.scrollTop, 
				right: obRect.right + obWndSize.scrollLeft, 
				bottom: obRect.bottom + obWndSize.scrollTop
			};
		}
		else
			var arContainerPos = jsUtils.GetRealPos(obContainerNode);
		
		var container_id = obContainerNode.id;
		
		if (!arContainerPos) return;
		
		var obWaitMessage = document.body.appendChild(document.createElement('DIV'));
		obWaitMessage.id = 'wait_image';
		obWaitMessage.className = 'waitwindow';
		
		var div_top = arContainerPos.top + 5;
		if (div_top < document.body.scrollTop) div_top = document.body.scrollTop + 5;
		
		obWaitMessage.style.top = div_top + 'px';
		obWaitMessage.style.left = (arContainerPos.left + 5) + 'px';
		obWaitMessage.innerHTML = 'Loading...';
		
		if(jsUtils.IsIE())
		{
			var frame = document.createElement("IFRAME");
			frame.src = "javascript:''";
			frame.id = 'waitframe_image';
			frame.className = "waitwindow";
			frame.style.width = obWaitMessage.offsetWidth + "px";
			frame.style.height = obWaitMessage.offsetHeight + "px";
			frame.style.left = obWaitMessage.style.left;
			frame.style.top = obWaitMessage.style.top;
			document.body.appendChild(frame);
		}
	},
	
	CloseLocalWaitWindow: function(cont)
	{
		if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
			var obContainerNode = document.getElementById(cont);
		else
			var obContainerNode = cont;
	
		var container_id = obContainerNode.id;
		
		var obWaitMessageFrame = document.getElementById('waitframe_image');
		if (obWaitMessageFrame)
			document.body.removeChild(obWaitMessageFrame);
		var obWaitMessage = document.getElementById('wait_image');
		if (obWaitMessage)
			document.body.removeChild(obWaitMessage);
	},
	
	//opacity
	setElementOpacity: function(sElemId, nOpacity)
	{
		var opacityProp = this.getOpacityProperty();
		var elem = document.getElementById(sElemId);
	
		if (!elem || !opacityProp)
			return;
	  
		if (opacityProp=="filter")
		{
			nOpacity *= 100;
		
			var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
			if (oAlpha) 
				oAlpha.opacity = nOpacity;
			else 
				elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";
		}
		else
			elem.style[opacityProp] = nOpacity;
	},
	
	getOpacityProperty: function()
	{
		if (typeof document.body.style.opacity == 'string')
			return 'opacity';
		else if (typeof document.body.style.MozOpacity == 'string')
			return 'MozOpacity';
		else if (typeof document.body.style.KhtmlOpacity == 'string')
			return 'KhtmlOpacity';
		else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5)
			return 'filter';

		return false;
	}
}

//add if not exists
if(!window.jsUtils)
{
	var jsUtils =
	{
		arEvents: Array(),
	
		addEvent: function(el, evname, func, capture)
		{
			if(el.attachEvent)
				el.attachEvent("on" + evname, func);
			else if(el.addEventListener)
				el.addEventListener(evname, func, false);
			else
				el["on" + evname] = func;
			this.arEvents[this.arEvents.length] = {'element': el, 'event': evname, 'fn': func};
		},
	
		removeEvent: function(el, evname, func)
		{
			if(el.detachEvent)
				el.detachEvent("on" + evname, func);
			else if(el.removeEventListener)
				el.removeEventListener(evname, func, false);
			else
				el["on" + evname] = null;
		},
		
		IsIE: function()
		{
			return (document.attachEvent && !this.IsOpera());
		},

		IsOpera: function()
		{
			return (navigator.userAgent.toLowerCase().indexOf('opera') != -1);
		},

		IsSafari: function()
		{
			var userAgent = navigator.userAgent.toLowerCase();
			return (/webkit/.test(userAgent));
		},
		
		GetRealPos: function(el)
		{
			if(!el || !el.offsetParent)
				return false;
	
			var res = Array();
			res["left"] = el.offsetLeft;
			res["top"] = el.offsetTop;
			var objParent = el.offsetParent;
			
			while(objParent && objParent.tagName != "BODY")
			{
				res["left"] += objParent.offsetLeft;
				res["top"] += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}
			res["right"] = res["left"] + el.offsetWidth;
			res["bottom"] = res["top"] + el.offsetHeight;
			
			return res;
		},
		
		GetWindowInnerSize: function(pDoc)
		{
			var width, height;
			if (!pDoc)
				pDoc = document;
	
			if (self.innerHeight)
			{
				width = self.innerWidth;
				height = self.innerHeight;
			}
			else if (pDoc.documentElement && pDoc.documentElement.clientHeight)
			{
				width = pDoc.documentElement.clientWidth;
				height = pDoc.documentElement.clientHeight;
			}
			else if (pDoc.body)
			{
				width = pDoc.body.clientWidth;
				height = pDoc.body.clientHeight;
			}
			return {innerWidth : width, innerHeight : height};
		},
		
		GetWindowScrollPos: function(pDoc)
		{
			var left, top;
			if (!pDoc)
				pDoc = document;
			
			if (self.pageYOffset)
			{
				left = self.pageXOffset;
				top = self.pageYOffset;
			}
			else if (pDoc.documentElement && pDoc.documentElement.scrollTop)
			{
				left = document.documentElement.scrollLeft;
				top = document.documentElement.scrollTop;
			}
			else if (pDoc.body)
			{
				left = pDoc.body.scrollLeft;
				top = pDoc.body.scrollTop;
			}
			return {scrollLeft : left, scrollTop : top};
		},
		
		GetWindowScrollSize: function(pDoc)
		{
			var width, height;
			if (!pDoc)
				pDoc = document;
	
			if ( (pDoc.compatMode && pDoc.compatMode == "CSS1Compat"))
			{
				width = pDoc.documentElement.scrollWidth;
				height = pDoc.documentElement.scrollHeight;
			}
			else
			{
				if (pDoc.body.scrollHeight > pDoc.body.offsetHeight)
					height = pDoc.body.scrollHeight;
				else
					height = pDoc.body.offsetHeight;
	
				if (pDoc.body.scrollWidth > pDoc.body.offsetWidth || 
					(pDoc.compatMode && pDoc.compatMode == "BackCompat") ||
					(pDoc.documentElement && !pDoc.documentElement.clientWidth)
				)
					width = pDoc.body.scrollWidth;
				else
					width = pDoc.body.offsetWidth;
			}
			return {scrollWidth : width, scrollHeight : height};
		},
		
		GetWindowSize: function()
		{
			var innerSize = jsUtils.GetWindowInnerSize();
			var scrollPos = jsUtils.GetWindowScrollPos();
			var scrollSize = jsUtils.GetWindowScrollSize();
	
			return  {
				innerWidth : innerSize.innerWidth, innerHeight : innerSize.innerHeight, 
				scrollLeft : scrollPos.scrollLeft, scrollTop : scrollPos.scrollTop,
				scrollWidth : scrollSize.scrollWidth, scrollHeight : scrollSize.scrollHeight
			};
		}
	}
}
