/**
 * @author Bastian Jansen
 *
 * (C) Bastian Jansen, scaleweb.de
 */
var loadName = '';
var loadPanel = -1;
var loadBG = '';
var loadHeight = 0;
var loadSubPath = '';
var loadFrag = '';

var mEffectInProgress = false;
var oldHeight = 0;

var prePanel = -1;
var preFrag = '';
var preBG = '';
var preName = '';
var preHeight = 0;
var preSubPath = '';

var fadeTO = 90;
var fadeFROM = 0;
var slideIN_DURATION = 600;
var slideOUT_DURATION = 500;
var fadeIN_DURATION = 90;
var fadeOUT_DURATION = 500;
var confadeTO = 80;

var gSlideShowOn = true;

var currentHeight_Panle0 = globalHeight_Panle0;
var currentHeight_Panle1 = globalHeight_Panle1;
var currentHeight_Panle2 = globalHeight_Panle2;

function conObserver(notificationType, notifier, data){
    if (notificationType == "onPostUpdate") {
        if (data.content) {
            var sfrom = 0;
            
            var effect = new FadeSlidePanel('panel_' + loadPanel, {
                sto: loadHeight,
                sfrom: sfrom,
                to: fadeTO,
                from: fadeFROM,
                duration: fadeIN_DURATION,
                sduration: slideIN_DURATION,
                horizontal: false,
                finish: function(){
                    mEffectInProgress = false;
                    initSubXML(loadFrag, loadHeight);
                    initScroll();
                    oldHeight = loadHeight;
                    if (loadPanel == 0) {
                        currentHeight_Panle0 = loadHeight;
                    }
                    if (loadPanel == 1) {
                        currentHeight_Panle1 = loadHeight;
                    }
                    visiblePanels[loadPanel] = 1;
                    if (prePanel >= 0) {
                        var pa = prePanel;
                        var fr = preFrag;
                        var b = preBG;
                        var n = preName;
                        var h = preHeight;
                        var s = preSubPath;
                        prePanel = -1;
                        loadContent(fr, pa, b, n, h, s);
                    }
                }
            });
            effect.start();
            
        }
        else {
            alert("Dokument konnte nicht gefunden werden!");
            mEffectInProgress = false;
            loadPanel = -1;
        }
    }
    if (notificationType == "onLoadError") {
        alert("Dokument konnte nicht gefunden werden!");
        mEffectInProgress = false;
        loadPanel = -1;
    }
};

function conConObserver(notificationType, notifier, data){
    if (notificationType == "onPostUpdate") {
        if (data.content) {
            if (loadHeight != oldHeight) {
                var effect = new FadeGrowPanel('panel_' + loadPanel, {
                    to: fadeTO,
                    from: confadeTO,
                    gto: loadHeight,
                    gfrom: oldHeight,
                    duration: fadeOUT_DURATION,
                    finish: function(){
                        mEffectInProgress = false;
                        initSubXML(loadFrag, loadHeight);
                        initScroll();
                        oldHeight = loadHeight;
                        if (loadPanel == 0) {
                            currentHeight_Panle0 = loadHeight;
                        }
                        if (loadPanel == 1) {
                            currentHeight_Panle1 = loadHeight;
                        }
                        if (prePanel >= 0) {
                            var pa = prePanel;
                            var fr = preFrag;
                            var b = preBG;
                            var n = preName;
                            var h = preHeight;
                            var s = preSubPath;
                            prePanel = -1;
                            loadContent(fr, pa, b, n, h, s);
                        }
                    }
                });
                effect.start();
            }
            else {
                var effect = new Spry.Effect.Fade('panel_' + loadPanel, {
                    to: fadeTO,
                    from: confadeTO,
                    duration: fadeOUT_DURATION,
                    finish: function(){
                        mEffectInProgress = false;
                        initSubXML(loadFrag, loadHeight);
                        initScroll();
                        if (prePanel >= 0) {
                            var pa = prePanel;
                            var fr = preFrag;
                            var b = preBG;
                            var n = preName;
                            var h = preHeight;
                            var s = preSubPath;
                            prePanel = -1;
                            loadContent(fr, pa, b, n, h, s);
                        }
                    }
                });
                effect.start();
            }
        }
        else {
            alert("Dokument konnte nicht gefunden werden!");
            mEffectInProgress = false;
            loadPanel = -1;
        }
    }
    if (notificationType == "onLoadError") {
        alert("Dokument konnte nicht gefunden werden!");
        mEffectInProgress = false;
        loadPanel = -1;
    }
};

