function toggleHomeCurProgramContactForm(el) {
	if (ie6) {
		return true;
	}

	var parent = getParentNode(el, 2);

	if (hasClass('popup', parent)) {
		removeClass('popup', parent);
		removeClass('inactive', el);
	}
	else {
		addClass('popup', parent);
		document.getElementById('home-cur-programs-textarea').focus();
		addClass('inactive', el);
	}

	return false;
}

function toggleHomeCongratForm(el) {
	var parent = getParentNode(el, 3);

	if (hasClass('popup', parent)) {
		removeClass('popup', parent);
		removeClass('inactive', el);
	}
	else {
		addClass('popup', parent);
		document.getElementById('home-congrat-textarea').focus();
		addClass('inactive', el);
	}

	return false;
}

function getParentNode(el) {
	var parent = el;

	var level = typeof arguments[1] == 'undefined'
		  ? 1
		  : arguments[1];

	for (var i = 0; i < level; i++) {
		parent = parent.parentNode;
	}

	return parent;
}

function sendHomeMessage(frm) {
	$(frm.parentNode.parentNode).removeClass('popup');

	return setFormTargetAndSend(frm, 'homeMessageFrame');
}

function sendHomeCongrat(frm) {
	var el = frm.getElementsByTagName('dl').item(0).getElementsByTagName('span').item(0).getElementsByTagName('a').item(0);
	removeClass('inactive', el);

	return setFormTargetAndSend(frm, 'homeCongratFrame');
}

function setFormTargetAndSend(frm, frameName) {
	createHiddenFrame(frameName);
	frm.target = frameName;
	frm.submit();

	return false;
}

function getBody() {
	return document.getElementsByTagName('body').item(0);
}

function createHiddenFrame(name) {
	var srcSpecified = typeof arguments[1] != 'undefined';
	var existing = document.getElementById(name);
	if (existing && ((srcSpecified && arguments[1] == existing.getAttribute('src')) || !srcSpecified)) {
		return;
	}
	var div = document.createElement('div');
	div.style.width  = 0;
	div.style.height = 0;
	div.style.overflow = 'hidden';
	div.style.position = 'absolute';
	div.style.left = 0;
	div.style.top  = 0;
	var src = srcSpecified
	        ? arguments[1]
	        : 'about:blank';
	div.innerHTML = '<iframe name="' + name + '" id="' + name + '" src="' + src + '"></iframe>';
	var body = getBody();
	body.insertBefore(div, body.firstChild);
}

function addClass(new_class, elem) {
	var class_str = elem.className;
	class_str = class_str.replace(/\s+/g, ' ');
	var class_str_new = '' + class_str + ' ' + new_class;
	elem.className = class_str_new;
}

function removeClass(subj_class, elem) {
	var class_str = elem.className;
	var classes_new_str;
	if (subj_class == elem.className)
		classes_new_str = '';
	else {
		class_str = class_str.replace(/\s+/g, ' ');
		var classes = class_str.split(' ');
		var classes_count = classes.length;
		var classes_new = new Array();
		for (var i = 0; i < classes_count; i++) {
			if (classes[i] != subj_class) {
				classes_new[classes_new.length] = classes[i];
			}
		}
		classes_new_str = classes_new.join(' ');
	}
	elem.className = classes_new_str;
}

function getChildElements(elem) {
	var nodes = elem.childNodes;
	var count = nodes.length;
	var outNodes = new Array();
	for (var i = 0; i < count; i++) {
		if (nodes[i].nodeType == Node.ELEMENT_NODE)
			outNodes[outNodes.length] = nodes[i];
	}
	return outNodes;
}

function hasClass(className, obj) {
	if (typeof obj == 'undefined' || obj==null || !RegExp) {
		return false;
	}
	var re = new RegExp("(^|\\s)" + className + "(\\s|$)");
	if (typeof(obj)=="string") {
		return re.test(obj);
	}
	else if (typeof(obj)=="object" && obj.className) {
		return re.test(obj.className);
	}
	return false;
}

function getChildNodesByTagName(elem, tag_name) {
	var all_children = elem.childNodes;
	var direct_children = new Array();
	for (var i = all_children.length - 1; i >= 0; i--) {
		if (all_children[i].nodeName.toUpperCase() == tag_name.toUpperCase()) {
			direct_children[direct_children.length] = all_children[i];
		}
	}
	if (direct_children.length) {
		direct_children.reverse();
		result = direct_children;
	} else {
		result = null;
	}
	return result;
}

function homeCurProgramsLoad(num) {
	var frameName = 'homeCurProgramsFrame';
	var src = '/home-cur-programs.mhtml?Current=' + num;
	createHiddenFrame(frameName, src);
	return false;
}

