/**
 * @author Birgit King
 */
//Vars, Fallback Werte
var debugMode = false; //auf false setzen, damit die js showAlert nicht als alerts ausgegeben werden
//START FLASH VARS
var swfUrl = "loader.swf";

var swfWidth = "960";
var swfHeight = "680";

var swfVersion = "9.0.0";

var swfFlashvars = {};

var swfParams = {};
swfParams.menu = false;
swfParams.quality = "autohigh";
swfParams.scale = "noscale";
swfParams.allowfullscreen = false;
swfParams.align = "middle";

var swfAttributes = {};
//END FLASH VARS

var bodyObj;
var bodyWidth;
var bodyHeight;

var resolutionOk = true;

var widthIsPercent = false;
var heightIsPercent = false;

var measureWidth = "px";
var measureHeight = "px";

var resizeMargin = 0;

var minWidth = 800 + "px";
var minHeight = 600 + "px";

var swfWidth = 800 + "px";
var swfHeight = 600 + "px";

var errorWidth = 100;
var errorHeight = 100;

var screenWidth = screen.availWidth;
var screenHeight = screen.availHeight;

var statistikErrorFlash;
var statistikErrorResolution;
//


function setMeasure(){

    if (swfWidth.indexOf("%") != -1) {
    
        measureWidth = "%";
        
    }
    
    if (swfHeight.indexOf("%") != -1) {
    
        measureHeight = "%";
        
    }
}


function setContentSize(){

    swfWidth = parseInt(swfWidth);
    swfHeight = parseInt(swfHeight);
    
    if (measureWidth == "%") {
    
        minWidth = parseInt(minWidth);
        
    }
    else {
    
        minWidth = parseInt(swfWidth);
        
    }
    
    if (measureHeight == "%") {
    
        minHeight = parseInt(minHeight);
        
    }
    else {
    
        minHeight = parseInt(swfHeight);
        
    }
}


function showAlert(){

    if (debugMode) {
    
        var alertString = "";
        
        for (var i = 0; i < showAlert.arguments.length; i++) {
        
            alertString += i + 1 + ". " + showAlert.arguments[i] + "\n";
            
        }
        
        alert(alertString);
        
    }
}


function init(){

    bodyObj = document.getElementsByTagName ? document.getElementsByTagName("body")[0] : document.body;
    bodyWidth = bodyObj.offsetWidth;
    bodyHeight = bodyObj.offsetHeight;
    
    var distanceObj = document.getElementById ? document.getElementById("hbDistanceError") : document.all.distance;
    var containerObj = document.getElementById ? document.getElementById("hbOuterContainer") : document.all.container;
    var swfContentObj = document.getElementById ? document.getElementById("swfContent") : document.all.swfContent;
    
    setMeasure();
    setContentSize();
    
    initOptionalFunctions();
    
    
    if (measureHeight == "%" && swfHeight == 100) {
    
        distanceObj.style.display = "none";
        
        
    }
    else {
    
        distanceObj.style.marginBottom = -Math.round(swfHeight / 2) + measureHeight;
        
    }
    
    containerObj.style.width = swfWidth + measureWidth;
    containerObj.style.height = swfHeight + measureHeight;
    
    containerObj.style.minWidth = minWidth + "px";
    containerObj.style.minHeight = minHeight + "px";
    
    swfobject.embedSWF(swfUrl, "swfContent", swfWidth + measureWidth, swfHeight + measureHeight, swfVersion, false, swfFlashvars, swfParams, swfAttributes);
    
    var errorFlashObj = document.getElementById ? document.getElementById("errorFlash") : document.all.errorFlash;
    if (errorFlashObj && errorFlashObj !== "undefinded") {
        errorFlashObj.style.display = "block";
        statistikTrackErrors();
    }
    
}


function checkScreenResolution(){

    var optimizedForResolution;
    
    if (minWidth > screenWidth || minHeight > screenHeight) {
    
        resolutionOk = false;
        
        if (minWidth > 1600 || minHeight > 1200) {
        
            optimizedForResolution = "1600 x 1200 ";
            
        }
        else 
            if (minWidth > 1200 || minHeight > 1024) {
            
                optimizedForResolution = "1200 x 1024 ";
                
            }
            else 
                if (minWidth > 1024 || minHeight > 768) {
                
                    optimizedForResolution = "1024 x 768 ";
                    
                }
                else 
                    if (minWidth > 800 || minHeight > 600) {
                    
                        optimizedForResolution = "800 x 600 ";
                        
                    }
        
        var errorResolutionObj = document.getElementById ? document.getElementById("error") : document.all.error;
        var spanObj = document.getElementsByTagName ? document.getElementsByTagName("span") : document.all.span;
        var swfContent = document.getElementById ? document.getElementById("swfContent") : document.all.swfContent;
        
        for (i = 0; i < spanObj.length; i++) {
        
            if (spanObj[i].className == "resolution") {
            
                spanObj[i].innerHTML = optimizedForResolution;
                
            }
        }
        
        errorResolutionObj.style.display = "block";
        swfContent.innerHTML = "";
        //showAlert("func: checkScreenResolution", "resolution is not ok", minWidth, minHeight);
    
    }
    else {
    
        //showAlert("func: checkScreenResolution", "resolution is ok", minWidth, minHeight);
    
    }
}


