// vyber nebo modifikace dat z prvku s definovanou tridou
function processElementByClass(neededTag, neededClass, workMode) {
	var myData = new Array();
	// nacteni vsech elementu, ktere pripadaji v uvahu
	var allNeededTags = document.getElementsByTagName(neededTag);
	var j = workMode;

	for (i = 0; i < allNeededTags.length; i++) {

		// vyber pouze potrebne tridy
		if (allNeededTags[i].className == neededClass) {

			// napr. vypnuti prvku pomoci allNeededTags[i].style.display="none";
			if (workMode == 0) {
				myData[j] = allNeededTags[i].innerHTML;
			}
			else {
				allNeededTags[i].innerHTML = j;
			}
		j++;
		}
	}
	if (workMode == 0) {return myData;}
}

// konverze ze standardniho formatu GPS (stupne, minuty, vteriny) do formatu pro Gmap
function convertGPS(point) {
	dSignPos = point.indexOf("°");
	mSignPos = point.indexOf("'");
	sSignPos = point.indexOf('"');

	if (dSignPos > -1 && mSignPos > -1 && sSignPos > -1) {
		myDecFraction0 = parseFloat(point.substring(0,dSignPos));
		myDecFraction1 = parseFloat(point.substring(dSignPos+1,mSignPos)/60);
		myDecFraction2 = parseFloat(point.substring(mSignPos+1,sSignPos)/3600);
		myCoord = myDecFraction0 + myDecFraction1 + myDecFraction2;
	}
	else {
		//alert(point + ": Nestandardni format souradnic GPS!");
		myCoord = -1;
	}
	//zaokrouhleni na 6 desetinnych mist (vice Gmaps nepotrebuji)
	return Math.round(myCoord*Math.pow(10,6))/Math.pow(10,6);
}

// vytvoreni znacky pro Gmap
function createMarker(point, content, markerindex) {
	// objekt a parametry pro vlastni ikony
	var baseIcon = new google.maps.Icon(G_DEFAULT_ICON);
	baseIcon.image = "/images/design/marker-brown.png";

	markerOptions = { icon: baseIcon, draggable: false };
	var myMarker = new google.maps.Marker(point, markerOptions);
	// obslouzeni kliknuti na znacku
	google.maps.Event.addListener(myMarker, "mouseover", function() {
		//map.closeInfoWindow();
		myMarker.openInfoWindowHtml(content);
		});
	return myMarker;
}

// kod pro zobrazeni samotne mapy v ramci stranek
function loadGmap() {
	var myPOI = processElementByClass("div", "g-poi", 0).length;
	// zobrazeni jinak skrytych prvku tykajicich se mapy
	document.getElementById("map").style.display="";

	//if (GBrowserIsCompatible() && (myPOI > 0)) {
	if (google.maps.BrowserIsCompatible()) {
		
		// souradnice ze seznamu v kodu
		var myLat = processElementByClass("span", "g-lat", 0);
		var myLng = processElementByClass("span", "g-lng", 0);
		var myUrl = processElementByClass("span", "g-url", 0);
		var myTitle = processElementByClass("span", "g-title", 0);
		var myDesc = processElementByClass("span", "g-desc", 0);
		
		// preddefinovane souradnice oblasti, původní od Víti: var tDefault = new Array(44.68551,51.583984,3);
		var tDefault = new Array(40.68551,43.583984,4);
		
		// inicializace hlavniho mapoveho objektu
		var map = new google.maps.Map2(document.getElementById("map"));
		
		map.addControl(new google.maps.LargeMapControl());
		map.addControl(new google.maps.MapTypeControl());

		// nastaveni stredu mapy
		var center = new google.maps.LatLng(tDefault[0], tDefault[1]);
		map.setCenter(center, tDefault[2]);
		
		for (var i = 0; i < myPOI; i++) {
			myLatC = convertGPS(myLat[i]);
			myLngC = convertGPS(myLng[i]);
				
			if (myLatC != '-1' && myLngC != '-1') {
			
				var myPoint = new google.maps.LatLng(myLatC, myLngC);
				var myContent = '<p><strong><a href="' + myUrl[i] + '">' + myTitle[i] + '</a></strong></p><p>' + myDesc[i] + '</p>';

				var marker = createMarker(myPoint, myContent, i);
				map.addOverlay(marker);
			}
		}
		
	} else {
			document.getElementById("map").style.display="none";
	}
}


