/*****************************   anDeRan   ************************************/

var is_ie  = !!document.uniqueID;
var is_ie6 = is_ie && navigator.appVersion.match(/MSIE [56]/) && !navigator.appVersion.match(/MSIE [789]/);

var lang = document.getElementsByTagName('HTML')[0].lang;

if (is_ie6) {
	try {
		document.execCommand("BackgroundImageCache", false, true);
	} catch(err) {}
}

if (is_ie) {
	var XMLHttpRequest = function () {
		return (new ActiveXObject("Msxml2.XMLHTTP")) || (new ActiveXObject("Microsoft.XMLHTTP")) || false;
	};
}

var request = function () {
	try {
		var link = new XMLHttpRequest();
	} catch (e) {
		alert('Your browser doesn\'t support XMLHttpRequest. Please enable XMLHTTPRequest if disabled or update, if your browser is old.');
	}

	window.no_progress = false;

	document.onmousemove = function (e) {
		e = e || event;

		if (loading && !no_progress) {
			loading.style.display = 'block';
			loading.style.top = (e.clientY + (document.documentElement.scrollTop || window.scrollY || document.body.scrollTop) - 18) + 'px';
			loading.style.left = (e.clientX + (document.documentElement.scrollLeft || window.scrollX || document.body.scrollLeft) - 22) + 'px';
		}
	};

	this.get = function (path, analyze, params, no_loading) {
		if (no_loading) {
			loading.style.display = 'none';
			no_progress = no_loading;
		}
		link.onreadystatechange = function () {
			if (link.readyState == 4 && link.status == 200) {
				if (loading) {
					loading.style.display = 'none';
				}
				document.onmousemove = null;
				if (analyze) {
					analyze(link, params);
				}
				no_progress = no_loading;
			}
		};
		link.open('GET', path, true);

		if (is_ie6) {
			link.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
		}
		link.send('');
	};

	this.post = function (path, analyze, form, no_loading) {
		if (no_loading) {
			loading.style.display = 'none';
		}
		link.onreadystatechange = function () {
			if (link.readyState == 4 && link.status == 200) {
				loading.style.display = 'none';
				document.onmousemove = null;
				if (analyze) {
					analyze(link);
				}
			}
		};
		link.open("POST", path, true);
		link.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		if (is_ie6) {
			link.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
		}

		var i, j, send = '';
		for (i = 0; i < form.elements.length; i++) {
			if (form.elements[i].name) {
				if (form.elements[i].nodeName == "SELECT" && form.elements[i].name.indexOf("[]")) {
					for (j = 0; j < form.elements[i].options.length; j++) {
						if (form.elements[i].options[j].selected) {
							send += '&' + form.elements[i].name + '=' + form.elements[i].options[j].value;
						}
					}
				} else {
					if ((form.elements[i].type == "radio" || form.elements[i].type == "checkbox") && form.elements[i].checked || form.elements[i].type != "radio" && form.elements[i].type != "checkbox") {
						send += '&' + form.elements[i].name + '=' + form.elements[i].value.replace(/\+/g, '%2B');
					}
				}
			}
		}
		link.send(send.substring(1));
	};
};

var setOpacity = function (obj, num) {
	if (obj.style.filter != undefined) {
		obj.style.filter = 'alpha(opacity=' + (num * 100) + ')';
	} else {
		obj.style.opacity = num;
	}
};

var preloadImgs = function () {
	var i = arguments.length;
	while (i-- > 0) {
		(new Image()).src = '/images/' + arguments[i];
	}
};

var addChild = function (parent, name, cName) {
	var child = document.createElement(name);
	if (cName) {
		child.className = cName;
	}
	parent.appendChild(child);
	return child;
};

var initDefaults = function () {
	var inputs = document.getElementsByTagName('INPUT');
	var i = inputs.length;
	while (i-- > 0) {
		if (inputs[i].type == 'text') {
			if (inputs[i].className.indexOf('def-value') != -1) {
				inputs[i].onfocus = function () {
					if (this.value == this.defaultValue) {
						this.value = '';
					}
				};
				inputs[i].onblur = function () {
					if (!this.value) {
						this.value = this.defaultValue;
					}
				};
			} else if (inputs[i].name == 'captcha') {
				inputs[i].setAttribute('autocomplete', 'off');
			}
		}
	}
};

