Event.observe(window, 'load', function() {
	var clip = new AClipboard();
	
	//search
	Event.observe($('searchButton'), 'click', function() {
		$('formFilterProjects').submit();
	});

	//type
	Event.observe($('one-storeyed'), 'click', function() {
		searchManager.administerDisabled(1, 'one-storeyed');
	});

	Event.observe($('attic'), 'click', function() {
		searchManager.administerDisabled(1, 'attic');
	});

	Event.observe($('storeyed'), 'click', function() {
		searchManager.administerDisabled(1, 'storeyed');
	});

	Event.observe($('multi_family'), 'click', function() {
		searchManager.administerDisabled(1, 'multi_family');
	});

	//size
	Event.observe($('small_projects'), 'click', function() {
		searchManager.administerSize('small_projects');
		searchManager.administerDisabled(1, 'small_projects');
	});

	Event.observe($('middle_projects'), 'click', function() {
		searchManager.administerSize('middle_projects');
		searchManager.administerDisabled(1, 'middle_projects');
	});

	Event.observe($('big_projects'), 'click', function() {
		searchManager.administerSize('big_projects');
		searchManager.administerDisabled(1, 'big_projects');
	});

	Event.observe($('all_projects'), 'click', function() {
		searchManager.administerSize('all_projects');
		searchManager.administerDisabled(1, 'all_projects');
	});

	//style
	Form.getInputs('formFilterProjects','radio','style').each(function(item) {
		Event.observe($(item.id), 'click', function() {
			searchManager.administerDisabled(2, item.id);
		});
	}) ;

	//function
	Form.getInputs('formFilterProjects','radio','function').each(function(item) {
		Event.observe($(item.id), 'click', function() {
			searchManager.administerDisabled(2, item.id);
		});
	}) ;

	//styleReset
	Event.observe($('style_reset'), 'click', function() {
		searchManager.administerReset('style');
	});

	//functionReset
	Event.observe($('function_reset'), 'click', function() {
		searchManager.administerReset('function');
	});
});

var searchManager = {

	size: new Hash({0:'small_projects',1:'middle_projects',2:'big_projects',3:'all_projects'}),
	type: new Hash({0:'one-storeyed',1:'attic',2:'storeyed',3:'multi_family'}),

	administerSize: function(id) {

		var key = '';

		if (id == 'all_projects') {
			this.size.each(function(pair) {
				if (pair.value != 'all_projects') {
					$(pair.value).checked = false;
				}
			});
		} else {
			$('all_projects').checked = false;
		}

		if ($('small_projects').checked && $('middle_projects').checked && $('big_projects').checked) {

			this.size.each(function(pair) {
				if (pair.value != 'all_projects') {
					$(pair.value).checked = false;
				} else {
					$(pair.value).checked = true;
				}
			});

		}
	},

	administerDisabled: function(type, id) {
		if (type == 1) {
			var checkedFlag = 0;

			this.type.each(function(item) {
				if ($(item.value).checked == true) {
					checkedFlag++;
				}
			});

			this.size.each(function(item) {
				if ($(item.value).checked == true) {
					checkedFlag++;
				}
			});

			//style
			Form.getInputs('formFilterProjects','radio','style').each(function(item) {
				if (checkedFlag == 0) {
					item.disabled = false;
				} else {
					item.disabled = true;
				}
				item.checked = false;
			}) ;

			//function
			Form.getInputs('formFilterProjects','radio','function').each(function(item) {
				if (checkedFlag == 0) {
					item.disabled = false;
				} else {
					item.disabled = true;
				}
				item.checked = false;
			});
		} else if (type == 2) {
			//type
			this.type.each(function(item) {
				$(item.value).disabled = true;
				$(item.value).checked = false;
			});
			//size
			this.size.each(function(item) {
				$(item.value).disabled = true;
				$(item.value).checked = false;
			});
		}
	},

	administerReset: function(id) {
		Form.getInputs('formFilterProjects','radio',id).each(function(item) {
			item.checked = false;
		});

		var secondRadio = '';
		if (id == 'style') {
			secondRadio = 'function';
		} else {
			secondRadio = 'style';
		}

		var radioFlag = 0;
		Form.getInputs('formFilterProjects','radio',secondRadio).each(function(item) {
			if (item.checked == true) {
				radioFlag++;
			}
		});

		if (radioFlag == 0) {
			//type
			this.type.each(function(item) {
				$(item.value).disabled = false;
				$(item.value).checked = false;
			});
			//size
			this.size.each(function(item) {
				$(item.value).disabled = false;
				$(item.value).checked = false;
			});
		}
	}
}