// all.js  fuer alle nutzbar , wenn folgende Daten definiert sind
//
// ...	die google-Koordinaten des Zeitungstitel defGeoX/Y (head.php)
// ...	der servicePath (head.php)
// ...  der Cookie ist Merkzettel ( statisch )





//
//
//
//
// Merkzettel Cookie
//
//
//
//

function cookie_setzen() {

   var anzParameter = cookie_setzen.arguments.length;
   var parameter = cookie_setzen.arguments;

   // 1. Cookie-Name
   var name = parameter[0];

   // 2. Cookie-Wert
   var value = (anzParameter >= 2) ? parameter[1] : "";
   value = escape(value); // URL-Codierung

   // 3. Haltbarkeitsdatum
   var expires = (anzParameter >= 3) ? parameter[2] : null;
   if (expires != null) {
      if (expires.toGMTString) {
         expires = expires.toGMTString();
      }
   }

   // 4. Domain
   var domain = (anzParameter >= 4) ? parameter[3] : null;

   // 5. Pfad
   var path = (anzParameter >= 5) ? parameter[4] : null;

   if (path != null) {
      path = escape(path); // Sonderzeichen umwandeln
   }
   // Cookie wird zentral definiert ( siehe index.php )
   path = cookiePath;

   // 6. Sicherheitsstufe
   var secure = (anzParameter >= 6) ? parameter[5] : null;
   // Zusammensetzen des Cookies
   //

   var c = name + "=" + escape(value);
   if (expires != null) {
      c += "; expires=" + expires;
   }
   else
   {
      var date = new Date();
      date.setTime(date.getTime()+(7*24*60*60*1000));
      c += "; expires=" + date.toGMTString();
   }

   if (domain != null) {
      c += "; domain=" + domain;
   }
   if (path != null) {
      c += "; path=" + path;
   }
   if (secure) {
      c += "; secure";
   }
   // Cookie setzen
   document.cookie = c;
}

function cookie_lesen(name) {
   var i = document.cookie.indexOf(name + "=");
   var c = "";
   if (i > -1) {
      var ende = document.cookie.indexOf("; ",
                 i+name.length+1);
      if (ende == -1) {
         ende = document.cookie.length;
      }
      c = document.cookie.substring(i+name.length+1, ende);
   }
   return unescape(c);
}

function laden_collection() {
   var str = cookie_lesen("Merkzettel");
   str = unescape(str);
   var temp = new Array();

   // Array loeschen (! funzt nicht ) 
   	for (var e in temp) {
   		delete(temp[e]);
	}

   // Daten aus dem Cookie in ein Array umwandeln
   if (str != "") {
      str = str.replace(/,/g, "\",\"");
      str = "\"" + str + "\""
      eval("temp = [" + str + "]");
   }

   // assoziatives Array erstellen
   var c = new Array();
   for (var e in c) {
  	c[e]="";
   }
   for (var i=0; i<temp.length; i+=2) {
  	c[temp[i]] = temp[i+1];

   }

   // Array zurückgeben
   return c;
}

function lesen_collection(name) {
   var c = laden_collection();
   return c[name];
}

function allelesen_collection() {
   var c = laden_collection();
   return c;
}

function speichern_collection(c) {
   var temp = new Array();
      for (var e in c) {
      	    // geclonte Elemente filtern
      	    if (e.substring(0,2) == "id") {
            temp[temp.length]=e;
	    temp[temp.length]=c[e];
            }
      }
   cookie_setzen("Merkzettel", temp.toString());
}

function loeschen_collection(name, wert) {
   var c = laden_collection();
   var temp = new Array();
   for (var e in c) {
      // geclonte Elemente filtern
      if (e.substring(0,2) == "id") {
      	 if(e!=name){ 
      		temp[temp.length]=e;
      		temp[temp.length]=c[e];
     	 }      
      }      
   }
   cookie_setzen("Merkzettel", temp.toString());
}

function schreiben_collection(name, wert) {
   var c = laden_collection();
   c[name] = wert;
   speichern_collection(c);
}



//
//
//
//
// DIV-Steuerung / Liste-Detail-Steuerung
//
//
//
//

function showBlock(id,von,bis)
	{
	//alert(" Zeige DIV-Block " + id );
    		node=document.getElementById('div0');
    		//node.style.height='';
    		//node.style.visibility='hidden';
        	node.innerHTML="";
    		node1=document.getElementById('div'+id);
        	node.innerHTML=node1.innerHTML;
    		node2=document.getElementById('showanz');
        	node2.innerHTML="Treffer " + von + "-" + bis;
	}

function forward(mid)
	{
	 var title = "";
	 var Fenster = window.open( servicePath + "mail.php?id=" + mid + "&url=" + url + "&title" + title , "drucken" , "width=580,height=600,Resizable=no,scrollbars=yes,menubar=no,directories=no,status=no");
	 Fenster.focus();

	}

function expose(mid)
	{
	merk(mid);
        allemerk();
	}

function drucken(mid)
	{
	  var Fenster = window.open( servicePath + "drucken.php?id=" + mid , "drucken" , "width=580,height=600,Resizable=no,scrollbars=yes,menubar=no,directories=no,status=no");
	  Fenster.focus();


	}

