var side_bar_html = "";
var gmarkers = [];
var htmls = [];
var minfos = [];
var goodvar = "";
var i = 0;
var map;
var lon = '-3.328663';
var lat =  '53.467476';
var ele =  '5';
var query;
var areaid;

function changeStatus(message, type) {
	if(type == "loading"){
	$('srchbutton').value = "Loading";
	$('srchbutton').disabled = "disabled";
	$('ge').disabled = "disabled";
	}else if(type == "error"){
	$('ge').disabled = "disabled";
	$('srchbutton').disabled = "";
	$('srchbutton').value = "Search";
	}else{
        $('srchbutton').value = "Search";
        $('srchbutton').disabled = "";
	$('ge').disabled = "";
	}

$('zipstatus').innerHTML = message;
$('statusimg').src = "/images/" + type + ".gif";
$('medload').src= "/images/med" + type + ".gif";
}

function showMultLinks(data) {
$('ge').disabled = "disabled";
var multi_links = "<b>Please choose from the links below</b><br><br>";
	for(i=0;i < data.locations.location.length; i++) {
	var link = data.locations.location[i].link;
	var pic = data.locations.location[i].pic;
	var price = data.locations.location[i].price;
	var descr = data.locations.location[i].description;
	var stat = data.locations.location[i].STAT;
	var lat = parseFloat(data.locations.location[i].latitude);
	var lng = parseFloat(data.locations.location[i].longitude);
		if(link == "blank"){
		}else{
		multi_links += "<a href=\"javascript:jumpMultLinks('" + stat + "', '" + descr + "')\">" + descr + "</a><br>";
		}
	}
$('totresults').innerHTML = "Multiple Cites Found";
$('zipsidebar').innerHTML = multi_links;


}

function clearField(field){
	if(field == "search"){
	areaid = "";
	}
$(field).select();
}

function tip(tipname){
//var name = document.getElementById(divid);
var name = $('hidetip');
	if($('tips').checked == false) {
	return;
	}else if(tipname == 'off'){
	//alert("hidetip:" + name[1].id);
	name.style.display = "hidden";
	}else{
	name.style.display = "block";
	var tipurl = '/fapmash/tips.php?t=' + tipname;
		var tipAjax = new Ajax.Request(tipurl, {
                method: 'get',
                //onLoad: changeStatus("Loading... This may take a while!!", "loading"),
                	onComplete: function(tipdata) {
			//alert("after get:" + name[1].id);
			name.innerHTML =  tipdata.responseText
			}
		});
	//alert("showtip:" + name[1].id);
	}
	
}




function about() {
var url = "faq.php";
var windowprops = "width=800,height=600,top=100,left=100,scrollbars=yes";
window.open(url, "newwin", windowprops);
}

function getKML() {
var url="/cgi-bin/kmldl.cgi";
//alert("goodurl: " + url + goodvar);
var windowprops = "width=10,height=10,top=100,left=100,scrollbars=yes";
window.open(url + goodvar, "DownloadGEKML" , windowprops);

}


function changePrice() {
	if($F('sr') == "1"){
	$('minp').value = "1000";
	$('maxp').value = "1500";
	}else{
        $('minp').value = "300000";
        $('maxp').value = "425000";
	}
}

function jumpMultLinks(aid, descr) {
$('search').value = descr;
query = descr + "(areaid:" + aid + ")";
areaid = aid;
getZip(aid);
}


      // A function to create the marker and set up the event window
function createMarker(point,name,html,color, minfo) {
	if(!color){
	color = "blue";
	}
        var icon = new GIcon();
        icon.image = "http://labs.google.com/ridefinder/images/mm_20_" + color + ".png";
        icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
	var infoTabs =[new GInfoWindowTab("Picture", html), new GInfoWindowTab("More Info", minfo)];
        var marker = new GMarker(point,icon);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowTabsHtml(infoTabs);
        });
        gmarkers[i] = marker;
        htmls[i] = html;
	minfos[i] = minfo;
        side_bar_html += '<a class=sideBarImg href="javascript:myclick(' + i + ')">' + name + '</a>';
        return marker;
}

function myclick(i) {
var infoTabs =[new GInfoWindowTab("Picture", htmls[i]), new GInfoWindowTab("More Info", minfos[i])];
        gmarkers[i].openInfoWindowTabsHtml(infoTabs);
      }

      // create the map
function loadMap() {
	if(!document.getElementById){
	$('map').innerHTML = "<br><br>You Must Enable Javascript to utilize this tools functionality!!!";
	changeStatus("Please enable JavaScript or upgrade your browser!", "error");
	return;
	}
	if (!GBrowserIsCompatible()) { 
	changeStatus("Unable to load google map please accept javascript!!", "error");
	return;
	}
       $('zipsidebar').innerHTML = "";
	$('totresults').innerHTML = "Results";
        side_bar_html = "";
	changeStatus("Please enter a UK City or PostCode in the Location box", "normal");
	('totresults').innerHTML = "";
        $('ge').disabled = "disabled";
	$('search').focus();
        //alert(lat + " " + lon + " " + ele);
        lon=Number(lon);
        lat=Number(lat);
        ele=Number(ele);

	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());
	map.enableScrollWheelZoom();
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	map.setCenter(new GLatLng(lat,lon),ele);
	//map.setMapType(G_HYBRID_TYPE);

}


