var lastrnd=0;
var autorefresh=true;
var working=false;

Array.prototype.size = function () {
	var l = this.length ? --this.length : -1;
	for (var k in this) {
		l++;
	}
	return l;
}

function check(ch) {
	var isDisable = ch.parent().hasClass('disparam');
	if (!working && !isDisable) {
		working=true;
		var isChecked = ch.attr('checked');
		if (isChecked) {
			if (ch.parent().hasClass('inpany')) {
				if (ch.parent().hasClass('anybrand')) {
					ch.parent().parent().parent().parent().find("li").removeClass('checked');
					ch.parent().parent().parent().parent().find("input[type=checkbox]").attr('checked',false);
				}else{
					ch.parent().parent().children("li").removeClass('checked');
					ch.parent().parent().find("input[type=checkbox]").attr('checked',false);
				}
				ch.attr('checked',true);
			}else{
				if (ch.parent().parent().children("li:first").hasClass('inpany')) {
					ch.parent().parent().children("li:first").removeClass('checked');
					ch.parent().parent().find("input:first").attr('checked',false)
				}
				if (ch.attr("name")=="id_brand") {
					ch.parent().parent().parent().parent().find("li.inpany").removeClass('checked');
					ch.parent().parent().parent().parent().find("li.inpany").children("input:first").attr('checked',false)
				}
			}
			ch.parent().addClass('checked');
			if (!ch.is(":visible")) {switchView($("#showFull"))}
		}else{
			ch.parent().removeClass('checked');
		}
		createUrl(ch,isChecked,ch.parent().hasClass('inpany'));
		working=false;
	}else{
		return false;
	}
}

function createUrl(ch,isChecked,isAny) {
	var action = $("#sform").attr('action');
	if (isChecked) {
		if (isAny) {
			ch.parent().parent().find("input[type=checkbox]").each(function(index,el) {
				var val = $(el).val();
				action = action.replace(val+'\&','');
			});
		}else{
			ch.parent().parent().find("input:first").each(function(index,el) {
				var val = $(el).val();
				action = action.replace(val+'\&','');
			});
		}
		action += ch.val()+"&";
	}else{
		action = action.replace('\?'+ch.val()+'\&','?');
		action = action.replace('\&'+ch.val()+'\&','&');
	}
	$("#sform").attr('action',action);
}

function clearForm() {
	$("#fform input[type=checkbox]").each(function(index,el) {
		$(el).attr("checked",false);
		check($(el));
	});
	$("#fform input.slinptext").each(function(index,el) {
		var sid = $(el).attr("sl");
		if (sid) {
			if ($(el).attr("name").indexOf("from_")!=-1) {
				$(el).val(slist[sid].slpoint.points[0].ival);
				setControlPos(sid,slist[sid].slpoint.points[0].ival,'slider-control-left');
			}else{
				$(el).val(slist[sid].slpoint.points[slist[sid].slpoint.points.length-1].ival);
				setControlPos(sid,slist[sid].slpoint.points[slist[sid].slpoint.points.length-1].ival,'slider-control-right');
			}
			sliderChange($(el));
			refreshSliderLine(sid);
		}
	});
	var res = refreshView();
}

function switchView(a) {
	if ($("#fform").hasClass("fullForm")) {
			$("#fform").removeClass("fullForm");
			a.children("span").text("Расширенный поиск");
		}else{
			$("#fform").addClass("fullForm");
			a.children("span").text("Скрыть");
			initSlider();
		}
}

function refreshView() {
	if (autorefresh) {
		lastrnd = Math.random();
		var action = $("#sform").attr('action');
		$("#pfilter").css("background","#FFFFC8");
		$.ajax({
		  url: action+"&ajax&rnd="+lastrnd,
		  dataType: 'jsonp',
		  success: function(data) {
			if (data['rnd']==lastrnd) {
				parseList(data['id_brand'],'id_brand','id_brand');
				parseList(data['id_korpus'],'id_korpustype','id_korpustype');
				parseList(data['id_os'],'fid_os','id_os');
				parseParams(data['camera'],'camera');
				parseList(data['display_type'],'dtype','id_displaytype');
				parseParams(data['multimedia'],'fmultimedia');
				parseList(data['battery_type'],'battery_type','id_batterytype');
				parseList(data['display_color'],'dcolors','display_color');
				parseList(data['gsmtype'],'gsmtype','id_type');
				parseList(data['interfaces'],'finterfaces','id_interface');
				parseList(data['tools'],'ftools','id_tools');
				parseGPS(data['gps']);
				$("#pfilter").css("background","#FEEFC8");
			}
		  }
		});
	}
	return true;
}

function switchParam(span,dis) {
	if (dis) {
		if (!span.parent().hasClass('inpany')) {
			span.parent().addClass("disparam");
			var ch = span.parent().children("input");
			if (ch.attr("checked")) {
				ch.attr("checked",false);
				span.parent().removeClass("checked");
				createUrl(ch,false,ch.parent().hasClass('inpany'));
				refreshView();
			}
		}
	}else{
		span.parent().removeClass("disparam");
	}
}

