
function prepareMapVer3(mapid, lat, lng) {  
	
	var oMapObject = new Object();
	oMapObject.map;
	oMapObject.chec;
	oMapObject.mapall;
	oMapObject.mapinitpos;
	oMapObject.sContent = '<div id="baloonevent" style="position:absolute;z-index:50;"><input type="hidden" value="" id="eid" /><div class="event_map_popupT"></div><div class="event_map_popupM"><div class="event_map_popupMC"><img alt="Close" id="event_map_pop_close" title="Close" src="images/icons/general/map_close_icon.gif" onclick="window.curMapObject.ib.close();"></div><div class="event_map_popupMC" id="nameDetails"></div><!-- for Event name --><div class="event_map_popupMain" id="pp"><!-- for event details --></div><div class="event_map_popupMain" style="display:none;" id="desc"><!--for description to load--></div><div class="event_map_popupMainDg"><span style="display:none;" id="map_close_hide"><a onclick="desc_sh_hide();" id="map_show3" class="a_ul"><b>Close Description</b></a></span><span id="pp1"><a class="a_ul" href="javascript:desc_sh();"><b>Read Description</b></a></span></div></div><div class="event_map_popupB"></div><div class="event_map_popupB1"><div class="event_map_popupB2"><img alt="" src="images/general/map_pointer.gif"></div></div></div>';
	oMapObject.setMarkers = new Array();
	oMapObject.ib = null;
	oMapObject.oMM = new oMarkersManager();
	oMapObject.varb = '';
	oMapObject.obj;
	oMapObject.mapDraggable= false;
	
	oMapObject.construct = function() {
		
		var myLatlng = new google.maps.LatLng(lat, lng);
		var myOptions = {
			zoom: 8,
			mapTypeControl: false,
			center: myLatlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};

		oMapObject.map = new google.maps.Map(document.getElementById(mapid), myOptions);
		oMapObject.map.setCenter(myLatlng);
		centerofmap = oMapObject.map.getCenter();
		google.maps.event.addListener(oMapObject.map, 'dragend', oMapObject.mapDrag); 
	//google.maps.event.addListener(map, 'zoom_changed', mapDrag);

	}

	oMapObject.mapDrag = function(){
		if(oMapObject.mapDraggable == true) {
			var bounds = oMapObject.map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			oMapObject.obj.searchConditions['geobox'] = Array();
			oMapObject.obj.searchConditions['geobox']['0'] = roundVal(northEast.lat());
			oMapObject.obj.searchConditions['geobox']['1'] = roundVal(southWest.lng());
			oMapObject.obj.searchConditions['geobox']['2'] = roundVal(southWest.lat());
			oMapObject.obj.searchConditions['geobox']['3'] = roundVal(northEast.lng());
			if(!oMapObject.obj.getValue('geodet', 1)) {
				oMapObject.obj.set('geodet',1);
			}
			oMapObject.obj.startSearch();
		}
	}

	oMapObject.setEvents = function(xml, idnum) {
		
		oMapObject.oMM.clear();
		google.maps.event.addListener(oMapObject.map, "dragstart", function() {
			if(gid('baloonevent'))
				gid('baloonevent').style.display = "none";
		});
		
		oMapObject.removeMarkers();
	  
	  /****************/
       var markers = xml.documentElement.getElementsByTagName('marker');
      //alert(markers);
		
		var myBoxOptions = {
					 content: oMapObject.sContent
					,disableAutoPan: false
					,pixelOffset: new google.maps.Size(-72, -222)                     
					,zIndex: null
					,infoBoxClearance: new google.maps.Size(1, 40)
					,isHidden: false
					,pane: "floatPane"
					,enableEventPropagation: false
					,boxStyle: {
                          width: "233px"
						  ,height: "200px"
                         }

			};
		oMapObject.ib = new InfoBox(myBoxOptions);
		
		var stnum = gid(idnum) ? parseInt(gid(idnum).innerHTML):0;
		var bounds = new google.maps.LatLngBounds();
		for (var i = 0; i < markers.length; i++) {
			var eid = markers[i].getAttribute('evid');
			var address = markers[i].getAttribute('address');
			var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
			if((i+stnum) > 9) {
				var sizeM = 25;
			} else if((i+stnum) > 99) {
				var sizeM = 30;
			} else {
				var sizeM = 21;
			}
			var image = new google.maps.MarkerImage('images/icons/googlemaps/marker_'+(i+stnum)+'.png', new google.maps.Size(sizeM, 27), new google.maps.Point(0, 0), new google.maps.Point(10, 5));

			var marker = oMapObject.createEventMarker(point, eid, image);
	
			oMapObject.oMM.add(marker);
			marker.setMap(oMapObject.map);
			oMapObject.setMarkers[i] = marker; 
			bounds.extend(point);
		}
		oMapObject.map.fitBounds(bounds);
		google.maps.event.addListener(oMapObject.map, 'idle', function() {
			oMapObject.mapinitpos = oMapObject.map.getBounds().getSouthWest();
		});
	}

	oMapObject.createEventMarker = function(point, eid, image) {
		var marker = new google.maps.Marker( {
			position : point,
			map : oMapObject.map, 
			icon: image,
			zIndex : null
		});
		oMapObject.attachPopupToMarker(marker,eid);
     
		return marker;
    }
	oMapObject.attachPopupToMarker = function(marker,eid)
	{
		google.maps.event.addListener(marker, "click", function() {
			oMapObject.loadPopup( eid, marker);
 		});
	}
	oMapObject.loadPopup = function(eid, marker, num) {
//                console.log('loadPopup eid='+eid+' marker='+marker+' num='+num);

                /************New Content******************/
		var content = gid('content_'+oMapObject.varb+eid);
	        var desc = (gid('description_'+oMapObject.varb+eid)||false) ? gid('description_'+oMapObject.varb+eid) : false;
		var eventName = gid('eventNameForMap_'+oMapObject.varb+eid).innerHTML;
		var show_description = desc ? '' : 'style="display:none"';
                oMapObject.sContent = '<div id="baloonevent" style="position:absolute;z-index:50;"><input type="hidden" value="" id="'+eid+'" /><div class="event_map_popupT"></div><div class="event_map_popupM"><div class="event_map_popupMC"><img alt="Close" id="event_map_pop_close" title="Close" src="images/icons/general/map_close_icon.gif" onclick="window.curMapObject.ib.close();"></div><div class="event_map_popupMC" id="nameDetails">'+eventName+'</div><!-- for Event name --><div class="event_map_popupMain" id="pp">'+content.innerHTML+'<!-- for event details --></div><div class="event_map_popupMain" style="display:none;" id="desc">'+desc.innerHTML+'<!--for description to load--></div><div class="event_map_popupMainDg"><span style="display:none;" id="map_close_hide"><a onclick="desc_sh_hide();" id="map_show3" class="a_ul"><b>Close Description</b></a></span><span id="pp1" '+show_description+'><a class="a_ul" href="javascript:desc_sh();"><b>Read Description</b></a></span></div></div><div class="event_map_popupB"></div><div class="event_map_popupB1"><div class="event_map_popupB2"><img alt="" src="images/general/map_pointer.gif"></div></div></div>'; 


                /************New Content******************/

		if(num) {
			if(oMapObject.oMM.disabled[num] == true) {
				//ib.open(map, oMM.markers[num]);
				return false;
			} else {
                                oMapObject.ib.setContent(oMapObject.sContent);
                 		oMapObject.ib.open(oMapObject.map, oMapObject.oMM.markers[num]);
			}
//			if(!gid('baloonevent')) { setTimeout("this.loadPopup(eid, '',oMapObject.oMM.markers[num])", 1000); }
		} else {
                        oMapObject.ib.setContent(oMapObject.sContent);
			oMapObject.ib.open(oMapObject.map, marker);
//			if(!gid('baloonevent')) { setTimeout("this.loadPopup(eid, marker)", 1000); }
		}

/****this version doesn't work somehow*****
		var content = gid('content_'+oMapObject.varb+eid);
		var description = (gid('description_'+oMapObject.varb+eid)||false) ? gid('description_'+oMapObject.varb+eid) : false;
		var eventName = gid('eventNameForMap_'+oMapObject.varb+eid).innerHTML;

		gid('pp'+oMapObject.varb).innerHTML = content.innerHTML;
		gid('desc'+oMapObject.varb).innerHTML = description ? description.innerHTML : '';

		gid('pp1'+oMapObject.varb).style.display = description ? '' : 'none';
		gid('eid'+oMapObject.varb).value = eid;
		gid('nameDetails'+oMapObject.varb).innerHTML = eventName;
		gid('baloonevent'+oMapObject.varb).style.display = '';
**********/
	}

	oMapObject.mapAll = function(obj){
		var len = oMapObject.oMM.getlength()+1; 
	 
	   if(obj.checked)
		{
			oMapObject.oMM.mapAll('show', oMapObject.map);
			for (var i=1;i<len;i++){
				gid(oMapObject.chec+i).checked = true;
			}
		}else{
			oMapObject.oMM.mapAll('hide');
			for (var i=1;i<len;i++){
				gid(oMapObject.chec+i).checked = false;
			}
			gid('baloonevent'+oMapObject.varb).style.display = 'none';
		
		}
	}

	oMapObject.ShowHideMarker = function(num){
	   oMapObject.oMM.showhideMarker(num, oMapObject.map);
	   var first = gid(oMapObject.chec+'1').checked;
		var len = oMapObject.oMM.getlength()+1; 
	   for (var i=2;i<len;i++){
			if( first != gid(oMapObject.chec+i).checked) {return false;}
	   }
		gid(oMapObject.mapall).checked = first;
	}

	oMapObject.removeMarkers = function() {
		if(oMapObject.setMarkers.length > 0) {
			for (var i = 0; i < oMapObject.setMarkers.length; i++) {
				oMapObject.setMarkers[i].setMap(null);
			}
			oMapObject.setMarkers.length = 0;
		}
	}
	
	return oMapObject;
}

    var oMarkersManager = function(){

        this.markers = new Array();
        this.disabled = new Array();

        this.add = function (marker)
        {
            this.markers.push(marker);
            this.disabled.push(0);
        };

        this.clear = function()
        {
            this.markers= new Array();
            this.disabled = new Array();
        };

        this.showhideMarker = function(num, mapob)
        {
            if(this.disabled[num] == true)
            {
                //this.markers[num].show();
				this.markers[num].setMap(mapob);
                this.disabled[num] = 0;
            }
            else
            {
                //this.markers[num].hide();
				this.markers[num].setMap(null);
                this.disabled[num] = 1;
            }
        };
        
        this.isDisabled = function(marker,num)
        {
        	if(num!==undefined)
        	{
        		return this.disabled[num] ? true : false; 
        	}
        	else
        	{
        		for(var i=0; i<this.markers.length;i++)
        		{
        			if(marker == this.markers[i] )
        			{
        				return this.disabled[i] ? true : false;
        			}
        		}
        	}
        };

        this.mapAll = function(act, mapob){
            for(var i=0;i<this.markers.length;i++)
            {
                if(act == 'show')
                { 
                	//this.markers[i].show();
					this.markers[i].setMap(mapob);
                	this.disabled[i] = 0;
                }
                if(act == 'hide')
                {
                	//this.markers[i].hide();
					//this.markers[i].style.display="none";
					this.markers[i].setMap(null);
                	this.disabled[i] = 1;
                }
            }
        };

        this.getlength = function(){
            return this.markers.length;
        };
		
    };

