function stripslashes( str ) {
	return (str+'').replace(/\0/g, '0').replace(/\\([\\'"])/g, '$1');
}
function addslashes( str ) {
	return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
}





var GM = {

loaded: false,

	map: '',
	bounds: '',
	geocoder: '',
	pointCoordinates: '',
	interval:'',
	retObj:'',
	intervalTime:50,
	file_path:'http://'+location.host+'/img/',
	url:'http://'+location.host+'/_json_/?mod=main_map_control',//url do jsona
	markersReq: '',
	mapListenersSet: false,

	currentCenter: '',
	currentCenterZoom: 0,

	dLatMain: 37.09024,
	dLngMain: -110.712891,
	dZoomMain: 4,

	dLat: 46.800059446787316,
	dLng: -92.109375,
	dZoom: 2,

	mainMapType: 'main',
	dContainerId: 'map',
	mapContainer: '',
	masterMapContainer: {width: ''},
	childMapContainer: {width: ''},
	orginStyleMainCenter: {margin: '',width: ''},
	orginStyleChildCenter: {width: ''},
	orginMapFilters: {height: ''},
	orginMapFiltersInner: {height: ''},
	bResized: false,

	GMLoaded: true,
	GMB: '',
	GKey: '',

	iMarkersArrayPosition: 0,
	fixedCurrentMarker: 0,

	bDontRegisterPosition:true,
	bClearOverlays:true,
	bAddCloud: true,
	bSetCenter: false,
	bMultiOn: false,

	sAssignId: undefined,
	sTransportType: undefined,

	aMarkersArray: new Array(),
	aMarkers: new Array(),

	sMapType: 'human',

	aIntervals: [],
	searchedUser: '',
	aMarkersList: [],
	aMarkersInfoData: [],

	icons:{
		busMan:'Manbus61x59.png,61,59,0,59,41,51',
		airMan:'ManAirplane61x59.png,61,59,0,59,67,59',
		traMan:'ManTrain61x59.png,61,59,0,59,41,49',
		boaMan:'ManBoat61x59.png,61,59,0,59,53,57',
		taxMan:'ManTaxi61x59.png,61,59,0,59,61,43',
		manMap:'man16x59.png,16,59,16,59,29,19',
		man:	 'man16x59.png,16,59,10,59,29,19',

		busWom:'Womanbus61x59.png,61,59,0,59,41,51',
		airWom:'WomanAirplane61x59.png,61,59,0,59,67,59',
		traWom:'WomanTrain61x59.png,61,59,0,59,41,49',
		boaWom:'WomanBoat61x59.png,61,59,0,59,53,57',
		taxWom:'WomanTaxi61x59.png,61,59,0,59,61,43',
		womMap:'woman13x59.png,13,59,0,59,29,19',
		wom:	 'woman13x59.png,13,59,10,59,29,19'
	},

	iconMaps:{
//		busMan:[0,0,60,0,60,26,14,26,0,46,4,24,0,24],
//		busWom:[0,0,60,0,60,26,14,26,0,46,4,24,0,24],

		traMan:[0,0,0,61,59,61,59,0],
		traWom:[0,0,0,61,59,61,59,0],
		busMan:[0,0,0,61,59,61,59,0],
		busWom:[0,0,0,61,59,61,59,0],
		airMan:[0,0,0,61,59,61,59,0],
		airWom:[0,0,0,61,59,61,59,0],
//		airWom:[0,0,8,0,18,8,42,4,60,20,56,24,19,24,0,48,8,24,2,17],

//		traMan:[0,0,46,0,60,19,60,23,16,23,1,48,3,24,0,24],
//		traWom:[0,0,46,0,60,19,60,23,16,23,1,48,3,24,0,24],

		boaMan:[15,0,27,0,27,7,31,7,31,15,48,15,48,26,59,26,49,41,26,41,4,58,12,41,0,41,0,26,3,26,3,14,11,14,11,6,15,6],
		boaWom:[15,0,27,0,27,7,31,7,31,15,48,15,48,26,59,26,49,41,26,41,4,58,12,41,0,41,0,26,3,26,3,14,11,14,11,6,15,6],

		taxMan:[28,0,33,0,46,14,59,17,59,31,47,37,29,32,4,56,6,32,0,32,0,15,11,15,19,6,25,6],
		taxWom:[28,0,33,0,46,14,59,17,59,31,47,37,29,32,4,56,6,32,0,32,0,15,11,15,19,6,25,6],

		Man:	 [1,0,14,0,14,42,0,57,3,40,3,19,1,19],
		Wom:	 [4,0,9,0,12,14,12,40,0,57,2,40,2,30,0,15],

		manMap:	 [1,0,14,0,14,42,0,57,3,40,3,19,1,19],
		womMap:	 [4,0,9,0,12,14,12,40,0,57,2,40,2,30,0,15]
	},

	options: {
		draggable: true,
		bouncy: false,
    dragCrossMove: false ,
    title: "",
		autoPan:true
	},

globalDataObject: {cacheChecked: false},

//zahashowane, bo możę się przydać
/*	loadScript: function(){
								if(this.GMLoaded===false && this.GKey != ''){
									var googleScriptSource = 'http://maps.google.com/maps?file=api&v=2&key='+this.GKey;
									var handler = document.createElement('script');
									handler.setAttribute('type','text/javascript');
									handler.setAttribute('src',googleScriptSource);
									$$('head')[0].appendChild(handler);
									this.GMLoaded = true;
								}							
							},*/


	_submitEnter: function(e,callback){
									var keycode;
									if(window.event){
										keycode = window.event.keyCode;
									}
									else if(e){
										keycode = e.which;
									}
									else{
										return true;
									}
									if(keycode == 13){
										try{
											eval(callback);
										}
										catch(e){}
										return false;
									}
									else{
										return true;
									}
							 },

	load: function(defaults){
					
					if(defaults == undefined){
						var GeoIP = true;
						defaults = new Object;
					}

/*					if(this.GKey == '' || this.GKey == undefined){
						alert('No google map key defined!');
					}
*/


					if(this.mainMapType=='main'){
						this.dLng = this.dLngMain;
						this.dLat = this.dLatMain;
						this.dZoom = this.dZoomMain;
					}

					if(this.GMLoaded===true){
						if (GBrowserIsCompatible()) {

							if(defaults != undefined){
								this.mapContainer = defaults.container != undefined ? defaults.container : this.dContainerId;
								var mapStartLng = defaults.lng != undefined ? defaults.lng : this.dLng;
								var mapStartLat = defaults.lat != undefined ? defaults.lat : this.dLat;
								var mapStartZoom = defaults.zoom != undefined ? defaults.zoom : this.dZoom;

								this.dContainerId = this.mapContainer;
								this.dLng = mapStartLng;
								this.dLat = mapStartLat;
								this.dZoom = mapStartZoom;

								this.bDontRegisterPosition = defaults.bDontRegister != undefined ? defaults.bDontRegister : false;
								this.bClearOverlays = defaults.bClearOverlays != undefined ? defaults.bClearOverlays : true;
								this.bAddCloud = defaults.bAddCloud != undefined ? defaults.bAddCloud : true;
								this.bSetCenter = defaults.bSetCenter != undefined ? defaults.bSetCenter : false;
	
								this.sTransportType = defaults.sTransportType != undefined ? defaults.sTransportType : undefined;
							}
							else{
								this.mapContainer = this.dContainerId;
								var mapStartLng = this.dLng;
								var mapStartLat = this.dLat;
								var mapStartZoom = this.dZoom;
							}
							
							if((defaults != undefined && defaults.bGetGeoIp==true) || (defaults == undefined)){
								try{
									if (google.loader.ClientLocation){
										mapStartLat = google.loader.ClientLocation.latitude;
										mapStartLng = google.loader.ClientLocation.longitude;
									}
								}
								catch(e){}
							}

							this.geocoder = new GClientGeocoder();
							this.GMB = google.maps;
							this.map = new GMap2($(this.mapContainer));
							this.map.enableContinuousZoom();
							
							if(this.mainMapType=='main'){
								this.map.enableScrollWheelZoom();
							}

							this.map.addControl(new GLargeMapControl());						
							
							if(errorReload==undefined){var errorReload=false;}
							if($('place') != null && $('place').value!='' && errorReload === true){
								this.findAddress($('place').value,'','latLngZoom');
								var ispoint = 0;
							}
							else{
								this.map.setCenter(new GLatLng(Number(mapStartLat), Number(mapStartLng)), Number(mapStartZoom));
								var ispoint = 0;
							}
	
							if(defaults.bDontShowPoint!==true){
								if(defaults != undefined && defaults.showPoint === true){
									defaults.lat = defaults.lat == undefined ? mapStartLat : defaults.lat;
									defaults.lng = defaults.lng == undefined ? mapStartLng : defaults.lng;
									if(defaults.assignTo!=undefined){
										this.sAssignId = defaults.assignTo;
									}
									this.addPoint(defaults);
									ispoint = 1;
								}
	
								if(ispoint==0){
									if(defaults.assignTo != undefined){
										this.sAssignId = defaults.assignTo;
										this.addPoint({lat:mapStartLat,lng:mapStartLng});
									}
									else{
										this.addPoint({lat:mapStartLat,lng:mapStartLng});
									}
								}
							}
						}
					}
				},

	appendOptions: function(data){},

	assignData: function(data){
//		if($('debug').style.position!='fixed'){
//			$('debug').style.position = 'fixed';
//		}
//		if(id==undefined){id = 'undefined';}
//		$('debug').innerHTML += id+'<br />';
								if(this.bDontRegisterPosition===false){
									$(this.sAssignId).value = data.x+','+data.y+','+data.zoom;
								}
							},

	addPoint: function(coords){
							if(this.bMultiOn == false){
								this.map.clearOverlays();
							}

							if(coords == undefined){
								coords = {};
							}
							var error = 0;
							var returnCoords = '';
							var map = this.map;

							if(coords.lat == undefined){
								error = 1;
							}
							if(coords.lng == undefined){
								error = 1;
							}
							if(error > 0){
								return false;
							}

							if(coords.assign == undefined && coords.assignTo != undefined){
								this.sAssignId = coords.assignTo;
							}
							if(this.bClearOverlays==true){
								map.clearOverlays();
							}

							var point = new GLatLng(coords.lat,coords.lng);
							
							if(this.bSetCenter === true){
								map.setCenter(point, this.dZoom);
							}

							if($('simpleMarkerChange')!=null && $('simpleMarkerChange').value!=''){
								coords.icon = GM.changeMarker($('simpleMarkerChange').value,'returnIcon');
							}

							if(coords.icon == false || coords.icon == '' || coords.icon == undefined){
								this.options.icon = this.changeMarker('returnIcon');
							}
							else{
								this.options.icon = coords.icon;
							}

//							this.options.title = coords.title;
							if(this.aMarkers.length==0){
								this.aMarkers[0] = new this.GMB.Marker(point, this.options);
								var marker = this.aMarkers[0];
							}
							else{
								this.aMarkers[this.aMarkers.length] = new this.GMB.Marker(point, this.options);
								var marker = this.aMarkers[this.aMarkers.length-1];							
							}
							
							this.aMarkersList[this.aMarkers.length-1] = coords.login;

							var pointInfo = {fname: coords.fname,country: coords.country,countryDomain: coords.countryDomain,id: coords.id,privatep: coords.privateProfile,notes: coords.notes,gender: coords.gender,genderName: coords.genderName,login: coords.login,thumb_path: coords.thumb_path,thumb_width: coords.thumb_width,thumb_height: coords.thumb_height};

							this.aMarkersInfoData[this.aMarkers.length-1] = pointInfo;

							returnCoords = marker.getLatLng();
							returnCoords.zoom = map.getZoom();

							GEvent.addListener(marker, "dragend", function() {
								returnCoords = marker.getLatLng();
								map.setCenter(returnCoords);
								returnCoords.zoom = map.getZoom();
								if(GM.sAssignId!=false && GM.sAssignId!=undefined){
									GM.assignData(returnCoords);
									return false;
								}
							});
							
							if(this.mapListenersSet===false){
								GEvent.addListener(map, "dragend", function() {
										returnCoords = marker.getLatLng();
										returnCoords.zoom = map.getZoom();
										if(GM.sAssignId!=false && GM.sAssignId!=undefined){
											GM.assignData(returnCoords);
											return false;
										}
										else{
											if(GM.markersReq!=''){
//												GM.addMassMarkers(GM.markersReq);
				                return false;
				              }
										}
								});
	
								GEvent.addListener(map, "zoomend", function(oldZoom,newZoom) {
										returnCoords = map.getCenter();
										returnCoords.zoom = map.getZoom();
										if(GM.sAssignId!=false && GM.sAssignId!=undefined){
											GM.assignData(returnCoords);
											return false;
										}
										else{
											if(GM.markersReq!=''){
//												GM.addMassMarkers(GM.markersReq);
					              return false;
				              }
										}
								});
								this.mapListenersSet=true;
							}

							if(this.bAddCloud==true){
									var _HTML = '<div style="width:200px;"><div style="position:relative;height:60px">';
									if(this.sMapType=='human'){
										_HTML += '			<div style="postion:absolute;left:0px;width:60px">';
										_HTML += '				<img src="'+coords.thumb_path+'" width="'+coords.thumb_width+'" height="'+coords.thumb_height+'" style="padding:2px;border:1px solid #ececec;">';
										_HTML += '			</div>';
	
										_HTML += '			<div style="position:absolute;left:60px;top:0px;"><span>   Name: '+coords.fname+'</span><br /><span> Gender: '+coords.genderName+'</span><br /><span>Country: '+coords.country+'</span><br /></div>';
	
										_HTML += '			<div style="position:absolute;right:-20px;top:25px;"><img src="/files/img/'+coords.countryDomain+'.png" width="24" height="13" /></div></div>';
									}
									if(coords.notes!=undefined){
										var notes = coords.notes;
										if(coords.notes.length>90){
											var notes = coords.notes.substring(0,90)+'...';
										}
									
										_HTML += '		<div ';
										if(this.sMapType=='human'){
											_HTML += 'style="border-top:2px solid #ececec;" ';
										}
										_HTML += '>'+notes+'</div></div>';
										if(this.sMapType=='event'){
											_HTML += '<div>note by: '+coords.fname+'</div>';
										}
										_HTML += '<div style="margin-top:10px;text-align:right;">';
									}
									if(this.sMapType=='human'){
										_HTML += '	<a href="javascript:;" onclick="overlay.openInfo(\''+coords.login+'\')">more info</a>';
									}
									else if(this.sMapType=='event'){
										_HTML += '	<a href="javascript:;" onclick="overlay.openInfo(\''+coords.login+'\',undefined,\'event\','+coords.id+')">more</a>';
									}
									_HTML += '	</div>';

								
								GEvent.addListener(marker, 'click', function() {
				          marker.openInfoWindowHtml(_HTML);
	
				          var iw = map.getInfoWindow();
				        });
							}
							
							map.addOverlay(marker);

							if(this.searchedUser == coords.login){
								marker.openInfoWindowHtml(_HTML);
							}

							if(coords.callback!=undefined && coords.callback!==false && coords.callback.length>0 && coords.callback!=null && coords.callback!='null'){
								eval(coords.callback+'(returnCoords)');
							}
							else if(this.sAssignId!==false || this.sAssignId!=undefined){
								if(this.sAssignId!=undefined){
									this.assignData(returnCoords);
								}
							}
							else{
								return returnCoords;
							}
						},

	getCachedAddress: function(req,address,callback){
											if(address!=undefined){

												if(callback!=undefined){
	                        this.addToGlobal('cacheCallback',callback);
	                      }

												url = this.url;
												url+='&a=getCache&address='+address;
												GetRequest(url,'GM.getCachedAddress','','topLoader');

											}

											else if(req!=undefined){
										    var json = req.responseText;
												alert(1);
									      var data = json.evalJSON();
												alert(2);
									      var res = data;
												alert(3);
												
												this.retObj = {lat: res.point.lat,lng: res.point.lng};
												alert(4);
												
												if(this.globalDataObject.cacheCallback!=undefined){
													alert(5);
													this.addToGlobal('cacheCheck',res.success);
												GM.siakalaka = this.type;	alert(6);
													this.addToGlobal('cacheChecked',true);
													alert(7);
													alert(this.globalDataObject.cacheCallback);
													eval(this.globalDataObject.cacheCallback);
													alert(8);
												}

												else{
													return res.success;
													alert(9);
												}
												alert(0);
												
											}
										},

	cacheAddress: function(req,address,callback){
									if(address!=undefined){
											url = this.url;
											url+='&a=cacheAddress&address='+address+'&latLng='+this.retObj.lat+'|'+this.retObj.lng;
											GetRequest(url,'GM.cacheAddress','','topLoader');
										}
										else if(req!=undefined){
									    var json = req.responseText;
								      var data = json.evalJSON();
								      var res = data;
										}
								},

asdfasdf: function(aassdd){
						alert(aassdd);
					},

	findAddress: function(address,callback,bReturn,bAutoAddPoint,bCacheAddress,bInstantCallback){
								 posAccepted = 1;
								 if(bReturn == undefined){
									 bReturn = false;
								 }
								 if(bAutoAddPoint == undefined){
									 bAutoAddPoint = true;
								 }
								 if(bCacheAddress == undefined){
									 bCacheAddress = true;

								 }
								 if(bInstantCallback == undefined){
									 bInstantCallback = false;
								 }

	/*										alert('sprawdzono cache? '+this.globalDataObject.cacheChecked);

								 if(this.globalDataObject.cacheChecked==false){
									 if(this.globalDataObject.secondShot===true){
	               		this.getCachedAddress(undefined,address,'GM.asdfasdf("'+address+'")');
									 }
									 else{
	               		this.getCachedAddress(undefined,address,'GM.findAddress("'+address+'")');
									 }
								 }
								 else{
								 		alert('sprawdzono cache');
										this.addToGlobal('cacheChecked',false);
										this.addToGlobal('secondShot',true);
								 }


									return false;*/

								 var return_ = '';
									this.geocoder.getLatLng(
										address,
										function(point) {
											if (!point) {
												return false;
											}
											else {
												GM.retObj = {
													lat: point.y,
													lng: point.x,
													center: GM.bSetCenter,
													callback: false
												}
												if((callback != undefined && callback.length > 0) || (this.sAssignId != undefined && this.sAssignId.length > 0)){
													if(callback != undefined && callback.length > 0){
														GM.retObj.callback = callback;
														if(bInstantCallback===true){
															eval(callback);
														}
													}
													if(bAutoAddPoint == true){
														GM.addPoint(GM.retObj)
													};
												}
												else{
													if(bAutoAddPoint == true){
														GM.addPoint(GM.retObj);
													}
												}
											 	if(bCacheAddress === true){
//											  	GM.cacheAddress(undefined,address);
											 	}
											}
										}
									);


							 },

	getUsersList: function(url,year,params){
									this.closeCloud();
									if(year!=undefined){
										url+='&year='+year;
									}
									if(params!=undefined){
										if(params[0]==undefined){
											var tmpParams = '';
											for(a in params){
												if(typeof(params[a])!='function'){
													if(tmpParams == ''){
														tmpParams = params[a];
													}
													else{
														tmpParams += ','+params[a];
													}
												}
											}
											params = tmpParams;
										}
										url+='&params='+params;
									}

									GetRequest(url,'GM.addMassMarkers','','topLoader');
								},

	print_r: function (res) {
						 var i=0;
					 	for(a in res){
							if(typeof(res[a])!='function'){
								if(typeof(res[a])=='object'){
									GM.print_r(res[a]);
								}
								else{
									alert(a+' => '+res[a]);
								}
								i++;
							}
							
						}
					 },

	addMassMarkers: function(req){
GM.loaded = false;
											if(this.aIntervals.length>0){
												return false;
//												this.clearInterval(0,1);
											}

//										$('kumbaja').innerHTML = '';
//										$('kumbajac').innerHTML = '';
											this.massMarkerAdding = true;

											this.markersReq = req;

											this.bMultiOn = true;
											this.map.clearOverlays();
									    var json = req.responseText;
								      var data = json.evalJSON();
								      var res = data;

											var i=0;
											var content = res.list;
											var pointCoords;
											this.options= {
																draggable: false,
																bouncy: false,
															  dragCrossMove: false ,
															  title: ""
											};

											this.aMarkersArray = new Array();
											this.iMarkersArrayPosition = 0;
											
											if(res.type=='es' || res.type=='fm'){
												this.sMapType = 'event';
											}
											else{
												this.sMapType = 'human';											
											}
											
											for(key in content){
												if(typeof(content[key])!='function'){

													var _res = content[key];
													if((_res.lat!==false && _res.lat!=undefined)  && (_res.lng!== false && _res.lng!= undefined)){
														var icon = new GIcon(G_DEFAULT_ICON);
														
														if(this.sMapType=='human'){
															var iconType = _res.gender=='m' ? 'manMap' : 'womMap';
															eval('var imgData = this.icons.'+iconType+'.split(\',\');');
															icon.image=this.file_path+imgData[0];
															icon.iconSize = new GSize(imgData[1], imgData[2]);
												      icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
															icon.shadowSize = new GSize(0,0);
															eval('icon.imageMap = this.iconMaps.'+iconType+';');
//												    icon.infoWindowAnchor = new GPoint(imgData[5],imgData[6]);
														}

														else{
															_res.gender = _res.searcherGender;

															var iconType = _res.gender=='m' ? 'manMap' : 'womMap';
															if(_res.transport!=null && res.type != 'fm'){
																iconType = _res.gender=='m' ? _res.transport+'Man' : _res.transport+'Wom';
															}
															eval('var imgData = this.icons.'+iconType+'.split(\',\');');
															icon.image=this.file_path+imgData[0];
															icon.iconSize = new GSize(imgData[1], imgData[2]);
												      icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
															icon.shadowSize = new GSize(0,0);
															eval('icon.imageMap = this.iconMaps.'+iconType+';');
															var vx = (imgData[5]/2) - icon.infoWindowAnchor.x;
											        var vy = (imgData[6]/2) - icon.infoWindowAnchor.y;
														  icon.infoWindowAnchor = new GPoint(vx,vy);
														}
														
														pointCoords = {lat: _res.lng,lng: _res.lat,icon: icon,fname: _res.fname,country: _res.country,countryDomain: _res.domain,id: _res.id,privatep: _res.privateProfile,notes: _res.notes,gender: _res.gender,genderName: _res.genderName,login: _res.login,thumb_path: _res.mini_path,thumb_width: _res.mini_width,thumb_height: _res.mini_height};
														
														this.aMarkersArray[i] = pointCoords;
													}
													else if(_res.city !== false && _res.city != undefined){
														this.findAddress(_res.country+', '+_res.city,undefined,undefined,true,false,true);
														this.aMarkersArray[i] = {lat: this.pointCoordinates.lng,lng: this.pointCoordinates.lat};
													}
													else{
														this.findAddress(_res.country,undefined,undefined,true,false,true);
														this.aMarkersArray[i] = {lat: this.pointCoordinates.lng,lng: this.pointCoordinates.lat};
													}
													i++;
												}
											}

//											if(this.iMarkersArrayPosition==0){
//												this.addPoint(this.aMarkersArray[this.iMarkersArrayPosition]);
//                       this.iMarkersArrayPosition = Number(this.iMarkersArrayPosition)+1;
//											}
											
											if(GM.aMarkersArray.length==0 && GM.loaded===false){
												GM.loaded = true;
											}
											
											if(GM.aMarkersArray.length>0){
						
												var validMarkers = 0;
												var validIds = '';

												GM.bounds = GM.map.getBounds();
//											  var southWest = bounds.getSouthWest();
//											  var northEast = bounds.getNorthEast();
//											  var lngSpan = northEast.lng() - southWest.lng();
//											  var latSpan = northEast.lat() - southWest.lat();

												for(key in GM.aMarkersArray){
													if(typeof(GM.aMarkersArray[key])!='function'){
//if((GM.aMarkersArray[key].lat >= southWest.lat() && GM.aMarkersArray[key].lat <= northEast.lat()) 
//															&& 
//															(GM.aMarkersArray[key].lng >= southWest.lng() && GM.aMarkersArray[key].lng <= northEast.lng()) 
//															){
															validMarkers++;
															validIds += '['+key+'],';
															var p = new GLatLng(GM.aMarkersArray[key].lat,GM.aMarkersArray[key].lng);
															GM.bounds.extend(p);
//														}
													}
												}

//												alert(validMarkers);
//												alert(validIds);

												$('mapLoader').show();
												$('mapLoaderFiller').innerHTML = '0/'+validMarkers;
		
//												$('dbgBottom').innerHTML = validIds+'<br />';

												var j = 0 ;
												var vvv = 0;
												var occuredLngs = new Array();
												var occuredLats = '';
												this.aIntervals[this.aIntervals.length] = window.setInterval(
														function(){
														
//														$('kumbaja').innerHTML = validIds;
//														vvv++;
//														$('kumbajac').innerHTML += '['+GM.iMarkersArrayPosition+'],';
															var length = GM.aMarkersArray.length;
															if(validIds.indexOf('['+GM.iMarkersArrayPosition+']')!=-1){
																
																if(occuredLats.indexOf(String(GM.aMarkersArray[GM.iMarkersArrayPosition].lat))!=-1){
																	var latCheck = occuredLats.indexOf(String(GM.aMarkersArray[GM.iMarkersArrayPosition].lat));
																	var latString = String(GM.aMarkersArray[GM.iMarkersArrayPosition].lat);
																	var lngArrayIndex = occuredLats.substr(latCheck,(latString.length+length+2));
																	lngArrayIndex = lngArrayIndex.substr(lngArrayIndex.indexOf('[')+1,lngArrayIndex.length);
																	lngArrayIndex = lngArrayIndex.substr(0,lngArrayIndex.indexOf(']'));
																	if(GM.aMarkersArray[GM.iMarkersArrayPosition].lng==occuredLngs[lngArrayIndex]){
																		var rnd1 = Number(Math.random().toFixed(2)/10);
																		var rnd2 = Number(Math.random().toFixed(2)/10);
																		var sign1 = Math.round(Math.random())==1 ? '+' : '-';
																		var sign2 = Math.round(Math.random())==1 ? '+' : '-';
																		var _lat = GM.aMarkersArray[GM.iMarkersArrayPosition].lat;
																		var _lng = GM.aMarkersArray[GM.iMarkersArrayPosition].lng;

																		//eval('GM.aMarkersArray[GM.iMarkersArrayPosition].lat = Number(_lat)'+sign1+'rnd1;');
																		//eval('GM.aMarkersArray[GM.iMarkersArrayPosition].lng = Number(_lng)'+sign2+'rnd2;');
																	}
																}
																
																occuredLats += String(GM.aMarkersArray[GM.iMarkersArrayPosition].lat)+'['+j+'],';
																occuredLngs[j] = GM.aMarkersArray[GM.iMarkersArrayPosition].lng;
																j++;
																GM.addPoint(GM.aMarkersArray[GM.iMarkersArrayPosition]);
																GM.iMarkersArrayPosition = Number(GM.iMarkersArrayPosition)+1;
																GM.fixedCurrentMarker++;
															}
															else{
																GM.iMarkersArrayPosition = Number(GM.iMarkersArrayPosition)+1;
															}

															var currentMarker = GM.fixedCurrentMarker;
															var percentWidth = (currentMarker*100)/validMarkers;

															var maxWidth = $('mapLoader').offsetWidth;
															percentWidth = Math.round((maxWidth*percentWidth)/100);
															percentWidth = Number(percentWidth)-2;
															if(percentWidth<0){percentWidth = 0;}
															if(isNaN(percentWidth)){
																percentWidth = 0;
															}
															percentWidth = String(percentWidth)+'px';
															$('mapLoaderFiller').style.width = percentWidth;
															$('mapLoaderFiller').innerHTML = currentMarker+'/'+validMarkers;
//
//															alert(validMarkers+' != '+GM.fixedCurrentMarker);

															if(GM.fixedCurrentMarker==validMarkers){
																GM.map.setZoom(GM.map.getBoundsZoomLevel(GM.bounds));
																GM.fixedCurrentMarker = 0;
																GM.iMarkersArrayPosition = 0;
																window.setTimeout("$('mapLoader').hide()",1500);
																GM.clearInterval();
																GM.loaded = true;
															}
//
														}
														,this.intervalTime
													);
											}
									},

	clearInterval: function(start,end){
									
									if(start==undefined){
										start=0;
									}
									
									if(end==undefined){
										end=0;
									}

									end = GM.aIntervals.length-end;

									for(var r=start;r<end;r++){
	                  window.clearInterval(GM.aIntervals[r]);
										GM.aIntervals = [];
									}

								 },

	changeMarker: function(type,bQuick) {
									if(bQuick===true){
											$('simpleMarkerChange').value = type;

											var last = this.aMarkers.length-1;
											last = this.aMarkers[last];							
											
											var icon = new GIcon(G_DEFAULT_ICON);
											eval('var imgData = this.icons.'+type+'.split(\',\');');
											icon.image=this.file_path+imgData[0];
											icon.iconSize = new GSize(imgData[1], imgData[2]);
							        icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
											icon.shadowSize = new GSize(0,0);
											eval('icon.imageMap = this.iconMaps.'+type+';');

											this.map.clearOverlays();
											var zoom = this.map.getZoom();
											var position = this.aMarkers[0].getLatLng();
											this.addPoint({lat:position.y,lng:position.x,icon:icon,zoom:zoom});
											return true;
									}
									else if(bQuick=='returnIcon'){
                      var icon = new GIcon(G_DEFAULT_ICON);
                      eval('var imgData = this.icons.'+type+'.split(\',\');');
                      icon.image=this.file_path+imgData[0];
                      icon.iconSize = new GSize(imgData[1], imgData[2]);
                      icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
                      icon.shadowSize = new GSize(0,0);
                      eval('icon.imageMap = this.iconMaps.'+type+';');

											return icon;
									}
									if(this.sTransportType!=undefined){
										var last = this.aMarkers.length-1;
										last = this.aMarkers[last];

										this.aMarkers = [];
										this.aMarkers[0] = last;
										if(type=='returnIcon'){
											id = $(this.sTransportType).value;
											id = id.split('|');
											if(id.length>1){id = id[id.length-1];}
											else{id = id[0];}
	
											if(id != false && id != '' && id != undefined && id != 'undefined'){
												var icon = new GIcon(G_DEFAULT_ICON);
												eval('var imgData = this.icons.'+id+'.split(\',\');');
												icon.image=this.file_path+imgData[0];
												icon.iconSize = new GSize(imgData[1], imgData[2]);
								        icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
												icon.shadowSize = new GSize(0,0);
												eval('icon.imageMap = this.iconMaps.'+id+';');
//								        icon.infoWindowAnchor = new GPoint(imgData[5],imgData[6]);
												return icon;
											}
											else{
												var icon = new GIcon(G_DEFAULT_ICON);
												return icon;											
											}
										}
										else{
											id = $(this.sTransportType).value;
											if(this.makeCorrect(id,true)===true){
												id = id;
											}
											else{
												id = $(this.sTransportType).value;
											}
											id = id.split('|');
											if(id.length>1){id = id[id.length-1];}
											else{id = id[0];}

											if(id != false && id != '' && id != undefined && id != 'undefined'){
												var icon = new GIcon(G_DEFAULT_ICON);
												eval('var imgData = this.icons.'+id+'.split(\',\');');
												icon.image=this.file_path+imgData[0];
												icon.iconSize = new GSize(imgData[1], imgData[2]);
								        icon.iconAnchor = new GPoint(imgData[3],imgData[4]);
												icon.shadowSize = new GSize(0,0);
												eval('icon.imageMap = this.iconMaps.'+id+';');
//								        icon.infoWindowAnchor = new GPoint(imgData[5],imgData[6]);
			
												this.map.clearOverlays();
												var zoom = this.map.getZoom();
												var position = this.aMarkers[0].getLatLng();
												this.addPoint({lat:position.y,lng:position.x,icon:icon,zoom:zoom});
											}
											else{
												var icon = new GIcon(G_DEFAULT_ICON);
			
												this.map.clearOverlays();
												var zoom = this.map.getZoom();
												var position = this.aMarkers[0].getLatLng();
												this.addPoint({lat:position.y,lng:position.x,icon:icon,zoom:zoom});											
											}
										}
									}
								},

	changeTo: function(what) {
							if(this.sTransportType!=undefined){
								var current = $(this.sTransportType).value;
								current = current.split('|');
								if(what=='genderOnly'){
									$(this.sTransportType).value = current[0];
								}
								//if obecnie marker to man albo woman i nowy to man albo woman
								else if(current.length==1 && (current[0]=='man' || current[0]=='wom') && (what == 'man' || what == 'wom')){
									$(this.sTransportType).value = what;
								}
								//if obecny to man albo woman i nowy to jakis typ transportu
								else if(current.length==1 && (current[0]=='man' || current[0]=='wom') && (what != 'man' && what != 'wom')){
									var first = current[0].substr(0,1);
									first = first.toUpperCase();
									var rest = current[0].substr(1,what.length);
									$(this.sTransportType).value = current[0]+'|'+what+first+rest;
								}
								//if obecnie jest jakis typ transportu i zmiana to man albo woman
								else if(current.length==2 && (what == 'man' || what == 'wom')){
									var postfix = what;
									postfix = postfix.substr(0,3);
									postfix = postfix.toLowerCase();
									
									var fPostfix = postfix.substr(0,1);
									var rPostfix = postfix.substr(1,postfix.length);

									fPostfix = fPostfix.toUpperCase();

									var prefix =  current[1].substr(0,3);

									var transport = prefix+fPostfix+rPostfix;

									$(this.sTransportType).value = what+'|'+transport;
								}
								//if obecny to jakis typ transportu i zmiana to jakis typ transportu
								else if(current.length==2 && (what != 'man' && what != 'wom')){
									var postfix = current[0];
									var fPostfix = postfix.substr(0,1);
									var rPostfix = postfix.substr(1,postfix.length);

									fPostfix = fPostfix.toUpperCase();

									var transport = what+fPostfix+rPostfix;

									$(this.sTransportType).value = current[0]+'|'+transport;								
								}
								else{
									$(this.sTransportType).value = what;
								}

								this.changeMarker();
							}
						},

	makeCorrect: function(data,bLeaveGender){
							 		var radios = $$('input');
									var value = '';

									for(i in radios){
										if(radios[i].type == 'radio' && radios[i].checked===true){
											if(radios[i].name=='gender'){
												if(bLeaveGender===true){
													var gender = data.substr(0,1);
												}
												else{
													var gender = radios[i].value;
												}
											}
											else if(radios[i].name=='meeting'){
												var meeting = radios[i].value;
												var selectedMeeting = radios[i].id;
											}
											else if(radios[i].name=='place_type'){
												var place_type = radios[i].id;
												if(meeting==1){
													radios[i].checked=false;
												}
											}
										}
										else if(radios[i].type == 'radio' && radios[i].checked!==true && radios[i].name=='meeting'){
											var notSelectedMeeting = radios[i].id;
										}
									}

									if(gender=='m'){gender = 'man';}
									else if(gender=='w'){gender = 'wom';}

									if(meeting==1){
										$('typesContainer').hide();
										value = gender;
									}
									else if(meeting==2){
										if(place_type==undefined){
											$('typesContainer').hide();
											$(selectedMeeting).checked = false;
											$(notSelectedMeeting).checked = true;

	                    value = gender;
										}
										else{
											var fGender = gender.substr(0,1);
											fGender = fGender.toUpperCase();
											var rGender = gender.substr(1,gender.length);
											value = gender+'|'+place_type+fGender+rGender;
										}
									}
									if(data!=value){
										$(this.sTransportType).value = value;
									}
									else{
										return true;
									}
							 },

	closeCloud:	function(){
								this.map.getInfoWindow().hide();
							},

	mapEnlarge: function(){
								var cWidth = parseInt($(this.mapContainer).style.width);
								var oWidth = '700px';
								var minWidth = 700;
								var minHeight = 300;
								
								if(this.bResized===false){
									this.orginStyleMainCenter.width = $('mainCenter').style.width;
									this.orginStyleMainCenter.margin = $('mainCenter').style.margin;
									this.orginStyleChildCenter.width = $('innerCenter').style.width;
									this.masterMapContainer.width = $('main_map').style.width;
									this.childMapContainer.width = $('childMapContainer').style.width;
									this.orginMapFilters.height = $('mapFilters').style.height+parseInt($('timeLineContainer').offsetHeight);
									this.orginMapFiltersInner.height = $('filtersInner').style.height+parseInt($('timeLineContainer').offsetHeight);
								}

								if(window.innerWidth){
									var wWidth = window.innerWidth;
									var wHeight = window.innerHeight;
								}
								else if(document.documentElement.clientWidth){
									var wWidth = document.documentElement.clientWidth+17;
									var wHeight = document.documentElement.clientHeight;
								}

								wWidth = wWidth-(parseInt($('mapFilters').style.width)+37);

								wHeight = wHeight-(parseInt($('header').offsetHeight)+parseInt($('timeLineContainer').offsetHeight)+10);

								if(wWidth<minWidth){
									wWidth = minWidth;
								}

								if(wHeight<minHeight){
									wHeight = minHeight;
								}
		
//								if(cWidth<wWidth){
//									$('mainCenter').style.position = 'absolute';
//									$('mainCenter').style.top = '66px';
//									$('mainCenter').style.left = '0px';
//									$('mainCenter').style.margin = '0';
//									$('mainCenter').style.zIndex = '9990';
									$('mainCenter').style.width = wWidth+(parseInt($('mapFilters').style.width)+20)+'px';

									$('innerCenter').style.width = wWidth+(parseInt($('mapFilters').style.width)+20)+'px';
									
									$(this.mapContainer).style.width = wWidth+'px';
									$(this.mapContainer).style.height = wHeight+'px';

									
									$('timeLineContainer').style.width = wWidth+12+'px';

									$('main_map').style.width = wWidth+'px';
									$('main_map').style.height = wHeight+'px';
									$('main_map').style.marginRight = '12px';
									
									$('childMapContainer').style.width = wWidth+'px';
									$('childMapContainer').style.height = wHeight+'px';

									wHeight = wHeight+parseInt($('timeLineContainer').offsetHeight)+4;

									$('mapFilters').style.height = wHeight+'px';
//									if(wHeight<746-359){
										$('filtersInner').style.overflow='auto';
//									}
//									else{
//										$('filtersInner').style.overflow='';
//									}
									if($('filtersInner').offsetHeight>200){
										$('filtersInner').style.height = (wHeight-25)+'px';
									}

//								$('bottom').style.position = 'absolute';
//								$('bottom').style.top = wHeight+'px';
//								$('bottom').style.left = '0px';
//								$('bottom').style.width = '100%';
//								$('bottom').style.zIndex = '9990';


									this.bResized = true;
//								}

/*								else{
                  $('mainCenter').style.position = '';
	                $('mainCenter').style.top = '';
	                $('mainCenter').style.left = '';

                  $('mainCenter').style.margin = this.orginStyleMainCenter.margin;
                  $('mainCenter').style.width = this.orginStyleMainCenter.width;
	                $('innerCenter').style.width = this.orginStyleChildCenter.width;
									$(this.mapContainer).style.width = oWidth;
									$('main_map').style.width = this.masterMapContainer.width;
									$('main_map').style.marginRight = '';
									$('childMapContainer').style.width = this.childMapContainer.width;
									this.bResized = false;
								}*/
								this.map.checkResize();
							},

	showUser:	function(login,country,lat,lng){
              var zoom = this.map.getZoom();
							this.currentCenter = this.map.getCenter();
							this.currentCenterZoom = zoom;

							this.searchedUser = login;
							var moved = false;

							if(lat==0 && lng==0){
							 	this.findAddress(country,'GM.showUser("'+login+'","'+country+'",GM.retObj.lat,GM.retObj.lng)',false,false,false,true);
								this.searchedUser = '';
								return false;
							}
							else{
								if(this.currentCenter.lat() != lat && this.currentCenter.lng() != lng){
									this.map.setCenter(new GLatLng(Number(lat), Number(lng)), Number(zoom));
//									GM.addMassMarkers(GM.markersReq);
									moved = true;
								}
							}
							
//							if(moved==false){
								for(a in this.aMarkersList){
									if(typeof(this.aMarkersList[a])!='function'){
										if(this.aMarkersList[a]==this.searchedUser){
											var markerID = a;
										}
									}
								}
							
								var info = this.aMarkersInfoData[markerID];
								
								var fname = info.fname!==false ? info.fname : '';
								var lname = info.lname !== false ? info.lname : '';
								var login = info.login !== false ? info.login : '';
								var country = info.country != false ? info.country : '';
									var _HTML = '<div style="width:200px;"><div style="position:relative;height:60px">';
									if(this.sMapType=='human'){
										_HTML += '			<div style="postion:absolute;left:0px;width:60px">';
										_HTML += '				<img src="'+info.thumb_path+'" width="'+info.thumb_width+'" height="'+info.thumb_height+'" style="padding:2px;border:1px solid #ececec;">';
										_HTML += '			</div>';
	
										_HTML += '			<div style="position:absolute;left:60px;top:0px;"><span>   Name: '+info.fname+'</span><br /><span> Gender: '+info.genderName+'</span><br /><span>Country: '+info.country+'</span><br /></div>';
	
										_HTML += '			<div style="position:absolute;right:-20px;top:25px;"><img src="/files/img/'+info.countryDomain+'.png" width="24" height="13" /></div></div>';
									}
									if(info.notes!=undefined){
										var notes = info.notes;
										if(info.notes.length>90){
											var notes = info.notes.substring(0,90)+'...';
										}
									
										_HTML += '		<div ';
										if(this.sMapType=='human'){
											_HTML += 'style="border-top:2px solid #ececec;" ';
										}
										_HTML += '>'+notes+'</div></div>';
										if(this.sMapType=='event'){
											_HTML += '<div>note by: '+fname+'</div>';
										}
										_HTML += '<div style="margin-top:10px;text-align:right;">';
									}
									if(this.sMapType=='human'){
										_HTML += '	<a href="javascript:;" onclick="overlay.openInfo(\''+info.login+'\')">more info</a>';
									}
									else if(this.sMapType=='event'){
										_HTML += '	<a href="javascript:;" onclick="overlay.openInfo(\''+info.login+'\',undefined,\'event\','+info.id+')">more</a>';
									}
									_HTML += '	</div>';

								this.aMarkers[markerID].openInfoWindowHtml(_HTML);
//							}
								this.searchedUser = '';

						},

	returnPrevPos:	function(){
							//			this.map.clearOverlays();
										this.map.getInfoWindow().hide();
										this.searchedUser = '';
										this.map.setCenter(this.currentCenter, this.currentCenterZoom);
									},

	addToGlobal:	function(varName,value){
									var vals = '';
									if((!isNaN(value) || typeof(value)=='boolean' || typeof(value)=='object') && typeof(value)!='function'){
										value = value;
									}
									else if(isNaN(value)){
										value = addslashes(value);
									}

									for(iterator in this.globalDataObject){
										if(typeof(this.globalDataObject[iterator])!='function'){
											if(iterator==varName){
												this.globalDataObject[iterator] = value;
												return true;
											}
											else{
												if((!isNaN(this.globalDataObject[iterator]) || typeof(this.globalDataObject[iterator])=='boolean' || typeof(this.globalDataObject[iterator])=='object') && typeof(this.globalDataObject[iterator])!='function'){
													vals += iterator+': '+this.globalDataObject[iterator]+',';
												}
												else if(isNaN(this.globalDataObject[iterator])){
													this.globalDataObject[iterator] = ""+this.globalDataObject[iterator]+"";
													vals += iterator+': "'+this.globalDataObject[iterator]+'",';
												}
											}
										}
									}
									this.print_r(this.globalDataObject);
									eval('this.globalDataObject = {'+vals+varName+': value};');									
								}

}
