
function organigramaPreResize (menus, params) {
    if (params.getParam('RelDiv')) {
		l = DynAPI.document.all[params.getParam('RelDiv')];
        l.updateValues();
	    params.setParam('startY', l.getY());
	    params.setParam('startX', l.getX());
	    params.setParam('scrollPosH', l.getHeight()-2);
	    params.setParam('scrollPosW', l.getWidth());
	    params.setParam('TOTHEIGHT', l.getHeight()-1);
	    params.setParam('TOTWIDTH', l.getWidth());
	}
}

function organigramaOnLoad (menus, params) {
	
	var startX = Number(params.getParam('startX'));
	var startY = Number(params.getParam('startY'));

    boton_up = params.getParam('SCRImage_boton_up') ? params.getParam('SCRImage_boton_up') : '/wms/img/scroll/boton_up.gif';
    boton_down = params.getParam('SCRImage_boton_down') ? params.getParam('SCRImage_boton_down') : '/wms/img/scroll/boton_down.gif';
    boton_left = params.getParam('SCRImage_boton_left') ? params.getParam('SCRImage_boton_left') : '/wms/img/scroll/boton_left.gif';
    boton_right = params.getParam('SCRImage_boton_right') ? params.getParam('SCRImage_boton_right') : '/wms/img/scroll/boton_right.gif';
    boton_desp_v = params.getParam('SCRImage_boton_desp_v') ? params.getParam('SCRImage_boton_desp_v') : '/wms/img/scroll/boton_desp_v.gif';
    fondo_v = params.getParam('SCRImage_fondo_v') ? params.getParam('SCRImage_fondo_v') : '/wms/img/scroll/fondo_v.gif';
    boton_desp_h = params.getParam('SCRImage_boton_desp_h') ? params.getParam('SCRImage_boton_desp_h') : '/wms/img/scroll/boton_desp_h.gif';
    fondo_h = params.getParam('SCRImage_fondo_h') ? params.getParam('SCRImage_fondo_h') : '/wms/img/scroll/fondo_h.gif';

    params.Orgscrollobj = new ScrollPane(null, boton_up, boton_down, boton_left, boton_right, boton_desp_v, fondo_v, boton_desp_h, fondo_h);
    
	var height = 0;    
	var width = 0;    
	if (params.getParam('TOTHEIGHT')) {
		height = Math.min(params.getParam('TOTHEIGHT'),DynAPI.document.getHeight()-startY);
	} else {
		height = DynAPI.document.getHeight()-startY;
	}
	if (params.getParam('TOTWIDTH')) {
		width = Math.min(params.getParam('TOTWIDTH'),DynAPI.document.getWidth()-startX);
	} else {
		width = DynAPI.document.getWidth()-startX;
	}
	
    params.Orgscrollobj.setSize(width, height);

    if( params.getParam('BACKCOLOR') != '' )
        params.Orgscrollobj.setBgColor(params.getParam('BACKCOLOR'));

    params.Orgscrollobj.setHorzVisible(false);

    DynAPI.document.addChild(params.Orgscrollobj);
    
    params.toptop = new DynLayer()
    DynAPI.document.addChild(params.toptop)
    
    menus.container = params.toptop;
    menus.start(params.toptop);
    //if( Number(params.getParam('PADDING'))>0 )
    menus.redo( Number(params.getParam('PADDING')) );
    params.Orgscrollobj.setContent(params.toptop);
    params.Orgscrollobj.moveTo(startX, startY);
}

function organigramaOnResize (menus, params) {
    //if( Number(params.getParam('PADDING'))>0 )
    params.Orgscrollobj.setSize(Number(params.getParam('TOTWIDTH')), Number(params.getParam('TOTHEIGHT')));
    params.Orgscrollobj.moveTo(Number(params.getParam('startX')), Number(params.getParam('startY')));
    menus.redo( Number(params.getParam('PADDING')) );
}
               
function paramsIT() {
    var a=arguments

    this.name = a[0];
    this.globalObjects = new Array();
    this.clickedObject = null;
    this.loadedObject = null;
    this.Orgscrollobj = null;
    this.toptop = null;
    this.parametros = new Array();
}

