dojo.require("dojo.window");
dojo.require("dojox.data.XmlStore");    

function loadEditor(pageID)
{
        var flashvars = {};
        var attributes = {};
        var params = {};

        var attributes = {};
        swfobject.embedSWF(
                "app/cms/swf/surfboard.editor.swf?myPageID="+pageID, 
                "editor", 
                "100%", 
                "2880px", 
                "9.0.0", 
                false, 
                flashvars, 
                params, 
                attributes
        );
}

function showlayersortorderpage (event,my_id) 
{

        mainDivX = parseInt(document.getElementById('content').style.left);
        mouseX = parseInt(event.clientX);
        newX = mouseX-mainDivX; 
        
        mainDivY = parseInt(document.getElementById('content').style.top);
        mouseY = parseInt(event.clientY);
        newY = mouseY-mainDivY; 
         
        document.getElementById('sortorderpage').style.visibility = 'visible';
        document.getElementById('sortorderpage').style.left = newX+"px";
        document.getElementById('sortorderpage').style.top = newY+"px";
        currentpage = my_id;
}

function showcheckinwindow (event,my_id) 
{

        mainDivX = parseInt(document.getElementById('content').style.left);
        mouseX = parseInt(event.clientX);
        newX = mouseX-mainDivX; 
        
        mainDivY = parseInt(document.getElementById('content').style.top);
        mouseY = parseInt(event.clientY);
        newY = mouseY-mainDivY; 
         
        document.getElementById('checkin').style.visibility = 'visible';
        document.getElementById('checkin').style.left = newX+"px";
        document.getElementById('checkin').style.top = newY+"px";
        currentpage = my_id;
}

function deletepage (my_page)
{
        if (confirm('Sind sie sicher?'))
        {
                window.location.href = '?action=special&function=SurfboardEditor::deletePage&param1='+my_page;
        }
}

function sortorderpage (my_direction) 
{
        window.location.href = '?action=special&function=SurfboardEditor::movePage&param1='+currentpage+'&param2='+my_direction;
}

function checkin (_value) {
        window.location.href = '?action=special&function=SurfboardEditor::checkInPage&param1='+currentpage+'&param2='+_value;    
}

function closeSortPopup()
{
        document.getElementById('sortorderpage').style.visibility = 'hidden';
}

function closeCheckinPopup()
{
        document.getElementById('checkin').style.visibility = 'hidden';
}

function in_array(item,arr) 
{
        for(p=0;p<arr.length;p++) 
        {
                if (item == arr[p]) return true;
        }
        return false;
}
    
function surfboardSetStretchElements()
{
        stretchElements = new Array();
        
        for (var i=0; i<surfboardSetStretchElements.arguments.length; i=i+3)
        {
                var id = surfboardSetStretchElements.arguments[i];
                var placing = surfboardSetStretchElements.arguments[i+1];   
                var margin = surfboardSetStretchElements.arguments[i+2];   
                
                stretchElements.push(new Array(id, placing, margin));
        }
}

