	var isIE = navigator.appName == 'Microsoft Internet Explorer';

	var siteStruct = location.pathname;
	siteStruct = siteStruct.split('/');
	for(i = 0; i < siteStruct.length; i++){
		if(siteStruct[i].length == 0) siteStruct.splice(i,1);
	}
	
	var _GET = new Object();
	searchQuery = location.search.substring(1,location.search.length).split('&');
	for(i = 0; i < searchQuery.length; i++){
		s = searchQuery[i].split('=');
		_GET[s[0]] = s[1];
	}
	
	
	var xmlHttp = createXmlHttpRequestObject();
  
  function createXmlHttpRequestObject(){
	  if(window.XMLHttpRequest){
        req = new XMLHttpRequest();
     }else if(window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
     }else{
		  req = false;
	  }
     return req;
  }
	
	function in_array(array,needle){
		for(i=0; i<array.length; i++){
			if(needle==array[i]) return i;
		}
		return false;
	}

	function addEvent( obj, type, fn ) {
		if (obj.addEventListener) {
			obj.addEventListener( type, fn, false );
			EventCache.add(obj, type, fn);
		}
		else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
			EventCache.add(obj, type, fn);
		}
		else {
			obj["on"+type] = obj["e"+type+fn];
		}
	}
		
	var EventCache = function(){
		var listEvents = [];
		return {
			listEvents : listEvents,
			add : function(node, sEventName, fHandler){
				listEvents.push(arguments);
			},
			flush : function(){
				var i, item;
				for(i = listEvents.length - 1; i >= 0; i = i - 1){
					item = listEvents[i];
					if(item[0].removeEventListener){
						item[0].removeEventListener(item[1], item[2], item[3]);
					};
					if(item[1].substring(0, 2) != "on"){
						item[1] = "on" + item[1];
					};
					if(item[0].detachEvent){
						item[0].detachEvent(item[1], item[2]);
					};
					item[0][item[1]] = null;
				};
			}
		};
	}();
	addEvent(window,'unload',EventCache.flush);
	
	
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		}
		else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}
	
	function getElementsByClass(searchClass,node,tag) {
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}
	
	function insertAfter(parent, node, referenceNode) {
		parent.insertBefore(node, referenceNode.nextSibling);
	}
	
	function getElementPosition(elem){
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
    var l = 0;
    var t = 0;
    while(elem){
			l += elem.offsetLeft;
			t += elem.offsetTop;
			elem = elem.offsetParent;
    }
    return {"left":l, "top":t, "width": w, "height":h};
	}
	
	function switchVisibility(vis){
		for(i=1; i<arguments.length; i++){
			elements = document.getElementsByTagName(arguments[i]);
			for(j=0; j<elements.length; j++) elements[j].style.visibility = vis;
		}
	}
	
	function getCookie( name ) {
		var start = document.cookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
			return null;
		}
		if ( start == -1 ) return null;
		var end = document.cookie.indexOf( ";", len );
		if ( end == -1 ) end = document.cookie.length;
		return unescape( document.cookie.substring( len, end ) );
	}
		
	function setCookie( name, value, expires, path, domain, secure ) {
		var today = new Date();
		today.setTime( today.getTime() );
		if ( expires ) {
			expires = expires * 1000 * 60 * 60 * 24;
		}
		var expires_date = new Date( today.getTime() + (expires) );
		document.cookie = name+"="+escape( value ) +
			( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
			( ( path ) ? ";path=" + path : "" ) +
			( ( domain ) ? ";domain=" + domain : "" ) +
			( ( secure ) ? ";secure" : "" );
	}
		
	function deleteCookie( name, path, domain ) {
		if ( getCookie( name ) ) document.cookie = name + "=" +
				( ( path ) ? ";path=" + path : "") +
				( ( domain ) ? ";domain=" + domain : "" ) +
				";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}

	function $() {
		var elements = new Array();
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string')
				element = document.getElementById(element);
			if (arguments.length == 1)
				return element;
			elements.push(element);
		}
		return (elements.length > 0) ? elements : false ;
	}
	
	function getBodyScrollTop(){
		return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
	}
	
	function getBodyScrollLeft(){
		return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
	}
	
	function getClientWidth(){
		return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
	}
	
	function getClientHeight(){
		return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
	}
	
	function getPageHeight(){
		var yScroll, windowHeight;
		if(window.innerHeight && window.scrollMaxY) yScroll = window.innerHeight + window.scrollMaxY;
		else if(document.body.scrollHeight > document.body.offsetHeight) yScroll = document.body.scrollHeight;
		else yScroll = document.body.offsetHeight; 
		if(self.innerHeight) windowHeight = self.innerHeight;
		else if(document.documentElement && document.documentElement.clientHeight) windowHeight = document.documentElement.clientHeight;
		else if(document.body) windowHeight = document.body.clientHeight;
		if(yScroll < windowHeight) return windowHeight; 
		else return yScroll;
	}
	
	function sleep(numberMillis) {
		var now = new Date();
		var exitTime = now.getTime() + numberMillis;
		while (true) {
			now = new Date();
			if (now.getTime() > exitTime)
				return;
		}
	}
	
	function setElementOpacity(el,nOpacity){
		var opacityProp = getOpacityProperty();
		var elem = $(el);
		if(!elem || !opacityProp) return false;
		if(nOpacity > 1 || nOpacity < 0) return false;
		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;
		return true;
	}
	
	function getOpacityProperty(){
		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; 
	}
	
	function checkInt(_obj){
		validNum = '0123456789';
		var sourceNum = _obj.value;
		var newNum = '';
		maxNum = _obj.getAttribute('maxlength');
		if(maxNum == null) maxNum = 3;
		for(i = 0; i < maxNum; i++){
			charNum = sourceNum.substr(i,1);
			if(validNum.indexOf(charNum,0) != -1) newNum = newNum + charNum;
		}
		if(newNum == '') newNum = '1';
		if(newNum == '0') newNum = '1';
		_obj.value = newNum;
	}	
	
	
  function counterName(num,st,nd,tr){
		num = new String(num);
    num2 = new Number(num.substring(num.length-1,num.length));
    num3 = new Number(num.substring(num.length-2,num.length));
    if(num3>10 && num3<20){
      str = tr;
    }else if(num2 == 1){
      str = st;
    }else if(num2 == 2 || num2 == 3 || num2 == 4){
      str = nd;
    }else if(num2 == 5 || num2 == 6 || num2 == 7 || num2 == 8 || num2 == 9 || num2 == 0){
      str = tr;
    }
    return str;
  }
	
	function number_format(expr,decplaces,dec_separator,thousands_separator){
		if(typeof(dec_separator) == 'undefined' || (dec_separator != '.' && dec_separator != ',')) dec_separator = '.';
		if(typeof(thousands_separator) == 'undefined') thousands_separator = '';
		var str = '' + Math.round (eval(expr) * Math.pow(10,decplaces));
		while(str.length <= decplaces){
			str = '0' + str;
		}
		var decpoint = str.length - decplaces;
		str = str.substring(0,decpoint) + dec_separator + str.substring(decpoint,str.length);
		s = '';
		a = 0;
		for(i=strposl(str,'.')-1; i != 0; i--){
			a++;
			s = str.substr(i-1,1) + s;
			if(a == 3){
				a = 0;
				s = ' ' + s;
			}
		}
		str = s + str.substr(strposl(str,'.')-1,3);
		return str;
	}  
	function strposl(str,needle){
		if(typeof(str) != 'string' || typeof(needle) != 'string') return false;
		for(i = str.length; i != 1; i--){
			if(str.substr(i-1,needle.length) == needle) return i;
		}
	}
	
	function loadSearchForm(){
		_str = $('searchStr');
		if(!_str) return;
		defaultStr = 'Поиск представления';
		if(_str.value == ''){
			_str.value = defaultStr;
			_str.style.color = '#bebdbd';
		}
		_str.onfocus = function(){
			if(this.value == defaultStr){ 
				this.value = ''; 
				this.style.color = '#000000';
			}
		}
		_str.onblur = function(){
			if(this.value == ''){
				this.value = defaultStr;
				this.style.color = '#bebdbd';
			}
		}
	}
	
	function stretchBlock(_obj,limit,step,direct,callBack){
		if(!_obj) return;
		var height;
		if(direct){
			height = parseInt(_obj.style.height) + step;
			if(height > limit) height = limit;
		}else{
			height = parseInt(_obj.style.height) - step;
			if(height > limit) height = limit;
		}
		_obj.style.height = height + 'px';
		__obj = _obj;
		if((direct && height < limit) || (!direct && height > limit)) setTimeout("stretchBlock(__obj," + limit + "," + step + "," + direct + ")",10);
		else resizeColumns();
	}
	
	var openenMenuObj = false;

	function initMenuSwitcher(){
		var _navBar = $('nav');
		if(!_navBar) return;
		
		lists = _navBar.getElementsByTagName('ul');
		for(var i = 1; i < lists.length; i++){
			lists[i].id = 'list' + i;
			items = getElementsByClass('all',lists[i],'li');
			if(items[0]){
				links = items[0].getElementsByTagName('a');
				links[0].onclick = function () { return false; }
				items[0].id = 'all' + i;
				items[0].onclick = function (){
					if(openenMenuObj) collapseMenu(openenMenuObj);
					
					openenMenuObj = $('list' + this.id.replace(/all/,''));
					if(!openenMenuObj) return false;
					
					pos = getElementPosition(openenMenuObj);
					window.scrollTo(0,pos.top - 50);
					
					var start = 0;
					var qty = 0;
					var itemHeight = 0;
					
					openenMenuObj.style.height = openenMenuObj.offsetHeight + 'px';
					
					var items = openenMenuObj.getElementsByTagName('li');
					for(var i = 0; i < items.length; i++){
						if(i == 0) itemHeight = items[i].offsetHeight + 2;
						if(items[i].className.indexOf('none') != -1) items[i].style.display = 'block';
						if(items[i].className == 'all') items[i].style.display = 'none';
						else qty++;
					}
					stretchBlock(openenMenuObj,itemHeight*qty,15,true);
				}
			}
		}
	}
	function collapseMenu(closedMenuObj){
		var qty = 0;
		var limit = 0;
		var height = 0;
		var items = closedMenuObj.getElementsByTagName('li');
		for(var i = 0; i < items.length; i++){
			if(i == 0) height = items[i].offsetHeight;
			if(items[i].className.indexOf('none') != -1) items[i].style.display = 'none';
			else qty ++;
			if(items[i].className == 'all') items[i].style.display = 'block';
		}
		closedMenuObj.style.height = height*qty + 20 + 'px';
		resizeColumns();
	}
	
	addEvent(window,'load',loadSearchForm);
	addEvent(window,'load',initMenuSwitcher);
	
	function insertCell(node,isHead){
		if(isIE){
			newCell = node.insertCell();
			if(isHead) newCell.className = 'th';
		}else{
			newCell = document.createElement(isHead ? 'th' : 'td');
			node.appendChild(newCell);
		}
		return newCell;
	}
	function insertRow(node){
		if(isIE){
			newRow = node.insertRow();
		}else{
			newRow = document.createElement('tr');
			node.appendChild(newRow);
		}
		return newRow;
	}
	
	function buildCalendar(){
		var _box = $('calendar');
		if(!_box) return;
		_box.innerHTML = '';
		
		month = selectedMonth;
		
		var newMonth = document.createElement('table');
		_box.appendChild(newMonth);
		
		newRow = insertRow(newMonth);
		
		newCell = insertCell(newRow,true);
		hLink = document.createElement('a');
		hLink.href = '';
		hLink.onclick = function(){
			selectedMonth.addMonths(-1);
			buildCalendar();
			return false;
		}
		newCell.appendChild(hLink);
		hPicture = document.createElement('img');
		hPicture.src = '/img/i-arrow-prev.gif';
		hPicture.alt = 'Предыдущий месяц';
		hPicture.width = 12;
		hLink.appendChild(hPicture);
		
		newCell = insertCell(newRow,true);
		newCell.colSpan = 5;
		newCell.innerHTML = month.getFullMonth() + ', ';
		headerYear = document.createElement('span');
		headerYear.id = 'statYear';
		headerYear.innerHTML = month.getFullYear();
		headerYear.onclick = function (){
			this.style.display = 'none';
			$('editYear').style.display = 'inline';
			$('editYear').focus();
		}
		newCell.appendChild(headerYear);
		headerEditYear = document.createElement('select');
		headerEditYear.id = 'editYear';
		headerEditYear.name = 'editYear';
		headerEditYear.size = 1;
		headerEditYear.onchange = function (){
			this.style.display = 'none';
			$('statYear').innerHTML = this.value;
			$('statYear').style.display = 'inline';
			selectedMonth.addYears(this.value - selectedMonth.getFullYear());
			buildCalendar();
		}
		headerEditYear.onblur = headerEditYear.onchange;
		newCell.appendChild(headerEditYear);
		for(var i = today.getFullYear() ; i < today.getFullYear() + 3; i++){
			valueEditYear = document.createElement('option');
			valueEditYear.value = i;
			valueEditYear.innerHTML = i;
			headerEditYear.appendChild(valueEditYear);
		}
		
		newCell = insertCell(newRow,true);
		hLink = document.createElement('a');
		hLink.href = '';
		hLink.onclick = function(){
			selectedMonth.addMonths(+1);
			buildCalendar();
			return false;
		}
		newCell.appendChild(hLink);
		hPicture = document.createElement('img');
		hPicture.src = '/img/i-arrow-next.gif';
		hPicture.alt = 'Следующий месяц';
		hPicture.width = 12;
		hLink.appendChild(hPicture);
		
		newRow = insertRow(newMonth);
		for(var i = 1; i < 8; i++){
			newCell = insertCell(newRow);
			newCell.innerHTML = Date.SHORTDAYNAMES[i == 7 ? 0 : i];
			newCell.className = i > 5 ? 'hld' : '';
		}
		
		
		newRow = insertRow(newMonth);
		for(i = 1, j = 0; i < month.lastday() + 1; i++, j++){
			
			thisDay = new Date(month.getFullYear(),month.getMonth(),i);
			
			if(i == 1){
				colSpan = thisDay.getDay();
				colSpan = colSpan == 0 ? 6 : colSpan - 1;
				j += colSpan + 1;
				if(colSpan > 0){
					newCell = insertCell(newRow);
					if(colSpan > 1) newCell.colSpan = colSpan;
				}
			}
			
			monthStr = month.getMonth() + 1;
			monthStr = monthStr.toString();
			monthStr = monthStr.length == 1 ? '0' + monthStr : monthStr ;
			d = i.toString();
			dayStr = d.length == 1 ? '0' + d : d ;
			dateStr = month.getFullYear() + '-' + monthStr + '-' + dayStr;
			
			newCell = insertCell(newRow);
			if(today.getDaysBetween(thisDay) == 0) newCell.className = 'today';
			if(selectedMonth.getTime() == thisDay.getTime()) newCell.className = 'selected';
			if(thisDay < today) newCell.innerHTML = dayStr;
			
			if(thisDay >= today){
				newDayLink = document.createElement('a');
				newDayLink.href = '/calendar/' + dateStr + '/';
				newDayLink.innerHTML = dayStr;
				newCell.appendChild(newDayLink);
			}
			
			if(j % 7 == 0) newRow = insertRow(newMonth);
		}
	}
	var today = new Date();
	if(siteStruct[0] == 'calendar' && siteStruct[1]) dateURL = siteStruct[1].split('-');
	var selectedMonth = typeof dateURL != 'undefined' ? new Date(dateURL[0],dateURL[1]-1,dateURL[2]) : new Date();
	addEvent(window,'load',buildCalendar);
	
	
	function resizeColumns(){
		var _nav = $('nav');
		var _content = $('whiteBox');
		var _sidebar = $('sidebar');
		if(!_nav || !_content || !_sidebar) return;
		var height = Math.max(_content.offsetHeight,Math.max(_nav.offsetHeight,_sidebar.offsetHeight));
		_nav.style.height = (height + 75) + 'px';
		_content.style.height = height + 'px';
	}
	addEvent(window,'load',resizeColumns);
	
	function makeMasks(){
		var _nav = $('leftMask');
		var _sidebar = $('sidebar');
		if(!_nav || !_sidebar) return;
		_nav.className = 'leftMask';
		_sidebar.className = 'rightMask';
	}
	addEvent(window,'load',makeMasks);
	
	var arrayCatalogMenu = new Array();
	var speed = 10;
	var timer = 10;
	
	function initCatalogMenu(){
		var _box = $('catalog');
		if(!_box) return;
		
		items = _box.childNodes;
		
		for(var i = 0; i < items.length; i++){
			if(items[i].tagName != 'LI') continue;
      arrayCatalogMenu.push(i);
			
			anchors = items[i].getElementsByTagName('a');
			anchors[0].id = i + '-header';
			anchors[0].onclick = function(){
				processClick(this);
				return false;
			}
			
			list = items[i].getElementsByTagName('ul');
			list[0].id = i + '-content';
			list[0].maxh = list[0].offsetHeight;
      list[0].style.display = items[i].className == 'selected' ? 'block' : 'none';
		}
	}
	
	function processClick(div) {
		var catlength = arrayCatalogMenu.length;
		for(i = 0; i < catlength; i++) {
			var section = arrayCatalogMenu[i];
			var head = $(section + '-header');
			var cont = section + '-content';
			var contdiv = $(cont);
			clearInterval(contdiv.timer);
			if(head == div && contdiv.style.display == 'none') {
				head.parentNode.className = 'selected';
				contdiv.style.height = '0px';
				contdiv.style.display = 'block';
				initSlide(cont,1);
			} else if(contdiv.style.display == 'block') {
				head.parentNode.className = '';
				initSlide(cont,-1);
			}
		}
	}
	
	function initSlide(id,dir) {
		var cont = $(id);
		var maxh = cont.maxh;
		cont.direction = dir;
		cont.timer = setInterval("slide('" + id + "')", timer);
	}
	
	function slide(id) {
		var cont = $(id);
		var maxh = cont.maxh;	
		var currheight = cont.offsetHeight;
		var dist;
		if(cont.direction == 1) {
			dist = (Math.round((maxh - currheight) / speed));
		} else {
			dist = (Math.round(currheight / speed));
		}
		if(dist <= 1) {
			dist = 1;
		}
		cont.style.height = currheight + (dist * cont.direction) + 'px';
		cont.style.opacity = currheight / cont.maxh;
		cont.style.filter = 'alpha(opacity=' + (currheight * 100 / cont.maxh) + ')';
		if(currheight < 2 && cont.direction != 1) {
			cont.style.display = 'none';
			clearInterval(cont.timer);
		} else if(currheight > (maxh - 2) && cont.direction == 1) {
			clearInterval(cont.timer);
		}
	}
	addEvent(window,'load',initCatalogMenu);