if(readCookie('a_ad_lb') != 1)
{
	$(document).ready(function()
	{
		$(document).qtip(
		{
			id: 'android-ad', // Since we're only creating one modal, give it an ID so we can style it
			content: 
			{
				title:
				{
					text: '&nbsp',
					button: true
				},
				text: '<a href="http://yanosik.pl/android" target="_new"></a>'
			},
			position: 
			{
				my: 'center', // ...at the center of the viewport
				at: 'center',
				target: $(window)
			},
			show: 
			{
				ready: true,
				solo: true, 
				modal: true
			},
			hide: false,
			style: 'ui-tooltip-light ui-tooltip-rounded',
			events: 
			{
				hide: function(event, api)
				{
					setCookie('a_ad_lb', 1, 1);
					$(this).qtip('api').destroy();
				}
			}
		});
	});
}

function readCookie(name)
{
	var cookiename = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(cookiename) == 0) return c.substring(cookiename.length,c.length);
	}
	return null;
}

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toUTCString());
}

function convertMinutes(minutes)
{
	var hours = Math.floor(minutes/60);
	minutes = minutes%60;
	
	if(hours > 0)
	{
		if(minutes > 0)
		{
			return hours + 'h ' + minutes + 'min';
		}
		else
		{
			return hours + 'h';
		}
	}
	else
	{
		return minutes + 'min';
	}
}

function polishConversion(string)
{
	string = string.toLowerCase();
	string = string.replace(/ą/g, 'a');
	string = string.replace(/ć/g, 'c');
	string = string.replace(/ę/g, 'e');
	string = string.replace(/ł/g, 'l');
	string = string.replace(/ń/g, 'n');
	string = string.replace(/ó/g, 'o');
	string = string.replace(/ś/g, 's');
	string = string.replace(/ź/g, 'z');
	string = string.replace(/ż/g, 'z');
	
	return string;
}

function getCoordinates(city) // zwraca tablice koordynatów konkretnego miasta
{
	switch(city)
	{
	case 'bialystok':
		return { 'longitude':23.168725, 'latitude':53.132302 }
	break;
	case 'bielskobiala':
		return { 'longitude':19.058311, 'latitude':49.822369 }
	break;
	case 'bydgoszcz':
		return { 'longitude':18.008446, 'latitude':53.123476 }
	break;
	case 'czestochowa':
		return { 'longitude':19.118353, 'latitude':50.817392 }
	break;
	case 'gdansk':
		return { 'longitude':18.646499, 'latitude':54.352092 }
	break;
	case 'gdynia':
		return { 'longitude':18.530522, 'latitude':54.518871 }
	break;
	case 'gliwice':
		return { 'longitude':18.671376, 'latitude':50.294477 }
	break;
	case 'katowice':
		return { 'longitude':19.02377, 'latitude':50.264889 }
	break;
	case 'kielce':
		return { 'longitude':20.628567, 'latitude':50.866062 }
	break;
	case 'krakow':
		return { 'longitude':19.944938, 'latitude':50.064639 }
	break;
	case 'lodz':
		return { 'longitude':19.455971, 'latitude':51.759224 }
	break;
	case 'olsztyn':
		return { 'longitude':20.480112, 'latitude':53.778398 }
	break;
	case 'pila':
		return { 'longitude':16.738223, 'latitude':53.150924 }
	break;
	case 'poznan':
		return { 'longitude':16.917161, 'latitude':52.407498 }
	break;
	case 'radom':
		return { 'longitude':21.147023, 'latitude':51.402703 }
	break;
	case 'rzeszow':
		return { 'longitude':21.999131, 'latitude':50.040908 }
	break;
	case 'szczecin':
		return { 'longitude':14.552763, 'latitude':53.428535 }
	break;
	case 'torun':
		return { 'longitude':18.598403, 'latitude':53.013751 }
	break;
	case 'warszawa':
		return { 'longitude':21.012242, 'latitude':52.229639 }
	break;
	case 'wroclaw':
		return { 'longitude':17.038457, 'latitude':51.107833 }
	break;	
	default:
		return { 'longitude':16.917161, 'latitude':52.407498 }
	}
}

function reloadDelay(from, to)
{
	var temporaryString = Math.floor(Math.random() * (to - from + 1) + from);
	return temporaryString*1000;
}