var initMarquee = function () {
	var marquee = document.getElementById('marquee');
	if (marquee) {
		if (navigator.appVersion.match(/KHTML/)) {
			// load on processor
			var line = marquee.firstChild;
			line.style.position = 'absolute';
			var currLeft    = parseInt(line.style.marginLeft, 10) || 0;
			var parentWidth = line.parentNode.clientWidth;
			var lineWidth   = line.clientWidth - parentWidth;
			window.m_interval = setInterval(function () {
				currLeft -= 2;
				line.style.marginLeft = currLeft + 'px';
				if (Math.abs(currLeft) > lineWidth) {
					line.innerHTML += '<span>' + line.firstChild.innerHTML + '</span>';
					if (line.childNodes.length > 2) {
						line.style.marginLeft = (currLeft + line.firstChild.scrollWidth) + 'px';
						line.firstChild.style.display = 'none';
						line.removeChild(line.firstChild);
					}
					lineWidth = line.clientWidth - parentWidth;
				}
			}, 30);
			if (!line.parentNode.onmouseover) {
				line.parentNode.onmouseover = function () {
					clearInterval(m_interval);
				};
				line.parentNode.onmouseout = function () {
					initMarquee();
				};
			}
		} else {
			var new_marquee = document.createElement('MARQUEE');
			new_marquee.id = 'marquee';
			new_marquee.setAttribute('scrollAmount', 2);
			new_marquee.setAttribute('scrollDelay', 20);
			new_marquee.setAttribute('behavior', 'scroll');
			new_marquee.setAttribute('loop', -1);
			new_marquee.trueSpeed = true;
			new_marquee.innerHTML = marquee.innerHTML;
			marquee.parentNode.replaceChild(new_marquee, marquee);
			new_marquee.init();

			new_marquee.onmouseover = function () {
				new_marquee.setAttribute('scrollDelay', 99999);
			};
			new_marquee.onmouseout = function () {
				new_marquee.setAttribute('scrollDelay', 20);
			};
		}
	}
};

var showNav = function () {
	var list = this;
	list.style.overflow = 'visible';
	list.style.width = list.clientWidth + 'px';
	var link = list.getElementsByTagName('A')[0];
	link.className = 'active';
	if (window.opera) {
		link.className += ' lined';
	}
	var spans = link.getElementsByTagName('SPAN')[0];
	if (!spans) {
		addChild(link, 'SPAN', 'border-left');
		addChild(link, 'SPAN', 'border-right');
	}
	var ul = list.getElementsByTagName('UL')[0];
	var sub = list.getElementsByTagName('DIV')[0];
	if (!sub) {
		sub = addChild(list, 'DIV', 'sub');
		sub.appendChild(ul);

		var border = addChild(list, 'SPAN', 'border-bottom');
		border.style.width = sub.clientWidth - 12 + 'px';
		border.style.top = sub.clientHeight + 35 + 'px';

		var span = addChild(list, 'SPAN', 'corn-left');
		span.style.top = sub.clientHeight + 35 + 'px';

		span = addChild(list, 'SPAN', 'corn-right');
		span.style.top = sub.clientHeight + 35 + 'px';
		span.style.left = sub.clientWidth - 6 + 'px';
	}
};

var hideNav = function () {
	var list = this;
	list.style.overflow = 'hidden';
	var link = list.getElementsByTagName('A')[0];
	link.className = '';
};

var initNav = function () {
	preloadImgs('common/nav_bg.png', 'common/nav_corner_left.png', 'common/nav_corner_right.png');
	var nav = document.getElementById('nav');
	var childs, i = nav.childNodes.length;
	while (i-- > 0) {
		if (nav.childNodes[i].nodeName == 'LI') {
			childs = nav.childNodes[i].getElementsByTagName('UL')[0];
			if (childs) {
				nav.childNodes[i].onmouseover = showNav;
				nav.childNodes[i].onmouseout = hideNav;
			}
		}
	}
};

