$(document).ready(function(){
	$('.pharmacy_locator').click(function(){
		var WinTop = ($(document).scrollTop() > 0)?$(document).scrollTop() + 80 + 'px':'80px';
		var WinLeft= $(document).width() / 2 -470;
		hideFields();
		hideFlash();
		showLightboxPanel(500);
		$("#popup").css('z-index','1000000');
		$("#popup").css("left",WinLeft +'px');
		$("#popup").css("top", WinTop);
		$("#popup").fadeIn(1000);
		$('#popup').load('/pharmacy_locator.html');
	return false;
	});
});


Locator = function() {
	this.mapContainer= document.getElementById("Map");
	this.searchForm= document.getElementById("LocalSearchForm");
	
	this.searchForm = new GSearchForm(false, this.searchForm);
	this.searchForm.setOnSubmitCallback(this, Locator.prototype.onNewSearch);
	
	this.gmap = new GMap2(this.mapContainer);
	this.gmap.enableScrollWheelZoom();
	
	//var extLargeMapControl = new ExtLargeMapControl();
	//this.gmap.addControl(extLargeMapControl);

	this.gmap.addControl(new GLargeMapControl());
	
	this.gmap.addControl(new GMapTypeControl());
	this.gmap.setCenter(new GLatLng(-25.335448,135.745076), 4);
	
	this.temporaryOverlays = new Array();
	
	this.searchControl = new GSearchControl();
	var drawOptions = new GdrawOptions();
	drawOptions.setInput(this.searchForm.input);
	var webSearch = new GwebSearch();
	var searcherOptions = new GsearcherOptions();
	searcherOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
	this.searchControl.addSearcher(webSearch, searcherOptions);
	this.searchControl.draw(this.searchContainer, drawOptions);
	//this.searchControl.setSearchCompleteCallback(this, Locator.prototype.onSearchComplete);
	
	this.localSearch = new GlocalSearch();
	this.localSearch.setCenterPoint('Australia');
	this.localSearch.setSearchCompleteCallback(this, Locator.prototype.onSearchComplete);
	
	
	this.visibleItemCount = 0;
	this.currentItem = null;
	
	//this.localSearch.execute("Australia");
	
}

// Overide the search term and prepend with "Pharmacy"

Locator.prototype.onNewSearch = function(form) {
	if (form.input.value) {
		for (var i=0; i < this.temporaryOverlays.length; i++ ) {
		this.gmap.removeOverlay(this.temporaryOverlays[i]);
		}
    this.temporaryOverlays = new Array();
    this.localSearch.execute('Pharmacy ' + form.input.value + ' Australia');
    //this.searchControl.execute('Pharmacy ' + form.input.value + ' Australia');
    this.gmap.closeInfoWindow();
	}
return false;
}

// onSearch result handler

Locator.prototype.onSearchComplete = function() {
	this.gmap.closeInfoWindow();
	
	var rcount = 0;
	if (this.localSearch.results && this.localSearch.results.length > 0 ) {
	rcount = this.localSearch.results.length;
	}
	else {
	alert('Sorry no results were found');
	return;
	}

	var first = this.localSearch.results[0];
	this.gmap.setZoom(15);
	this.gmap.panTo(new GLatLng(parseFloat(first.lat), parseFloat(first.lng)));
	
	for (var i=0; i < rcount; i++) {
		var jsmarker= newMarker(this.localSearch.results[i]);
		this.gmap.addOverlay(jsmarker);
	}
		
}

function newMarker(result) {
	var marker=new GMarker(new GPoint(parseFloat(result.lng), parseFloat(result.lat)));
	GEvent.addListener(marker, 'click', function() {
		//alert(result.phoneNumbers[0].number);
		var div = createDiv('<strong>'+ result.titleNoFormatting +'</strong><br />'+ result.streetAddress + '<br />' + result.city +' ' + result.region + '<br />' + result.phoneNumbers[0].number, "gs-infoWindow");
		marker.openInfoWindow(div);
	});
return marker;
}

function createDiv(opt_text, opt_className) {
  var el = document.createElement("div");
  if (opt_text) {
    el.innerHTML = opt_text;
  }
  if (opt_className) { el.className = opt_className; }
  return el;
}

var showLightboxPanel = function(zindex){
	$("#LightboxPanel").height($(document).height());	
	$("#LightboxPanel").width($(document).width());
	$("#LightboxPanel").css("left",0);
	$("#LightboxPanel").css("top",0);
	$("#LightboxPanel").css("z-index", zindex);
	if(jQuery.browser.msie){
		$("#LightboxPanel").css("filter", "alpha( opacity=50 )");
	}
	if (jQuery.browser.mozilla){
		$("#LightboxPanel").css("opacity", ".75");
	}
	if (jQuery.browser.safari || jQuery.browser.opera)
	{
		$("#LightboxPanel").css("opacity", "0.5");
	}
	$("#LightboxPanel").fadeIn(500);
	
	//alert($("#ContentWrapper").offset().left);
}

function showFields() {
	var flashObjects = document.getElementsByTagName("select");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}
}

function hideFields() {
	var flashObjects = document.getElementsByTagName("select");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}
}

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}

// DEBUGGING

function print_r(input, _indent) {
var indent = (typeof(_indent)=='string')?_indent+'&nbsp;&nbsp;&nbsp;&nbsp;':'&nbsp;&nbsp;&nbsp;&nbsp;';
var paren_indent = (typeof(_indent)=='string')?_indent+'&nbsp;&nbsp;':'';

	var output="";
	for ( var i in input ) {
	output += i + "\n";
	}
	return output
}
