var settlements = new Array();
var hierarchy = new Object();

var discounts = new Object();
var discountsRev = new Object();

var categories = new Object();
var categoriesRev = new Object();
categoriesRev[''] = new Array();

var discountFilterValue = 0;
var categoryFilterValue = '';

var displays = new Object();

function addValues(settlement,scienid,discount,catname) {
    if (!hierarchy[settlement]) {
		hierarchy[settlement] = new Array();
	}
	hierarchy[settlement].push(scienid);

	if (!discountsRev[discount]) {
		discountsRev[discount] = new Array();
	}
	discountsRev[discount].push(scienid);

	if (!categoriesRev[catname]) {
		categoriesRev[catname] = new Array();
	}
	categoriesRev[catname].push(scienid);
	categoriesRev[''].push(scienid);

	discounts[scienid]=discount;
	categories[scienid]=catname;
	displays[scienid]=1;
}


function filter(minDiscount, catName) {
	//alert("filter(" + minDiscount + "," + catName + ")" );
	t = new Date().getTime();
	if (catName != categoryFilterValue) {
		for (i=0; i<categoriesRev[categoryFilterValue].length;i++) {
			if (displays[categoriesRev[categoryFilterValue][i]] == 1) {
				elem = document.getElementById(categoriesRev[categoryFilterValue][i]);
				elem.style.display = 'none'
				displays[categoriesRev[categoryFilterValue][i]] = 0;
			}
		}
		for (i=0; i<categoriesRev[catName].length;i++) {
			if (discounts[categoriesRev[catName][i]]*1 >= minDiscount) {
				if (displays[categoriesRev[catName][i]] == 0) {
					elem = document.getElementById(categoriesRev[catName][i]);
					elem.style.display = ''
					displays[categoriesRev[catName][i]] = 1;
				}
			} else {
				if (displays[categoriesRev[catName][i]] == 1) {
					elem = document.getElementById(categoriesRev[catName][i]);
					elem.style.display = 'none'
					displays[categoriesRev[catName][i]] = 0;
				}
			}
		}
		categoryFilterValue = catName;
	}
	if (minDiscount != discountFilterValue) {
		if (minDiscount > discountFilterValue) {
			for (d in discountsRev) {
				if (d*1 < minDiscount && d*1 >= discountFilterValue) {
					for (i=0; i<discountsRev[d].length;i++) {
						if (displays[discountsRev[d][i]] == 1) {
							elem = document.getElementById(discountsRev[d][i]);
							elem.style.display = 'none'
							displays[discountsRev[d][i]] = 0;
						}
					}
				}
			}
		} else {
			for (d in discountsRev) {
				if (d*1 >= minDiscount && d*1 <= discountFilterValue) {
					for (i=0; i<discountsRev[d].length;i++) {
						if (catName == '' || catName == categories[discountsRev[d][i]]) {
							if (displays[discountsRev[d][i]] == 0) {
								elem = document.getElementById(discountsRev[d][i]);
								elem.style.display = ''
								displays[discountsRev[d][i]] = 1;
							}
						}
					}
				}
			}
		}
		discountFilterValue = minDiscount;
	}
	part1 = new Date().getTime() - t;
	t = new Date().getTime();
	text='';
	for (m in hierarchy) {
		hide = true;
		for (i=0; i<hierarchy[m].length;i++) {
			if (displays[hierarchy[m][i]]==1) {
				hide = false;
				//text += m + ": " + i + "\n";
				break;
			}
		}
		obj = document.getElementById(m);
		if (obj) {
			if (hide && obj.style.display != "none") {
				obj.style.display="none";
				if (markers && markers[m]) {
					markers[m].hide();
				} else if (markers) {
					for (i=0; i<hierarchy[m].length;i++) {
						if (markers[hierarchy[m][i]]) {
							markers[hierarchy[m][i]].hide();
						}
					}
				}
			} else if (!hide && obj.style.display != "") {
				obj.style.display="";
				if (markers && markers[m]) {
					markers[m].show();
				} else if (markers) {
					for (i=0; i<hierarchy[m].length;i++) {
						if (markers[hierarchy[m][i]]) {
							markers[hierarchy[m][i]].show();
						}
					}
				}
			}
		}
	}
	part2 = new Date().getTime() - t;
	t = new Date().getTime();
	//alert("Part1: " + part1 + " ms\nPart2: " + part2 + " ms\nTotal: " + (part1 + part2) + " ms");
	//alert(text);
	/*
	if (catName.length > 0) {
		for (var c in categoriesRev) {
			if (c != catName) {
				for (i=0; i<categoriesRev[c].length;i++) {
					elem = document.getElementById(categoriesRev[c][i]);
					if (elem && elem.style.display != 'none') {
						elem.style.display = 'none'
					}
				}
			} else {
				for (i=0; i<categoriesRev[c].length;i++) {
					elem = document.getElementById(categoriesRev[c][i]);
					if (discounts[categoriesRev[c][i]]*1 > minDiscount) {
						if (elem != null && elem.style.display != '') {
							elem.style.display = ''
						}
					} else {
						if (elem != null && elem.style.display != 'none') {
							elem.style.display = 'none'
						}
					}
				}
			}
		}
	} else {
		for (var d in discountsRev) {
			if (d*1 >= minDiscount) {
				for (i=0; i<discountsRev[d].length;i++) {
					elem = document.getElementById(discountsRev[d][i]);
					if (elem != null && elem.style.display != '') {
						elem.style.display = ''
					}
				}
			} else {
				for (i=0; i<discountsRev[d].length;i++) {
					elem = document.getElementById(discountsRev[d][i]);
					if (elem != null && elem.style.display != 'none') {
						elem.style.display = 'none'
					}
				}
			}
		}
	}*/
}
	//alert("f: " + minDiscount + "/" + catName);
	/*t = new Date().getTime();
	for (var d in discounts) {
		if ((discounts[d] < minDiscount) || (catName.length > 0 && categories[d] != catName)) {
			document.getElementById(d).style.display="none";
		} else {
			document.getElementById(d).style.display="";
		}
	}
	part1 = new Date().getTime() - t;
	t = new Date().getTime();
	for (var m in hierarchy) {
		var hide = true;
		for (var i=0; i<hierarchy[m].length;i++) {
			if (document.getElementById(hierarchy[m][i]).style.display=="") {
				hide = false;
				break;
			}
		}
		var obj = document.getElementById(m);
		if (obj) {
			if (hide) {
				obj.style.display="none";
				if (markers && markers[m]) {
					markers[m].hide();
				}
			} else {
				obj.style.display="";
				if (markers && markers[m]) {
					markers[m].show();
				}
			}
		}
	}
	part2 = new Date().getTime() - t;
	t = new Date().getTime();
	alert("Part1: " + part1 + " ms\nPart2: " + part2 + " ms\nTotal: " + (part1 + part2) + " ms");
	
}*/
