var initCarousel = function() {
	var megaimage = document.getElementById('current-megaimage');

	if (megaimage) {
		var megaplayer = document.getElementById('megaplayercont');
		var picsrc = document.getElementById('tv-picsrc');
		var picsrcP = document.getElementById('picsrcparent');
		var picbriefP  = document.getElementById('picbrief');
	}
	
	var carousel = document.getElementById('tv-carousel');

	for (var i = (carousel) ? '' : 1; carousel = document.getElementById('tv-carousel' + i); i++) {
		(function(carousel, i) {
			if ('' == i && megaimage) {
				var links = carousel.getElementsByTagName('a');
				initCarousel.current = links[0];
				initCarousel.current.className = 'tv-selected';
				
				preloadImages(links);
			}

			var cars = $('div.tv-car', carousel);
			var l = cars.length;
			var carWidth = cars.filter(':first')[0].offsetWidth;
			var visible = Math.round(carousel.parentNode.clientWidth / carWidth);
			var offset = 0;
			var shift = 0;

			var videoCarousel = carousel.className.match(/tv-video-carousel/);

			var nextButton = document.getElementById('tv-carousel-next' + i);
			var prevButton = document.getElementById('tv-carousel-prev' + i);
			
			if (l > visible) {
				nextButton.className = 'tv-carousel-next';
			}

			carousel.parentNode.parentNode.onclick = function(e) {
				if (!e) {
					var e = window.event;
					e.target = e.srcElement;
				}
				if (nextButton == e.target || prevButton == e.target) {
					if (nextButton == e.target) {
						offset += visible;
						if (offset >= (l - visible)) nextButton.className = '';
						prevButton.className = 'tv-carousel-prev';
					}
					else {
						offset -= visible;
						if (!offset) prevButton.className = '';
						nextButton.className = 'tv-carousel-next';
					}
					shift = (-offset * carWidth) + 'px';
					$(carousel).animate({marginLeft: shift}, 'fast');
					return false;
				}
				
				if ('' == i && !videoCarousel && megaimage && 'img' == e.target.tagName.toLowerCase()) {
					changeMegaimage(e.target.parentNode, megaimage, megaplayer, links, picsrc, picsrcP, picbriefP);
					return false;
				}
			}
		})(carousel, i);

		if ('' == i) i = 0;
	}
}

function changeMegaimage(car, megaimage, megaplayer, links, picsrc, picsrcP, picbriefP) {
	if (initCarousel.current == car) return false;
	
	megaimage.className = '';

	if (!car.getAttribute('type')) {
		megaimage.src = car.href;
		megaimage.style.display = 'block';
		megaplayer.className = 'tv-megaplayer';
	}
	else {
		megaimage.style.display = 'none';
		//showMegaPlayer(car.href, car.getAttribute('hld')); //old way
		showMegaPlayer(car.getAttribute('vdt'), true);
		megaplayer.className = '';
	}
	initCarousel.current.className = '';
	initCarousel.current = car;
	car.className = 'tv-selected';
	
	if (car.getAttribute('lpath')) {
		setZoom(car);
		megaimage.parentNode.className += ' tv-zoom';
	}
	else {
		megaimage.parentNode.className = 'tv-megaimage';
	}
	var haveSrc = (car.getAttribute('rev') || car.getAttribute('rel'));
	if (!haveSrc) {
		//hide photo source
		if (picsrcP) picsrcP.innerHTML = '&nbsp;';
		picsrc = false;
	} else {
		picsrc = document.createElement('a');
		picsrc.id = 'tv-picsrc';
		picsrc.target = '_blank';
		if (picsrcP) {
			picsrcP.innerHTML = (car.getAttribute('type') == 'videopreview' ? 'Видео' : 'Фото') + ' &mdash; ';
			picsrcP.appendChild(picsrc);
		}
		
		picsrc.innerHTML = car.getAttribute('rev') || '';
		picsrc.href = car.getAttribute('rel');
		
		if(picsrc.href.indexOf('/i/afp/') >= 0){
			picsrc.onclick = function() {return openPopupWindow(picsrc.href, 300, 200)}
		} else {
			picsrc.onclick = null
		}
		
		if (!car.getAttribute('rel')) {
			//case, when empty URL to photo source
			var picsrcName = picsrc.innerHTML;
			picsrcP.removeChild(picsrc);
			picsrc = false;
			picsrcP.innerHTML += picsrcName; 
		}
	}
	
	if (picbriefP) {
		picbriefP.innerHTML = car.getAttribute('brf') || '&nbsp;';
	}
}

function setSingleMega() {
	var megaimage = document.getElementById('current-megaimage');
	var singleplayer = document.getElementById('singleplayer');
	if (singleplayer) {
		document.getElementById('megaplayercont').className = '';
		if (singleplayer.getAttribute('vdt')) {
			var oldsize = (singleplayer.getAttribute('oldsize') ? true : false);
			showMegaPlayer(singleplayer.getAttribute('vdt'),oldsize);
			megaimage.style.display = 'none';
		} else {
			showMegaPlayer(singleplayer.href, singleplayer.getAttribute('hld'));
		}
	}
	else {
		if (megaimage) {
			if (megaimage.getAttribute('lpath')) {
				setZoom(megaimage);
			}
		}
	}
}

function openPopup(i) {
	var popup = $('div.tv-popup').get(0);
	if (!popup) {
		popup = document.createElement('div');
		$(popup).addClass('tv-popup').attr('id', 'popup')
		$('.tv-layout').append(popup);
	}
	
	$(popup).html(
		'<div class="tv-popup-cont"><img src="' + i.lpath + '" width="' + i.lw +
		'" height="' + i.lh + '" title="Закрыть или переместить" /></div>'
	);
	
	$(popup).css("cursor", "pointer");
	
	$(popup).mousedown(function(){
		window.$dragActivated = false
		setTimeout(function(){
			if(!window.$dragActivated){
				$('div.tv-popup').hide();
			}
		}, 200);
		return null;
	});
	
	$(popup).show().draggable({
		drag : function(e, ui){
			window.$dragActivated = true;
			$(this).css("cursor", "move");
		},
		stop: function(){
			$(this).css("cursor", "pointer");
		}
	});
	
	return null;
}

function setZoom(preview) {
	var zoom = document.getElementById('zoom');
	preview.lpath = preview.getAttribute('lpath')
	preview.lw = preview.getAttribute('lw');
	preview.lh = preview.getAttribute('lh');
	var img = new Image();
	img.src = preview.lpath;
	zoom.parentNode.onclick = function() {
		if (this.className.match('tv-zoom')) {
			openPopup(preview);
		}
	}
	zoom.className = 'tv-zoom-icon';
}

function preloadImages(links) {
	for (var i in links) {
		if (links[i].href) {
			(new Image()).src = links[i].href;
		}
	}
}