function surfboardStretch()
{
        if(typeof stretchElements != "undefined") {
                for (var el in stretchElements) {
                
                        var nodeName = stretchElements[el][0];
                        var node = dojo.byId(nodeName);
                        var placing = stretchElements[el][1];
                        var margin = stretchElements[el][2]; 

                        var marginBox = dojo.marginBox(node);
                        var elTopPos = marginBox.t;
                        var elHeight = marginBox.h;
                        var elBottomPos = elTopPos + elHeight;

                        var contentMarginBox = dojo.marginBox(dojo.byId('content'));
                        var bottomTarget = contentMarginBox.h;

                        var newHeight = (bottomTarget - margin - elTopPos);
                        marginBox.h = newHeight;
                        dojo.marginBox(node,marginBox);
                        
                        dojo.query('#'+nodeName+' > div').forEach(function(node){
                                dojo.style(node,'height',newHeight+'px');
                        });
                        
                        dojo.query('#'+nodeName+' > img').forEach(function(node){
                                dojo.style(node,'height',newHeight+'px');
                        });
                }
        }
}

  
function surfboardUpdateHeights(_extop, _exheader, _excontent, _exfooter, _exbottom)
{
        var headerDiv = dojo.byId('header');
        var contentDiv = dojo.byId('content');
        var footerDiv = dojo.byId('footer');

        // check header size
        if (headerDiv)
        {
                var headerDefaultHeight = dojo.marginBox(headerDiv).h; 
                var headerHeight = headerDefaultHeight;
                
                if (dojo.style(headerDiv,"overflow") != 'hidden')
                {
                        dojo.query('#header div').forEach(function(headerNode){
                                var nodeBottomPos = dojo.marginBox(headerNode).t + dojo.marginBox(headerNode).h;
                                if (nodeBottomPos > headerHeight)
                                {
                                        headerHeight = nodeBottomPos;
                                }
                        });
                }
        }
        else
        {      
                var headerDefaultHeight = 0;      
                var headerHeight = 0;
        }
        
        
        // check content size
        var contentDefaultHeight = dojo.marginBox(contentDiv).h;  
        var contentHeight = contentDefaultHeight;
        
        if (dojo.style(contentDiv,"overflow") != 'hidden')
        {
                dojo.query('#content div').forEach(function(contentNode)
                {
                        var nodeBottomPos = dojo.marginBox(contentNode).t + dojo.marginBox(contentNode).h;
                        if (nodeBottomPos > contentHeight)
                        {
                                contentHeight = nodeBottomPos;
                        }
                });
        }
        
        
        // check footer size
        if (footerDiv)
        {
                dojo.style (footerDiv, 'display', 'block');
                var footerDefaultHeight = dojo.marginBox(footerDiv).h;  
                var footerHeight = footerDefaultHeight;
                
                if (dojo.style(footerDiv,"overflow") != 'hidden')
                {
                        dojo.query('#footer div').forEach(function(contentNode)
                        {

                                var nodeBottomPos = dojo.marginBox(contentNode).t + dojo.marginBox(contentNode).h;
                                if (nodeBottomPos > footerHeight)
                                {
                                
                                        footerHeight = nodeBottomPos;
                                }
                        });
                }
                
                
        }
        else
        {
                var footerHeight = 0;
                var footerDefaultHeight = 0;
        }
        

        if (headerDiv)
        {
                var newHeaderMarginBox = {t:0,h:headerHeight};
                dojo.marginBox(headerDiv, newHeaderMarginBox);
        }
        
        var newContentMarginBox = {t:headerHeight,h:contentHeight};
        dojo.marginBox(contentDiv, newContentMarginBox);
        
        if (footerDiv)
        {
                var newFooterMarginBox = {t:headerHeight+contentHeight,h:footerHeight};
                dojo.marginBox(footerDiv, newFooterMarginBox);
        }
        
        headerSize = headerHeight;
        contentSize = contentHeight;
        footerSize = footerHeight;

        exTop = _extop; 
        exHeader = _exheader;
        exContent = _excontent;
        exFooter = _exfooter;
        exBottom = _exbottom;

        dojo.connect("onresize", "surfboardResize");

        surfboardResize();
        
}


