(function() {

	$$("div.thumbsback").invoke("observe", "mouseover", function(ev) {
		var el = Event.element(ev);
		if (!el.hasClassName("thumbsback"))
			el = el.up("div.thumbsback");
		$$("div.thumbsback").each(function(div) { div.style.backgroundImage = 'url(images/thumbsback.jpg)'; });
		el.style.backgroundImage = 'url(images/thumbsbackon.jpg)';
	});
	$$("div.thumbsback").invoke("observe", "mouseout", function(ev) {
		var el = Event.element(ev);
		if (!el.hasClassName("thumbsback"))
			return;
		el.style.backgroundImage = 'url(images/thumbsback.jpg)';
	});

	$$("img.imagechangerthumb").invoke("observe", "click", function(ev) {
		var img = Event.element(ev);
		$$("img.imagechangerthumb.active").invoke("removeClassName", "active");
		img.addClassName("active");
	});
	/*
	$$("img.imagechangerthumb").reverse().each(function(img) {
		img.orig_width = img.getWidth();
		img.orig_height = img.getHeight();
		img.orig_src = img.src;
		img.style.height = img.orig_height+"px";
		img.style.width = img.orig_width+"px";

		var parts = img.orig_src.split("/");
		parts[parts.length-1] = "0";
		img.full_src = parts.join("/");

		Builder.node("img", { // preload
			src: img.full_src,
			style: "display: none"
		});

		img.status = "thumb";

		img.observe("click", function() {
			$$("img.imagechangerthumb.active").invoke("removeClassName", "active");
			if (img.status == "thumb") {
				if (this.morphing)
					return;
				var scroll = document.viewport.getScrollOffsets();
				var vpwidth = document.viewport.getWidth();
				var vpheight = document.viewport.getHeight();
				var vpar = vpwidth / vpheight;

				var imgwidth = this.orig_width;
				var imgheight = this.orig_height;
				var imgar = imgwidth / imgheight;
				this.src = this.full_src;

				this.absolutize();
				this.orig_x = this.style.top;
				this.orig_y = this.style.left;

				if (imgar > vpar) { // wider
					var newheight = vpheight;
					var newwidth = newheight * imgar;
					var y = 0;
					var x = (vpwidth-newwidth)/2;
				} else { // taller
					var newwidth = vpwidth;
					var newheight = newwidth / imgar;
					var x = 0;
					var y = (vpheight-newheight)/2;
				}

				var dwidth = newwidth * 0.1 / 2;
				var dheight = newheight * 0.1 / 2;

				newwidth = newwidth * 0.9;
				newheight = newheight * 0.9;

				x += dwidth;
				y += dheight;


				this.morphing = true;
				this.status = "full";
				this.addClassName("fullscreen");
				new Effect.Morph(this, {
					style: {
						top: scroll.top+y+"px",
						left: scroll.left+x+"px",
						width: newwidth+"px",
						height: newheight+"px"
					},
					duration: 0.5,
					afterFinish: function() { this.morphing = false; }.bind(this)
				});
			} else {
				this.morphing = true;
				this.status = "thumb";
				new Effect.Morph(this, {
					style: {
						top: this.orig_x,
						left: this.orig_y,
						width: this.orig_width+"px",
						height: this.orig_height+"px"
					},
					duration: 0.5,
					afterFinish: function() {
						this.morphing = false;
						this.style.position = "static";
						this.removeClassName("fullscreen");
						this.addClassName("active");
					}.bind(this)
				});
			}
		}.bind(img));
	});
	*/
	$$("div.valuation-radios input, .search-radios input").each(function(el) {
		var container = el.up("div");
		el.observe("click", function(ev) {
			container.select("label").invoke("removeClassName", "selected");
			this.up("label").addClassName("selected");
		}.bind(el));
		if (el.checked)
			el.up("label").addClassName("selected");
	});

	if ($("prev-thumb")) $("prev-thumb").observe("click", function(ev) {
		ev.stop();
		var container = $("resultthumbsimages2");
		var pos_x = container.cumulativeOffset().top;
		var height = container.getHeight();
		new Effect.Scroll(container, { x : 0, y : 0 - height });
	});
	if ($("next-thumb")) $("next-thumb").observe("click", function(ev) {
		ev.stop();
		var container = $("resultthumbsimages2");
		var pos_x = container.cumulativeOffset().top;
		var height = container.getHeight();
		new Effect.Scroll(container, { x : 0, y : 0 + height });
	});

	$$("div#faq-questions h2").each(function(el) {
		var next = el.next();
		var answer_nodes = [];
		while (next) {
			if (!next)
				break;
			if (next.nodeName == "H2")
				break;
			answer_nodes.push(next);
			next = next.next();
		}
		var div = Builder.node("div", {"class":"answer"}, answer_nodes);
		$(div).hide();
		el.insert({after: div});
		el.down("a").observe("click", function(ev) {
			ev.stop();
			var el = ev.element().up("h2").next("div.answer");
			Effect.toggle(el, 'blind');
		});
	});

	$$("input[name=school-type]").each(function(el) {
		el.observe("click", function() { mapAddSchools(map) });
	});

}).onLoad();

