﻿var Comparer = {
	comparerHolder: null,
	onRefresh: null,
	init: function(comparerHolderId, onRefresh) {
		Comparer.comparerHolder = $("#" + comparerHolderId);
		Comparer.onRefresh = onRefresh;
		Comparer.refresh();
	},
	getIds: function() {
		if ($.cookie("shavers") == null)
			return null;
		return $.cookie("shavers").split(",");
	},
	add: function(id) {
		var ids = Comparer.getIds();
		if (ids == null)
			ids = [];
		if ($.inArray(id, ids) == -1) {
			ids.push(id);
			$.cookie("shavers", ids.join(","), { path: '/' });
		}
		Comparer.updateAddCompareControl(id);
		Comparer.refresh();
	},
	removeWithoutUpdate: function(id) {
		var ids = Comparer.getIds();
		if (ids == null)
			return;

		var removeIndex = $.inArray(id, ids);
		if (removeIndex != -1) {
			ids.splice(removeIndex, 1);

			if (ids == null || ids.length == 0)
				$.cookie("shavers", null, { path: '/' });
			else
				$.cookie("shavers", ids.join(","), { path: '/' });
		}
		Comparer.updateAddCompareControl(id);
	},
	remove: function(id) {
		Comparer.removeWithoutUpdate(id);
		Comparer.refresh();
	},
	updateAllAddCompareControls: function(ids) {
		for (var i = 0; i < ids.length; i++)
			Comparer.updateAddCompareControl(ids[i]);
	},
	updateAddCompareControl: function(id) {
		var control = $("#s_" + id);
		if (control == null)
			return;

		var ids = Comparer.getIds();
		if (ids == null || $.inArray(id, ids) == -1)
			control.html("<a href=\"#\" onclick=\"Comparer.add(" + id + "); return false;\" class=\"black\">Добавить к сравнению</a>");
		else
			control.html("Учавствует в сравнении");
	},
	refresh: function() {
		var ids = Comparer.getIds();
		if (ids == null) {
			Comparer.comparerHolder.html("");
			return;
		}
		var result = "<div class=\"comparer\"><div class=\"title\">Сравниваемые конфигурации</div>";
		for (var i = 0; i < ids.length; i++)
			result += Comparer.format("<div><a href=\"/model/{0}/{1}/\">{2}</a>&nbsp;&nbsp;<a href=\"#\" onclick=\"Comparer.remove({3}); return false;\"><img src=\"/clients/img/remove.gif\" width=\"10\" height=\"10\" alt=\"x\" /></a></div>", Comparer.getProducerName(Shavers[ids[i]][1]), Shavers[ids[i]][2], Shavers[ids[i]][0], ids[i]);

		result += "</div><div class=\"comparerButtonArea\"><a href=\"#\" onclick=\"Comparer.compare();\">Сравнить</a>&nbsp;•&nbsp;<a href=\"#\" onclick=\"Comparer.clear();return false;\">Очистить</a></div>";
		Comparer.comparerHolder.html(result);
	},
	compare: function() {
		document.location.href = "/compare/?ids=" + Comparer.getIds().join(",");
	},
	clear: function() {
		var ids = Comparer.getIds();
		$.cookie("shavers", null, { path: '/' });
		Comparer.updateAllAddCompareControls(ids);
		Comparer.refresh();
	},
	getProducerName: function(type) {
		switch (type) {
			case 1:
				return "panasonic";
			case 2:
				return "braun";
			case 3:
				return "philips";
		}
		return null;
	},
	format: function(str) {
		for (var i = 1; i < arguments.length; i++) {
			str = str.replace('{' + (i - 1) + '}', arguments[i]);
		}

		return str;
	}
};
