/* Создает объект XMLHttpRequest в переменной window.request
 * Возвращает булево значение
 */
function create_request() {
	var request = false;

	if (typeof(window.XMLHttpRequest) != 'undefined')
		request = new XMLHttpRequest();
	else if (typeof(window.ActiveXObject) != 'undefined') {
		try { 
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}

	window.request = request;
	
	return (request)?true:false;
}


/* Удаляет пробельные символы слева и справа */
function trim(str) {
	return String(str).replace(/^\s+/, '').replace(/\s+$/, '');
}


/* Сокращение document.getElementById */
function $(id) {
	return document.getElementById(id);
}


/* Создает текстовый нод с содержанием content */
function create_txt(parent, content) {
	var txt = document.createTextNode(content);
	parent.appendChild(txt);

	return txt;
}


/* Создает элемент name с атрибутами atts
 * Если parent != null добавляет к нему элемент
 */
function create_element(parent, name, atts) {
	var el = document.createElement(name);
	for (var aname in atts)
		el.setAttribute(aname, atts[aname]);
	
	if (parent != null)
		parent.appendChild(el);

	return el;
}

/* Добавляет листенер func к элементу node по событию type (без приставки «on») */
function add_event(node, type, func) {
	if (typeof(node.addEventListener) == 'function')
		node.addEventListener(type, func, false);
	else if (typeof(node.attachEvent) == 'object')
		node.attachEvent('on'+type, func);
	else
		return false;
	return true;
}

/* Возвращает смещение указанной стороны элемента от соответствующей границы */
function get_offset(node, side) {
	var offset = node['offset'+side];
	for (var p = node.offsetParent; p; p = p.offsetParent)
		offset += p['offset'+side];
	return offset;
}

/* Возвращает смещение относительно левой границы окна */
function get_left_offset(node) {
	return get_offset(node, 'Left');
}

/* Возвращает смещение относительно верхней границы окна */
function get_top_offset(node) {
	return get_offset(node, 'Top');
}


/* Баннер */
window.banner = {
	'action': 'wait',
	'opacity': 1,
	'opprop': '',
	'position': 0,

	'update': function() {
		var b = $('banner1');
		if (!b) {
			setTimeout(window.banner.update, 100);
			return;
		}

		if (window.banner.opprop == '') {
			if (typeof(b.style.opacity) != 'undefined')
				window.banner.opprop = 'css3';
			else if (typeof(b.style.filter) != 'undefined')
				window.banner.opprop = 'ie';
			else
				window.banner.opprop = 'no';
		}

		switch (window.banner.action) {
			case 'wait':
				if (window.banner.opprop == 'no')
					window.banner.change_content();
				else
					window.banner.action = 'change_down';
				setTimeout(window.banner.update, 2000);
			break;
			case 'change_down':
				window.banner.opacity -= 0.05;
				window.banner.set_opacity();
				if (window.banner.opacity <= 0.1) {
					window.banner.action = 'change_up';
					window.banner.change_content();
				}
				setTimeout(window.banner.update, 50);
			break;
			case 'change_up':
				window.banner.opacity += 0.05;
				window.banner.set_opacity();
				if (window.banner.opacity >= 1) {
					window.banner.action = 'wait';
				}
				setTimeout(window.banner.update, 50);
			break;
		}
	},

	'set_opacity': function() {
		if (window.banner.opprop == 'css3')
			$('banner1').style.opacity = window.banner.opacity;
		else if (window.banner.opprop == 'ie')
			$('banner1').style.filter = 'alpha(opacity='+(window.banner.opacity*100)+')';
	},

	'change_content': function() {
		var b = $('banner1');
		
		window.banner.position += 127;
		
		b.style.backgroundPosition = '0px '+window.banner.position+'px';
	},

	'start': function() {
		setTimeout(window.banner.update, 100);
	}
}

function bgslider(id, pause, offset) {
	if (typeof pause != 'undefined' && pause > 0) {
		setTimeout(function(){bgslider(id, 0, 0)}, pause);
		return;
	}

	if (typeof offset == 'undefined') {
		var res = String($(id).style.backgroundPosition).match(/\d+(?:px|pt)?\s+(\d+)(?:px)?/);
		offset = (res == null) ? 1 : parseInt(res[1])+1;
	}
	else
		offset += 1;

	$(id).style.backgroundPosition = '0 '+offset+'px';
	
	if (offset % 76)
		setTimeout(function(){ bgslider(id, 0, offset)}, 10);
}

function topmenu_slider() {
	var item = Math.round(Math.random()*4.9+0.59);
	bgslider('top-menu-item-'+item);
	setTimeout(topmenu_slider, 2000);
}

function start_site() {
	window.banner.start();
	
	topmenu_slider();
}