$(init)
/* vars */
if( !console ) {
	var console = {};
	console.log = function() {
		return false;
	}
}
function getrandom(min,max){
	max++;
	var range = max - min;
  	var n=Math.floor(Math.random()*range) + min;
  	return n;
}
var kurs=1;
var page=false;
var IE=false;
var brickSelector;
var factorySort;
function sendRQ(pars){
	var ajaxSettings=jQuery.extend({
			dataType:'text',
			type:'post'
		}, pars);
	$.ajax(ajaxSettings);
}
function getrandom(min,max){
	max++;
	var range = max - min;
  	var n=Math.floor(Math.random()*range) + min;
  	return n;
}
var developMod=false;
var preHash;
/* */
function init(){
	$(".toggler").find("a").click(toggleVisible);
	$(".for_popup").click(togglePopup);
	initSearch();
	if ($("#popup_what_is_it").length>0) {whatIsItPosition($("#popup_what_is_it"));}
	if ($("body").hasClass("admin")){
		$('textarea.tinymce').tinymce({
			// Location of TinyMCE script
			script_url : '../js/tiny_mce/tiny_mce.js',
			language : "ru",
			theme : "advanced",
			skin : "default",
			file_browser_callback : "tinyBrowser",
			theme_advanced_toolbar_location : "top",
			theme_advanced_toolbar_align : "left"
		});
		$(".reload").click(function(){
			$($(this).attr("href")).show();
			$(this).hide();
			return false;
		})
		$(".addImageInput").click(addImageInput);
		if ($("#admin_main_partners").length>0){
			partnersList.init();
		}
		if ($("#goodtypePars").length>0){
			typeAndparslist.init();
		}
		if ($("#fAdditionalCost").length>0){
			initAdditionalCostCalc();
		}
		if ($(".goodList").length>0){
			var goodsBlock=$(".goodList");
			listsInterface(goodsBlock);
		}
		if ($(".ajaxImage").length>0){
			newsController.init();
		}
		var delcat=$(".delCat");
		if (delcat.length>0){
			delcat.click(function(){
				if (confirm("Вы действительно хотите удалить эту категорию товаров?")) {
					$("#id_del_id").val(this.id.split("_")[1]);
					document.delForm.submit();
				} 
			});
		}
		if ($(".goodSuperList").length>0){
			var goodsBlock=$(".goodSuperList");
			superController={
				add:function(good,length){
					var classname=".good_"+good.find(".goodId").val();
					$(classname).find(".fieldForSuper").val(length);
				},
				remove:function(good,length){
					var classname=".good_"+good.find(".goodId").val();
					$(classname).find(".fieldForSuper").val(length);
				}
			}
			goodInterface.addStar=function(event){
				var block=$(this).parent();
				var length=block.find(".oneStar").length;
				if(length<5){
					var tmp='<div class="oneStar"></div>';
					if (length<4){
						tmp+='<div class="createStar"></div>';
					}
				}	
				$(this).remove();
				block.append(tmp);
				var good=block.parent().parent();
				var clones=$(".good_"+good.find(".goodId").val()).not(good).find(".stars").html(block.html());
				var clone=good.clone().removeClass("hover");
				clone.hover(function(){
					$(this).addClass("hover");
				},function(){
					$(this).removeClass("hover");
				});
				$("#roughList").append(clone);
				$("#roughList").sortable('refresh');
				superController.remove(block.parent().parent(),length+1);
				goodListController.updatePosition();
			};
			goodInterface.removeStar=function(event){
				var block=$(this).parent();
				var length=block.find(".oneStar").length;
				if (length==5){
					tmp='<div class="createStar"></div>';
					block.append(tmp);
				}
				$(this).remove();
				var stars=block.html();
				var good=block.parent().parent();
				var clones=$(".good_"+good.find(".goodId").val()).not(good).find(".stars").html(stars);
				good.remove();
				superController.remove(block.parent().parent(),length-1);
				goodListController.updatePosition();
			}
			 goodListController.serialize=function(container){
				// var list=container.sortable("serialize");
				var childs=container.find(".cell");
				var list="";
				if (childs.length>0){
					list=childs.eq(0).find(".goodId").val();
					for (var i=1,length=childs.length;i<length;i++){
						list+="_"+childs.eq(i).find(".goodId").val();
					}
				}
				return list;
			}
			listsInterface(goodsBlock);
		}
		if ($(".newsList").length>0){
			$(".delete").click(function(){
				var msg="Вы уверены, что хотите удалить эту новость?"
				if (confirm(msg)){
					return true;
				} else {
					return false;
				}
			})
		}
		$(".oneInManual").find(".delete").click(function(){
				var msg="Вы уверены, что хотите удалить эту статью?"
				return confirm(msg);
			})
			
		$(".hasTitle").submit(function(){
			if ($(".bigInput").val()==""){
				alert("Введите название");
				return false;
			} else {
				return true;
			}
		});
		$("#onmain").click(function(){
			if ($(this).attr("checked")){
				$("#onmaintext").css({"visibility":"visible"});
			} else {
				$("#onmaintext").css({"visibility":"hidden"});
			}
		})
		if ($(".partnersForm").length>0){
			$(".partnersForm").submit(function(){
				var els=$(".elWeight");
				for (var i=0,length=els.length;i<length;i++){
					els.eq(i).val(i);
				}
			}).find("#partnersList").sortable({
				items: 'li',
				handle: '.handle',
				dropOnEmpty:true,
				zIndex:5000,
				axis:"y"
			});
			if (IE==6 || IE==7){
				$(".partnersForm").find("button").click(function(){
					var els=$(".elWeight");
					for (var ii=0,llength=els.length;ii<llength;ii++){
						els.eq(ii).val(ii);
					}
				})
			}
		}
		if ($("#charsEditForm").length>0){
			function setWeight(){
				var blocks=$(this).find(".charasterBlock");
				var els=blocks.find(".goodparweight");
				var lists=blocks.find(".fieldList");
				for (var i=0,length=blocks.length;i<length;i++){
					els.eq(i).val(i);
					fields=lists.eq(i).find(".weight");
					for (var i2=0,length2=fields.length;i2<length2;i2++){
						fields.eq(i2).val(i2);
					}
				}
			}
			$("#charsEditForm").submit(setWeight).find("#goodtypePars").sortable({
				items: '.charasterBlock',
				handle: '.handle',
				dropOnEmpty:true,
				zIndex:5000,
				axis:"y"
			}).find(".charasterBlock").sortable({
				items: 'li',
				containment: 'parent',
				handle: '.handle2',
				dropOnEmpty:true,
				zIndex:5000,
				axis:"y",
				tolerance: 'pointer'
			})
			if (IE==6 || IE==7){
				$("#charsEditForm").find("button").click(setWeight);
			}
		}
		if ($("#catWeight").length>0){
			function setCatWeight(){
				var els=$("#catWeight").find("input");
				for (var i=0,length=els.length;i<length;i++){
					els.eq(i).val(i);
				}
			}
			$("#catWeight").submit(setCatWeight).find("ul").sortable({
				items: 'li',
				containment: 'parent',
				handle: '.handle',
				dropOnEmpty:true,
				zIndex:5000,
				axis:"y",
				tolerance: 'pointer'
			});
			if (IE==6 || IE==7){
				$("#catWeight").find("button").click(setCatWeight);
			}
		}
	} else {
		if ($("#sklad").length>0){
			sklad_calculator.init();
		} else {
			$("body").bind("reSelect",createTitle);
			brickSelector=new coloncoSelector();
			brickSelector.init($("#bricksfilter"));
			brickSelector.adSort=true;
			factorySort=new additionalSorting($("#sorttype"),$("#bricksfilter"));
			
			
			var calc1pars={
				"quantity":$("#calculator_count"),
				"unit":$("#calculator_unit"),
				"costBlock":$("#calculator_r_cost"),
				"qInOther":true,
				"qBlock":$("#calculator_r_q"),
				"pars":{
					"second":{
						"cost":12.001,
						"unit":"м<sup>2</sup>",
						"round":0.01
					},
					"first":{
						"cost":5,
						"unit":"шт",
						"nofractional":true,
						"round":1
					}
				}
			}
			calc1pars.pars=parsePageForCalculator(calc1pars.pars);
			$("#brickCount").costCalc(calc1pars);
			var calc2Block=$("#brickCount2");
			if (calc2Block.length>0){
				var calc1pars={
					"quantity":$("#calculator_count"),
					"unit":$("#calculator_unit"),
					"costBlock":$("#calculator_r_cost"),
					"qInOther":false,
					"pars":{
						"first":{
							"cost":1*($("#bigprice").text()+$("#mediumprice").text()),
							"unit":calc2Block.find(".unit1").text(),
							"nofractional":true,
							"round":1
						}
					}
				}
			}
		}
		/* Проверка формы */
		var rules=[{
			rule:"noempty",
			id:"#clientName",
			msg:false
		},
		{
			rule:"noempty",
			id:"#clientPhone",
			msg:false
		}]
		$(".simpleCheck").submit(function(){
			return checkThisForm($(this),rules);
		}).find(".field").focus(clearError);
		$("#print_order").click(function(){
			window.print();
		});
	}
}
function initSearch(){
	var searchBlock=$("#search");
	var defaultText="Поиск";
	if (searchBlock.length!=0){
		var input=searchBlock.find("#text");
		input.focus(firstF).blur(secondF);
	}
	function firstF(){
		var input=$(this);
		if (input.val()==defaultText){
			input.val("");
		}
	}
	function secondF(){
		var input=$(this);
		if (input.val()==""){
			input.val(defaultText);
		}
	}
}
function whatIsItPosition(popup){
	var link=$(".what_is_it");
	var position=link.position();
	var popravka=0;
	if (IE){
		if (IE==7 ){
			popravka=0
		} else if (IE==6){
			popravka=15
		} else {
			popravka=-15
		}
	}	
	
	popup.css({
		"top":position.top-10-popup.innerHeight()+popravka,
		"left":position.left+link.innerWidth()+20,
		"visibility":"visible",
		"display":"none"
	})
}
function deleteParent(){
	$(this).parent().remove();
}
function submitParent(){
	$(this).parent().submit();
}
jQuery.fn.jsButtonDeleteParent=function(userOptions){
	var options=jQuery.extend({
		callback:false
	}, userOptions);
	var buttons=this;
	buttons.click(deleteParent);
	function deleteParent(event){
		var parent=$(this).parent();
		var id=parent[0].id;
		parent.remove();
		if (options.callback){
			options.callback(id);
		}
	}
}
jQuery.fn.jsButtonAddTpl=function(userOptions){
	var options=jQuery.extend({
		callback:false
	}, userOptions);
	var buttons=this;
	buttons.click(addBlock);
	function deleteParent(event){
		var parent=$(this).parent();
		var id=parent[0].id;
		parent.remove();
		if (options.callback){
			options.callback(id);
		}
	}
}
var typeAndparslist={
	init:function(){
		typeAndparslist.container=$("#goodtypePars");
		typeAndparslist.form=$("#goodtypePars").parent();
		$(".addLink").click(typeAndparslist.addParsBlock);
		$(".addPar").live("click",typeAndparslist.addPar);
		$(".delete").live("click",typeAndparslist.remove);
		
		typeAndparslist.container.find("input").blur(typeAndparslist.change);
		typeAndparslist.form.submit(typeAndparslist.checkForm);
		// console.log(typeAndparslist.container,$(".addLink"));
	},
	addParsBlock:function(){
		var message="Введите название характеристики"
		var names=$(".goodparname");
		var max=0;
		if (names.length>0){
			for (var i=0,length=names.length,k;i<length;i++){
				k=names.eq(i).attr("name").split(/[\[\]]/)[1];
				if (k>max){
					max=k;
				}
			}
			max++;
		}
		var tpl=typeAndparslist.getParsBlockTpl(max);
		var newBlock=$(tpl);
		newBlock.sortable({
				items: 'li',
				containment: 'parent',
				handle: '.handle2',
				dropOnEmpty:true,
				zIndex:5000,
				axis:"y",
				tolerance:'pointer'
		});
		typeAndparslist.container.append(newBlock);
		return false;
	},
	addPar:function(){
		var parent=$(this).parent();
		var parname=parent.find(".goodparname");
		var a="";
		if (parname.attr("id")) {
			a=parname.attr("id").split("_")[1];
		}else {
			a=parname.attr("name").split(/[\[\]]/)[1];
		}
		var list=parent.find("ul");
		var pars=list.find("input");
		var max=0;
		if (pars.length>0){
			for (var i=0,length=pars.length,k;i<length;i++){
				k=pars.eq(i).attr("name").split(/[\[\]]/);
				if(k.length>3){
					k=k[3];
					if (k>max){
						max=k;
					}
				}
			}
			max++;
		}
		var tpl=typeAndparslist.getParTpl(a,max);
		list.append(tpl);
		return false;
	},
	getParsBlockTpl:function(i){
		var tpl='<div class="charasterBlock">\
				<a href="#delete" class="delete deleteBlock" title="удалить"></a>\
				<input class="goodparname" type="text" name="goodparsnames['+i+']" value="" /><span class="handle">|||</span>\
				<input class="goodparweight" type="hidden" name="goodparsweight['+i+']" value="" />\
				<ul class="fieldList">\
					<li>\
						<a href="#delete" class="delete" title="удалить"></a>\
						<span class="handle2">|||</span>\
						<input class="field" type="text" value="" name="goodpars['+i+'][0]" />\
						<input class="weight" type="hidden" value="" name="goodparsweight1['+i+'][0]" />\
					</li>\
				</ul>\
				<a class="addPar smallLink" href="#add"><span>Добавить разновидность</span></a>\
			</div>';
		return tpl;
	},
	getParTpl:function(i,j){
		var tpl='<li>\
					<a href="#delete" class="delete" title="удалить"></a>\
					<span class="handle2">|||</span>\
					<input class="field" type="text" value="" name="goodpars['+i+']['+j+']" />\
					<input class="weight" type="hidden" value="" name="goodparsweight1['+i+']['+j+']" />\
				</li>';
		return tpl;
	},
	remove:function(){
		var input=$(this).parent().find("input").eq(0);
		var msg="Вы уверены, что хотите удалить\nэту разновидность?";
		if (input.hasClass("goodparname")){
			msg="Вы уверены, что хотите удалить\nэту характеристику?";
		}
		if (confirm(msg)){

			var parent=input.parent();
			if(input[0].id){
				var id=input[0].id.split("_")[1];
				if (input.hasClass("goodparname")){
//                    $.post("del_char.php", {par:id});
					input.attr("name","delPar[]");
					parent.find("ul").empty();
					$(this).parent().find(".goodparweight").remove();
				} else {
                    $.post("del_char.php", {znach:id});
					input.attr("name","delZnach[]");
					input.next().remove();
				}
				input.removeClass().addClass("del").val(id);
				parent.hide().removeClass();
			} else {
				input.parent().remove();
			}
		}
		return false;
	},
	change:function(){
		var input=$(this);
		if (this.id && input.attr("name")==""){
			var name="znach_rename";
			if (input.hasClass("goodparname")){
				name="par_rename";
			}
			input.attr("name",name+"["+this.id.split("_")[1]+"]");
		}
	},
	checkForm:function(){
		$(".toDelete").removeClass("toDelete");
		var charName=typeAndparslist.container.find(".goodparname");
		var msg="";
		var collect=$("body");
		for (var i=0,length=charName.length;i<length;i++){
			if (jQuery.trim(charName.eq(i).val()).length==0){
				charName.eq(i).parent().addClass("toDelete");
				msg="Разновидности характеристик, неимеющих названия, будут удалены.\n";
			}
		}
		var blocks=typeAndparslist.container.find(".fieldList");
		var input,flag,inputs;
		var k=false;
		for (i=0,length=blocks.length;i<length;i++){
			flag=true;
			inputs=blocks.eq(i).find(".field");
			if (inputs.length==0){
				flag=false;
				blocks.eq(i).parent().addClass("toDelete");
				k=true;
			} else {
				for (var j=0,jlength=inputs.length;j<jlength;j++){
					var flag2=false;
					if (jQuery.trim(inputs.eq(j).val()).length>0){
						flag2=true;
						break;
					}
				}
				if(!flag2){
					blocks.eq(i).parent().addClass("toDelete");
					k=true;
				}
			}
		}
		if (k){
			msg+="Характеристики неимеющие разновидностей будут удалены.\n"
		}
		if (msg){
			if (confirm(msg)){
				// $(".toDelete").remove();
			} else {
				$(".toDelete").removeClass("toDelete");
				return false;
			}
		}
	}
}
var partnersList={
	init:function(){
		partnersList.container=$("#partnersList");
		partnersList.container.click(function(event){
			var target=$(event.target);
			if (target.hasClass("delete")){
				partnersList.remove.apply(event.target,[event])
			} else if (target.hasClass("addImage")){
				partnersList.addImage.apply(event.target,[event])
			}
		})
		$(".addPartner").live("click",partnersList.addPartner);
		$(".submitLink").click(submitParent);
		partnersList.container.find("input").focus(partnersList.change);
	},
	addPartner:function(event){
		var partners=partnersList.container.find(".newURL");
		if (partners.length>0){
			var i,max=0,name;
			for (var i=0,length=partners.length;i<length;i++){
				name=partners.eq(i).attr("name");
				i=1*name.replace('newurl[','').replace(']','');
				if (i>max) max=i;
			}
			partnersList.container.append(partnersList.getTPLOnePartner(max+1));
		} else {
			partnersList.container.append(partnersList.getTPLOnePartner(0));
		}
		return false;
	},
	addImage:function(event){
		var partner=$(this).parent().parent();
		var input=$(this).parent().find("input");
		if (input.attr("name")=="" && input[0].id){
			input.attr("name","image["+input[0].id.split("_")[1]+"]");
		}
		input.show();
		$(this).hide();
		return false;
	},
	getTPLOnePartner:function(i){
		var tpl='<li class="onePartner newPartner">\
						<a href="#delete" class="delete" title="удалить"></a>\
						<span class="handle">|||</span><input title="Название" class="partnerName" type="text" value="" name="newname['+i+']" /><br/>\
						<input  title="Ссылка" class="newURL" type="text" value="" name="newurl['+i+']" />\
						<input id="" class="elWeight" type="hidden" value="" name="newweight['+i+']" /><br/>\
						<div><img src="../images/empty-image-small.jpg" />\
						<a class="addImage smallLink" href="#addImage">Загрузить картинку</a>\
						<input type="file" name="newimage['+i+']"></div>\
					</li>';
		return tpl;
	},
	change:function(){
		var input=$(this);
		if (this.id && input.attr("name")==""){
			var a=this.id.split("_");
			input.attr("name",a[0]+"["+a[1]+"]");
		}
	},
	remove:function(){
		var msg="Вы уверены, что хотите удалить\nэтого парнтёра из списка?";
		if (confirm(msg)){
			var block=$(this).parent();
			if (block[0].id){
				var tpl='<input type="hidden" name="del_list[]" value="'+block[0].id.split("_")[1]+'" />';
				block.empty().append(tpl).hide();
			} else {
				block.remove();
			}
		}
	}
}
/* ajax queue */
var ajaxQueue=function(){
	var self=this;
	self.last=false;
}
ajaxQueue.prototype={
	init:function(){
		var self=this;
	},
	push:function(response){
		var self=this;
		response.id=getrandom(1000,9999);
		self.last=response.id;
	},
	check:function(response){
		var self=this;
		var flag=false;
		if (response.id==self.last){
			flag=true;
		}
		return flag;
	}
};
var lazyLoad=function(){
	var self=this;
	self.last=false;
	var threadStatus=false;
	self.status=function(stat){
		if (stat) {
			if (self.status()!='active' && stat=='active'){
				// console.log('запуск',self.name,self);
				$("#bricksfilterresults").trigger('startLoad');
			} else if (self.status()=='active' && stat=='active') {
				// console.log('продолжение',self.name,self);
				$("#bricksfilterresults").trigger('continueLoad');
			} else if (stat=='cancel'){
				// console.log('отмена',self.name,self);
				$("#bricksfilterresults").trigger('cancelLoad');
			} else if (stat=='complete'){
				// console.log('завершение',self.name,self);
				$("#bricksfilterresults").trigger('completeLoad');
			}
			threadStatus=stat;
		} else {
			return threadStatus;
		}	
	};
}
lazyLoad.prototype={
	createThread:function(response){
		var self=this;
		self.data=jQuery.extend({
			page:0
		}, response);
		self.createResponse();
	},
	startThread:function(pars){
		var self=this;
		self.status('active');
		self.send();
	},
	completeThread:function(pars){
		var self=this;
		self.status('complete');
	},
	createResponse:function(){
		var self=this;
		self.data.page++;
		self.ajaxSettings={
			dataType:'json',
			type:'post',
			cache:true,
			url:self.data.url || '',
			data:self.data.pars+'&length=24&page='+self.data.page,
			success:function(data){
				var actual=false;
				if (self.data.condition) {
					if (self.data.condition(self)) {
						actual=true;
					} else {
						self.status('cancel');
					}
				}

				if (actual){
					data.page=self.data.page;
					self.data.callback(data);
				}
				
				if (self.status()!='cancel' && (page==0 || data.pages<self.data.page+1)){
					self.status('complete');
				}
				
				if (self.status()=='active'){
					self.status('active');
					self.createResponse();
					self.send();
				}
			}
		};
	},
	send:function(){
		var self=this;
		$.ajax(self.ajaxSettings);
	}
}
/* ColoncoSlector */
function coloncoSelector(){
	var self=this;
	var container;
	this.adSort=false;
	// self.number=0;
	self.q=new ajaxQueue();
}
var cache={};
coloncoSelector.prototype={
	init:function(cont){
		var self=this;
		cache.goodBlock=$("#FindingBricks");
		container=cont;
		container.find("li").click(clickArticle);
		container.bind("reSelect",self.getArticles);
		$(document.body).append('<img class="precache" src="/images/ajax-loader.gif">');
		var $loader1=$('<img src="/images/ajax-loader.gif" alt="Пожалуйста, подождите...">');
		var $loader2=$('<img src="/images/ajax-loader.gif" alt="Пожалуйста, подождите...">');
		$loader1.css({'display':'none'});
		$loader2.css({'display':'none'});
		self.q.init();
		$('#bricksfilterresults').prepend($loader1);
		$("#mainBricksList").after($loader2);
		$.browser.safari=false;
		$.historyInit(self.selectedFromURL,"http://ksm.indee.ru/brick.php");
		$("#bricksfilterresults").bind('startLoad',function(){
			$("#coloncoSelectorTitleResult").hide();
			$("#sorttype").hide();
			$loader1.show();
			$loader2.hide();
		});
		$("#bricksfilterresults").bind('continueLoad',function(){
			$loader1.hide();
			$loader2.show();
		});
		$("#bricksfilterresults").bind('cancelLoad',function(){
		
		});
		$("#bricksfilterresults").bind('completeLoad',function(){
			$loader1.hide();
			$loader2.hide();
			$("#coloncoSelectorTitleResult").show();
			$("#sorttype").show();
		});
		function clickArticle(){
			var parent=$(this).parent();
			var art=$(this);
			var flag2=art.hasClass("selected");
			if (art.hasClass("disabled")){
				container.find(".selected").removeClass("selected");
				container.find(".disabled").removeClass("disabled");
				$("#sorttype").find(".selected").removeClass("selected");
				art.addClass("selected");
			} else if (flag2){
				art.removeClass("selected");
			} else {
				var lastSelected=parent.find(".selected");
				lastSelected.removeClass("selected");
				art.addClass("selected");
			} 	
			self.setArticles();
			return false;
		}
	},
	selectedFromURL:function(hash){
		var pars=getParsFromURL();
		if (pars.length>0){
			container.find(".selected").removeClass("selected");
			$(pars).addClass("selected");
		}
		// brickSelector.setArticles();
		container.trigger("reSelect");
	},
	getPars:function(){
		var selected=container.find(".selected");
		var pars={};
		for (var i=0,length=selected.length,a,b;i<length;i++){
			a=selected[i].id;
			b=a.split("_");
			pars[b[0].replace("I","[").replace("J","]")]=b[1];
		}
		if (self.adSort){
			pars=self.modifiedPars(pars);
		}
		return pars;
	},
	setArticles:function(){
		var self=brickSelector;
		var selected=$("#bricksfilter").find(".selected");
		var catid = $("#bricksfilter").attr("catid");
		var pars=self.getPars();
		pars['cat'] = catid;
		pars=self.modifiedPars(pars);
		pars=decodeURIComponent(jQuery.param(pars));
		setURLpars(pars);
	},
	getArticles:function(event){
		var self=brickSelector;
		var response={};
		response.pars=document.location.hash.substr(1);
		response.url="getlist.php";
		response.condition=function(response){
			return self.q.check(response);
		}
		response.callback=function(data){
			self.parseAnswer(data);
		}
		cache.goodBlock.empty();
		var newResponse=new lazyLoad();
		// self.number++;
		// newResponse.name=self.number;
		newResponse.createThread(response);
		self.q.push(newResponse);
		newResponse.startThread();
	},
	modifiedPars:function(pars){
		// if (page=="brick"){
			var sorttype=$("#sorttype").find(".selected");
			if (sorttype.length!=0){
				var a=sorttype[0].id;
				var b=a.split("_");
				if (b[1]!="all"){
					pars[b[0].replace("I","[").replace("J","]")]=b[1];
				}
			}
		// }
		return pars;
	},
	parseAnswer:function(data){
		var visible=[];
		var k=0;
		
		if (data.page==1 && !data.bricks){
			$("#mainBricksList").hide();
			$("#coloncoSelectorTitleResult").text("Подобных товаров не найдено.");
		} else {
			cache.goodBlock.append("<div>"+data.bricks+"</div>");
		}
		
		if (data.page==1){
			$("#mainBricksList").show();
			if (data.factories){
				// factorySort.reinit();
				$("#sorttype").show().find(".sort-values").empty().append(data.factories);
			}	else {
				$("#sorttype").hide();
			}
			/* if (data.superItems && data.superItems.length!=0){
				$("#additionalBricksList").empty().append(data.superItems).css({"display":"block"});
			} */
			for (var i=0,length=data.menu.length;i<length;i++){
				for (var itemId in data.menu[i].values){
					visible[k]="#parI"+data.menu[i].id+"J_"+itemId;
					k++;
				}
			}
			var selector=visible.toString();
			container.find(".disabled").removeClass("disabled");
			container.find("li").not(selector).addClass("disabled");
		}
	}
}
function setURLpars(pars){
	// document.location.hash="#"+pars;
	$.historyLoad(pars); 
}
function getParsFromURL(){
	var a=document.location.href.split("#");
	var pars=false;
	if (a.length>1){
		a[1]=decodeURIComponent(a[1]);
		var b=a[1].split("&");
		pars=[];
		var k=0;
		for(var i=0,length=b.length;i<length;i++){
			if (b[i].split("=")[0]!="cat"){
				pars[k]="#"+b[i].replace("=","_").replace("[","I").replace("]","J");
				k++;
			}
		}
	}
	pars=pars.toString();
	if (developMod){
		// console.log(pars.toString());
	}
	return pars;
}
function additionalSorting(cont,mainSelector){
	var container=cont;
	var c=mainSelector;
	var items=container.find("a");
	items.live("click",clickIandSort);
	function clickIandSort(){
		container.find(".selected").removeClass("selected");
		$(this).addClass("selected");
		// c.trigger("reSelect");
		brickSelector.setArticles();
		return false;
	}
	this.reinit=function(){
		// var items2=container.find("a");
		// items2.click(clickIandSort);
		// console.log(items2);
	}
}
function createTitle(){
	var selectors1=$("#bricksfilter").find(".selected")
	var selectors2=$("#sorttype").find(".active").not("#factory_all");
	var selectors=selectors1.add(selectors2);
	var title="";
	title+=selectors.eq(0).text();
	for (var i=1,length=selectors.length;i<length;i++){
		title+=", "+selectors.eq(i).text();
	}
	// title=title.toLowerCase();
	if (title[0]){
		title=title[0].toUpperCase()+title.substr(1);
	}
	title=title.replace(/\s,/g,",");
	$("#coloncoSelectorTitleResult").empty().append(title);
}
function toggleVisible(){
	var block=$(this).parent();
	var hidden=block.find(":hidden");
	var showed=block.children().not(":hidden");
	hidden.show();
	showed.hide();
	return false;
}
function togglePopup(){
	var popup=$($(this).attr("href"));
	if (popup.css("display")=="none"){
		popup.show();
	} else {
		popup.hide();
	}
	return false;
}
function trimAll(string){
	var rg=/\s/g
	return string.replace(rg,'');
}
function parsePageForCalculator(pars){
	if (page=="oneBrick"){
		var firstPriceBlock=$("#onePrice");
		pars.first.cost=(1*(firstPriceBlock.find("#bigprice").text()+firstPriceBlock.find("#mediumprice").text()))*kurs;
		pars.first.unit=firstPriceBlock.find(".unit1").text();
		pars.first.round=1;
		var secondPriceBlocks=$("#littleprice");
		pars.second.cost=kurs*trimAll(secondPriceBlocks.find("span").eq(0).text());
		pars.second.unit=secondPriceBlocks.find(".secondUnitspan").text();
		pars.second.round=0.1;
		if ($('#calculator_r_q').length==0){
			pars.qInOther=false;
		}
	}
	return pars;
}
jQuery.fn.costCalc=function(userOptions){
	var options=jQuery.extend({
		callback:false,
		costRound:0.01
	}, userOptions);
	var calc=this;
	var q=options.quantity;
	// q.keydown(digitalFilter);
	q.keypress(digitalFilter);
	var unit=options.unit;
	var costBlock=options.costBlock;
	var pars=options.pars;
	// console.log(options);
	if (options.qInOther){	
		var qBlock=options.qBlock;
	}
	q.keyup(serialize);
	unit.change(serialize);
	if (options.pars['first'] && options.pars['first']['unit'].replace(".","")=="шт"){
		options.pars['first'].nofractional=true;
		options.pars['first'].round=1;
	} else {
		options.pars['first'].nofractional=false;
		options.pars['first'].round=0.01;
	}
	if (options.pars['second'] && options.pars['second']['unit'].replace(".","")=="шт"){
		options.pars['second'].nofractional=true;
		options.pars['second'].round=1;
	} else if(options.pars['second']){
		options.pars['second'].nofractional=false;
		options.pars['second'].round=0.01;
	}
	// if ($(this).length>0) 
	serialize();
	function serialize(){
		var a=q.val();
		if (a){
			a=a.replace(",",".");
		} else {
			a=0;
		}
		var b=unit.val();
		if (!b){
			b='first';
		}
		if (!isNaN(1*a)){
			if (options.pars && options.pars[b] && options.pars[b].nofractional){
				a=Math.round(1*a+0.4999);
			}
		} else {
			a=0;
		}
		calculate(a,b);
	}
	function calculate(vq,vunit){
		if (!pars[vunit]){
			vunit='first';
		}
		if (pars[vunit]){
			var result=vq*pars[vunit].cost;
			// console.log(vq,vunit,result);
			showCost(result,vunit);
			if (options.qInOther){
				var other=getOther(pars,vunit);
				var vq2=result/pars[other].cost;
				var result2=vq2;
				if (!isFinite(result2)){
					result2=0;
				}
				qInOther(result2,other);
				// console.log(pars,other,vq2,result2);
			}
		}
		function getOther(cost,vunit){
			var other=false;
			for (var type in cost){
				if (type!=vunit){
					other=type;
					break;
				}
			}
			return other;
		}
	}
	function showCost(result,type){
		var string=""+beautyNumber(sRound(result,options.costRound));
		costBlock.empty().append(string);
		calc.trigger("reCalculate");
	}
	function qInOther(result,type){
		var string=""+beautyNumber(sRound(result,pars[type].round))+" "+pars[type].unit;
		qBlock.empty().append(string);
	}
}
function beautyNumber(number){
		if (!isNaN(number)){
			number=""+number;
			var parts=number.toString().split(".");
			var intPart=parts[0].toString();
			var result="";
			var length=intPart.length;
			var b=length % 3;
			if (b==0) {b=3}
			result=intPart.substr(0,b);
			var c=intPart.substr(b);
			for (var i=0,length2=c.length;i<length2;i++){
				if ((i % 3) ==0){
					result+=" "+c.substr(0,3);
					c=c.substr(3);
				}
			}
		}
		if (parts && parts.length>1) {result=result+"."+parts[1]}
		return result;
}
jQuery.fn.quantityCalc=function(userOptions){
	var options=jQuery.extend({
		callback:false,
		costRound:0.01
	}, userOptions);
	var calc=this;
	var typeBlock=options.typeBlock;
	var areaBlock=options.areaBlock;
	typeBlock.change(changeCallback);
	areaBlock.keyUp(changeCallback);
	// вывод
	var firstBlock=options.pars.first.block;
	var secondBlock=options.pars.second.block;
	var costBlock=options.cost.block;
	// 
	function changeCallback(){
		var p=serialize();
		if (p){
			calculate(p);
		}
	}
	function serialize(){
		var pars={};
		pars.type=typeBlock.val();
		pars.area=areaBlock.val();
		if (!pars.type || !pars.area) pars=false;
		return pars;
	}
	function calculate(pars){
		var result={};
		showResult(result)
	}
	function showResult(result){
		var string1=""+sRound(result.first,options.pars.first.round);
		firstBlock.empty().append(string1);
		var string2=""+sRound(result.second,options.pars.second.round);
		secondBlock.empty().append(string2);
		var string3=""+sRound(result.cost,options.cost.round);
		costBlock.empty().append(string3);
	}
}
function sRound(n,k){
	k=1/k;
	var result=""+Math.round(n*k+0.49)/k;
	k1=""+k;
	var parts=result.split(".");
	if (parts.length>1 && parts[1].length<k1.length){
		var count=k1.length-parts[1].length-1;
		for (var i=0;i<count;i++){
			result=result+"0"
		}
	} else {
		if (k==100) result+=".00";
	}
	return result;
}

