
//Für Fahrplanauskunft---------------------------------------------------------

function setEfaParams(params)
{ 
        if(params && params != "")
        {
                var aParams = params.split("&");
                for(var i=0; i<aParams.length; i++)
                {
                        var aValues = aParams[i].split("=");
                        var oParam = document.getElementsByName(aValues[0])[0];
                        if(oParam)
                                oParam.value = aValues[1];
                }
        }
}

function clearCity(thisObj)
{
        var oInput = thisObj;
        if(!oInput)
                return;

        if(oInput.value == "Ort, Haltestelle oder Str." )
        {
                oInput.value = "";
                //oInput.focus();
        }
}

function clearCities()
{
        clearCity(document.getElementsByName('name_origin')[0]);
        clearCity(document.getElementsByName('name_destination')[0]);
}

function initCities()
{
        var oPlaceOrigin = document.getElementsByName('name_origin')[0];
        if(oPlaceOrigin && oPlaceOrigin.value == "")
                oPlaceOrigin.value = "Startort, Haltestelle oder Str.";

        var oPlaceDestination = document.getElementsByName('name_destination')[0];
        if(oPlaceDestination && oPlaceDestination.value == "")
                oPlaceDestination.value = "Zielort, Haltestelle oder Str.";
}
//---------------------------------------------------------------------------------------

//Anpassen der Höhe des Contentbereichs an die rechte Sidebar, wegen der Höhe des Borders
function adjustHeight(adjustLayer, referenzLayer, adjustment)
{
    var adLayer = document.getElementById(adjustLayer);
    var refLayer = document.getElementById(referenzLayer);

    var minHeight = parseInt(refLayer.offsetHeight) + adjustment; 

    if(minHeight > adLayer.offsetHeight) {
        adLayer.style.height = minHeight+"px";
    }
    
}

function init_accordion() {
     if ($('#accordion-wrapper').length) {
		$('#accordion-wrapper').accordion({
		    header: '.accordion_header',
		    autoheight: false,
		    animated: 'easeslide'
		});
     }
}

// adding the forEach and reduce methods to the Array prototype, so this functionality is the same for all browsers
if (!Array.prototype.forEach) {
	Array.prototype.forEach = function(fn, bind) {
		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
	}
}
Array.prototype.each = function() {
	Array.prototype.forEach.apply(this, arguments);
}


function getMapsWithAdress(adressString){
    //Maps initialisieren und in einen Container laden:
            //-------------------------------------------------
            var geocoder = new google.maps.Geocoder();
            var geoLocation = new google.maps.LatLng(0, 0);
            var myOptions = {
                  zoom: 10,
                  center: geoLocation,
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  mapTypeControlOptions: {
                    style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                  }
            };

            var map = new google.maps.Map(document.getElementById("map_container"), myOptions) ;
            var marker = new google.maps.Marker({
              position: geoLocation,
              map: map,
              draggable: false
            });

            //Adresse ermitteln und die Karte ausrichten:
            //-------------------------------------------
            geocoder.geocode({'address': adressString},
            function(results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
                var position = results[0].geometry.location;
                map.setCenter(position);
                map.setZoom(14);
                marker.setPosition(position);

              } else {
                document.getElementById("map_container").innerHTML = 'Die Position konnte nicht automatisch ermittelt werden. ' + status;
              }
            })
}


