//var decloartion
var urlpath = window.location.host;
var map = null;
var Center_Start = new GLatLng(51.165691, 10.451526);
var response = null;
var member = new Array();
var map2 = null;
var gdir = null;
var start_lat = null;
var start_lng = null;
var produktTyp = null;

// MarkerObjekt Premimuhaendler definieren
var templateIcon1 = new GIcon();
templateIcon1.iconSize = new GSize(20, 34);
templateIcon1.iconAnchor = new GPoint(9, 34);
templateIcon1.infoWindowAnchor = new GPoint(9, 2);
templateIcon1.infoShadowAnchor = new GPoint(18, 25);
var poiIcon1   = new GIcon(templateIcon1);
poiIcon1.image = 'http://'+urlpath+'/fileadmin/templates/img/marker_kadeco_rot.gif';

// MarkerObjekt Fachhaendler definieren
var templateIcon2 = new GIcon();
templateIcon2.iconSize = new GSize(20, 34);
templateIcon2.iconAnchor = new GPoint(9, 34);
templateIcon2.infoWindowAnchor = new GPoint(9, 2);
templateIcon2.infoShadowAnchor = new GPoint(18, 25);
var poiIcon2   = new GIcon(templateIcon2);
poiIcon2.image = 'http://'+urlpath+'/fileadmin/templates/img/marker_kadeco_grau.gif';

//erzeuge XML Objekt
if (window.XMLHttpRequest) {
  http = new XMLHttpRequest();
} 
else if (window.ActiveXObject) {
  try {
    http = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e) {
    try {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {}
  } 
}

// Funktion zum löschen von Knoten
function clearChildren(obj) {
  try {
    if(obj.hasChildNodes() && obj.childNodes) {
      while(obj.firstChild) {
        obj.removeChild(obj.firstChild);
      }
    }
  }
  catch(e) {}
} 

function load(){
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById('haend_card'));
    map.setCenter(Center_Start ,5);
    map.addControl(new GLargeMapControl()); //Small/Large als Alternative
    map.addControl(new GMapTypeControl());
  }
}

function getStandort() {
  strasse = document.getElementById('in_str').value;
  plz = document.getElementById('in_plz').value;
  ort = document.getElementById('in_ort').value;
  land = document.getElementById('sel_umkreis').value;
  if(plz == '' || plz == 'PLZ(*)') {
    alert('Bitte geben Sie Ihre Postleitzahl an');
  }
  else if(ort == '' || ort == 'Ort(*)') {
    alert('Bitte geben Sie Ihre Ort an');
  } 
  else{
    strasse2 = '';
    if(strasse != 'Straße' && strasse != '') {
      strasse2 = strasse;
    }
  }
  ort = ort.replace(/ü/g,'ue');
  ort = ort.replace(/ä/g,'ae');
  ort = ort.replace(/ö/g,'oe');
  adresspoint = strasse2+" "+land+" "+plz+" "+ort;
  geocoder = new GClientGeocoder();
  geocoder.getLatLng(adresspoint, function(point) {
    if (!point) {
      alert('Der Startpunkt" '+ adresspoint + '" wurde nicht gefunden');
    }
    else {
      buildxmlURL(point);
    }
  });
}

function buildxmlURL(point) {
  document.getElementById('hs_loader').style.display='inline';
  document.getElementById('haendsu').style.display='none';
  document.getElementById('haendtext').style.display='none';
  document.getElementById('haendergb').style.display='inline';
  document.getElementById('haend_ergebniss').style.display='';
  document.getElementById('haend_ergeb_anzahl').style.display='';
  document.getElementById('legende').style.display='';
  land = document.getElementById('sel_umkreis').value;
  produktTyp = document.getElementById('hs_segment_radio_ka').checked;
  //alert(produktTyp);
  map.setCenter(point ,9);
  //temp = point+"##";
  start_lat = point.lat();
  start_lng = point.lng();
  if(produktTyp==true){ 
    url = 'http://'+urlpath+'/fileadmin/ap_static/haendlersuche_xml.php?lat='+start_lat+'&lng='+start_lng+'&land='+land;
  }
  else{
    url = 'http://'+urlpath+'/fileadmin/ap_static/hs_erwilo_xml.php?lat='+start_lat+'&lng='+start_lng+'&land='+land;
  }
  //alert(url);
  xmlRequest(url);
}