Effect.Scroll = Class.create();
Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'absolute'
    } , arguments[1] || {}  );
    this.start(options);
  },
  setup: function() {
    if (this.options.continuous && !this.element._ext ) {
      this.element.cleanWhitespace();
      this.element._ext=true;
      this.element.appendChild(this.element.firstChild);
    }
   
    this.originalLeft=this.element.scrollLeft;
    this.originalTop=this.element.scrollTop;
   
    if(this.options.mode == 'absolute') {
      this.options.x -= this.originalLeft;
      this.options.y -= this.originalTop;
    } else {
   
    }
  },
  update: function(position) {   
    this.element.scrollLeft = this.options.x * position + this.originalLeft;
    this.element.scrollTop  = this.options.y * position + this.originalTop;
  }
});

var schools = {};
var school_markers = [];

var mapAddSchools = function(map) {

	var base_icon = new GIcon();
	base_icon.iconSize = new GSize(24, 30);
	base_icon.iconAnchor = new GPoint(12, 30);
	base_icon.infoWindowAnchor  = new GPoint(24, 0);

	var icons = {
		"Primary" : "icon-primaryschool.png",
		"Secondary" : "icon-secondaryschool.png",
		"Infant" : "icon-infant.png",
		"Nursery" : "icon-nursery.png"
	};
	for (var t in icons)
		icons[t] = new GIcon(base_icon, "/"+icons[t]);

	var types = $$("input[name=school-type]:checked").map(function(el) { return el.value }).join(",");
	var cb = function(data) {
		school_markers.each(function(m) {
			try {
				map.removeOverlay(m);
			} catch (e) {};
		});

		data.each(function(info) {
			var marker = new GMarker(new GLatLng(info.latitude, info.longitude), {
				title: info.name,
				icon: icons[info.type.strip()]
			});
			marker.bindInfoWindowHtml(info.html);
			map.addOverlay(marker);
			school_markers.push(marker);
		});
	};

	var bounds = map.getBounds();
	var sw = bounds.getSouthWest();
	var ne = bounds.getNorthEast();
	var q = "types="+escape(types)+"&minlat="+sw.lat()+"&minlng="+sw.lng()+"&maxlat="+ne.lat()+"&maxlng="+ne.lng()

	if (schools[types]) {
		cb(schools[types]);
	} else {
		new Ajax.Request("/get-schools.html", {
			postBody: "action=get-markers&"+q,
			onSuccess: function(t) {
				schools[types] = eval('('+t.responseText+')');
				cb(schools[types]);
			}
		});
	}

	new Ajax.Updater("schools", "/get-schools.html", {
		postBody: "action=get-table&"+q+"&center="+map.getCenter().toUrlValue()
	});
};

