$(document).ready(function() {

	/* Primary menu */
	$("#header ul.b-primary-menu li").children("a")
		.mouseover(function() {
			
			if($(this).next("ul").length) {
				
				$(this).parent()
					.addClass("hover")
					.mouseenter(function() {
						
						var item = $(this);
						
						$(".b-search-form").mouseover(function() { item.mouseleave(); })
					})
					.mouseleave(
						function() {
	
							$(this).removeClass("hover");
						}
					);
			}
		});
		
	/* Committee viewer */
	if($(".b-committee-viewer").length) {
		
		$(".b-committee-viewer .b-committee-previews .b-committee-article a").click(function() {
			
			if($(this).attr("rel")) {
				
				if(!$(this).parent().hasClass("b-committee-current-article")) {

					$(this).parent().parent().find(".b-committee-current-article").toggleClass("b-committee-current-article");
					$(this).parent().toggleClass("b-committee-current-article");
				}

				$(".b-committee-viewer .b-committee-detailed-previews .b-committee-article[id!='" + $(this).attr("rel") + "']:visible").hide("fast");

				$(".b-committee-viewer .b-committee-detailed-previews").find("#" + $(this).attr("rel") + ":hidden").slideDown("normal");
			
			} else {
				
				$(".b-committee-viewer .b-committee-detailed-previews .b-committee-article:visible").hide("fast");
				$(this).parent().parent().find(".b-committee-current-article").toggleClass("b-committee-current-article");
			}
			
			return false;
		});
	}
		
	/* Video announcements */
	if($(".b-video-announcements").length) {
		
		announcementsInitialize();
	}
	
});

var announcements = null;
var announcementsHeight = 0;
var announcementsCount = 0;
var announcementsPosition = 0;
var announcementHeight = 0;
var visibleAnnouncementsCount = 0;
var announcementsScrollBar = null;
var announcementsScrollBarMeasurements = null;
var announcementsScrollBarSectionHeight = 0;
var announcementsScroller = null;
var announcementsScrollerPosition = 0;

