var content = '';
var footer = '';
var search_block_flag = false;
var seach_httprequest = null;

///////////////////////////////////////////////////////////////////////////////
$(document).ready(function() {

	/*
	footer = $( '#footer' ).html();
	$( '#footer' ).remove();
	content = $( '#content' ).html();
	
	content_show();
	
	search_init();
	
	$('#navi ul ul').hide(); // alle Sub-Navigationen zuklappen
	$('#navi ul > li > a').click( area_click );
	$( '#area' ).slideDown( 'fast', function() {
		$.historyInit( area_init );
	});
	*/
});

///////////////////////////////////////////////////////////////////////////////
function area_click() { // beim Klick auf eine Seite in der Navigation ...

	var hash = $( this ).attr( 'type' );
	//var hash = this.area;
	//hash = hash.replace(/^.*#/, '');
	$.historyLoad( hash ); // ruft area_init() mit neuem hash auf

	return false;
}

///////////////////////////////////////////////////////////////////////////////
function area_init( hash ) { // Wird beim Seitenaufruf (durch $.historyInit) und bei klick auf "Go Back" ausgeführt ...

	if( hash ) { // hash doesn't contain the first # character.
		// restore ajax loaded state

		if ( content == -1 ) return false; // abbrechen, falls anfrage bereits läuft
		
		var obj = $( '#navi a[@type='+ hash + ']' ).get(0);
		
		$('#navi ul > li > a.selected').removeClass( 'selected' );
		$( obj ).addClass( 'selected' );

		area_expand( obj );
		area_load( obj );
		
	} else {
		
		var obj = $( '#navi li a.selected' );
		if ( obj.length < 1 ) return;
		obj = obj.get(0);
		
	area_expand( obj );
	}
}

///////////////////////////////////////////////////////////////////////////////
function area_expand( obj ) {

	var tmp = $( obj ).parent().get(0);
	$('#navi ul:visible').filter( function( i ) {
		if ( $( '.selected', this ).length != 0 ) return false; // abort slide-Up (falls das neue selektierte unterhalb dieses ul ist)
		if( $( this ).parent().get(0) == tmp ) return false; // abort slide-Up (falls das parent li das gewählte li ist)
		return true; // slide-Up!
	}).slideUp().parent().removeClass( 'open' );
	
	$( '> ul:hidden', $( obj ).parents() ).slideDown().parent().addClass( 'open' );
}

///////////////////////////////////////////////////////////////////////////////
function area_load( obj ) { // Inhalt laden ...

	$( '#content' ).html( '' );
	
	$( '<p style="margin: 100px; text-align: center;"><img src="/data/gfx/indicator.gif" alt="..."><br/>Bitte warten, Seite wird geladen ...</p>' )
		.appendTo( $( '#content' ) )
		.fadeIn();

	content = -1; // wärend dem laden wird globales content auf -1 gesetzt
	
	var t = new Date();
	t = t.getTime() + Math.random();
	
	$.ajax( {
		type: 'GET',
		url: '/gateway/',
		data: {
			template: 'plain',
			get_content_by_area_id: $( obj ).attr( 'type' ),
			t: t
		},
		success: function( data ) {
			content = data; // Inhalt global speichern
			content_show(); // Inhalt anzeigen
		},
		error: function( data ) {
			content = 'Fehlgeschlagen';
			content_show(); // Inhalt anzeigen
		}
	});
}

///////////////////////////////////////////////////////////////////////////////
function content_show() { // Globalen Inhalt anzeigen ...

	$( '#content' ).html( content+'\n' ).append( footer );

	$( '#print' ).attr( 'href', $( '#navi li a.selected' ).attr( 'href' ) +'?template=print' );

}

///////////////////////////////////////////////////////////////////////////////
function suggest() {
	
	var word = $( this ).text();
	var val = $( '#search #patterns' ).val();
	
	suggest_stop();

	val = val.replace( /[a-zöäüß]+ ?$/i, word );
	$( '#search #patterns' ).val( val ).focus();
}

///////////////////////////////////////////////////////////////////////////////
function suggest_stop() {

	$( '#suggest' ).remove();
	search_block_flag = false;

	try {
		seach_httprequest.abort();
	} catch( e ) {
	}
}

///////////////////////////////////////////////////////////////////////////////
function search_init() {

	$('#search form').submit( function() {
		if ( search_block_flag == true ) return false;
	} );
	
	$('#search input[@type=submit]').click( function() {
		$('#search form').get(0).submit();
	});
	$('#search #patterns').attr( 'autocomplete', 'off' ).keydown( function( key ) {

		if (		key.keyCode == 13 // ENTER
				||	key.keyCode == 32 // LEER
				) {

			var obj = $( '#suggest' );
			if ( obj.length > 0 ) { // suggest offen
			
				var sel = $( '#suggest a.selected' );
				if ( sel.length > 0 ) { // eins ausgewählt
				
					suggest.call( sel );
					return;
				}
			}
			if ( key.keyCode == 13 ) { // ENTER
				$('#search form').get(0).submit();
				return;
			}
		}
		
		if (		key.keyCode == 27 // ESC
				||	key.keyCode == 32 // LEER
				) {
			suggest_stop();
			return;
		}
		
		if (		key.keyCode == 40 // runter
				||	key.keyCode == 38 // hoch
				) {
				
			var obj = $( '#suggest' );
			if ( obj.length < 1 ) return;
			var sel = $( '#suggest a.selected' );
			if ( sel.length < 1 ) {
				$( '#suggest a' ).eq(0).addClass( 'selected' );
			} else if ( key.keyCode == 40 ) { // runter
				sel.removeClass( 'selected' ).next().addClass( 'selected' );
			} else if ( key.keyCode == 38 ) { // hoch
				sel.removeClass( 'selected' ).prev().addClass( 'selected' );
			}
			return false;
		}
		
		if ( key.keyCode == 8 ) { // backspace
			// suche unterbrechen? oder suche neu starten
		}

		if (
				( key.keyCode > 64 && key.keyCode < 91 ) // Buchstaben
			||( key.keyCode > 47 && key.keyCode < 58 ) // Zahlen
			||	key.keyCode == 222	// ä
			||	key.keyCode == 192	// ö
			||	key.keyCode == 59		// ü
			||	key.keyCode == 219 	// ß
			||	key.keyCode == 8 	// backspace
			) {
				
				// suche verzögert starten!
				
				var word = this.value.match( /(?: |^|"|\+|-)([a-z0-9öäüß]+)$/i ); // letztes wort
				if ( word ) {
					
					search_block_flag = true;
					seach_httprequest = $.ajax({
						type: 'GET',
						url: '/gateway/',
						data: 'template=plain&get_search_words='+ word[1],
						success: function( data ){
							if ( search_block_flag != true ) return; // wurde bereits abgebrochen!
							$( '#suggest' ).remove();
							if ( data.length < 5 ) {
								suggest_stop();
								return;
							}
							$( '#search' ).append( '<div id="suggest"></div>' );
							$( '#suggest' ).html( data );
							$( '#suggest a' ).click( suggest );
						}
					});
				}
			}
	});
	
	//$('#sidebar .button').hide();
}




var the_popup = false;
///////////////////////////////////////////////////////////////////////////////
function popup( URL, name, width, height ) {

    xPos = (screen.width  / 2) - (width  / 2);
		yPos = (screen.height / 2) - (height / 2);
		var options = "toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1";
    if( the_popup != false ) the_popup.close();
		the_popup = window.open( URL, name, options + ',width=' + width + ',height=' + height + ", left=" + xPos + ", top=" + yPos );
}