﻿(function ($) {
	$.fn.ad = function (options) {
		var defaults = {
			delay: 2000,
			path: "/images",
			stopOnMouseover: true,
			data: []
		};
		var o = $.extend(defaults, options);
		var maxPosition = o.data.length;
		var position = Math.floor(Math.random() * maxPosition);
		var lastDelay;

		return this.each(function (index) {
			var $t = $(this);

			function nextAd(first) {
				position++;
				if (position >= maxPosition) position = 0;
				var data = o.data[position];
				refreshAd(data, first);

				var delay = (data.delay > 0 ? data.delay : o.delay) * 1000;
				lastDelay = delay;
				$t.data("timer", setTimeout(function () { nextAd(); }, delay));
			}

			function refreshAd(data, first) {
				if (first != undefined && first) {
					$t.css("backgroundImage", "url(" + o.path + "/" + data.image + ")");
					$t.css("background-repeat", "no-repeat");
					$t.css("background-position", "center");
					$t.attr("title", data.tooltip);
				} else {
					$t.stop().fadeTo(200, 0, function () {
						$t.css("backgroundImage", "url(" + o.path + "/" + data.image + ")");
						$t.css("background-repeat", "no-repeat");
						$t.css("background-position", "center");
						$t.attr("title", data.tooltip);
						$t.fadeTo(300, 1);
					});
				}

				// Show the banner as clickable if there is a url or there is a codeArticle and quantity
				var clickable = false;
				if (data.url == undefined) {
					$t.removeData("url");
				} else {
					$t.data("url", data.url);
					clickable = true;
				}

				if (data.codeArticle == undefined || data.quantity == undefined) {
					$t.removeData("codeArticle");
					$t.removeData("quantity");
				} else {
					$t.data("codeArticle", data.codeArticle);
					$t.data("quantity", data.quantity);
					clickable = true;
				}
				if (data.code == undefined) {
					$t.removeData("code");
				} else {
					$t.data("code", data.code);
				}

				if (clickable) {
					$t.css("cursor", "pointer");
				} else {
					$t.css("cursor", "default");
				}
			}

			if (o.stopOnMouseover) {
				$t.hover(function () {
					clearTimeout($t.data("timer"));
				}, function () {
					//next();
					$t.data("timer", setTimeout(function () { nextAd(); }, lastDelay));
				});
			}

			$t.click(function () {
				var url = $t.data("url");
				var codeArticle = $t.data("codeArticle");
				var quantity = $t.data("quantity");
				var code = $t.data("code");
				if (url != undefined) {
					window.open(url, "_blank");
				} else if (codeArticle != undefined && quantity != undefined) {
					addToCart(codeArticle, quantity, $(this), null, null, code);
				}
			});

			nextAd(true);
		});

	}
})(jQuery);


