window.addEvent('domready', domready);

function domready() {
    windowdomready = true;
    myObjects.body = $(document.body);
    
    myObjects.loadingUrl = null;
    myObjects.loadedUrls = new Object();
    myObjects.loadedTitlepictures = new Object();
    
    myObjects.pageId = $('page_id');
    pageId = myObjects.pageId.value;
    myObjects.pageLang = $('page_lang');
    pageLang = myObjects.pageLang.value;

    myObjects.page = $('page');
    myObjects.containerContent = $('container_content');
    myObjects.titlepictures = $('titlepictures');

//     initNavigation();
//     initOverlay();

    myObjects.pages = new Object();
    myObjects.pages[pageId] = new Object();
    myObjects.pages[pageId][pageLang] = new Object();
    myObjects.pages[pageId][pageLang].startpage = myObjects.body.id == 'startpage';
    //myObjects.pages[pageId][pageLang].navigationId = myObjects.navigation[pageLang].activeItem ? myObjects.navigation[pageLang].activeItem.id : '';
    myObjects.pages[pageId][pageLang].titlepicture = $('titlepicture_' + pageId + '_' + pageLang);
    if (myObjects.pages[pageId][pageLang].titlepicture){
        myObjects.loadedTitlepictures[myObjects.pages[pageId][pageLang].titlepicture.src] = myObjects.pages[pageId][pageLang].titlepicture;
    }
    myObjects.pages[pageId][pageLang].outercontent = $('outercontent_' + pageId + '_' + pageLang);
    myObjects.pages[pageId][pageLang].outercontent.Fx = new Fx.Slide(myObjects.pages[pageId][pageLang].outercontent, {duration:500, onComplete:changePageStep2});
    myObjects.pages[pageId][pageLang].innercontent = $('innercontent_' + pageId + '_' + pageLang);
    myObjects.pages[pageId][pageLang].galleryPictures = myObjects.pages[pageId][pageLang].innercontent.getElements('a.gallery_picture');
    
    var xmlUrl = location.href.replace('.html','.xhtml');
    myObjects.loadedUrls[xmlUrl] = new Object();
    myObjects.loadedUrls[xmlUrl].pageId = pageId;
    myObjects.loadedUrls[xmlUrl].pageLang = pageLang;
    
    myObjects.functions = $('functions');
    //myObjects.mp3PlayerMini = $('mp3PlayerMini');
    
    if (window.khtml){
        khtmlFix();
    }
    initGallery();
    window.addEvent('resize',windowresize);
}

function initNavigation(){
    myObjects.navigation = new Object();
    myObjects.navigation[pageLang] = $('navigation_' + pageLang);
    myObjects.navigation[pageLang].activeItem = myObjects.navigation[pageLang].getElement('li.active') || myObjects.navigation[pageLang].getElement('li.activenode');
    myObjects.navigation[pageLang].items = myObjects.navigation[pageLang].getElements('li');
    myObjects.navigation[pageLang].items.each(function(item){
        item.getElement('a').addEvent('click', function(e){
            var e = new Event(e).stop();
            loadPage(this.href);
        });
    });
}

function initOverlay() {
    myObjects.loadingOverlay = new Element('div', {'id':'loadingOverlay'}).injectInside(myObjects.page);
    myObjects.loadingOverlay.setHTML('<table><tr><td></td></tr></table>');
    myObjects.loadingOverlay.content = myObjects.loadingOverlay.getElement('td');
    myObjects.loadingOverlay.content.loadingImage = new Asset.image(myObjects.commonUrl + '/images/layout/icons/loading.gif', {'alt':getLangStr('loading')}).injectInside(myObjects.loadingOverlay.content);
    myObjects.loadingOverlay.content.stopLoading = new Element('a', {'href':'#', 'title':getLangStr('stopLoading'), 'id':'stopLoading'}).injectInside(myObjects.loadingOverlay.content);
    myObjects.loadingOverlay.content.stopLoading.setHTML(getLangStr('stopLoading'));
    myObjects.loadingOverlay.content.stopLoading.addEvent('click', stopLoadingPage);
    myObjects.loadingOverlay.setStyles({'opacity':0.5});
}