function getElementsByClassName(strClass, strTag, objContElm) {
	var arr = new Array();
	objContElm = objContElm || document;
	strTag = strTag || "*";
	if (document.getElementsByClassName) {
		arr = objContElm.getElementsByClassName(strClass);
		if (strTag != '*') {
			if (Array.filter) {
				Array.filter(arr, function(elem) {
					return elem.nodeName == strTag;
				});
			}
			else {
				//
				var count = arr.length;
				var filtered = new Array();
				for (var i = 0; i < count; i++) {
					if (arr[i].nodeName.toLowerCase() == strTag.toLowerCase()) {
						filtered[filtered.length] = arr[i];
					}
				}
				arr = filtered;
			}
		}
	} else {
		var objColl = objContElm.getElementsByTagName(strTag);
		if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
		var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
		var arrClass = strClass.split(delim);
		for (var i = 0, j = objColl.length; i < j; i++) {
			var arrObjClass = objColl[i].className.split(' ');
			if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
			var c = 0;
			comparisonLoop:
			for (var k = 0, l = arrObjClass.length; k < l; k++) {
				for (var m = 0, n = arrClass.length; m < n; m++) {
					if (arrClass[m] == arrObjClass[k]) c++;
					if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
						arr.push(objColl[i]);
						break comparisonLoop;
					}
				}
			}
		}
	}
	return arr;
}

function addLastClassToMenu() {
	var div1 = getChildNodesByTagName(document.getElementById('mnu-b'), 'div');
	var div2 = getChildNodesByTagName(div1[0], 'div');
	var ul   = getChildNodesByTagName(div2[0], 'ul');
	var last = getChildNodesByTagName(ul[0], 'li');
	var div3 = getChildNodesByTagName(last[last.length - 1], 'div');
	addClass('last', div3[0]);
}

function homeVideoMinimize() {
	var min = document.getElementById('home-video-minimized');
	var max = document.getElementById('home-video-maximized');
	removeClass('hidden', min);
	addClass('hidden', max);
	var player = getElementsByClassName('player', 'td', max);
	player = player[0];
	var html = player.innerHTML;

	if (html != '') {
		min.firstChild.nodeValue = player.innerHTML;
		player.innerHTML = '';
	}

	return false;
}

function homeVideoMaximize() {
	var min = document.getElementById('home-video-minimized');
	var max = document.getElementById('home-video-maximized');
	addClass('hidden', min);
	removeClass('hidden', max);

	var player = getElementsByClassName('player', 'td', max);
	player = player[0];
	player.innerHTML = min.firstChild.nodeValue;

	return false;
}

function stub() {
	alert('Пока не реализовано');
	return false;
}

function openBroadcastVideoInNewWindow(url) {
	var width = 300;
	var height = 290;
	var left = (screen.availWidth - width) / 2;
	var top = (screen.availHeight - height) / 2;

	var mypopup = window.open(url,'video','toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width='
	            + width + ',height=' + height +  ',left=' + left + ',top=' + top);

	homeVideoMinimize();
	return false;
}

function openVoteWindow(url) {
	var width = 300;
	var height = 30;
	var left = (screen.availWidth - width) / 2;
	var top = (screen.availHeight - height) / 2;

	var mypopup = window.open(url,'vote','toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width='
	            + width + ',height=' + height +  ',left=' + left + ',top=' + top);

	return false;
}

function hidePopupFormFromSubmit(el) {
	var parent = getParentNode(el, 7);
	removeClass('popup', parent);
	//var openLink = getElementsByClassName('write-message', 'dt', parent)[0].getElementsByTagName('a').item(0);
	//removeClass('inactive', openLink);
	/*
	var openLink = $('.contacts DL.write-message DT A').eq(0);
	openLink.removeClass('inactive');
	*/
	return false;
}

function openRadioWindow(url) {
	var width = 225;
	var height = 126;
	var left = (screen.availWidth - width) / 2;
	var top = (screen.availHeight - height) / 2;
	var mypopup = window.open(url,'radio','toolbar=no,scrollbars=no,directories=no,status=no,menubar=no,resizable=yes,width=' + width + ',height=' + height +  ',left=' + left + ',top=' + top);
	return false;
}

function switchRadioQuality(elem) {
	var url = elem.href;
	var div = document.getElementsByTagName('div').item(0);
	
	
	var parts = new Array();
	parts[parts.length] = '<object type="application/x-shockwave-flash" data="/_/swf/player.swf" width="205" height="20">';
	parts[parts.length] = '<param name="movie" value="/_/swf/player.swf" />';
	parts[parts.length] = '<param name="quality" value="best" />';
	parts[parts.length] = '<param name="wmode" value="transparent" />';
	parts[parts.length] = '<param name="flashvars" value="file=' + url + '&amp;duration=-1&amp;skin=/_/swf/player-simple.swf&amp;width=205&amp;height=20&amp;volume=50&amp;autostart=true" />';
	parts[parts.length] = '</object>';
	var code = parts.join('');
	
	div.innerHTML = code;
	var items = document.getElementsByTagName('ul').item(0).getElementsByTagName('li');
	for (var i = items.length - 1; i >= 0; i--) {
		removeClass('cur', items[i]);
	}
	addClass('cur', elem.parentNode);
	return false;
}

