var Projects = {
	
	path : '/',
	data : null,
	content : null,
	spinnerTarget: null,
	
	init: function() {
		
		Projects.data				= new Hash();
		Projects.content			= $('our-projects-items-container');
		Projects.spinnerTarget		= $('our-projects-items-container');
		Projects.filters			= $$('#filter select');
		
		Projects.addEventListeners();
		Projects.loadSelection();
	},
	
	loadSelection: function() {
		// Check URL for business=[0-9] and load that selection.
		var regex = new RegExp("business=([0-9]+)");
		var match = regex.exec(document.location.toString());
		if (!match) {
			return;
		}

		var node_id = match[1];
		Projects.filters[0].value = node_id; // Change the selected value
		Projects.loadData(node_id, 'services'); // Load the data
	},
	
	addEventListeners: function() {
		Projects.filters.each(function(elem, idx) {
			elem.addEvent('change', function(event) {
				event.stop();
				Projects.sortItems(idx);
			});
		});
	},
	
	sortItems: function(idx) {
		
		if (!Projects.filters[0].options[Projects.filters[0].selectedIndex].value &&
			!Projects.filters[1].options[Projects.filters[1].selectedIndex].value &&
			!Projects.filters[2].options[Projects.filters[2].selectedIndex].value &&
			!Projects.filters[3].options[Projects.filters[3].selectedIndex].value &&
			!Projects.filters[4].options[Projects.filters[4].selectedIndex].value) {
				Projects.data = new Hash();
				Projects.loadData('63623', 'default');
				return false;
		}
		
		if (!Projects.filters[idx].options[Projects.filters[idx].selectedIndex].value) {
			Projects.data[Projects.filters[idx].name] = null;
		}
		
		Projects.loadData(Projects.filters[idx].options[Projects.filters[idx].selectedIndex].value, Projects.filters[idx].name);
		
	},
	
	loadData: function(category,key) {

		Projects.content.empty();

		var request = new Request.JSON({
			url: Projects.path + 'index.php?action=view&view=' + category + '&rtemplate=2600&type=json',
			useSpinner: true,
			spinnerTarget: Projects.spinnerTarget,
			onComplete: function(response) {
				
				if (response != null) Projects.data[key] = response.items;
				
				if (key != 'default') {
					Projects.refreshData(object_intersect(Projects.data['services'], Projects.data['regions'], Projects.data['dates'], Projects.data['brands']));
				} else {
					Projects.refreshData(Projects.data[key]);
				}
				
			}
		}).send();
	},
	
	refreshData: function(items) {

		var returnedItems = 0;
		
		for ( k in items ) {
			if ( k != 'final' ) {
				returnedItems++;
			}
		}
		
		if (returnedItems) {
			
			var ol = new Element('ol', {'class' : 'our-projects-listing', 'id' : 'our-projects-items'}).inject(Projects.content);
			
			$each(items, function(item,index) {
								  
				if (index != 'final') {
					
					var li = new Element('li', {'class' : item.type});
					var title = new Element('div', {'class' : 'item-title'}).inject(li);
					var h3 = new Element('h3').inject(title);
					var a = new Element('a', {'target' : item.type == 'document' ? '_blank' : '', 'href' : item.pageurl, 'title' : item.title, 'html' : item.title}).inject(h3);
					var content = new Element('div', {'class' : 'item-content'}).inject(li);
	
					if (item.client || item.location)
						var dl = new Element('dl').inject(content);
					
					if (item.client) {
						var dtClient = new Element('dt', {'class' : 'item-client', 'html' : 'Client: '}).inject(dl);
						var ddClient = new Element('dd', {'class' : 'item-client', 'html' : item.client}).inject(dl);
					}
					
					if (item.location) {
						var dtLocation = new Element('dt', {'class' : 'item-location' + (!item.client ? ' no-client' : ''), 'html' : 'Location: '}).inject(dl);
						var ddLocation = new Element('dd', {'class' : 'item-location', 'html' : item.location}).inject(dl);
					}
					
					var p = new Element('p', {'html' : item.summary}).inject(content);
					
					li.inject(ol);
					
				}
			
			});
			
		} else {
			new Element('p', {'html' : '<strong>No documents were found that specify your query. Please try again.</strong>'}).inject(Projects.content);
		}
		
	}
	
};

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

function object_intersect () {
	
	var arg_list = [];
	
	var j = 0;
	for (i = 0; i < arguments.length; i++) {
		if (arguments[i] != undefined) {
			arg_list[j] = arguments[i];	
			j++;
		}
	}

	ret_object = {};
	
    $each(arg_list[0], function(object, objidx) {
							  
            var present_in_all = true;
			for ( x = 0; x < arg_list.length; x++ ) {
				if ( !(arg_list[0][objidx] && arg_list[x][objidx]) ) {
					present_in_all = false;
				}
			}
            
            if ( present_in_all ) {
                ret_object[objidx] = arg_list[0][objidx];
            }
    });
	
	return ret_object;
}