/**
 * atrox basic utility javascript class.
 * @autor zwacky
 */
var ATROX = (function() {
	var m = {};
	
	var _notified = false; // whether notifications have been set as read
	var _baseurl = '';
	
	/**
	 * initializes the component.
	 * @param options array
	 */
	m.initialize = function(options) {
		for (var option in options) {
			switch (option) {
				case 'baseurl':
					_baseurl = options[option];
					break;
				case 'topbars':
					var toggleDropdown = function(entry, visible) {
						if (entry.handle && entry.area) {
							entry.area.setStyle('display', (visible) ? 'block' : 'none');
							if (!visible) {
								entry.handle.getParent().removeClass('selected');
							} else {
								entry.handle.getParent().addClass('selected');
							}
						}
					};
					Array.each(options[option], function(item, index) {
						if (item.handle && item.area) {
							item.handle.addEvent('click', function(evt) {
								evt.preventDefault();
								toggleDropdown(item, item.area.getStyle('display') != 'block');
								Array.each(options[option], function(subitem, subindex) {
									if (subitem != item) {
										toggleDropdown(subitem, false);
									}
								});
							});
							if ('isNotification' in item && item.isNotification) {
								item.handle.addEvent('click', function(evt) {
									if (!_notified) {
										var req = new Request({
											url: _baseurl + '/api/notification',
											onSuccess: function(txt, xml) {
												var response = JSON.parse(txt);
												if (response.status == 'success') {
													var reset = function() {
														$$('.topbar-notification-back').removeClass('new');
														$$('.topbar-notification-back').set('text', 0);
													};
													reset.delay(1000);
												} else {
													console.log('[error] setting notification failed');
												}
											}
										});
										req.send();
										_notified = true;
									}
								});
							}
						}
					});
					break;
			}
		}
		
	};
	
	/**
	 * returns the baseurl.
	 * @return string baseurl
	 */
	m.getBaseUrl = function() {
		return _baseurl;
	}
	
	return m;
}());