function schliessen(mid){

		var Fenster = window.open( servicePath + "index.php?" + query , "_self" );

	}

function mschliessen(id){

		loeschen_collection("id"+id.substring(4,id.length), id); 

    		node=document.getElementById('etRest');
    		node.style.visibility='visible';

        	node=document.getElementById(id);
        	node.innerHTML="";
	}


//
//
//
//
// Google Maps 
//
//
//
//
var map;
var geocoder;
var sidebar;

function load() {

      allemerk();

      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(defGeoX,defGeoY), 12);
        var sidebar = document.getElementById('etList');
      }
}


function sendGMQuery(add,rad) {
     
     var address = document.getElementById('addressInput');
     address.value = add ;
     var radius = document.getElementById('radiusSelect');
     radius.value = rad ;
 
     // Google laden , falls noch nicht erfolgt
     load();

     geocoder.getLatLng(add, function(latlng) {
       if (!latlng) {
         alert(address + ' nicht gefunden');
       } else {
         searchLocationsNear(latlng,'0');
       }
     });

}


function searchLocationsLeft() {

     var address = document.getElementById('addressInput').value;

     load();

     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' nicht gefunden');
       } else {
         searchLocationsNear(latlng,'1');
       }
     });
}

function searchLocations() {

     var address = document.getElementById('addressInput').value;
     var radius = document.getElementById('radiusSelect').value;
     query="&add=" + address + "&rad=" + radius ;
     
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' nicht gefunden');
       } else {
         searchLocationsNear(latlng,'0');
       }
     });
}

function showLocation(id) {

        var searchUrl = servicePath + 'search_georesults.php?id=' + id ;
        GDownloadUrl(searchUrl, function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName('marker');
        map.clearOverlays();

        var bounds = new GLatLngBounds();

        map.setCenter(new GLatLng(52.384483,9.742810), 12);

        for (var i = 0; i < markers.length; i++) {
           var id = markers[i].getAttribute('id');
           var name = markers[i].getAttribute('name');
           var strasse = markers[i].getAttribute('strasse');
           var hausnr = markers[i].getAttribute('hausnr');
           var ort = markers[i].getAttribute('ort');
           var address = strasse + ' ' + hausnr + '<br>' + ort;
           var ortsteil = markers[i].getAttribute('ortsteil');
           var distance = 0 ;
           var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                    parseFloat(markers[i].getAttribute('lng')));

           var marker = createMarker(point, name, address);
              map.addOverlay(marker);
              bounds.extend(point);
           }
         map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
         });
}


function showLocations(str,art,typ) {

        var searchUrl = servicePath + 'search_georesults.php?str=' + str + '&art=' + art  + '&typ=' + typ ;

        GDownloadUrl(searchUrl, function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName('marker');
        map.clearOverlays();

        var bounds = new GLatLngBounds();

        map.setCenter(new GLatLng(defGeoX,defGeoY), 12);

        for (var i = 0; i < markers.length; i++) {
           var id = markers[i].getAttribute('id');
           var name = markers[i].getAttribute('name');
           var strasse = markers[i].getAttribute('strasse');
           var hausnr = markers[i].getAttribute('hausnr');
           var ort = markers[i].getAttribute('ort');
           //var address = strasse + ' ' + hausnr + '<br>' + ort;
           var address = strasse + ' ' + hausnr + '<br>' + ort;
           var ortsteil = markers[i].getAttribute('ortsteil');
           var distance = 0 ;
           var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                    parseFloat(markers[i].getAttribute('lng')));

           var marker = createMarker(point, name, address);
              map.addOverlay(marker);
              bounds.extend(point);
           }
         map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
         });
}