function digitalFilter(event){
	var key=event.keyCode==0? event.charCode: event.keyCode;
	// console.log(key,event.charCode,event.keyCode);
	var input=$(this);
	var value=input.val();
	var flag=true;
	if (key!=8 && key!=9 && key!=13){
		if (key==44 || key==46){
			if (value.indexOf(",")!=-1 || value.indexOf(".")!=-1 || value.length==0){
				flag=false;
			}
		} else {
			var s=String.fromCharCode(event.keyCode==0? event.charCode: event.keyCode);
			var reg=/[\d,.]/g
			flag=reg.test(s);
			!reg.test(s);
		}
	} else if (key==13){
		flag=false;
	}
	return flag;
}
function onlyDigitFilter(event){
	var key=event.keyCode==0? event.charCode: event.keyCode;
	// console.log(key,event.charCode,event.keyCode);
	var input=$(this);
	var value=input.val();
	var flag=true;
	if (key!=8 && key!=9 && key!=13){
		var s=String.fromCharCode(event.keyCode==0? event.charCode: event.keyCode);
		var reg=/[\d]/g
		flag=reg.test(s);
		!reg.test(s);
	} else if (key==13){
		flag=false;
	}
	return flag;
}
var sklad_calculator={
	init:function(){
		var parent=$(".articlesList");
		var goods=parent.find("tr");
		parent.bind("reCalculate",sklad_calculator.sum);
		for (var i=0,length=goods.length;i<length;i++){
			sklad_calculator.initOneCalc(goods.eq(i));
		}
	},
	initOneCalc:function(string){
		// console.log(string,string.find(".forCalcInfo"))
		var info=string.find(".forCalcInfo");
		var pars={};
		pars["quantity"]=string.find(".goodquantity");
		pars["unit"]=string.find(".goodunit");
		pars["costBlock"]=string.find(".articlesCost").find(".costSpan");
		pars["qInOther"]=false;
		pars["pars"]={};
		pars["pars"]["first"]={};
		pars["pars"]["first"]["cost"]=1*trimAll(info.find(".firstPrice").text())*kurs;
		pars["pars"]["first"]["unit"]=$(".goodunit").find('option').eq(0).text();
		pars["pars"]["first"]["unit"].replace(/\s/g,'');
		// pars["pars"]["first"]["unit"]=$(".goodunit").find('option').eq(0).text().trim();
		if ($(".goodunit").find('option').length>1){
			pars['pars']['second']={};
			pars['pars']['second']["cost"]=kurs*trimAll(info.find(".secondPrice").text());
			pars['pars']['second']["unit"]=$(".goodunit").find('option').eq(1).text();
			pars["pars"]['second']["unit"].replace(/\s/g,'');
		}
		// console.log(pars);
		string.costCalc(pars);
	},
	sum:function(){
		var parent=$(".articlesList");
		var costs=parent.find(".articlesCost").find(".costSpan");
		var s=0,v;
		for (var i=0,length=costs.length;i<length;i++){
			s+=1*costs.eq(i).text().replace(/\s/g,"");
		}
		$("#calcSum").empty().append(beautyNumber(sRound(s,0.01)));
	}
}
/* Проверка формы заказа */
function checkThisForm(form,rules){
	if (rules){
		$(".errorInField").removeClass("errorInField");
		var element,element2,msg;
		var a,b,c,m,flag=true,reg=true;
		for (var i=0,length=rules.length;i<length;i++){
			if (rules[i].rule=="noempty"){
				element=form.find(rules[i].id);
				a=element.val();
				if (a==""){
					errorMsg("noempty",element,rules[i].msg);
					flag=false;
				}
			} 
		}
		return flag;
	}
}
function clearError(){
	$(this).removeClass("errorInField");
}
function errorMsg(type,element,msg){
	element.addClass("errorInField");
}
/* админка - список - черновик */
var superController={
	add:function(good,length){
		good.find(".fieldForSuper").val(length);
	},
	remove:function(good,length){
		good.find(".fieldForSuper").val(length);
	}
}
var goodListController={
	updatePosition:function(){
		var mainlist=goodListController.serialize($("#mainList"));
		var roughlist=goodListController.serialize($("#roughList"));
		$("#fMainList").val(mainlist);
		$("#fRoughList").val(roughlist);
	},
	serialize:function(container){
		// var list=container.sortable("serialize");
		var childs=container.find(".cell");
		var list="";
		if (childs.length>0){
			list=childs.eq(0).attr("id").split("_")[1];
			for (var i=1,length=childs.length;i<length;i++){
				list+="_"+childs.eq(i).attr("id").split("_")[1];
			}
		}
		return list;
	}
}
var goodInterface={
	addStar:function(event){
		var block=$(this).parent();
		var length=block.find(".oneStar").length;
		if(length<5){
			var tmp='<div class="oneStar"></div>';
			if (length<4){
				tmp+='<div class="createStar"></div>';
			}
		}
		block.append(tmp);
		superController.add(block.parent().parent(),length+1);
		$(this).remove();
	},
	removeStar:function(event){
		var block=$(this).parent();
		var length=block.find(".oneStar").length;
		if (length==5){
			tmp='<div class="createStar"></div>';
			block.append(tmp);
		}
		superController.remove(block.parent().parent(),length-1);
		$(this).remove();
	},
	deleteGood:function(event){
		var msg="Вы уверены, что хотите удалить этот товар из списка?";
		if (confirm(msg)){
			if ($(this).parent().parent()[0].id){
				var value=$("#fDeleteList").val();
				if (value=="-1"){ 
					value=""; 
				} else {
					value+="_";
				}
				value+=$(this).parent().parent()[0].id.split("_")[1];
				$("#fDeleteList").val(value);
			}
			$(this).parent().parent().remove();
			goodListController.updatePosition();
		}
		return false;
	},
	reHeight:function(){
		if (IE==6){
			var l1=$("#mainList").css({"height":"auto"});
			var l2=$("#roughList").css({"height":"auto"});
			var h1=l1.height();
			var h2=l2.height();
			if (h1>h2){
				l2.css({"height":h1})
			} else {
				l1.css({"height":h2})	
			}
		} else {
			var l1=$("#mainList").css({"min-height":0});
			var l2=$("#roughList").css({"min-height":0});
			var h1=l1.height();
			var h2=l2.height();
			if (h1>h2){
				l2.css({"min-height":h1})
			} else {
				l1.css({"min-height":h2})	
			}
		}
	}
}
var sortController={
	updateList:function(event,ui){
		ui.item.removeClass("hover");
		var goodId=ui.item.attr("id").split('_')[1];
		var list=$(this).sortable('serialize','good');
		if (ui.sender==null){
			// сортировка
			ui.item.trigger("listSort");
			goodListController.updatePosition();
		} else {
			// добавление
			ui.item.trigger("listAdd");
			goodListController.updatePosition();
		}
		goodInterface.reHeight();
	},
	inRough:function(event,ui){
		if (ui.sender!=null){
			var goodId=ui.item.attr("id").split('_')[1];
			goodListController.updatePosition();
		}
	}
}
function listsInterface(goodsBlock){
	var goods=goodsBlock.find(".cell");
	goods.bind("mouseenter",function(){
		$(this).addClass("hover");
	}).bind("mouseleave",function(){
		$(this).removeClass("hover");
	});
	/* кнопки товара */
	var starsBlock=goods.find(".stars");
	var createStar=starsBlock.find(".createStar");
	var star=starsBlock.find(".oneStar");
	var deleteButton=goods.find(".deleteGood");
	
	createStar.live("click",goodInterface.addStar);
	star.live("click",goodInterface.removeStar);
	deleteButton.live("click",goodInterface.deleteGood);
	/* работа со списками   */
	goodInterface.reHeight();
	$("#mainList").sortable({
		connectWith: '.oneGoodList',
		items: 'li',
		helper: 'img',
		dropOnEmpty:true,
		helper:'clone',
		update:sortController.updateList
	});
	$("#roughList").sortable({
		connectWith: '.oneGoodList',
		items: 'li',
		helper: 'img',
		dropOnEmpty:true,
		helper:'clone',
		zIndex:5000,
		update:sortController.inRough
	});
}
function initAdditionalCostCalc(){
	var costPars={
		"1":{
			first:1,
			hasSecond:true,
			second:2,
			formula:function(l,t,h){
				var q=Math.round(1000000/((l+10)*(h+10)));
				return q;
			}
		},
		"2":{
			first:1,
			hasSecond:true,
			second:3,
			formula:function(l,t,h){
				var q=Math.round(1000000000/((l+10)*(t+10)*(h+10)));
				return q;
			}
		},
		"3":{
			first:1,
			hasSecond:true,
			second:3,
			formula:function(l,t,h){
				var q=Math.round(1000000000/(l*t*(h+10)));
				return q;
			}
		},
		"4":{
			first:1,
			hasSecond:true,
			second:2,
			formula:function(l,t,h){
				var q=Math.round(1000000/((l+10)*(t+10)));
				return q;
			}
		},
		"5":{
			first:1,
			hasSecond:true,
			second:2,
			formula:function(l,t,h){
				var q=Math.round(1000000/((l+10)*(h+10)));
				return q;
			}
		},
		"6":{
			first:3,
			hasSecond:true,
			second:1,
			formula:function(l,t,h){
				var q=Math.round(1000000000/((l+10)*(t+10)*(h+10)));
				return 1/q;
			}
		},
		"7":{
			first:2,
			hasSecond:true,
			second:1,
			formula:function(l,t,h){
				var q=3;
				return 1/q;
			}
		},
		"8":{
			first:1,
			hasSecond:false
		},
		"9":{
			first:1,
			hasSecond:true,
			formula:false,
			second:2,
		}
	}
	var number=getFormulaNumber($("#formulaNumber").val());
	var costBlock1=$("#fMainCost1");
	var costBlock2=$("#fMainCost2");
	var lengthBlock=$("#fLength");
	var thickBlock=$("#fThickness");
	var heightBlock=$("#fHeight");
	var resultBlock=$("#fAdditionalCost");	
	setCalcPars(number);
	if (costPars[number].hasSecond) {
		reCalculate();
	}
	costBlock1.keyup(reCalculate).keypress(onlyDigitFilter);
	costBlock2.keyup(reCalculate).keypress(onlyDigitFilter);
	lengthBlock.keyup(reCalculate);
	thickBlock.keyup(reCalculate);
	heightBlock.keyup(reCalculate);
	$("#formulaNumber").change(function(){
		number=getFormulaNumber($(this).val());
		setCalcPars(number);
		if (costPars[number].hasSecond) {
			reCalculate();
		}
	});
	function setCalcPars(n){
		// console.log(n);
		var type=costPars[n];
		$("#firstCostUnit").removeClass().addClass("forUnit"+type.first);
		$("#fUnit1").val(-1+1*type.first);
		if (type.hasSecond){
			$("#secondCostUnit").removeClass().addClass("forUnit"+type.second).show();
			$("#secondCostQ").show();
			$("#fUnit2").val(-1+1*type.second);
		} else {
			$("#secondCostUnit").hide();
			$("#secondCostQ").hide();
			$("#fUnit2").val("-1");
			resultBlock.val("-1")
		}
		if (!type.formula){
			$("#secondCostQ").find('input').removeClass('readonly').attr('readonly','');
		} else {
			$("#secondCostQ").find('input').addClass('readonly').attr('readonly','readonly');
		}
	}
	function reCalculate(){
		if (!!costPars[number].formula){
			var cost=1*costBlock1.val()+1*costBlock2.val()/100;
			if (isNaN(cost)){cost=0};
			var l=1*lengthBlock.val();
			if (isNaN(l)){l=0};
			var t=1*thickBlock.val();
			if (isNaN(t)){t=0};
			var h=1*heightBlock.val();
			if (isNaN(h)){h=0};
			var result=sRound(cost*costPars[number].formula(l,t,h),0.01);
			resultBlock.val(result);
		}
	}
	function getFormulaNumber(val){
		var intervals=[0,1,7,8,9,10,14,16,50];
		for (var i=1,length=intervals.length;i<length;i++){
			if(val<intervals[i]){
				break;
			}
		}
		var result=i;
		return result;
	}
}
var newsController={
	init:function(){
		$("#loading")
			.ajaxStart(function(){
				$(this).show();
			})
			.ajaxComplete(function(){
				$(this).hide();
			});
		$(".deleteWA").bind("click",function(){
			var imageNameFull=$(this).parent().find("img").attr("src").split("/");
			var imageName=imageNameFull[imageNameFull.length-1];
			var msg="Вы уверены, что хотите удалить это изображение?";
			if (confirm(msg)){
				if ($(this).attr("rel")!=""){
					var imageId=$(this).attr("rel");
					newsController.deleteImage(imageId);
					$(this).parent().remove();
				}
			}
			return false;
		});
		
	},
	showImage:function(src,id){
		var tpl=$('<div><a rel="'+id+'" href="#delete" class="deleteWA" title="удалить"></a>\
					<img src="../images/news/'+src+'" /></div>');
		tpl.find(".deleteWA").bind("click",function(){
			var imageNameFull=$(this).parent().find("img").attr("src").split("/");
			var imageName=imageNameFull[imageNameFull.length-1];
			var msg="Вы уверены, что хотите удалить это изображение?";
			if (confirm(msg)){
				if ($(this).attr("rel")!=""){
					var imageId=$(this).attr("rel");
					newsController.deleteImage(imageId);
					$(this).parent().remove();
				}
			}
			return false;
		});			
		$("#imagesBlock").append(tpl);
	},
	addImage:function(){
		var inputId=this.id;
		var newsId=$("#news_id").val();
		$.ajaxFileUpload({
			url:'image_action.php?action=add&news_id='+newsId, 
			secureuri:false,
			fileElementId:inputId,
			dataType: 'json',
			success: function (data, status){
				if(typeof(data.error) != 'undefined'){
					if(data.error != ''){
						alert(data.error);
					}else{
						newsController.showImage(data.msg,data["im_id"]);
					}
				}
			},
			error: function (data, status, e){
				alert(e);
			}
		});
		$(this).remove();
		return false;
	},
	deleteImage:function(idimage){
	
			var newsId=$("#news_id").val();
			var pars={
				data:{
					"news_id":newsId,
					"id":idimage,
					"action":"delete"
				},
				url:'image_action.php',
				dataType:'text',
				type:'get'
			}
			$.ajax(pars);

	}
}
function addImageInput(event){
	var block=$($(this).attr("href"));
	var newinput;
	if($(this).attr("rel")=="ajax") {
		newinput=$(getTplAjax());
		newinput.change(newsController.addImage);
	} else {
		newinput=$(getTpl());
		newinput.find(".deleteInput").bind("click",function(){
			$(this).parent().remove();
			return false;
		});
	}
	block.append(newinput);
	function getTpl(i){
		var tpl='<div style="overflow:hidden;clear:left;"><input id="image_'+getrandom(1000,9000)+'" type="file" name="image[]" style="float:left" /><a href="#delete" style="float:left" class="delete deleteInput" title="удалить"></a><br/></div>';
		return tpl;
	}
	function getTplAjax(i){
		var tpl='<input id="image_'+getrandom(1000,9000)+'" type="file" name="image" /><br/>';
		return tpl;
	}
	function getNumber(){
		var input=block.find("input");
		var max=0;
		if (input.length>0){
			for (var i=0,length=input.length,a;i<length;i++){
				a=1*input.eq(i).attr("name").split(/[\[\]]/)[1];
				if (a>max){
					max=a;
				}
			}
			max=max+1;
		}
		return max;
	}
	return false;
}