/**
 *  Funkcja szuka przez google map api v3. Jeżeli znajdzie więcej niż
 *  jedną lokację
 *
 *	@param string szukana fraza (Wrocław, Warszawa, etc.)
 *	@param string id elementu gdzie wstawić linki
 *	@param string link w postaci http://...?...&parametr=, do którego zostanie
 *		wpisana kliknięta sugestia
 */
function gmap_get_suggestions(srch, id, slink) {
	var geo = new google.maps.Geocoder();

	geo.geocode({ address: srch }, 
		function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				if ((results.length==1) && (results[0].formatted_address==srch)) {
					return
				} else {
					var ret = '<p>Czy nie chodziło Ci o: </p>';
					results.forEach(function(res) {
						ret += '<p><a href="'+slink+res.formatted_address+'">'+res.formatted_address+'</a></p>';
					});
					ret += '<p>?</p>';
					jQuery(id).show();
					jQuery(id).html(jQuery(id).html()+ret);
				}
			}
			else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
				var ret = '<p>Nie udało się zlokalizować: <strong>'+srch+'</strong>. Możliwe rozwiązanie. Jeżeli w adresie pojawia się numer ulicy, należy go usunąć.</p>';
				jQuery(id).html(jQuery(id).html()+ret);
			}
			else if (status == google.maps.GeocoderStatus.ERROR) {
				var ret = '<p>Nie udało się zlokalizować: <strong>'+srch+'</strong>. Nastąpił problem w połączeniu z serwerami map. Możliwe rozwiązanie. Należy odświeżyć stronę.</p>';
				jQuery(id).html(jQuery(id).html()+ret);
			}
		}
	);
}

// Obsluga wynikow wyszukiwania.
var srchconf =
{
	id: 0,
	mode: '',

	init: function()
	{
		var sp = jQuery("#search-panel");
		var sr = jQuery("#search-results");

		// Kasujemy przycisk 'filtruj', na rzecz automatycznego wysylania formularza po zmianie selecta.
		jQuery("input.submit",sp).remove();
		jQuery("select",sp).change(function() {
			jQuery(this).parent().parent("form").submit();
		});

		if(jQuery.browser.msie && jQuery.browser.version == 6)
			return;

		if(sr.length>0)
			srchconf.mode = jQuery("> ul",sr)[0].className;

		// Podpinamy obsluge przyciska 'rozwin' w wynikach wyszukiwania.
		jQuery("ul > li > span.more",sr).click(srchconf.click);

		// Czy inicjowac podlad.
		switch(srchconf.mode)
		{
			case 'company-normal':
			case 'company-simple':
			case 'services-normal':
			case 'services-simple':
			case 'products-normal':
			case 'products-simple':
				galery.init(true);
				break;

		}

//		jQuery('#trade-suggestions option').click(function(e){
//			e.preventDefault();
//			alert(jQuery(this).attr('selected'));
//
//			if(jQuery(this).attr('selected'))
//				jQuery(this).attr('selected', '');
//		});
	},

	click: function()
	{
		// Sprawdzamy czy juz nie odslonieto.
		var test = jQuery(this).parent().next();
		if(test.hasClass("preview"))
		{
			test.remove();
			return;
		}

		var theId = parseInt(jQuery(this).next().text());

		// Wstawiamy warstwe i wypisujemy 'czekaj'.
		jQuery(this).parent().after('<div class="preview" id="spreview_'+theId+'"></div>');
		var p = jQuery("#spreview_"+theId);
		p.html('<strong class="loading">' +(LANG['search_loading'] ? LANG['search_loading'] : 'Loading...')+ '</strong>');

		var tmp_url = '';

		switch(srchconf.mode)
		{
			// [NOTE] Mozna zawsze zaplanowac w ten sposob:
			//
			// case 'company-normal':
			//   url += 'http://euro-info.pl/ajax.php?get=companynormal&id='
			//	 url += pobierz_z_kotregos_urla_id_firmy()
			//
			case 'company-normal':
			case 'company-simple':
				tmp_url = '/frontend.php/ajax/'+theId+'/index.html';break;

			case 'products-normal':
			case 'products-simple':
				tmp_url = '/frontend.php/ajax/'+theId+'/produkty.html';break;

			case 'services-normal':
			case 'services-simple':
				tmp_url = '/frontend.php/ajax/'+theId+'/uslugi.html';break;
		}

		var ajaxconf = {
			url: tmp_url,
//			cache: false,
			success: function(data)
			{
				p.html(data);

				switch(srchconf.mode)
				{
					case 'company-normal':
					case 'company-simple':
					{
						// Tworzymy nowy obiekt w #gmaps gdyz warstwa #gmaps ma styl: display:table-cell, a Google Maps API
						// sie rozlatuje w tym (chyba to problem HTML'a niz gAPI).
//						var gmaps = jQuery(".info .maps",p).html('<div id="google-maps-v2"></div>');
//						var w = gmaps[0].offsetWidth - 14; // 14 -> border-right
//						var h = gmaps[0].offsetHeight - 7 - 7; // 7 + 7 -> border-top, border-bottom

						// Musimy nadac sztywna wysokosc/szerokosc nowej warstwie.
//						var layer = jQuery("#google-maps-v2");
//						layer.css("width",w);
//						layer.css("height",h);

						// Mapy Google.
//						var latlng = new google.maps.LatLng(-34.397,150.644);
//						var param = {
//						  zoom: 8,
//						  center: latlng,
//						  mapTypeId: google.maps.MapTypeId.ROADMAP
//						};
//						var map = new google.maps.Map(layer[0],param);
					}
					break;

					case 'products-simple':
					case 'products-normal':
					case 'services-normal':
					case 'services-simple':
					{
						// Inicjuje listy produtkow/uslug.
						items.init(p);
					}
					break;
				}
			}
		}

		data = {}

		switch(srchconf.mode)
		{
			case 'company-simple':
			case 'products-simple':
			case 'services-simple':
				ajaxconf.data = { 'simple': '1' };
				data = { 'simple': '1' };
				break;
		}

		//jQuery.ajax(ajaxconf);

		jQuery.get(tmp_url, data, ajaxconf.success);

		//srchconf.id++;
	}
}

jQuery(document).ready(srchconf.init);

