// Suomitech Oy GMAP edition. Do not copy!

var map_icons = [];
var total_map_icons = 14;
var lastPoint;
var map;
var geocoder;
var icon_clicked = 0;

function map_load(posx,posy,zoom) {
/*
    if(typeof GBrowserIsCompatible != 'function') { 
	exit;
    }
*/
    if (GBrowserIsCompatible()) {
	icon_clicked = 0;
	
	var mappi = document.getElementById("map");
	if(mappi == null){
	    return;
	}
	map = new GMap2(mappi);
	geocoder = new GClientGeocoder();
	map.addControl(new GLargeMapControl());
	if((posx != null) && (posy != null)){
	    map.setCenter(new GLatLng(posx, posy), zoom);
	} else {
	    map.setCenter(new GLatLng(62.404534, 25.677234), 6);
	}
	map.setUIToDefault();
//	map.setMapType(G_NORMAL_MAP);
	map.setMapType(G_PHYSICAL_MAP);
	map.addControl(new GMenuMapTypeControl());
	map.enableDoubleClickZoom();
	map.enableScrollWheelZoom();
	
	var dog = true;
	var stech = true;
	var marker = null;
	var noMore = false;
    
	GEvent.addListener(map, "mousemove", function(point){
	    var latLngStrF = point.lat().toFixed(14) + ', ' + point.lng().toFixed(14);
	    var latLngStr8 = point.lat().toFixed(8) + ', ' + point.lng().toFixed(8);
	    var latLngStr6 = point.lat().toFixed(6) + ', ' + point.lng().toFixed(6);
	    var latLngStr5 = point.lat().toFixed(5) + ', ' + point.lng().toFixed(5);
	    var latLngStr4 = point.lat().toFixed(4) + ', ' + point.lng().toFixed(4);
	    lastPoint = point;
	
	    var map_lo = getObj('map_lo');
    	    var map_fixed = getObj('map_fixed');
	    var fixed_point = getObj('fixed_point');
	    var fixed_main = getObj('fixed_main');
	    var fixed_zoom = getObj('fixed_zoom');
	    
	    if(map_lo != null){
		map_lo.innerHTML = latLngStr5;
	    
		if(!noMore){
		    if(fixed_main == null){
			marker = new GMarker(point,{draggable:true, autoPan:false});
    			map.addOverlay(marker);
    			marker.setImage('/mapicons/marker.png');
    			noMore = true;
    			fixed_zoom.value = map.getZoom();

			GEvent.addListener(marker, 'drag', function(markerPoint){
			    if(!map.getBounds().containsLatLng(markerPoint)){
        			 map.removeOverlay(marker);
    			    }
	
			    if(map_fixed != null){
				var latLngStr5 = lastPoint.lat().toFixed(5) + ', ' + lastPoint.lng().toFixed(5);
				map_fixed.innerHTML = '<b>'+MAP_SEL+': '+latLngStr5+'</b>';
				fixed_point.value = latLngStr5;
			    }
    			});
		    }
		}
		if(dog){
		    if(marker != null){
    			marker.setLatLng(point);
		    }
		}
	    }
	});
	
	GEvent.addListener(map, "click", function(){
	    var map_fixed = getObj('map_fixed');
	    var fixed_point = getObj('fixed_point');
	    var fixed_zoom = getObj('fixed_zoom');
	
	    if((map_fixed != null) && (lastPoint != null)){
		var latLngStr5 = lastPoint.lat().toFixed(5) + ', ' + lastPoint.lng().toFixed(5);
		map_fixed.innerHTML = '<b>'+MAP_SEL+': '+latLngStr5+'</b>';
		fixed_point.value = latLngStr5;
		fixed_zoom.value = map.getZoom();
	    }
	    dog = false;
	    if(marker != null){
    		marker.setLatLng(lastPoint);
	    }
	});

	GEvent.addListener(map, "infowindowclose", function(){
	    icon_clicked = 0;
	});

        GEvent.addListener(map, "zoomend", function(){
            var fixed_zoom = getObj('fixed_zoom');
            fixed_zoom.value = map.getZoom();
        });

	map_icons[1] = new GIcon(G_DEFAULT_ICON,"/mapicons/marker_green.png");
        map_icons[1].iconSize = new GSize(12,20);
        map_icons[1].shadowSize = new GSize(10,10);
        map_icons[1].iconAnchor = new GPoint(5,5);
    }
}