var getResults = function (button) {
	var url = '', form = button.form;

	var i = form.elements.length;
	while (i-- > 0) {
		if (form.elements[i].type == 'checkbox') {
			if (form.elements[i].checked) {
				url += '&' + form.elements[i].name + '=on';
			}
		}
		if (form.elements[i].type == 'radio') {
			if (form.elements[i].checked) {
				url += '&' + form.elements[i].name + '=' + form.elements[i].value;
				break;
			}
		}
	}

	if (url) {
		button.disabled = true;
		(new request).get('/scripts/requests.php?action=get_results&pid=' + form.elements['poll_id'].value + url + '&lang=' + lang, function (req) {
			form.removeChild(form.getElementsByTagName('UL')[0]);
			form.removeChild(form.getElementsByTagName('P')[0]);
			var div = document.createElement('DIV');
			div.innerHTML = req.responseText;
			form.appendChild(div);
			form.parentNode.parentNode.style.height = 'auto'; // fix IE7 every request
		});
	}
	button.blur();
	return false;
};

var arr_int, tracked = null, drag = false;

var initHorScroll = function (div) {
	var arr_left = div.parentNode.getElementsByTagName('SPAN')[2].firstChild;
	var arr_right = div.parentNode.getElementsByTagName('SPAN')[2].lastChild;

	var divs = div.getElementsByTagName('DIV');
	var container = divs[0];
	var scroll_step = 30;
	var full_region = (divs.length - 1) * divs[1].clientWidth - div.clientWidth;

	arr_left.onmouseout = arr_left.onmouseup = arr_right.onmouseout = arr_right.onmouseup = function () {
		clearInterval(arr_int);
	};
	arr_left.onclick = arr_right.onclick = function () {
		return false;
	};

	arr_left.onmousedown = function () {
		var currPos = parseInt(container.style.left, 10) || 0;

		clearInterval(arr_int);
		arr_int = setInterval(function () {
			currPos += scroll_step;
			if (currPos > 0) {
				currPos = 0;
				clearInterval(arr_int);
			}

			container.style.left = currPos + 'px';
		}, 50);
		return false;
	};

	arr_right.onmousedown = function () {
		var currPos = parseInt(container.style.left, 10) || 0;

		clearInterval(arr_int);
		arr_int = setInterval(function () {
			currPos -= scroll_step;
			if (currPos < -full_region) {
				currPos = -full_region;
				clearInterval(arr_int);
			}

			container.style.left = currPos + 'px';
		}, 50);
		return false;
	};
};

var initVerScroll = function (div) {
	var container = div.getElementsByTagName('DIV')[0];
	var track = addChild(div, 'SPAN', 'track');
	track.onmouseover = function () {
		this.className += ' track-over';
	};
	track.onmouseout = function () {
		if (!drag) {
			this.className = this.className.replace(/ track-over/g, '');
		}
	};

	var parent_height = div.clientHeight;
	var actual_height = container.clientHeight - parent_height - 14;
	var scroll_region = parent_height - 24;

	track.onmousedown = function (e) {
		var scroll_step = actual_height / scroll_region;
		var e = e || event;
		var startY = e.clientY;
		var startTop = parseInt(track.style.top, 10) || 0;

		drag = true;
		var obj = e.srcElement || e.target;
		tracked = obj;
		tracked.className += ' track-over';

		if (is_ie) {
			document.onselectstart = function () { return false; };
		}
		document.body.unselectable = "on";
		document.onmousemove = function (e) {
			if (drag) {
				var e = e || event;
				var currPos = e.clientY - startY + startTop;

				if (currPos < 0) {
					currPos = 0;
				}

				if (currPos > scroll_region) {
					currPos = scroll_region;
				}
				container.style.top = -(Math.round(currPos * scroll_step)) + 'px';
				track.style.top = currPos + 'px';
			}
		};
		return false;
	};

	document.onmouseup  = function (e) {
		if (drag) {
			var e = e || event;
			var obj = e.srcElement || e.target;
			drag = false;
			document.onmousemove = null;
			if (tracked && obj != tracked) {
				tracked.className = tracked.className.replace(/ track-over/g, '');
			}
			if (is_ie) {
				document.onselectstart = null;
			}
			document.body.unselectable = "";
		}
	};
};

