function createCookie(name, value, days) {
   if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
   }
   else { 
	  var expires = "";
   }
   document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') 
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return 
            c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

if (rtm_gmaps_use_cookie_maps == "1") {
   if (readCookie("center") == null) {
       createCookie("center", "" + 
           rtm_gmaps_default_lat + "," + rtm_gmaps_default_lng + "");
   }
}

function is_array(input){
     return typeof(input)=='object'&&(input instanceof Array);
}

function getElementsByClassName(oElm, strTagName, strClassName) {

   var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
   var arrReturnElements = new Array();
   strClassName = strClassName.replace(/\-/g, "\\-");
   var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
   var oElement;

   for(var i = 0; i < arrElements.length; i++) {
       oElement = arrElements[i];
       if(oRegExp.test(oElement.className)) {
          arrReturnElements.push(oElement);
       }
   }
   return (arrReturnElements)
}


var lastMarker;  
var map;
var street;
var laskuri;
var center;
laskuri = 0;


function createMarker(baseIcon, point, index, message, tyyppi, varjo, name, map) {

	var letteredIcon = new GIcon(baseIcon);
	if (tyyppi) {
        letteredIcon.image = rtm_gmaps_icon_url + tyyppi + ".png";
    	letteredIcon.shadow = rtm_gmaps_icon_url + "shadow.png";
	} else {
    	letteredIcon.image = rtm_gmaps_icon_url + "13.png";
    	letteredIcon.shadow = rtm_gmaps_icon_url + "shadow.png";
	}
    var html = pretty(name,message);
    markerOptions = { icon:letteredIcon };
    var marker = new GMarker(point, markerOptions);

    GEvent.addListener(marker, "click", function() {
        marker.openExtInfoWindow(map, "rtm_gmaps_ph", html, {beakOffset: 3});
    });
    return marker;
}

function pretty(a,b) {
    return '<div class="mapcont">' + a + '<br />' + b + '</div>';
}

function do_xml(map, baseIcon, paikka) {

      testi = getElementsByClassName(document,"*","recentitem");
      var n = 0;
      var i = 1;
      var nnn = 0;

      while (n < testi.length) {
          //rtm_title = getElementsByClassName(testi[n],"*","rtm_gmaps_title")
          var rtm_title = getElementsByClassName(testi[n],"*","storytitle")
          var rtm_lat = getElementsByClassName(testi[n],"*","rtm_lat")
          var rtm_lng = getElementsByClassName(testi[n],"*","rtm_lng")
          var rtm_icon = getElementsByClassName(testi[n],"*","rtm_icon")
          var rtm_name = getElementsByClassName(testi[n],"*","rtm_name")
          if (rtm_title != "" 
               && rtm_icon != ""
               && rtm_lat != "" 
               && rtm_lng != "" 
               && rtm_lat != 0 
               && rtm_lng != 0) {
             //message = rtm_name[0].innerHTML + "<br>" + rtm_title[0].innerHTML;
             var latlng = new GLatLng(rtm_lat[0].innerHTML,rtm_lng[0].innerHTML);
             if (rtm_name != "") {
                 map.addOverlay(createMarker(baseIcon, latlng, 13,rtm_title[0].innerHTML,rtm_icon[0].innerHTML,i,rtm_name[0].innerHTML,map));
             } else {
                 map.addOverlay(createMarker(baseIcon, latlng, 13,rtm_title[0].innerHTML,rtm_icon[0].innerHTML,i,"",map));
             }
             bounds = map.getBounds();
             var southWest = bounds.getSouthWest();
             var northEast = bounds.getNorthEast(); 
             var ok = 0;

             if (nnn == 0) {
                 var minlat = rtm_lat[0].innerHTML;
                 var maxlat = rtm_lat[0].innerHTML;	
                 var minlng = rtm_lng[0].innerHTML;
                 var maxlng = rtm_lng[0].innerHTML;
             } else {
                 if (minlat > rtm_lat[0].innerHTML) {
                     minlat = rtm_lat[0].innerHTML;
                 }
                 if (maxlat < rtm_lat[0].innerHTML) {
                     maxlat = rtm_lat[0].innerHTML;
                 }
                 if (minlng > rtm_lng[0].innerHTML) {
                     minlng = rtm_lng[0].innerHTML;
                 }
                 if (maxlng < rtm_lng[0].innerHTML) {
                     maxlng = rtm_lng[0].innerHTML;
                 }
            }

            nnn++;

            if (rtm_gmaps_use_cookie_maps == "1") {
               while (ok < 100) {
                  if (rtm_lat[0].innerHTML < map.getBounds().getNorthEast().lat() 
                     && rtm_lat[0].innerHTML > map.getBounds().getSouthWest().lat() 
                     && rtm_lng[0].innerHTML < map.getBounds().getNorthEast().lng() 
                     && rtm_lng[0].innerHTML > map.getBounds().getSouthWest().lng()) {
                       ok = 1000;
                  } else {
                     map.zoomOut();
                  }
                  ok++;
               }
            }
         }
         i++;
         n++;
      }
   if (rtm_gmaps_use_cookie_maps != "1") {
      if (nnn > 0) {
         var laskelat = parseFloat(minlat) + ((parseFloat(maxlat) - parseFloat(minlat)) /2 );
         var laskelng = parseFloat(minlng) + ((parseFloat(maxlng) - parseFloat(minlng)) /2 );
         map.setCenter(new GLatLng(laskelat,laskelng), 15);
         var ok = 0;
         while (ok < 100) {
             if (parseFloat(maxlat) < map.getBounds().getNorthEast().lat()
                 && parseFloat(minlat) > map.getBounds().getSouthWest().lat()
                 && parseFloat(maxlng) < map.getBounds().getNorthEast().lng()
                 && parseFloat(minlng) > map.getBounds().getSouthWest().lng()) {
                 ok = 1000;
              } else {
                 map.zoomOut();
              }
              ok++;
          }
      }
   }
}

