﻿var app = {
      
    processObserver: null,
    scriptResize: false,
    oldWindowHeigh: null,
    currentWindowHeigh: 1,
      
    init: function(){
      
      var self = this;
      
      this.processObserver = new processObserver();
      
      jQuery(window).bind('resize', function(){
        self.setContainerHeight();
      });
      this.setContainerHeight();
      window.setTimeout(function(){ self.setContainerHeight(); }, 2000);
      window.setTimeout(function(){ self.setContainerHeight(); }, 4000);
      
      
    },
    setContainerHeight: function(){
        
        var self = this;
        this.processObserver.inProcess();
        
        this.processObserver.start( function(){ 
          
          var pageSize = self.getPageSize();
          self.currentWindowHeigh = pageSize[3];
           
          if (self.oldWindowHeigh != self.currentWindowHeigh) {
            
            jQuery('#positioner').css('height','100%');
            jQuery('#container').css('height','100%');
            pageSize = self.getPageSize();
            self.oldWindowHeigh = pageSize[3];
            jQuery('#container').css('height',pageSize[1]+'px');
            jQuery('#positioner').css('height',pageSize[1]+'px');
            
          } 
        
        }, 100);
    
    },
    getPageSize: function(){
        
        var xScroll, yScroll;
        
        if (window.innerHeight && window.scrollMaxY) {    
            xScroll = window.innerWidth + window.scrollMaxX;
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
        } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
        }
        
        var windowWidth, windowHeight;
        if (self.innerHeight) {    // all except Explorer
            windowWidth = self.innerWidth;
            windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
        } else if (document.body) { // other Explorers
            windowWidth = document.body.clientWidth;
            windowHeight = document.body.clientHeight;
        }    
        
        // for small pages with total height less then height of the viewport
        var pageHeight = null;
        if(yScroll < windowHeight){
            pageHeight = windowHeight;
        } else { 
            pageHeight = yScroll;
        }
    
        // for small pages with total width less then width of the viewport
        var pageWidth = null;
        if(xScroll < windowWidth){    
            pageWidth = windowWidth;
        } else {
            //Firefox - minus Scrollbalken, wenn Y-Scrolling vorhanden ist
            if (window.innerHeight && window.scrollMaxY) {    
              if (yScroll > windowHeight) xScroll = xScroll - 16;
            }        
            pageWidth = xScroll; 
        }
    
        var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); 
        return arrayPageSize;
    }    
};

function processObserver() {
    
    isStarted = false;
    processFlag = false;
    
    this.start = function(callback, interval){
      if (!isStarted) {
          isStarted = true;
          locator(callback, interval);
      }
      return false;
    };
    
    locator = function(callback, interval){
    
      if (processFlag == true) {
          processFlag = false;
          var _processObserver = this;
          window.setTimeout(function(){ _processObserver.locator(callback, interval) }, interval);
      } else {
          isStarted = false;
          callback.apply();
      }
      return false;
    
    };
    
    this.inProcess = function() {
        processFlag = true;
    }
    
};

$(document).ready(function(){ 
    app.init();
});