function calendarOnload() {
	var parent = window.parent;
	if (!parent.frames.length) {
		return;
	}
	var parentDoc = parent.document;
	var calendar  = parentDoc.getElementById('calendar');
	var tableOld  = calendar.getElementsByTagName('table').item(0);
	var body = getBody();
	if (lteIe7) {
		var tableDiv = parentDoc.createElement('div');
		tableDiv.innerHTML = body.innerHTML;
		calendar.insertBefore(tableDiv, tableOld);
		tableNew = tableDiv.getElementsByTagName('table').item(0);
	}
	else {
		var tableInFrame = document.getElementsByTagName('table').item(0);
		var tableNew = tableInFrame.cloneNode(true);
	}

	calendar.insertBefore(tableNew, tableOld);
	calendar.removeChild(tableOld);
	if (tableDiv) {
		calendar.removeChild(tableDiv);
	}
	document.close();
	removeCalendarFrame();
}

function removeCalendarFrame() {
	var parentDoc = window.parent.document;
	if (parentDoc) {
		var frame = parentDoc.getElementById('calendar-frame');
		if (frame) {
			frame.parentNode.removeChild(frame);
		}
	}
}

function getUrlTemplate(url) {
	var url_segments = url.split('?');
	var tpl = url_segments[0];
	return tpl;
}

function getUrlParam(url, pname) {
	var url_segments = url.split('?');
	if (!url_segments[1]) {
		return false;
	}
	var url_params = url_segments[1].split('&');
	var url_params_count = url_params.length;
	var result = false;
	for (var i = 0; i < url_params_count; i++) {
		if (url_params[i].split('=')[0] == pname) {
			result = url_params[i].split('=')[1];
			break;
		}
	}
	return result;
}

function switchCalendarMonth(url) {
	var frameName = 'calendar-frame';
	try {
		createHiddenFrame(frameName, url);
	}
	catch(e) {}

	return false;
}

function deselectCheckboxes(elemId) {
	var items = document.getElementById(elemId).getElementsByTagName('input');
	var count = items.length;

	for (var i = 0; i < count; i++) {
		items[i].checked = '';
	}

	return false;
}

function getParentByTagName(el, parentTagName) {
	var result;

	if (el.parentNode && el.parentNode.nodeName.toLowerCase() == parentTagName.toLowerCase()) {
		result = el.parentNode;
	}
	else {
		el = el.parentNode;
		result = getParentByTagName(el, parentTagName);
	}

	return result;
}

function openImageUploadForm(elem) {
	var url = elem.href;
	elem.id = 'imageUploadLinkElement';

	var width  = 300;
	var height = 120;

	var left = (screen.availWidth - width) / 2;
	var top = (screen.availHeight - height) / 2;

	var mypopup = window.open(url, 'imageUpload', 'toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width=' + width + ',height=' + height +  ',left=' + left + ',top=' + top);

	return false;
}

function setUploadedImageAndCloseForm(path, formId) {
	var openerDoc = window.opener.document;

	var frm = openerDoc.getElementById(formId);
	var field = frm.elements['photo'];
	field.value = path;

	var linkElem = openerDoc.getElementById('imageUploadLinkElement');
	var linkTxtNode = linkElem.firstChild;
	linkTxtNode.nodeValue = 'Загрузить другое';

	var dt = linkElem.parentNode;
	var dtFirstChild = dt.firstChild;

	if (dtFirstChild.nodeName == 'A') {
		var strong = openerDoc.createElement('strong');
		var preTxt = openerDoc.createTextNode('Изображение загружено | ');
		strong.appendChild(preTxt);
		dt.insertBefore(strong, dtFirstChild);
	}

	window.close();
}

