﻿function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function ShowPopup(popup, obj) {
	if (obj != null) {
		var offset = $j(obj).offset();
		$j(popup).css('top', (offset.top + 18));
		$j(popup).css('left', offset.left);
	}
	$j(popup).css('display', 'block');
}

function HidePopup(popup, obj) {
	$j(popup).css('display', 'none');
}

var shopData = {
	currentTemplate: 0,
	templates: [],
	sortMode: 0,
	classes: ['big_l', 'med_l', 'med_l2', 'med_l3'],
	data: [],
	newData: [],
	isLoading: false,
	isAllLoaded: false,
	getItem: function(product) {
		var result = this.templates[this.currentTemplate];
		for (var key in product) {
			var regExp = new RegExp(key, "g");
			result = result.replace(regExp, product[key]);
		}
		return result;
	},
	fillContent: function() {
		this.setShowMode();
		this.setSortMode();

		$j('#shopContainer').empty();
		$('shopContainer').className = this.classes[this.currentTemplate];
		for (var index = 0; index < this.data.length; index++) {
			$j('#shopContainer').append(this.getItem(this.data[index]));
		}
	},
	appendContent: function() {
		this.setShowMode();
		this.setSortMode();

		shopData.data = $j.merge(this.data, this.newData);
		$('shopContainer').className = this.classes[this.currentTemplate];
		for (var index = 0; index < this.newData.length; index++) {
			$j('#shopContainer').append(this.getItem(this.newData[index]));
		}
	},
	//showMode
	changeShowMode: function(me, templateIndex) {
		base.showLoader = false;
		PageMethods.SetCurrentShowMode(_subcatId, templateIndex, location.hash, function(result) { base.showLoader = true; window.location.hash = result; });
		shopData.currentTemplate = templateIndex;
		shopData.fillContent();
	},
	setShowMode: function(templateIndex) {
		if (templateIndex)
			shopData.currentTemplate = templateIndex;
		$j('#showModeContainer img.cur').removeClass("cur");
		$j('#showMode' + shopData.currentTemplate).addClass("cur");
	},
	//sortMode
	changeSortMode: function(me, sortMode) {
		if (me.className == 'curr')
			return;
		shopData.sortMode = sortMode;
		_pageNo = 0;
		PageMethods.SetCurrentSortMode(_subcatId, sortMode, location.hash, shopFilter.onReceiveResult, OnServiceError, { append: false });
	},
	setSortMode: function(sortMode) {
		if (sortMode)
			shopData.sortMode = sortMode;
		$j('#sortModeContainer a.curr').removeClass("curr");
		$j('#sortMode' + shopData.sortMode).addClass("curr");
	}
}
var shopFilter = {
	enabled: true,
	initialize: function () {
		PageMethods.GetFilterResultByHash(_subcatId, _pageNo, location.hash, this.onReceiveResult, OnServiceError, { append: true, evalScript: true });
	},
	onReceiveResult: function (result, userContext, methodName) {
		eval("var shopFilterResult = " + result);
		$j('#productCount').html(shopFilterResult.ItemCountText);
		window.location.hash = shopFilterResult.LocationHash;
		if (userContext.evalScript)
			eval(shopFilterResult.EvalScript);
		if (userContext.append) {
			shopData.newData = shopFilterResult.ShopData;
			shopData.appendContent();
		}
		else {
			shopData.data = shopFilterResult.ShopData;
			shopData.fillContent();
		}
		shopFilter.setRemainging(shopFilterResult.RowCount);
		shopData.isLoading = false;
	},
	setRemainging: function (rowCount) {
		var passed = (_pageNo + 1) * _pageSize;
		if (passed >= rowCount) {
			$j('#loadRestDiv').css('display', 'none');
			shopData.isAllLoaded = true;
		}
		else {
			$j('#loadRestDiv').css('display', 'inline');
			var remains = rowCount - passed;
			var nextX = remains > _pageSize ? _pageSize : remains;
			$j('#loadRestDiv').html('Load next ' + nextX + ' of ' + remains + ' remaining results...');
			shopData.isAllLoaded = false;
		}
	},
	filtersCount: 0,
	filters: new Array(),
	currentCategory: "",
	oldClassName: "",
	checkItem: function (me) {
		this.setCurrent(me);

		var str = "";
		var cutNum = 0;
		var filters = $j("#shopFilter").find(".cur");
		var lenght = filters.length;

		if (lenght <= 1 && this.oldClassName != "") {
			$j("#ctl00_Top1_divCros2").attr('class', this.oldClassName);
		}

		if (lenght > 1) {
			if(this.oldClassName == "")
				this.oldClassName = $j("#ctl00_Top1_divCros2").attr('class');
			$j("#ctl00_Top1_divCros2").attr('class', 'cros2 cr4');
		}

		if (lenght == 0)
			str = "<b class=\"b2\">" + this.currentCategory + " <u>(" + this.currentCategoryCount + ")</u></b>";
		else {
			var fc = (lenght + 2) > 5 ? 5 : (lenght + 2);
			str = "<b class=\"b" + fc + "\"><a href=\"javascript:shopFilter.unCheckItem(-1)\">" + this.currentCategory + "</a><b><i>&nbsp;&nbsp;/&nbsp;&nbsp;</i>";
		}

		for (var i = 0; i < filters.length; i++) {
			if (i < filters.length - 1 && i < 4)
				str += "<a href=\"javascript:shopFilter.unCheckItem('" + filters[i].id + "')\">" + filters[i].innerHTML + "</a><b><i>&nbsp;&nbsp;/&nbsp;&nbsp;</i>";
			else
				str += filters[i].innerHTML;
			if (i == 4)
				break;
		}



		$j("#filterPath").html(str);
		this.getFilteredData();
	},
	parseHash: function (q) {
		var kvp = (q.length > 1) ? q.substring(1, q.length).split(';') : new Array();

		for (var i = 0; i < kvp.length; i++) {
			kvp[i] = kvp[i].split("=");
		}
		var ret = {};
		for (var j in kvp)
			ret[kvp[j][0]] = kvp[j][1];

		return ret;
	},
	unCheckItem: function (rid) {

		var filters = $j("#shopFilter").find(".cur");

		var flagToDelete = false;
		for (var i = 0; i < filters.length; i++) {
			if (flagToDelete)
				$j(filters[i]).click();
			if (filters[i].id == rid)
				flagToDelete = true;
		}

		if (rid == -1)
			$j("#shopFilter").find(".cur").click();
	},
	setCurrent: function (me) {
		//$j("a.cur", $j(me).parent()).each(function () { if (me != this) $j(this).removeClass("cur"); });
		$j(me).attr("class", $j(me).hasClass("cur") ? "" : "cur");
	},
	getFilteredData: function () {
		if (!this.enabled)
			return;

		_pageNo = 0;
		var priceIds = '';
		$j('#priceRanges [rid].cur').each(function () { priceIds += (priceIds != '' ? ',' : '') + $j(this).attr('rid'); });
		var bitIds = '';
		$j('#shopFilter [bid].cur').each(function () { bitIds += (bitIds != '' ? ',' : '') + $j(this).attr('bid'); });

		//todo: optimize, [listIds|rangeIds]=fid1:lid1,lid2;fid2:lid3,lid4
		var listIds = '';
		$j('#shopFilter [fid] [lid].cur').each(function () { listIds += (listIds != '' ? ',' : '') + $j(this).parent().attr('fid') + 'x' + $j(this).attr('lid'); });

		var rangeIds = '';
		$j('#shopFilter [fid] [rid].cur').each(function () { rangeIds += (rangeIds != '' ? ',' : '') + $j(this).parent().attr('fid') + 'x' + $j(this).attr('rid'); });

		PageMethods.GetFilterResult(_subcatId, priceIds, listIds, rangeIds, bitIds, this.onReceiveResult, OnServiceError, { append: false });
	}
}
var shop = {
	mainContent: null,
	changeContent: function (me, contentId) {
		if ($j(me).css('color').toLowerCase() == 'black')
			return;
		$j('#ctl00_Top1_contentContainer a').each(function () { $j(this).css('color', ''); });
		$j(me).css('color', 'black');
		if (contentId) {
			if (!this.mainContent)
				this.mainContent = $j('#mainShopContainer').html();
			ShopService.GetPageContent(
				contentId,
				function (result, userContext, methodName) {
					window.location.hash = contentId;
					$j('#mainShopContainer').html(result);
					(
						function ($) {

							var _$form = $("<form>")

							if (contentId == 5)
							{
								var _$name = $("<input>")
									.attr("type", "text");

								var _$email = $("<input>")
									.attr("type", "text");

								var _$phone = $("<input>")
									.attr("type", "text");

								var _$message = $("<textarea>")
									.attr("type", "text");

								var _$submit = $("<button>")
									.text("Отправить")
									.click
										(
											function ()
											{
												var _success = true;

												if (_$name.val() == "")
												{
													_$name.addClass("error");
													_success = false;
												}

												if (_$email.val() == "" && _$phone.val() == "")
												{
													_$email.addClass("error");
													_success = false;
												}

												if (_$message.val() == "")
												{
													_$message.addClass("error");
													_success = false;
												}

												if (_success)
												{
													$.post
														(
															"/shop/feedback.aspx",
															{
																Name: _$name.val(),
																Email: _$email.val(),
																Phone: _$phone.val(),
																Message: _$message.val()
															},
															function(_result)
															{
																_$form.html("Отправлено");
															}
														)

													_$form.html("Отправляю...");
												}

												return false;
											}
										)

								_$form
									.append
										(
											$("<div>")
												.append("Имя:")
												.append($("<br/>"))
												.append(_$name)
										)
									.append
										(
											$("<div>")
												.append("E-mail:")
												.append($("<br/>"))
												.append(_$email)
										)
									.append
										(
											$("<div>")
												.append("Телефон:")
												.append($("<br/>"))
												.append(_$phone)
										)
									.append
										(
											$("<div>")
												.append("Сообщение:")
												.append($("<br/>"))
												.append(_$message)
										)
									.append
										(
											$("<div>")
												.append(_$submit)
										)

								$('#mainShopContainer').append(_$form);
							}
						}
					)(jQuery);
				},
				OnServiceError);
		}
		else {
			window.location.hash = "";
			$j('#mainShopContainer').html(this.mainContent);
		}
	},
	showNextPart: function () {
		var d = $j("#loadRestDiv");
		var dheight = $j(document).height();
		var wheight = $j(window).height();
		var scrollTop = $j(window).scrollTop();
		//if (dheight - (scrollTop + wheight) < 250 && !shopData.isLoading && !shopData.isAllLoaded) {
		if (d.offset().top < ($j(window).scrollTop() + $j(window).height()) && !shopData.isLoading && !shopData.isAllLoaded) {
			shopData.isLoading = true;
			_pageNo = _pageNo + 1;
			PageMethods.GetFilterResultByHash(_subcatId, _pageNo, location.hash, shopFilter.onReceiveResult, OnServiceError, { append: true });
		}
	},
	credit: {
		calcModel: 2,
		durations: [10, 20, 30],
		rates: [16.65, 17.65, 18.65],
		cPercent: 3.25,
		clPercent: 0.7,
		cMin: 20,
		clMin: 5,
		getUsdPerMonth: function (sumUsd) {
			var c = ((sumUsd * this.cPercent) / 100 < this.cMin) ? this.cMin : (sumUsd * this.cPercent) / 100;
			var cl = ((sumUsd * this.clPercent) / 100 < this.clMin) ? this.clMin : (sumUsd * this.clPercent) / 100;
			var yearRate = this.rates[this.calcModel] / 1200;
			sumUsd = sumUsd + c;
			var rate = sumUsd * yearRate / (1 - (Math.pow(1 / (1 + yearRate), this.durations[this.calcModel])));
			rate = rate + cl;
			return Math.round(rate);
		}
	}
}

function HideGetCredit() {
	$j('.getCredit-popup').remove();

	createCookie('hideGetCreditPopup', true, 30);
}