function loadPage(url){
    if (!myObjects.loadingUrl){
        var xmlUrl = url.replace('.html','.xhtml');
        myObjects.loadingUrl = xmlUrl;
        if (myObjects.loadedUrls[xmlUrl]){
            changePage();
        }else{
            myObjects.page.addClass('loading');
            myObjects.loadedUrls[xmlUrl] = new Object();
            myObjects.loadedUrls[xmlUrl].pageId = null;
            myObjects.loadedUrls[xmlUrl].pageLang = null;
            myObjects.loadedUrls[xmlUrl].ajax = new Ajax(xmlUrl, {method: 'get', onComplete: function(){ajaxComplete();}});
            myObjects.loadedUrls[xmlUrl].ajax.request();
        }
    }
}

function stopLoadingPage(e){
    new Event(e).stop();
}

function ajaxComplete() {
    var newPage = new Object();
    var xmlUrl = myObjects.loadingUrl;
    if (window.ie){
        var xmlObj = $('ieAjaxTemporaryContent');
        if (!xmlObj){
            xmlObj = new Element('div', {'id': 'ieAjaxTemporaryContent', 'styles':{'display':'none'}}).injectInside(myObjects.body);
        }
        xmlObj.innerHTML = myObjects.loadedUrls[xmlUrl].ajax.response.text.replace('id="id"', 'id="xhtml_id"').replace('id="lang"', 'id="xhtml_lang"').replace('id="startpage"', 'id="xhtml_startpage"').replace('id="navigationId"', 'id="xhtml_navigationId"').replace('id="titlepicture"', 'id="xhtml_titlepicture"').replace('id="navigation_eng"', 'id="xhtml_navigation_eng"').replace('id="navigation_ger"', 'id="xhtml_navigation_ger"').replace('id="outercontent', 'id="xhtml_outercontent');
        
        newPage.pageId = xmlObj.getElementById('xhtml_id').value;
        newPage.pageLang = xmlObj.getElementById('xhtml_lang').value;
        newPage.startpage = xmlObj.getElementById('xhtml_startpage').value;
        newPage.navigationId = xmlObj.getElementById('xhtml_navigationId').value;
        newPage.titlepicture = xmlObj.getElementById('xhtml_titlepicture').value;
        newPage.navigation = xmlObj.getElementById('xhtml_navigation_' + newPage.pageLang);
        newPage.outercontent = xmlObj.getElementById('xhtml_outercontent_' + newPage.pageId + '_' + newPage.pageLang);
    }else{
        var xmlObj = myObjects.loadedUrls[xmlUrl].ajax.response.xml;
        newPage.pageId = xmlObj.getElementById('id').value;
        newPage.pageLang = xmlObj.getElementById('lang').value;
        newPage.startpage = xmlObj.getElementById('startpage').value;
        newPage.navigationId = xmlObj.getElementById('navigationId').value;
        newPage.titlepicture = xmlObj.getElementById('titlepicture').value;
        newPage.navigation = xmlObj.getElementById('navigation_' + newPage.pageLang);
        newPage.outercontent = xmlObj.getElementById('outercontent_' + newPage.pageId + '_' + newPage.pageLang);
    }
    
    myObjects.pages[newPage.pageId] = new Object();
    myObjects.pages[newPage.pageId][newPage.pageLang] = new Object();
    newPage.obj = myObjects.pages[newPage.pageId][newPage.pageLang];
    
    newPage.obj.startpage = newPage.startpage == '1';
    newPage.obj.navigationId = 'navigation_' + newPage.pageLang + '_' + newPage.navigationId;
    
    if (newPage.titlepicture){
        if (myObjects.loadedTitlepictures[newPage.titlepicture]){
            newPage.obj.titlepicture = myObjects.loadedTitlepictures[newPage.titlepicture];
        }else{
            newPage.obj.titlepicture = new Asset.image(newPage.titlepicture, {'id':'titlepicture_' + newPage.pageId + '_' + newPage.pageLang, 'style': 'opacity:0; visibility:hidden;'}).injectInside(myObjects.titlepictures);
        }
    }else{
        newPage.obj.titlepicture = null;
    }
    
    
    
    if (window.khtml){
        newPage.obj.outercontent = new Element('div', {'id':newPage.outercontent.id, 'class':newPage.outercontent.className});
        newPage.obj.outercontent.setStyles({'visibility':'visible'});
        newPage.obj.outercontent.injectInside(myObjects.containerContent);
        newPage.obj.outercontent.setHTML(newPage.outercontent.innerHTML);
    }else{
        newPage.obj.outercontent = $(newPage.outercontent);
        newPage.obj.outercontent.setStyles({'visibility':'hidden'});
        newPage.obj.outercontent.injectInside(myObjects.containerContent);
    }
    newPage.obj.outercontent.Fx = new Fx.Slide(newPage.obj.outercontent, {duration:500, onComplete:changePageStep2});
    newPage.obj.outercontent.Fx.hide();
    newPage.obj.outercontent.setStyles({'visibility':'visible'});

    newPage.obj.innercontent = $('innercontent_' + newPage.pageId + '_' + newPage.pageLang);
    newPage.obj.galleryPictures = newPage.obj.innercontent.getElements('a.gallery_picture');

    if (window.ie){
        xmlObj.innerHTML = '';
    }
    
    myObjects.loadedUrls[xmlUrl].pageId = newPage.pageId;
    myObjects.loadedUrls[xmlUrl].pageLang = newPage.pageLang;
    
    myObjects.page.removeClass('loading');
    
    changePage();
    
}


