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

function map_load() {
    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());
	map.setCenter(new GLatLng(62.404534, 25.677234), 6);
	map.setMapType(G_PHYSICAL_MAP);
	map.addControl(new GMenuMapTypeControl(true));
	map.enableDoubleClickZoom();
	map.enableScrollWheelZoom();
	
	var dog = 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');
	    
	    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;

			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>'+LANG_MARKED+': '+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');
	
	    if((map_fixed != null) && (lastPoint != null)){
		var latLngStr5 = lastPoint.lat().toFixed(5) + ', ' + lastPoint.lng().toFixed(5);
		map_fixed.innerHTML = '<b>'+LANG_MARKED+': '+latLngStr5+'</b>';
		fixed_point.value = latLngStr5;
	    }
	    dog = false;
	    if(marker != null){
    		marker.setLatLng(lastPoint);
	    }
	});

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

	loadMapData();
    }
}

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, "click", function() {
	icon_clicked = 1;
	var infotab = []; var infobrake = ''; var allinfo = ''; var photobrake = '';
	infotab.push(new GInfoWindowTab(LANG_INFO,"<div class='infotab'>"+html1+"</div>"));
	if(html2 != ""){
	    photobrake = "<div style='clear:both;'><br></div>";
	}
	if(html3 != ""){
	    infobrake = '<br><br>';
	}
	
	var padd = "";
	if(CONF_NOPHOTO_ADD == 0){
	    padd = "<a href=\""+CLPATH+"/addpic/"+name+"\">"+LANG_ADDPHOTO+"</a>&nbsp;&nbsp;&nbsp;";
	}
        infotab.push(new GInfoWindowTab(LANG_PHOTO,"<div class='infotab_pic'>"+html2+photobrake+padd+"<a href=\""+CLPATH+"/placepic/"+name+"\">"+LANG_ALLPHOTO+"</a></div>"));

        if(CONF_NOCOMM == 2){
	    infotab.push(new GInfoWindowTab(LANG_COMM,"<div class='infotab' id=\"infotab_"+name+"\">"+html3+infobrake+"<a href=\"javascript:addfeed("+name+")\">"+LANG_ADDCOMM+"</a>&nbsp;&nbsp;&nbsp;<a href=\""+CLPATH+"/comm/"+name+"\">"+LANG_ALLCOMM+"</a>"+allinfo+"<div class='newfeed' id='newfeed_"+name+"'><textarea class=\"feedarea\" id='fa_"+name+"'></textarea><br><a href=\"javascript:addfeedready("+name+")\">"+LANG_ADDCOMM+"</a></div></div>"));
	}
	marker.openInfoWindowTabsHtml(infotab);
	}
    );
    map.addOverlay(marker);
    marker.hide();
    map_markers.push(marker);
    return marker;
}

function showAddress(formi) {
  var addr = getObj('addrpoisk');
  address = addr.value;
  
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + LANG_NOADDRESS);
      } 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>'+LANG_MARKED+': '+latLngStr5+'</b>';
	}
	if(fixed_point != null){
	    fixed_point.value = latLngStr5;
	}
	
	var addr_marker = new GMarker(point);
	map.addOverlay(addr_marker);
	addr_marker.setImage(CLPATH+'/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[category] = undefined;
//	map_cats.push(category);
	map_cats[0] = 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(oi,ci) {
    for (var i=0; i<avail_icons.length; i++) {
	if(avail_icons[i] != oi){
	    var cat_icon = getObj('cat_'+avail_icons[i]);
	    cat_icon.style.textDecoration = 'none';
	    cat_hide(avail_icons[i]);
	}
    }
    
    var cat = getObj(ci);
    if(cat.style.textDecoration == 'underline'){
	cat.style.textDecoration = 'none';
	cat_hide(oi);
    } else {
	cat.style.textDecoration = 'underline';
	cat_show(oi);
    }
    
    var selcats = '';
    for (var i=0; i<map_cats.length; i++) {
	selcats += map_cats[i]+',';
    }
    selcats = selcats.substring(0,selcats.length);

//alert(selcats);

    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 = CLPATH+'/placelist.php?cats='+selcats;
	} else {
	    infra.location.href = CLPATH+'/placelist.php';
	}
    }
}

function findPos(obj) {
  var pos = new Object;
  pos.left = 0;
  pos.top = 0;
        if (obj.offsetParent)   {
                while (obj.offsetParent) {
                  pos.left += obj.offsetLeft;
                        pos.top  += obj.offsetTop;
                        obj = obj.offsetParent;
                };
        }       else if (obj.x) {
          pos.left = obj.x;
          pos.top = obj.y;
        };
        return pos;
};

function show_hidden_layer(objname){
      var o = getObj(objname);
      if(o.style.display == 'none') {
        o.style.display = 'block';
      } else {
        o.style.display = 'none';
      }
}

function getObj(name){
      if (document.getElementById)
      {
            return document.getElementById(name);
      }
      else if (document.all)
      {
            return document.all[name];
      }
      else if (document.layers)
      {
            return document.layers[name];
      }
}