function xmlRequest(url) {
  if (http != null) {
    http.open("GET", url, true);
    http.send(null);
    http.onreadystatechange = ausgeben;
  }
}

function neueSuche(){
  document.getElementById('haendsu').style.display='inline';
  document.getElementById('haendtext').style.display='';
  document.getElementById('hand_adress_frame').style.display='inline';
  document.getElementById('haendergb').style.display='none';
  document.getElementById('haend_ergebniss').style.display='none';
  document.getElementById('haend_ergeb_anzahl').style.display='none';
  document.getElementById('scroll_2').style.display='none';
  document.getElementById('legende').style.display='none';
  result = document.getElementById('haend_ergeb_anzahl');
  clearChildren(result);
  result2 = document.getElementById('haend_inner');
  clearChildren(result2); 
  map.setCenter(Center_Start ,5);
  map.clearOverlays();
}

function checkHoehe() {
  checkdiv = document.getElementById('haend_inner')
  hoehe = checkdiv.offsetHeight;
  if(hoehe>430) {
    scrollvisible = document.getElementById('scroll_2');
    scrollvisible.style.display = 'inline';
  }
  scrolltextInit_1();
}

function ausgeben() {
  if (http.readyState == 4) {
    response = http.responseXML;
    memberlist = response.getElementsByTagName("result");
    memberEntries = memberlist.length;
    if(memberEntries == 0) {
      leere_suche();
    }
    else {
      ergeb_div = document.getElementById('haend_inner');
      clearChildren(ergeb_div);
      for(var i=0; i < memberEntries; i++) {
        member[i] = new Array();
      
       // fest definierte Werte, müssen da sein
        member[i][0] = memberlist[i].getElementsByTagName("uid")[0].firstChild.nodeValue;
        tmp_lat = memberlist[i].getElementsByTagName("lat")[0].firstChild.nodeValue;
        tmp_lng = memberlist[i].getElementsByTagName("lng")[0].firstChild.nodeValue;
        member[i][1] = new GLatLng(tmp_lat,tmp_lng);
      
        // zusätzliche Werte
        member[i][2] = ''; //Name
        member[i][3] = ''; //Name2
        member[i][4] = ''; //Adresse
        member[i][5] = ''; //PLZ
        member[i][6] = ''; //Ort
        member[i][7] = null; //Var für GMarker Objekt
        member[i][8] = ''; //Kennzeichnung Premiumhaendler
        member[i][9] = ''; //uid der Haendlerdatensatzes
        for (var j=0; j < memberlist[i].childNodes.length; j++) {
          with (memberlist[i].childNodes[j]) {
            if (nodeName == 'name') {
              member[i][2] = firstChild.nodeValue;
            }
            else if (nodeName == 'name2') {
              member[i][3] = firstChild.nodeValue;
            }
            else if (nodeName == 'adress') {
              member[i][4] = firstChild.nodeValue;
            }
            else if (nodeName == 'plz') {
              member[i][5] = firstChild.nodeValue;
            }
            else if (nodeName == 'ort') {
              member[i][6] = firstChild.nodeValue;
            }
            else if (nodeName == 'premium') {
              member[i][8] = firstChild.nodeValue;
            }
            else if (nodeName == 'uid') {
              member[i][9] = firstChild.nodeValue;
            }
          }
        }
        //create Marker
        member[i][7] = createMarker(member[i][1], member[i][2], member[i][3], i, member[i][8], member[i][9]);
        map.addOverlay(member[i][7]);
        // Ergebniss anzeigen
        main_div = document.createElement('div');
        main_div.setAttribute('class','haend_erg1');
        br1 = document.createElement('br');
        br2 = document.createElement('br');
        br3 = document.createElement('br');
        br4 = document.createElement('br');
        br5 = document.createElement('br');
        br6 = document.createElement('br');
        namelink1 = document.createElement('a');
        namelink1.setAttribute('href','javascript:showMemberDetail('+i+','+member[i][9]+','+member[i][8]+')');
        txt1 = document.createTextNode(member[i][2]);
        namelink1.appendChild(txt1);
        if(member[i][8] == 1) {
          namelink1.style.color = '#ff4850';        
        }
        namelink2 = document.createElement('a');
        namelink2.setAttribute('href','javascript:showMemberDetail('+i+','+member[i][9]+','+member[i][8]+')');
        txt2 = document.createTextNode(member[i][3]);
        namelink2.appendChild(txt2);
       if(member[i][8] == 1) {
          namelink2.style.color = '#ff4850';        
        }
        main_div.appendChild(namelink1);
        main_div.appendChild(br1);
        main_div.appendChild(namelink2);
        main_div.appendChild(br2);
        txt3 = document.createTextNode(member[i][4]);
        main_div.appendChild(txt3);
        main_div.appendChild(br3);
        txt4 = document.createTextNode(member[i][5]+' '+member[i][6]);
        main_div.appendChild(txt4);
        main_div.appendChild(br4);
        main_div.appendChild(br5);
        routelink = document.createElement('a');
        routelink.setAttribute('href','javascript:createRoute('+i+')')
        routelink.setAttribute('class','hs_routelink');
        routetxt = document.createTextNode('>> Route berechnen');
        routelink.appendChild(routetxt);
        main_div.appendChild(routelink);
        //Einkommentieren wenn Premiumpartner laufen soll
        if(member[i][8]==1 && produktTyp==true) {
          main_div.appendChild(br6);
          premiumlink = document.createElement('a');
          premiumlink.setAttribute('href','http://'+urlpath+'/index.php?id=110&idx='+member[i][9]);
          premiumlink.setAttribute('class','hs_routelink')
          premiumlink.setAttribute('target','_blank');
          premiumtxt = document.createTextNode('>> zur Partnerseite');
          premiumlink.appendChild(premiumtxt);
          main_div.appendChild(premiumlink);
        }
        trenner = document.createElement('hr');
        main_div.appendChild(trenner);    
        ergeb_div.appendChild(main_div); 
      }
      //Ausgabe Anzahl der Ergebnisse
      result = document.getElementById('haend_ergeb_anzahl');
      clearChildren(result);
      max_searchresult = document.createTextNode('Es wurde/n '+memberEntries+' Händler gefunden');
      result.appendChild(max_searchresult);
      //Höhe für Scrolling prüfen
      checkHoehe();
    }
    
    // Loader ausblenden
    document.getElementById('hs_loader').style.display='none';
  } 
}

