/****************************************************************************
	Globale Hilfsvariablen
*****************************************************************************/

g_strFieldsMissingDE = "Nicht alle Pflichtfelder wurden ausgefüllt! \nPflichtfelder sind fett gekennzeichnet";
g_strFieldsMissingIT = "Non tutti i campi obbligatori sono stati compilati!\nI campi in grasseto devono essere compilati";
g_strFieldsMissingEN = "Not all mandatory fields are filled in!\nBold fields must be filled in";

g_strEmailWrongDE = "Bitte geben Sie eine gülige eMail-Adresse ein!";
g_strEmailWrongIT = "Prego inserisca un indirizzo eMail valido!";
g_strEmailWrongEN = "Please insert a valid email address!";

g_strPrivacyMissingDE  = "Bitte lesen und akzeptieren Sie die Datenschutzbestimmungen!";
g_strPrivacyMissingIT  = "Prego legga ed approvi l'informativa riguardante il trattamento dei dati personali!";
g_strPrivacyMissingEN  = "Please accept the data protection rules!";


/****************************************************************************
	Darstellung des Menüs.
	Passt ggf. die Schrift (win, !safari) an und setzt das hauptmenu auf sichtbar.
*****************************************************************************/

function AdaptStyles ( )
{
	
	if( Browser.Platform.win ){
		// Sonderbehandlung für Chrome
		if( navigator.appVersion.search(/Chrome/) != -1 ){
			 // Menü anpassen
			$$( '#MainNav li a' ).set('styles', {
				'font-size': '15px'
			});
			
			$$( '#MainNav li' ).set('styles', {
				'padding-top': '5px',
				'padding-bottom': '5px'
			});
		}
		else {
			// Menü anpassen
			$$( '#MainNav li a' ).set('styles', {
				'font-size': '14px',
				'font-weight': 'bold'
			});
			
			$$( '#MainNav li' ).set('styles', {
				'padding-top': '4px',
				'padding-bottom': '4px'
			});
		}
	}
	
	$( 'MainNav' ).setStyle( 'display', 'block' );
};


/****************************************************************************
 Textfeld für Alter der Kinder in Abhängigkeit von der Combobox Anzahl der 
 Kinder de- bzw. aktivieren.
*****************************************************************************/

function ChangeReqAge( )
{
	if( $( 'KinderN' ).value != 0 ){
		$( 'Alter' ).set( 'disabled', '' );
		$( 'Alter' ).setStyles(
					{ 
						'background-color' : '#FFFFFF',
						'opacity' : 1 
					});
	}
	else {
		$( 'Alter' ).set( 'value', '' );
		$( 'Alter' ).set( 'disabled', 'disabled' );
		$( 'Alter' ).setStyles(
					{ 
						'background-color' : '#DDDDDD', 
						'opacity' : .5 
					});
	}
};

/****************************************************************************
 Formularfelder überprüfen
	Übergabe
		strLang			Gewünschte Sprache.
		nType			Formulartyp: 0 = Anfrage, 1 = Reservierungsanfrage.
	Rückgabe:
		true wenn alle Pflichtfelder ausgefüllt oder false => alert.
*****************************************************************************/

function CheckForm( strLang, nType )
{
	// Vorhandensein alle Pflichtfelder prüfen
	bOK = true;
	bPrivacy = true;
	bEmail = true;
	// Feld auf das Focus gesetzt werden soll
	var strFocusFieldID = '';
	
	// Pflicht-Felder anlegen
	switch( nType ){
	case 0:
		aDutyFields = new Array( 'Name', 'eMail', 'Anfrage' );
		break;
	case 1:
		aDutyFields = new Array( 'Name', 'eMail' );
		break;
	}
	
	for( var j = 0; j < aDutyFields.length; ++j ){
		if( $( aDutyFields[ j ] ).value == '' ){
			// Feld fehlt!
			bOK = false;
			
			// Feld auf das Focus gesetzt werden soll
			if( strFocusFieldID == '' && $( aDutyFields[ j ] )){
				strFocusFieldID = aDutyFields[ j ];
			}
		}
	}
	// Checkbox prüfen
	if( bOK && $( 'Privacy' ).checked != true ){
		bOK = false;
		bPrivacy = false;
		// Feld auf das Focus gesetzt werden soll
		strFocusFieldID = 'Privacy';
	}
	
	// Ggf. eMail-Adresse prüfen
	if( bOK ){
		var nPosAt = $( 'eMail' ).value.indexOf( '@' );
		var nPosLastDot = $( 'eMail' ).value.lastIndexOf( '.' );
		if(( $( 'eMail' ).value != "" && ( nPosAt == -1 || 
			( nPosAt != -1 && nPosLastDot <= nPosAt + 1 ))) ||
			( $( 'eMail' ).value=="" )){
			bOK = false;
			bEmail = false;
			// Feld auf das Focus gesetzt werden soll
			strFocusFieldID = 'eMail';
		}
	}

	
	if( !bOK ){
	
		// Passende Hinweise holen
		switch( strLang ){
		case 'it':
			if( !bPrivacy ){
				strAlert = g_strPrivacyMissingIT;
			}
			else if( !bEmail ){
				strAlert = g_strEmailWrongIT;
			}
			else{
				strAlert = g_strFieldsMissingIT;
			}
			break;
		case 'en':
			if( !bPrivacy ){
				strAlert = g_strPrivacyMissingEN;
			}
			else if( !bEmail ){
				strAlert = g_strEmailWrongEN;
			}
			else{
				strAlert = g_strFieldsMissingEN;
			}
			break;
		default:
			if( !bPrivacy ){
				strAlert = g_strPrivacyMissingDE;
			}
			else if( !bEmail ){
				strAlert = g_strEmailWrongDE;
			}
			else{
				strAlert = g_strFieldsMissingDE;
			}
			break;
		}
		
		// Hinweis ausgeben
		alert( strAlert );
		
		// Fokus auf fehlerhaftes Feld setzen
		if( strFocusFieldID != '' ){
			$( strFocusFieldID ).focus( );
		}
		// Fehler
		return false;
	}
	else {
		// Alles OK
		return true;
	}
};

