function refreshMap() {
	/*pageno = 0;*/
	map.clearOverlays();
	marker_points = [];
	getMarkers();
}

function in_array(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) {
            return true;
        }
    }
    return false;
}

function updateUserMapDetails(user_id) {
	var options = {
		method : 'get',
		parameters : 'user_id='+user_id,
		onSuccess: function(t) {
			$('usermapdetails').innerHTML = t.responseText;
		}
	};
	new Ajax.Request('/kuvakartta/request/usermapdetails/', options);
}

function userImgCount() {
	var options = {
		method : 'get',
		parameters : '',
		onSuccess: function(t) {
			var imgcount = t.responseText;
			if (user_id != "") {
				updateUserMapDetails(user_id);
			}
			if (imgcount == 0) {
				var response = 'Ei omia kuvia kartalla';
			} else if (imgcount == 1) {
				var response = '<span class="bold">Yksi</span> oma kuva kartalla';
			} else {
				var response = '<span class="bold">'+imgcount+'</span> omaa kuvaa kartalla';
			}
			$('userimgcount').innerHTML = response;
		}
	};
	new Ajax.Request('/kuvakartta/request/userimgcount/', options);
}

function viewPos(lat, lng, zoom) {
	map.setCenter(new GLatLng(lat, lng), zoom, map.getCurrentMapType());
}

function mymouseover(i) {
	if (hmarkers[i]) {
		//map.removeOverlay(markers[i]);
		map.addOverlay(hmarkers[i]);
	}
}

function mymouseout(i) {
	if (hmarkers[i]) {
		map.removeOverlay(hmarkers[i]);
		//map.addOverlay(markers[i]);
	}
}

function hashToArray() {
	var hash = location.hash;
	hash = hash.replace('#', '');
	var arrHash = hash.split(",");
	return arrHash;
}

function updateLocation() {
	var p = map.getCenter();
	var z = map.getZoom();
	var maptype = getMapType();
	var get_vars = hashToArray();
	var imgadd = '';
	if ((get_vars[4] == 'add') && get_vars[5] != '') {
		imgadd = ',add,'+get_vars[5];
	}
	var hash = p.lat()+","+p.lng()+"," +z+","+maptype+imgadd;
	setHash(hash);
}

function setHash(hash){
	currentHash = hash;
    window.location.hash = hash;
}

function hashCheck () {
	var hash = location.hash;
	hash = hash.replace('#', '');
	if (currentHash != hash) {
		setMap();
		currentHash = hash;
	}
}

function getMapType() {

	var t = map.getCurrentMapType();
	var maptype = 'map';
	
	if (t == G_NORMAL_MAP) {
		maptype = 'map';
	} else if (t == G_SATELLITE_MAP) {
		maptype = 'satellite';
	} else if (t == G_HYBRID_MAP) {
		maptype = 'hybrid';
	} else if (t == G_PHYSICAL_MAP) {
		maptype = 'terrain';
	}
	
	return maptype;
}

function setMap() {
	var get_vars = []; 
	get_vars = hashToArray();
	if (get_vars[0] && get_vars[1]) {
		current_lat = parseFloat(get_vars[0]);
		current_lng = parseFloat(get_vars[1]);
	}
	if (get_vars[2]) {
		current_zoom = parseInt(get_vars[2]);
	}
	if (get_vars[3]) {
		maptype = get_vars[3];
	}
	map.setCenter(new GLatLng(current_lat, current_lng), current_zoom, maptypes[maptype]);

	if (logged == 1) {
		if ((get_vars[4] == 'add') && get_vars[5] != '') {
			add_mode = 1;
			add_img_id = get_vars[5];
			var point = new GLatLng(get_vars[0],get_vars[1]);
			showImgAddWindow(point);
		}
	}

	updateLocation();
}

function saveImgPerPage(value) {
	var options = {
		method : 'post',
		parameters : '&value='+value,
		onSuccess: function(t) {
			var response = t.responseText;
		}
	};
	new Ajax.Request('/kuvakartta/request/maxcount/', options);
}

function showLoggedWindow (point) {
	try {
		map.removeOverlay(oldmarker);
	} catch (e) { };
	var zoom = map.getZoom();
	var marker=new GMarker(point, addIcon, true);
	map.addOverlay(marker);
	marker.openInfoWindowHtml("<p><strong>Toiminnot:</strong><br />&raquo; <a href=\"javascript:getDirs("+point.lat()+","+point.lng()+");\">Lisää uusi kohde kartalle</a><br />&raquo; <a href=\"#"+point.lat()+","+point.lng()+","+zoom+","+maptype+"\">Suora linkki tähän pisteeseen</a></p>");
	oldmarker=marker;
}

function cancelImageAdd() {
	try {
		map.removeOverlay(oldmarker);
	} catch (e) { };
	var p = map.getCenter();
	var z = map.getZoom();
	var maptype = getMapType();
	var hash = p.lat()+","+p.lng()+"," +z+","+maptype;
	setHash(hash);
	add_mode = 0;
}

function showImgAddWindow (point) {
	var options = {
		method : 'post',
		parameters : 'img_id='+add_img_id,
		onSuccess: function(t) {
			try {
				map.removeOverlay(oldmarker);
			} catch (e) { };
			if (t.responseText == 1) {
				var zoom = map.getZoom();
				var marker=new GMarker(point, addIcon, true);
				map.addOverlay(marker);
				marker.openInfoWindowHtml("<div class=\"infotab infotabImg\"><p><a href=\"/nayta/prev/img"+add_img_id+".jpg\" rel=\"ibox\"><img src=\"/nayta/thmb/img"+add_img_id+".jpg\" alt=\"\" /></a></p><p>&raquo; <a href=\"javascript:insertImage("+add_img_id+","+point.lat()+","+point.lng()+");\" class=\"bold\">Lisää kuva Kuvakartalle</a></p><p class=\"small\">Voit vaihtaa kuvan sijaintia, klikkaamalla haluttua kohtaa kartalla. Paina &quot;peruuta lisäys&quot; -linkkiä, jos et halua lisätä tätä kuvaa Kuvakartalle.</p><p>&raquo; <a href=\"javascript:cancelImageAdd()\" class=\"error\">Peruuta lisäys</a></p></div>");
				init_ibox();
				oldmarker=marker;
			} else {
				var marker=new GMarker(point, addIcon, true);
				map.addOverlay(marker);
				marker.openInfoWindowHtml("<div class=\"infotab\"><p class=\"error\">Ei oikeuksia tähän toimintoon.</p></div>");
				oldmarker=marker;
				add_mode = 0;
			}
		}
	};
	new Ajax.Request('/kuvakartta/request/imagecheck/', options);
}