function createMarker(latlng, titel1, titel2, indent_id, premium_kenn, memberuid) {
   var onMap;
   makertitle = titel1+" "+titel2;
   if(premium_kenn == 1) {
    onMap = new GMarker(latlng, {icon: poiIcon1, title: makertitle});
   }
   else{
    onMap = new GMarker(latlng, {icon: poiIcon2, title: makertitle});
   }
   GEvent.addListener(onMap, "click", function() {
      showMemberDetail(indent_id, memberuid, premium_kenn);
    });
   return onMap;
}

function leere_suche() {
  document.getElementById('hand_adress_frame').style.display = 'none';
  erg_div = document.getElementById('haend_ergeb_anzahl');
  clearChildren(erg_div);
  noResults_1 = document.createTextNode('Ihre Suche brachte keine Ergebnisse.');
  noResults_2 = document.createTextNode('Bitte überprüfen Sie Ihren Standort und den Umkreis');
  br = document.createElement('br');
  br2 = document.createElement('br');
  erg_div.appendChild(noResults_1);
  erg_div.appendChild(br);
  erg_div.appendChild(br2);
  erg_div.appendChild(noResults_2);
}

function showMemberDetail(idx, memberuid, memberpremium) {
  map.setCenter(member[idx][1]);
  if(memberpremium == 1) {
     // Einkommentiern für Aufruf Partnerseite untere Zeile dann löschen
      member[idx][7].openInfoWindowHtml('<b><a href="javascript:createRoute('+idx+')">Route hierher berechnen</a></b><br /><br /><b><a href="http://'+urlpath+'/index.php?id=110&idx='+memberuid+'" target="_blank">zur Partnerseite dieses Händlers</a></b>');
      //member[idx][7].openInfoWindowHtml('<b><a href="javascript:createRoute('+idx+')">Route hierher berechnen</a></b>');
  }
  else {
    member[idx][7].openInfoWindowHtml('<b><a href="javascript:createRoute('+idx+')">Route hierher berechnen</a></b>');
  }
}

/******************************************************************************************************/
// Funktionen für Routenplaner
/******************************************************************************************************/