function enlargeToFullscreen(){

    if (resolutionOk == true) {
    
        var browserFullscreenWidth;
        var browserFullscreenHeight;
        
        showAlert("screen: ", screenWidth, screenHeight);
        showAlert("body: ", bodyWidth, bodyHeight);
        
        if (screenWidth > bodyWidth || screenHeight > bodyHeight) {
        
            browserFullscreenWidth = screenWidth;
            browserFullscreenHeight = screenHeight;
            
            showAlert("func: enlargeToFullscreen", "enlarged to fullscreen", browserFullscreenWidth, browserFullscreenHeight);
            
            window.moveTo(0, 0);
            window.resizeTo(browserFullscreenWidth, browserFullscreenHeight);
            
        }
        else {
        
            showAlert("func: enlargeToFullscreen", "is already fullscreen");
            
        }
    }
}


function enlargeToFit(){

    if (resolutionOk == true) {
    
        var resizeWidth;
        var resizeHeight;
        
        if (minWidth > bodyWidth || minHeight > bodyHeight) {
        
            resizeWidth = -bodyWidth + minWidth;
            resizeHeight = -bodyHeight + minHeight;
            
            window.resizeBy(resizeWidth, resizeHeight);
            
            if (minWidth != bodyObj.offsetWidth || minHeight != bodyObj.offsetHeight) {
                //2.durchlauf, wg scrollbarproblematik > browserfenster passt noch nicht ganz :-(
                resizeWidth = -bodyObj.offsetWidth + minWidth;
                resizeHeight = -bodyObj.offsetHeight + minHeight;
                
                window.resizeBy(resizeWidth, resizeHeight);
            }
            window.moveTo(Math.round((screenWidth - minWidth) / 2), 0);
            
            // needed um doppelte Scrollbars in IE6/7 zu vermeiden:
            bodyObj.style.width = minWidth;
            bodyObj.style.height = minHeight;
            
            showAlert("func: enlargeToFit", "resized", resizeWidth, resizeHeight);
            
        }
        else {
        
            showAlert("func: enlargeToFit", "large enough");
            
        }
    }
}


function resizeToFit(){

    if (resolutionOk == true) {
    
        var resizeWidth;
        var resizeHeight;
        
        if (minWidth != bodyWidth || minHeight != bodyHeight) {
        
            resizeWidth = -bodyWidth + minWidth;
            resizeHeight = -bodyHeight + minHeight;
            
            window.resizeBy(resizeWidth, resizeHeight);
            
            if (minWidth != bodyObj.offsetWidth || minHeight != bodyObj.offsetHeight) {
                //2.durchlauf, wg scrollbarproblematik > browserfenster passt noch nicht ganz :-(
                resizeWidth = -bodyObj.offsetWidth + minWidth;
                resizeHeight = -bodyObj.offsetHeight + minHeight;
                window.resizeBy(resizeWidth, resizeHeight);
            }
            
            window.moveTo(Math.round((screenWidth - minWidth) / 2), 0);
            
            // needed um doppelte Scrollbars in IE6/7 zu vermeiden:
            bodyObj.style.width = minWidth;
            bodyObj.style.height = minHeight;
            
            showAlert("func: resizeToFit", "resized", resizeWidth, resizeHeight);
            
        }
        else {
        
            showAlert("func: resizeToFit", "right Size");
            
        }
    }
    
}


function openPopupWindow(targetUrl, name, width, height, positionX, positionY){

    var popLocation = "no";
    var popMenubar = "no";
    var popScrollbars = "yes";
    var popStatus = "no";
    var popToolbar = "no";
    var popResize = "no";
    
    openWindow(targetUrl, name, width, height, positionX, positionY, popLocation, popMenubar, popScrollbars, popStatus, popToolbar, popResize);
    
}


