Event.observe(window, 'unload',
      function() { map.Unload; }
);

var domain = 'http://' + window.location.hostname + '/';

var searchresulttableID = 'rounded-corner';

Event.observe(window, 'load',
	      function() { $(searchresulttableID).hide(); }
	);

function scrollToResults() {
	//$('searchresultdiv').scrollTo();
	Effect.ScrollTo("searchresultdiv", { duration: 1.0 });

}

function radioWert(rObj) {
    for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
    return false;
}

function selectWert(sObj) {
    with (sObj) return options[selectedIndex].value;
}

function handleRequest() {
	$(searchresulttableID).hide();
	clearFromChilds('searchresulttablecontent');
	search();
}

function enableLoader() {
	$('searchresult').innerHTML = '<div style="text-align:center;width:100%"><img src="'+domain+'images/ajax-loader.gif" alt="now loading" /><br />Bitte warten, es wird gesucht.</div>';
	$('searchresult').show();
}

function disableLoader() { // fires also visibility of table
	$('searchresult').innerHTML = '';
	$('searchresult').hide();
	$(searchresulttableID).show();
}

function clearFromChilds(id) {
	var element = $(id);
	while (element.firstChild) {
	  element.removeChild(element.firstChild);
	}
}

function enableRadioButton(string) {
	switch(string) {
		case 'city':
			$('radio_city').checked=true;
			//$('city').enable();
			//$('plz').disable();
			//$('distance').enable();
			//$('county').disable();
			break;
		case 'plz':
			$('radio_city').checked=true;
			//$('county').disable();
			//$('plz').enable();
			//$('distance').enable();
			//$('city').disable();
			break;
		case 'county':
			$('radio_county').checked=true;
			//$('county').enable();
			//$('plz').disable();
			//$('distance').disable();
			//$('city').disable();
			break;
	}
}

function formSearch() {
	//encodeURIComponent
	var plz=document.getElementById('city').value;
	plz=encodeURIComponent(plz);
	var city=document.getElementById('city').value;
	city=encodeURIComponent(city);
	var distance=selectWert(document.form.distance);
	distance=encodeURIComponent(distance);
	var county = selectWert(document.form.county);
	county=encodeURIComponent(county);
	var radio = radioWert(document.form.radio);
	radio=encodeURIComponent(radio);
	
	var option='';
	var radioName=radio;
	switch(radio) {
	case 'city':
		reg_ex_plz=/\d{5}/;
		if (reg_ex_plz.test(city)) {
			option=plz;
			radioName='plz';
		} else {
			option=city;
			radioName='stadt';
		}
		break;
	case 'plz':
		option=plz;
		break;
	case 'county':
		option=county;
		radioName='bundesland';
		break;
	}
	
	document.location.href=domain+'golfmap/'+radioName+'/'+option+'/'+distance+'/golfplatz-suche.html';
}

function justNumbers(el)
{
  var val = el.value.replace(/[^0-9]/g, '');
  if(val.length>5) {
	  val=val.substr(0,5);
  }
  el.value = val;
} 