function createRoute(idx) {
  document.getElementById('an_plan').style.display = '';
  if (GBrowserIsCompatible()) {
    var map2 = new GMap2(document.getElementById("an_card2"));
    map2.addControl(new GLargeMapControl()); //Small/Large als Alternative
    map2.addControl(new GMapTypeControl());
    map2.setCenter(member[idx][1], 11);
    gdir = new GDirections(map2, document.getElementById("divText"));
    GEvent.addListener(gdir, "addoverlay", checkHoehe2);
    start = start_lat+', '+start_lng;
    temp = member[idx][1]+'##';
    ziel = temp.substring(1, 19);
    setDirections(start, ziel, "de_DE");
  }
}

// Popup Routeplaner schließen
function plan_close() {
  route = document.getElementById('divText');
  clearChildren(route);
  anplan = document.getElementById('an_plan')
  anplan.style.display = 'none'; 
  checkHoehe();
}

// Höhe für Scrolling prüfen
function checkHoehe2() {
  checkdiv = document.getElementById('divText')
  hoehe = checkdiv.offsetHeight;
  if(hoehe>500) {
    scrollvisible = document.getElementById('scrollbar');
    scrollvisible.style.display = '';
  }
  scrolltextInit_2();
}

// Route erstellen
function setDirections(fromAddress, toAddress, locale) {
  gdir.load("from: " + fromAddress + " to: " + toAddress,
    { "locale": locale });
}

// Aufruf der Druckansicht
function openprint() {
  printfenster_url = 'http://'+urlpath+'/fileadmin/ap_static/print_file.html';  
  PrintFenster = window.open(printfenster_url, "PrintFenster", "width=800,height=700,left=100,top=100,scrollbars=yes");
  PrintFenster.focus();
}

/************************************************************************************************/
// Scrolling für Suchergebnisse und PopUp START
/************************************************************************************************/

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}
var bw=new lib_bwcheck()

//If you want it to move faster you can set this lower, it's the timeout:
var speed = 30
//Sets variables to keep track of what's happening
var loop, timer

//Object constructor
function makeObj(obj,nest){
    nest=(!nest) ? "":'document.'+nest+'.'
	this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
  	this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
	this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight
	this.clipHeight=bw.ns4?this.css.clip.height:this.el.offsetHeight
	this.up=goUp;this.down=goDown;
	this.moveIt=moveIt; this.x=0; this.y=0;
    this.obj = obj + "Object"
    eval(this.obj + "=this")
    return this
}
// A unit of measure that will be added when setting the position of a layer.
var px = bw.ns4||window.opera?"":"px";

function moveIt(x,y){
	this.x = x
	this.y = y
	this.css.left = this.x+px
	this.css.top = this.y+px
}
//Makes the object go up
function goDown(move){
  maxlaenge = -this.scrollHeight+oCont.clipHeight-55;
  if (this.y>maxlaenge){
	//if (this.y>-this.scrollHeight+oCont.clipHeight){
		this.moveIt(0,this.y-move)
			if (loop) setTimeout(this.obj+".down("+move+")",speed)
	}
}
//Makes the object go down
function goUp(move){
	if (this.y<0){
		this.moveIt(0,this.y-move)
		if (loop) setTimeout(this.obj+".up("+move+")",speed)
	}
}

//Calls the scrolling functions. Also checks whether the page is loaded or not.
function scroll(speed){
	if (scrolltextLoaded){
		loop = true;
		if (speed>0) oScroll.down(speed)
		else oScroll.up(speed)
	}
}
//Stops the scrolling (called on mouseout)
function noScroll(){
	loop = false
	if (timer) clearTimeout(timer)
}
//Makes the object 
var scrolltextLoaded = false

// Initialisierung für Suchergebniss
function scrolltextInit_1(){
	oCont = new makeObj('haend_outer')
	oScroll = new makeObj('haend_inner','haend_outer')
	oScroll.moveIt(0,0)
	//oCont.css.visibility = "visible"
	scrolltextLoaded = true
}

// Initialisierung für Route
function scrolltextInit_2(){
	oCont = new makeObj('divScrollTextCont')
	oScroll = new makeObj('divText','divScrollTextCont')
	oScroll.moveIt(0,0)
	//oCont.css.visibility = "visible"
	scrolltextLoaded = true
}
/************************************************************************************************/
// Scrolling für Suchergebnisse END
/************************************************************************************************/