function createMarker(posx,posy,name,html1,html2,html3,category,toptitle){
    var point = new GPoint(posy,posx);
    var marker = new GMarker(point,{icon:map_icons[category],title:toptitle});
    marker.mycategory = category;                                 
    marker.myname = name;
/*
    GEvent.addListener(marker, "mouseover", function() {
	    GEvent.trigger(marker,"click");
    });
*/
    GEvent.addListener(marker, "click", function() {
	icon_clicked = 1;
	var infotab = []; var infobrake = ''; var allinfo = ''; var photobrake = '';
	infotab.push(new GInfoWindowTab(MAP_INFO,"<div class='infotab'>"+html1+"</div>"));
	if(html2 != ""){
	    photobrake = "<div style='clear:both;'><br></div>";
	}
	if(html3 != ""){
	    infobrake = '<br><br>';
	}
	
	marker.openInfoWindowTabsHtml(infotab);
	}
    );
    
    map.addOverlay(marker);
    marker.hide();
    map_markers.push(marker);
    return marker;
}

function placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback){
    var toptitle = title;

    var mark = createMarker(posx,posy,placeid,"<b>"+title+"</b><br><br>"+descr+"<a href=\"/post/"+placeid+"\">"+MAP_LINK+"</a><br><br><span class='pop_coords'>"+COORDS+":<br>"+posx+', '+posy+'</span>',photos,feedback,cat,toptitle);
    mark.show();
    return mark;
}



function showAddress(formi) {
  var addr = getObj('addrpoisk');
  address = addr.value;
  
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + MAP_NOADDR);
      } else {
	var map_fixed = getObj('map_fixed');
	var fixed_point = getObj('fixed_point');
	var map_msg = getObj('msg');
        map.setCenter(point, 13);
	var latLngStr5 = point.lat().toFixed(5) + ', ' + point.lng().toFixed(5);
	if(map_fixed != null){
	    map_fixed.innerHTML = '<b>'+MAP_SEL+': '+latLngStr5+'</b>';
	}
	if(fixed_point != null){
	    fixed_point.value = latLngStr5;
	}
	
	var addr_marker = new GMarker(point);
	map.addOverlay(addr_marker);
	addr_marker.setImage('/mapicons/marker.png');
	addr_marker.openInfoWindowHtml(address);
	map_msg.value = map_msg.value + "\n" + address;
      }
    }
  );
  if(formi == 1){
    return false;
  }
}


function cat_show(category) {
    var has_markers = 0;
    for (var i=0; i<map_markers.length; i++) {
	if (map_markers[i].mycategory == category) {
    	    map_markers[i].show();
	    has_markers = 1;
        }
    }
    if(map_cats[category] == undefined){
	map_cats.push(category);
    }
    if((has_markers == 0) || (cur_marker > 0)){
	getCategoryData(category);
    }
}

function cat_hide(category) {
    for (var i=0; i<map_markers.length; i++) {
	if (map_markers[i].mycategory == category) {
    	    map_markers[i].hide();
        }
    }
    
    var newcats = new Array();
    for (var i=0; i<map_cats.length; i++) {
	if(map_cats[i] != category){
	    newcats.push(map_cats[i]);
	}
    }
    map_cats = newcats;
}

