
function MStatusControl(MOptions) {
	MOptions = MOptions ? MOptions : {};
	this.DMS = MOptions.DMS ? MOptions.DMS : false;
	this.background = MOptions.background ? MOptions.background : '#eeeeee';
	this.foreground = MOptions.foreground ? MOptions.foreground : '#000000';
	this.vertical = MOptions.vertical ? MOptions.vertical : false;
	this.position = MOptions.position ? MOptions.position : new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(0, 45));

	this.parent = MOptions.container ? MOptions.container : null;

}

MStatusControl.prototype = new GControl(true,true);

MStatusControl.prototype.initialize = function(map) {

	
	var globalThis_3456 = this;
	this.map = map;
	this.projection = this.map.getCurrentMapType().getProjection();

	this.container = document.createElement('div');

	if (!this.vertical) {
		var w = this.map.getContainer().clientWidth -1;
		this.container.style.width = w + 'px';
	}

	this.container.style.backgroundColor = this.background;
	this.container.style.border = '1px solid gray';

	var innerDiv = document.createElement('div');
	this.container.appendChild(innerDiv);

	
	var crDiv = document.createElement('div');
	this.container.appendChild(crDiv);
	crDiv.style.padding = '1px';
	crDiv.style.marginTop = '3px';
	crDiv.style.textAlign = 'right';
	crDiv.style.color =  '#aaaaaa';
	crDiv.style.backgroundColor =  '#eeeeee';
	crDiv.style.font = 'normal 10px verdana';


	var oTable = document.createElement('table');

	oTable.setAttribute('cellSpacing','0');
	oTable.setAttribute('cellPadding','0');
	if (!this.vertical) {
		oTable.style.width = '100%';
	}

	innerDiv.appendChild(oTable);


	var oTableBody = document.createElement('tbody');
	oTable.appendChild(oTableBody);




	if (this.vertical) {
	//-------------------------	
		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.centerDisplay = document.createElement('td');
		this.setStyleValue(this.centerDisplay);
//		this.centerDisplay.style.width = iWidth + 'px';

		oRow.appendChild(this.centerDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.zDisplay = document.createElement('td');
		this.setStyleValue(this.zDisplay);
		oRow.appendChild(this.zDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.swDisplay = document.createElement('td');
		this.setStyleValue(this.swDisplay);
		oRow.appendChild(this.swDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.neDisplay = document.createElement('td');
		this.setStyleValue(this.neDisplay);
		oRow.appendChild(this.neDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.mouseDisplay = document.createElement('td');
		this.setStyleValue(this.mouseDisplay);
//		this.mouseDisplay.style.width = iWidth + 'px';
		oRow.appendChild(this.mouseDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.mousePxDisplay = document.createElement('td');
		this.setStyleValue(this.mousePxDisplay);
		oRow.appendChild(this.mousePxDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.mouseTileDisplay = document.createElement('td');
		this.setStyleValue(this.mouseTileDisplay);
		oRow.appendChild(this.mouseTileDisplay);
	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.clickDisplay = document.createElement('td');
		this.setStyleValue(this.clickDisplay);
		oRow.appendChild(this.clickDisplay);
	//-------------------------	



	}
	else {
	//-------------------------	
		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.centerDisplay = document.createElement('td');
		this.setStyleValue(this.centerDisplay);
//		this.centerDisplay.style.width = iWidth + 'px';
		oRow.appendChild(this.centerDisplay);

		this.mouseDisplay = document.createElement('td');
		this.setStyleValue(this.mouseDisplay);
//		this.mouseDisplay.style.width = iWidth + 'px';
		oRow.appendChild(this.mouseDisplay);

	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.swDisplay = document.createElement('td');
		this.setStyleValue(this.swDisplay);
		oRow.appendChild(this.swDisplay);

		this.mousePxDisplay = document.createElement('td');
		this.setStyleValue(this.mousePxDisplay);
		oRow.appendChild(this.mousePxDisplay);
	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.neDisplay = document.createElement('td');
		this.setStyleValue(this.neDisplay);
		oRow.appendChild(this.neDisplay);

		this.mouseTileDisplay = document.createElement('td');
		this.setStyleValue(this.mouseTileDisplay);
		oRow.appendChild(this.mouseTileDisplay);
	//-------------------------	

		var oRow = document.createElement('tr');
		oTableBody.appendChild(oRow);

		this.zDisplay = document.createElement('td');
		this.setStyleValue(this.zDisplay);
		oRow.appendChild(this.zDisplay);

		this.clickDisplay = document.createElement('td');
		this.setStyleValue(this.clickDisplay);
		oRow.appendChild(this.clickDisplay);
	//-------------------------	

	}



	this.mouseDisplay.innerHTML = 'Mouse&nbsp;LatLon:&nbsp;'
	//this.mousePxDisplay.innerHTML = 'Mouse&nbsp;Px:&nbsp;'
	//this.mouseTileDisplay.innerHTML = 'Mouse&nbsp;Tile:&nbsp;'
	this.clickDisplay.innerHTML = 'Mouse&nbsp;Click:&nbsp;'




	if (this.parent) {
		this.parent.appendChild(container);
	}
	else {
		this.map.getContainer().appendChild(this.container);
	}

	GEvent.addListener(this.map, "click", function(ol,pt){globalThis_3456.MMapClick(pt)});
	GEvent.addListener(this.map, "moveend", function(){globalThis_3456.MMoveEnd()});
	GEvent.addListener(this.map, "zoomend", function(){globalThis_3456.MZoomEnd()});
	GEvent.addListener(this.map, "mousemove", function(pt){globalThis_3456.MMouseMove(pt)});





this.MMapClick = function (pt) {
	var point = pt ? pt : null; 
	if (point) {
		if (this.DMS) {
			this.clickDisplay.innerHTML = 'Mouse&nbsp;Click:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + this.degToDms(point.lat()) + ',&nbsp;' + this.degToDms(point.lng());
		}
		else {
			this.clickDisplay.innerHTML = 'Mouse&nbsp;Click:&nbsp;&nbsp;' + point.lat().toFixed(6) + ',&nbsp;' + point.lng().toFixed(6);
		}
	}

}

this.MMoveEnd = function() {
	this.MUpdateStatus();
}
this.MZoomEnd = function() {
	this.MUpdateStatus();
}


this.MMouseMove = function(mousePt) {
	var zoom = this.map.getZoom();
	var mousePx = this.projection.fromLatLngToPixel(mousePt, zoom);

	if (this.DMS) {
		this.mouseDisplay.innerHTML = 'Mouse&nbsp;LatLon:&nbsp;&nbsp;' + this.degToDms(mousePt.lat()) + ',&nbsp;' + this.degToDms(mousePt.lng());
	}
	else {
		this.mouseDisplay.innerHTML = 'Mouse&nbsp;LatLon:&nbsp;' + mousePt.lat().toFixed(6) + ',&nbsp;' + mousePt.lng().toFixed(6);
	}
	//this.mousePxDisplay.innerHTML = 'Mouse&nbsp;Px:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + mousePx.x + ',&nbsp;' + mousePx.y;
	//this.mouseTileDisplay.innerHTML = 'Mouse&nbsp;Tile:&nbsp;&nbsp;&nbsp;' + Math.floor(mousePx.x / 256) + ',&nbsp;' + Math.floor(mousePx.y / 256);
}


this.MUpdateStatus = function() {
	var center = this.map.getCenter();
	var zoom = this.map.getZoom();

	var bounds = this.map.getBounds();
	var SW = bounds.getSouthWest();
	var NE = bounds.getNorthEast();

	if (this.DMS) {
		this.centerDisplay.innerHTML = 'Map&nbsp;Center:&nbsp;&nbsp;' + this.degToDms(center.lat()) + ',&nbsp;' + this.degToDms(center.lng());
		//this.swDisplay.innerHTML = 'Map&nbsp;SW:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + this.degToDms(SW.lat()) + ',&nbsp;' + this.degToDms(SW.lng());
		//this.neDisplay.innerHTML = 'Map&nbsp;NE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + this.degToDms(NE.lat()) + ',&nbsp;' + this.degToDms(NE.lng());
		this.zDisplay.innerHTML = 'Map&nbsp;Zoom:&nbsp;&nbsp;&nbsp;&nbsp;' + zoom;
	}
	else {
		this.centerDisplay.innerHTML = 'Map&nbsp;Center:&nbsp;&nbsp;' + center.lat().toFixed(6) + ',&nbsp;' + center.lng().toFixed(6);
		//this.swDisplay.innerHTML = 'Map&nbsp;SW:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SW.lat().toFixed(6) + ',&nbsp;' + SW.lng().toFixed(6);
		//this.neDisplay.innerHTML = 'Map&nbsp;NE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + NE.lat().toFixed(6) + ',&nbsp;' + NE.lng().toFixed(6);
		this.zDisplay.innerHTML = 'Map&nbsp;Zoom:&nbsp;&nbsp;&nbsp;' + zoom;
	}
}


	this.MUpdateStatus();

	return this.container;
}




MStatusControl.prototype.degToDms = function(dec) {

	var deg = Math.floor(Math.abs(dec));
	var min = Math.floor((Math.abs(dec)-deg)*60);
	var sec = (Math.round((((Math.abs(dec) - deg) - (min/60)) * 60 * 60) * 100) / 100 ) ;

	//var len = String(deg).length
	//deg = Array(3 + 1 - len) + deg;
	var len = String(min).length
	min = Array(2 + 1 - len).join('0') + min;
	var len = String(sec).length
	sec = Array(5 + 1 - len).join('0') + sec;

	//deg = dec < 0 ? '-' + deg : deg;

	var dms  = deg + '&deg ' + min + '\' ' + sec + '"';
	return dms;
}


MStatusControl.prototype.getDefaultPosition = function() {
	return this.position;
}



MStatusControl.prototype.setStyleValue = function(obj) {
	obj.style.padding = '0px';
	obj.style.paddingRight = '2px';
	obj.style.paddingLeft = '2px';
	obj.style.textAlign = 'left';
	obj.style.color = this.foreground;
	obj.style.backgroundColor = this.background;
	obj.style.font = 'normal 11px Tahoma'; // 'normal 12px courier new';
	obj.style.lineHeight = '14px';
	obj.setAttribute('noWrap','true');
	if (!this.vertical) {
		obj.style.width = '50%'
	}
}



MStatusControl.prototype.show = function () {
	this.container.style.display = '';
}

MStatusControl.prototype.hide = function () {
	this.container.style.display = 'none';
}

MStatusControl.prototype.toggle = function () {
	this.container.style.display = this.container.style.display == '' ? 'none' : '';
}