function search() {
	enableLoader();
	side_bar_html='';
	table_html='';
	var plz=document.getElementById('city').value;
	var city=document.getElementById('city').value;
	var distance=selectWert(document.form.distance);
	var bounds = new GLatLngBounds();
	var county = selectWert(document.form.county);
	var radio = radioWert(document.form.radio);
	if (radio=='city') {
		reg_ex_plz=/\d{5}/;
		if (reg_ex_plz.test(city)) {
			radio='plz';
		}
	}
	map.clearOverlays();
	new Ajax.Request(domain+'golfmap.php',
	{
		method:'get',
		parameters: {'plz': plz, 'distance': distance, 'county': county,'radio': radio,'city': city},
		onSuccess: function(transport) {
			var response = transport.responseText;
			if(response!="failed"&&response!="CALABARZON") {
				new Ajax.Request(domain+response,
				{
					method:'get',
					onSuccess: function(transport) {
					
						
					var xml = transport.responseXML;
						//alert(xml);
						var marker = xml.getElementsByTagName('marker');
						var marker_length = marker.length;
						//alert(marker_length);
						//console.log(xml);
						//alert(xml.getElementsByTagName('marker'));
						for (var i=0;i<marker_length;i++) {
							var dataLoaded=false;
							var id = marker[i].getAttribute('id');
							var lat = marker[i].getAttribute('lat');
							var lng = marker[i].getAttribute('lng');
							if(marker[i].getElementsByTagName('content')[0].childNodes[0]!=null) {
								var content = marker[i].getElementsByTagName('content')[0].firstChild.data;
							} else {
								var content = '';
							}
							if(marker[i].getElementsByTagName('city')[0].childNodes[0]!=null) {
								var city = marker[i].getElementsByTagName('city')[0].childNodes[0].nodeValue;
							} else {
								var city = '';
							}
							
							if(marker[i].getElementsByTagName('distance')[0].childNodes[0]!=null) {
								var distance = marker[i].getElementsByTagName('distance')[0].childNodes[0].nodeValue;
							} else {
								var distance = '';
							}
							
							if(marker[i].getElementsByTagName('image')[0].childNodes[0]!=null) {
								var image = marker[i].getElementsByTagName('image')[0].childNodes[0].nodeValue;
							} else {
								var image = '';
							}
							
							if(marker[i].getElementsByTagName('url')[0].childNodes[0]!=null) {
								var url = marker[i].getElementsByTagName('url')[0].childNodes[0].nodeValue;
							} else {
								var url = '';
							}
							
							var point = new GLatLng(lat,lng);
							// aka spielerinfo
							var price='';
							var inner='';
							inner='<a href="'+url+'"><h2>'+content+'</h2></a>'+city;
							if(radio!="county") {
							inner+='<small>(Entfernung'+distance+' km)</small>';
							}
							inner+='';
							//console.log(id);
							//console.log(lat);
							//console.log(lng);
							//console.log(content);
							//console.log(city);
							//console.log(distance);
							var address='';
							var m = createMarker(point,content,city,inner,address,id);
				            
				         	// ==== Each time a point is found, extent the bounds ato include it =====
				            bounds.extend(point);
				            map.addOverlay(m);
				            
				            // ==== table
				            // determine xml file
				            var tr=document.createElement('tr');
				            var td1=document.createElement('td');
				            td1.innerHTML='<ul><li><a href="'+url+'"><img class="links" src="'+image+'" alt="Golfclub-Suche" border="0" height="65" width="65"></a></li></ul>';
				            td1.setAttribute('class','tableimage');
				            tr.appendChild(td1);
				            
				            var td2=document.createElement('td');
				            td2.innerHTML=inner;
				            td2.setAttribute('class','tablename');
				            tr.appendChild(td2);
				            
				            var buttonTable = objRememberList.createButtonForTable(id,"merken");
							var buttonTable2 = objUserCourtsList.createButtonForTable(id,"gespielt");
				            
				            var td3=document.createElement('td');
				            td3.innerHTML=buttonTable+'<br />'+buttonTable2;
				            tr.appendChild(td3);
				            
				            $('searchresulttablecontent').appendChild(tr);				            
						}
						
						//alert(marker_length);
						//console.log(list);
						//$("side_bar").innerHTML = side_bar_html;
						//var th = '<tr><th>Bild</th><th>Golfclub/ -anlage</th><th>Spielerinfos</th><th>Bewertung</th></tr>';
						
						//$('searchinfo').innerHTML='Golfclubs für PLZ '+plz;
						var verb='';
						var platz='';
						if(marker_length!=1) {
							verb='wurden';
							platz='Golfplätze';
							map.setCenter(bounds.getCenter());
							map.setZoom(map.getBoundsZoomLevel(bounds));
							setCenterMarker(bounds.getCenter());
						} else {
							verb='wurde';
							platz='Golfplatz';
							var point = new GLatLng(startLat,startLng);
							//Die Karte wird bei diesem Punkt zentriert
							map.setCenter(point, 4);
						}
						
						disableLoader();
						var searchresult = 'Es '+verb+' '+marker_length+' '+platz+' gefunden. <a href="javascript:scrollToResults();">Zur Ergebnisliste</a>';
						$('searchresult').innerHTML = searchresult;
						$('searchresult').show();						
						// you can zoom one step out if u want.
						//map.setZoom(map.getZoom()-1);
						
					}
				});
				
			} else {
				var searchresult = '<div class="boxtitle">Es wurden keine Ergebnisse gefunden.';
				searchresult += '</div>';
				$('searchresult').innerHTML = searchresult;
				$('searchresult').show();
				$(searchresulttableID).hide();
			}				
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}
