/*
 * funcions.js
 *
 * Arxiu de funcions javascript usades al website
 *
 * autor: Manel Guerra (mguerra@sumi.es)
 * creat el 18/11/2000
 * modificat el 13/05/2003
 */

// Definició de variables

var anim_feta = 0;  // valor inicial de l'animació, encara no l'hem feta
var available_height=0;
var available_width=0;

var NS4 =(document.layers);
var NS6 = (document.getElementById&&!document.all);
var IE = (document.all);

var layerObj = (NS6)? 'document.getElementById' : ((NS4)? 'document.layers' : 'document.all');
var styleObj = (NS6)? '.style' : ((NS4)? '' : '.style');

var mostra = (NS4)? 'show' : 'visible';
var amaga = (NS4)? 'hide' : 'hidden';

var subdir = 'imatges/';
var pagina = '';
var desp_vert= 75+20+5;     // titol + frame_inf + marge
var desp_hor = 55;    // frame_esq
var mostrar=1;      //indica l'estat de visualització d'un menu

// Definició de funcions

/* preloadImages(cjtImatges)
 * Carrega a memòria un conjunt d'imatges, de manera que no s'hagin de demanar al
 * servidor en activar-les amb el ratolí. Fa la pàg. més ràpida.
 */
function preloadImages() { 
    var imgFiles = preloadImages.arguments;
    if (document.preloadArray==null) document.preloadArray = new Array();
    var i = document.preloadArray.length;
    with (document) 
        for (var j=0; j<imgFiles.length; j++) 
        {
          preloadArray[i] = new Image;
          preloadArray[i++].src = subdir + imgFiles[j];
        }
}

// swapImage(capa, cjtImatges)
// Canvia unes imatges per altres, en parelles de dos (nom imatge, font). El primer
// argument es per pagines amb capes. Si no en té, l'argument és buit.

function swapImage() { 
  var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.swapImgData;
  if (swapImage.arguments[0] != '') {
		capa = (NS4 || IE)? layerObj + '["' + swapImage.arguments[0] + '"].document.' : 'document.';
  } else {
    capa = 'document.';
  }
  for (i=1; i < (swapImage.arguments.length-1); i+=2) {
    objStr = swapImage.arguments[i];
    obj = eval(capa + objStr);
    if (obj != null) {
      swapArray[j++] = obj;
      swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
      obj.src = swapImage.arguments[i+1];
  } }
  document.swapImgData = swapArray; //usat per refer imatges
}


// ..............................................................................
// swapImgRestore
// Restaura el conjunt d'imatges anterior a l'últim canvi

function swapImgRestore() {
  if (document.swapImgData != null) {
    for (var i=0; i<document.swapImgData.length-1; i+=2) {
      document.swapImgData[i].src = document.swapImgData[i+1];
    }
  }
}



// marcador()
// Marca o indica com marcar la pàgina

function marcaPag() {
	window.external.AddFavorite(location.href, document.title);
}


// versioImpressio()
// Obliga a recridar la pàgina amb un paràmetre indicant que és una 
// versió per imprimir. Les altres funcions mostren o no el resultat
// per pantalla en base a aquesta.

function versioImpressio() 
{
  top.location.href=self.location.href+"?imprimir";
}

// ..............................................................................
// calcula_distancia()
// Calcula el tamany horitzontal/vertical de la finestra, depenent del navegador.
// Encapsulat dins d'una funció per evitar problemes de crida amb el MSIE

function getAlcada() {
  return (IE)?document.body.clientHeight:window.innerHeight;
/*	if (NS4) available_height=innerHeight;
	else available_height=top.document.body.clientHeight-20;
 	return (available_height-desp_vert)/2;
	*/
}

function getAmplada() {
	return (IE)?document.body.clientWidth:window.innerWidth;
	/*
	if (NS4) available_width=innerWidth;
	else available_width=top.document.body.clientWidth-desp_hor;
	return (available_width-desp_hor)/2;
	*/
}

// ..............................................................................
// posaCapes()
// Posa les capes fixes de la pagina de projectes a la posició que hauran
// de tenir

function posaCapes() {
	// Posicionament de capes
	capes = posaCapes.arguments;
	var centreY = (getAlcada() - desp_vert) / 2;
	var centreX = (getAmplada() - desp_hor) / 2;

	eval (layerObj + '("botocentral")' + styleObj + '.top =' + centreY);
	eval(layerObj + '("botocentral")' + styleObj + '.visibility = mostra') ;
	var y_info=getAlcada()-100;
	for (var i=0; i<capes.length; i++) {
		eval(layerObj + '("' +  capes[i] + '")' + styleObj + '.top = ' + y_info);
	}
	
}


// ..............................................................................
// mouNodes()
// mou els nodes de projectes per la pàgina, seguint una sèrie de circumferències
// concèntriques. Les coordinades es calculen en funció del número d'enllaços de 
// projectes (passat per paràmetre).

function mouNodes() {

  var nodes = mouNodes.arguments; 
  var num_graus=Math.PI*(2/nodes.length);
  var y,x = 0;
	var centreY = (getAlcada() - desp_vert) / 2;
	var centreX = (getAmplada() - desp_hor) / 2;
//  var y_origen = calcula_y();
//  var x_origen = calcula_x();
  
  if (anim_feta == 0) { // si encara no hem fet l'animació, movem
    for (var j=0; j<nodes.length; j++) {
			eval(layerObj + '("' + nodes[j] + '")' + styleObj + '.top = ' + centreY);
			eval(layerObj + '("' + nodes[j] + '")' + styleObj + '.left = ' + centreX);
			eval(layerObj + '("' + nodes[j] + '")' + styleObj + '.visibility = mostra');
    }
    for (var i=0; i<40; i++) {
      for (var j=0; j<nodes.length; j++) {
        y =  centreY + 10 + (i+1)*Math.sin(num_graus*j)*2;
				x = centreX - (i+1)*Math.cos(num_graus*j)*4;
				eval(layerObj + '("' + nodes[j] + '")' + styleObj + '.top = ' + y);
				eval(layerObj + '("' + nodes[j] + '")' + styleObj + '.left = ' + x);
				for (var n=0; n<2500; n++) {}
      }
    }
  }
  anim_feta=1; // una vegada feta l'animació, ho indiquem
}


// ..............................................................................
// showHideLayers(cjtParelles)
// Permet amagar mostrar les capes que s'indiquen als arguments, en parelles (nomCapa, veure/no)

function showHideLayers() { //v2.0
  var i, visStr, args, theObj;
  args = showHideLayers.arguments;
  for (i=0; i<(args.length-1); i+=2) { //parelles (capa, visualitzacio)
    visStr   = args[i+1];
    eval(layerObj + '("' + args[i] + '")' + styleObj + '.visibility =' + visStr);
  }
}