function getMapsWithAdressArray(addresses, titles){
    
    var map = new google.maps.Map(document.getElementById("map_container"), {
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var addressArray = addresses.split("|*|");
    var TitleArray   = titles.split("|*|");
    var locations = [];
    for (var i = 0, l = addressArray.length; i < l; i++){
        locations[i] = new Array(2);
        locations[i]['address'] = addressArray[i];
        locations[i]['title']   = TitleArray[i];
        locations[i]['index']   = i;
    }

    var bounds = new google.maps.LatLngBounds();
    var infoWindow = new google.maps.InfoWindow;


        var markerImages = {
          1: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),//Größe des Icons
            new google.maps.Point(0,0),//Anfang des Icons
            new google.maps.Point(9, 26)),//Spitze des Icons
          2: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(20,0),
            new google.maps.Point(9, 26)),
          3: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(40,0),
            new google.maps.Point(9, 26)),
          4: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(60,0),
            new google.maps.Point(9, 26)),
          5: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(80,0),
            new google.maps.Point(9, 26)),
          6: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(100,0),
            new google.maps.Point(9, 26)),
          7: new google.maps.MarkerImage('images/interface/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(120,0),
            new google.maps.Point(9, 26)),
          8: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(140,0),
            new google.maps.Point(9, 26)),
          9: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(160,0),
            new google.maps.Point(9, 26)),
          10: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(180,0),
            new google.maps.Point(9, 26)),
          11: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(200,0),
            new google.maps.Point(9, 26)),
          12: new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(20, 27),
            new google.maps.Point(220,0),
            new google.maps.Point(9, 26))
        }
        var markerShadow = new google.maps.MarkerImage('images/icons/map_markers.png',
            new google.maps.Size(38, 27),
            new google.maps.Point(240, 0),
            new google.maps.Point(5, 26));


        locations.each(function(location){
            var address = location['address'];
            var title   = location['title'];
            var index   = location['index']+1;

            var marker = new google.maps.Marker({
              map: map,
              title: title,
              icon: markerImages[index],
              shadow: markerShadow
            });
            geocoder = new google.maps.Geocoder();
            if (geocoder) {
              geocoder.geocode( { 'address': address}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                  var position = results[0].geometry.location;
                  marker.setPosition(position);
                  map.setCenter(position);
                  map.setZoom(12);
                  
                  var html = title;
                  bounds.extend(position);
                  bindInfoWindow(marker, map, infoWindow, html);
                } else {
                  alert("Geocode was not successful for the following reason: " + status);
                }
              });
            }
        });

        map.fitBounds(bounds);

    var bindInfoWindow = function(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }


}

function fpaChangeColor(objectId){

  var object = document.getElementById(objectId);
  var delimiter = objectId.length-2;
  var param     = objectId.substring(0,delimiter);
  if(object.style.backgroundColor.substring(0,1) == '#'){
      var color  = object.style.backgroundColor.substring(1,7);
  }else{
      var color  = rgbConvert(object.style.backgroundColor);
  }

  document.getElementsByName(param)[0].value = color;
  refreshFrame('fpa_frame');

}

function fpaChangeSize(objectId){

  var size     = objectId.substring(5,objectId.length);

  document.getElementsByName('size')[0].value = size;
  refreshFrame('fpa_frame');

}

function refreshFrame(frameId){
    
    var bgrcolor = document.getElementsByName('bgrcolor')[0].value;
    var legendbgr = document.getElementsByName('legendbgr')[0].value;
    var color = document.getElementsByName('color')[0].value;
    var size = document.getElementsByName('size')[0].value;
    var width = '180px';
    var height = '213px';
    if(size=='smallvertical') {
        width='150px';
        height = '202px';
    }

    document.getElementById(frameId).width = width;
    document.getElementById(frameId).height = height;
    document.getElementById(frameId).src = 'create_fpa/fpa_button.php?size='+ size +'&color='+ color +'&bgrcolor=' + bgrcolor + '&legendbgr='+legendbgr;
}

function rgbConvert(str) {
   str = str.replace(/rgb\(|\)/g, "").split(",");
   str[0] = parseInt(str[0], 10).toString(16).toLowerCase();
   str[1] = parseInt(str[1], 10).toString(16).toLowerCase();
   str[2] = parseInt(str[2], 10).toString(16).toLowerCase();
   str[0] = (str[0].length == 1) ? '0' + str[0] : str[0];
   str[1] = (str[1].length == 1) ? '0' + str[1] : str[1];
   str[2] = (str[2].length == 1) ? '0' + str[2] : str[2];
   return (str.join(""));
}