function checkPostForm(){
    var ret = true;
    
    var ob_cat = getObj('ob_cat');
    if(ob_cat.value == 0){
	showAlert(LANG_NOCAT);
	return false;
    }

    var zag = getObj('zag');
    if(zag.value.length == 0){
	showAlert(LANG_NOZAG);
	return false;
    }

    var msg = getObj('msg');
    if(msg.value.length == 0){
	showAlert(LANG_NOMSG);
	return false;
    }

    var fixed_point = getObj('fixed_point');
    if(msg.value.length == 0){
	showAlert(LANG_NOFIXED);
	return false;
    }

    var msg = getObj('msg');
    var msgval = msg.value;
    var ttl = getObj('title');
    var ttlval = ttl.value;

    msg.value = msgval.replace('ä','&auml;');
    msg.value = msgval.replace('Ä','&Auml;');
    msg.value = msgval.replace('ö','&ouml;');
    msg.value = msgval.replace('Ö','&Ouml;');

    ttl.value = ttlval.replace('ä','&auml;');
    ttl.value = ttlval.replace('Ä','&Auml;');
    ttl.value = ttlval.replace('ö','&ouml;');
    ttl.value = ttlval.replace('Ö','&Ouml;');
    
    return ret;
}

function showAlert(txt){
    var ob_alert = getObj('ob_alert');
    ob_alert.innerHTML = txt;
    ob_alert.style.display = 'block';
}

function addPhotoMore(){
    var tt = getObj('ob_pics');
    var newCell;
    var newRow = tt.insertRow(tt.rows.length);
    nc1 = newRow.insertCell(0);
    nc2 = newRow.insertCell(1);

    nc1.innerHTML = LANG_MOREPHOTO+":";
    nc1.id = 'obm_1_'+tt.rows.length;
    nc1.name = 'obm_1_'+tt.rows.length;
    
    nc2.innerHTML = "<input type=\"file\" name=\"bimage[]\" size=\"20\"><br><div class=\"ob_addmore\"><a href=\"javascript:addPhotoMore()\">"+LANG_ADD_ONEMORE_PHOTO+"</a></div>";
    nc2.id = 'obm_2_'+tt.rows.length;
    nc2.name = 'obm_2_'+tt.rows.length;
}

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

function select_latest_cat(){
    var tt = getObj('ob_latest_cat');
    if(tt.value > 0){
	window.location.href = CLPATH+'/places/'+tt.value;
    } else {
	if(tt.value == -1){
	    window.location.href = CLPATH+'/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+")\">"+LANG_ADDCOMM+"</a>&nbsp;&nbsp;&nbsp;<a href=\""+CLPATH+"/comm/"+place+"\">"+LANG_ALLCOMM+"</a><div class='newfeed' id='newfeed_"+place+"'><textarea class=\"feedarea\" id='fa_"+place+"'></textarea><br><a href=\"javascript:addfeedready("+place+")\">"+LANG_ADDCOMM+"</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 = LANG_COMM_SENT_OK;

    fa.value = '';
}

function add_com_hidden(pid){
    mp = getObj('hidden_comment');
    pidfa = getObj('pidfa');
    ta = getObj('fa_'+pid);
    mp.style.display = 'block';
    ta.focus();
    pidfa.innerHTML = LANG_ADDCOMM;
}

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 = CLPATH + '/index.php?ac=9&search_body='+encodeURIComponent(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');
    if(obj_list != null){
	obj_list.style.display = 'none';
    }
}

function showMapAll(){
    var show_all_obj = getObj('show_all_obj');
    show_all_obj.innerHTML = LANG_LOADING;
    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 changeInfoPic(pic){
    var mp = getObj('imagemain');
    mp.style.display = 'none';

    var iw = (image_sizes_w[pic] / 1.35); var ih = (image_sizes_h[pic] / 1.4);

    var frame_width = 510; var frame_height = 350;
    if(image_sizes_w[pic] < frame_width){
        iw = image_sizes_w[pic];
    }

    if(image_sizes_h[pic] < frame_height){
        ih = image_sizes_h[pic];
    }

    mp.innerHTML = "<img src=\""+CLPATH+"/"+images[pic]+"\" style=\"width:"+iw+"px;height:"+ih+"px;\" onClick=\"showLarge('"+images[pic]+"',this,'prev_layer',"+iw+","+ih+")\" alt='"+imageset_alt[pic]+"'>";
    mp.style.display = 'block';
    mp.style.width = iw;
    mp.style.height = ih;

    getImageData(pic);
}

function alt_add_translit(){
    var descr_rus = getObj('descr_rus');
    descr_rus.value = translitTagAware(descr_rus.value);
    var descr_fin = getObj('descr_fin');
    descr_fin.value = translitTagAware(descr_fin.value);
    var descr_eng = getObj('descr_eng');
    descr_eng.value = translitTagAware(descr_eng.value);
    var alt_rus = getObj('alt_rus');
    alt_rus.value = translitTagAware(alt_rus.value);
    var alt_fin = getObj('alt_fin');
    alt_fin.value = translitTagAware(alt_fin.value);
    var alt_eng = getObj('alt_eng');
    alt_eng.value = translitTagAware(alt_eng.value);
}


