  var request;
  if( typeof XMLHttpRequest == "undefined" ) {
	request = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
	request = null;
	request = new XMLHttpRequest();
  }

function ajax(url, vars, callbackFunction) {
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type",
                           "application/x-www-form-urlencoded; charset=UTF8;");
 
  request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
      if (request.responseText) {
        callbackFunction(request.responseText);
      }
    }
  };
  request.send(vars);
}

function ajax_addfeed(place,msg){
    var mesgi = encodeURIComponent(msg);
    ajax(CLPATH+'/dynamic.php','ac=7&placeid='+place+'&msg='+msg,ok_comment_SENT);
}

function okSENT(response){
    var post_statusline = getObj('post_statusline');
    if(post_statusline != null){
	post_statusline.style.background = '#60FF60';
	post_statusline.innerHTML = response;
    }
}

function ok_comment_SENT(response){
}

function ok_SENT_alert(response){
    alert(response);
}

function okSENT_silent(response){
}

function okSENT_reload(response){
    window.location.reload();
}

function getCategoryData(catid){
	ajax(CLPATH+'/dynamic.php','ac=10&val='+catid,okSENT_categorydata);
}

function getAllData(){
	ajax(CLPATH+'/dynamic.php','ac=10&val=-1',okSENT_categorydata);
}

function getImageData(imageid){
        ajax(CLPATH+'/dynamic.php','ac=14&val='+imageid,okSENT_imagedata);
}

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=\""+CLPATH+"/pic/"+picid+"\"><img src=\""+CLPATH+"/"+val+"\" class=\"reply_pic\" border=0></a>";
			break;
		    case 'comm':
			feedback = val;
			break; 
		}
	    }
	}
	if(placenum > 0){
	    placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback);
	    addListItem(placeid,title,rowpertable,placenum);
	}
	var show_all_obj = getObj('show_all_obj');
	if(show_all_obj != null){
    	    show_all_obj.innerHTML = LANG_SHOWALL_OBJ;
    	}
    }
}


function getItemData(placeid){
    var mark_found = 0;
    for(i=0;i<map_markers.length;i++){
        if(map_markers[i] != null){
    	    if(map_markers[i].myname == placeid){
		map_markers[i].show();
		GEvent.trigger(map_markers[i],"click");
		mark_found = 1;
	    } else {
		map_markers[i].hide();
	    }
	}
    }
    if(mark_found == 0){
	ajax(CLPATH+'/dynamic.php','ac=1&placeid='+placeid,okSENT_itemdata);
    }
}

function getItemDataItemsNoHide(placeid){
    var mark_found = 0;
    for(i=0;i<map_markers.length;i++){
        if(map_markers[i] != null){
    	    if(map_markers[i].myname == placeid){
		map_markers[i].show();
		GEvent.trigger(map_markers[i],"click");
		mark_found = 1;
	    }
	}
    }
    if(mark_found == 0){
	ajax(CLPATH+'/dynamic.php','ac=1&placeid='+placeid,okSENT_itemdata);
    }
}

function okSENT_itemdata(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 picid = 0;
	
	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 'pid':
			placeid = val;
			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=\""+CLPATH+"/pic/"+picid+"\"><img src=\""+CLPATH+"/"+val+"\" class=\"reply_pic\" border=0></a>";
			break;
		    case 'comm':
			feedback = val;
			break; 
		}
	    }
	}

	for(i=0;i<map_markers.length;i++){
	    if(map_markers[i] != null){
		map_markers[i].hide();
	    }
	}
	
	var mark = placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback);
	map.setCenter(new GLatLng(posx, posy), 13);
	GEvent.trigger(mark,"click");
	mark.show();
    }
}

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

        var descr_rus = ''; var descr_fin = ''; var descr_eng = 0; var alt_rus = ''; var alt_fin = ''; var alt_eng = '';

        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 'descr':
                        descr_rus = val;
                        break;
                    case 'descr_fin':
                        descr_fin = val;
                        break;
                    case 'descr_eng':
                        descr_eng = val;
                        break;
                    case 'alt':
                        alt_rus = val;
                        break;
                    case 'alt_fin':
                        alt_fin = val;
                        break;
                    case 'alt_eng':
                        alt_eng = val;
                        break;
                }
            }
        }
    }

    var descr_loc_val = eval('descr_'+LANGPART);
    var alt_loc_val = eval('alt_'+LANGPART);
    var obj_picname = getObj('imagetext_frame');
    obj_picname.innerHTML = descr_loc_val;
    var obj_picalt = getObj('imagetext_inner');
    obj_picalt.innerHTML = alt_loc_val;
}


function placeMarker(placeid,title,descr,posx,posy,cat,picid,photos,feedback){
    var toptitle = title;
    toptitle = toptitle.replace(/(&#228;)/gi,'a'); // Ä
    toptitle = toptitle.replace(/(&#196;)/gi,'A'); // Ä
    toptitle = toptitle.replace(/(&#214;)/gi,'O'); // Ö
    toptitle = toptitle.replace(/(&#246;)/gi,'o'); // ö
    toptitle = toptitle.replace(/(&auml;)/g,'a'); // ä
    toptitle = toptitle.replace(/(&ouml;)/g,'o'); // ö
    toptitle = toptitle.replace(/(&Auml;)/g,'A'); // Ä
    toptitle = toptitle.replace(/(&Ouml;)/g,'O'); // Ö
    toptitle = toptitle.replace(/(&quot;)/gi,"'");

    var obj_link = "<a target=\"_top\" href=\""+HOSTPATH+"/place"+LANGPART+"/"+placeid+"\">"+LANG_OBJ_LINK+"</a>";
    if(LANGPART == 'fin'){
	obj_link = "<a target=\"_top\" href=\"http://fi.visilla.fi/place"+LANGPART+"/"+placeid+"\">"+LANG_OBJ_LINK+"</a>";
    }
    var mark = createMarker(posx,posy,placeid,"<b>"+title+"</b><br><br>"+descr+obj_link+"<br><br><span class='pop_coords'>"+LANG_COORDS+":<br>"+posx+', '+posy+'</span>',photos,feedback,cat,toptitle);
    mark.show();
    return mark;
}

function addListItem(placeid,title,pertable,placenum){
    var tab1 = getObj('obj_list_table_1');
    var tab2 = getObj('obj_list_table_2');
    var tab3 = getObj('obj_list_table_3');

    if((pertable > 0) && (placeid > 0) && (title != null)){
	var tablepos = 1;
	if((placenum > pertable) && (placenum < (pertable * 2))){
	    tablepos = 2;
	}
	if(placenum >= (pertable * 2)){
	    tablepos = 3;
	}
    }
}


