//$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/apps/igeoportal-standard/branches/2.5_testing/customtabswitch.js $
/*----------------------------------------------------------------------------
 This file is part of deegree, http://deegree.org/
 Copyright (C) 2001-2009 by:
 - Department of Geography, University of Bonn -
 and
 - lat/lon GmbH -

 This library is free software; you can redistribute it and/or modify it under
 the terms of the GNU Lesser General Public License as published by the Free
 Software Foundation; either version 2.1 of the License, or (at your option)
 any later version.
 This library is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 details.
 You should have received a copy of the GNU Lesser General Public License
 along with this library; if not, write to the Free Software Foundation, Inc.,
 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

 Contact information:

 lat/lon GmbH
 Aennchenstr. 19, 53177 Bonn
 Germany
 http://lat-lon.de/

 Department of Geography, University of Bonn
 Prof. Dr. Klaus Greve
 Postfach 1147, 53001 Bonn
 Germany
 http://www.geographie.uni-bonn.de/deegree/

 e-mail: info@deegree.org
----------------------------------------------------------------------------*/

function CustomTabSwitch( targetIFrame, sourceModules ) {
    // variable declaration
    this.targetIFrame = targetIFrame;
    this.targetDocument = null;
    this.sourceModules = new Array();
    this.selected = null;

    // init source modul map
    var tmp = sourceModules.split( ';' );
    for ( var i = 0; i < tmp.length; i++ ) {
        var tt = tmp[i].split('|');
        this.sourceModules.push( tt[1] );
        if ( i == 0 ) {
            this.selected = tt[1];
        }
    }

    // method declaration
    this.paint = paint;
    this.repaint = repaint;
    this.perform = perform;
    this.setSelected = setSelected;

    // method implementation
    function setSelected() {
        for ( var i = 0; i < this.sourceModules.length; i++ ) {
            if ( this.sourceModules[i] != this.selected ) {
                this.selected = this.sourceModules[i];
                break;
            }
        }
        //this.repaint();
        this.perform();
    }

    function paint( targetDocument, parentNode ) {
        this.targetDocument = targetDocument;
        this.perform();
    }

    function repaint() {}

    function perform() {
        // swap custom tab switch image
        var elem = this.targetDocument.getElementById( "tab_img" );
        if ( this.selected.indexOf( "legend" ) > -1 ) {
            elem.src = './images/legend_top_.gif';
        } else if ( this.selected.indexOf( "layer" ) > -1 ) {
            elem.src = './images/layer_top_.gif'
        } else {
            alert( "unsupported module: " + this.selected );
            return;
        }

        // swap iframe content
        for( var i = 0; i < this.sourceModules.length; i++ ) {
            removeNodeById( parent.document, "tmpFrame" + i )
        }
        for( var i = 0; i < this.sourceModules.length; i++ ) {
            if ( this.sourceModules[i] == this.selected ) {
                var iframe = parent.document.getElementById( this.targetIFrame );
                iframe.src = this.sourceModules[i];
            } else {
                var tmp = parent.document.createElement( "iframe" );
                var att = parent.document.createAttribute( "src" );
                att.nodeValue = this.sourceModules[i];
                tmp.setAttributeNode( att );
                att = parent.document.createAttribute( "width" );
                att.nodeValue = "0";
                tmp.setAttributeNode( att );
                att = parent.document.createAttribute( "height" );
                att.nodeValue = "0";
                tmp.setAttributeNode( att );
                att = parent.document.createAttribute( "id" );
                att.nodeValue = "tmpFrame" + i;
                tmp.setAttributeNode( att );
                att = parent.document.createAttribute( "frameborder" );
                att.nodeValue = "0";
                tmp.setAttributeNode( att );
                parent.document.getElementsByTagName( "BODY" )[0].appendChild( tmp );
            }
        }
    }
}
