// block - блок, который необходимо обновлять
// ajaxID - идентификатор ajax для запроса
// links - ссылки, на которые необходимо отрабатывать клик (если они вне блока)
/*var ajax_block = function(block, ajaxID, links) {
	if (!links) {
		links = $(".ajax_block a", block);
	}
	$(links).click(function(e) {
		e.preventDefault();

		$.get($(this).attr("href"), {
			ajax_block: "/block/" + ajaxID
		}, function(data) {
			$(block).replaceWith(data).domReady();
		});
	});
}*/

$(function() { 
	var visible = 5;
	var count = $('#news-categories li').length;
	var kf = 0.9;

	var rad = 2 * Math.PI * (visible - 1) / count;

	var invisible = {
		min: rad / 2,
		max: 2 * Math.PI - rad / 2
	};

	jQuery.extend(jQuery.roundaboutShapes, {
		elcodeIndex: function(r, a, t) {
			if (r <= invisible.min) {
				// Видимая правая часть
				r = r * Math.PI / 2 / invisible.min;

				var x = (r + a) / Math.PI * 2;
				x = Math.pow(x, kf);
			} else if (r >= invisible.max) { 
				// Видимая левая часть
				r = Math.PI * 2 - (Math.PI * 2 - r) * Math.PI / 2 / invisible.min;

				var x = (r - Math.PI * 2) / Math.PI * 2;
				x = -Math.pow(Math.abs(x), kf);
			} else {
				// Невидимая часть
				var l1 = invisible.max - invisible.min;
				var l2 = Math.PI;
				r = Math.PI / 2 + (r - invisible.min) / l1 * l2;

				var x = Math.sin(r + a);
			}

			// var x = Math.sin(r + a);
			var y = (Math.sin(r + 3 * Math.PI / 2 + a) / 8) * t;
			var z = (Math.cos(r + a) + 1) / 2;
			var scale = (Math.sin(r + Math.PI / 2 + a) / 2) + 0.5;
//			scale =  Math.pow(scale, 1.3);

			return {
				x: x,
				y: y,
				z: z,
				scale: scale
			};
		}
	});

	// Инициализация карусели
	$('#news-categories').roundabout({
		shape: 'elcodeIndex',
		duration: 600,
		minZ: 100,
		maxZ: 300,
		minOpacity: 1,
		maxOpacity: 1,
		minScale: 0.4,
		tilt: 0,
		startingChild: $('#news-categories li.selected').index(),
		responsive: true
	});
});

// ajax на главной
$.domReady(function(e) {
	$(this).find(".ajax_block a").each(function() {
		var $a = $(this);
		if ($a.data("ready")) return;
		
		$a.data("ready", true);
		
		$a.click(function(e) {
			e.preventDefault();

			$.get($(this).attr("href"), {
				ajax_block: "/block/news"
			}, function(html) {
				$("#block-news").replaceWith(html);
				// Повторная выборка из-за замены элемента
				$("#block-news").domReady();
			});
		});
	});
});

$.domReady(function(e) {
	// Скроллинг
	if ($.fn.jScrollPane) {
		$(this).find(".scroll-pane").each(function() {
			var elem = $(this);

			if (elem.hasClass("scroll-pane-horizontal")) {
				var scroll =  elem.jScrollPane({
					verticalDragMinHeight: 19,
					verticalDragMaxHeight: 19,
					horizontalDragMinWidth: 87,
					horizontalDragMaxWidth: 87,
					hideFocus: true
				});
				// Скролл контейнера до выделенного элемента
				if ($(".selected", elem).length > 0) {
					elem.data('jsp').scrollToElement($(".selected", elem), true, true);
				}

				return scroll;
			}

			elem.jScrollPane({
				verticalDragMinHeight: 29,
				verticalDragMaxHeight: 29,
				horizontalDragMinWidth: 19,
				horizontalDragMaxWidth: 19,
				hideFocus: true
			});
		});
	}
	
	//Ползунок
	$(this).find(".slider").each(function() {
		var $slider = $(this);
		
		var data = $slider.data();
		if (!data.hidden) return;

		var $hidden = $slider.closest("form").find("input[name=" + data.hidden + "]");
		if (!$hidden.length) return;
		
		$slider.slider({
			value: 50,
			change: function() {
				$hidden.val($slider.slider("value"));
			}
		});
	});

	//Инпут файл
	$(this).find("input[type=file]").each(function() {
		var $input = $(this);
		$input.wrap("<div class='input-file'></div>");
		var $div = $("<div>").addClass("input-file-image").insertAfter($input).show().click(function() {
			$input.trigger("click");
		});
		$input.change(function() {
			$div.text($input.val());
		});
	});
});

// Делает картинки в меню чёрно-белыми. Но делает это после загрузки, поэтому закомментировано.
/*
$(function() {
	function grayscale(src){
		var canvas = document.createElement('canvas');
		var ctx = canvas.getContext('2d');
		var imgObj = new Image();
		imgObj.src = src;
		canvas.width = imgObj.width;
		canvas.height = imgObj.height; 
		ctx.drawImage(imgObj, 0, 0); 
		var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
		for(var y = 0; y < imgPixels.height; y++){
			for(var x = 0; x < imgPixels.width; x++){
				var i = (y * 4) * imgPixels.width + x * 4;
				var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
				imgPixels.data[i] = avg; 
				imgPixels.data[i + 1] = avg; 
				imgPixels.data[i + 2] = avg;
			}
		}
		ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
		return canvas.toDataURL();
    }

	$(window).load(function(){
		var images = $(".sub-item:not(.selected) img");
		// Fade in images so there isn't a color "pop" document load and then on window load
		images.fadeIn(500);
		
		// clone image
		images.each(function(){
			var el = $(this);
			el.css({"position":"absolute"}).wrap("<div class='img_wrapper' style='display: inline-block'>").clone().addClass('img_grayscale').css({"position":"absolute","z-index":"998","opacity":"0"}).insertBefore(el).queue(function(){
				var el = $(this);
				el.parent().css({"width":this.width,"height":this.height});
				el.dequeue();
			});
			this.src = grayscale(this.src);
		});
		
		// Fade image 
		$('.sub-item').mouseover(function(){
			$("img.img_grayscale", this).eq(0).stop().animate({opacity:1}, 100);
		})
		$('.sub-item').mouseout(function(){
			console.log($("img", this).eq(1));
			$("img.img_grayscale", this).eq(0).stop().animate({opacity:0}, 100);
		});		
	});
});
*/
