var COLORS = [["red", "#ff0000"], ["orange", "#ff8800"], ["green","#008000"],
              ["blue", "#000080"], ["purple", "#800080"]];
var options = {};
var map;
var showed_markers = new Array();
var showed_travels = new Array();
var show_travels = true;
var pano_layer;
var noloadmarkers = 0;
var gmap_infowindow_visible = false;

var iconRed = new GIcon(); 
iconRed.image = '/bitrix/templates/xteam2/images/map/ico_o.png';
iconRed.shadow = '/bitrix/templates/xteam2/images/map/ico_sh.png';
iconRed.iconSize = new GSize(25, 30);
iconRed.shadowSize = new GSize(35, 30);
iconRed.iconAnchor = new GPoint(7, 30);
iconRed.infoWindowAnchor = new GPoint(7, 30);

var iconGreen = new GIcon(); 
iconGreen.image = '/bitrix/templates/xteam2/images/map/ico_g.png';
iconGreen.shadow = '/bitrix/templates/xteam2/images/map/ico_sh.png';
iconGreen.iconSize = new GSize(25, 30);
iconGreen.shadowSize = new GSize(35, 30);
iconGreen.iconAnchor = new GPoint(7, 30);
iconGreen.infoWindowAnchor = new GPoint(7, 30);

var customIcons = [];
customIcons["travel_g"] = iconGreen;
customIcons["travel_o"] = iconRed;

var iconBg_w = new GIcon(); 
iconBg_w.image = '/bitrix/templates/xteam2/images/map/img_marker_bg.png';
iconBg_w.shadow = '/bitrix/templates/xteam2/images/map/img_marker_bg.png';
iconBg_w.transparent = '/bitrix/templates/xteam2/images/map/img_marker_spacer.png';
iconBg_w.iconSize = new GSize(34, 39);
iconBg_w.shadowSize = new GSize(34, 39);
iconBg_w.iconAnchor = new GPoint(9, 26);
iconBg_w.infoWindowAnchor = new GPoint(17, 0);

var iconBg_o = new GIcon(iconBg_w); 
iconBg_o.image = '/bitrix/templates/xteam2/images/map/img_marker_bg_o.png';
iconBg_o.shadow = '/bitrix/templates/xteam2/images/map/img_marker_bg_o.png';

var photo_icon = new GIcon(); 
photo_icon.iconSize = new GSize(28, 28);
photo_icon.shadowSize = new GSize(28, 28);
photo_icon.transparent = '/bitrix/templates/xteam2/images/map/img_marker_spacer.png';
photo_icon.iconAnchor = new GPoint(6, 23);
photo_icon.infoWindowAnchor = new GPoint(18, 7);

customIcons["iconBg_w"] = iconBg_w;
customIcons["iconBg_o"] = iconBg_o;
customIcons["photo_icon"] = photo_icon;

var markerGroups = {"travel_g": [], "travel_o": [], "iconBg_w": [], "iconBg_o": [], "photo_icon": [], "place_polygon": [], "google": []};
var geocoder = null;
var __debug__ = null;

var handXHR = new Array();
var searchXHR = new Array();

var can_ajax_markers_2 = true;

var filt_min_x;
var filt_max_x;
var filt_min_y;
var filt_max_y;
var startX, startY, stopX, stopY; //для проверки передвижения внутри подкаченной зоны