function announcementsInitialize() {
	
	/*$(".b-video-announcements .b-video-announcements-previews ul li")
		.mouseover(
			function() {
				
				if(!$(this).hasClass("selected")) {
					
					$(this).parent().children("li.selected").removeClass("selected");
					$(this).addClass("selected");
				}
			}
		)
		.children("a").click(function() {
			
			alert("Starting playing video announcement with id — " + $(this).attr("rel"));
			
			return false;
		});*/
	
	/* Scroll */
	announcements = $(".b-video-announcements .b-video-announcements-previews ul");
	announcementsHeight = $(".b-video-announcements").height();
	announcementsCount = announcements.children("li").length;
	announcementsPosition = 0;
	announcementHeight = $(".b-video-announcements .b-video-announcements-previews ul li[class!='selected']").eq(0).height();
	visibleAnnouncementsCount = Math.round(announcementsHeight / announcementHeight);
	announcementsScrollBar = $(".b-video-announcements .b-video-announcements-previews .scroll-bar .scroll-bar-inside");
	announcementsScrollBarMeasurements = null;
	announcementsScrollBarSectionHeight = null;
	announcementsScroller = null;
	announcementsScrollerPosition = 0;

	if(announcementsCount > Math.round(announcementsHeight / announcementHeight)) {
		
		if(!announcementsScrollBarMeasurements) {
			
			announcementsScrollBarMeasurements = {};
			tmpAnnouncementsScrollBarMeasurements = 43;

			for(i = 0; i <= (announcementsCount - visibleAnnouncementsCount); i++) {

				announcementsScrollBarMeasurements[i] = tmpAnnouncementsScrollBarMeasurements + Math.ceil(((announcementsScrollBar.height() - 87) / ((announcementsCount - visibleAnnouncementsCount) + 1)) * i);
			}
			
			announcementsScrollBarSectionHeight = announcementsScrollBarMeasurements[1] - announcementsScrollBarMeasurements[0];
		}
		
		announcementsScrollBar
			.mousemove(function(e) {

				if(announcementsScroller) {
					
					announcementsScrollerPosition = parseInt(e.pageY - $(this).offset().top);

					for(measurement in announcementsScrollBarMeasurements) {

						measurement = parseInt(measurement);

						if(announcementsScrollerPosition >= announcementsScrollBarMeasurements[measurement] && announcementsScrollBarMeasurements[measurement + 1] && announcementsScrollerPosition < announcementsScrollBarMeasurements[measurement + 1]) {

							if(announcementsPosition != measurement) {

								announcementsPosition = measurement;
								announcements.css("top", "-" + (measurement * announcementHeight) + "px");
							}
						}
						else if(announcementsScrollerPosition >= announcementsScrollBarMeasurements[measurement] && !announcementsScrollBarMeasurements[measurement + 1]) {

							if(announcementsPosition != measurement) {

								announcementsPosition = measurement;
								announcements.css("top", "-" + (measurement * announcementHeight) + "px");
							}
						}
					}
					
					if((announcementsScrollerPosition - 43) > 0 && (announcementsScrollerPosition + 44) < parseInt(announcementsScrollBar.height()))
						announcementsScroller.css("top", (announcementsScrollerPosition - 43));
				}
			})
			.find(".scroller")
			.mousedown(function() {

				announcementsScroller = $(this);

				$(document).mouseup(function() {

					announcementsScroller.mouseup();
				});
				
				document.ondragstart = function() { return false };
				document.onselectstart = function() { return false };
			})
			.mouseup(function() {

				announcementsScrollerPosition = parseInt($(this).css("top"));

				for(measurement in announcementsScrollBarMeasurements) {

					measurement = parseInt(measurement);

					if((announcementsScrollerPosition + 43) >= announcementsScrollBarMeasurements[measurement] && announcementsScrollBarMeasurements[measurement + 1] && (announcementsScrollerPosition + 43) < announcementsScrollBarMeasurements[measurement + 1]) {

						if(announcementsScrollBarMeasurements[measurement] == 43)
							$(this).css("top", 0);
						else
							$(this).css("top", announcementsScrollBarMeasurements[measurement]);
						
						if(announcementsPosition != measurement) {

							announcementsPosition = measurement;
							announcements.css("top", "-" + (measurement * announcementHeight) + "px");
						}
					}
					else if((announcementsScrollerPosition + 43) >= announcementsScrollBarMeasurements[measurement] && !announcementsScrollBarMeasurements[measurement + 1]) {
					
						$(this).css("top", parseInt(announcementsScrollBar.height()) - 87);
						
						if(announcementsPosition != measurement) {

							announcementsPosition = measurement;
							announcements.css("top", "-" + (measurement * announcementHeight) + "px");
						}
					}
				}

				announcementsScroller = null;

				$(document).unbind("mouseup");
				document.ondragstart = null;
				document.onselectstart = null;
			})
			.parent().parent().find(".up-arrow").click(function() {
				
				if(announcementsPosition > 0) {
					
					announcementsPosition = announcementsPosition - 1;
					announcementsScrollTo(announcementsPosition);
					
					scrollerPosition = 0;
					
					if(announcementsScrollBarMeasurements[announcementsPosition] == 43)
						scrollerPosition = 0;
					else if(!announcementsScrollBarMeasurements[announcementsPosition + 1])
						scrollerPosition = parseInt(announcementsScrollBar.height()) - 87;
					else
						scrollerPosition = announcementsScrollBarMeasurements[announcementsPosition];
					
					announcementsScrollBar.find(".scroller").css("top", scrollerPosition);
				}
			})
			.parent().find(".down-arrow").click(function() {
				
				if(announcementsPosition < (announcementsCount - 3)) {
					
					announcementsPosition++;
					announcementsScrollTo(announcementsPosition);
					
					scrollerPosition = 0;
					
					if(!announcementsScrollBarMeasurements[announcementsPosition + 1])
						scrollerPosition = parseInt(announcementsScrollBar.height()) - 87;
					else
						scrollerPosition = announcementsScrollBarMeasurements[announcementsPosition];
					
					announcementsScrollBar.find(".scroller").css("top", scrollerPosition);
				}
			});
			
	} else {
		
		announcements.css("marginRight", 0);
		announcementsScrollBar.parent().css("display", "none");
	}
}

function announcementsScrollTo(position) {
	
	announcements.css("top", "-" + (position * announcementHeight) + "px");
}