


/**************    Enum 	  ************************/

//var CoordinateFormat = { DEG:0, DMS:1, DEM:2 };
//var MarkerType = {
//	Undefined:0,
//	EventTechnical:1,
//	EventFire:2,
//	EventExercise:3,
//	EventYouth:4,
//	EventAppointment:5,
//	EventNews:6,
//	FireDepartment:7
//};



/***********	 Classes		   *******************/

function FfmMarker(type, marker)
{
	this.type = type;
	this.marker = marker;
	this.title;
	this.id;
	this.infowindowtabs;
	this.loaded = false;
	this.visible = false;
	this.date;
}

FfmMarker.prototype.show = function()
{
	if(this.loaded)
		this.visible = true;
}

FfmMarker.prototype.hide = function()
{
	this.visible = false;
}

FfmMarker.prototype.load = function()
{
	this.loaded = true;
}

FfmMarker.prototype.unload = function()
{
	this.loaded = false;
	this.visible = false;
}

function FfmMarkerSortType(a, b)
{
	return a.type - b.type;
}


Array.prototype.contains = function(obj) {
     var i, listed = false;
     for (i=0; i<this.length; i++) {
       if (this[i] === obj) {
         listed = true;
         break;
       }
     }
     return listed;
   };


/***********	 Functions		   *******************/


/**
 * This function converts a DEG coordinate into DMS.
 * @param {int} number The coordinate do be converted
 * @return associative array
 */
function convertToDMS(number)
{
	var dms = new Array(3);
	dms["degree"] = Math.floor(number);
	dms["minute"] = Math.floor((number * 60) % 60);
	dms["second"] = ((number * 3600) % 60).toFixed(2);
	return dms;
}

/**
 * This function converts a DEG coordinate into DEM.
 * @param {int} number The coordinate do be converted
 * @return associative array
 */
function convertToDEM(number)
{
	var dem = new Array(3);
	dem["degree"] = Math.floor(number);
	dem["minute"] = ((number * 60) % 60).toFixed(4);
	return dem;
}

/**
 * Adds leading zeros to a value.
 * @param {int} The input number
 * @param {int} Length of the output
 * @return {string}
 */
function addLeadingZeros(value, number)
{
	count = number - (Math.floor(value).toString()).length;
	for(i=0; i<count; i++)
	{
		value = "0" + value;
	}
	return value;
}

/**
 * Adapts the format of the latitude
 * @param
 * @param
 * @return
 */
function formatLatitude(lat, coordinateFormat)
{
	var text;
	if(lat >= 0)
	{
		text = "N ";
	}
	else
	{
		text = "S ";
		lat = Math.abs(lat);
	}

	if(coordinateFormat == CoordinateFormat.DMS)
	{
		var dms = convertToDMS(lat);
		text += addLeadingZeros(dms.degree, 2) + "&deg; " +
				addLeadingZeros(dms.minute, 2) + "' " +
				addLeadingZeros(dms.second, 2) + "''";
	}
	else if(coordinateFormat == CoordinateFormat.DEM)
	{
		var dem = convertToDEM(lat);
		text += addLeadingZeros(dem.degree, 2) + "&deg; " +
				addLeadingZeros(dem.minute, 2) + "'";
	}
	else
	{
		lat = lat.toFixed(6)
		text += addLeadingZeros(lat, 2) + "°";
	}

	return text;
}

/**
 * Adapts the format of the longitude.
 * @param
 * @param
 * @return
 */
function formatLongitude(lng, coordinateFormat)
{
	var text;
	if(lng >= 0)
	{
		text = "E ";
	}
	else
	{
		text = "W ";
		lng = Math.abs(lng);
	}

	if(coordinateFormat == CoordinateFormat.DMS)
	{
		var dms = convertToDMS(lng);
		text += addLeadingZeros(dms.degree, 3) + "&deg; " +
				addLeadingZeros(dms.minute, 2) + "' " +
				addLeadingZeros(dms.second, 2) + "''";
	}
	else if(coordinateFormat == CoordinateFormat.DEM)
	{
		var dem = convertToDEM(lng);
		text += addLeadingZeros(dem.degree, 3) + "&deg; " +
				addLeadingZeros(dem.minute, 2) + "'";
	}
	else
	{
		lng = lng.toFixed(6);
		text += addLeadingZeros(lng, 3) + "°";
	}

	return text;
}

/**
 * Returns the number of days of a distinct month in a specific year
 * @param int month
 * @param int year
 * @return int number of days
 */
function getDaysPerMonth(year, month)
{
	date = new Date(year, month+1, 0);
	return date.getDate();
}


// Definition of the alarm area polygon
