//main js actions

var jsApp = function() {
	
	this.baskQuant = 1;
	this.sectionsBlock = '#subSection_'; //это блоки разделов, которые раскрываются и закрываются
	this.elementsBlockOut = '#subElements_'; //в этот блок выводятся подгруженные элементы
	this.basketUrl = '/shop/basket/';
	this.Configurator = false;
	this.activeSubElements = Array();
	
	//function: скрывает - раскрывает разделы каталога >
	this.toggleGroup = function(sectionId, thisObj) { 
		$(this.sectionsBlock + sectionId).toggle();
		$(this.elementsBlockOut + sectionId).toggle();
		$(thisObj).toggleClass('selected');
	}
	
	//function: подгружает элементы из раздела последнего уровня >
	this.toggleElements = function(iblockType, iblockId, sectionId) {
		var gObj = this;
		var outE = gObj.elementsBlockOut + sectionId;
		if($(outE).children('.c_elems').length <= 0) {
			$.ajax({
				async: true,
				data: 'SECTION_ID=' + sectionId + '&IBLOCK_TYPE=' + iblockType + '&IBLOCK_ID=' + iblockId,
				url: '/bitrix/ajax/getSectionElements.php', 
				beforeSend: function() {
					gObj.showLoader('elements_' + sectionId, outE);
				},
				success: function(msg){
					var elems = eval('(' + msg + ')');
					var outHtml = "<table class='c_elems'>";
					for(var key_e in elems) {
						outHtml += "<tr class='c_" + (elems[key_e].iinb ? "inner" : "outer") + "'>";
						outHtml += "<td class='c_chkb'>";
						outHtml += "<input type='checkbox' name='" + elems[key_e].elid + "' value=''" + (elems[key_e].iinb ? " disabled='disabled'" : "") + " />";
						outHtml += "</td>";
						//outHtml += "<td class='c_lang'>" + elems[key_e].lang + "</td>";
						outHtml += "<td class='c_code'>" + elems[key_e].code + "</td>";
						outHtml += "<td class='c_name'>" + elems[key_e].name + "</td>";
						outHtml += "<td class='c_quant'><input type='text' value='1' size='2' maxlength='4' /></td>";
						outHtml += "<td class='c_pusa'>" + elems[key_e].pusa + "</td>";
						outHtml += "<td class='c_prus'>" + elems[key_e].prus + "</td>";
						outHtml += "<td class='c_buyl'>";
						outHtml += "<a href='javascript:void(0);' onclick='javascript:KMicro.AddToBasket(" + elems[key_e].elid + ", this);' class='basket_buy'>";
						outHtml += "<img src='/bitrix/templates/kvazarmicro/img/blank.gif' />";
						outHtml += "</a>";
						outHtml += "</td>";
						outHtml += "</tr>";
					}
					outHtml += "</table>";
					gObj.hideLoader('elements_' + sectionId);
					$(outE).html(outHtml);
				}
			});
		}
	}
	
	//function: ShowLoader();
	this.showLoader = function(lid, obj) {
		$('<span id="' + lid + '" class="loader"></span>').appendTo($(obj));
	}
	
	//function: HideLoader();
	this.hideLoader = function(lid) {
		$('#' + lid).remove();
	}
	
	//function: AddToBasket();
	this.AddToBasket = function(id, obj) {
		var gObj = this;
		this.baskQuant = $(obj).parent().parent().find('.c_quant').children('input').val();
		$.ajax({
			async: true,
			data:'id=' + id + '&action=ADD2BASKET&q=' + this.baskQuant,
			url: '/bitrix/ajax/ajaxBasket.php', 
			beforeSend: function() {
				$(obj).hide();
				gObj.showLoader('basket_' + id, $(obj).parent());
			},
			success: function(msg){
				var result = eval('(' + msg + ')');
				c_parent = $(obj).parents('tr');
				c_parent.attr('class', 'c_inner').find('.c_chkb > input').attr('disabled', 'disabled');
				$('.minibasket').find('.minibasketright').html(result.quantity + "<br />" + result.summ);
				gObj.hideLoader('basket_' + id);
				$(obj).show();
			}
		});
		return false;
	}
	
	//function: AddAndMakeOrder();
	this.AddAndMakeOrder = function(single_obj) {
		var Ids = Array();
		var gObj = this;
		
		if(single_obj) {
			Ids.push(single_obj);
		} else {
			$('table.c_elems input[type=checkbox]:checked').each(function() {
				Ids.push($(this).attr('name'));
			});
		}
		
		$.ajax({
			async: true,
			data: 'id[]=' + Ids.join('&id[]=') + '&action=ADD2BASKET&q=' + this.baskQuant,
			url: '/bitrix/ajax/ajaxBasket.php', 
			success: function(msg){
				window.location = gObj.basketUrl;
			}
		});
		return false;
	}
	
	//function: ShowActiveSubElements();
	this.ShowActiveSubElements = function() {
		for(a_key in this.activeSubElements) {
			
			$(this.activeSubElements[a_key]).show();
			$(this.activeSubElements[a_key]).parent('li').find('a').addClass("selected");
			
			var a_parents = this.activeSubElements[a_key].parents('ul');
			for(i = 0; i <= a_parents.length-1; i++) {
				$(a_parents[i]).show().prev('li').find('a').addClass("selected");
			}
			
		}
	}
	
}