paramsIT.prototype.setParam = function() {
	var a=arguments
    this.parametros[a[0]] = a[1];
}

paramsIT.prototype.getParam = function() {
	var a=arguments
    if( this.parametros[a[0]] )
        return this.parametros[a[0]];
    else
        return '';
}

paramsIT.prototype.getName = function() {
    return this.name;
}

paramsIT.prototype.newID = function() {
    return this.globalObjects.length;
}

paramsIT.prototype.addObject = function() {
	var a=arguments
    var id = this.newID();
    this.globalObjects[id] = a[0];
    return id;
}

paramsIT.prototype.loadIt = function() {
    var a=arguments
    var i = a[0];
	if (this.globalObjects[i].href) {
        if (this.getParam('flotante') == 't') {
            loadFromFloat (this.globalObjects[i].href);
        } else {
			if (this.getParam('DEFTARGET')) {
                j = this.loadedObject;
                this.loadedObject = i;
                if ( j != null) {
                    this.globalObjects[j].getHtml();
                    this.outIt(j);
                }
	            top.frames[this.getParam('DEFTARGET')].location.href = this.globalObjects[i].href;
			} else {
	            location.href = this.globalObjects[i].href;
			}
		}
	}
}

paramsIT.prototype.expandIt = function() {
    var a=arguments
    var i = a[0];

	this.globalObjects[i].toogle();
    //if( Number(this.getParam('PADDING')) > 0 )
    this.globalObjects[0].redo( Number(this.getParam('PADDING')) );
  	this.outIt(i);
	}

paramsIT.prototype.overIt = function() {
    var a=arguments
    var i = a[0];
    if( this.getParam('OVERCOLOR') != '' ) {
		if (this.globalObjects[i].started) {
	        this.globalObjects[i].html.setBgColor(this.getParam('OVERCOLOR'));
		}
	}
}

paramsIT.prototype.outIt = function() {
    var a=arguments
    var i = a[0];
    if( this.getParam('BACKCOLOR') != '' ) {
		if (this.globalObjects[i].started) {
	        this.globalObjects[i].html.setBgColor(this.getParam('BACKCOLOR'));
		}
	}
}

paramsIT.prototype.clickIt = function() {
    var a=arguments
    var i = a[0];
    if (this.clickedObject != null) {
        this.globalObjects[this.clickedObject].clicked = false;
        this.globalObjects[this.clickedObject].getHtml();
        this.outIt(this.clickedObject);
    }
    this.clickedObject = i;
    this.globalObjects[i].clicked = true;
    
	// dsanchez: esta linea da error en IE
	//this.globalObjects[i].getHtml();
	
	this.outIt(i);
}

function Organigrama() {
	var a=arguments
	if (a[0]) this.name = a[0];
	else this.name = null;

	if (a[1]) this.href = a[1];
	else this.href = null;
	
	if (a[2]) this.title = true;
	else this.title = false;

	this.content = new Array();
   	this.started = false;
	this.numMenus = 0;
	this.expanded = false;
   	this.clicked = false;
   	this.over = false;
	this.paramIT = null;
	this.html = null;
	this.level = null;
	this.parent = null;
    this.document = null;
    this.container = null;
	this.n = 0;
	this.OrgscrollPosH = null;
	this.OrgscrollPosW = null;
	this.sobre = null;
	}

Organigrama.prototype.setParamIT = function () {
        var a=arguments
        this.paramIT = a[0];
}

Organigrama.prototype.addObject = function () {
        this.id = this.paramIT.addObject(this);
    }

Organigrama.prototype.add = function () {
	var a=arguments;
	var n=this.numMenus++;	
	if (!a[0]) return;
	
	this.content[n] = new Organigrama(a[0], a[1]?a[1]:null, a[2]?a[2]:null);
    // AÑADIDO [TM] PARA SOPORTAR MULTIPLES INSTANCIAS DE ORGANIGRAMA EN UNA MISMA PAGINA
    this.content[n].setParamIT(this.paramIT);
    this.content[n].addObject();
    if (a[3]) {
        this.paramIT.loadedObject = this.content[n].id;
    }
    // FIN AÑADIDO
	this.content[n].level = this.level + 1;
	this.content[n].parent = this;
	this.content[n].n = n+1;
    
	return this.content[n].id;
	}