/****************************************************************************
 Blogeinträge für Teaser holen.
	Übergabe
		strLang			Gewünschte Sprache
		nNum			Anzahl der Einträge.
		nLen			Länge des Beschreibungstextes.
		nCat			Gew. Kategorie. (550 = Aktuelles, 976 = Flash-News)
	Rückgabe:
		Verarbeitung durch ShowBlogEntries.
*****************************************************************************/

function GetBlogEntries( strLang, nNum, nLen, nCat )
{
	//new Ajax( '../includes/get_blog_entries.php', {
	new Request.JSON({ // Anfrage für Mootools 1.2
		method: 'post',
		url: '../tools/get_blog_entries.php',
		data: 'lang=' + strLang + '&num=' + nNum + '&len=' + nLen + '&cat=' + nCat,
		onComplete: ShowBlogEntries,
		encoding: 'utf-8',
		autoCancel: true
	//}).request( );
	}).send( );
};

/****************************************************************************
	EMail-Adresse verstecken.
*****************************************************************************/

function HideEA( eMail, eMailText, StyleCSS, Domain )
{
	if( Domain == "" || Domain == undefined || 
	   	eMail == "" || eMail == undefined ){
		return false;
	}
	else {
		if( eMailText == "" ){
			document.write( '<a href="mailto:' + 
						   eMail + '@' + Domain + '"class="' + 
						   StyleCSS + '">' + 
						   eMail + '@' + Domain + '</a>' );// -->
		}
		else {
			document.write( '<a href="mailto:' + eMail + 
						   '@' + Domain + ' class="' + 
						   StyleCSS + '">' + 
						   eMailText + '</a>' );// -->
		}
	}
};

/****************************************************************************
	Transparenz für die Video-Thumbs und Einstellungen für die Gallerie.
*****************************************************************************/

function SetupVideoGallery( )
{
	
	$( 'VideosPlain' ).setStyle( 'display', 'none' );
	$( 'HeaderLeft' ).setStyle( 'width', '340px' );
	
	aThumbs = $$( '#VideoThumbs img' );
	
	// alle Thumbs transparent machen
	for(i=0;i<aThumbs.length;i++){
		aThumbs[ i ].setStyle( 'opacity', .3 );
	}
	
	// ggf. vorselektiertes Video holen
	var aSelectedThumbs = $$( ".SelTh" );
	
	if( aSelectedThumbs != '' ){
		// vorselektiertes thumb sichtbar machen
		var nSelectedThumbID = aSelectedThumbs[ 0 ].id.substring( 2, 3 );
	}
	else{
		// erstes thumb sichtbar machen
		//nSelectedThumbID = 0;
		nSelectedThumbID = aThumbs[ 0 ].id.substring( 2, 3 );
	}
	//aThumbs[ nSelectedThumbID ].setStyle( 'opacity', 1 );
	$( 'Th'+nSelectedThumbID ).setStyle( 'opacity', 1 );
	var nClicked = nSelectedThumbID; // globale var zum zwischenspeichern der Clicks
	
	// Mouse-Events hinzufügen
	aThumbs.addEvents({
		mouseenter: function( ){
			this.morph({
    	        'opacity': 1
            });
		},
        mouseleave: function( ){
            if( nClicked != this.id.substring( 2, 3 )){
				this.morph({
					'opacity': .3
				});
			}
        },
		click: function( ){
			// vorheriges Thumb ausblenden
			$( 'Th' + nClicked ).setStyle( 'opacity', .3 );
			// ID des aktuellen Thumbs holen und zwischenspeichern
			nClicked = this.id.substring( 2, 3 );
			this.setStyle( 'opacity', 1 );
		}
    });
};