function cat_click(i,ci) {
    var cat = getObj(ci);
    if(cat.style.fontWeight == 'bold'){
	cat.style.fontWeight = 'normal';
	cat_hide(i);
    } else {
	cat.style.fontWeight = 'bold';
	cat_show(i);
    }
    
    var selcats = '';
    for (var i=0; i<map_cats.length; i++) {
	selcats += map_cats[i]+',';
    }
    selcats = selcats.substring(0,selcats.length);

    var infra = null;

    if(document.selection){
        if(document.frames['catlist'] != null){
    	infra = document.frames['catlist'].document;
        }
    } else {
        infra = getObj('catlist');
        if(infra != null){
    	infra = infra.contentDocument;
        }
    }
    if(infra != null){
	if(selcats.length > 0){
	    selcats = selcats.substring(0,selcats.length-1);
	    infra.location.href = '/placelist.php?cats='+selcats;
	} else {
	    infra.location.href = '/placelist.php';
	}
    }
}

/*
function do_fastmove(){
    var ret = false;
    var tt = getObj('fastmove');
    if(tt.value.length > 3){
	window.location.href = '/karta/post/'+tt.value;
	ret = true;
    }
    return ret;
}
*/

function select_latest_cat(){
    var tt = getObj('ob_latest_cat');
    if(tt.value > 0){
	window.location.href = '/karta/places/'+tt.value;
    } else {
	if(tt.value == -1){
	    window.location.href = '/karta/places';
	}
    }
}

function addfeed(place){
    feed = getObj('newfeed_'+place);
    fa = getObj('fa_'+place);
    feed.style.display = 'block';
    fa.value = '';
    fa.focus();
}
function addfeedready(place){
    feed = getObj('newfeed_'+place);
    infotab = getObj('infotab_'+place);
    fa = getObj('fa_'+place);

    feed.style.display = 'none';
    ajax_addfeed(place,fa.value);
    infotab.innerHTML = fa.value+"<br><br><a href=\"javascript:addfeed("+place+")\">Добавить отзыв</a>&nbsp;&nbsp;&nbsp;<a href=\"/karta/comm/"+place+"\"> </a><div class='newfeed' id='newfeed_"+place+"'><textarea class=\"feedarea\" id='fa_"+place+"'></textarea><br><a href=\"javascript:addfeedready("+place+")\">Добавить отзыв</a></div>";
    fa.value = '';
}
function addfeedready_large(place){
    feed = getObj('hidden_comment');
    tt = getObj('latestposts');
    fa = getObj('fa_'+place);
    feed.style.display = 'none';
    ajax_addfeed(place,fa.value);
    
    var newRow = tt.insertRow(1);
    newCell = newRow.insertCell(0);
    newCell.className = 'pokaz_body';
    newCell.innerHTML = fa.value;

    var newRow = tt.insertRow(1);
    newCell = newRow.insertCell(0);
    newCell.className = 'pokaz_title';
    newCell.innerHTML = "Отзыв успешно добавлен";

    fa.value = '';
}

function changeInfoPic(pic){
    mp = getObj('imagemain');
    mp.style.display = 'none';

    var iw = 0; var ih = 0;

    if(image_sizes_w[pic] > image_sizes_h[pic]){
	iw = 699;
	ih = 479;
    } else {
	iw = 395;
	ih = 479;
    }
    
    mp.innerHTML = "<img src=\"/karta/"+images[pic]+"\" style=\"width:"+iw+"px;height:"+ih+"px;\" onClick=\"showLarge('"+images[pic]+"',this,'prev_layer',"+iw+","+ih+")\">";

    mp.style.display = 'block';
}

function add_com_hidden(pid){
    mp = getObj('hidden_comment');
    pidfa = getObj('pidfa');
    ta = getObj('fa_'+pid);
    mp.style.display = 'block';
    ta.focus();
    pidfa.innerHTML = 'Добавить отзыв';
}