function surfboardResize()
{

        // calc percentages
        sumEx = exTop + exHeader + exContent + exFooter + exBottom;
        
        if (sumEx > 0)
        {
                
                facTop = exTop/sumEx;
                facHeader = exHeader/sumEx;    
                facContent = exContent/sumEx;    
                facFooter = exFooter/sumEx;    
                facBottom = exBottom/sumEx;    
                
        
                // check content size
                var headerDiv = dojo.byId('header');
                var contentDiv = dojo.byId('content');
                var footerDiv = dojo.byId('footer');
                var completeHeight = headerSize+contentSize+footerSize;

                // check viewport size
                var viewPortHeight = Number(dojo.window.getBox().h);
                
                // distribute spare place 
                if (viewPortHeight > completeHeight)
                {
                        var spareHeight = viewPortHeight - completeHeight;
                        var contentHeight = contentSize + Math.round(facContent*spareHeight);  
                        var headerHeight = headerSize + Math.round(facHeader*spareHeight); 
                        var footerHeight = footerSize + Math.round(facFooter*spareHeight);  
                        var topPos = Math.round(facTop*spareHeight);   
                }
                else
                {
                        var headerHeight = headerSize;
                        var contentHeight = contentSize;
                        var footerHeight = footerSize;
                        var topPos = 0;
                }
                
                // set new positions
                if (headerDiv)
                {
                        var newHeaderMarginBox = {t:topPos,h:headerHeight};
                        dojo.marginBox(headerDiv, newHeaderMarginBox);
                }
                
                var newContentMarginBox = {t:topPos+headerHeight,h:contentHeight};
                dojo.marginBox(contentDiv, newContentMarginBox);
                
                if (footerDiv)
                {
                        var footerTop = topPos+headerHeight+contentHeight;
                        var newFooterMarginBox = {t:footerTop,h:footerHeight};
                        dojo.marginBox(footerDiv, newFooterMarginBox);
                }
                
        }  
        
        surfboardStretch();  
}

function cabinetChange(node, srcFile)
{
        
        cabinetNode = dojo.byId(node);
        imgInfo = dojo.position(cabinetNode, true);
        imgBox = dojo.marginBox(cabinetNode);
        contentNodeInfo = dojo.position(dojo.byId('content'), true);  
        
        className = dojo.attr(cabinetNode,'class');
        zIndex = parseInt(dojo.style(cabinetNode.parentNode,'zIndex')) + 1;
        
        xPos = imgInfo.x-contentNodeInfo.x;
        yPos = imgInfo.y-contentNodeInfo.y; 
        
        imgWidth = imgBox.w;
        imgHeight = imgBox.h;

        imgSrc = srcFile;

        blendImgNode = dojo.create('img', {src: imgSrc}, dojo.byId('content'));
        
        dojo.attr (blendImgNode, 'id', 'blendimg'); 
        dojo.attr (blendImgNode, 'class', className); 
        
        dojo.style (blendImgNode, 'opacity', 0);   
        dojo.style (blendImgNode, 'position', 'absolute');
        dojo.style (blendImgNode, 'left', xPos+'px');
        dojo.style (blendImgNode, 'top', yPos+'px'); 
        dojo.style (blendImgNode, 'zIndex', zIndex);  
        dojo.marginBox(blendImgNode,{w:imgWidth,h:imgHeight});  
           
        
        var fadeArgs = {
                node: blendImgNode,
                duration: 250,
                onEnd: function(){
                        dojo.attr(dojo.byId(cabinetNode),'src',srcFile); 
                        dojo.destroy('blendimg');                            
                }
        };
        dojo.fadeIn(fadeArgs).play();
       
}



function initSlideShow(name, url, folder, duration) {

        slideImages = new Array();
        imageCounter = 0;
        imageStep = 1;
        imageDuration = duration*1000; 
        imageNodeName = name;
        
        var imageStore = new dojox.data.XmlStore({url: url+"&folder="+folder, rootItem: "image"});
        var gotImages = function(items, request){
                for (var i = 0; i < items.length; i++){
                        var item = items[i];
                        var fileName = imageStore.getValue(item, "filename");        
                        var newImage = new Image();
                        newImage.src = folder+"/"+fileName;
                        slideImages[imageCounter] = newImage; 
                        imageCounter++;   
                }
                setTimeout("stepSlideShow()",imageDuration);
                
        };
        var request = imageStore.fetch({query:{}, onComplete: gotImages});
       
}