function initialize(){

	if (!GBrowserIsCompatible())
		return false;

	var prev_center; //GLatLng
	filt_min_x = $('#filt_min_x').get();
	filt_max_x = $('#filt_max_x').get();
	filt_min_y = $('#filt_min_y').get();
	filt_max_y = $('#filt_max_y').get();
	
   	map = new GMap2(document.getElementById("map"));
   	
   	if (Tbounds) {
   		map.setCenter(Tbounds.getCenter(), map.getBoundsZoomLevel(Tbounds));
   	} else {
   		var zoom = 3;
   		var latlng = new google.maps.LatLng(55.732523, 37.625384);
   		/*
   		if (google.loader.ClientLocation) {
   			zoom = 13;
   			latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
   		}
   		*/
   	}
   	
   	map.setCenter(latlng, zoom);
   	map_type_set(0);
   	
   	var omc = new GOverviewMapControl();
   	//omc.setMapType(G_NORMAL_MAP);
   	map.addControl(omc);
   	map.clearOverlays();
   	map.addControl(new GScaleControl());
   	
   	if (PAGE_PANO_COUNT > 0) {
   		pano_layer = new PanoramioLayer(map);
   		if (show_pano) 
   			pano_layer.enable();
   	}
   	
   	GEvent.addListener(map, 'moveend', function(){
   		if (prev_center == map.getCenter())
   			return true;
   		if (checkDrag()) {
			updateBounds();
   			ajax_markers();
   		}
   		prev_center = map.getCenter();
   	});
   	GEvent.addListener(map, 'zoomend', function(){
   		updateBounds();
   		ajax_markers();
   		map_zoom_scroll_act();
   	});
   	GEvent.addListener(map, 'infowindowclose', function(){
   		gmap_infowindow_visible = false;
   	});
   	GEvent.addListener(map, 'infowindowopen', function(){
   		gmap_infowindow_visible = true;
   	});

   	ajax_markers();
   	updateBounds();
   	map_zoom_scroll_act();
   	arTypes = map.getMapTypes();
   	//map.setMapType(arTypes[2]);

	geocoder = new GClientGeocoder();
	/*
	__debug__ = document.createElement('div');
	__debug__.style.display = 'block';
	__debug__.style.position = 'fixed';
	__debug__.style.top = '0px';
	__debug__.style.left = '0px';
	__debug__.style.border = '1px solid red';
	document.getElementsByTagName('body')[0].appendChild(__debug__);
	__debug__.innerHTML = 'sdsdfsdfs';
	*/
}

function updateBounds()
{
	startX = map.getBounds().getNorthEast().lng();
	stopX = map.getBounds().getSouthWest().lng();
	startY = map.getBounds().getNorthEast().lat();
	stopY = map.getBounds().getSouthWest().lat();
	var deltaX = Math.abs(startX - stopX) / 3;
	var deltaY = Math.abs(startY - stopY) / 3;
	startX -= deltaX; stopX += deltaX;
	startY -= deltaY; stopY += deltaY;
}

function checkDrag(){
	//alert("zoom: " + map.getZoom() + "\r\ncenter Y: " + map.getCenter().lat() + ",\r\nmax Y: " + startY + ",\r\nmin Y: " + stopY + ",\r\ncenter X: " + map.getCenter().lng() + ",\r\nmin X: " + startX + ",\r\nmax X: " + stopX);
	if (gmap_infowindow_visible)
		return false;
	/*
	if (map.getZoom() < 6)
		return true;
	*/
	if ((map.getCenter().lat() <= startY) &&
		(map.getCenter().lat() >= stopY) &&
		(map.getCenter().lng() <= startX) &&
		(map.getCenter().lng() >= stopX))
	{
		return false;
	} else {
		return true;
	}
}


var searchtext = '';

function showAddress(address) {

	for (i in markerGroups['google']) {
		var marker = markerGroups['google'][i];
		map.removeOverlay(marker);
	}

searchtext = address;
  if (global_i == 0){
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " не найден.");
            } else { 
              clear_markers(true);
			  noloadmarkers=1;
              map.setCenter(point, 8);
              var marker = new GMarker(point);
				GEvent.addListener(marker, "click", function(LatLng) {
					map.openInfoWindowHtml(LatLng, address);
				});
              map.addOverlay(marker);
			  markerGroups['google'].push(marker);
			  GEvent.trigger(marker, "click", point);
              //marker.openInfoWindowHtml(address);
            }
          }
        );
      }
  } else {
	ajax_markers_search($('#map_address').val());
  }
  return false;
}



//маркер - фотка
function createMarkeredLabel(point,type,src,html,polygon,id) {
	marker_bg = new GMarker(point,customIcons[type]);
	map.addOverlay(marker_bg);
	markerGroups[type].push(marker_bg);
	
	customIcons['photo_icon'].image = src;
	var marker = new GMarker(point,customIcons['photo_icon']);
	GEvent.addListener(marker, "click", function(LatLng) {
		map.openInfoWindowHtml(LatLng, html);
	});
	
	if(polygon!=""){
		GEvent.addListener(marker, "mouseover", function() {
			polygon.setStrokeStyle({opacity: 1});
			polygon.setFillStyle({opacity: 0.25});
		});
		GEvent.addListener(marker, "mouseout", function() {
			polygon.setStrokeStyle({opacity: 0.3});
			polygon.setFillStyle({opacity: 0.1});
		});
	}
	
	map.addOverlay(marker);
	markerGroups['photo_icon'][id] = marker;
}