Organigrama.prototype.start = function () {
    var toexpand=0;
    
    if( this.paramIT.getParam('Expandir') != '' ){
        toexpand = Number(this.paramIT.getParam('Expandir'));
    }
    this.started = true;
    if( this.level <= toexpand ){
        this.expanded = true;
    }
	this.html = new DynLayer(null, 0, 0, this.paramIT.getParam('TOTWIDTH'), null, null);
	this.html.setVisible(false);
	this.html.setZIndex( this.level+1 );
	this.getHtml();
	var a=arguments;
	if (!a[0]){
        this.document = DynAPI.document;
    }else{
        this.document = a[0];
    }
	this.document.addChild(this.html);
    if (this.level < 1 || this.level <= toexpand || this.paramIT.getParam('STARTALL')) {
		for (var i=0; i<this.numMenus; i++) {
            this.content[i].start(this.document);
        }
    }
}

Organigrama.prototype.setVisible = function (v) {
	if (this.html) this.html.setVisible(v);
	for (var i=0; i<this.numMenus; i++){
		this.content[i].setVisible(v);
    }
}

Organigrama.prototype.redo = function (startY) {

    //separador d'elements
	//var margin = 0;
    var margin = parseInt(this.paramIT.getParam('elemsSeparator'),10);
    
	startY += margin;
	if (this.expanded) {
		for (var i=0; i<this.numMenus; i++) {
         	if (!this.content[i].started){
               	this.content[i].start(this.document);
            }
            this.content[i].html.moveTo (0, startY);
			this.content[i].html.setVisible(true);
			startY += this.content[i].html.getHeight();
			startY = this.content[i].redo(startY);
		}
	}
	else {
		for (var i=0; i<this.numMenus; i++) {
			this.content[i].setVisible(false);
		}
       	//this.getHtml();
	}
   	if (this.container != null) {
        var padding = Number(this.paramIT.getParam('PADDING'));
        if( padding <= 0 )
            padding = 0;
      	this.container.setSize(this.getWidth()+(padding*2),startY + padding);
    }
	return startY;
}

Organigrama.prototype.getHeight = function () {
	var height = this.html.getHeight();
	if( this.expanded ) {
		for (var i=0; i<this.numMenus; i++) {
			height += this.content[i].getHeight();
		}
	}
	return height;
	}

Organigrama.prototype.getWidth = function () {
	var width = this.html.getWidth();
	if( this.expanded ) {
		for (var i=0; i<this.numMenus; i++) {
			width = Math.max(width, this.content[i].getWidth());
		}
	}
	return width;
	}

Organigrama.prototype.reverseExpand = function() {
    this.expanded = true;
    if (this.parent)
        this.parent.reverseExpand();
}

Organigrama.prototype.toogle = function () {
	this.expanded = this.expanded?false:true;
	this.getHtml();
	if (this.expanded)
		for (i=0; i<this.parent.numMenus; i++)
			if (this.parent.content[i].id != this.id && this.parent.content[i].expanded)
				this.parent.content[i].expanded = false;
	}

