//main js class

//Constructor:
function jsApp() {
	this.BlockWantKnowMoreId = '#want-know-more-block';
	this.BlockBasket = '.catalog_basket';
	
	this.BlockDinamicMenu = '#ajax-dinamic-menu';
	this.BlockCatalogTypes = '#types-menu';
	
	this.CatalogShowType = '';
	this.maxPrice = 0;
	
	this.basketUrl = "/personal/basket/";
	this.baskQuant = 1;
	
	this.timerSuggest = false;
	
	this.RestContainer = '.restContainer';
}

//Methods:
jsApp.prototype = {
	//Показывает инф. блок загрузки
	ShowLoader: function(lid, parent) {
		$('<img id="' + lid + '" src="/bitrix/templates/termopotok/img/ajax-loader.gif" title="Идет загрузка данных..." />').prependTo(parent);
		return true;
	},
	//Скрывает инф. блок загрузки
	HideLoader: function(lid) {
		$('#' + lid).remove();
		return true;
	},
	//показывает\скрывает блок "Хочу знать больше"
	ShowBlockWantKnowMore: function() {
		$(this.BlockWantKnowMoreId).toggle();
	},
	//показывает\скрывает блок "Хочу знать больше"
	ShowBlockBasket: function() {
		$(this.BlockBasket).toggle();
	},
	//функция показывает меню каталога в 3-х режимах
	ShowCatalogMenuBy: function(mode, section, obj) {
		if(this.CatalogShowType == mode && obj != false) { 
			return false;
		} else { 
			this.CatalogShowType = mode;
		}
		
		if(obj != false) {
			$(this.BlockCatalogTypes).find('.active').removeClass('active');
			$(obj).parent().addClass('active');
		}
		
		var thisObj = this;
		var params = 'mode=' + mode;
		
		if(section != "undefined" && section != "") {
			params +=  '&section=' + section;
		}
		
		$.ajax({
			async: true,
			data: params,
			url: '/bitrix/ajax/ShowCatalogMenuBy.php', 
			beforeSend: function() {
				$('#ajax-dinamic-menu').html('');
				thisObj.ShowLoader('catalogAjaxLoader', $('#ajax-dinamic-menu'));
			},
			success: function(msg){
				$(thisObj.BlockDinamicMenu).html(msg);
				
				//временное решение
				$(thisObj.BlockDinamicMenu).find('a.s_active').next('ul').show();
				$(thisObj.BlockDinamicMenu).find('a.s_active').parent().parent().show().parent().parent().show();
				
				thisObj.HideLoader('catalogAjaxLoader');
			}
		});
	},
	//добавление товара в корзину
	AddToBasket: function(id, obj) {
		var thisObj = this;
		var bck;
		if($(obj).attr('class') != 'inbasket') {
		
			$.ajax({
				async: true,
				data:'id=' + id + '&action=ADD2BASKET&q=' + this.baskQuant,
				url: '/bitrix/ajax/ajaxBasket.php', 
				beforeSend: function() {
					$(obj).attr('class', 'ajaxloader');
				},
				success: function(msg){
					var result = eval('(' + msg + ')');
					$('.qbasketvalue').html(result.quantity);
					$('.sbasketvalue').html(result.summ);
					if(typeof(result.new_item) == 'object') {
						$('#dinamic_basket_bottom').find('.not_item').remove();
						$(result.new_item.html).appendTo($('#dinamic_basket_bottom').find('tr'));
					}
					$(obj).attr('class', 'inbasket');
					$(obj).children('span').html('Товар добавлен в заказ');
					if($(obj).parent().hasClass('kartochka_buy')) {
						thisObj.GoInBask();	
					}
					$(obj).blur();
					
					//обновляем слайдер нижней корзины
					SliderBasket.SliderInit();
				}
			});
			
		} else {
			window.location = "http://" + thisObj.Domain + "/personal/basket/";
		}
		
		return false;
	},
	//добавление товара в корзину и перенаправление на корзину
	AddAndMakeOrder: function(id, obj) {
		var thisObj = this;
		$.ajax({
			async: true,
			data: 'id=' + id + '&action=ADD2BASKET&q=' + this.baskQuant,
			url: '/bitrix/ajax/ajaxBasket.php', 
			success: function(msg){
				window.location = thisObj.basketUrl;
			}
		});
		return false;
	},
	//манипулирование с количеством товарной позиции в корзине
	ActionWithQuantity: function(pid, action, obj) {
		var q = $(obj).parent().children("input").val();
		
		if(action == "+") {
			q++;
		} else if(action == "-") {
			if(q > 1) q--;
		}
		
		if(q <= 0 && action != "del") {
			$(obj).parent().children("input").val(1);
			q = 1;
		} else if (q > 0 && action == "del") {
			$(obj).parent().children("input").val(0);
			q = 0;
		}
		
		$.ajax({
			async: true,
			data: 'id=' + pid + '&action=UPDONEMORE&q=' + q,
			url: '/bitrix/ajax/ajaxBasket.php', 
			success: function(msg){
				var result = eval('(' + msg + ')');
				if(action == "del") {
					if($(obj).parents('#dinamic_basket_bottom').length > 0) {
						if($('#dinamic_basket_bottom td').length == 1) {
							$(obj).parent().parent().parent().addClass('not_item').html('Ваш заказ пуст');
						} else {
							$(obj).parent().parent().parent().remove();
						}
					} else {
						$(obj).parent().parent().remove();
						if($('#zakazTable tr').length == 1){
							$('#zakazTable').remove();
							$('.mybasket').css('color', 'red').html('Ваш заказ пуст');
						}
					}
					
					//обновляем слайдер нижней корзины
					SliderBasket.SliderInit();
				} else {
					if($(obj).parents('#dinamic_basket_bottom').length <= 0) {
						$(obj).parent().parent().find(".prod-summ").html(result.prod);
					}
					$(obj).parent().children("input").val(result.quant);
				}
				
				$('.qbasketvalue').html(result.all_quantity);
				$('.sbasketvalue').html(result.summ);
				
				$('#resultP').html(result.summ);
				
				if(parseInt(result.discountSize.replace(' ','')) > 0){					
					$('#discountSize').html(result.discountSize);
					$('#discountPercent').html(result.discountPercent);
					$('#discountOrderBlock').show();
				} else {
					$('#discountOrderBlock').hide();	
				}
				
			}
		});
		return false;
	},
	//сбор товаров для сравнения
	ActionProductCompare: function(eid, obj) {
		var actClass = $(obj).attr('class');
		if(actClass == "minus") {
			$(obj).attr('class', "plus");
			var act = 'DELETE_FROM_COMPARE_LIST';
		} else {
			$(obj).attr('class', "minus");
			var act = 'ADD_TO_COMPARE_LIST';
		}
		$(obj).children('span').toggle();
		$.ajax({
			async: true,
			data: 'pid=' + eid + '&action=' + act,
			url: '/bitrix/ajax/PutForCompare.php'
		});
	},
	//скрытие\раскрытие фильтра
	ShowHideProps: function(el, obj) {
		$('.filter_more').show();
		
		$(obj).toggleClass('arrow_up');		
		$(el).toggle();
		
		//если отображен хотя бы один блок, то скрываем контейнер свойств
		if(!$('#filterContainer > div:visible').length > 0){
			$('.filter_more').hide();
		}
	},
	//функция проверки остатка на складе
	GetProductRest: function(pid, obj, bid){
		var thisObj = this;
		var quantity = $(obj).parents('tr').find('input.qProd').val();
		
		$.ajax({
			type: 'post',
			data: 'pid='+pid+'&q='+quantity+'&bid='+bid,
			url: '/bitrix/ajax/GetProductRest.php',
			beforeSend: function(){
				$(obj).parent().find(thisObj.RestContainer).html('<img src="/bitrix/templates/termopotok/img/ajax-loader.gif" />');	
			},
			success: function(msg){					
				$(obj).parent().find(thisObj.RestContainer).html(msg);
			}
		});
		return false;
	},
	//
	FormSubmit: function(obj){
		$(obj).parents('form').submit();
	},
	//
	FormReset: function(obj){
		var fid = $(obj).parents('form').attr('id');		
		document.getElementById(fid).reset();
	},
	//
	ClearBasket: function(obj){
		$('input[name^=DELETE]').val('Y');
		this.FormSubmit(obj);
	},
	GoInBask: function(){	
		if($('#popupBasket').length > 0){
			//ширина и высота минимального изображения, до которого необходимо уменьшить фотографию при полете
			var smallSize = 50;
		
			//копируем контейнер
			var pBask = $('#popupBasket').clone();
			$('#popupBasket').remove();
			
			//переместим контейнер с фото в боди
			$(pBask).appendTo('body');
			
			//вычисляем размеры текущей картинки
			var wOld = $('#mainPic > img').attr('width');
			var hOld = $('#mainPic > img').attr('height');		
			
			//вычисляем размеры получившейся картинки
			var w = this.BaskPopupW;
			var h = this.BaskPopupW;	
			
			//вычисляем смещение при увеличении
			var m_left = (wOld-w) / 2;
			var m_top = (hOld-h) / 2;
			
			//вычисляем смещение при увеньшении
			var smallLeft = w - smallSize;
			var smallTop = h - smallSize;
			
			//вычислим позицию текущей главной фотографии
			var offset = $('#mainPic > img').offset();
			
			//расположим плавающий слой над нашей фотографией
			$(pBask).css({'left':offset.left, 'top': offset.top}).show();
			
			//увеличим изображение в контейнере		
			$(pBask).animate({'margin-left': m_left+'px', 'margin-top': m_top+'px'}, 500).children('img').animate({'width': w+'px', 'height': h+'px'}, 500,function(){
				//вычисляем расположение корзины на странице			
				var baskOffset = $('.foot_show').offset();			
				
				//передвигаем изображение в корзину	
				$(pBask).animate({'top': baskOffset.top}, 400).children('img').animate({
					'width': smallSize+'px', 
					'height': smallSize+'px', 
					'margin-left': smallLeft+'px', 
					'margin-top': smallTop+'px'
				}, 200, function(){
					$(pBask).remove();
				});
			});
		}
	},	
	//функция установки стоимости доставки
	SetDeliveryPrice: function(pVal, container, className){
		if($(container).attr('class') == className){
			$(container).html(pVal);
		}
	}
}

//Create Object of Class
var Termopotok = new jsApp();