function loadContent(frag, panel, bg_pic, name, inheight, subpath){
    window.clearInterval(aktiv);
    link = '';
    var height = 0;
    if (gEffectInProgress != null) {
        return;
    }
    
    if (inheight == null || typeof inheight == 'undefined' || inheight == '') {
        if (panel == 0) {
            height = globalHeight_Panle0;
        }
        if (panel == 1) {
            height = globalHeight_Panle1;
        }
    }
    else {
        height = inheight;
    }
    
    if (mEffectInProgress) {
        prePanel = panel;
        preFrag = frag;
        preBG = bg_pic;
        preName = name;
        preHeight = height;
        preSubPath = subpath;
        return;
    }
    
    if (lEffectInProgress) {
        var firstMatchingRow = menu_two.findRowsWithColumnValues({
            name: loadName,
            type: name
        }, true);
        return;
    }
    
    if (loadName == name) {
        if (frag.indexOf("start") >= 0) {
            return;
        }
        var highlight = new Spry.Effect.Highlight('panel_' + panel, {
            duration: 200,
            from: '#FFFFFF',
            to: '#87A7D6',
            restoreColor: '#FFFFFF',
            toggle: true
        });
        highlight.start();
        return;
    }
    
    if (panel == 0) {
        oldHeight = currentHeight_Panle0;
    }
    if (panel == 1) {
        oldHeight = currentHeight_Panle1;
    }
    loadHeight = height;
    
    if (panel == loadPanel) {
        mEffectInProgress = true;
        loadBG = bg_pic;
        loadPanel = panel;
        loadName = name;
        loadFrag = frag;
        loadSubPath = subpath;
        
        if (visiblePanels[0] == 1 && visiblePanels[1] == 1) {
            var out = new FadeSlide('panel_1', {
                sto: 0,
                sfrom: currentHeight_Panle1,
                to: fadeFROM,
                from: fadeTO,
                duration: fadeOUT_DURATION,
                horizontal: false,
                finish: function(){
                    visiblePanels[1] = 0;
                }
            });
            out.start();
        }
        
        
        var effect = new Spry.Effect.Fade('panel_' + loadPanel, {
            to: confadeTO,
            from: fadeTO,
            duration: fadeIN_DURATION,
            finish: function(){
                document.getElementById('panel_1').style.backgroundColor = 'white';
                var tmp = new Spry.Widget.HTMLPanel('panel_' + loadPanel, {
                    evalScripts: true
                });
                tmp.addObserver(conConObserver);
                tmp.loadContent('data/xml/panels/' + frag);
            }
        });
        effect.start();
        return;
    }
    
    mEffectInProgress = true;
    loadBG = bg_pic;
    loadPanel = panel;
    loadName = name;
    loadFrag = frag;
    loadSubPath = subpath;
    
    var effect = new FadeOutContent({
        to: fadeFROM,
        from: fadeTO,
        duration: fadeOUT_DURATION,
        sduration: slideOUT_DURATION,
        horizontal: false,
        bg_name: bg_pic,
        finish: function(){
            document.getElementById('panel_1').style.backgroundColor = 'white';
            var tmp = new Spry.Widget.HTMLPanel('panel_' + loadPanel, {
                evalScripts: true
            });
            tmp.addObserver(conObserver);
            tmp.loadContent('data/xml/panels/' + frag);
        }
    });
    effect.start();
};

function initSubXML(frag, inheight){
    if (frag.indexOf("submenu") >= 0 || frag.indexOf("vCard") >= 0 || frag.indexOf("pCard") >= 0 || frag.indexOf("gallerie") >= 0) {
        subdata.setURL('data/xml/panels/' + loadSubPath);
        subdata.addObserver(loadObserver);
        
        submenu.setURL('data/xml/panels/' + loadSubPath);
        submenu.addObserver(loadObserver);
        
        subdata.loadData();
        submenu.loadData();
        
        Spry.Data.initRegions(document.getElementById("subd"));
        Spry.Data.initRegions(document.getElementById("subm"));
        
        Spry.Data.updateRegion(document.getElementById("subd"));
        Spry.Data.updateRegion(document.getElementById("subm"));
        
        document.getElementById("subContainer").style.height = loadHeight + 'px';
        
        return;
    }
};

function loadObserver(notificationType, notifier, data){

    if (notificationType == "onPostLoad" || notificationType == "onDataChanged") {
    }
};

function picLoad(moveBack){
    var rows = submenu.getData();
    var curRow = submenu.getCurrentRow();
    if (rows.length < 1) 
        return;
    for (var i = 0; i < rows.length; i++) {
        if (rows[i] == curRow) {
            if (moveBack) 
                --i;
            else 
                ++i;
            break;
        }
    }
    
    if (!moveBack && i >= rows.length) 
        i = 0;
    else 
        if (moveBack && i < 0) 
            i = rows.length - 1;
    
    curRow = rows[i];
    submenu.setCurrentRow(curRow["ds_RowID"]);
    var tmpRow = submenu.getCurrentRow();
    loadLink(tmpRow["frag"], tmpRow["height"]);
};

function loadNextPic(){
    picLoad(false);
};

function loadPrevPic(){
    picLoad(true);
    
};
var aktiv = null;

function initGallerie(){
	if (aktiv == null) {
		aktiv = window.setInterval("picLoad(false)", 10000);
	}
	window.setTimeout("picLoad(false)", 1000);
}

function loadPlayPic(){
    gSlideShowOn = true;
    var playLabel = document.getElementById("playLabel");
    if (playLabel) 
        playLabel.firstChild.data = "||";
    initGallerie();
    
};
function loadPausePic(){
    gSlideShowOn = false;
    var playLabel = document.getElementById("playLabel");
    if (playLabel) 
        playLabel.firstChild.data = ">";
    if (aktiv != null) {
        window.clearInterval(aktiv);
    }
};

