
var googleMapsAddDataFile = "";

var map = null;
var gMarkerManager = null;		
var tinyIcon = null; 
var baseIcon = null;
var googleMapsHaveBeenInitialized = 0;

var imageSlider_numOfImageBoxes = 0; 
var imageSlider_bigimage = [];
var imageSlider_imagelist = [];
var imageSlider_imagediv = [];
var imageSlider_aktivbox = [0]; 
var imageSlider_lastbox = [0]; 


function initializeGoogleMaps() {
	if (!GBrowserIsCompatible()) { alert ('Not compatible!'); return false; }

	map = new GMap2(document.getElementById("map"));
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,10));
	map.addControl(new GLargeMapControl(), pos); 
	//map.addControl(new GOverviewMapControl(new GSize(90, 60)) );

	//var point = new GLatLng(###MAP_LAT###, ###MAP_LNG###);
	var point = new GLatLng(41 ,11);
	map.setCenter(point, 5);//, ###MAP_ZOOM_FACTOR###);

	var mgrOptions = { borderPadding: 50, maxZoom: 18, trackMarkers: true }; 
	gMarkerManager = new GMarkerManager(map, mgrOptions);

	tinyIcon = new GIcon(); 
	baseIcon = new GIcon();
	baseIcon.image = "/typo3conf/ext/hkcampsites/images/map_marker_camping01.gif"; 
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(24, 33);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(6, 20); 
	baseIcon.infoWindowAnchor = new GPoint(5, 1);
}

function createMarker(point, info_content) {
	
	var tempMarker = new GMarker(point, {icon:baseIcon, draggable: false});	
	GEvent.addListener(tempMarker, "click", function() {
		tempMarker.openInfoWindowHtml(info_content);
		map.panTo(point);
	});

	return tempMarker;
}

function googleMapsAddData(mapcachefile) {
	if (mapcachefile.length<3) {
		return;
	}

	initializeGoogleMaps();
	var mapBounds = new GLatLngBounds();


	//GDownloadUrl("test_mapdata.xml", function(data, responseCode) {  			
	GDownloadUrl(mapcachefile, function(data, responseCode) {  

		//var xml = GXml.parse(data);  
		var markerData = eval('(' + data + ')');
		//var markerData = xml.documentElement.getElementsByTagName("marker");  

		//draw markers:						
		for (var i = 0; i < markerData.markers.length; i++) {  
			var point = new GLatLng(parseFloat(markerData.markers[i]["lat"]), parseFloat(markerData.markers[i]["lng"]));

			mapBounds.extend(point);					
			var newMarker = createMarker(point, 
										 '<h3>' + markerData.markers[i]["title"] + '</h3><br />' +
										 '<a target="_parent" href="/' + markerData.markers[i]["link"] + '"><img src="' + markerData.markers[i]["thumbnailUrl"] + '" width="86" height="63" /></a>' + 
										 '<a target="_parent" href="/' + markerData.markers[i]["link"] + '">details</a>'
										 );
			//map.addOverlay( newMarker );					
			gMarkerManager.addMarker(newMarker, 1, 18);
		}
		gMarkerManager.refresh();
		map.setCenter(mapBounds.getCenter(), map.getBoundsZoomLevel(mapBounds)); 
	});

}




//--------------- v v v Protoype based Scripts v v v ------------------