var initScrolls = function (parent) {
	if (!parent) {
		parent = document.getElementById('content');
	}
	var divs = parent.getElementsByTagName('DIV');
	var i = divs.length;
	while (i-- > 0) {
		if (divs[i].className.indexOf('hor-scroll') != -1) {
			initHorScroll(divs[i]);
		}
		if (divs[i].className.indexOf('ver-scroll') != -1) {
			initVerScroll(divs[i]);
		}
	}
};

var showComments = function (element) {
	if (element.className.indexOf('active') != -1) {
		return;
	}

	var comments = document.getElementById('comments');
	var form = comments.getElementsByTagName('FORM')[0];
	var msgs = comments.getElementsByTagName('DIV')[0];

	var elements = element.parentNode.getElementsByTagName('STRONG');
	var i = elements.length;
	while (i-- > 0) {
		elements[i].className = elements[i] == element ? 'active' : '';
	}

	var msgs_height = msgs.offsetHeight;
	var form_height = form.offsetHeight;

	if (form_height < msgs_height) {
		var step = Math.round((msgs_height - form_height) / 7);
		var height = form_height;
		var full   = msgs_height;

		form.style.height = height + 'px';

		var interval = setInterval(function () {
			height += step;
			if (height > full) {
				form.style.position = 'absolute';
				form.style.visibility = 'hidden';
				form.style.height = is_ie6 ? '100%' : 'auto';
				var opacity = 0, o_step = 0.1;
				msgs.style.position = 'static';
				msgs.style.visibility = 'visible';
				setOpacity(msgs, opacity);
				var interval2 = setInterval(function () {
					opacity += o_step;
					if (opacity > 1) {
						setOpacity(msgs, 1);
						clearInterval(interval2);
					} else {
						setOpacity(msgs, opacity);
					}
				}, 30);
				clearInterval(interval);
			} else {
				form.style.height = height + 'px';
			}
		}, 30);
	} else {
		var step = Math.round((form_height - msgs_height) / 7);
		var height = form_height;
		var full   = msgs_height;

		form.style.height = height + 'px';

		var interval = setInterval(function () {
			height -= step;
			if (height < full) {
				form.style.position = 'absolute';
				form.style.visibility = 'hidden';
				form.style.height = is_ie6 ? '100%' : 'auto';
				var opacity = 0, o_step = 0.1;
				msgs.style.position = 'static';
				msgs.style.visibility = 'visible';
				setOpacity(form, opacity);
				var interval2 = setInterval(function () {
					opacity += o_step;
					if (opacity > 1) {
						setOpacity(msgs, 1);
						clearInterval(interval2);
					} else {
						setOpacity(msgs, opacity);
					}
				}, 30);
				clearInterval(interval);
			} else {
				form.style.height = height + 'px';
			}
		}, 30);
	}
};