function getRandomInt(min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

function setIe6DropdownMenuHandlers() {
	var ul = document.getElementById('mnu-b').getElementsByTagName('div').item(0).getElementsByTagName('div').item(0).getElementsByTagName('ul').item(0);
	var items = getChildNodesByTagName(ul, 'li');
	var count = items.length;
	var item;
	for (var i = 0; i < count; i++) {
		item = items[i];
		if (item.getElementsByTagName('ul').length) {
			item.onmouseover = function() {
				addClass('hover', this);
			};
			item.onmouseout = function() {
				removeClass('hover', this);
			};
		}
	}
}

var site = {};

site.openUploadForm = function(elem, part, pubid) {
	var form   = getParentByTagName(elem, 'form');
	var formId = form.id;

	if (!formId) {
		form.id = getRandomInt(0, 999999);
		formId = form.id;
	}

	var url = '/upload.mhtml?Part=' + part + '&PubID=' + pubid + '&name=' + elem.rel + '&form=' + formId;

	var width  = 300;
	var height = 120;

	var left = (screen.availWidth  - width)  / 2;
	var top  = (screen.availHeight - height) / 2;

	var wnd = window.open(url, 'upload', 'toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width='
	        + width + ',height=' + height +  ',left=' + left + ',top=' + top);

	return false;
};

site.setUploadedFileAndCloseForm = function(path, formId, name) {
	var openerDoc = window.opener.document;

	var frm = openerDoc.getElementById(formId);
	var field = frm.elements[name];
	field.value = path;

	var linkElem = $('A[rel="' + name + '"]', openerDoc).get(0);
	var linkTxtNode = linkElem.firstChild;
	linkTxtNode.nodeValue = 'загрузить другой';

	var dd = linkElem.parentNode;
	var ddFirstChild = dd.firstChild;

	if (ddFirstChild.nodeName == 'A') {
		var strong = openerDoc.createElement('strong');
		var preTxt = openerDoc.createTextNode('Файл загружен | ');
		strong.appendChild(preTxt);
		dd.insertBefore(strong, ddFirstChild);
	}

	window.close();
};

site.setDropdownMenuHandlers = function() {
	var links = $('#mnu .dropdown-a > UL > LI > A');

	links.click(function() {
		var li = $(this.parentNode);
		var childUlCount = $('UL', li).length;

		if (childUlCount) {
			if (!li.hasClass('hover')) {
				var ul = li.parents('ul').eq(0);
				ul.children('LI').removeClass('hover');
			}

			li.toggleClass('hover');

			return false;
		}
	});
};

function getAltHtmlOfObjectForIe7(obj) {
	var objInnerHtml = obj.innerHTML;
	var begStr = '<div>';
	var endStr = '</div>';
	var begPos = objInnerHtml.indexOf(begStr);
	var endPos = objInnerHtml.indexOf(endStr);

	var altHtml = (begPos != -1 && endPos != -1)
	            ? objInnerHtml.substr(begPos, endPos - begPos + endStr.length)
	            : false;

	return altHtml;
}

function checkFlashPlayerVersion() {
	if (swfobject && !swfobject.hasFlashPlayerVersion('9.0.115')) {
		var items = getElementsByClassName('flashvideo', 'div');
		var count = items.length;
		var item;

		for (var i = 0; i < count; i++) {
			item = items[i];

			var obj = item.getElementsByTagName('object').item(0);

			if (ie7) {
				var altHtml = getAltHtmlOfObjectForIe7(obj);
				item.innerHTML= altHtml;
			}
			else {
				var alt = obj.getElementsByTagName('div').item(0);
				item.insertBefore(alt, obj);
				item.removeChild(obj);
			}
		}
	}
}

function checkMaxLength(textarea) {
	var maxLength = 300;
	if (textarea.value.length > maxLength) {
		textarea.value = textarea.value.substring(0, maxLength);
	}
}

function nodeListToArray(nodeList) {
	var count = nodeList.length;
	var array = new Array();

	for (var i = count - 1; i >= 0; i--) {
		array[array.length] = nodeList[i];
	}

	return array;
}

function getFormElementsOf(container) {
	var c = container;
	var inputs    = nodeListToArray(c.getElementsByTagName('input'));
	var selects   = nodeListToArray(c.getElementsByTagName('select'));
	var textareas = nodeListToArray(c.getElementsByTagName('textarea'));

	var elems = new Array();
	elems = elems.concat(inputs, selects, textareas);

	return elems;
}

function disableFormElements(elems) {
	for (var i = elems.length - 1; i >= 0; i--) {
		elems[i].disabled = 'disabled';
	}
}

function enableFormElements(elems) {
	for (var i = elems.length - 1; i >= 0; i--) {
		elems[i].disabled = '';
		elems[i].removeAttribute('disabled');
	}
}

function hideFormArea(area) {
	if (typeof area == 'string') {
		area = document.getElementById(area);
	}

	var elems = getFormElementsOf(area);

	disableFormElements(elems);	
	area.style.display = 'none';
}

function showFormArea(area) {
	if (typeof area == 'string') {
		area = document.getElementById(area);
	}

	var elems = getFormElementsOf(area);

	enableFormElements(elems);	
	area.style.display = 'block';
}

$(document).ready(function() {
	site.setDropdownMenuHandlers();
});