﻿(function (window, $) {
	$(function () {
		var jWindow = $(window), actItems = [], 
			isOldIe = $.browser.msie && $.browser.version.substr(0,1) < 8,
			jSearch = $('section.s_search'),
			jEvents = jSearch.find('div.item_event_schedule'),
			onScroll = (function () {
				var scrollTop = false;
				return function () {
					var itemsLength = actItems.length, jEvent, jEventHead, 
						curScroll = jWindow.scrollTop(), eventOffset,
						winHeight = window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : body.offsetHeight);
					if (!itemsLength) {
						return;
					}
					for (var itemNo = 0; itemNo < itemsLength; itemNo++) {
						jEvent = actItems[itemNo].jEvent;
						jEventHead = actItems[itemNo].jEventHead;
						eventOffset = jEvent.offset();
						scrollItem.apply(null, [jEvent, jEventHead]);
					};
					scrollTop = curScroll;
				};
			})();
			scrollItem = function (jEvent, jEventHead) {
				var scrollTop = jWindow.scrollTop(), sectionTop,
					sectionBottom, eventOffset, 
					isFixed = jEventHead.css('position') == 'fixed',
					sectionHeight, eventHeight;
				sectionHeight = jEventHead.outerHeight();
				eventHeight = jEvent.outerHeight();
				eventOffset = jEvent.offset();
				sectionTop = scrollTop - eventOffset['top'];
				sectionBottom = (eventOffset['top'] + eventHeight - sectionHeight);
				if ((sectionTop >= 0 && scrollTop < sectionBottom)) {
					//if (!isOldIe) {
						if (!isFixed) {
							$('<div />').addClass('sh_tmp').height(sectionHeight).insertAfter(jEventHead);
							jEventHead.css({'position': 'fixed', 'top': '0px', 'width': jEventHead.width()});
						}
					//} else {
					//	jEventHead.css('top', sectionTop);
					//}
				} else {
					jEventHead.css({'position': 'relative', 'width': 'auto', 'top': sectionTop < 0 ? 0 : eventHeight - jEventHead.outerHeight()});
					jEvent.find('div.sh_tmp').remove();
					if (isOldIe) {
						jEventHead.css({'zoom': '1'});
					}
				}
			};
		jWindow.bind('scroll.Shedule', function () {
			onScroll();
		});
		jEvents.each(function (itemNo) {
			var jEvent = $(this), jSheduleBut = jEvent.find('div.js-schedule-but_on a'), itemId = false,
				jShedule = jEvent.find('div.js-schedule-block'), jEventHead = jEvent.find('div.js-shadow-block'), eventOffset,
				jShadow = jEvent.find('div.event_schedule_shadow');
			jSheduleBut.bind('click.Shedule', function (e) {
				var isOff = jSheduleBut.hasClass('a_schedule_skr');
				e.preventDefault();
				if (!isOff) {
					jShadow.show();
					jShedule.slideDown(function () {
						jSheduleBut.toggleClass('a_schedule_str a_schedule_skr');
						if (itemId === false) {
							itemId = actItems.push({jEvent: jEvent, jEventHead: jEventHead}) - 1;
						}
					});
					if (isOldIe) {
						jSearch.css({'zoom': '1'});
					}
				} else {
					jShedule.slideUp(function () {
						jShadow.hide();
						jEventHead.css({'position': 'relative', 'top': 0});
						jEvent.find('div.sh_tmp').remove();
						if (isOldIe) {
							jSearch.css({'zoom': '1'});
						}
						jSheduleBut.toggleClass('a_schedule_str a_schedule_skr');
						if (itemId !== false) {
							actItems.splice(itemId, 1);
							itemId = false;
						}
						eventOffset = jEvent.offset();
						if (eventOffset['top'] < jWindow.scrollTop()) {
							jWindow.scrollTop(eventOffset['top']);
						}
					});
				}
			})
		});
	});
})(window, jQuery);