var showForm = function (element) {
	if (element.className.indexOf('active') != -1) {
		return;
	}
	document.getElementById('content').style.overflow = 'hidden';

	var comments = document.getElementById('comments');
	var form = comments.getElementsByTagName('FORM')[0];
	var msgs = comments.getElementsByTagName('DIV')[0];

	var elements = element.parentNode.getElementsByTagName('STRONG');
	var i = elements.length;
	while (i-- > 0) {
		elements[i].className = elements[i] == element ? 'active' : '';
	}

	var msgs_height = msgs.offsetHeight;
	var form_height = form.offsetHeight;

	if (form_height > msgs_height) {
		var step = Math.round((form_height - msgs_height) / 7);
		var height = msgs_height;
		var full   = form_height;

		msgs.style.height = height + 'px';

		var interval = setInterval(function () {
			height += step;
			if (height > full) {
				msgs.style.position = 'absolute';
				msgs.style.visibility = 'hidden';
				msgs.style.height = is_ie6 ? '100%' : 'auto';
				var opacity = 0, o_step = 0.1;
				form.style.position = 'static';
				form.style.visibility = 'visible';
				setOpacity(form, opacity);
				var interval2 = setInterval(function () {
					opacity += o_step;
					if (opacity > 1) {
						setOpacity(form, 1);
						clearInterval(interval2);
					} else {
						setOpacity(form, opacity);
					}
				}, 30);
				clearInterval(interval);
			} else {
				msgs.style.height = height + 'px';
			}
		}, 30);
	} else {
		var step = Math.round((msgs_height - form_height) / 7);
		var height = msgs_height;
		var full   = form_height;

		msgs.style.height = height + 'px';

		var interval = setInterval(function () {
			height -= step;
			if (height < full) {
				msgs.style.position = 'absolute';
				msgs.style.visibility = 'hidden';
				msgs.style.height = is_ie6 ? '100%' : 'auto';
				var opacity = 0, o_step = 0.1;
				form.style.position = 'static';
				form.style.visibility = 'visible';
				setOpacity(form, opacity);
				var interval2 = setInterval(function () {
					opacity += o_step;
					if (opacity > 1) {
						setOpacity(form, 1);
						clearInterval(interval2);
					} else {
						setOpacity(form, opacity);
					}
				}, 30);
				clearInterval(interval);
			} else {
				msgs.style.height = height + 'px';
			}
		}, 30);
	}
};

var cleanForm = function (button) {
	button.blur();
	var form = button.form;
	var i = form.elements.length;
	while (i-- > 0) {
		if (form.elements[i].nodeName.toUpperCase() == 'TEXTAREA' || form.elements[i].type == 'text') {
			if (form.elements[i].className.indexOf('error') != -1) {
				form.elements[i].className = form.elements[i].className.replace(/ error/g, '');
				form.elements[i].parentNode.firstChild.className = '';
			}
		}
	}
};

var checkForm = function (form) {
	var error, errors = false;
	var i = form.elements.length;
	while (i-- > 0) {
		if (form.elements[i].nodeName.toUpperCase() == 'TEXTAREA' || form.elements[i].type == 'text') {
			var title = form.elements[i].parentNode.firstChild;
			if (form.elements[i].className.indexOf('required') == -1) {
				continue;
			}

			error = false;
			if (form.elements[i].name.indexOf('email') != -1) {
				if (!form.elements[i].value.match(/^[\w\d\.]{2,}@[\w\d\.\-]{2,}\.[\w]{2,4}$/)) {
					if (form.elements[i].value && form.elements[i].className.indexOf('required-maybe') != -1) {
						error = true;
					}
				}
			} else {
				if (!form.elements[i].value) {
					error = true;
				}
			}

			if (error) {
				if (form.elements[i].className.indexOf('error') == -1) {
					form.elements[i].className += ' error';
					title.className += ' error';
				}
				errors = true;
			} else {
				form.elements[i].className = form.elements[i].className.replace(/ error/g, '');
				title.className = '';
			}
		}
	}
	return errors;
};

var sendForm = function (button) {
	button.blur();
	var errors = checkForm(button.form);

	if (!errors) {
		var page_id = document.location.href.replace(/.+\/(\d+)\D+$/, '$1');
		(new request).post('/scripts/requests.php?action=form&page_id=' + page_id + '&lang=' + lang, function (req) {
			if (req.responseText.indexOf('Err') === 0) {
				if (req.responseText.indexOf('wrong code') != -1) {
					button.form.elements['captcha'].className += ' error';
					button.form.elements['captcha'].parentNode.firstChild.className += ' error';
				}
			} else {
				var data = req.responseText.split('#!#');
				var comments = document.getElementById('comments');
				var strong = comments.getElementsByTagName('STRONG')[0];
				strong.innerHTML = strong.innerHTML.replace(/(\D+)(\d+)/, '$1' + data[0]);
				var msgs = comments.getElementsByTagName('DIV')[0];
				msgs.innerHTML = data[1];
				button.form.elements['message'].value = '';
				showComments(comments.getElementsByTagName('P')[0].firstChild);
			}
		}, button.form);
	}
	return false;
};

