
function onLoad() {
	var container = document.getElementById("id_container");
	if (container) {
		listing.container = container;
		listing.load();
	}
}

function onOrderComboBoxChange(e) {
	var i = parseInt(e.options[e.selectedIndex].value);
	if (!isNaN(i) && i > 0) {
		switch (parseInt(e.options[e.selectedIndex].value)) {
			case 1:
				listing.sortField = null;
				listing.sortAsc = true;
				break;
			case 2:
				listing.sortField = "stars";
				listing.sortAsc = true;
				break;
			case 3:
				listing.sortField = "stars";
				listing.sortAsc = false;
				break;
			case 4:
				listing.sortField = "name";
				listing.sortAsc = true;
				break;
			case 5:
				listing.sortField = "name";
				listing.sortAsc = false;
				break;
		}
		listing.redraw();
	}
}

function onFilterComboBoxChange(e) {
	var i = parseInt(e.options[e.selectedIndex].value);
	if (!isNaN(i) && i > 0) {
		var value = parseInt(e.options[e.selectedIndex].value);
		if (value == 1) {
			listing.filterField = null;
			listing.filterValue = null;
		} else if (value >= 2 && value <= 7) {
			listing.filterField = "stars";
			listing.filterValue = value - 2;
		} else if (value >= 11 && value <= 21) {
			listing.filterField = "category";
			listing.filterValue = value - 10;
		}
		listing.redraw();
	}
}

var listing = {
	dataArray: [],
	//divArray: [],
	dataClass: "data",
	container: null,
	sortField: null,
	sortAsc: true,
	filterField: null,
	filterValue: null,

	load: function() {
		for (var i = 0; i < this.container.childNodes.length; i++) {
			if (this.container.childNodes[i].nodeType == 1 && this.container.childNodes[i].nodeName == "DIV") {
				var o = { html:this.container.childNodes[i].innerHTML, active:true };
				var node = this.container.childNodes[i];
				for (var j = 0; j < node.childNodes.length; j++) {
					if (node.childNodes[j].nodeType == 1 && node.childNodes[j].nodeName == "DIV" && node.childNodes[j].className == this.dataClass) {
						var text = node.childNodes[j].innerHTML;
						var pairs = text.split("|");
						for (var p = 0; p < pairs.length; p++) {
							var kv = pairs[p].split(":");
							if (kv.length == 2) {
								o[kv[0]] = kv[1];
							}
						}
						break;
					}
				}
				this.dataArray.push(o);
			}
		}
	},

	sort: function() {
		if (!this.sortField) {
			return;
		}
		var temp;
		var n = this.dataArray.length;
		var f = true;
		while(f) {
			n--;
			f = false;
			for (var i = 0; i < n; i++) {
				if (this.sortAsc ? this.dataArray[i][this.sortField] > this.dataArray[i + 1][this.sortField] : this.dataArray[i][this.sortField] < this.dataArray[i + 1][this.sortField]) {
					temp = this.dataArray[i];
					this.dataArray[i] = this.dataArray[i + 1];
					this.dataArray[i + 1] = temp;
					f = true;
				}
			}
		}
	},

	filter: function() {
		for (var i = 0; i < this.dataArray.length; i++) {
			this.dataArray[i].active = (!this.filterField || this.dataArray[i][this.filterField] == this.filterValue) ? true : false;
		}
	},

	redraw: function() {
		this.sort();
		this.filter();
		this.container.innerHTML = "<!-- -->";
		for (var i = 0; i < this.dataArray.length; i++) {
			if (this.dataArray[i].active) {
				var div = document.createElement("DIV");
				div.innerHTML = this.dataArray[i].html;
				div.style.cssFloat = "left";
				div.style.styleFloat = "left";
				div.style.width = "490px";
				div.style.height = "75px";
				this.container.appendChild(div);
			}
		}
	}
}

