var Site = {
		
	init: function() {
		Site.setupFilters();
		Site.setupSitemap();
	},

	setupFilters: function()
	{
		Site.disableSearchButton();

		$('manufacturer').addEvent('change', Site.updateModelFilter);
		$('model').addEvent('change', Site.updateVersionFilter);
		$('version').addEvent('change', Site.updateSearchResults);
	},

	setupSitemap: function () {
		var sitemapContainer = $$('.sitemapExpanded');
		if (sitemapContainer) {
			var sitemapLink = sitemapContainer.getElement('h2');
			var sitemapContent = sitemapContainer.getElement('#sitemapContent');
			var sitemapText       = sitemapLink.get('text');
			var sitemapContent = sitemapContainer.getElement('#sitemapContent');

			// hidden from the start
			sitemapContent.hide();
			
			var toggleFx = new Fx.Reveal('sitemapContent', {duration: 500, mode: 'vertical'});

			sitemapLink.set('text', '').adopt(
				new Element('a', {
					'events': {
						'click': function (e) {
							e.stop();
							
							toggleFx.toggle();
						}
					},
					'href': '#',
					'text': sitemapText
				})
			);
		}
	},

	updateModelFilter: function(event)
	{
		var manufacturer = $('manufacturer');
		var model = $('model');
		if (manufacturer.get('value') > 0) {
			var jsonRequest = new Request.JSON({
				'url' : '/ajax/AjaxController.php',
				onComplete: function(response, text) {
					var model = $('model');
					model.empty();
					model.grab(new Element('option', {'value' : '', 'text':'Select'}));
					for(i = 0; i < response.length; i++) {
						model.grab(new Element('option', {'value':response[i].id, 'text': response[i].title}));
					}
				}
			}).get({'manufacturer' : manufacturer.get('value')});
			model.erase('disabled');
		}
		else {
			model.set('disabled', 'disabled');
			$('version').set('disabled', 'disabled');
			Site.disableSearchButton();
		}
	},

	updateVersionFilter: function(event)
	{
		var model = $('model');
		var version = $('version');
		if (model.get('value') > 0) {
			var jsonRequest = new Request.JSON({
				'url' : '/ajax/AjaxController.php',
				onComplete: function(response, text) {
					var version = $('version');
					version.empty();
					version.grab(new Element('option', {'value':'', 'text':'Select'}));
					for(i = 0; i < response.length; i++) {
						version.grab(new Element('option', {'value':response[i].id, 'text':response[i].version}));
					}
				}
			}).get({'model': model.get('value')});
			version.erase('disabled');
		}
		else {
			version.set('disabled', 'disabled');
		}
	},

	updateSearchResults: function()
	{
		var version = $('version');
		
		if (version.get('value') > 0) {
			var manufacturer = $('manufacturer');
			var makeIndex = manufacturer.selectedIndex;
			var makeText = manufacturer.options[makeIndex].text;
			
			var model = $('model');
			var modelIndex = model.selectedIndex;
			var modelText = model.options[modelIndex].text;
			
			var versionIndex = version.selectedIndex;
			var versionText = version.options[versionIndex].text;
			$('filterForm').set('action', '/performance-chip/' + Site.urlify(makeText) + '/' + Site.urlify(modelText) + '/' + Site.urlify(versionText) + '/');
			$('filterForm').set('post', 'get');
			$('filterForm').submit();
		//	selected maker, model and version have to display on URL, so using the following command	
		//	alert(document.domain);
		//	document.location = document.domain + '/performance-chip/' + Site.urlify(makeText) + '/' + Site.urlify(modelText) + '/' + Site.urlify(versionText) + '/';
		
		}
	},
	
	urlify: function($str){
		return $str.replace(/\s/g, '-').replace(/[^a-zA-Z0-9\-]/g, '').replace(/([-]+)/g, "-");
	},	
	
	clickLink: function(linkobj) {
	     if (linkobj.getAttribute('onclick') == null) {
	          if (linkobj.getAttribute('href')) document.location = linkobj.getAttribute('href');
	     }
	     else linkobj.onclick();
	},
	
	disableSearchButton: function()
	{
		// grey out search button until all parameters are available
		$$('#filter_content input[type=image]').dispose();
	},

	enableSearchButton: function()
	{
		// do opposite of disable function
		$$('#filter_content input[type=image]').setStyle('visibility', 'visible');
	},

	trim: function (str) {
		return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	}

}

window.addEvent('domready', Site.init);