function latestPoisReload()
{

	var firstSelector = '#' + jQuery(jQuery('#latest_pois_container div.latest_poi_entry').get(14)).attr('id');
	var lastSelector = '#' + jQuery(jQuery('#latest_pois_container div.latest_poi_entry').get(17)).attr('id');

	jQuery(firstSelector).animate({ opacity: 'toggle', height: 'toggle' }, 1000);
	jQuery(lastSelector).animate({ opacity: 'toggle', height: 'toggle' }, 1000, function()
	{
		jQuery(lastSelector).prependTo('#latest_pois_container');
	});

}

$(document).ready(function()
{
	/* tooltipy dla całej strony */
	$('*[title]').qtip(
	{
		position:
		{
			my: 'bottom center',
			at: 'top center'
		},
		style:
		{
			classes: 'ui-tooltip-dark ui-tooltip-shadow ui-tooltip-rounded'
		}
	});		
	
	/* pierwsze ladowanie mapy */
	$("#ki_mini_map").MapComponent(
	{
		'minZoom': 12,
		'maxZoom': 12,
		'zoom': 12,
		'showLayerPanel': false,
		'showNavigationPanel': false,
		'layers':
		{
			'map':
			{
				'zIndex': 1,
				'layerURLs':
				[
						'http://map6.korkowo.pl/traffic/layer-map-new/',
						'http://map7.korkowo.pl/traffic/layer-map-new/'
				],
				'visible': true,
				'description': 'Mapa',
				'browserCacheDuration': 604800000,
				'fadeIn': 500,
				'showInLayerPanel': true
			},
			'traffic':
			{
				'zIndex': 3,
				'layerURLs':
				[
					'http://map8.korkowo.pl/traffic/layer-traffic/'
				],
				'visible': true,
				'description': 'Aktualne natężenie ruchu',
				'browserCacheDuration': 300000,
				'fadeIn': 1,
				'showInLayerPanel': true
			},
			'names':
			{
				'zIndex': 5,
				'layerURLs':
				[
					'http://map9.korkowo.pl/traffic/layer-names/'
				],
				'visible': true,
				'description': 'Nazwy ulic/miast',
				'browserCacheDuration': 604800000,
				'fadeIn': 1,
				'showInLayerPanel': true
			},
			'poi':
			{
				'zIndex': 5,
				'layerURLs':
				[
					'http://map0.korkowo.pl/traffic/layer-poi/'
				],
				'visible': true,
				'description': 'Zgłoszenia yanosików',
				'browserCacheDuration': 300000,
				'fadeIn': 1,
				'showInLayerPanel': true
			},
			'poistatic':
			{
				'zIndex': 5,
				'layerURLs':
				[
					'http://map0.korkowo.pl/traffic/layer-poi-static/'
				],
				'visible': true,
				'description': 'Fotoradary i miejsca częstych kontroli prędkości',
				'browserCacheDuration': 86400000,
				'fadeIn': 1,
				'showInLayerPanel': true
			}
		}
	});	
	
	/* stylowanie formularzy */
	$("input, textarea, select, button").uniform();	
	
	/* zaznaczanie tekstu w inputach po click'u */
	$('input').focus(function()
	{
		$(this).select();
	});
	
	/* akcje na buttonach z footera */
	$('#ki_footer_buttons .ki_footer_buttons_1, #ki_footer_buttons .ki_footer_buttons_2, #ki_footer_buttons .ki_footer_buttons_3').css('opacity', 0.75);
	
	$("#ki_footer_buttons a").hover(function()
	{
		$(this).css('opacity', 1);
	}, 
	function()
	{
		$(this).css('opacity', 0.75);
	});
	
	/* pierwsze ladowanie listy z czasami przejazdu */
	var cityToLoad = 'warszawa';
	if(readCookie('myCity')) cityToLoad = readCookie('myCity');
	var fullCityName = '';
	$("#ki_citychange option").each(function ()
	{
		if($(this).attr('class') == cityToLoad) fullCityName = $(this).text();
	});
	$('#uniform-ki_citychange span').text(fullCityName);
	cityLoad(cityToLoad);
	
	/* zmiana miasta (select/option) */
	$('#ki_citychange').change(function()
	{		
		var city = '';
		var fullCityName = '';
		$('#' + $(this).attr('id') + " option:selected").each(function ()
		{
			city = $(this).attr('class');
			fullCityName = $(this).text();
		});
		
		setCookie('myCity',city,30);
		
		$('#uniform-ki_citychange span').text(fullCityName);

		cityLoad(city);
	});
});