function searchLocationsNear(center,showtyp) {

     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = servicePath + 'search_geoxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var details = document.getElementById('etDetail');
       details.innerHTML = '';
       sidebar = document.getElementById('etList');
       sidebar.innerHTML = '';
       details=document.getElementById('etRest');
       details.style.visibility='visible';

 	if (showtyp == '1')
 	{
       		var treffer = document.getElementById('treffer');
       		var treffer1 = document.getElementById('treffer1');
 	}


       if (markers.length == 0) {
          sidebar.innerHTML = '<div id=\"db_zwischenkopf\"><p>Keine Objekte im Umkreis gefunden.</p></div> <br style=\"clear:both;\"/>'; 
         map.setCenter(new GLatLng(52.384483,9.742810), 12);
         return;
       }

       var bounds = new GLatLngBounds();

	// Create our "tiny" marker icon
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "blue-dot.png";
        blueIcon.image = servicePath + "blue-dot.png";

 	blueIcon.iconSize = new GSize(30, 30);
	// Set up our GMarkerOptions object
	markerOptions = { icon:blueIcon };

  	var point1 = new GLatLng(center.lat(),center.lng());
  	map.addOverlay(new GMarker(point1, markerOptions));

	sidebar.innerHTML = '<div id=\"db_zwischenkopf\"><p>Suchergebnisse: <strong>' + markers.length + '</strong></p> </div><br style=\"clear:both;\"/>'; 

	if (showtyp == '1')
	  {
          var add = document.getElementById('addressInput').value;
          var rad = document.getElementById('radiusSelect').value;
          treffer.innerHTML = 'Suche : &nbsp;&nbsp;<a href=\"' + servicePath + '/index.php?add=' + add + '&rad=' + rad + '&back=2\" > ' + markers.length + ' Objekte gefunden. </a>'; 
          treffer1.innerHTML = '<center><a href=\"' + servicePath + '/index.php&add' + add + '&rad=' + rad + '&back=2\" > ' + markers.length + ' Objekte gefunden. Zum Anzeigen bitte hier klicken </a></center>'; 
	  }

       createBegin();

       for (var i = 0; i < markers.length; i++) {
         var id = markers[i].getAttribute('id');
         var name = markers[i].getAttribute('name');
         var strasse = markers[i].getAttribute('strasse');
         var hausnr = markers[i].getAttribute('hausnr');
         var ort = markers[i].getAttribute('ort');
         var ortsteil = markers[i].getAttribute('ortsteil');
         //var address = markers[i].getAttribute('address');
         var address = strasse + ' ' + hausnr + '<br>' + ort;
         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
         var marker = createMarker(point, name, address);
         map.addOverlay(marker);
         createSidebarEntry(id, strasse, hausnr , ort, ortsteil , marker, name, address, distance);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
       //createEnd();
     });
}

function createMarker(point, name, address) {

      var marker = new GMarker(point);
      var html = '<b>' + name + '</b> <br/>' + address + '<br/>';
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
}

function createEnd() {

      var html = '';
      html = '</table>';
      sidebar.innerHTML += html;
      return;
}

function createBegin() {

      var html = '';

        html = '<div id=\"db_ergebnisliste\"><table class=\"db_tformat\">' + 
        '<tr closs=\"kopf\">' + 
        '       <td width=\"90\">&nbsp;</td>' + 
        '       <td class=\"kopf\" width=\"145\">Strasse</td>' +
        '       <td class=\"kopf\" width=\"145\">Ortsteil</td>' + 
        '       <td class=\"kopf\" width=\"125\">Stadt</td>' + 
        '</tr></table></div>';

      sidebar.innerHTML += html;
}


function createSidebarEntry(id, strasse, hausnr , ort, ortsteil,  marker, name, address, distance) {


      var html = '';

        html = '<div id=\"db_ergebnisliste\"><table class=\"db_tformat\">' + 
        '<tr closs=\"kopf\">' +
        '        <td width=90 rowspan=\"3\">' +
        '               <div id=\"bild_' + id + '\"> ' +
        '                     <img onclick=\"showExt(' + id + ')\" class=\"details\" NOonmouseover=\"showInt(' + id + ')\" width=70 src=image/m.' + id + '.1.jpg alt=\"kein Bild\" >' +
        '               </div> ' +
        '       </td>' +
        '       <td class=\"name\" colspan=\"2\">' + name + '</td>' +
        '       <td class=\"google\"></td>' +
        '</tr>' +
        '<tr>' +
        '       <td width=\"145\ class=\"adresse\">' + strasse + ' ' + hausnr + '</td>' +
        '       <td width=\"145\ class=\"adresse\">' + ort + '</td>' +
        '       <td width=\"125\ class=\"adresse\">' + ortsteil + '</td>' +
        '</tr>' +
        '<tr>' +
        '        <td colspan=\"2\" class=\"service\"><div id=\"details\" onclick=\"showExt('+ id + ')\" ><img src=\"images/bg_pfeil_schwarz.gif\" > Details</div><!-- <a href=\"#\" class= \"ergebnis\">Kommentare<img src=\"images/kommentar.gif\" border=\"0\" alt=\"Kommentar\"> 6</a> --> </td>' + 
        '       <td class=\"date\"><a href=\"#\" onclick=\"merk(' + id + ')\" class=\"db_merken_liste\">merken</a></td>' +
        '</tr></table></div>';


      sidebar.innerHTML += html;
      return ;
}

//
//
//
//
// Erweiterung onload/onunload ( body function )
//
//
//

function addOnload(onloadFunc) {
     if(onloadFunc){
     	if(window.addEventListener) {
     		window.addEventListener("load", onloadFunc, false);
     	} else if(this.attachEvent) {
     		window.attachEvent("onload", onloadFunc);
     	} else {
     		var onloadOld = window.onload;
     		window.onload = function() {
     			if (onloadOld) {
     			onloadOld();
     			}
     			onloadFunc();
     		};
     	}
     }

}



function addOnunload(onunloadFunc) {
     if(onunloadFunc){
     	if(window.addEventListener) {
     		window.addEventListener("unload", onunloadFunc, false);
     	} else if(this.attachEvent) {
     		window.attachEvent("onunload", onunloadFunc);
     	} else {
     		var onunloadOld = window.onunload;
     		window.onunload = function() {
     			if (onunloadOld) {
     				onunloadOld();
     			}
     		onunloadFunc();
     		};
     	}
     }

}


