/**
 * TYPO3 SCRIPTE
 *************************************************/
var browserName=navigator.appName;
var browserVer=parseInt(navigator.appVersion);
var version="";
var msie4=(browserName=="Microsoft Internet Explorer"&&browserVer>=4);
if((browserName=="Netscape"&&browserVer>=3)||msie4||browserName=="Konqueror"||browserName=="Opera"){version="n3";}else{version="n2";}

function blurLink(theObject){if(msie4){theObject.blur();} else {theObject.blur();}}
function decryptCharcode(n,start,end,offset){n=n+offset;if(offset>0&&n>end){n=start+(n-end-1);}else if(offset<0&&n<start){n=end-(start-n-1);}return String.fromCharCode(n);}
function decryptString(enc,offset){var dec="";var len=enc.length;for(var i=0;i<len;i++){var n=enc.charCodeAt(i);if(n>=0x2B&&n<=0x3A){dec+=decryptCharcode(n,0x2B,0x3A,offset);}else if(n>=0x40&&n<=0x5A){dec+=decryptCharcode(n,0x40,0x5A,offset);}else if(n>=0x61&&n<=0x7A){dec+=decryptCharcode(n,0x61,0x7A,offset);}else{dec+=enc.charAt(i);}}return dec;}
function linkTo_UnCryptMailto(s){location.href=decryptString(s,-2);}




/**
 * GLOBALE VARIABLEN
 *************************************************/
var isiPad		= (navigator.userAgent.match(/iPad/i) != null);
var isiPhone	= (navigator.userAgent.match(/iPhone/i) != null);
var isiDevice	= (navigator.userAgent.match(/iPad|iPhone/i) != null);
 
var sysLanguage = '';
var LANG_more = {
	it: 'maggiori informazioni',
	de: 'mehr',
	en: 'more'
}
var LANG_country = {
	it: 'ITA',
	de: 'DEU',
	en: 'GBR'
}
var LANG_country = {
	it: 'ITA',
	de: 'DEU',
	en: 'GBR'
}
var GEO_IP = 0;

var baseUrl = 'http://'+window.location.hostname+'/';
var dirUploads = 'uploads/pics/';
var dirVideos = baseUrl+'pub/videos/';
var dirImages = baseUrl+'pub/images/';