//создать маркер
function createMarker(point, name, html, type, id) {
	var marker = new GMarker(point, customIcons[type]);
	markerGroups[type][id] = marker;

	GEvent.addListener(marker, 'click', function(LatLng) {
		//marker.openInfoWindowHtml(html);
		map.openInfoWindow(LatLng, html);
	});
	return marker;
}
	

//createPolygon
function createPolygon(pts, color, html){
	var polygon = new GPolygon(pts, color, 3, 0.3, color, 0.1);
	map.addOverlay(polygon);
	GEvent.addListener(polygon, "click", function(latlng, index) {
		map.openInfoWindowHtml(latlng,html);
	});
	return polygon;
}



//галочка - показать существующие места
function toggleGroup() {
	var places = new Array("iconBg_w", "iconBg_o", "photo_icon", "place_polygon");
	if (document.getElementById('show_place_ch').checked) show_places = true;  else show_places = false;
	for (key in places) {
		for (i in markerGroups[places[key]]) {
			var marker = markerGroups[places[key]][i];
			try{
    			if (show_places){
    					marker.show();

    			} else {
    				if(marker)
    					marker.hide();
    			}
    		} catch(ex) {}
		}
	}
	if (show_places){
		ajax_markers();
	}
}

//убрать все маркеры
function clear_markers(place){
	if (!place) {
		markers = new Array("travel_g", "travel_o", "iconBg_w","iconBg_o","photo_icon","place_polygon");
		showed_travels = [];
		showed_markers = [];
	} else {
		markers = new Array("iconBg_w","iconBg_o","photo_icon","place_polygon");
		showed_markers = [];
	}
	for (key in markers) {
		for (i in markerGroups[markers[key]]) {
			var marker = markerGroups[markers[key]][i];
			map.removeOverlay(marker);
		}
	}
	map.closeInfoWindow();
}


//показать тучу маркера
function ShowMarker(id, type){
	if(type=="divplace")
		var marker = markerGroups["photo_icon"][id];
	else if(type=="divtravel"){
		if(markerGroups["travel_o"][id])
			var marker = markerGroups["travel_o"][id];
		else
			var marker = markerGroups["travel_g"][id];
	}
	
	if(marker){
		LatLng = marker.getLatLng();
		GEvent.trigger(marker, "click", LatLng);
	}
}

function map_zoom_plus(){
	map.zoomIn();
}
function map_zoom_min(){
	map.zoomOut();
}
function map_zoom_set(zoom){
	map.setZoom(zoom);
}
function map_zoom_scroll_act(){
	var zoom = map.getZoom();
	var flag = 0;
	for (i = 0; i <= 19; i++) {
		if (i > zoom) 
			flag = 1;
		if (flag == 0) 
			document.getElementById("map_zoom_level_" + i).className = "map_zoom_level_a";
		else 
			document.getElementById("map_zoom_level_" + i).className = "map_zoom_level_n";
	}
}

function map_type_set(type){
	arTypes = map.getMapTypes();
	map.setMapType(arTypes[type]);
	for (i = 0; i <= 2; i++) {
		if (i == type) 
			document.getElementById("map_type_" + i).className = "map_type_item_a";
		else 
			document.getElementById("map_type_" + i).className = "map_type_item_n";
	}
}

function pano_layer_rubilnik() {
	if(PAGE_PANO_COUNT>0){
		if (document.getElementById('pano_layer_ch').checked)
			pano_layer.enable();
		else
			pano_layer.disable();
	}
}

function pano_layer_rubilnik() {
	if(PAGE_PANO_COUNT>0){
		if (document.getElementById('pano_layer_ch').checked)
			pano_layer.enable();
		else
			pano_layer.disable();
	}
}

