﻿var Ajax = {
	_viewsGroups: [],
	addViewGroup: function (viewGroup, updateFunction) {
		if (typeof (this._viewsGroups[viewGroup]) !== 'object' || !this._viewsGroups[viewGroup].length) {
			this._viewsGroups[viewGroup] = new Array();
		}
		this._viewsGroups[viewGroup].push(updateFunction);
	},
	removeViewGroup: function (viewGroup) {
		if (typeof (this._viewsGroups[viewGroup]) === 'object' && this._viewsGroups[viewGroup].length) {
			this._viewsGroups.pop(viewGroup);
		}
	},
	updateViewGroup: function (viewGroup) {
		if (typeof (this._viewsGroups[viewGroup]) === 'object' && this._viewsGroups[viewGroup].length) {
			for (i = 0; i < this._viewsGroups[viewGroup].length; i++) {
				var updateFunction = this._viewsGroups[viewGroup][i];
				if (typeof (updateFunction) === 'function') {
					updateFunction();
				} else if (typeof (updateFunction) === 'object' && callback.update) {
					updateFunction.update();
				}
			}
		}
	},
	loadView: function (target, url, callback) {
		var urlAdd = '?s=' + new Date().getTime();
		if (callback) {
			$('#' + target).load(url + urlAdd, null, callback);
		} else {
			$('#' + target).load(url + urlAdd);
		}
	},
	executeUrl: function (url, callback) {
		var urlAdd = '?s=' + new Date().getTime();
		if (callback !== null) {
			if (typeof (callback) === 'function') {
				$.get(url + urlAdd, null, callback);
			} else {
				$.get(url + urlAdd, null, function () { callback(); });
			}
		} else {
			$.get(url + urlAdd);
		}
	},
	showMessage: function (message) {
		if (message) {
			var messageBox = $(document.createElement('div'));
			messageBox.attr('id', 'message-box');
			messageBox.text(message);

			if ($.browser.msie) {
				document.body.appendChild(messageBox.get(0));
			} else {
				$('body').append(messageBox);
			}
			window.setTimeout(function () {
				$('#message-box').fadeOut('fast', function () { $('#message-box').remove(); });
			}, 1500);
		}
	}
};