var golfMap = {
/*
	LAKE COURSE
*/

/*
	 1: { x: 205, y:  53, title: 'Hole  1', nr: 'lc01' },
	 2: { x:  27, y: 133, title: 'Hole  2', nr: 'lc02' },
	 3: { x:  32, y: 371, title: 'Hole  3', nr: 'lc03' },
	 4: { x: 129, y: 320, title: 'Hole  4', nr: 'lc04' },
	 5: { x: 155, y: 212, title: 'Hole  5', nr: 'lc05' },
	 6: { x: 205, y: 199, title: 'Hole  6', nr: 'lc06' },
	 7: { x: 195, y: 117, title: 'Hole  7', nr: 'lc07' },
	 8: { x: 139, y:  98, title: 'Hole  8', nr: 'lc08' },
	 9: { x: 101, y: 186, title: 'Hole  9', nr: 'lc09' },
*/

/*
	MOUNTAIN COURSE
*/
	 1: { x: 401, y:  81, title: 'Fairway  1', nr: 'mc01', facts: { par: '4', len: '331', cap: '11' } },
	 2: { x: 392, y: 211, title: 'Fairway  2', nr: 'mc02', facts: { par: '4', len: '391', cap: '3' } },
	 3: { x: 354, y: 349, title: 'Fairway  3', nr: 'mc03', facts: { par: '4', len: '382', cap: '9' } },
	 4: { x: 345, y: 375, title: 'Fairway  4', nr: 'mc04', facts: { par: '3', len: '138', cap: '15' } },
	 5: { x: 513, y: 389, title: 'Fairway  5', nr: 'mc05', facts: { par: '5', len: '580', cap: '1' } },
	 6: { x: 579, y: 211, title: 'Fairway  6', nr: 'mc06', facts: { par: '4', len: '394', cap: '13' } },
	 7: { x: 472, y: 215, title: 'Fairway  7', nr: 'mc07', facts: { par: '5', len: '468', cap: '17' } },
	 8: { x: 371, y: 224, title: 'Fairway  8', nr: 'mc08', facts: { par: '4', len: '350', cap: '5' } },
	 9: { x: 318, y: 200, title: 'Fairway  9', nr: 'mc09', facts: { par: '3', len: '177', cap: '7' } },
	10: { x: 371, y: 183, title: 'Fairway 10', nr: 'mc10', facts: { par: '4', len: '355', cap: '10' } },
	11: { x: 433, y: 126, title: 'Fairway 11', nr: 'mc11', facts: { par: '3', len: '179', cap: '14' } },
	12: { x: 497, y: 116, title: 'Fairway 12', nr: 'mc12', facts: { par: '4', len: '377', cap: '2' } },
	13: { x: 505, y: 225, title: 'Fairway 13', nr: 'mc13', facts: { par: '4', len: '339', cap: '18' } },
	14: { x: 458, y: 340, title: 'Fairway 14', nr: 'mc14', facts: { par: '5', len: '503', cap: '12' } },
	15: { x: 375, y: 432, title: 'Fairway 15', nr: 'mc15', facts: { par: '3', len: '158', cap: '8' } },
	16: { x: 462, y: 267, title: 'Fairway 16', nr: 'mc16', facts: { par: '5', len: '498', cap: '6' } },
	17: { x: 319, y: 294, title: 'Fairway 17', nr: 'mc17', facts: { par: '4', len: '349', cap: '16' } },
	18: { x: 239, y: 227, title: 'Fairway 18', nr: 'mc18', facts: { par: '4', len: '382', cap: '4' } }
};


var realEstateMap = {

	a: { x: 269, y: 201, title: 'Borgo', image: '' },
	b: { x: 303, y: 205, title: 'La Terrazza', image: '' },
	c: { x: 257, y: 218, title: 'La Ghialla', image: '' },
	d: { x: 261, y: 155, title: 'Welness Hotel', image: '' },
	e: { x: 296, y: 157, title: 'Hotel „Tabaccaia“', image: '' },
	f: { x: 364, y: 131, title: 'Hotel „Di Arte e Cultura“', image: '' },
	g: { x: 308, y: 306, title: 'Golf Course', image: '' },
	G: { x: 209, y: 285, title: 'Golf Course', image: '' },
	h: { x: 276, y: 259, title: 'Golf Clubhouse', image: '' },
	i: { x: 369, y: 312, title: 'Golf Villas', image: '' },
	I: { x: 219, y: 340, title: 'Golf Villas', image: '' },
	j: { x: 132, y: 302, title: 'Villagio La Collina', image: '' },
	k: { x: 227, y: 160, title: 'Villagio San Pietro', image: '' },
	l: { x: 178, y: 131, title: 'Villagio Starnino', image: '' },
	m: { x: 282, y: 143, title: 'Parking', image: '' },
	n: { x: 263, y: 179, title: 'Spa & Piscina', image: '' },
	o: { x: 290, y: 234, title: 'Ristorante Del Castello', image: '' },
	p: { x: 317, y: 166, title: 'Osteria Il Rosmarino', image: '' },

	casale01: { x: 251, y:  39, title: 'Casale „Carfalo“', image:'' },
	casale02: { x: 213, y:  51, title: 'Casale „Podere Strada“', image:'' },
	casale03: { x: 153, y: 149, title: 'Casale „Via Nova“', image:'casale-03-vianova.jpg' },
	casale04: { x: 239, y: 178, title: 'Casale „Casiscala“', image:'casale-04-casiscala.jpg' },
	casale05: { x: 359, y: 223, title: 'Casale „Casa al Bosco“', image:'' },
	casale06: { x: 472, y: 213, title: 'Casale „Poderino“', image:'' },
	casale07: { x: 442, y: 242, title: 'Casale „P. Urlari“', image:'' },
	casale08: { x: 557, y: 265, title: 'Casale', image:'' },
	casale09: { x: 472, y: 306, title: 'Casale „Sant\' Anna“', image:'' },
	casale10: { x: 439, y: 276, title: 'Casale „P. Del Monte“', image:'' },
	casale11: { x: 351, y: 360, title: 'Casale „La Querce“', image:'casale-11-laquerce.jpg' },
	casale12: { x: 347, y: 293, title: 'Casale „Bolvacio“', image:'casale-12-bolvacio.jpg' },
	casale13: { x: 221, y: 249, title: 'Casale „P. La Casa“', image:'' },
	casale14: { x: 224, y: 306, title: 'Casale „La Spina“', image:'casale-14-laspina.jpg' },
	casale15: { x: 171, y: 350, title: 'Casale „La Valle“', image:'casale-15-lavalle.jpg' },
	casale16: { x: 210, y: 377, title: 'Casale „I Bianchi“', image:'casale-16-ibianchi.jpg' },
	casale17: { x: 191, y: 441, title: 'Casale „Rignano“', image:'' },
	casale18: { x: 139, y: 507, title: 'Casale „Palagetto“', image:'' }
};

