﻿jQuery(function($) {
	$.carousel = $.carousel || {
		init: function(options) {
			return this.each(function() {
				var el = this;
				var $el = $(this);
				el.carouselCfg = {
					items: $(options.items, el),
					itemWidth: options.itemWidth,
					itemHeight: options.itemHeight,
					itemMinWidth: options.itemMinWidth,
					btnBack: $el.siblings(options.btnBack),
					btnForw: $el.siblings(options.btnForw),
					angles: options.angles || 360,
					points: []
				}
				el.carouselCfg.radiusX = $el.width() / 3;
				el.carouselCfg.radiusY = $el.height() / 1;
				el.carouselCfg.step = el.carouselCfg.angles / el.carouselCfg.items.length;
				el.carouselCfg.timer = null;
				el.carouselCfg.position = el.carouselCfg.angles / el.carouselCfg.items.length;

				for (var i = 0, ii = 360; i < ii; i++) {
					var angle = i * Math.PI / 180;
					var x = Math.round((el.carouselCfg.radiusX + el.carouselCfg.radiusX * Math.cos(angle)) - (el.carouselCfg.itemMinWidth * Math.cos(angle) / 1)),
						y = Math.round(el.carouselCfg.radiusY + el.carouselCfg.radiusY * Math.sin(angle)),
						z = Math.round(100 * (el.carouselCfg.radiusY + y) / (2 * el.carouselCfg.radiusY)),
						w = Math.round(el.carouselCfg.itemMinWidth + (el.carouselCfg.itemWidth - el.carouselCfg.itemMinWidth) * ((y / el.carouselCfg.radiusY) * (y / el.carouselCfg.radiusY) * (y / el.carouselCfg.radiusY) * (y / el.carouselCfg.radiusY) * (y / el.carouselCfg.radiusY) * (y / el.carouselCfg.radiusY) / 32) / 2),
						h = Math.round(w * el.carouselCfg.itemHeight / el.carouselCfg.itemWidth);
					x -= Math.round(w / 2);
					y -= Math.round(h / 1);
					el.carouselCfg.points.push({
						x: x,
						y: y,
						z: z,
						w: w,
						h: h
					});
				}

				$.carousel.positionItems(el);
				$.carousel.toggleActiveItem(el);

				el.carouselCfg.items.show();

				el.carouselCfg.btnForw.click(function() {
					var $as = el.carouselCfg.items.children("a");
					$as.mouseout();
					$as.unbind();
					clearInterval(el.carouselCfg.timer);

					el.carouselCfg.timer = window.setInterval(function() {
						$.carousel.rotateBackward(el);

						if (!(el.carouselCfg.position % el.carouselCfg.step)) {
							clearInterval(el.carouselCfg.timer);
							$.carousel.toggleActiveItem(el);
						}
					}, 10);
				});
				el.carouselCfg.btnBack.click(function() {
					var $as = el.carouselCfg.items.children("a");
					$as.mouseout();
					$as.unbind();
					clearInterval(el.carouselCfg.timer);

					el.carouselCfg.timer = window.setInterval(function() {
						$.carousel.rotateForward(el);

						if (!(el.carouselCfg.position % el.carouselCfg.step)) {
							clearInterval(el.carouselCfg.timer);
							$.carousel.toggleActiveItem(el);
						}
					}, 10);
				});
			});
		},
		rotateForward: function(el) {
			el.carouselCfg.position--;
			$.carousel.positionItems(el);
		},
		rotateBackward: function(el) {
			el.carouselCfg.position++;
			$.carousel.positionItems(el);
		},
		positionItems: function(el) {
			if (el.carouselCfg.angles - 1 < el.carouselCfg.position) {
				el.carouselCfg.position -= el.carouselCfg.angles;
			} else if (el.carouselCfg.position < 0) {
				el.carouselCfg.position += el.carouselCfg.angles;
			}
			el.carouselCfg.items.each(function(idx) {
				var p = idx * el.carouselCfg.step + el.carouselCfg.position;
				if (el.carouselCfg.angles - 1 < p) {
					p -= el.carouselCfg.angles;
				} else if (p < 0) {
					p += el.carouselCfg.angles;
				}

				var point = el.carouselCfg.points[p];
				$(this).css({
					"left": point.x,
					"top": point.y,
					"width": point.w,
					"height": point.h,
					"z-index": point.z
				}).attr("class", ((point.x + point.w / 2) == el.carouselCfg.radiusX && 100 < point.z) ? "active" : "");
			});
		},
		toggleActiveItem: function(el) {
		}
	};

	$.fn.Carousel = $.carousel.init;
});

jQuery(function($) {
	$("#carousel1 ul").Carousel({
		itemWidth: 188,
		itemHeight: 188,
		itemMinWidth: -3,
		items: "li",
		btnBack: ".back",
		btnForw: ".forth",
		angles: 180
	});
});

jQuery(function($) {
	$("#carousel2 ul").Carousel({
		itemWidth: 188,
		itemHeight: 188,
		itemMinWidth: -3,
		items: "li",
		btnBack: ".back",
		btnForw: ".forth",
		angles: 180
	});
});