function ajax_markers(ex_place, clear) {
	if (!can_ajax_markers_2)
		return 1;

	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	
	var get = "minx="+southWest.lng()+"&maxx="+northEast.lng()+"&miny="+southWest.lat()+"&maxy="+northEast.lat();
	
	$(filt_min_x).val(southWest.lng());
	$(filt_max_x).val(northEast.lng());
	$(filt_min_y).val(southWest.lat());
	$(filt_max_y).val(northEast.lat());

	//alert($('#arrFilter_pf[duration]'))
	//alert(document.forms['arrFilter_form'].elements['arrFilter_pf[price]'].selectedIndex)
	var obj_price = document.forms['arrFilter_form'].elements['arrFilter_pf[price]'];
	if(typeof obj_price.selectedIndex != 'undefined'){
		prop_price = obj_price.options[obj_price.selectedIndex].value
		//alert(prop_price)
	}
	if (document.getElementById('show_place_ch').checked) show_places = true;  else show_places = false;

	if(show_places && PAGE_PLACE_COUNT>0){
		if(noloadmarkers<=0) get += "&getPlace=Y";
		if (ex_place) get += "&ex_place="+ex_place;
		if (PAGE_PLACE_COUNT>0) get += "&count_p="+PAGE_PLACE_COUNT;
	}
	if(noloadmarkers>0)noloadmarkers--;
	
	if (show_travels && PAGE_TRAVEL_COUNT>0){
		get += "&getTravels=Y";
		if (date_from) get += "&date_from="+date_from;
		if (date_to) get += "&date_to="+date_to;
		if (prop_category>0) get += "&prop_category="+prop_category;
		if (prop_type>0) get += "&prop_type="+prop_type;
		if (prop_complexity>0) get += "&prop_complexity="+prop_complexity;
		if (prop_duration.length>0) get += "&prop_duration="+prop_duration;
		if (prop_character>0) get += "&prop_character="+prop_character;
		if (prop_price.length>0) get += "&prop_price="+prop_price;
		if (PAGE_TRAVEL_COUNT>0) get += "&count_t="+PAGE_TRAVEL_COUNT;
		//alert(prop_price);
	}
	
	handXHR.push($.ajax({
		type: "POST",
		url: "/bitrix/templates/xteam2/ajax/ajax_markers_2.php",
		data: get,
		async: true,
		success: function(resp){
			var xml = GXml.parse(resp);
			var markers = xml.documentElement.getElementsByTagName("marker");
			var travels = xml.documentElement.getElementsByTagName("travel");
			
			if (markers.length < 1 && travels.length < 1)
				return 0;
			
			clear_markers();
			
			ajax_markers_show(markers, travels);
		},
		beforeSend: function()
		{
			for(var a = 0; a < handXHR.length; a++)
			{
				handXHR[a].abort();
				handXHR[a] = false;
				handXHR.shift();
			}
		}
	}));
}

function ajax_markers_search(s_name) {
	var get = "s_name=" + s_name;
	can_ajax_markers_2 = false;
	
	searchXHR.push($.ajax({
		type: "POST",
		url: "/bitrix/templates/xteam2/ajax/ajax_markers_search.php",
		data: get,
		async: true,
		failure: function() {
			can_ajax_markers_2 = true;
		},
		success: function(resp) {
			var xml = GXml.parse(resp);
			//alert(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			var travels = xml.documentElement.getElementsByTagName("travel");
		
			if (markers.length < 1)
				return 0;

			clear_markers();
		
        	var arResM = ajax_markers_show(markers, travels);
        	
        	var points_count = arResM[0],
        	bounds_area = arResM[1],
        	last_point = arResM[2],
        	marker = arResM[3];

        	if (points_count == 1) {
        		noloadmarkers=2;
        		map.setCenter(last_point, 16);
        		GEvent.trigger(marker, "click", last_point);
        	} else if (points_count > 1) {
        		noloadmarkers=1;
        		var zoom = map.getBoundsZoomLevel(bounds_area);
        		if (zoom>16)
        			zoom = 16;
        		map.setCenter(bounds_area.getCenter(), zoom); 
        		//GEvent.trigger(marker, "click", last_point);
        	} else {
        		alert("Место "+s_name + " не найдено в каталоге X-Team.");
        	}
        	setTimeout(function() {
				can_ajax_markers_2 = true;
			}, 500);
		},
		beforeSend: function()
		{	
			for (var a = 0; a < searchXHR.length; a++) {
				searchXHR[a].abort();
				searchXHR[a] = false;
				searchXHR.shift();
			}
		}
	}));
}

