var News = {
	
	path : '/',
	data : null,
	content : null,
	
	init: function() {
		
		News.data				= new Hash();
		News.content			= $('news-items-container');
		News.spinnerTarget		= $('news-items-container');
		News.filters			= $$('#filter select');
		
		News.addEventListeners();
		
	},
	
	addEventListeners: function() {
		News.filters.each(function(elem, idx) {
			elem.addEvent('change', function(event) {
				event.stop();
				News.sortItems(idx);
			});
		});
	},
	
	sortItems: function(idx) {
		
		if (!News.filters[0].options[News.filters[0].selectedIndex].value &&
			!News.filters[1].options[News.filters[1].selectedIndex].value &&
			!News.filters[2].options[News.filters[2].selectedIndex].value &&
			!News.filters[3].options[News.filters[3].selectedIndex].value &&
			!News.filters[4].options[News.filters[4].selectedIndex].value) {
				News.data = new Hash();
				News.loadData('63705', 'default');
				return false;
		}
		
		if (!News.filters[idx].options[News.filters[idx].selectedIndex].value) {
			News.data[News.filters[idx].name] = null;
		}
		
		News.loadData(News.filters[idx].options[News.filters[idx].selectedIndex].value, News.filters[idx].name);
		
	},
	
	loadData: function(category,key) {

		News.content.empty();

		var request = new Request.JSON({
			url: News.path + 'index.php?action=view&view=' + category + '&rtemplate=2584&type=json',
			useSpinner: true,
			spinnerTarget: News.spinnerTarget,
			onComplete: function(response) {

				if (response != null) News.data[key] = response.items;
				
				if (key != 'default') {
					News.refreshData(object_intersect(News.data['services'], News.data['regions'], News.data['dates'], News.data['brands'], News.data['types']));
				} else {
					News.refreshData(News.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' : 'news-listing', 'id' : 'news-items'}).inject(News.content);
	
			$each(items, function(item,index) {
				if (index != 'final') {
	
					var li = new Element('li', {'class' : item.type + (item.ext ? ' ' + item.ext : '')});
					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);
					var p = new Element('p', {'html' : item.summary}).inject(content);
					var p_more = new Element('p', {'class' : 'fullarticle-link', 'html' : '<a href="'+item.pageurl+'" style="background:0;padding-left:0;">Click here to view full article</a>'}).inject(content);
					li.inject(ol);
				
				}
			
			});
			
		} else {
			new Element('p', {'html' : '<strong>No documents were found that specify your query. Please try again.</strong>'}).inject(News.content);
		}
	
	}
	
};

window.addEvent('domready', News.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;
}