function handleNoFlash(errorCode) {
  if (errorCode == 603) {
    alert("Katunäkymä vaatii selaimesta Flash-tuen.");
    return;
  }
}

function init_street() {
	var street_view = jQuery('#street_view').val();

    if (street_view == 1) {
        var latlng = { lat: jQuery('#street_lat').val(), lng: jQuery('#street_lng').val()};
        var pov = { yaw: parseFloat(jQuery('#street_yaw').val()), 
			pitch: parseFloat(jQuery('#street_pitch').val()), 
			zoom: parseFloat(jQuery('#street_zoom').val())};
	    var panopt = { latlng: latlng, pov: pov};
		var lat = parseFloat(jQuery('#street_lat').val());
		var lng = parseFloat(jQuery('#street_lng').val());
		var yaw = parseFloat(jQuery('#street_yaw').val());
		var pitch = parseFloat(jQuery('#street_pitch').val());
		var zoom = parseFloat(jQuery('#street_zoom').val());
		var streetloc = new GLatLng(lat,lng);
		var pov = {yaw: yaw, pitch: pitch, zoom: zoom};
		panoramaOptions = { latlng:streetloc, pov:pov, enableFullScreen: true };
		var street = new GStreetviewPanorama(document.getElementById("rtmstreetbox"), panoramaOptions);
		GEvent.addListener(street, "error", handleNoFlash);
    }
}



function initialize() {

    // find the center of the map
    if (rtm_gmaps_use_cookie_maps == "1") {
        center = readCookie("center").toString().replace(' ','').replace('(','').replace(')','').split(",");
        if (center[0] == "" || center[0] == undefined) {
            center[0] = rtm_gmaps_default_lat;
        }
        if (center[1] == "" || center[1] == undefined) {
            center[1] = rtm_gmaps_default_lng;
        }
        document.getElementById("searchboxform_lat").value=center[0];
        document.getElementById("searchboxform_lng").value=center[1];
    }

    // Create and Center a Map
    var map = new GMap2(document.getElementById("rtmgmapsbox"));
    if (rtm_gmaps_use_cookie_maps == "1") {
        map.setCenter(new GLatLng(center[0], center[1]), 12);
    } else {
        map.setCenter(new GLatLng(rtm_gmaps_default_lat, rtm_gmaps_default_lng), 12);
    }
    map.addControl(new GSmallMapControl());
    map.addControl(new GMenuMapTypeControl());
    map.enableScrollWheelZoom();
 
    var baseIcon = new GIcon();
    baseIcon.iconSize = new GSize(32, 37);
    baseIcon.shadowSize = new GSize(51, 37);
    baseIcon.iconAnchor = new GPoint(15,37);
    baseIcon.infoWindowAnchor = new GPoint(40, 0);

    GEvent.addListener(map,"moveend", function(){
   
        var bounds = map.getBounds();
        var center2 = map.getCenter();

        if (rtm_gmaps_use_cookie_maps == "1") {
            center2 = center2.toString().replace(' ','').replace('(','').replace(')','');
            createCookie("center",""+center2+"");
            center = readCookie("center").replace(' ','').replace('(','').replace(')','').split(",");
            if (center[0] == "" || center[0] == undefined) {
               center[0] = rtm_gmaps_default_lat;
            }
            if (center[1] == "" || center[1] == undefined) {
               center[1] = rtm_gmaps_default_lng;
            }  
            document.getElementById("searchboxform_lat").value=center[0];
	        document.getElementById("searchboxform_lng").value=center[1];
        }
    });

    var bounds = map.getBounds();
    map.clearOverlays();
    do_xml(map, baseIcon, bounds);
}


    //]]>

function don_lataa() {
    var don_lat =document.getElementById("searchboxform_lat");
    var don_lng =document.getElementById("searchboxform_lng");
    if (!(don_lat == null && don_lng == null)) {
      if (GBrowserIsCompatible()) initialize();
    }
}

function toggle_map_view() {

    jQuery('#streetwindow').show();
    init_street();

}

addLoadEvent(don_lataa);