/****************************************************************************
 Blogeinträge für Teaser auswerten.
	Übergabe
		strResponseText			Einträge im JSON-Format.
	Rückgabe:
		Keine. Das Element mit der ID=BlogTeaser wird mit den HTML-Daten gefüllt.
*****************************************************************************/

function ShowBlogEntries( strResponseText )
{
	// Json-Antwort auswerten
	//Result = Json.evaluate( strResponseText );
	Result = strResponseText; // Auswertung für Mootools 1.2
	switch( Result[ 'Lang' ] ){
	case 'en':
		strContinue = 'Continue reading';
		break;
	case 'it':
		strContinue = 'Continua a leggere';
		break;
	default:
		strContinue = 'Weiter lesen';
		break;
	}
	
	// Alle Einträge zusammensetzen
	var strHTML = "";
	$bResults = true;
	for( var i = 0; i < Result[ 'BlogList' ].length; ++i ){
		if( Result[ 'BlogList' ][ i ][ 'Excerpt' ] != 'N' ){
			if( Result[ 'Cat' ] == 550 ){
				strHTML += "<h4><a href=\"" + Result[ 'BlogList' ][ i ][ 'Link' ] + 
					"\" target=\"_blank\">" + 
					Result[ 'BlogList' ][ i ][ 'Title' ] + "</a></h4>";
				strHTML += "<div class=\"Small\">" + Result[ 'BlogList' ][ i ][ 'Date' ] + 
					" " + Result[ 'BlogList' ][ i ][ 'Time' ] + "</div>";
				strHTML += "<p>" + Result[ 'BlogList' ][ i ][ 'Excerpt' ];
				strHTML += "<br /><a href=\"" + Result[ 'BlogList' ][ i ][ 'Link' ] + 
					"\" target=\"_blank\">" + strContinue + "</a></p>";
			}
			else {
				strHTML += "<h4>" + Result[ 'BlogList' ][ i ][ 'Title' ] + "</h4>";
				strHTML += "<div class=\"Small\">" + Result[ 'BlogList' ][ i ][ 'Date' ] + 
					" " + Result[ 'BlogList' ][ i ][ 'Time' ] + "</div>";
				strHTML += Result[ 'BlogList' ][ i ][ 'Excerpt' ];
			}
		}
		else {
			$bResults = false;	
		}
	}
	
	if( Result[ 'Cat' ] == 550 ){
		// Boxtitel holen
		strBoxTitle = ( $( 'BlogTeaser' ).get( 'html' ));
		// Teaser ausgeben
		$( 'BlogTeaser' ).innerHTML = strBoxTitle + strHTML;
	}
	else {
		if( $bResults ){
			var FlashNews = new Element('div', {
					'id': 'FlashNews',
					'html': strHTML
				});
			
			SqueezeBox.initialize({
				size: {x: 450, y: 500},
				overlayOpacity: 0.2,
				automaticResizeH: true,
				nPaddingBottom: 30
			});
	
			SqueezeBox.open(FlashNews, {handler: 'adopt'});
		}
	}
};

/****************************************************************************
	Video zeigen.
	Übergabe
		strVideoID			ID des anzuzeigenden Videos.
		strVideoDesc		Passende Beschreibung zum Video.
	Rückgabe:
		Keine. DOM wird aktualisiert.
*****************************************************************************/

function ShowVideo( strVideoID )
{
	var strUrl = 'http://www.youtube.com/v/' + 
		strVideoID + '&rel=0&autoplay=1&showinfo=0';
	
	// Video-Player aktualisieren
	$( 'Video' ).innerHTML = '<object width="561" height="450">' + 
		'<param name="movie" value="' + strUrl + '"></param>' + 
		'<param name="wmode" value="transparent"></param>' +
		'<embed src="' + strUrl + '" type="application/x-shockwave-flash"' +
		' wmode="transparent" width="561" height="450"></embed></object>';
	
	// Titel und Beschreibung aktualisieren
	$( 'FullTitle' ).innerHTML = $( 'T' + strVideoID ).get( 'html' );
	$( 'FullDesc' ).innerHTML = $( 'D' + strVideoID ).get( 'html' );
	//$( 'FullDesc' ).innerHTML = strVideoDesc;
};