function changePage() {
    var oldPage = new Object();
    oldPage.pageId = pageId;
    oldPage.pageLang = pageLang;
    oldPage.obj = myObjects.pages[oldPage.pageId][oldPage.pageLang];
    
    var xmlUrl = myObjects.loadingUrl;
    
    pageId = myObjects.loadedUrls[xmlUrl].pageId;
    pageLang = myObjects.loadedUrls[xmlUrl].pageLang;
    
    var newPage = new Object();
    newPage.obj = myObjects.pages[pageId][pageLang];
    if (newPage.obj.titlepicture){
        if (oldPage.obj.titlepicture){
            if (newPage.obj.titlepicture!=oldPage.obj.titlepicture){
                oldPage.obj.titlepicture.effects({duration:700}).start({'opacity':0});
            }
        }else{
            newPage.obj.titlepicture.effects({duration:700}).start({'opacity':1});
        }
    }
    
    oldPage.obj.outercontent.Fx.slideOut();
    
}

function changePageStep2() {
    var newPage = new Object();
    newPage.obj = myObjects.pages[pageId][pageLang];
    if (newPage.obj.outercontent.Fx.wrapper.offsetHeight==0){
        newPage.obj.titlepicture.effects({duration:700}).start({'opacity':1});
        newPage.obj.outercontent.Fx.slideIn();
        myObjects.loadingUrl = null;
    }
}


function windowresize(){
    if (myObjects.myGallery && myObjects.myGallery.loaded){
        myGallery.windowresize();
    }
}

function initSearch() {
    myObjects.search = new Object();
    
    myObjects.search.form = $('search');
    myObjects.search.input = $('searchfield');
    
    myObjects.search.form.onsubmit = searchSubmit;
    
    function searchSubmit(){
        myObjects.search.input.value = myObjects.search.input.value.trim();
        if (myObjects.search.input.value.length>0){
            return true;
        }
        myObjects.search.input.focus();
        return false;
    }
    
    myObjects.search.button = $$('form#search button');
    myObjects.search.button.addEvent('mouseenter', buttonEnter);
    myObjects.search.button.addEvent('focus', buttonEnter);
    myObjects.search.button.addEvent('mouseleave', buttonLeave);
    myObjects.search.button.addEvent('blur', buttonLeave);
    function buttonEnter() {
        myObjects.search.button.addClass('hover');
    }
    function buttonLeave() {
        myObjects.search.button.removeClass('hover');
    }
}

function khtmlFix() {
    //myObjects.search.input.style.height = '1.6em';
}
        
function initGallery() {
    if (myObjects.pages[pageId][pageLang].galleryPictures.length>0){
        if (!myObjects.galleryJS){
            myObjects.galleryJS = new Asset.javascript('/common/scripts/gallery.js', {id:'galleryJS'});
            myObjects.galleryCSS = new Asset.css('/common/css/gallery.css', {id:'galleryCSS'});
        }else{
            myObjects.myGallery.initPictures();
        }
    }
}
            
function getLangStr(key,lang) {
    if (!key){return '';}
    if (!lang){lang = pageLang;}
    returnvalue = '';
    if (myObjects.langStrings[key] && myObjects.langStrings[key][lang]){
        returnvalue = myObjects.langStrings[key][lang];
    }
    return returnvalue;
}

function hideSelectBoxes(){
    selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "hidden";}
}

function showSelectBoxes(){
    selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "visible";}
}