var sendQuestion = function (button) {
	button.blur();
	var errors = checkForm(button.form);

	if (!errors) {
		(new request).post('/scripts/requests.php?action=ask&lang=' + lang, function (req) {
			if (req.responseText.indexOf('Err') === 0) {
				if (req.responseText.indexOf('wrong code') != -1) {
					button.form.elements['captcha'].className += ' error';
				}
			} else {
				var data = req.responseText.split('#!#');

				var form = button.form;
				form.style.height = is_ie6 ? '100%' : form.offsetHeight - 13 + 'px';

				var opacity = 0.95, step = 0.05;
				setOpacity(form, opacity);
				s_interval = setInterval(function () {
					opacity -= step;
					if (opacity < 0) {
						clearInterval(s_interval);
						form.style.position = 'absolute';
						form.style.visibility = 'hidden';

						var msgs = document.createElement('P');
						msgs.className = 'blue-note';
						msgs.innerHTML = data[0];
						form.parentNode.appendChild(msgs);

						s_timeout = setTimeout(function () {
							msgs.parentNode.removeChild(msgs);
							form.style.position = 'relative';
							form.style.visibility = 'visible';

							var opacity = 0, step = 0.05;
							setOpacity(form, opacity);
							s_interval = setInterval(function () {
								opacity += step;
								if (opacity > 1) {
									clearInterval(s_interval);
								} else {
									setOpacity(form, opacity);
								}
							}, 30);
						}, 3000);
					} else {
						setOpacity(form, opacity);
					}
				}, 30);

				var questions = document.getElementById('questions');
				questions.innerHTML = data[1];
				button.form.elements['message'].value = '';
			}
		}, button.form);
	}
	return false;
};

var initLoading = function () {
	window.loading = addChild(document.body, 'DIV');
	loading.id = 'ajax-loading';
	loading.style.display = 'none';
};

var initBalloon = function () {
	var balloon = document.getElementById('balloon');
	if (balloon) {
		var div = addChild(balloon, 'DIV');
		var strong = addChild(div, 'STRONG');
		balloon.style.visibility = 'visible';

		var addSpan = function () {
			var span, i = arguments.length;
			while (i-- > 0) {
				addChild(div, 'SPAN', 'b-' + arguments[i]);
			}
		};
		addSpan('tl', 'top', 'tr', 'right', 'br', 'bottom', 'bl', 'left');
		strong.appendChild(balloon.firstChild);
	}
};

var initHints = function (div) {

	if (div) {
		var imgs = div.getElementsByTagName('IMG');
	} else {
		window.hint = document.createElement('DIV');
		hint.id = 'hint';
		hint.style.visibility = 'hidden';
		document.body.insertBefore(hint, document.body.firstChild);

		var div = addChild(hint, 'DIV');
		addChild(div, 'SPAN', 'h-cnt');
		addChild(div, 'SPAN', 'h-top');
		addChild(div, 'SPAN', 'h-bot');

		var imgs = document.images;
	}

	var i = imgs.length;
	while (i-- > 0) {
		if (imgs[i].className.indexOf('balloon') != -1) {
			imgs[i].onmouseover = function () {
				if (!this.title) {
					return;
				}

				hint.style.visibility = 'hidden';
				hint.style.display = 'block';
				hint.firstChild.firstChild.innerHTML = this.title;
				hint.firstChild.style.height = hint.firstChild.firstChild.offsetHeight + 'px';
				this.title = '';

				this.onmousemove = function (e) {
					e = e || event;
					hint.style.visibility = 'visible';
					hint.style.top = e.clientY + (document.documentElement.scrollTop || window.scrollY || document.body.scrollTop) + 35 + 'px';
					hint.style.left = e.clientX + (document.documentElement.scrollLeft || window.scrollX || document.body.scrollLeft) + 10 + 'px';
				}
			};

			imgs[i].onmouseout = function () {
				this.title = hint.firstChild.firstChild.innerHTML;
				hint.style.display = 'none';
			};
		}
	}
};