function parseParams(obj,parentID) {
	//console.log("parseParams");
	var list = new Array();
	$.each(obj,function(i,item){
		if (item) {
			for (var pname in item){
				if (pname!="cnt") {
					var pval = item[pname];
					if (pval=='t') {
						var lastval = (list[pname]) ? list[pname]:0;
						list[pname] = lastval+parseInt(item['cnt']);
					}
				}
			}
		}
	});
	$("#"+parentID+" input").each(function(i,item) {
		var val = $(item).attr("name");
		var cnt = list[val];
		var span = $(item).parent().children("span");
		var html = span.html();
			html = html.replace(/\(\d+?\)/i,'');
		if (cnt && cnt>0) {	
			html = html+" ("+cnt+")";
			switchParam(span,false);
		}else{
			switchParam(span,true);
		}
		span.html(html);
	});
}

function parseList(obj,parentID,pname) {
	var list = new Array();
	$.each(obj,function(i,item){
		if (item) {
			var id_val = item[pname];
			var cnt = item.cnt;
			list['p'+id_val] = cnt;
		}
	});
	$("#"+parentID+" input").each(function(i,item) {
		var val = $(item).attr("val");
		if (val) {
			var val_ar = val.split("_");
			var final_cnt=0;
			var ntlist=new Array();
			$.each(val_ar,function(i,item){
				if (item.indexOf('!',0)!=-1) {
					var notid = parseInt(item.replace('!',''));
					var key = "p"+notid;
					ntlist[key] = 1;
					//console.log(key+" size: "+ntlist.size()+" notid: "+notid);
				}else{
					var cnt = list['p'+item];
					if (cnt && cnt>0) {
						final_cnt+=parseInt(cnt);
					}
				}
			});
			
			//var narr = jQuery.makeArray(ntlist);
			//console.log("check "+ntlist.size());
			if (ntlist.size()>0) {
				for (var it in list){
					if (it!=null) {
						//console.log("check val "+it)
						
						if (!ntlist[it]) {
							final_cnt+=parseInt(list[it]);
							//console.log("add "+list[it]);
						}
					}
				};
			}
			//console.log("final_cnt "+final_cnt);
			var span = $(item).parent().children("span");
			var html = span.html();
				html = html.replace(/\(\d+?\)/i,'');
			if (final_cnt>0) {	
				html = html+" ("+final_cnt+")";
				switchParam(span,false);
			}else if ($(item).attr("name")!='gps') {
				switchParam(span,true);
			}
			span.html(html);
		}
	});
}

function parseGPS(obj) {
	var allcount = 0;
	var span = $("#gps").parent().children("span");
	var html = span.html();
	if (html) {
		html = html.replace(/\(\d+?\)/i,'');
	}	
	$.each(obj,function (i,item) {
		var cnt = item['cnt'];
		if (item.gps=='t') {
			if (cnt>0) {	
				html = html+" ("+cnt+")";
				switchParam(span,false);
			}else{
				switchParam(span,true);
			}
			if (span) {
				span.html(html);
			}
		}
		allcount+=parseInt(cnt);
	});	
	
	$("#fbut").val("Найти ("+allcount+")");
	(allcount<=0) ? $("#fbut").attr("disabled",true):$("#fbut").attr("disabled",false);
	
}

function checkFilterParam() {
	var search="";
	if (window.location.href.indexOf("/phone/find/")!=-1) {
		search = window.location.search;
		search = search.replace('?','');
	}else{
		search = $.cookie("sform");
	}
	if (search) {
	var search_ar = search.split('&');
	var sliderlist={};
		$(".slblock input").each(function(i,item) {
			sliderlist[$(item).attr("name")]=true;
		});
	$.each(search_ar,function(i,item) {
		if (item && item!='') {
			var citem = item.replace(/_(\d*)\.*(\d+)$/i,'');
			if (sliderlist[citem]) {
				//It is slider input
				var valitem = item.replace(/^.*?_(\d*\.*\d+)$/i,'$1');
				$("input:text[name='"+citem+"']").val(valitem);
			}else{
				$("input:checkbox[value='"+item+"']").attr("checked",true);
			}
		}
	});
	}
}

$(document).ready(function() {
	checkFilterParam();
	$("#showFull").click(function() {
		switchView($(this));
	});
	$("#fform input[type=checkbox]").click(function() {
		check($(this));
		var isDisable = $(this).parent().hasClass('disparam');
		if (!isDisable) {
			refreshView();
		}else{
			$(this).attr("checked",false);
			return false;
		}
		
	});
	$("#fform input[type=checkbox]").each(function(index,el) {
		check($(el));
	});
	$("#fform input[type=button]").click(function() {
		window.location.href=$("#sform").attr("action");
	});
	$(".slblock .slfrom").change(function() {
		sliderChange($(this)) ;
	})
	$(".slblock .slto").change(function() {
		sliderChange($(this)) ;
	})
	$("#fautorefresh").click(function() {
		if ($(this).attr("checked")) {
			autorefresh=true;
		}else{
			autorefresh=false;
		}
	});
	initSlider();
	refreshView();
    //$(".mindexleft #fform").fadeIn("slow");
});
