vyletnik.utils = {};
vyletnik.utils.Event = function (method) {
	var listeners = {};
	return {
		registerListener : function (listener) {
			listeners[listener] = listener;
		},
		unregisterListener : function (listener) {
			delete listeners[listener];
		},
		notifyListeners : function (event) {
			jQuery.each(listeners, function (key, listener) {
				if (method) {
					listener[method](event);
				} else {
					listener(event);
				}
			});
		}
	};
};
vyletnik.utils.eachPoint = function (points, handler) {
	for (var i = 0; i < points.length; i++) {
		handler(points[i]);
	}
};
vyletnik.utils.hashMapToVector = function (hashMap) {
	var result = [];
	jQuery.each(hashMap, function (index, value) {
		if (value === true) {
			result[result.length] = index;
		}
	});
	return result;
};
vyletnik.utils.isChanged = function (changedParams, paramsToCheck) {
	var changed = false;
	jQuery.each(paramsToCheck, function (index, param) {
		if (changedParams[param]) {
			changed = true;
			return;
		}
	});
	return changed;
};
vyletnik.utils.unserializeArray = function (str) {
	return str.split(/[,]/);
};
vyletnik.utils.getGpsString = function (l) {
	var degrees = Math.floor(l);
	var minutes = Math.floor((l - degrees) * 60);
	var seconds = (l - degrees - (minutes / 60)) * 3600;
	return degrees + '˚ ' + minutes + '` ' + seconds.toFixed(2) + '``';	
};