var getBlock = function (link) {
	link.blur();
	var pages = link.href.replace(/.+#(\d+\-\d+)$/, '$1');
	(new request).get('/scripts/requests.php?action=block&link=' + pages + '&lang=' + lang, function (req) {
		pages = pages.split('-');
		var div = document.createElement('DIV');
		if (pages[0] == 8 || pages[0] == 10 || pages[0] == 40) {
			var parent = link.parentNode.parentNode.parentNode;
		} else if (pages[0] == 3 || pages[0] == 4 || pages[0] == 5) {
			var parent = link.parentNode.parentNode;
		}

		if (parent.className) {
			div.className = parent.className;
		}
		div.innerHTML = req.responseText;
		parent.parentNode.replaceChild(div, parent);
		initScrolls(div);
	});
	return false;
};

var fullBalloon = function (link) {
	var full = document.getElementById('balloon-full');
	var close = document.createElement('A');
	close.href = '#';
	close.id = 'balloon-close';
	close.onclick = function () { return hs.close(this); };
	full.insertBefore(close, full.firstChild);

	return hs.htmlExpand(link, { contentId: 'balloon-full', dimmingOpacity: 0.75 } )
};

var initQuests = function () {
	window.team_id = document.getElementById('team-id');
	if (team_id) {
		updateTime();
		team_id = parseInt(team_id.value, 10);
	} else {
		team_id = 0;
	}
	//window.quests_interval = null;

	window.quests_messages = document.getElementById('quests-messages');
	window.quests_confirms = document.getElementById('quests-confirms');
	if (quests_messages) {
		quests_messages.scrollTop = quests_messages.scrollHeight;
		window.quests_m_total = quests_messages.getElementsByTagName('P').length;
		if (quests_confirms) {
			quests_confirms.scrollTop = quests_confirms.scrollHeight;
			window.quests_c_total = quests_confirms.getElementsByTagName('P').length;
		}

		setInterval(loadMsgs, 2500);

		if (document.getElementById('quests-fields')) {
			if (document.addEventListener) {
				document.addEventListener('keydown', sendMsg, true);
			} else {
				document.attachEvent('onkeydown', sendMsg);
			}
		}
	}
};

var getHelp = function (button) {
	button.blur();
	if (confirm('Подсказка приводит к понижению баллов, Вы точно хотите получить подсказку?')) {
		(new request).get('/scripts/requests.php?action=get_help');
	}
};

var getQuestion = function (button) {
	button.blur();
	if (confirm('При пропуске вопроса Вам начисляется 0 баллов за вопрос.')) {
		(new request).get('/scripts/requests.php?action=get_question');
	}
};

var setAnswer = function (button, question_id, team_id, answer) {
	var imgs = button.parentNode.getElementsByTagName('IMG');
	var i = imgs.length;
	while (i-- > 0) {
		if (imgs[i].className.indexOf('btn-icon') != -1) {
			setOpacity(imgs[i], 0.3);
			imgs[i].onclick = null;
		}
	}

	(new request).get('/scripts/requests.php?action=answer&question_id=' + question_id + '&team_id=' + team_id + '&msg_id=' + button.parentNode.id.replace('msg-', '') + '&answer=' + answer);
};

var loadMsgs = function () {
	(new request).get('/scripts/requests.php?action=msgs', function (req) {
		if (req.responseText) {
			var i, lines = req.responseText.split('<<>>');
			for (i = 0; i < lines.length; i++) {
				var team, data = lines[i].split('<!>');
				data[0] = parseInt(data[0], 10);
				data[1] = parseInt(data[1], 10);
				switch (data[1]) {
				case 0:
				case 4:
				case 5:
					quests_m_total++;
					if (quests_m_total > 70) {
						quests_messages.removeChild(quests_messages.firstChild);
					}
					quests_messages.innerHTML += '<p id="msg-' + data[0] + '">' + data[2] + '</p>';
					quests_messages.scrollTop = quests_messages.scrollHeight;
					if (data[1] == 4) {
						var fields = document.getElementById('quests-fields');
						if (fields) {
							fields.style.display = 'none';
						}
					}
					break;
				case 1:
					quests_c_total++;
					if (quests_c_total > 30) {
						quests_confirms.removeChild(quests_confirms.firstChild);
					}
					quests_confirms.innerHTML += '<p id="msg-' + data[0] + '">' + data[2] + '</p>';
					quests_confirms.scrollTop = quests_confirms.scrollHeight;
					break;
				case 3:
					points = document.getElementById('points-' + data[2]);
					points.innerHTML = data[3];
					if (data[2] == team_id) {
						document.getElementById('team-points').innerHTML = data[3];
					}
					break;
				}
			}
		}
	}, null, 1);
};

var sendMsg = function (event) {
	var event = event || false;

	if (event == false || event != false && event.keyCode == '13') {
		var field = document.getElementById('message');
		if (field.value != '') {
			(new request).get('/scripts/requests.php?action=post&m=' + encodeURIComponent(field.value), function (req) {
				field.value = '';
			});
		}
		field.focus();
	}
};

var updateTime = function () {
	(new request).get('/scripts/requests.php?action=names', function (req) {
		var node = document.getElementById('quest-time');
		var hash = req.responseText;
		if (!isNaN(hash)) {
			node.parentNode.style.visibility = 'visible';
			var offset_def = (new Date()).getTimezoneOffset() * 60;
			quests_interval = setInterval(function () {
				var time          = Math.floor(new Date().getTime() / 1000) - offset_def;
				var remains       = time - parseInt(hash, 10);

				var days          = Math.floor(remains / 86400).toString();
				var days_stamp    = days * 86400;
				var hours         = Math.floor((remains - days_stamp) / 3600).toString();
				var hours_stamp   = hours * 3600;
				var minutes       = Math.floor((remains - (days_stamp + hours_stamp)) / 60).toString();
				var minutes_stamp = minutes * 60;
				node.innerHTML = hours + ':' + minutes;
			}, 1000);
		} else {
			node.innerHTML = hash;
		}
	});
};

var initGoogleMap = function () {
	var xmap = document.getElementById("xmap");
	if (xmap) {
		var myOptions = {
			center: new google.maps.LatLng(46.580334, 390.797065),
			zoom: 13,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		var map = new google.maps.Map(xmap, myOptions);

		var xcoords = document.getElementById("xcoords");
		var divs = xcoords.getElementsByTagName('DIV');
		var i = divs.length;

		var addMarker = function (marker, i) {
			var html = '<div class="cwindow"><img src="' + divs[i].childNodes[1].innerHTML + '" width="125" height="89" /><div class="wright"><span class="date">' + divs[i].childNodes[4].innerHTML + '</span><br /><span class="parent">' + divs[i].childNodes[2].innerHTML + '</span> /<br /><span class="child">' + divs[i].childNodes[3].innerHTML + '</span></div></div>';
			var infowindow = new google.maps.InfoWindow({
				content: html
			});
			google.maps.event.addListener(marker, 'click', function () {
				infowindow.open(marker.get('map'), marker);
			});
		};

		while (i--) {
			var params = divs[i].childNodes[0].innerHTML.split(",");
			var myLatlng = new google.maps.LatLng(params[0], params[1]);
			var myIcon = new google.maps.MarkerImage(divs[i].childNodes[1].innerHTML,  new google.maps.Size(125, 89), new google.maps.Point(0,0), new google.maps.Point(0,0),  new google.maps.Size(53, 38));
			var myShadow = new google.maps.MarkerImage('/images/common/map_shadow.png',  new google.maps.Size(68, 71), new google.maps.Point(0,0), new google.maps.Point(8,7));
			var marker = new google.maps.Marker({
				position: myLatlng,
				icon: myIcon,
				shadow: myShadow,
				map: map
			});

			addMarker(marker, i);
		}

		$(function() {
			$("#datepicker").datepicker({
				dateFormat: 'yy.mm.dd',
				onSelect: function(dateText, inst) {
					location.href = location.href.replace(/^(.+\/)([^\/]*)$/, '$1') + '?type=day&date=' + dateText;
				}
			});
			$("#date-link").click(function () {
				$(this).blur();
				$("#datepicker").datepicker("show");
				return false;
			});
		});
	}
};

window.onload = function () {
	initQuests();
	initLoading();
	initDefaults();
	initNav();
	initScrolls();
	initBalloon();
	initHints();
	initMarquee();
	initGoogleMap();
};