/****************************************************************************
	Popup-Fenster.
	Übergabe
		strURL		Url des zu öffnenden Fensters.
		strName		Name des Fensters (Title).
		strWndData	Daten für Fenster: Höhe, Breite etc.
	Rückgabe:
		Keine. Fokus wird auf neues Fenster gesetzt.
*****************************************************************************/

function ShowWindow( strURL, strName, strWndData )
{
	// Fenster öffnen
	if( strWndData == "" || strWndData == undefined ){
		Win = window.open( strURL, strName );
	}
	else {
		Win = window.open( strURL, strName, strWndData );
	}
	
	// Fokus setzen
	Win.focus( );
	
	return false;
};

/****************************************************************************
	Kalender (DatePicker) mit zwei Formularfeldern, also 2 DP.
	Übergabe
		strColorClass		Css-Klasse für Farbe.
	Rückgabe:
		Keine.
*****************************************************************************/

function StartCalendar( strColorClass )
{ 
	PageCal = new Calendar({ 
					Ankunft: '', 
					Abreise: '' 
				}, 
				{ 
					lang: g_strLang,
					classes: [ 'calendar Calendar' + strColorClass ],
					strRelScrollID: 'ContainerOuther'
				});
};

/****************************************************************************
	Klasse für Bildergalerie instanzieren.
	Übergabe
		aImages		Array mit Bilddaten.
	Rückgabe:
		Keine.
*****************************************************************************/

function StartGallery( aImages ) {
	
	// Safog.com: Carousel-Platzhalter leeren
	$("GalleryOverview").set('html', '');
	
	var PageGallery = new gallery($('ImageBig'), {
		manualData: aImages,
		fadeDuration: 2000,
		timed: true,
		delay: 7000,
		showArrows: true,
		showCarousel: true,
		showInfopane: true,
		slideInfoZoneOpacity: 1,
		slideInfoZoneSlide: false,
		embedLinks: false,
		slideInfoZoneSlide: false,
		useExternalCarousel: true,
		carouselElement: $("GalleryOverview"),
		showCarouselLabel: false,
		thumbHeight: 40,
		thumbWidth: 80,
		thumbSpacing: 8, /* gilt nur für IE 6, bei den anderen über CSS-Style gelöst */
		thumbIdleOpacity: 0.5,
		carouselHorizontal: false,
		titleSelector: "span",
		'onStart': function(){
			$$('#ImageBig img').destroy( );
		}
	});
	
	//PageGallery.onStart', function( ){ $$('#ImageBig img').destroy( ); } )
	//.addEvent( 'onComplete', function( ){ el.destroy( 'img' ); } )
	// zum Schluss das vordefinierte Bild entfernen
	//$$('#ImageBig img').destroy( );
};

/****************************************************************************
	Standard-Toolip: gilt für alle Elemente mit der übergebenen CSS-Klasse.
	IE < 7 werden ausgeschlossen.
	Übergabe
		strCssClass		Css-Klasse für die Tipps erstellt wrden sollen.
	Rückgabe
		Keine. Erstellung der ToolTipps mit der CSS-Klasse ToolTips2.
*****************************************************************************/

function CreateToolTips( strCssClass )
{
	var bIE6 = false;
	if ( Browser.Engine.trident && Browser.Engine.version < 7 ){
		// akt. Browser ist IE6 oder kleiner
		var bIE6 = true;
	}
	
	// Toolstips zusammenstellen. IE6 und kleiner ausschliessen.
	if ( !bIE6 ){
		// Flag zum überprüfen ob title-angaben vorhanden
		// ToDo: andere Lösung finden
		var bCreate = false;
		
		// Titel und Beschreibung holen
		$$( '.' + strCssClass ).each( function( El, nIndex ){
			if( El.get( 'title' ) != null ){
				var aContent = El.get( 'title' ).split( '::' );	

				if( aContent[ 1 ] != undefined ){
					// Titel und Beschr festlegen
					El.store( 'tip:title', aContent[ 0 ] );
					El.store( 'tip:text', aContent[ 1 ] );
				}
				else {
					// Wenn es nur einen Text gibt = Beschrtext
					El.store( 'tip:title', '' );
					El.store( 'tip:text', aContent[ 0 ] );
				}
				bCreate = true;
			}
		});
		
		if( bCreate == true ){
			// Tooltipps erzeugen
			var Tooltips = new Tips( '.' + strCssClass, {
				showDelay: 100,
				hideDelay: 400, /*800*/
				className : 'ToolTip2',
				/*fixed: true,*/
				offsets : {
					'x': 5, /*100*/
					'y':  20 /*100*/
				},
				onShow: function( ToolTip )
				{
						ToolTip.fade( .9 );			
				},
				onHide: function( ToolTip )
				{
					ToolTip.fade( 0 );
				}
			});
		}
	}
};
