
function onFocusSearch(element) {
  if (element.value == element.defaultValue) element.value = '';
}

function initStartPage() {
    $.tiles.initTiles(true);
    $.tiles.initNewsImageTiles();
    $.tiles.initNewsLinks();

}

function initPage(cPathIDs) {
  // Aktive MenuItems hervorheben
  var prefixItem = '#MP';
  for (var i=0; i<cPathIDs.length; i++) {
	  var item = prefixItem + cPathIDs[i];
	  $(item).toggleClass('inPath');
  }

  $.tiles.initTiles(false);
  $.require('Additor/3rdParty/jquery.lightbox.min.js');
  //$('a.lightbox').lightBox();

	$(function() {
		$('a.lightbox').lightBox({
			imageLoading: '/Additor/3rdParty/jquery-ui/images/lightbox-ico-loading.gif',
			imageBtnClose: '/Additor/3rdParty/jquery-ui/images/lightbox-btn-close.gif',
			imageBtnPrev: '/Additor/3rdParty/jquery-ui/images/lightbox-btn-prev.gif',
			imageBtnNext: '/Additor/3rdParty/jquery-ui/images/lightbox-btn-next.gif',
			imageBlank: '/Additor/3rdParty/jquery-ui/images/lightbox-blank.gif'
		});
	});
}

var bEntryNewsAnimate = false;