function cityLoad(city) // przeladowywanie zawartosci tabeli z czasami przejazdow i zmiana koordynatow, na ktorych wycentrowana jest mapa
{
	/* zmiana adresu URL permalinka Korkowa na małej mapie */
	var rawCoordinates = getCoordinates(city);

	var mapLink = 'http://mapa.korkowo.pl/?lon=' + rawCoordinates.longitude + '&lat=' + rawCoordinates.latitude + '&zoom=' + 14;
	$('#ki_mini_map a').attr('href', mapLink);
	$('a.ki_box_map_link').attr('href', mapLink);

	/* overlay */
	$('.ki_jq_temporaryOverlay').remove();
	var temporaryOverlay = $('<div>').addClass('ki_jq_temporaryOverlay').width($('#ki_travel_times').width()).height($('#ki_travel_times').height()).fadeTo('fast', 0.85);
	$('#ki_travel_times_container').append(temporaryOverlay);
	temporaryOverlay.append('<table><tr><td><img src="images/loading_animation.gif"></td></tr></table>');

	$('#ki_mini_map').trigger('onCenterChanged', getCoordinates(city));
	
	var maxCityTimes = 3; // max domyslnie wyswietlanych polaczen w "Aktualnych czasach przejazdu"
	
	/* pobieranie xml */
	$.get('http://korkowo.pl/data/' + city + '.xml', function(xml)
	{
		var cityTimesArray = new Array(new Array());

		var xmlExpression = "tns\\:route";
		if($(xml).find("[nodeName='tns:route']").size() > $(xml).find("tns\\:route").size()) xmlExpression = "[nodeName='tns:route']";		
		
		$(xml).find(xmlExpression).each(function(index)
		{
			var cityName = $(this).attr('end');
			var travelTime = $(this).attr('averagetime');
			var roads = $(this).attr('description');
			var id = $(this).attr('id');

			if(cityTimesArray[id] == undefined)
			{
				cityTimesArray[id] = cityName + ';' + travelTime + ';' + roads;
			}
			else
			{
				cityTimesArray[id] += '|||' + cityName + ';' + travelTime + ';' + roads;			
			}
		});

		var cityTimesArrayClean = new Array();
		for (i=1;i<cityTimesArray.length;i++)
		{
			if(cityTimesArray[i].lastIndexOf('|||') != -1) cityTimesArrayClean.push(cityTimesArray[i]);
		}

		var toAppend = '';
		$.each(cityTimesArrayClean, function(index, value)
		{
			var singleCityArray = value.split('|||');

			var throughCity = singleCityArray[0];
			var throughCityArray = throughCity.split(';');

			var toCity = singleCityArray[singleCityArray.length-1];
			var toCityArray = toCity.split(';');

			var toCityName = toCityArray[0];
			var toCityTime = convertMinutes(toCityArray[1]);

			var throughCityName = throughCityArray[0];
			var throughCityTime = convertMinutes(throughCityArray[1]);
			
			var throughCityRoads = throughCityArray[2];

			var hiddenRowStyle = '';
			var hiddenRowClass = '';
			if(index >= maxCityTimes)
			{
				hiddenRowClass = 'travel_time_row_hidden';
			}
			
			toAppend += '<tr class="ki_first_row ' + hiddenRowClass + '"><td class="ki_city_to"><img src="images/index/travel_time_to.png" alt="Do:">do: <span class="ki_city_name">';
			toAppend += toCityName + '</span><span class="ki_travel_time">' + toCityTime + '</span></td></tr><tr class="ki_second_row ' + hiddenRowClass + '">';
			toAppend += '<td class="ki_city_through"><img src="images/index/travel_time_through.png" alt="Przez:">przez: <span class="ki_city_name">';
			toAppend += throughCityName + '<span class="ki_travel_time">' + throughCityTime + '</span></td></tr>';
		});

		if(toAppend.length < 10) toAppend = '<tr><td>Brak danych dla wybranego miasta.</td></tr>';
		$('#ki_travel_times').html(toAppend);
		$('.ki_jq_temporaryOverlay').remove();
		
		if(cityTimesArrayClean.length > maxCityTimes)
		{
			$('#ki_travel_times').append('<div id="ki_travel_time_show_all">(pokaż wszystkie)</div>');
			
			$('#ki_travel_time_show_all').click(function()
			{
				$('tr.travel_time_row_hidden').css('display', 'table-row');
				$('#ki_travel_time_show_all').unbind().remove();
			})
		}
	});
}