function openBrowserWindow(targetUrl, name, width, height, positionX, positionY){

    var popLocation = "yes";
    var popMenubar = "yes";
    var popScrollbars = "yes";
    var popStatus = "yes";
    var popToolbar = "yes";
    var popResize = "yes";
    
    openWindow(targetUrl, name, width, height, positionX, positionY, popLocation, popMenubar, popScrollbars, popStatus, popToolbar, popResize);
    
}


function openWindow(targetUrl, name, width, height, positionX, positionY, location, menubar, scrollbars, status, toolbar, resize){

    //Vars, Fallback Werte
    var popTargetUrl = "index.html";
    var popName = "popupWindow";
    
    var popWidth = "fullscreen";
    var popHeight = "fullscreen";
    
    var popPositionX = "center";
    var popPositionY = "center";
    
    var popLocation = "yes";
    var popMenubar = "yes";
    var popScrollbars = "yes";
    var popStatus = "yes";
    var popToolbar = "yes";
    var popResize = "yes";
    //
    
    if (targetUrl != null && targetUrl != undefined) {
    
        popTargetUrl = targetUrl;
        
    }
    
    if (name != null && name != undefined) {
    
        popName = name;
        
    }
    
    switch (width) {
    
        case null:
        case undefined:
            break;
            
        case "fullscreen":
            popWidth = screenWidth;
            break;
            
        default:
            popWidth = width;
            break;
            
    }
    
    switch (height) {
    
        case null:
        case undefined:
            break;
            
        case "fullscreen":
            popHeight = screenHeight;
            break;
            
        default:
            popHeight = height;
            break;
            
    }
    
    switch (positionX) {
    
        case null:
        case undefined:
        case "center":
            popPositionX = (screenWidth - popWidth) / 2;
            break;
            
        case "left":
            popPositionX = 0;
            break;
            
        case "right":
            popPositionX = screenWidth - popWidth;
            break;
            
        default:
            popPositionX = parseInt(positionX);
            break;
            
    }
    
    switch (positionY) {
    
        case null:
        case undefined:
        case "center":
            popPositionY = (screenHeight - popHeight) / 2;
            break;
            
        case "top":
            popPositionY = 0;
            break;
            
        case "bottom":
            popPositionY = screenHeight - popHeight;
            break;
            
        default:
            popPositionY = parseInt(positionY);
            break;
            
    }
    
    
    if (menubar != null && menubar != undefined) {
    
        popMenubar = menubar;
        
    }
    
    if (scrollbars != null && scrollbars != undefined) {
    
        popScrollbars = scrollbars;
        
    }
    
    if (status != null && status != undefined) {
    
        popStatus = status;
        
    }
    
    if (toolbar != null && toolbar != undefined) {
    
        popToolbar = toolbar;
        
    }
    
    if (resize != null && resize != undefined) {
    
        popResize = resize;
        
    }
    
    var popProperties;
    popProperties = "width=" + popWidth + ",height=" + popHeight;
    popProperties += ",left=" + popPositionX + ",top=" + popPositionY;
    popProperties += ",location=" + popLocation + ",menubar=" + popMenubar + ",scrollbars=" + popScrollbars + ",status=" + popStatus + ",toolbar=" + popToolbar + ",resize=" + popResize;
    
    var popupWin = window.open(popTargetUrl, popName, popProperties);
}


function statistikTrackErrors(){
    //Statistik Error Verpixelung Flash
    if (document.getElementById ? document.getElementById("hbNoFlash") : document.all.hbNoFlash) {
        if (document.getElementById ? document.getElementById("noFlashImg") : document.all.noFlashImg) {
            var noFlashImg = document.getElementById ? document.getElementById("noFlashImg") : document.all.noFlashImg;
            noFlashImg.innerHTML = statistikErrorFlash;
        }
    }
    //Statistik Error Verpixelung Aufl�sung
    /*

     var errorResolutionObj = document.getElementById? document.getElementById("error") : document.all.errorResolution;
      
     if(errorResolutionObj.style.display == "block"){

     if(document.getElementById? document.getElementById("noResolutionImg") : document.all.noResolutionImg){

     var noResolutionImg = document.getElementById? document.getElementById("noResolutionImg") : document.all.noResolutionImg;
 
     noResolutionImg.innerHTML = statistikErrorResolution;

     }
    
     }
    
     */
    
}

/*

 known issues:

 - kein Scroller bei IE6 und Größe in %

 - kein enlargeToFullscreen bei SeaMonkey, Opera und Chrome

 - kein enlargeToFit bei SeaMonkey, Opera und Chrome

 - kein resizeToFit bei SeaMonkey, Opera und Chrome

 */

