if (!window.nLayoutCover) alert('nLayoutCover is required.');

/**
 * options:
 *		centerInput
 *		zoomInput
 *		markerInput
 */
function nLayoutCoverWithNGMap(obj, options) {
	nLayoutCover(obj, options);
	obj.nName = 'nLayoutCoverWithMap';
	obj.map = null;
	
	obj.configure({
		centerInput: null,
		zoomInput: null,
		markerInput: null,
		searching: false,
		scrollZoom: false
	});
	
	obj.configure(options);
	
	obj.loadMap = function() {
		obj.map = null;
		
		obj.map = $$('nGMap', 'div', obj)[0];
		
		nGMap(obj.map, {searching: obj.config.searching, scrollZoom: obj.config.scrollZoom});
		if (obj.config.centerInput) obj.map.bindCenterToInput(obj.config.centerInput, true);
		if (obj.config.zoomInput) obj.map.bindZoomToInput(obj.config.zoomInput, true);
		if (obj.config.markerInput) obj.map.createEditableMarker(obj.config.markerInput, true);
	}

	obj.nLayoutCoverOpen = obj.open;
	obj.nLayoutCoverClose = obj.close;
		
	obj.open = function() {
		obj.nLayoutCoverOpen();
		obj.loadMap();
	}

	obj.close = function() {
		obj.nLayoutCoverClose();
		GUnload();
		obj.map.innerHTML = '';
	}
	
		
	obj.apply = function() {
		if (obj.map) {
			if (obj.map.centerInputObj) {
				obj.map.centerInputObj.defaultValue = obj.map.centerInputObj.value;
			}
			if (obj.map.zoomInputObj) {
				obj.map.zoomInputObj.defaultValue = obj.map.zoomInputObj.value;
			}
			if (obj.map.markerInputObj) {
				obj.map.markerInputObj.defaultValue = obj.map.markerInputObj.value;
			}
		}
		obj.close();
	}
	
	obj.cancel = function() {
		if (obj.map) {
			if (obj.map.centerInputObj) {
				obj.map.centerInputObj.value = obj.map.centerInputObj.defaultValue;
			}
			if (obj.map.zoomInputObj) {
				obj.map.zoomInputObj.value = obj.map.zoomInputObj.defaultValue;
			}
			if (obj.map.markerInputObj) {
				obj.map.markerInputObj.value = obj.map.markerInputObj.defaultValue;
			}
		}
		obj.close();
	}
}