var golfmapSliderDefault = '';
var golfmapSliderTimeout = -1;
var golfmapSliderBlocker = false;




/**
 * jQuery
 *************************************************/

$(document).ready(function(){
	
	// Sidebar anpassen
	if ($('#sidebar').innerHeight() < 343) {
		$('#sidebar').height('343px');
	}

	// Golf-Spalten anpassen
	$('#content').find('.csc-3column').last().addClass('last').after('<div class="clear"></div>');
	$('#content').find('#golf-footer .column-right').append($('#content').find('#weather').parents('.csc-quicklink'));
	

	// Kalender anpassen
	$('.calendar-table').parents('.sidebar-box').addClass('calendar');
	
	// Country
	$('#tx-srfeuserregister-pi1-static_info_country').find('option[value="'+LANG_country[sysLanguage]+'"]').attr('selected', 'selected');
	GEO_IP = $('#languageSelector').attr('lang');
	$('.ip-hidden').each(function(){
		if ($(this).attr('lang') == GEO_IP) {
			$(this).contents().unwrap();
		} else {
			$(this).remove();
		}
	});

/*
 * Presse Galerie
 *************************************************/
	
	$('.press-gallery a').removeClass('fancybox').attr('target', '_blank');
	$('.press-gallery.fotos a').addClass('fancybox');
	$('.press-gallery .imageWithCaption').wrap('<div class="press-gallery-item"></div>');
	$('.press-gallery img').each(function(){
		var fileName = $(this).attr('alt');
		var source = dirUploads + fileName;
		if (fileName.substr(-3,3) == 'pdf') {
			//$(this).parent('a').attr('href', dirUploads + fileName);
		}
		$(this).parents('.csc-textpic-image').find('.csc-textpic-caption').append('<a class="downloadLink" href="'+source+'">[ download ]</a>');
	});
	
	
	$('.press-teaser').rpdCarousel();
	
	
/*
 * Fancybox
 *************************************************/
 
	// Fancybox
	$('.fancybox').fancybox();
	

/*
 * Accordion
 *************************************************/
	$('.accordion h3').each(function(){
		$(this).siblings().wrapAll('<div></div>');
	});
	accordionClass = 'theAccordion';
	if ($('.accordion:first').hasClass('press-gallery')) {
		accordionClass += ' press-gallery';
	}
	if ($('.accordion:first').hasClass('fotos')) {
		accordionClass += ' fotos';
	}
	$('.accordion:first').before('<div class="'+accordionClass+'"></div>');
	$('.accordion').appendTo('.theAccordion');
	$('.accordion h3').unwrap();
	$(".theAccordion").accordion({header: 'h3', autoHeight: false, active: 'h3:first', collapsible: true});

	$(".news-list.news-accordion").accordion({header: 'h3', autoHeight: false, active: 'h3:first', collapsible: true});
	

/* Navi
**************************************************/

	// letztes Element markieren
	$('ul#mainNavi').children('li:last').addClass('last');
	$('ul#bottomNavi').children('li:last').addClass('last');
	// ausgewähltes Element als Kategorie
	$('.categoryTitle').text($('ul#mainNavi').children('li.active').children('a').text());

	$('ul#mainNavi li ul.dropdown').each(function(){
		var pWidth = $(this).parent().outerWidth();
		var tWidth = $(this).outerWidth();
		if (pWidth > tWidth) {
			$(this).width(pWidth-2);
		} else {
			$(this).width(tWidth);
		}
	});

	// alle Untermenüs ausblenden
	$('ul#mainNavi').find('li').find('ul.dropdown').hide();
	// Untermenüs bei Mouse-Over/-Out ein/ausblenden
	$('ul#mainNavi').find('li').hover(
		function(){
			$(this).addClass('hover');
			$(this).find('ul.dropdown').css('opacity','0').show().animate({
				opacity: 1
			},200);
		},
		function() {
			$(this).removeClass('hover');
			$(this).find('.dropdown').animate({
				opacity: 0
			},0, function(){
				$(this).hide()
			});
		}
	);
	// Hover-Effekt für Hauptnavigations-Felder
	$('ul#mainNavi').find('li').hover(
		function(){
		},
		function() {
		}
	);
	// Hover-Effekt für Untermenü-Felder
	$('ul#mainNavi li ul.dropdown').find('li').hover(
		function(){
			$(this).addClass('hover');
		},
		function() {
			$(this).removeClass('hover');
		}
	);
	
	
/*
 * Teaser-Boxen auf der Startseite
 *************************************************/
	// Formatierung
	$('#teaser').children('.teaser-start:last').addClass('last').after('<div class="clear clearfix"></div>');
	// Link hinzufügen
	$('.teaser-start').each(function(){
		var title	= $(this).find('h2 a').text();
		$(this).find('.csc-textpic-text').append('<p class="link"></p>');
		$(this).find('.csc-textpic-text p.link').append($(this).find('h2 a'));
		$(this).find('.csc-textpic-text p.link a').text(LANG_more[sysLanguage]);
		$(this).find('h2').empty();
		$(this).find('h2').text(title);
	});
	
/*
 * News
 *************************************************/
	// Formatierung
	$('.news-latest').children('li.news-item:last').addClass('last');
	
/*
 * MailForm
 *************************************************/
	$('#mailForm').find('input, textarea, select').focus(function() {
		$(this).attr('style', '');
	})
	
/*
 * Golf Map
 *************************************************/
	$('#golfMap').each(function(){
		// Default Slide sichern
		golfmapSliderDefault = $('#slider.golfmap .factslider .slide.default').html();
		// Golfkarte mit relativem Wrap umschließen
		$(this).find('img:first').wrap('<div id="golfMapWrap" style="position: relative"></div>');
		// Videoplayer erstellen & verknüpfen
		$(this).append('<div id="golfVideoPlayer"></div>');
		// Hotspots erstellen
		$.each(golfMap, function(key, item){
			// Verschiebung des Hotspots
			var style = 'style="left: '+(item.x-12)+'px; top: '+(item.y-12)+'px;"';
			// Hotspot-Link
			var link = '';
			var message = '';
			// gibt es kein verknüpftes Video?
			if (item.noVideo) {
				link = '<div class="golfHotspot" ' + style + ' alt="'+item.title+'" name="'+item.nr+'">' + key + '</div>';
			} else {
				link = '<a id="inline" href="#golfVideoPlayer" alt="'+item.title+'" class="golfHotspot fancyvideo" '+style+' name="'+item.nr+'">'+key+'</a>';
				message = '<p class="hint">'
						+ 'Click to play the '
						+ '<a id="inline" href="#golfVideoPlayer" alt="'+item.title+'" name="'+item.nr+'" class="fancyvideo">video</a>'
						+ '.</p>'
			}
			// Markup zusammensetzen
			var html = link
					 + '<div class="tooltip"><h4>'+item.title+'</h4>'+message+'</div>';
			// Markup anfügen
			$('#golfMapWrap').prepend(html);
		});
		// Tooltips mit Hotspots verknüpfen
    	$('.golfHotspot').tooltip({
    		effect: 'slide',
    		bounce: true,
    		offset: [5, 0],
    		position: 'bottom center',
    		relative: true,
    		onShow: function(ev) {
    			// Attribute ermitteln
    			var eventObj = (!ev.srcElement) ? $(ev.originalEvent.target) : $(ev.srcElement);
    			var title = eventObj.attr('alt');
    			var nr = Number(eventObj.attr('name').substr(2,2));
    			var facts = golfMap[nr].facts;
    			// console.log(nr);
    			var imageFile = dirImages + 'maps/fairway-' + eventObj.attr('name') + '.jpg';
    			var videoFile = dirVideos + 'maps/fairway-' + eventObj.attr('name') + ((isiDevice) ? '.mp4' : '.flv');
    			// Video-Datei an den Player übergeben
    			$('#golfVideoPlayer').attr('lang', videoFile);
				// HTML für Slide erstellen
    			var html = '<div class="csc-default">'
    					 + '<h2>'+title+'</h2>'
    					 + '<p class="facts"><b>Facts</b><br />PAR: '+facts.par+'<br />Length: '+facts.len+'m<br />Handicap: '+facts.cap+'</p>'
    					 + '<p><img src="'+imageFile+'" alt="" /></p>'
    					 + '</div>';
    			// nächsten Slide zeigen
    			golfmapSlideNext(html, false);
    		},
    		onBeforeHide: function() {
				// Timeout starten, wenn nicht bereits der Default-Slide angezeigt wird
				if (!$('#slider.golfmap .factslider .slide.active').hasClass('default') && !golfmapSliderBlocker) {
					// Timer löschen
					clearTimeout(golfmapSliderTimeout);
					// neues Timeout setzen
					golfmapSliderTimeout = setTimeout(function() {
						golfmapSlideNext(golfmapSliderDefault, true);
					}, 3000);
				}
    		}
    	});
    	// Fancybox mit Videoplayer und Hotspots verknüpfen
		$(this).find('.fancyvideo').fancybox({
			// vor Öffnen der Fancybox: 
			onStart: function() {
				// Timer löschen
				clearTimeout(golfmapSliderTimeout);
				// Timeout-Blocker setzen
				golfmapSliderBlocker = true;
				// Fancybox positionieren
				$('#fancybox-wrap').css({ marginLeft: '155px', top: '260px' });
				// Video-Source ermitteln
				var videoFile = $('#golfVideoPlayer').attr('lang');
				// Flowplayer laden
				$('#golfVideoPlayer').show().flowplayer(
					{ src:"typo3conf/ext/rpd_catslider/res/flowplayer/flowplayer-3.2.7.swf", wmode: 'transparent' },
    				{
    					clip: { url: videoFile }
    				}				
				);
				$f().ipad({ simulateiDevice: false });
			},
			// nach Öffnen der Fancybox: 
			onComplete: function() {
				// Fancybox positionieren
				$('#fancybox-wrap').css({ marginLeft: '155px', top: '260px' });
			},
			// vor Schließen der Fancybox: 
			onCleanup: function(){
				// Flowplayer löschen
				$f().unload();
				$('#golfVideoPlayer').hide();
				// Timeout starten, wenn nicht bereits der Default-Slide angezeigt wird
				if (!$('#slider.golfmap .factslider .slide.active').hasClass('default')) {
					golfmapSliderBlocker = false;
					// Timer löschen
					clearTimeout(golfmapSliderTimeout);
					// neues Timeout setzen
					golfmapSliderTimeout = setTimeout(function() {
						golfmapSlideNext(golfmapSliderDefault, true);
					}, 3000);
				}
			},
			// nach Schließen der Fancybox: 
			onClosed: function() {
				// Fancybox-Positionierung rückgängig machen
				$('#fancybox-wrap').css('margin-left', '0');
			}
		});
	});
	
	
	
/*
 * Real Estate Map
 *************************************************/	
 	$('#realEstateMap').each(function(){
		// Golfkarte mit relativem Wrap umschließen
		$(this).find('img:first').wrap('<div id="realEstateMapWrap" style="position: relative"></div>');
		// Hotspots erstellen
		$.each(realEstateMap, function(key, item){
			// Tags bestimmen
			var startTag = (item.image != '') ? 'a href="'+dirImages+'maps/'+item.image+'"' : 'div';
			var endTag = (item.image != '') ? 'a' : 'div';
			// Klasse des Hotspots bestimmen
			var aClass = (key.length > 6) ? 'realHotspot casale' : 'realHotspot number';
			aClass += (item.image != '') ? ' fancybox' : '';
			// Style bestimmen
			var style = 'left: '+(item.x-12)+'px; top: '+(item.y-12)+'px;';
			// Bezeichner bestimmen
			var content = (key.length > 6) ? '' : key.toUpperCase();
			// Tooltip erstellen
			var tooltip = (item.image != '') ? '<div class="tooltip"><h4>'+item.title+'</h4><p class="hint">Click to view image.</p></div>' : '<div class="tooltip"><h4>'+item.title+'</h4></div>';
			// Markup erstellen
			var html = '<'+startTag+' alt="'+item.title+'" class="'+aClass+'" style="'+style+'">'+content+'</'+endTag+'>' + tooltip;
			// Markup hinzufügen
			$('#realEstateMapWrap').prepend(html);
		});
		// Tooltips erstellen
    	$('.realHotspot').tooltip({
    		effect: 'slide',
    		bounce: true,
    		offset: [5, 0],
    		position: 'bottom center',
    		relative: true
		});
		// Fancybox verbinden
		$('#realEstateMap a.fancybox').fancybox();
	});

/*
	$('#realEstateMap').find('img').click(function(ev){
		var o = $(ev.target).offset();
		var x = Math.round(ev.pageX - o.left);
		var y = Math.round(ev.pageY - o.top);
		console.log('casale01: { x: '+ x + ', y: ' + y + ', },');
	});
*/
	
});




function golfmapSlideNext(html, setToDefault)
{
	// Timer löschen
	clearTimeout(golfmapSliderTimeout);
	// Default-Klasse setzen?
	if (setToDefault == true) {
		$('#slider.golfmap .factslider .slide.inactive').addClass('default');
	} else {
		$('#slider.golfmap .factslider .slide.inactive').removeClass('default');
	}
	$('#slider.golfmap .factslider .slide.active').removeClass('default');
	// neuen Slide befüllen und animieren
	$('#slider.golfmap .factslider .slide.inactive').html(html).css({ display: 'block' }).animate(
		{
			left: '0',
			opacity: 1
		},
		{
			duration: 300,
			queue: false,
			complete: function(){
				$(this).removeClass('inactive').addClass('active');
    		}
    	}
    );
    // alten Slide animieren
	$('#slider.golfmap .factslider .slide.active').animate(
		{
			left: '-310px',
			opacity: 0
		},
		{
			duration: 300,
			queue: false,
			complete: function(){
				$(this).css({ left: '300px', display: 'none' });
				$(this).removeClass('active').addClass('inactive');
			}
		}
	);

}
