var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

  var PagerWidget = Class.create( {
    _button_class: 'pager_button',
    _li_class: '',
    initialize: function( id, nr_buttons, options ) {

      this._id = id;
      this._active = null;
      this._nr_buttons = nr_buttons;
      this._buttons = [];
      

      // proccess options to override defaults
      for( option in options ) {
        this['_' + option] = options[option];
      }
      

      for( i=0; i <  nr_buttons; i++ ) {
        a = new Element( 'a', { id: 'b' + i, 'class': this._button_class, href: '#', onclick: 'return false;'  } ).update( i + 1 );

        a._page = i;
        Event.observe( a, 'click', this.onclick.bindAsEventListener(this) );
        Event.observe( a, 'focus', function() { this.blur() } );
        if( !i ) {
          a.addClassName( 'active' );
          this._active = a;
        }

        this._buttons[this._buttons.length] = a;
      }
  
    },
    onclick: function( e )
    {
      a = Event.element(e);
      if( a != this._active ) {
        this._active.removeClassName( 'active' );
        a.addClassName( 'active' );
        this._active = a;
        a.fire( "pager:changed", { active: a._page } );
      }
    }
    ,
    getPresentation: function() {
      ul = new Element( 'ul', { id: this._id } );
      for( i=0; i< this._nr_buttons; i++ ) {
        li = new Element( 'li', { 'class': this._li_class } ).update( this._buttons[i] );
        ul.appendChild( li );
      }
      return ul;
    }
  });



var Pages = Class.create( {
  _pages: null,
  _count: 0,
  
  initialize: function( container ) {
    this._pages = container.childElements();
    i = 0;
    this._pages.each( function( p ) {
      if( !i++ ) {
        this._active = p;
      } else {
        p.hide();
      }
    }.bind( this ) );

    this._count = i;
  },
  
  getCount: function() {
    return this._count;
  },
  
  show: function( page_nr ) {
    page = this._pages[page_nr - 1];
    if( page && this._active != page ) {
      this._active.hide();
      new Effect.Appear( page );
      this._active = page;
    }
  }
});    


  
           
var domload_actions = {
	'main_architektur': function () {
  	var pages = new Pages( $$('.pages')[0] );
  	var pager = new PagerWidget( 'pager', pages.getCount() );
  	$('text').insert( '<div id="pager_container"></div>' );  
  	$('pager_container').appendChild( pager.getPresentation() );

		document.observe("pager:changed", function(event) {
    	pages.show( event.memo.active + 1 );
  	} ); 
	},
	'main_lage': function() {
		$('closeup').hide();
		new Effect.Appear( 'closeup', { delay: 1 } );
		
		var i = 0;
		$$('.facts li').each( function( e ) { e.hide(); new Effect.Appear( e, { delay: ++i } ); } );
	},
	'main_ausstattung': function() {
		var i = 0;
		$$('.facts li').each( function( e ) { e.hide(); new Effect.Appear( e, { delay: ++i } ); } );
	}
}


document.observe( 'dom:loaded', function() {
	$$('.mailto').each( function(e ) {
		e.href = e.href.split( "#" ).join( '@' );
	});
	
	if( BrowserDetect.OS == "Mac" ) {
		document.body.setStyle( {fontSize: "12px" } );
	} 
	
	body_id = document.body.id;
	if( domload_actions[body_id] ) {
		domload_actions[body_id]();
	}

	$$('a').each( function( e ) {
		if( e.href.match(/\.(doc|pdf|xls|ppt|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)$/) ) {
			Event.observe( e, 'click', function(e) { pageTracker._trackPageview( this.href ); } );
		}
	} );
	
});

try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}