Organigrama.prototype.getHtml = function () {
	if (this.paramIT.getParam('spacerImg'))
		var spacerImg = this.paramIT.getParam('spacerImg');
	else
		var spacerImg = '/wms/img/sp.gif';

	if (!this.name || !this.level) {
		this.html.setHTML('');
		return;
	}
	var width = (Number(this.paramIT.getParam('iconoW')) + Number(this.paramIT.getParam('hspaceIco')))  * (this.level-1);
    var tablewidth = this.paramIT.getParam('TOTWIDTH');
	
    if( this.paramIT.getParam('TOTWIDTH') != '' )
        tablewidth = Number(this.paramIT.getParam('TOTWIDTH'));
	var txt = '<table width="' + tablewidth + '" border="0" cellspacing="0" cellpadding="0">';
	txt += '<tr valign="top">';
	txt += '<td>';
	
	if( width > 0 )
        txt += '<img src="' + spacerImg + '" width="' + width + '" height="11" border="0">';

	var href = '';
	var linkHref = ' href="#"';
	var linkMouse =  ' onmouseover="window.status = ' + this.paramIT.getName() + '.globalObjects['+this.id+'].name;' + this.paramIT.getName() + '.overIt(' + this.id + ');return true;"';
    linkMouse += ' onmouseout="window.status = \'\';' + this.paramIT.getName() + '.outIt(' + this.id + ');return true;"';

	if (this.href) {
		linkHref += ' onclick="' + this.paramIT.getName() + '.clickIt(' + this.id + ');' + this.paramIT.getName() + '.loadIt(' + this.id + '); '
        if (!this.title && this.numMenus) {
            linkHref += this.paramIT.getName() + '.expandIt(' + this.id + '); ';
        }
        linkHref +=  'return false"';
	}

	if (!this.title) {
		href += '<a';
		if (this.numMenus) {
			href += ' onclick="' + this.paramIT.getName() + '.clickIt(' + this.id + '); ' + this.paramIT.getName() + '.expandIt(' + this.id + '); return false"';
			href += ' href="#"';
		} else {
			href += linkHref;
		}
		href += linkMouse + '">';
    }

	if (!this.title) {
		txt += href;
		if (this.numMenus) {
			if (this.expanded) {
               	if ((this.clicked && this.href) || this.id == this.paramIT.loadedObject ) {
    	            txt += this.paramIT.getParam('expSelIco');
    			} else {
    				txt += this.paramIT.getParam('expIco');
                }
			} else {
				txt += this.paramIT.getParam('colIco');
            }
        }
		else {
           	if (this.paramIT.getParam('cliIco')) {
                if ( this.clicked || this.id == this.paramIT.loadedObject ) {
    	            txt += this.paramIT.getParam('cliIco');
                }
    	        else {
    	            txt += this.paramIT.getParam('optIco');
    			}
			}
	        else {
	            txt += this.paramIT.getParam('optIco');
			}
       }
		txt += '</a>';
    }
	/*txt += '</td><td width="100%">';*/

    if( Number(this.paramIT.getParam('hspaceIco')) > 0 )
        txt += '<img src="' + spacerImg + '" width="' + this.paramIT.getParam('hspaceIco') + '" height="1" border="0">';

    var fontlevel = this.level;
    if( this.level > 3 )
        fontlevel = 3;

    if( !this.title ) {
		if (this.href) {
	    	txt += '<a ' + linkHref + linkMouse;
			txt += '>';
		} else {
			txt += href;
		}
        if ((this.clicked && this.href) || this.id == this.paramIT.loadedObject ) {
    		txt += this.paramIT.getParam('StartL' + fontlevel + 'FSelected');
        } else {
    		txt += this.paramIT.getParam('StartL' + fontlevel + 'FClickable');
        }
	}
    else {
    	txt += this.paramIT.getParam('StartL' + fontlevel + 'FUnclickable');
	}
	txt += this.name;
    if( !this.title && this.href ) {
    	txt += '</a>'
        if (this.clicked || this.id == this.paramIT.loadedObject ) {
    		txt += this.paramIT.getParam('EndL' + fontlevel + 'FSelected');
        } else {
    		txt += this.paramIT.getParam('EndL' + fontlevel + 'FClickable');
        }
     } else {
    	txt += this.paramIT.getParam('EndL' + fontlevel + 'FUnclickable');
    }

	if( this.parent ){
		 k = this.parent.numMenus;
		 idUltim = this.parent.content[k-1].id;
	}else{
		k = -1;
		idUltim = -1;
	}
	txt += '</td></tr>';
	/*
    if( Number(this.paramIT.getParam('PADDING')) > 0 ) {
		txt += '<tr><td><img src ="' + spacerImg + '" width="1" height="' + this.paramIT.getParam('PADDING') + '" border="0"></td></tr>';
	}
	*/
	txt += '<tr><td><img src ="' + spacerImg + '" width="1" height="3" border="0"></td></tr>';
    txt += '</table>';    
	this.html.setHTML(txt);
	}

//    var addCarpetaL = null;
//    var errorL = null;
//    var errorMessageL = null;
//    var carpetasRelL = null;
//    var clickOnStart = null;


