function generateMapVer( mapid, lat, lng ) {

	var oMapObj = new Object();
	oMapObj.marker = null;
	oMapObj.polyPoints = new Array();
	oMapObj.fillColor = "#FF0000"; // red fill
	oMapObj.fillColorcur = "#FF0000";

	oMapObj.lineColorcur = "#FF0000";
	oMapObj.obj;
	oMapObj.polygonlineColor = "#FF0000";
	oMapObj.fillopacity = .5;
	//For Rectangle
	oMapObj.recheight = 0.003;
	oMapObj.recwidth = 0.005;
	oMapObj.openw;
	oMapObj.childbackgroundcolor = "#ffffff";
	oMapObj.mapZoomval =  { 19: 1128.49722, 18: 2256.99444, 17: 4513.98888, 16: 9027.977761, 15: 18055.95552, 14: 36111.91104, 13: 72223.82209, 12: 144447.6442, 11: 288895.2884, 10: 577790.5767, 9: 1155581.153, 8: 2311162.307, 7: 4622324.614, 6: 9244649.227, 5: 18489298.45, 4: 36978596.91, 3: 73957193.82, 2: 147914387.6, 1: 295828775.3, 0: 591657550.5};
	oMapObj.poly, oMapObj.mapview;
	oMapObj.markers =  new Array();

	oMapObj.construct = function(varia) {
		if(varia != 'no') {
			var myLatlng = new google.maps.LatLng(lat, lng);
			var myOptions = {
				zoom: 15,
				mapTypeControl: false,
				center: myLatlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP,
				draggableCursor:'default',draggingCursor:'pointer'
			};
		
			oMapObj.mapview = new google.maps.Map(document.getElementById(mapid), myOptions);
			oMapObj.mapview.setCenter(myLatlng);
			centerofmap = oMapObj.mapview.getCenter();
		}
		oMapObj.rectangle = new google.maps.Rectangle({
			map: oMapObj.mapview,
			 fillColor: oMapObj.childbackgroundcolor,
			strokeColor: oMapObj.polygonlineColor,
			fillOpacity: oMapObj.fillopacity
        });
  
		google.maps.event.addListener(oMapObj.mapview, 'click', function(event){
			var zoomVal = oMapObj.mapview.getZoom(); 
			var zrecheight = Math.round(((oMapObj.recheight * oMapObj.mapZoomval[zoomVal])/oMapObj.mapZoomval[15])*100000)/100000;
			var zrecwidth = Math.round(((oMapObj.recwidth * oMapObj.mapZoomval[zoomVal])/oMapObj.mapZoomval[15])*100000)/100000; 
			var lat = event.latLng.lat();
			var lon = event.latLng.lng();
			var latOffset = zrecheight;
			var lonOffset = zrecwidth;
			var firstPoint = new google.maps.LatLng(parseFloat(lat - latOffset),parseFloat(lon - lonOffset));
			var secondPoint = new google.maps.LatLng(parseFloat(lat + latOffset),parseFloat(lon - lonOffset));
			var thirdPoint = new google.maps.LatLng(parseFloat(lat + latOffset),parseFloat(lon + lonOffset));
			var fourthPoint = new google.maps.LatLng(parseFloat(lat - latOffset),parseFloat(lon + lonOffset));
			oMapObj.polyPoints[0] = firstPoint;
			oMapObj.polyPoints[1] = secondPoint;
			oMapObj.polyPoints[2] = thirdPoint;
			oMapObj.polyPoints[3] = fourthPoint;
			oMapObj.createRectangle();
			if(oMapObj.openw == 1) {
				gid('mapTopBarArrw').style.visibility="visible";
				gid('mapTopBarBtn').style.visibility="visible";
			}
		}); 
	
    //google.maps.event.addListener(mapview,"zoomend",mapzoom);

	}


	oMapObj.createRectangle = function() {
		for(var i=0; i< oMapObj.polyPoints.length; i++) {
			if(oMapObj.markers.length > 0) {
				oMapObj.markers[i].setMap(null);
			}
		}
		oMapObj.markers.length = 0;
		var image = new google.maps.MarkerImage('/images/icons/googlemaps/box.gif', new google.maps.Size(11, 11), new google.maps.Point(0, 0), new google.maps.Point(5, 5));
		for(var i=0; i<oMapObj.polyPoints.length; i++) {
			var marker = new google.maps.Marker({
			  position: oMapObj.polyPoints[i],
			  map: oMapObj.mapview,
			  draggable: true,
			  icon: image,
			  title: 'Drag me'
			});
			oMapObj.markers[i] = marker;
			
		}
			google.maps.event.addListener(oMapObj.markers[0], 'drag', function() {
				oMapObj.markers[1].setPosition(new google.maps.LatLng(oMapObj.markers[1].getPosition().lat(), oMapObj.markers[0].getPosition().lng()));
				oMapObj.markers[3].setPosition(new google.maps.LatLng(oMapObj.markers[0].getPosition().lat(), oMapObj.markers[3].getPosition().lng()));
				oMapObj.redraw();
			});
			google.maps.event.addListener(oMapObj.markers[1], 'drag', function() {
				oMapObj.markers[2].setPosition(new google.maps.LatLng(oMapObj.markers[1].getPosition().lat(), oMapObj.markers[2].getPosition().lng()));
				oMapObj.markers[0].setPosition(new google.maps.LatLng(oMapObj.markers[0].getPosition().lat(), oMapObj.markers[1].getPosition().lng()));
				oMapObj.redraw();
			});
			google.maps.event.addListener(oMapObj.markers[2], 'drag', function() {
				oMapObj.markers[3].setPosition(new google.maps.LatLng(oMapObj.markers[3].getPosition().lat(), oMapObj.markers[2].getPosition().lng()));
				oMapObj.markers[1].setPosition(new google.maps.LatLng(oMapObj.markers[2].getPosition().lat(), oMapObj.markers[1].getPosition().lng()));
				oMapObj.redraw();
			});
		
			google.maps.event.addListener(oMapObj.markers[3], 'drag', function() {
				oMapObj.markers[2].setPosition(new google.maps.LatLng(oMapObj.markers[2].getPosition().lat(), oMapObj.markers[3].getPosition().lng()));
				oMapObj.markers[0].setPosition(new google.maps.LatLng(oMapObj.markers[3].getPosition().lat(), oMapObj.markers[0].getPosition().lng()));
				oMapObj.redraw();
			});

		oMapObj.redraw();
	}

	oMapObj.redraw= function() {
		if(oMapObj.markers[2].getPosition().lng() > oMapObj.markers[0].getPosition().lng()) {
		var latLngBounds = new google.maps.LatLngBounds(
				oMapObj.markers[0].getPosition(),
				 oMapObj.markers[2].getPosition()
			);
		} else {
			 var latLngBounds = new google.maps.LatLngBounds(
				oMapObj.markers[2].getPosition(),
				 oMapObj.markers[0].getPosition()
			);
		}
		oMapObj.rectangle.setBounds(latLngBounds);

	}

	oMapObj.search = function () {
		oMapObj.obj.searchConditions['geobox']['0'] = roundVal(oMapObj.markers[3].getPosition().lat());
		oMapObj.obj.searchConditions['geobox']['1'] = roundVal(oMapObj.markers[3].getPosition().lng());
		oMapObj.obj.searchConditions['geobox']['2'] = roundVal(oMapObj.markers[1].getPosition().lat());
		oMapObj.obj.searchConditions['geobox']['3'] = roundVal(oMapObj.markers[1].getPosition().lng());
	}
	return oMapObj;
}

function roundVal(val){
    if(val.toString().length < 9){
        return val;
    }else{
    	var dec = 6;
    	var result = Math.round(val*Math.pow(10,dec))/Math.pow(10,dec);
    	return result;
    }
}