if (!(typeof jQuery == 'undefined')) {  
	window.onload = function() {
		alert ('jQuery is loaded but not yet used');
	}
} else if (!(typeof Prototype == 'undefined')) {
	function hkcampsites_searchselect_country_fill() {
		if ($$('.hkcampsites_searchselect_country')) {
			$$('.hkcampsites_searchselect_country').each(function(selectbox){



				var selectedId = $(selectbox).options[0].value;
				$(selectbox).options.length=0;

				var opt = document.createElement('option');
				opt.text = hkcampsitesLL['selectlabel.allCountries'];
				opt.value = 0;
				$(selectbox).options.add(opt);
				
				for (var id in hkcampsitesCountries) {
					var opt = document.createElement('option');
					opt.text = hkcampsitesCountries[id];
					opt.value = id;
					if (selectedId==id) {
						opt.selected = "selected";
					}
					$(selectbox).options.add(opt);
				};
				Event.observe(selectbox, 'change', (function(){ 
					var selectedItem = $(selectbox).options.selectedIndex;
					// alert ("selectedItem="+selectedItem);
					$$('.hkcampsites_searchselect_country').each(function(selectcountrybox){
						$(selectcountrybox).options.selectedIndex = selectedItem;
					});
					hkcampsites_searchselect_region_fill();
				}));
			});
		
		
		}
	}

	function hkcampsites_searchselect_region_fill() {
		if ($$('.hkcampsites_searchselect_region')) {
			$$('.hkcampsites_searchselect_region').each(function(selectbox){


				var selectedId = $(selectbox).options[0].value;
				$(selectbox).options.length=0;
				
				var opt = document.createElement('option');
				opt.text = hkcampsitesLL['selectlabel.allRegions'];
				opt.value = 0;
				$(selectbox).options.add(opt);

				if ($$('.hkcampsites_searchselect_country')) {
					var countrySelected = $$('.hkcampsites_searchselect_country')[0].options.selectedIndex;
					if (countrySelected>0) {
						var countryId = $$('.hkcampsites_searchselect_country')[0].options[countrySelected].value;
						//debug// alert ("countrySelected="+countrySelected+" - countryId="+countryId);
						
						for (var id in hkcampsitesRegions[countryId]) {
							var opt = document.createElement('option');
							opt.text = hkcampsitesRegions[countryId][id];
							opt.value = id;
							if (selectedId==id) {
								opt.selected = "selected";
							}
							$(selectbox).options.add(opt);
						};
					}
				}
				Event.observe(selectbox, 'change', (function(){ 
					var selectedItem = $(selectbox).options.selectedIndex;
					// alert ("selectedItem="+selectedItem);
					$$('.hkcampsites_searchselect_region').each(function(selectregionbox){
						$(selectregionbox).options.selectedIndex = selectedItem;
					});
				}));
			});

		


		}

	}

	function hkcampsites_searchselect_accommodation_fill() {
		if ($$('.hkcampsites_searchselect_accommodation')) {
			$$('.hkcampsites_searchselect_accommodation').each(function(selectbox){

			
			
			
				var selectedId = $(selectbox).options[0].value;
				$(selectbox).options.length=0;
				
				var opt = document.createElement('option');
				opt.text = hkcampsitesLL['selectlabel.allAccommodations'];
				opt.value = 0;
				$(selectbox).options.add(opt);
				
				for (var id in hkcampsitesAcc) {
					var opt = document.createElement('option');
					opt.text = hkcampsitesAcc[id];
					opt.value = id;
					if (selectedId==id) {
						opt.selected = "selected";
					}
					$(selectbox).options.add(opt);
				};
				Event.observe(selectbox, 'change', (function(){ 
					var selectedItem = $(selectbox).options.selectedIndex;
					// alert ("selectedItem="+selectedItem);
					$$('.hkcampsites_searchselect_accommodation').each(function(selectacc){
						$(selectacc).options.selectedIndex = selectedItem;
					});
				}));
			});

		
		
		
		
		}

	}

	function hkcampsites_init_tabboxes() {
		$$(".tabboxheadtab a").each(function(tablink){
			$(tablink).up().siblings().each(function(myDivs){
				if ($(myDivs).hasClassName('tabboxheadtab')) {
					var myId = $(myDivs).readAttribute('id');
					if ($(myId).hasClassName('tabboxheadaktivtab')) {
						$(myId+'-content').removeClassName("hide");
					} else {
						$(myId+'-content').addClassName("hide");
					}
				}
			})
			tablink.observe("click", function(){
				// var curChildIndex = $(this).up('div').previousSiblings().length + 1;
				// alert ("TablinkName="+$(this).up('div').readAttribute('id')+" curChildIndex="+curChildIndex);
				$(this).up().siblings().each(function(myDivs){
				if ($(myDivs).hasClassName('tabboxheadtab')) {
					var myId = $(myDivs).readAttribute('id');
					$(myId).removeClassName("tabboxheadaktivtab");
					$(myId+'-content').addClassName("hide");
				}
			})
			var myId = $(this).up().readAttribute('id');
			$(myId).addClassName("tabboxheadaktivtab");
			$(myId+'-content').removeClassName("hide");

			var mapishidden = $('map').up().hasClassName('hide') ||  $('map').up().up().hasClassName('hide') ||  $('map').up().up().up().hasClassName('hide');
			// alert ('mapishidden='+mapishidden+' googleMapsHaveBeenInitialized='+googleMapsHaveBeenInitialized);

			if (!mapishidden && !googleMapsHaveBeenInitialized) {
					googleMapsHaveBeenInitialized = true;
					hkcampsites_start_mygoogle();	
			}

			});

		});  
	}

	//<div class="tabbox" > 
	//    <div class="tabboxheadtab tabboxheadaktivtab" id="cont-1"><a>Tab 1</a></div>
	//    <div class="tabboxheadtab " id="cont-2"><a>Tab 2</a></div>
	//    <div class="tabboxheadtab " id="cont-3"><a>Tab 3</a></div>
	//</div>
	//  
	//<div class="tabboxcontent paddingAll" id="cont-1-content"> 
	//    This is content box one 
	//</div>
	//  
	//<div class="tabboxcontent paddingAll hide" id="cont-2-content"> 
	//    This is content box Two 
	//</div> 
	//  
	//<div class="tabboxcontent paddingAll hide" id="cont-3-content"> 
	//    This is content box Three 
	//</div> 



	function hkcampsites_init_slideimages() {
		$$(".imgslideBox").each( function(slidebox){
			imageSlider_aktivbox[imageSlider_numOfImageBoxes] = 0;
			imageSlider_lastbox[imageSlider_numOfImageBoxes] = 0;
			imageSlider_numOfImageBoxes++;
			// alert ('imageSlider_numOfImageBoxes='+imageSlider_numOfImageBoxes);
			hkcampsites_init_slideimage(slidebox, imageSlider_numOfImageBoxes);
		});  
	}

	function hkcampsites_init_slideimage(slidebox, boxIndex) {
		// alert ('slidebox='+slidebox+' boxIndex='+boxIndex+' imageSlider_aktivbox[boxIndex-1]='+imageSlider_aktivbox[boxIndex-1]);
		imageSlider_bigimage[boxIndex-1] = $(slidebox).select('.imgslideBig');
		imageSlider_imagelist[boxIndex-1] = $(slidebox).select('.imgslideThumb');
		imageSlider_imagediv[boxIndex-1] = $(slidebox).select('.imgslideInnerthumbs');

		moveToNext = $(slidebox).select('.imgslideNext');
		moveToNext[0].observe("click", function(){
			if (imageSlider_aktivbox[boxIndex-1]<imageSlider_imagelist[boxIndex-1].length) {
				imageSlider_aktivbox[boxIndex-1]++;
				hkcampsites_setPosition(slidebox, boxIndex,imageSlider_aktivbox[boxIndex-1]);
			}
		})

		moveToPrev = $(slidebox).select('.imgslidePrev');
		moveToPrev[0].observe("click", function(){
			if (imageSlider_aktivbox[boxIndex-1]>1) {
				imageSlider_aktivbox[boxIndex-1]--;
				hkcampsites_setPosition(slidebox, boxIndex,imageSlider_aktivbox[boxIndex-1]);
			}
		})

		if (imageSlider_aktivbox[boxIndex-1]==0) {
			imageSlider_aktivbox[boxIndex-1]=1;
			imageSlider_lastbox[boxIndex-1]=0;
			hkcampsites_setPosition(slidebox, boxIndex,imageSlider_aktivbox[boxIndex-1]);
		}

		imageSlider_imagelist[boxIndex-1].each(function(image){
			image.observe("click", function(){
				imageSlider_aktivbox[boxIndex-1] = image.previousSiblings().length + 1;
				hkcampsites_setPosition(slidebox, boxIndex,imageSlider_aktivbox[boxIndex-1]);
			})
		})
		

	}

	function hkcampsites_setPosition(slidebox, box, index) {
		//alert ('box='+box+' index='+index+';');
		imageSlider_bigimage[box-1][0].writeAttribute('src',imageSlider_imagelist[box-1][index-1].readAttribute('src'));
		imageSlider_bigimage[box-1][0].writeAttribute('alt',imageSlider_imagelist[box-1][index-1].readAttribute('alt'));
		imageSlider_bigimage[box-1][0].writeAttribute('title',imageSlider_imagelist[box-1][index-1].readAttribute('title'));

		if (imageSlider_lastbox[box-1]>0) {
			imageSlider_imagelist[box-1][imageSlider_lastbox[box-1]-1].removeClassName("imgslideThumb-active");
		}
		imageSlider_lastbox[box-1] = index;
		imageSlider_imagelist[box-1][index-1].addClassName("imgslideThumb-active");


		var xpos = 0;
		if (index==1) {
			xpos = 0;
			//$(slidebox[box-1]).select('.imgslidePrev')[0].addClassName("imgslide-hideprevnext");
		} else if (index==imageSlider_imagelist[box-1].length) {
			position = index-3;
			xpos = -(imageSlider_imagelist[box-1][index-1-1].offsetLeft);
		} else {
			xpos = -(imageSlider_imagelist[box-1][index-1-1].offsetLeft);
		}
		// alert ('move: position='+position+' xpos='+xpos+';');
		var myObject = imageSlider_imagediv[box-1];
		new Effect.Move (myObject[0], {x:xpos, y:0, mode:'absolute' });

		if (index==1) {
			$(slidebox).select('.imgslidePrev')[0].addClassName("imgslide-hideprevnext");
		} else {
			$(slidebox).select('.imgslidePrev')[0].removeClassName("imgslide-hideprevnext");
		}

		if (index==imageSlider_imagelist[box-1].length) {
			if ($(slidebox).select('.imgslideNext')[0]) {
				$(slidebox).select('.imgslideNext')[0].addClassName("imgslide-hideprevnext");
			}
		} else {
			$(slidebox).select('.imgslideNext')[0].removeClassName("imgslide-hideprevnext");
		}
	}

	function hkcampsites_init_mygoogle() {
		// alert ('hkcampsites_init_mygoogle:'+googleMapsHaveBeenInitialized);
		var mapishidden = $('map').up().hasClassName('hide') ||  $('map').up().up().hasClassName('hide') ||  $('map').up().up().up().hasClassName('hide');
		// alert ('mapishidden='+mapishidden);

		if (mapishidden) {
			// alert ('mapishidden='+mapishidden);
		} else {
			hkcampsites_start_mygoogle();
			//google.setOnLoadCallback(function(){googleMapsAddData("/###MAPDATA_CACHE_FILE###");});		
			//google.load("maps", "2"); //, {"locale" : "de_DE"} 
		}
	}

	function hkcampsites_start_mygoogle() {
			googleMapsHaveBeenInitialized = true;
			googleMapsAddData(googleMapsAddDataFile);
	}

	document.observe("dom:loaded",  function() { 
		// alert ("dom:loaded");
		hkcampsites_searchselect_accommodation_fill();
		hkcampsites_searchselect_country_fill();
		hkcampsites_searchselect_region_fill();
		hkcampsites_init_tabboxes();
		hkcampsites_init_slideimages();
		hkcampsites_init_mygoogle();


		 var hkcampsites_departureDate = new DatePicker({
			relative: 'hkcampsites_searchinput_startdate',
			language: 'de',
			zindex: 2000,
			disablePastDate: true,
			disableFutureDate: false,
			enableShowEffect: false,
			closeEffect: 'squish'
		});
		hkcampsites_departureDate.setDateFormat([ "dd", "mm", "yyyy" ], ".");
	});



} else {
	window.onload = function() {
		alert ('Nor jQuery nor Protoype is loaded');
	}
}