//po nacteni DOM...
$(document).ready(function() {

	//gallery
	if ($('dd.media-foto-slider ul li').length > 0) {
		//inicializace
		$('dd.media-foto-slider ul li').each(function(i) {
			//kopirovani a vymazani obsahu href
			$(this).find('a').attr('rel', $(this).find('a').attr('href'));
			$(this).find('a').removeAttr('href');
		});
		$(window).load(function() {
			swapImage($('dd.media-foto-slider ul li:first'));
			updateSlider();
		});
		$('dd.media-foto-slider ul li:gt(3)').hide();
		$('dd.media-foto-detail').show();
		$('p.control').show();

		//udalosti
		$('dd.media-foto-slider ul li').bind( {
			click: function() {
				swapImage($(this));
				updateSlider();
			}
		});

		$('.control-previous').bind( {
			click: function() {
				var mslidersel = $('dd.media-foto-slider ul li a.selected').parent();
				if (mslidersel.index() > 0) {
					swapImage(mslidersel.prev());
					updateSlider('prev');
				}
			}
		});

		$('.control-next').bind( {
			click: function() {
				var mslidersel = $('dd.media-foto-slider ul li a.selected').parent();
				if (mslidersel.index() < $('dd.media-foto-slider ul li').length - 1) {
					swapImage(mslidersel.next());
					updateSlider('next');
				}
			}
		});

		//pomocne funkce
		function swapImage(m) {
			var mslider = $('dd.media-foto-slider ul li');
			var mdetail = $('dd.media-foto-detail');

			//prepnuti 'selected'
			mslider.find('a').removeClass('selected');
			m.find('a').addClass('selected');
			//naplneni detailu potrebnymi udaji
			mdetail.find('a').attr('href', m.find('a').attr('rel'));
			mdetail.find('img').attr('src', m.find('img').attr('src'));
			mdetail.find('img').attr('alt', m.find('img').attr('alt'));
			$(mdetail.find('span.imagelabel')).text(m.find('span.imagelabel').text());
		}

		function updateSlider(n) {
			var mslider = $('dd.media-foto-slider ul li');
			var mslidersel = $('dd.media-foto-slider ul li a.selected').parent();
			var firstVisible = null;
			var lastVisible = null;

			switch (n) {
				case 'next': //sipka dalsi
					$('dd.media-foto-slider ul li').each(function(index) {
						if (firstVisible == null) {
							if (this.style.display != 'none') {
								firstVisible = $(this);
							}
						}
						else {
							if (this.style.display != 'none') {
								lastVisible = $(this);
							}
						}
					});
					//posun obrazku
					//if (mslidersel.index() > $('dd.media-foto-slider ul li:visible:last').index()) {
					if (mslidersel.index() > lastVisible.index()) {
						//$('dd.media-foto-slider ul li:visible:first').hide();
						//$('dd.media-foto-slider ul li:visible:last').next().show();
						firstVisible.hide();
						lastVisible.next().show();
					}
					//rozsviceni leve sipky
					if (mslidersel.index() == 1) {
						$('a.control-previous span').removeClass('mdisabled');
						//korektni postup, ale nefunguje; rebind?
						//$('span.control-previous').remove();
						//$('p.control').after('<a class="control-previous">&lt;<span></span></a>');
					}
					//zhasnuti prave sipky
					if (mslidersel.index() == (mslider.length - 1)) {
						$('a.control-next span').addClass('mdisabled');
					}
					break;
				case 'prev': //sipka predchozi
					$('dd.media-foto-slider ul li').each(function(index) {
						if (firstVisible == null) {
							if (this.style.display != 'none') {
								firstVisible = $(this);
							}
						}
						else {
							if (this.style.display != 'none') {
								lastVisible = $(this);
							}
						}
					});
					//posun obrazku
					if (mslidersel.index() < firstVisible.index()) {
						lastVisible.hide();
						firstVisible.prev().show();
					}
					//zhasnuti leve sipky
					if (mslidersel.index() == 0) {
						$('a.control-previous span').addClass('mdisabled');
					}
					//rozsviceni prave sipky
					if (mslidersel.index() == (mslider.length - 2)) {
						//prvni pokusy $('.control-next').replaceWith('<span class="control-next">&gt;<span></span></span>');
						$('a.control-next span').removeClass('mdisabled');
					}
					break;
				default: //kliknuti na obrazek
					//zhasnuti leve sipky
					if (mslidersel.index() == 0 && mslider.length > 1) {
						$('a.control-previous span').addClass('mdisabled');
						$('a.control-next span').removeClass('mdisabled');
					}
					//zhasnuti prave sipky
					else if (mslidersel.index() == (mslider.length - 1)) {
						$('a.control-next span').addClass('mdisabled');
					}
					//rozsviceni obou sipek
					else {
						$('a.control-previous span').removeClass('mdisabled');
						$('a.control-next span').removeClass('mdisabled');
					}
			}

		}

	}

	//gmaps
	if (document.getElementById("map")) {
		loadGmap();
		$(window).unload(function() {
			GUnload();
		});
	}
});

/*
$(window).unload(function() {
	//dle dokumentace k gmaps tak, aby nebylo nutno cpat tohle do body...
	GUnload();
});
*/

