	var _openedInfowindow;
	var start_map_type = ($.cookie('saved_map_type') == 'google')? 'google' : 'yandex';
	var map_type = '';
	var map_type_flag = 'MAP';
	var maps = new Array;
	
	$(window).load(function() {
		$('.mtabs').click(function() {
			switchMap();
			return false;
		});
		
		initMaps();
	});

	function googleMaps(coords, map_id, fit, full_control) 
	{
		map_type = 'google';
		var bounds = new google.maps.LatLngBounds();

		var GoogleMapType = (map_type_flag == 'MAP')? google.maps.MapTypeId.ROADMAP : google.maps.MapTypeId.SATELLITE;

		var myOptions = {
			zoom: 3,//required
			center: new google.maps.LatLng(0,0),//required
			disableDefaultUI: false,
			mapTypeControl: false,
			zoomControl: false,
			minZoom: 3,
			streetViewControl: false, 
			mapTypeId: GoogleMapType
		};
		
		var map = new google.maps.Map(document.getElementById(map_id),myOptions);
		var latlng = new google.maps.LatLng(0,0);
		
		for(j = 0; j < coords.length; j++) {
			if (coords[j].lat && coords[j].lng) {
				var latlng = new google.maps.LatLng(coords[j].lat, coords[j].lng);
				addMarker(map, 'google', latlng, coords[j].maps_info, coords[j].is_settlement);
				bounds.extend(latlng);
			}
		}
		
		if (fit) {
			map.fitBounds(bounds);
		} else {
			map.setCenter(latlng);
		}

		var homeControlDiv = document.createElement('DIV');
		var homeControl = new addGoogleControl(homeControlDiv, map, full_control);
		homeControlDiv.index = 1;
		map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv);
		
		if (!fit) {
			map.setZoom(13);
		}

	}


	function yandexMaps(coords, map_id, fit, full_control)
	{
		map_type = 'yandex';

		var YandexMapType = (map_type_flag == 'MAP')? YMaps.MapType.MAP : YMaps.MapType.SATELLITE;
		var map = new YMaps.Map(document.getElementById(map_id));
		map.setType(YandexMapType);
		map.enableScrollZoom();

		if (full_control) {
			map.addControl(new YMaps.ToolBar());//линейка-рука
			map.addControl(new YMaps.Zoom());
		}

		var bounds = new YMaps.GeoCollectionBounds();

		for(j = 0; j < coords.length; j++) {
			if (coords[j].lat && coords[j].lng) {
				var latlng = new YMaps.GeoPoint(coords[j].lng, coords[j].lat);
				var placemark = new YMaps.Placemark(latlng);
				bounds.add(new YMaps.Point(coords[j].lng, coords[j].lat));
				addMarker(map, 'yandex', latlng, coords[j].maps_info, coords[j].is_settlement);
			}
		}

		map.addControl(new addYandexControl(full_control));
		
		map.setBounds(bounds);
		
		if (!fit) {
			map.setZoom(13);
		}
		
		$('.yandex_tab').addClass('activetab');
		$('.google_tab').removeClass('activetab');
	}

	function addMarker(map, system, position, info, is_novo)
	{
		var image = (is_novo)? '/img/mapicon_novo.png' : '/img/mapicon_settlement.png';

		if(system == 'google'){
			var objectMarker = new google.maps.Marker({
				position: position,
				map: map,
				icon: image
			});

			if(info != '') {
				var infowindow = new google.maps.InfoWindow({
					content: info
				});

				google.maps.event.addListener(objectMarker, 'click', function(){
					if(typeof _openedInfowindow != 'undefined')
						_openedInfowindow.close();

					infowindow.open(map, objectMarker);

					_openedInfowindow = infowindow;
				});
			}
		}

		if (system == 'yandex')
		{
			var ya = new YMaps.Style();
			ya.iconStyle = new YMaps.IconStyle();
			ya.iconStyle.offset = new YMaps.Point(-13, -25);
			ya.iconStyle.href = image;
			ya.iconStyle.size = new YMaps.Point(25, 25);

			var marker = new YMaps.Placemark( position, {style: ya});
			if(info != '') { marker.setBalloonContent(info);}
			map.addOverlay(marker);
		}
	}
	
	function addGoogleControl(div, map, full)
	{
		div.style.padding = "5px";
		div.style.position = 'absolute';
		div.className = 'map_control_bg';

		if(full)
		{
			var sattype = document.createElement('DIV');
			sattype.innerHTML = 'Спутник';
			sattype.className = 'map_control';
			div.appendChild(sattype);

			var maptype = document.createElement('DIV');
			maptype.innerHTML = 'Карта';
			maptype.className = 'map_control';
			div.appendChild(maptype);
		}

		if(full){
			google.maps.event.addDomListener(maptype, 'click', function() { 
				map.setMapTypeId(google.maps.MapTypeId.ROADMAP); 
				map_type_flag = 'MAP';
				maptype.className = 'left_corner map_control map_control_selected';
				sattype.className = 'right_corner map_control';
			});
			google.maps.event.addDomListener(sattype, 'click', function() { 
				map.setMapTypeId(google.maps.MapTypeId.SATELLITE); 
				map_type_flag = 'SATELLITE';
				sattype.className = 'right_corner map_control map_control_selected';
				maptype.className = 'left_corner map_control';
			});
			
			if(map_type_flag === 'MAP'){
				maptype.className = 'left_corner map_control map_control_selected';
				sattype.className = 'right_corner map_control';
			}else{
				sattype.className = 'right_corner map_control map_control_selected';
				maptype.className = 'left_corner map_control';
			}
		}
	}

	function addYandexControl(full) {
		this.onAddToMap = function (map, position) {
			this.map = map;
			this.position = new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT, new YMaps.Size(0, 0));

			this.div = $('<div>');
			this.div.css({padding: "5px", position: 'absolute', zIndex: YMaps.ZIndex.CONTROL}).addClass('map_control_bg');

			if(full){
				sattype = $('<div>');
				sattype.addClass('map_control').addClass('right_corner').html('Спутник');
				this.div.append(sattype);

				maptype = $('<div>');
				maptype.addClass('map_control').addClass('left_corner').html('Карта');
				this.div.append(maptype);
			}
			
			this.position.apply(this.div);
			this.div.appendTo(map.getContainer());

			if(full){
				maptype.click(function(){ 
					map.setType(YMaps.MapType.MAP);
					map_type_flag = 'MAP';
					maptype.addClass('map_control_selected');
					sattype.removeClass('map_control_selected');
				});
				sattype.click(function(){ 
					map.setType(YMaps.MapType.SATELLITE);
					map_type_flag = 'SATELLITE';
					sattype.addClass('map_control_selected');
					maptype.removeClass('map_control_selected');
				});

				if(map_type_flag == 'MAP'){
					maptype.addClass('map_control_selected');
					sattype.removeClass('map_control_selected');
				}else{
					sattype.addClass('map_control_selected');
					maptype.removeClass('map_control_selected');
				}
			}
		}
	}
	
	function initMaps() {
		for (i = 0; i < maps.length; i++) {
			if (start_map_type == 'google') {
				googleMaps(maps[i].objects, maps[i].map_id, maps[i].fit, maps[i].full_control);
				$('.google_tab').addClass('activetab');
				$('.yandex_tab').removeClass('activetab');
			} else {
				yandexMaps(maps[i].objects, maps[i].map_id, maps[i].fit, maps[i].full_control);
				$('.google_tab').removeClass('activetab');
				$('.yandex_tab').addClass('activetab');
			}
		}
	}
	
	function switchMap () {
		var mt = map_type;
		for (k = 0; k < maps.length; k++) {
			if (mt == 'yandex') {
				googleMaps(maps[k].objects, maps[k].map_id, maps[k].fit, maps[k].full_control);
				$.cookie('saved_map_type','google', cookie_settings);
				$('.google_tab').addClass('activetab');
				$('.yandex_tab').removeClass('activetab');
			} else {
				yandexMaps(maps[k].objects, maps[k].map_id, maps[k].fit, maps[k].full_control);
				$.cookie('saved_map_type','yandex', cookie_settings);
				$('.google_tab').removeClass('activetab');
				$('.yandex_tab').addClass('activetab');
			}
		}
	}
