var TVN = {

	globals: {},

	start: function() {
		$('html').addClass('js');
		this.all();
		this.dynamic.blank();
		this.dynamic.actionInPlace();

		if(TVN.globals.latestNews) {
			this.latestNews();
		}

		if(TVN.globals.newsletter) {
			this.newsletter();
		}

		if(TVN.globals.fontSizeChange) {
			this.fontSizeChange(TVN.globals.elem);
		}

		if(TVN.globals.sentToFriend) {
			this.sentToFriend();
		}

		if(TVN.globals.howToWatch) {
			this.howToWatch();
		}
		
		if(TVN.globals.enhanceHowToConnect) {
			this.enhanceHowToConnect();
		}

		if(TVN.globals.carouselAbout) {
			this.carouselAbout();
		}

		if(TVN.globals.carouselRelatedNews) {
			this.bindScroll('.relatedSliderBox', '.aktualnosci');
		}

		if(TVN.globals.carouselRelatedPerson) {
			this.bindScroll('.relatedSliderBox', '.osoby');
		}

		if(TVN.globals.carouselRelatedCharacter) {
			this.bindScroll('.relatedSliderBox', '.bohaterowie');
		}

		if(TVN.globals.carouselRelatedPrograms) {
			this.bindScroll('.relatedSliderBox', '.programy');
		}

		if(TVN.globals.carouselRelatedGallery) {
			this.bindScroll('.relatedSliderBox', '.galeriazdjec');
		}

		if(TVN.globals.paginationRelatedNews) {
			this.paginationRelated();
		}

		if(TVN.globals.questionaire) {
			this.questionaire();
		}

		if(TVN.globals.comment) {
			this.comments();
		}

		if(TVN.globals.galleryWidget) {
			this.galleryWidget();
		}

		if(TVN.globals.fullGallery) {
			this.showFullGallery();
		}

		if(TVN.globals.enhanceProgramRanking) {
			this.enhanceProgramRanking();
		}

		if(TVN.globals.forumRoll) {
			this.forumRoll();
		}

		if(TVN.globals.newsRating) {
			this.newsRating();
		}

		if(TVN.globals.reportToModerator) {
			this.reportToModerator();
		}

		if(TVN.globals.commentAcceptance) {
			this.commentAcceptance();
		}

		if(TVN.globals.formHint) {
			this.formHint();
		}

		if ($.browser.msie && $.browser.version == '6.0') {
			this.ie6.menu();
			this.ie6.timeZone();
		}
	},

	dynamic: {
		blank: function() {
			$('a[@rel=external]').attr('target','_blank');
		},

		back: function() {
			$('a.back').bind('click', function(){
				history.back();
				return false;
			})
		},

		makePost: function() {

			var $post = $('.make-post');

			$post.bind('click', function(e) {
				var $url = this.href.split('?');

				var $form = $("<form method='post' action='" + $url[0] + "'>"),
					$token = $("<input type='hidden' name='token' value='" + $url[1] + "'>"),
					body = $('body');

					$form.appendTo(body);
					$token.appendTo($form);
					$form.submit();
					e.preventDefault();
			});
		},

		actionInPlace: function() {

			var $inPlace = $('.in-place');

			$inPlace.bind('click', function(e) {
				var that = $(this);
				if(!$(this).hasClass('stop')){
					var $loader = $('<div class="action-info"></div>');
					$(this).after($loader);
					$.ajax({
						type: 'GET',
						url: this.href,
						success: function(data) {
							$loader.html(data);
							setTimeout(function(){$loader.remove()},500)
						}
					});
				}

				e.preventDefault();
			});
		}
	},

	/* Functions used in whole portal */
	all: function() {
		/*
		$('#newsScroller').marquee('pointer').mouseover(function () {
			$(this).trigger('stop');
		}).mouseout(function () {
			$(this).trigger('start');
		}).mousemove(function (event) {
			if ($(this).data('drag') == true) {
				this.scrollLeft = $(this).data('scrollX') + ($(this).data('x') - event.clientX);
			}
		}).mousedown(function (event) {
			$(this).data('drag', true).data('x', event.clientX).data('scrollX', this.scrollLeft);
		}).mouseup(function () {
			$(this).data('drag', false);
		});
		*/

		$('#seeMoreOurPropositions').bind('click', function(e) {
			$('#shortBoxContainer').toggle('slow');
			$(this).toggleClass("on");
			e.preventDefault();
		});

		// Printing when specific "print link" exists
		$('a[@rel=print]').bind('click', function(){
			window.print();
			return false;
		});

		$('#searchInput').bind('click focus', function() {
			$(this).val('');
		});

		// Build footer to cover the backgorund attached to body html tag
		// TODO: Debug for right sizes
		function setFooterHeight() {
			var viewport = $(document).height(),
				header = $('#header').height(),
				content = $('#content').height(),
				bottom = $('#bottomMenu').height(),
				footer = $('#footer').height(),
				all = content + header + bottom + footer;

			if(viewport > all) {
				var footerHeight = viewport - (header + content + bottom);
				$('#footer').height(footerHeight);
			}
		}

		$(window).load(function () {
			setFooterHeight();
		});

	},

	fontSizeChange: function(elem){
		$('.textSizeBox .bigger').bind('click',function(e){
			$('.textSizeBox a').removeClass('on');
			$(elem).css('font-size','120%');
			$(this).addClass('on');
			e.preventDefault();
		});
		$('.textSizeBox .normal').bind('click',function(e){
			$('.textSizeBox a').removeClass('on');
			$(elem).css('font-size','100%');
			$(this).addClass('on');
			e.preventDefault();
		});
		$('.textSizeBox .smaller').bind('click',function(e){
			$('.textSizeBox a').removeClass('on');
			$(elem).css('font-size','90%');
			$(this).addClass('on');
			e.preventDefault();
		});
	},

	sentToFriend: function(){
		$('a.sendToFriend').bind('click',function(e){
			$.ajax({
				type: 'GET',
				url: '/recommend/' + TVN.globals.recommendationBeanId + '/'+ TVN.globals.recommendationEntityId,
				success: function(data) {
					TVN.popup.open(data);
					TVN.popup.submitForm('/recommend/' + TVN.globals.recommendationBeanId + '/'+ TVN.globals.recommendationEntityId);
				}
			});

			e.preventDefault();
		});

	},

	latestNews: function() {
		function enableScrolling() {
			$('#latestNewsBox dt:lt(1)').addClass("scrolled");
			$('#latestNewsBox dt:gt(0)').removeClass("on").next().addClass('hidden');

			$('#latestNewsBox').find('dt').unbind('click').bind('click', function(e) {
				$(this).addClass('scrolled');
				if($('#latestNewsBox dt.scrolled').size() > 1) {
					$('#latestNewsBox dt').removeClass('scrolled').removeClass('on').next().hide().addClass('hidden');
					$(this).addClass('scrolled');
				}

				$(this).next().toggle('fast').toggleClass('hidden');
				$(this).toggleClass("on");

				e.preventDefault();
			});
		}

		// Enable scrolling of elements
		enableScrolling();

		// Static parameters
		var $newsBoxTabs = $('.newsBox .threeTabs'),
			$newsBoxLinks = $newsBoxTabs.find('a'),
			$newsBoxList = $('#latestNewsBox'),
			$newsBoxStartContent = $newsBoxList.html();

		// Bind actions to user clicks
		$newsBoxLinks.bind('click', function(e){
			// Get ajax content only from tabs which are not present at the start
			if($(this).attr('class') != 'news-newest') {
				$.ajax({
					type: 'GET',
					url: $(this).attr('href'),
					cache: true,
					success: function(data) {
						$newsBoxList.html(data);
						enableScrolling();
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(errorThrown);
					}
				});
			} else {
				$newsBoxList.html($newsBoxStartContent);
				enableScrolling();
			}

			// Remove class ON and add it to clicked one
			$newsBoxTabs.find('li').removeClass('on');
			$(this).parent().addClass('on');

			e.preventDefault();
		});

	},

	newsletter: function() {
		var $inputs = $('form.newsletterAction :text');

		$inputs.bind('click select', function() {
			$(this).val('');
		});

		$('form.newsletterAction').bind('submit', function(e) {
			var $data = $(this).find(':text'),
				$url = $(this).attr('action');

			$('form.newsletterAction input').hide();
			$('form.newsletterAction .loader').show();

			//alert($url);

			$.ajax({
				type: 'POST',
				url: $url,
				data:  'email=' + $data.val(),
				success: function(data) {
					$('form.newsletterAction .loader').hide();
					if(data == 'invalid.email') {
						$('form.newsletterAction label').text('Nie prawidłowy adres e-mail.');
					} else if(data == 'email.already.activated') {
						$('form.newsletterAction label').text('E-mail już został aktywowany.');
					} else {
						$('form.newsletterAction label').text('Wysłano wiadomość aktywacyjną.');
					}
					$('form.newsletterAction input').show();
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
  					$('form.newsletterAction .loader').hide();
					$('form.newsletterAction label').text('Nie udalo sie zapisac.');
				}
			});

			e.preventDefault();
		});
	},
	
	howToWatch: function() {
		$('#text .howToWatch .menu .menuItem a').bind('click', function(e){
			e.preventDefault();
			hideTabs();
			
			switch ($(this).attr('rel')) {
			case 'australia':
				$('#tabAustralia').removeClass("rolledDown");
				$('#tabAustralia').removeClass("off");
				$('#tabAustralia').addClass("rolledUp");
				$('#tabAustralia').addClass("on");
				break;
			case 'usa':
				$('#tabUsa').removeClass("rolledDown");
				$('#tabUsa').removeClass("off");
				$('#tabUsa').addClass('rolledUp');
				$('#tabUsa').addClass('on');
				break;
			case 'canada':
				$('#tabCanada').removeClass("rolledDown");
				$('#tabCanada').removeClass("off");
				$('#tabCanada').addClass('rolledUp');
				$('#tabCanada').addClass('on');
				break;
			case 'germany':
				$('#tabGermany').removeClass("rolledDown");
				$('#tabGermany').removeClass("off");
				$('#tabGermany').addClass('rolledUp');
				$('#tabGermany').addClass('on');
				break;
			case 'france':
				$('#tabFrance').removeClass("rolledDown");
				$('#tabFrance').removeClass("off");
				$('#tabFrance').addClass('rolledUp');
				$('#tabFrance').addClass('on');
				break;

			default:
				$('#tabAustralia').removeClass("rolledDown");
				$('#tabAustralia').removeClass("off");
				$('#tabAustralia').addClass('rolledUp');
				$('#tabAustralia').addClass('on');
				break;
			}
		});
		
		function hideTabs(){
			$(".howToWatch dd").removeClass("rolledUp");
			$(".howToWatch dd").removeClass("on");
			$(".howToWatch dd").addClass("rolledDown");
			$(".howToWatch dd").addClass("off");
		}
		
	},

	enhanceHowToConnect: function() {
		var $headers = $('.howToConnectList dd.rolledDown ul li:not(.header)'),
			$sections = $('.howToConnectList dd.rolledUp ul'),
			canal = window.location.href.split('#')[1];

		if(canal == 82966538) {
			// tvn
			$('.howToConnectList dt[rel=tvn]').next().addClass('off').removeClass('on').end().next().next().addClass('on').removeClass('off');
		} else if(canal == 84121538 || canal == 369417538) {
			// tvni
			$('.howToConnectList dt[rel=tvni]').next().addClass('off').removeClass('on').end().next().next().addClass('on').removeClass('off');
		} else if(canal == 83975538) {
			// tvn7
			$('.howToConnectList dt[rel=tvn7]').next().addClass('off').removeClass('on').end().next().next().addClass('on').removeClass('off');
		} else if(canal == 733231538) {
			// tvnturbo
			$('.howToConnectList dt[rel=tvnturbo]').next().addClass('off').removeClass('on').end().next().next().addClass('on').removeClass('off');
		}

		function hideAll() {
			$('.howToConnectList dd').each(function(i) {
				if($(this).hasClass('rolledDown')) {
					$(this).addClass('on').removeClass('off');
				}
				if($(this).hasClass('rolledUp')) {
					$(this).addClass('off').removeClass('on');
				}
			});
		}
		var $channelHeaders = $('.howToConnectList dd.rolledDown ul li.header');
		
		$channelHeaders.bind("click", function(e){
			e.preventDefault();
			hideAll();
		});
		
		$headers.find('a').bind('click', function(e) {
			hideAll();
			
			var $parents = $(this).parents('dd');

			$parents.addClass('off').removeClass('on');

			if($(this).parent().hasClass('satellite')) {
				$parents.nextAll('dd.satellite:first').addClass('on').removeClass('off');
			} else if($(this).parent().hasClass('cable')) {
				$parents.nextAll('dd.cable:first').addClass('on').removeClass('off');
			} else if($(this).parent().hasClass('terrestrial')) {
				$parents.nextAll('dd.terrestrial:first').addClass('on').removeClass('off');
			}

			/*
			var $parent = $(this).parent().parent().parent();

			if($(this).parent().hasClass('satellite') || $(this).parent().hasClass('header')) {
				if($parent.hasClass('on')) {
					$parent.removeClass('on').addClass('off');
					$parent.next().addClass('on').removeClass('off');
				}
			}

			if($(this).parent().hasClass('cable')) {
				if($parent.hasClass('on')) {
					$parent.removeClass('on').addClass('off');
					$parent.next().next().addClass('on').removeClass('off');
				} else {
					$parent.removeClass('off').addClass('on');
					$parent.next().next().addClass('off').removeClass('on');
				}
			}
			*/

			e.preventDefault();
		});

		$sections.find('a').bind('click', function(e) {
			hideAll();

			/*
			if($(this).parent().hasClass('satellite') || $(this).parent().hasClass('header')) {
				if($parent.next().hasClass('off')) {
					$parent.prev().addClass('on').removeClass('off');
				}
				$parent.removeClass('on').addClass('off');
			}
			if($(this).parent().hasClass('cable')) {
				if($parent.prev().hasClass('off')) {
					$parent.prev().prev().addClass('on').removeClass('off');
				}
				$parent.removeClass('on').addClass('off');
			}
			*/

			e.preventDefault();
		});

	},

	popup: {
		open: function(data, position) {
			var $popupContent = $('<div class="popup-content"></div>').html(data);
			var $popup = $('<div class="popup"></div>').prepend($popupContent);

			$('body').prepend($popup);
			$popup.css('z-index', '9999');
			if(position) {
				$popup.css('top', position + 'px');
			}
			TVN.popup.close();
		},

		close: function() {
			$('.close-popup').bind('click', function(e){
				$('.popup').remove();
				e.preventDefault();
			});
		},

		submitForm: function(url) {
			$('.popup form').bind('submit', function(e) {
				var $data = $(this).serialize();
				$.ajax({
					type: 'POST',
					url: url,
					data: $data,
					success: function(data) {
						var $popupContent = $('<div class="popup-content"></div>').html(data);
						$('.popup').empty().prepend($popupContent);
						TVN.popup.close();
						TVN.popup.submitForm(url);
					}
				});
				e.preventDefault();
			});
		}

	},

	carouselAbout: function() {
		$('.imageSliderBox li').each(function(i){
			if(i > 4){ $(this).hide(); }
		});
		$('.imageSliderBox .next').addClass('disabled');
		$('.imageSliderBox .previous').bind('click',function(e){
			$('.imageSliderBox .next').removeClass('disabled');
			if($('.imageSliderBox li:visible:last').attr('class') != $('.imageSliderBox li:last').attr('class')){
				$('.imageSliderBox li:visible:first').hide();
				$('.imageSliderBox li:visible:last').next().show();
			}
			if($('.imageSliderBox li:visible:last').attr('class') == $('.imageSliderBox li:last').attr('class')){
				$('.imageSliderBox .previous').addClass('disabled');
			}
			e.preventDefault();
		});
		$('.imageSliderBox .next').bind('click',function(e){
			$('.imageSliderBox .previous').removeClass('disabled');
			if($('.imageSliderBox li:visible:first').attr('class') != $('.imageSliderBox li:first').attr('class')){
				$('.imageSliderBox li:visible:last').hide();
				$('.imageSliderBox li:visible:first').prev().show();
			}
			if($('.imageSliderBox li:visible:first').attr('class') == $('.imageSliderBox li:first').attr('class')){
				$('.imageSliderBox .next').addClass('disabled');
			}
			e.preventDefault();
		});
	},

    bindScroll: function(clazz, type) {
		if($(clazz + type + ' li:not(.prev, .next, .empty)').length > 3) {
	        $(clazz + type + ' li.prev a').bind('click',function(e) {
	            $(clazz + type + ' li[class!="next"]:visible:last').addClass('hidden');
	            $(clazz + type + ' li[class!="next"]:last').insertAfter(clazz + type + ' li.prev').removeClass('hidden');
	            e.preventDefault();
	        });
	        $(clazz + type + ' li.next a').bind('click',function(e) {
	            $(clazz + type + ' li[class!="prev"]:visible:first').addClass('hidden').insertBefore(clazz + type + ' li.next');
	            $(clazz + type + ' li[class!="next"]:visible:last').next().removeClass('hidden');
	            e.preventDefault();
	        });
		} else {
			$(clazz + type + ' li.prev a').css('visibility', 'hidden');
			$(clazz + type + ' li.next a').css('visibility', 'hidden');
		}
    },

    paginationRelated: function() {
    	/*
		<ul class="paggination">
			<li class="on"><a href="#" rel="page-1">1</a></li>
			<li><a href="#" rel="page-2">2</a></li>
		</ul>
		*/

    	// Build pagination elements depend on number of items
    	var pages = Math.ceil($('.specialReport .textList dd').length / 4),
    		$pagination = $('<ul class="paggination"></ul>');

    	if(pages > 0 && pages != 1) {
			var i = 0;
			for (i = 0; i < pages; i++) {
				e = i + 1;
				if(i == 0) {
					$pagination.append($('<li class="on"><a href="#" rel="page-'+ e +'">' + e + '</a></li>'))
				} else {
					$pagination.append($('<li><a href="#" rel="page-'+ e +'">' + e + '</a></li>'))
				}
			}
    	}

    	// Insert pagination after all items
    	$pagination.insertAfter($('.specialReport .textList'));

    	// Bind pagination to html
    	$pagination.find('a').unbind().bind('click', function(e) {
    		var $this = $(this);

    		// Remove all active elements
    		$pagination.find('a').each(function() {
    			$(this).parent().removeClass('on');
    		});

    		// Put clicked element into active state
    		$this.parent().addClass('on');

    		// Current page
    		var page = $this.attr('rel').split('-')[1];

    		// Hide all elements and show only those which are on exact page
    		$('.specialReport .textList dd').hide()
    		$.each($('.specialReport .textList dd'), function(j) {
    			var that = $(this);
    			if(j >= (4 * (page - 1)) && j < (4 * page)) {
    				that.show();
    			}
    		});

    		e.preventDefault();
    	});
    },

	print: {
		currentEPG: function() {
			window.open(TVN.globals.printURL + arguments[0], 'popup' , 'width=800, height=600');
		}
	},

	questionaire: function() {
		$questionaireStart = $('#mainColumn .questionaire');
		start();

		function start() {
			$('#mainColumn .questionaire-enbale-voting').unbind().bind('click', function(e) {
				$.ajax({
					type: 'GET',
					url: $('form.questionaire').attr('action'),
					success: function(data) {
						$('form.questionaire').remove();
						$('.sideBar .questionaireContainer').after(data);
						enableVoting();
						enableResults();
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(errorThrown);
					}
				});
				e.preventDefault();
			});
		}

		function enableVoting() {
			$('form.questionaire').unbind().bind('submit', function(e) {
				var $data = $(this).serialize(),
					$url = $(this).attr('action'),
					$type = $(this).attr('method');

				$.ajax({
					type: $type,
					url: $url,
					data:  $data,
					success: function(data) {
						$('form.questionaire .question-items').remove();
						$('form.questionaire .questionaire-submit input').remove();
						$('form.questionaire .question').after(data)
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(errorThrown);
					}
				});

				e.preventDefault();
			});
		}

		function enableResults() {
			$('.questionaire-show-voting').unbind().bind('click', function(e) {
				$.ajax({
					type: 'GET',
					url: $(this).attr('href'),
					success: function(data) {
						$('form.questionaire').remove();
						$('.sideBar .questionaireContainer').after(data);
						goToStart();
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(errorThrown);
					}
				});
				e.preventDefault();
			});
		}

		function goToStart() {
			$('form .questionaire-start').unbind().bind('click', function(e) {
				$('form.questionaire').remove();
				$('.sideBar .questionaireContainer').after($questionaireStart);
				start();
				e.preventDefault();
			});
		}

	},

	comments: function() {

		$('#comments-module a.comment-add').unbind().bind('click', function(e) {
			var url = $(this).attr('href');
			$.ajax({
				type: 'GET',
				url: url,
				success: function(data) {
					$('#comments-module').append(data)

					addCommentForm(url);
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					alert(errorThrown);
				}
			});
			e.preventDefault();
		});

		function addCommentForm(url) {
			$('#comments-module .add-topic-form form').unbind().bind('submit', function(e) {
				$.ajax({
					type: 'POST',
					url: url,
					data:  $(this).serialize(),
					success: function(data) {
						$('#comments-module .add-topic-form').replaceWith(data);
						addCommentForm(url);
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
						alert(errorThrown);
					}
				});

				e.preventDefault();
			});
		}
	},

	galleryWidget: function() {
		$("#graphicPagginationContainer").jCarouselLite({
			visible: 1,
			start: 0,
			btnNext: ".graphicPaggination .nextt",
			btnPrev: ".graphicPaggination .prev",
			btnGo: [".graphicPaggination .1", ".graphicPaggination .2", ".graphicPaggination .3", ".graphicPaggination .4", ".graphicPaggination .5"]
		});
	},

	showFullGallery: function() {
		var root = this;

		jQuery('.artshow-incomplete').each(function() {

			var $this = jQuery(this),
				$firstRowThumbs = $this.find('a'),
				$showGallery = jQuery('a.entity-more-gallery');

			function downloadGallery(e) {
				var launchArtshow = (typeof e.data == 'undefined') ? true : false,
					self = this;

				jQuery.ajax({
					url: '/ajax/galleries/' + TVN.globals.galleryWidgetGalleries,
					method: 'GET',
					cache: true,
					success: function(response) {
						$this.append(response).removeClass('artshow-incomplete').addClass('artshow');

						$firstRowThumbs = $this.find('a');

						// Exclude duplicates
						var a = new Array();
						$firstRowThumbs.each(function(x) {
							test = false;
							b = a[x] = jQuery(this).attr('href');
							for ( i = 0; i < a.length - 1; i++) {
								if (b == a[i]) {
									test = true;
								}
							}
							if (test) {
								$firstRowThumbs[x] = '';
								jQuery(this).addClass('exclude')
							}
						});

						$firstRowThumbs.add($showGallery).unbind('click');

						$showGallery.bind('click', function(e) {
							$firstRowThumbs.eq(0).click();
							e.preventDefault();
						});

						Artshow.start();
						if (launchArtshow) {
							jQuery(self).click();
						} else {
							$firstRowThumbs.eq(0).click();
						}
					}
				})
				e.preventDefault();
			}

			$firstRowThumbs.bind('click', downloadGallery);
			$showGallery.bind('click', true, downloadGallery);
		});
	},

	enhanceProgramRanking: function() {
		function enableLinks() {
			$('#programRankingPart a.cast-rate, #programRankingPart a.add-to-fav').unbind().bind('click', function(e) {
				$('#programRankingPart .ranking-loading').css('opacity', 0.7).show();
				var that = $(this);

				$.ajax({
					type: 'GET',
					url: this.href,
					success: function(data) {
						$('#programRankingPart').replaceWith(data);
						enableLinks();
						$('#programRankingPart .ranking-loading').hide();
					},
					complete: function() {
						if($('#chartHolder').length > 0) {
			                var paper = Raphael("chartHolder", 320, 200),
		                    values = [],
		                    labels = [];

			                $("#dataTable tr").each(function () {
			                    values.push(parseInt($("td", this).text(), 10));
			                    labels.push($("th", this).text());
			                });
			                $("#dataTable").hide();
			                paper.pieChart(160, 100, 65, values, labels, "#2D87D6");
						}
					}
				});

				e.preventDefault();
			});
		}

		enableLinks();
	},

	forumRoll: function() {
		var $forums = jQuery('#forum-page .forum-no-topics');

		if($forums.size()) {
			jQuery.each($forums, function() {
				jQuery(this).parents('.forum-section').toggleClass('hidden-forum');
				jQuery(this).parents('.forum-section').find('.forum-header .forum-section-roll').toggleClass('forum-section-roll-up');
			});
		}

		jQuery('#forum-page .forum-header a.forum-section-roll').bind('click', function(e) {
			jQuery(this).toggleClass('forum-section-roll-up').parents('.forum-section').toggleClass('hidden-forum');
			e.preventDefault();
		});
	},

	newsRating: function() {
		$('.news-rank li a').bind('click', function(e) {
			var that = $(this),
				$loader = $('<div class="action-info"></div>');

			$(this).after($loader);

			$.ajax({
				type: 'GET',
				url: this.href,
				success: function(data) {
					$loader.html(data);
					if($loader.find('strong').size() == 1 ) {
						$('.news-rank-total-count').html($loader.find('strong').html());
						$('.news-rank-count').html($loader.find('span').html());

						// Find rounded rate of an item
						var roundedRate = parseInt($loader.find('strong').html().split(':')[1]);

						// Remove active class from all list elements
						$('.news-rank li').removeClass('on');

						// Add active class
						$('.news-rank li').each(function(i) {
							if((i + 1) <= roundedRate) {
								$(this).addClass('on');
							}
						});
					}
					setTimeout(function() {
						$loader.remove()
					},1000)
				}
			});

			e.preventDefault();
		});
	},

	reportToModerator: function() {
		var $links = $('a.link-report-moderator');

		$links.bind('click', function(e) {
			var link = this.href,
				pos = $(this).offset();

			$.ajax({
				type: 'GET',
				url: link,
				success: function(data) {
					TVN.popup.open(data, pos.top);
					TVN.popup.submitForm(link);
				}
			});
			e.preventDefault();
		});
	},

	commentAcceptance: function() {
		var $message = $('.addCommentInfo'),
			$form = $('.formEdit'),
			$acceptance = $message.find('.acceptance-yes');

		if($.trim($form.find('.element_err, .code_err').text()).length > 0) {
			$message.hide();
			$form.show();
		} else {
			$acceptance.bind('click', function(e) {
				if($(this).hasClass('acceptance-yes')) {
					$message.hide('fast', function() {
						$form.show('fast', function() {
							TVN.formHint();
						});
					});
				} else {
					history.go(-1);
				}
				e.preventDefault();
			});
		}

	},

	formHint: function() {
		$hintEls = $('input + .form-hint, textarea + .form-hint');

		$hintEls.each(function() {
			var that = $(this);

			if(that.prev().offset().top > 0) {
				that.css('top', (that.prev().position().top - 20) + 'px');
				that.css('left', (that.prev().width() + that.prev().position().left) + 'px');

				that.prev().bind('focus', function() {
					that.show('fast');
				});

				that.prev().bind('blur', function() {
					that.hide('fast');
				});
			}
		});
	},

	ie6: {
		menu: function() {
			$("#mainMenu li").bind("mouseenter", function(){
				if($(this).hasClass('over')) {

				} else {
					$(this).addClass("over");
				}
			}).bind("mouseleave",function(){
				if($(this).hasClass('over')) {
					$(this).removeClass("over");
				}
			});
		},

		timeZone: function() {
			$(".changeTimeZone dt").bind("mouseenter", function(){
				if($(this).hasClass('over')) {

				} else {
					$(this).addClass("over").next().addClass("over");
				}
			});

			$(".changeTimeZone dd").bind("mouseleave",function(){
				if($(this).hasClass('over')) {
					$(this).removeClass("over").prev().removeClass("over");
				}
			});
		}
	}
}

$(function() {
	TVN.start();
});