function zoomMap(city,level){
    var gorod = city-1;
    var ci_h = new Array('60.16688','60.44926','61.49887','60.29464','60.39367','61.05164','61.17834','61.68784','62.24067','60.20537','62.89369');
    var ci_w = new Array('24.94205','22.26688','23.76411','25.03784','25.65788','28.20671','28.77766','27.27030','25.74268','24.65581','27.67636');
    
    if(map != null){
	map.setCenter(new GLatLng(ci_h[gorod], ci_w[gorod]), level);
    } else {
	alert('null map');
    }
}

/*
function do_fastlook(){
    var ret = false;
    var tt = getObj('fastlook');
    if(tt.value.length > 3){
        window.location.href = '/karta/index.php?ac=9&search_body='+tt.value;
        ret = true;
    }
    return ret;
}
*/

function cleanList(){
    var obj_list = getObj('obj_list');
}

function showList(){
    var map = getObj('map');
    map.style.display = 'none';
    var obj_list = getObj('obj_list');
    obj_list.style.display = 'block';
}

function showMap(){
    var map = getObj('map');
    map.style.display = 'block';
    var obj_list = getObj('obj_list');
    obj_list.style.display = 'none';
}

function showMapAll(){
    var show_all_obj = getObj('show_all_obj');
    show_all_obj.innerHTML = 'Загружаем, подождите...';
    getAllData();
    showMap();
}

function clearList(){
    var tab1 = getObj('obj_list_table_1');
    var tab2 = getObj('obj_list_table_2');
    var tab3 = getObj('obj_list_table_3');

    var tab1_rows = tab1.getElementsByTagName("tr");
    for (var i = 0; i < tab1_rows.length; i++) {
        tab1.deleteRow(0);
    }
    var tab2_rows = tab2.getElementsByTagName("tr");
    for (var i = 0; i < tab2_rows.length; i++) {
        tab2.deleteRow(0);
    }
    var tab3_rows = tab3.getElementsByTagName("tr");
    for (var i = 0; i < tab3_rows.length; i++) {
        tab3.deleteRow(0);
    }
}

function okSENT_categorydata(response){
    if(response.indexOf('[;:|]') > 0){
        var results = response.split('[;:|]');

        var posx = ''; var posy = ''; var placeid = 0; var title = ''; var descr = ''; var photos = ''; var feedback = ''; var cat = 0; var rows = 0;
        var picid = 0; var placenum = 0; var rowpertable = 1;

        for(i=0;i<results.length;i+=2){
            var key = results[i]
            var val = results[i+1];
            if((key != null) && (val != null) && (val != 'undefined')){
                switch(key){
                    case 'row':
                        rows = val;
                        if(rows > 1){
                            rowpertable = Math.ceil(rows / 3);
                        }
                        break;
                    case 'pid':
                        if(placenum > 0){
                            placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback);
                            //addListItem(placeid,title,rowpertable,placenum);
                            photos = '';
                        }
                        placeid = val;
                        placenum++;
                        photos = ''; feedback = '';
                        break;
                    case 'tit':
                        title = val;
                        break;
                    case 'des':
                        descr = val;
                        break;
                    case 'psx':
                        posx = val;
                        break;
                    case 'psy':
                        posy = val;
                        break;
                    case 'cat':
                        cat = val;
                        break;
                    case 'iid':
                        picid = val;
                        break;
                    case 'ith':
                        photos += "<a href=\"/karta/pic/"+picid+"\"><img src=\"/karta/"+val+"\" class=\"reply_pic\" border=0></a>";
                        break;
                    case 'comm':
                        feedback = val;
                        break;
                }
            }
        }
        if(placenum > 0){
            var mark = placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback);
            //addListItem(placeid,title,rowpertable,placenum);
            mark.show();
        }

//        var show_all_obj = getObj('show_all_obj');
//        show_all_obj.innerHTML = 'Отобразить все объекты на карте';
    }
}
function getAllData(){
        ajax('/dynamic.php','ac=10&val=-1',okSENT_categorydata);
}

