var clearElements = Class.create({
	initialize: function(element) {
		this.element = $(element);
		var nodes = this.element.attributes['rel'].nodeValue.split(',');
		this.list = $(nodes[0]);
		this.container = $(nodes[1]);
		this.initEventHandlers();
	},
	initEventHandlers: function() {
		this.element.observe('click', this.handleClick.bind(this));
		this.element.observe('mouseover', this.handleOver.bind(this));
		this.element.observe('mouseout', this.handleOut.bind(this));
	},
	handleOver: function(e) {
		this.element.setStyle({textDecoration : 'underline'});
	},
	handleOut: function(e) {
		this.element.setStyle({textDecoration : 'none'});
	},
	handleClick: function(e) {
		for(var i = 0; i < this.list.options.length; i++){
			this.list.options[i].selected = false;
		}
		this.container.innerHTML = '0 schools selected';
	}
});
var countElements = Class.create({
	initialize: function(element,container) {
		this.element = $(element);
		this.container = $(container);
		this.initEventHandlers();
		this.doCounter();
	},
	initEventHandlers: function() {
		this.element.observe('change', this.handleChange.bind(this));
	},
	doCounter: function() {
		var counter = 0;
		for(var i = 0; i < this.element.options.length; i++){
			if(this.element.options[i].selected == true)
				counter++;
		}
		if(counter == 1)
			this.container.innerHTML = counter + ' school selected';		
		else
			this.container.innerHTML = counter + ' schools selected';		
	},
	handleChange: function(e) {
		this.doCounter();
	}
});
var schoolClass = Class.create({
	initialize: function(element) {
		this.element = $(element);
		var nodes = this.element.attributes['rel'].nodeValue.split(',');
		this.selectIDString = nodes[1];
		this.selectID = $(nodes[0]);
		this.initEventHandlers();
	},
	initEventHandlers: function() {
		this.element.observe('mouseover', this.handleMouseOver.bind(this));
		this.element.observe('mouseout', this.handleMouseOut.bind(this));
		this.element.observe('click', this.handleMouseClick.bind(this));
	},
	handleMouseOver: function(e) {
		this.element.addClassName('hoverState');
	},
	handleMouseClick: function(e) {
		if(this.checkCount()){
			$('cantdothat').hide();
			$$('div.SchoolItem').each( function(div) {div.removeClassName('activeItem');});
			$$('.schoolBlocks').each(function(elem){elem.hide();});
			this.element.addClassName('activeItem');
			this.selectID.show();
		}else{
			$('cantdothat').show();
			new Effect.Highlight('cantdothat', { startcolor: '#ffff99',endcolor: '#ffffff' });
		}
	},
	checkCount: function() {
		var counter = 0;
		var hs = $('highList');
		var ms = $('middleList');
		var es = $('elementaryList');
		var sd = $('districtList');
		if(this.selectIDString != 'highList'){
			for(var i = 0; i < hs.options.length; i++){
				if(hs.options[i].selected == true)
					counter++;
			}
		}
		if(this.selectIDString != 'middleList'){
			for(var i = 0; i < ms.options.length; i++){
				if(ms.options[i].selected == true)
					counter++;
			}
		}
		if(this.selectIDString != 'elementaryList'){
			for(var i = 0; i < es.options.length; i++){
				if(es.options[i].selected == true)
					counter++;
			}
		}
		if(this.selectIDString != 'districtList'){
			for(var i = 0; i < sd.options.length; i++){
				if(sd.options[i].selected == true)
					counter++;
			}
		}
		if(counter == 0)
			return true;
		else 
			return false;
	},
	handleMouseOut: function(e) {
		this.element.removeClassName('hoverState');
	}
});
var checkboxManager = Class.create({
	initialize: function(element) {
		this.element = element;
		this.boxes = this.element.select('input');
		this.allbox = this.element.select('.checkbox_all')[0];
		this.initEventHandlers();
	},
	initEventHandlers: function() {
		this.boxes.each(function(elem){elem.observe('click',this.handleClick.bind(this))}.bind(this));
	},
	handleClick: function(e) {
		var ele = Event.element(e);
		if(ele.hasClassName('checkbox_all')) {
			this.boxes.each(function(elem){elem.checked = false});
			this.allbox.checked = true;
		}else{
			this.allbox.checked = false;
		}
	}
});
Event.observe(window, 'load', function() {
	$$('.SchoolItem').each(function(div){new schoolClass(div);});
	$$('.schoolClearBtn').each(function(elem){new clearElements(elem);});
	$$('.checkbox_manager').each(function(elem){new checkboxManager(elem);}); //checkboxes on advanced search
    new countElements($('districtList'),'districtTotal');
	new countElements($('highList'),'highschoolTotal');
	new countElements($('middleList'),'middleschoolTotal');
	new countElements($('elementaryList'),'elementaryschoolTotal');
});