function stepSlideShow () {
        

        if (dojo.byId ('blendimg'))
        {
                dojo.destroy('blendimg'); 
        }
        
        imgNode = dojo.byId(imageNodeName);  
        imgInfo = dojo.position(imgNode, true);
        imgBox = dojo.marginBox(imgNode);
        contentNodeInfo = dojo.position(dojo.byId('content'), true);  
        
        className = dojo.attr(imgNode,'class');
        zIndex = parseInt(dojo.style(imgNode.parentNode,'zIndex')) + 1;
        
        xPos = imgInfo.x-contentNodeInfo.x;
        yPos = imgInfo.y-contentNodeInfo.y; 
        
        imgWidth = imgBox.w;
        imgHeight = imgBox.h;

        imgSrc = slideImages[imageStep].src;

        blendImgNode = dojo.create('img', {src: imgSrc}, dojo.byId('content'));
        
        dojo.attr (blendImgNode, 'id', 'blendimg'); 
        dojo.attr (blendImgNode, 'class', className); 
        
        dojo.style (blendImgNode, 'opacity', 0);   
        dojo.style (blendImgNode, 'position', 'absolute');
        dojo.style (blendImgNode, 'left', xPos+'px');
        dojo.style (blendImgNode, 'top', yPos+'px'); 
        dojo.style (blendImgNode, 'zIndex', zIndex);  
        dojo.marginBox(blendImgNode,{w:imgWidth,h:imgHeight});  
        
         
        
        var fadeArgs = {
                node: blendImgNode,
                duration: 250,
                onEnd: function(){
                        dojo.attr(dojo.byId(imgNode),'src',slideImages[imageStep].src); 
                        if (imageStep < slideImages.length - 1) {
                                imageStep++;
                        } else {
                                imageStep=0;
                        }   
                        setTimeout("stepSlideShow()",imageDuration);                           
                }
        };
        dojo.fadeIn(fadeArgs).play();
}

function switchTableRow (tableID, rowID)
{       

        dojo.query('#'+tableID+' img').forEach(function(imgNode){  
                imgNodeName = dojo.attr(imgNode,'id'); 
                if (imgNodeName)
                {
                        if (imgNodeName.substr(0,4) == 'icon')
                        {
                                dojo.attr(imgNodeName,'src','app/cms/icon/16/closed.png');  
                        }
                }          
        });
        
        dojo.query('#'+tableID+' tr').forEach(function(trNode){
                trNodeName = dojo.attr(trNode,'id');
                if (trNodeName)
                {
                        if ((trNodeName.substr(0,3) == 'row') && (trNodeName != 'row'+rowID))
                        {                      
                            dojo.style(trNode,'visibility','collapse');  
                        }
                }
        });

        dojo.style(dojo.byId('row'+rowID),'visibility','visible');                            
        dojo.attr(dojo.byId('icon'+rowID),'src','app/cms/icon/16/opened.png');
        
}

function surfboardOpenMenu(_pageID, _display) {

        nodeNameQuery = 'menu-p'+_pageID;
        
        dojo.query('a').forEach(function(_node){
                nodeName = _node.id;
                if (nodeName.substr(0,nodeNameQuery.length) == nodeNameQuery) {
                        dojo.style(_node, 'display', _display);
                }
        });
}

function loadGoogleMaps(_id,_lat,_lon,_zoom) {
        if (GBrowserIsCompatible()) {
                var map = new GMap2(dojo.byId(_id));
                var coord = new GLatLng(_lat, _lon);
                map.addControl(new GLargeMapControl());
                map.setCenter(coord, _zoom);
                var marker = new GMarker(coord);
                map.addOverlay(marker);
        }
}

function showsection(sectionname) {
        dojo.forEach(sections, function(entryname) {
                if (entryname == sectionname) {
                        dojo.style (dojo.byId(entryname), 'display', 'block');  
                } else {
                        dojo.style (dojo.byId(entryname), 'display', 'none');  
                }
        });
}