jQuery.doTimeout(reloadDelay(3,5), function()
{
	latestPoisReload();

	return true;
});

var routeInputTips;

/* wyszukiwanie trasy */
$(document).ready(function()
{
	/* zmiana eventu uruchamianego po wykonaniu submit'a na DOM'ie forumlarza */
	$('#k_route_form').submit(function() { return false; });
	
	/* akcja - submit */
	$('#k_route_submit').click(function()
	{
		if($('#k_input_tip').length == 0 && $("#k_route_start").data("title") != undefined && $("#k_route_end").data("title") != undefined)
		{
			$('#k_route_loading tr td').html('Trwa wyznaczanie trasy...<br><br><img src="images/loading_animation2.gif">').height($('#ki_main_container div.ki_main_column1 div.ki_box_route').height()+22);
			$('#k_route_loading').css('display', 'table');

			window.location = 'http://mapa.korkowo.pl/?routeStartLongitude=' + $('#k_route_start').data('title').split(';')[0] + '&routeStartLatitude=' + $('#k_route_start').data('title').split(';')[1] + '&routeEndLongitude=' + $('#k_route_end').data('title').split(';')[0] + '&routeEndLatitude=' + $('#k_route_end').data('title').split(';')[1];
		}
		else
		{
			$('#k_route_loading tr td').html('Nie można wytyczyć trasy.<br>Doprecyzuj kryteria wyszukiwania.');
			setTimeout("$('#k_route_loading').fadeOut(1000);", 1500);
		}
	});
	
	var ajaxTipsRequests = [];
	
	$("#k_route_start, #k_route_end").keyup(function(event)
	{
		var currentActiveIndex = $('#k_input_tip div.k_input_tip_entry').index($('#k_input_tip div.k_input_tip_entry_active'));
		
		if(event.keyCode == 13 || event.keyCode == 9)
		{
			if(currentActiveIndex > 0)
			{
				$('#k_input_tip div.k_input_tip_entry').eq(currentActiveIndex).trigger('click');
			}
			else
			{
				$('#k_input_tip div.k_input_tip_entry').first().trigger('click');
			}
		}
		else if(event.keyCode == 38 || event.keyCode == 40)
		{
			var direction;
			if(event.which == 38) direction = true; // up
			if(event.which == 40) direction = false; // down
			
			if($('#k_input_tip div.k_input_tip_entry').length > 0) // jesli zwrocone zostaly jakies wyniki
			{
				if($('#k_input_tip div.k_input_tip_entry_active').length == 0) // nie zaznaczono jeszcze zadnej podpowiedzi
				{
					$('#k_input_tip div.k_input_tip_entry').first().addClass('k_input_tip_entry_active');
				}
				else // zaznaczono podpowiedz
				{
					if(direction && currentActiveIndex > 0)
					{
						$('#k_input_tip div.k_input_tip_entry').removeClass('k_input_tip_entry_active');
						
						$('#k_input_tip div.k_input_tip_entry').eq(parseInt(currentActiveIndex-1)).addClass('k_input_tip_entry_active');
					}
					else if(!direction && currentActiveIndex < parseInt($('#k_input_tip div.k_input_tip_entry').length)-1)
					{
						$('#k_input_tip div.k_input_tip_entry').removeClass('k_input_tip_entry_active');
						
						$('#k_input_tip div.k_input_tip_entry').eq(parseInt(currentActiveIndex+1)).addClass('k_input_tip_entry_active');
					}
					//console.log($('#k_input_tip div.k_input_tip_entry_active').position());
					$('#k_input_tip').animate({
						scrollTop: $('#k_input_tip').scrollTop() + $('#k_input_tip div.k_input_tip_entry_active').offset().top - $('#k_input_tip').offset().top
					}, 50);
					//$('#k_input_tip').scrollTop($('#k_input_tip').scrollTop() + $('#k_input_tip div.k_input_tip_entry_active').offset().top - $('#k_input_tip').offset().top);
				}
			}
		}
		else if (event.keyCode != 37 && event.keyCode != 38 && event.keyCode != 39 && event.keyCode != 40)
		{
			var thisId = $(this).attr('id');

			routeInputTips = thisId;

			if($(this).val().length > 2)
			{
				var inputTypedText = polishConversion($(this).val());

				$.ajax(
				{
					url: 'php/route_tip_processor.php',
					dataType: "json",
					data: 'in=' + inputTypedText,
					beforeSend: function(jqXHR)
					{
						$(ajaxTipsRequests).each(function(idx, jqXHR)
						{
							jqXHR.abort();
						});
						ajaxTipsRequests.push(jqXHR);

						var tipTopPosition;
						if(thisId == 'k_route_start') tipTopPosition = 63;
						if(thisId == 'k_route_end') tipTopPosition = 96;

						var inputTipWrapper = $('<div>').attr('id', 'k_input_tip_wrapper').css('top', tipTopPosition).css('left', $('table.k_route_table tr td.k_route_col1').width()+20).width(7 + $('#k_route_start').width());

						$('#k_input_tip_wrapper').remove();
						$('div.ki_box_route').prepend(inputTipWrapper);

						var inputTipContainer = $('<div>').attr('id', 'k_input_tip').width(7 + $('#k_route_start').width()).html('<div class="k_input_tip_msg">Ładowanie...</div>');

						inputTipWrapper.append(inputTipContainer);

						$('#k_input_tip_wrapper, #k_input_tip').css('display', 'block');
					},
					success: function(data)
					{
						if(data.length == 0)
						{
							$('#k_input_tip').html('<div class="k_input_tip_msg">Nic nie znaleziono.</div>').css('display', 'block');
						}
						else if(data.length > 0)
						{
							var routeTips = '';

							//data = data.slice(0,15);

							if(data.length > 5) $('#k_input_tip').height(250);

							$.each(data, function(i, item)
							{
								var objectCategory = item.t.split('_')[0];
								var objectSize = item.t.split('_')[1];

								var singleTip = '';

								var entryHeader;
								if(objectCategory == 'STREET')
								{
									 entryHeader = item.s + ', <span class="k_input_tip_subheader">' + item.c + '</span>';
								}
								else
								{
									entryHeader = item.c;
								}

								var cityDetails;
								if(item.d.toLowerCase() == item.g.toLowerCase())
								{
									cityDetails = 'pow. i gm. ' + item.d + ', woj. ' + item.r;
								}
								else
								{
									cityDetails = 'pow. ' + item.d + ', gm. ' + item.g + ', woj. ' + item.r;
								}

								var noBorder = '';
								if(data.length-1 == i) noBorder = 'no_border';

								 singleTip += '<div class="k_input_tip_entry ' + noBorder + '" title="' + item.y + ';' + item.x + '">';
									singleTip += '<div class="k_input_tip_header">' + entryHeader + '</div>';
									singleTip += '<div class="k_input_tip_details">' + cityDetails + '</div>';
								singleTip += '</div>'

								routeTips += singleTip;
							});

							$('#k_input_tip').html(routeTips).css('display', 'block');
						}
					},
					error: function(request, error)
					{
						if(error != 'abort') $('#k_input_tip').html('<div class="k_input_tip_msg">Błąd.</div>').css('display', 'block');		
					}
				});

				$('#k_input_tip').delegate('div.k_input_tip_entry', 'mouseenter click', function()
				{
					$('#k_input_tip div.k_input_tip_entry').removeClass('k_input_tip_entry_active');
					$(this).addClass('k_input_tip_entry_active');
					
					$(this).data('title',$(this).attr('title'));
					$(this).removeAttr('title');
				});

				$('#k_input_tip').delegate('div.k_input_tip_entry', 'click', function()
				{
					var coords = $(this).data('title');

					var tipText = $(this).find('.k_input_tip_header').text();

					$('#' + routeInputTips).data('title', coords);				
					$('#' + routeInputTips).val(tipText);

					$('#k_input_tip').remove();
				});
			}
		}
	});
});