var KMicro = new jsApp();

var jsCon = function() {
	
	//Configurator >
	this.bodys = Array();
	this.links = Array();
	this.curStep = 0;
	this.cntStep = 0;
	
	//function: ConfiguratorInit();
	this.Init = function() {
		
		var gObj = this;
		
		this.cntStep = $('#steps a').length;
		
		$("#steps a").each(function() {
			gObj.links.push(this);
		});
		
		$('#body > div.step').each(function() {
			gObj.bodys.push(this);
		});
		
		this.ShowStep(this.curStep);
	}
	
	//function: checkFirstStepAnswer();
	this.checkFirstStepAnswer = function(step) {
		var elems = $(this.bodys[0]).find('input:checked');
		if(elems.length > 0 && (step == 1 || step == 2)) {
			if(elems.val() == "ln") {
				return false;
			} else {
				return true;
			}
		} else {
			return true;
		}
	}
	
	//function: ConfiguratorShowStep();
	this.ShowStep = function(step) {
		
		if(step == "prev") {
			if(this.curStep - 1 < 0) {
				step = 0;
			} else {
				step = this.curStep - 1;
			}
		} else if(step == "next") {
			if(this.curStep + 1 >= this.cntStep) {
				step = this.curStep;
			} else {
				step = this.curStep + 1;
			}
		}
		
		if(this.checkFirstStepAnswer(step)) {
			this.HideStep(this.curStep);
			this.curStep = step;
			$(this.bodys[step]).show();
			$(this.links[step]).addClass("selected");
		} else {
			if(step > this.curStep) {
				this.ShowStep(step + 1);
			} else {
				this.ShowStep(step - 1);
			}
		}
		
	}
	
	//function: ConfiguratorHideStep();
	this.HideStep = function(step) {
		$(this.bodys[step]).hide();
		$(this.links[step]).removeClass('selected');
	}
	
	//function: ConfiguratorShowResult();
	this.ShowResult = function() {
		var ar = Array();
		$.each(this.bodys, function(key){
			el = $(this).find('input:checked');
			if(el.length > 0) {
				ar.push(el.val());
			}
		});
		
		var result = ar.join('-');
		
		$.ajax({
			async: true,
			data: "code=" + ar.join('-'),
			url: '/bitrix/ajax/getConfiguratorResult.php', 
			success: function(msg){
				$('#result').html(msg);
			}
		});
	}
	
}

var jsConO = function() {
	
	//Configurator >
	this.basketUrl = '/shop/basket/';
	
	//function: AddAllToBasket();
	this.AddAllToBasket = function() {
		var vals = Array();
		var gObj = this;
		$("#configurator").find("input").each(function() {
			if($(this).val() != "" && $(this).val() != 0) {
				vals.push("vars[" + $(this).attr("name") + "]=" + $(this).val());
			}
		});
		if(vals.length > 0) {
			$.ajax({
				async: true,
				data: vals.join('&') + '&action=ADDALL2BASKET',
				url: '/bitrix/ajax/ajaxBasket.php', 
				success: function(msg){
					window.location = gObj.basketUrl;
				}
			});
		}
		return false;
	}
}