$.tiles = new function() {

  // Detays (ms)
  this.nTileTime = 20;
  this.nImageTime = 15000;
  this.nImageTimeStartPage = 1500;
  this.nImageTimeStartPageMax = 15000;
  this.nImageTimeStartPageIncreasing = 1000;

  // Wahrscheinlichkeiten [0.0 .. 1.0]
  this.nRenderBackwardsProbability = 0.3;
  this.nRenderBreakProbability = 0.1;
  this.nRenderBlankTileProbabilty = 0.3;


  this.aImageUrls = new Array(); // Array der Urls der Bilder
  this.aImageIDs = new Array(); // Array der Indizes aus aImageUrls, die noch nicht gezeigt wurden
  this.nImage = 0; // Aktuelles Bild: Index in aImageUrls

  this.aTiles = new Array();
  this.nTile = 0;
  this.bRenderDirectionForward = true;

  this.aNewsTiles = new Array();

  this.nRows = 5;
  this.nCols = 8;
  this.nTileSize = 101;
  this.nMargin = 19;
  this.nBgImageWidth = 951;
  this.bStartPage = false;
  this.oTimeout = null;

  this.initTiles = function (bStartPage) {
    if (bStartPage) this.nImageTime = this.nImageTimeStartPage;
    this.bStartPage = bStartPage;

    var el = $('div#bg-img');
    if (bStartPage) {
      this.createTilesInElement(el, 0, this.nCols-1);
    }
    else {
      this.createTilesInElement(el, 0, 1);
      el = $('div#bg-img-right');
      this.createTilesInElement (el, this.nCols-2, this.nCols-1);
    }

    this.loadImageUrls (!bStartPage);
  };

  this.loadImageUrls = function(bPatternOnly) {
    var self = this;
    var url = getRelativeWebRoot() + (bPatternOnly ? 'Pattern' : '') + 'TileUrls.txt';
    $.ajax ({
      type: 'GET',
      contentType: "text/txt",
      url: url,
      dataType: "text",
      success: function(text) {
        self.aImageUrls = text.split("\n");
    	  self.renderNextImage();
      },
      error: function() {
        // console.log ('Fehler beim Laden der URL ' + url);
      }
    });
  }

  this.createTilesInElement = function(el, nStartCol, nEndCol) {
    var nCountCols = nEndCol - nStartCol + 1;
    for (var n=0; n < this.nRows; n++) {
      var oRow = $('<div class="bg-row" id="bgRow'+n+'" style="width:'+(nCountCols*(this.nTileSize + this.nMargin))+'px;">');
      el.append(oRow);

      for (var i=nStartCol; i <= nEndCol; i++) {
        var cID = 'T'+n+'_'+i;
        var oTile = $('<div id="'+cID+'" class="bg-tile">');
        oTile.css('background-position', (i*-(this.nTileSize + this.nMargin))+'px '+(n*-(this.nTileSize + this.nMargin))+'px');
        oTile.css('opacity', '0.5');
        if (!this.bStartPage) oTile.css('background-color', 'transparent');
        oTile.appendTo(oRow);

        this.initTile(oTile);
        this.aTiles.push(oTile);
      }
    }
  };

  this.initTile = function (oTile) {
    oTile.setTileImage = function() {
      this.css('background-image', "url('" + $.tiles.getImageUrl() + "')");
    };

    oTile.removeTileImage = function() {
    	this.css('background-image', 'none');
    };

    oTile.showTile = function() {
      var self = this;
      this.fadeTo(200, 0, function () {
        self.setTileImage();
        self.fadeTo(300, 1);
      });
    };

    oTile.hideTile = function() {
      var self = this;
      this.fadeTo(200, 0, function () {
        self.removeTileImage();
        self.fadeTo(300, 0.5);
      });
    };

  };

  this.renderNextImage = function() {
    if (this.aImageIDs.length == 0) for (var i=0; i<this.aImageUrls.length; i++) this.aImageIDs.push(i);
    var n = Math.floor(Math.random() * this.aImageIDs.length);
    this.nImage = this.aImageIDs[n];
    this.aImageIDs.splice(n, 1);
    this.bRenderDirectionForward = !(Math.random() < this.nRenderBackwardsProbability);
    this.resetTilesIterator();

    var self = this;
    // console.debug('renderNextImage() preload ' + this.getImageUrl());
    var oImg = new Image();
    var onLoadImage = function() {
      if (oImg.complete || oImg.readyState == 'complete') {
        if (Math.random() < self.nRenderBreakProbability) {
          // console.debug('...loaded, after break render ' + self.getImageUrl());
          self.renderBreak();
        }
        else {
          // console.debug('...loaded, rendering ' + self.getImageUrl());
          self.renderNextTile();
        }
      }
      else {
        // console.debug('Could not load ' + $.tiles.getImageUrl());
        $.tiles.renderNextImage();
      }
    };
    $(oImg).bind ('load readystatechange', onLoadImage);
    oImg.src = this.getImageUrl();
  };

  this.onCompleteRenderNextImage = function() {
    if (this.bStartPage) this.nImageTime = Math.min(this.nImageTimeStartPageMax, this.nImageTime + this.nImageTimeStartPageIncreasing);
    clearTimeout(this.oTimeout);
    if (this.bStartPage) {
      this.hideImageInfo();
      this.renderImageInfo();
    }
    this.oTimeout = setTimeout('$.tiles.renderNextImage()', this.nImageTime);
  };


  this.renderNextTile = function() {
    clearTimeout (this.oTimeout);
    if (this.bRenderDirectionForward ? this.nTile < this.aTiles.length : this.nTile >= 0) {
      var oTile = this.aTiles[this.nTile];
      if (Math.random() < this.nRenderBlankTileProbabilty)
        oTile.hideTile();
      else
        oTile.showTile();

      this.nTile += (this.bRenderDirectionForward ? 1 : -1);
      this.oTimeout = setTimeout("$.tiles.renderNextTile()", this.nTileTime);
    }
    else
      this.onCompleteRenderNextImage();
  };

  this.renderBreak = function() {
    this.bRenderDirectionForward = false;
    this.resetTilesIterator();
    this.renderNextBreakTile();
  };

  this.onCompleteRenderBreak = function() {
    if (this.bStartPage) this.hideImageInfo();
    this.bRenderDirectionForward = true;
    this.resetTilesIterator();
    this.renderNextTile();
  };

  this.renderNextBreakTile = function() {
    clearTimeout (this.oTimeout);
    if (this.bRenderDirectionForward ? this.nTile < this.aTiles.length : this.nTile >= 0) {
      var oTile = this.aTiles[this.nTile];
      oTile.hideTile();

      this.nTile += (this.bRenderDirectionForward ? 1 : -1);
      this.oTimeout = setTimeout("$.tiles.renderNextBreakTile()", this.nTileTime);
    }
    else
      this.onCompleteRenderBreak();
  };

  this.renderImageInfo = function() {
    var cImageDescription = this.getImageInfo();
    if (cImageDescription) {
	  	$(cImageDescription).appendTo('#content-left');
    }
  };

  this.hideImageInfo = function() {
  	if ($('a.startscreen-link')) $('a.startscreen-link').remove();
  };

  this.resetTilesIterator = function() {
    this.nTile = (this.bRenderDirectionForward ? 0 : this.aTiles.length-1);
  };

  this.getImageUrl = function() {
    return (this.aImageUrls[this.nImage]);
  };

  this.getImageInfo = function() {
  	var url = this.getImageUrl();
  	var imgName = url.split('/');
  	imgName = imgName[imgName.length - 1]
		imgName = imgName.substring(0, imgName.lastIndexOf('.'));

  	if (imgName.charAt(0) == 'A') {
  		var tmp = imgName.split('_');
  		tmp.shift();
  		tmp = tmp.join(' ');
  		tmp = tmp.split('-');
  		var pageID = tmp.shift();
  		tmp = tmp.join('-');
  		tmp = tmp.split('++');
  		if (tmp.length < 2) tmp.push('');

  		var html = '<a href="/Page'+pageID+'.html" class="startscreen-link"><div><h3>' + tmp[0] + '</h3><p>' + tmp[1] + '</p></div></a>'
			return (html);
  	}
    else
  		return (false);
  };




  this.initNewsImageTiles = function() {
    var nNewsTiles = 5;
    $('div#news-img').append('<div id="news-bgimg"></div>');
    $('div#news-bgimg').css('opacity', '0.8');

    for (var n=0; n<this.nRows; n++) {
      var oRow = $('<div class="bg-row" id="bgRow'+n+'" style="width:'+(nNewsTiles*(this.nTileSize + this.nMargin))+'px;">');
      $('div#news-img').append(oRow);
      for (var i=0; i<nNewsTiles; i++) {
        var cID = 'N'+n+'_'+i;
        var oTile = $('<div id="'+cID+'" class="news-tile">');
        oTile.css('background-position', (i*-(this.nTileSize + this.nMargin))+'px '+(n*-(this.nTileSize + this.nMargin))+'px');
        oTile.appendTo(oRow);
        this.aNewsTiles.push(oTile);
      }
    }
    $('div#news-img').css('display', 'none');
  };



  this.initNewsLinks = function() {
    var cUrl = $('div.entryNews > div.entryImage img').attr('src');
    var descr = $('div.entryNews > div.entryText > p');
    descr.css('display', 'none');
    var self = this;

    $('div.entryNews').hover(
      function() {
        var src = $('img', $(this)).attr('src');
        if (src) {
          $.each(self.aNewsTiles, function(index, tile) {
            tile.css('background-image', 'url('+src+')');
          });
          $('div#news-bgimg').css('background-image', 'url('+src+')');
          $('div#news-img').css('display', 'block');
        }
        var p = $('p', $(this));
        p.slideDown(200);
      },
      function() {
        $('div#news-img').css('display', 'none');
        var p = $('p', $(this));
        p.slideUp(200);
      }
    );
  };


}