function ajax_markers_show(markers, travels) {
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var bounds_area = new GLatLngBounds;
	var points_count = 0;

	if (markers.length > 0)
    	for (var i = 0; i < markers.length; i++) {
    		var id = markers[i].getAttribute("id");
    		if (!in_array(id, showed_markers)){
    			var name = markers[i].getAttribute("name");
    			var DETAIL_PAGE_URL = markers[i].getAttribute("DETAIL_PAGE_URL");
    			var category = markers[i].getAttribute("category");
    			var photo30 = markers[i].getAttribute("photo30");
    			var photo110 = markers[i].getAttribute("photo110");
    			var color = markers[i].getAttribute("color");
    			
    			var argeomery = markers[i].getElementsByTagName("geometry");
    			if (argeomery[0].textContent)
    				var geomery = argeomery[0].textContent;
    			else if(argeomery[0].text)
    				var geomery = argeomery[0].text;
    			
    			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
    			
    			if (photo30!="" && photo110!=""){
    				src = photo110;
    				src_icon = photo30;
    			}else{
    				src = '/bitrix/templates/xteam2/images/z_travel_map.jpg';
    				src_icon = '/bitrix/templates/xteam2/images/z_travel_mini.jpg';
    			}
    			var html = "";
    			html += '<table cellspacing="0" cellpadding="0" class="map_cloud">';
    			html += '	<tr>';
    			html += '		<td width="122"><a href="'+DETAIL_PAGE_URL+'"><img src="'+src+'" alt="'+name+'" width="110" height="83" ></a></td>';
    			html += '		<td>';
    			html += '			<div class="title"><a href="'+DETAIL_PAGE_URL+'">'+name+'</a></div>';
    			
    			if(category=='Профессиональный'){
    				html += '			<div class="map_cloud_p_com"></div>';
    				type_icon = "iconBg_o";
    			}else{
    				html += '			<div class="map_cloud_p_notcom"></div>';
    				type_icon = "iconBg_w";
    			}
    			
    			var arOrg = markers[i].getElementsByTagName("org");
    			
    			if (arOrg.length>0){
    				html += '			<div class="map_cloud_org_title">Автор:</div>';
    				html += '			<table width="100%" cellspacing="0" cellpadding="0" class="map_cloud_org">';
    				html += '				<tr><td>';
    				
    				var iOrgdop = 0;
    				var iOrgCount = arOrg.length/2;
    				var col=0;
    				for (var iOrg = 0; iOrg < arOrg.length; iOrg++) {
    				
    					if (iOrg>=iOrgCount && col==0){
    						html += '</td><td width="50%">';
    						col=1;
    					}

    					var org_id = arOrg[iOrg].getAttribute("id");
    					var org_login = arOrg[iOrg].getAttribute("login");
    					var org_photomini = arOrg[iOrg].getAttribute("photomini");
    					var org_com_id = arOrg[iOrg].getAttribute("com_id");
    					var org_com_name = arOrg[iOrg].getAttribute("com_name");
    					var org_com_logo = arOrg[iOrg].getAttribute("com_logo");
    					var org_com_w = arOrg[iOrg].getAttribute("com_w");
    					var org_com_h = arOrg[iOrg].getAttribute("com_h");
    					var org_com = arOrg[iOrg].getAttribute("com");
    					
    					
    					var class_logo_com = "company_td";
    					if(!org_com_logo){
    						org_com_logo = "/bitrix/templates/xteam2/images/z_user_30.gif";
    						org_com_w = 30;
    						org_com_h = 30;
    						var class_logo_com = "org_timer";
    					}
    					
    					if (org_photomini=="") org_photomini="/bitrix/templates/xteam2/images/z_user_30.gif";
    					
    					html += '<div class="org_timer">';
    					html += '	<table cellspacing="0" cellpadding="0" class="list_item_org_left"><tr>';
    					
    					if (org_com_id>0 && org_com=="Y"){
    						html += '		<td class="avatar_td">';
    						html += '		<a href="/timer/user/'+org_id+'/"><img src="'+org_photomini+'" alt="'+org_login+'" title="'+org_login+'" width="30" height="30"></a>';
    						html += '		</td>';
    					}else{
    						html += '		<td class="'+class_logo_com+'">';
    						html += '		<a href="/timer/user/'+org_id+'/"><img src="'+org_com_logo+'" alt="'+org_login+'" title="'+org_login+'" width="'+org_com_w+'" height="'+org_com_h+'"></a>';
    						html += '		</td>';
    					}
    					
    					if (org_com_id>0 && org_com=="Y"){
    						html += '	<td class="sp_td"><img src="/bitrix/templates/xteam2/images/spacer.gif" alt="" width="1" height="1" /></td>';
    						html += '	<td class="'+class_logo_com+'"><a href="/timer/company/'+org_com_id+'/"><img src="'+org_com_logo+'" alt="'+org_com_name+'" title="'+org_com_name+'" width="'+org_com_w+'" height="'+org_com_h+'"></a></td>';
    					}
    					
    					html += '	</tr></table>';
    					
    					if (org_com_id>0 && org_com=="Y")
    						var classtd = "best_item";
    					else
    						var classtd = 'not_company';
    					
    					html += '	<div class="'+classtd+'">';
    						html += '	<a href="/timer/user/'+org_id+'/">'+org_login+'</a>';
    						if (org_com_id>0 && org_com=="Y"){
    							html += '<br/><a href="/timer/company/'+org_com_id+'/">'+org_com_name+'</a>';
    						}
    					html += '	</div>';
    					
    					html += '</div>';
    					
    					iOrgdop++;
    				}

    				
    				html += '			</td></tr>';
    				html += '		</table>';
    			}
    			
    			html += '		</td>';
    			html += '	</tr>';
    			html += '</table>';
    			
    			if(color.length>0){
    				var str_ar_point_geo=geomery.split("\n");
    				var pts = [];
    				ip=0;
    				for ( var pstr in str_ar_point_geo ){
    					if(pstr != 'indexOf'){
    						var ar_point_geo=str_ar_point_geo[pstr].split(", ");
    						if(ar_point_geo[0]!="" && ar_point_geo[1]!=""){
    							pts[ip] = new GLatLng(ar_point_geo[0], ar_point_geo[1]);
    						}
    						ip++;
    					}
    				}
    				var polygon = createPolygon(pts, color, html);
    				markerGroups['place_polygon'].push(polygon);
    				var polyout = polygon;
    			}else{
    				var polyout = "";
    			}
    			
    			var marker = createMarkeredLabel(point, type_icon, src_icon, html, polyout, id);
    			type = "photo_icon";
    			bounds_area.extend(point);
    			points_count++;
    			showed_markers[showed_markers.length] = id;
    		}else{
    			type = "photo_icon";
    			point = markerGroups[type][id].getLatLng();
    			bounds_area.extend(point);
    			points_count++;
    		}
    	}

	if (travels.length > 0)
    	for (var i = 0; i < travels.length; i++) {
    		var id = travels[i].getAttribute("id");
    		var category = travels[i].getAttribute("category");
    		if (category == "Профессиональный")
    			type = "travel_o";
    		else
    			type = "travel_g";
    		
    		if (!in_array(id, showed_travels)){
    			var name = travels[i].getAttribute("name");
    			var DETAIL_PAGE_URL = travels[i].getAttribute("DETAIL_PAGE_URL");
    			var DATE_ACTIVE_FROM = travels[i].getAttribute("DATE_ACTIVE_FROM");
    			var DATE_ACTIVE_TO = travels[i].getAttribute("DATE_ACTIVE_TO");
    			var color = travels[i].getAttribute("color");
    			var photo110 = travels[i].getAttribute("photo110");
    			
    			var argeomery = travels[i].getElementsByTagName("geometry");
    			if (argeomery[0].textContent)
    				var geomery = argeomery[0].textContent;
    			else if(argeomery[0].text)
    				var geomery = argeomery[0].text;
    				
    			var arOrg = travels[i].getElementsByTagName("org");
    			var arAddTravels = travels[i].getElementsByTagName("addtravel");
    			
    			var point = new GLatLng(parseFloat(travels[i].getAttribute("lat")), parseFloat(travels[i].getAttribute("lng")));
    			
    			if (photo110!=""){
    				src = photo110;
    			}else{
    				src = '/bitrix/templates/xteam2/images/z_travel_map.jpg';
    			}
    			
    			var html = "";
    			html += '<table cellspacing="0" cellpadding="0" class="map_cloud">';
    			html += '	<tr>';
    			html += '		<td width="122"><a href="'+DETAIL_PAGE_URL+'"><img src="'+src+'" alt="'+name+'" width="110" height="78"></a></td>';
    			html += '		<td>';
    			
    			if (arAddTravels.length==0){
    				html += '			<div class="title"><a href="'+DETAIL_PAGE_URL+'">'+name+'</a></div>';
    				html += '			<div class="date margin">'+DATE_ACTIVE_FROM+' - '+DATE_ACTIVE_TO+'</div>';
    				if(category=='Профессиональный'){
    					html += '			<div class="map_cloud_com"></div>';
    				}else{
    					html += '			<div class="map_cloud_notcom"></div>';
    				}
    			}else{
    				html += '			<div class="title"><a href="'+DETAIL_PAGE_URL+'">'+name+'</a></div>';
    				html += '			<div class="date map_cloud_org_title">Найдено путешествий: <b>'+(arAddTravels.length+1)+'</b></div>';
    				html += '			<div class="date map_cloud_org_title"><a href="'+DETAIL_PAGE_URL+'">'+DATE_ACTIVE_FROM+' - '+DATE_ACTIVE_TO+'</a></div>';
    				for (var iTr = 0; iTr < arAddTravels.length; iTr++) {
    					var at_DETAIL_PAGE_URL = arAddTravels[iTr].getAttribute("DETAIL_PAGE_URL");
    					var at_DATE_ACTIVE_FROM = arAddTravels[iTr].getAttribute("DATE_ACTIVE_FROM");
    					var at_DATE_ACTIVE_TO = arAddTravels[iTr].getAttribute("DATE_ACTIVE_TO");
    					html += '<div class="date map_cloud_org_title"><a href="'+at_DETAIL_PAGE_URL+'">'+at_DATE_ACTIVE_FROM+' - '+at_DATE_ACTIVE_TO+'</a></div>';
    				}
    			}
    			
    			html += '		</td>';
    			html += '	</tr>';
    			html += '</table>';
    			
    			if (arOrg.length>0 && arAddTravels.length==0){
    				html += '<div class="map_cloud">';
    				if (arOrg.length>1) var title='Организаторы'; else var title='Организатор';
    				html += '			<div class="map_cloud_org_title">'+title+':</div>';
    				html += '			<table width="100%" cellspacing="0" cellpadding="0" class="map_cloud_org">';
    				html += '				<tr><td width="50%">';
    				
    				var iOrgdop = 0;
    				var iOrgCount = arOrg.length/2;
    				var col=0;
    				for (var iOrg = 0; iOrg < arOrg.length; iOrg++) {
    				
    					if (iOrg>=iOrgCount && col==0){
    						html += '</td><td width="50%">';
    						col=1;
    					}

    					var org_id = arOrg[iOrg].getAttribute("id");
    					var org_login = arOrg[iOrg].getAttribute("login");
    					var org_photomini = arOrg[iOrg].getAttribute("photomini");
    					var org_com_id = arOrg[iOrg].getAttribute("com_id");
    					var org_com_name = arOrg[iOrg].getAttribute("com_name");
    					var org_com_logo = arOrg[iOrg].getAttribute("com_logo");
    					var org_com_w = arOrg[iOrg].getAttribute("com_w");
    					var org_com_h = arOrg[iOrg].getAttribute("com_h");
    					var org_com = arOrg[iOrg].getAttribute("com");
    					
    					
    					var class_logo_com = "company_td";
    					if(!org_com_logo){
    						org_com_logo = "/bitrix/templates/xteam2/images/z_user_30.gif";
    						org_com_w = 30;
    						org_com_h = 30;
    						var class_logo_com = "org_timer";
    					}
    					
    					if (org_photomini=="") org_photomini="/bitrix/templates/xteam2/images/z_user_30.gif";
    					
    					html += '<div class="org_timer">';
    					html += '	<table cellspacing="0" cellpadding="0" class="list_item_org_left"><tr>';
    					
    					if (org_com_id>0 && org_com=="Y"){
    						html += '		<td class="avatar_td">';
    						html += '		<a href="/timer/user/'+org_id+'/"><img src="'+org_photomini+'" alt="'+org_login+'" title="'+org_login+'" width="30" height="30"></a>';
    						html += '		</td>';
    					}else{
    						html += '		<td class="'+class_logo_com+'">';
    						html += '		<a href="/timer/user/'+org_id+'/"><img src="'+org_com_logo+'" alt="'+org_login+'" title="'+org_login+'" width="'+org_com_w+'" height="'+org_com_h+'"></a>';
    						html += '		</td>';
    					}
    					
    					if (org_com_id>0 && org_com=="Y"){
    						html += '	<td class="sp_td"><img src="/bitrix/templates/xteam2/images/spacer.gif" alt="" width="1" height="1" /></td>';
    						html += '	<td class="'+class_logo_com+'"><a href="/timer/company/'+org_com_id+'/"><img src="'+org_com_logo+'" alt="'+org_com_name+'" title="'+org_com_name+'" width="'+org_com_w+'" height="'+org_com_h+'"></a></td>';
    					}
    					
    					html += '	</tr></table>';
    					
    					if (org_com_id>0 && org_com=="Y")
    						var classtd = "best_item";
    					else
    						var classtd = 'not_company';
    					
    					html += '	<div class="'+classtd+'">';
    						html += '	<a href="/timer/user/'+org_id+'/">'+org_login+'</a>';
    						if (org_com_id>0 && org_com=="Y"){
    							html += '<br/><a href="/timer/company/'+org_com_id+'/">'+org_com_name+'</a>';
    						}
    					html += '	</div>';
    					
    					html += '</div>';
    					
    					iOrgdop++;
    				}
    				
    				html += '				</td></tr>';
    				html += '			</table>';
    				html += '</div>';
    			}
    				
    			var marker_t = createMarker(point, name, html, type, id);
    			bounds_area.extend(point);
    			points_count++;
    			map.addOverlay(marker_t);
    			showed_travels[showed_travels.length] = id;
    		}else{
    			p_ll = markerGroups[type][id].getLatLng();
    			p_lat = p_ll.lat();
    			p_lng = p_ll.lng();
    			
    			if(southWest.lng()>0 && northEast.lng()<0){
    				if(!(p_lat>southWest.lat() && p_lat<northEast.lat() && (p_lng>southWest.lng() || p_lng<northEast.lng()) )){
    					var point = new GLatLng(parseFloat(travels[i].getAttribute("lat")), parseFloat(travels[i].getAttribute("lng")));
    					markerGroups[type][id].setLatLng(point);
    				}
    			}else{
    				if(!(p_lat>southWest.lat() && p_lat<northEast.lat() && p_lng>southWest.lng() && p_lng<northEast.lng())){
    					var point = new GLatLng(parseFloat(travels[i].getAttribute("lat")), parseFloat(travels[i].getAttribute("lng")));
    					markerGroups[type][id].setLatLng(point);
    				}
    			}
    			point = markerGroups[type][id].getLatLng();
    			bounds_area.extend(point);
    			points_count++;
    		}
    	}
	
	if(typeof(type) != 'undefined') {
		return new Array(points_count, bounds_area, point, markerGroups[type][id]);
	}
}

function in_array(needle, haystack, strict) {
    var found = false, key, strict = !!strict; 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
    return found;
}

function viewObject(name){
	var obj = eval(name), i;
	
	if (!obj) {
		alert("\"" + name + "\" ia not an object");
		return;
	}
	
	var w_Test = open("", "Test", "width=600,height=500,scrollbars=1");
	
	if (!w_Test) {
		alert("Cannot open window for " + name);
		return;
	}
	
	w_Test.document.open();
	
	for (i in obj) 
		w_Test.document.write(name + "." + i + "=" + obj[i] + "<br>");
	
	w_Test.document.close();
} 