// Query the database and display results
function getZip(srch) {
    var defLon = Number(lon);
    var defLat = Number(lat);
    var defEle = Number(ele);
    var search = $F('search');
    var maxp = Number($F('maxp'));
    var minp = Number($F('minp'));
		if(minp > maxp){
		changeStatus("Your minimum price is less than your maximum price, please try again!", "error");
		return;
		}
		if((!search)||(search == "")){
		changeStatus("Please enter a UK city or PostCode in the location field!", "error");
		return;
		}
    var bed = $F('bedrooms');
    var prt = $F('prt');
    var sr = $F('sr');
    var selects = "&mx=" + maxp + "&mn=" + minp + "&bd=" + bed + "&pt=" + prt + "&sr=" + sr;
    var url = "/cgi-bin/fapmash.cgi";
    //var url = "http://findmcrib.com/cgi-bin/fapmash.cgi";
    var surl;
    var variables;
	if(areaid){
	srch = areaid;
	}
	if(!srch){
    	variables = "?l=" + search + selects;
	query = search;
	}else{
	variables = "?l=" + srch + selects;
	}

	surl = url + variables;
        //var surl = "json.html";
	//alert(surl);
	var myAjax = new Ajax.Request(surl, {
		method: 'get',
		onLoad: changeStatus("Loading... This may take a while!!", "loading"),
		onComplete: function(response) {
		var doc = response.responseText;
			if(!doc.match(/.*locations.*/)){
               		changeStatus("Unable to connect to findaproperty.co.uk, please try again!", "error");
                	return;
			}
		//changeStatus("Error Connecting to findaproperty.co.uk, the site must be having problems", "error");
        	var data = eval("("+doc+")");
		var bounds = new GLatLngBounds();
		var linkinf = data.locations.location[0].link;
			if(linkinf == "mult"){
			changeStatus("Multiple Cities Found! Please choose from the menu on the right!", "error");
			showMultLinks(data);
			return;
			}else if(linkinf ==  "nomatch"){
			var errmsg = data.locations.location[0].description;
			changeStatus(errmsg, "error");
			return;
			}
        		$('zipsidebar').innerHTML = "";
        		side_bar_html = "";
        		map.clearOverlays();

			if(data.locations.location.length > "100"){
                        tip('tm');
                        }

			
                	for(i=0;i < data.locations.location.length; i++) {
                	var link = data.locations.location[i].link;
                	var pic = data.locations.location[i].pic;
                	var price = data.locations.location[i].price;
                	var descr = data.locations.location[i].description;
			var street = data.locations.location[i].street;
                	var stat = data.locations.location[i].STAT;
                	var lat = parseFloat(data.locations.location[i].latitude);
                	var lng = parseFloat(data.locations.location[i].longitude);
			var html = "<font size=1>Price: " + price + "<br><a href='" + link + "' target='_blank' class='sideBarImg'><img src='" + pic + "' title='Click here to jump to findaproperty.co.uk'><br>Link to findaproperty.co.uk</a>";
			label = "<img border=0 src='" + pic + "' title='" + price + " Click to Find on map!!'>";
			var moreinfo = "<font size=2><b>Price:</b> " + price + "<br><b>Description:</b><br>" + descr + "<br>" + street;



				if(link == "blank") {
				changeStatus("Your request did not return anything!!", "error");
				}else{
				var point = new GLatLng(lat,lng);
				bounds.extend(point);
					if(link.match(/.*findanewhome.*/)){
          				var marker = createMarker(point,label,html,"purple", moreinfo);
					}else{
					var marker = createMarker(point,label,html,"blue", moreinfo);
					}
          			map.addOverlay(marker);
				}
        		}
		
			$('zipsidebar').innerHTML = side_bar_html;
			var num = i - 1;
			if(i > 2) {
			goodvar=variables;
        		$('ge').disabled = "";
			//map.setZoom(map.getBoundsZoomLevel(bounds));
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var centerLat = (southWest.lat()+northEast.lat())/2;
			var centerLng = (southWest.lng()+northEast.lng())/2;
			var center = new GLatLng(centerLat,centerLng);

			//alert(map.getBounds(bounds));
			map.setCenter(center, map.getBoundsZoomLevel(bounds));
			changeStatus("Your search for " + query + " returned " + num + " matches", "normal");
			}else if(i < 2) {
			map.setCenter(new GLatLng(latCenter,lonCenter), defEle);
			changeStatus("Your search for " + query + " did not return any results", "error");
			}else{
			map.setCenter(new GLatLng(data.locations.location[0].latitude, data.locations.location[0].longitude,defLon), 14);
			goodvar=variables;
                        $('ge').disabled = "";
			changeStatus("Your search for " + query + " returned 1 match", "normal");
			}
		$('totresults').innerHTML = num + " Results";
		}
      	});
}

