/* FUNCIONS IMPLEMENTADES
getWinNm()
obtNumSes(s)
oWin(adr, x, y)
oWinName(adr, x, y)
oWinSes(adr, x, y)
oWinSesName(adr, x, y)
doTren(adr, x, y)
avisEspera(msg, x, y)
doPrefer(opcio, tema)
doAjuda()
doWrite(to,cc,re,bo)
mouseOver(msg)
mouseOut(msg)
statusMsg(msg)
carregaImatges()
enrera()
obreBustia(lo,i1,i2,i3)
obreLlengua()
doBiblioteca(s)
genDir(s)
detectaVis()
reInici()
mouFinestra(f,x,y)
*/
//openDebat(login,debatGif)

function getWinNm() {
// Genera un nom de finestra per a poder-ne obrir més d'una
///////////////////////////////////////////////////////////
  var now = new Date();
  var hr = new String(now.getHours());
  var mn = new String(now.getMinutes());
  var sc = new String(now.getSeconds());
  var ms = new String(now.getMilliseconds());
  var winNm = hr + mn + sc + ms;
  return winNm;
}

function obtNumSes(s) {
// Obté el numero de sessió del frame 'logobar', si existeix, i si no del top.window.name
// Automatitza l'obtenció del numSes independentment de si la finestra ha estat oberta
// amb oWinSes o amb oWinName
// s='1' retorna l'oldsession. s='2' retorna una cadena amb session + oldession.
///////////////////////////////////////////////////////////////////////////////////////// 
  var nargs = new Number(arguments.length);
  var ns = new String();
  var s_nou = new String(''); var s_vell = new String('');

  if (nargs<1) s = '0';

// Assigna els valors de sessió segons el tipus de finestra
  if(top.logobar==null) {
    s_nou = top.window.name.substring(0,128);
    s_vell = top.window.name.substring(128,top.window.name.length);
  }
  else {
    s_nou = top.logobar.document.IDs.session.value;
    s_vell = top.logobar.document.IDs.oldsession.value;
  }

// Retorna session, oldsession o tots dos segons el paràmetre passat.
  switch(s) {
    case '0': ns = s_nou;
              break;
    case '1': ns = s_vell;
              break;
    case '2': ns = s_nou + s_vell;
              break;
    default:  break;
  }
  return ns;
}

function oWin(adr, x, y, z) {
// Obre una finestra nova amb els paràmetres passats o per defecte.
// El paràmetre 'z' obre una finestra sense barres d'estat ni botons
////////////////////////////////////////////////////////////////////
/* Exemples de crida
adr             oWin('blanc.htm')
adr,x,y         oWin('blanc.htm', '100', '100')
*/

  var nargs = new Number(arguments.length);
  var xdef = new String('750');
  var ydef = new String('450');
	var zdef = new String('0');
	var propietats = new String('');

	if(nargs<4) z = zdef;
  if((nargs<3)||(x=='')) {
    x = new String(xdef);
    y = new String(ydef);
  }
	switch(z) {
		case '0': propietats = ',menubar=yes,resizable=yes,scrollbars=yes,status=yes';
							break;
		case '1': propietats = ',menubar=no,resizable=yes,scrollbars=yes,status=no';
							break;
		default:	propietats = ',menubar=yes,resizable=yes,scrollbars=yes,status=yes';
	}
  var messWin = window.open(adr,getWinNm(),'width='+ x + ',height=' + y + propietats);
}

function oWinName(adr, x, y) {
// Com oWin però posa el numSes en el window.name
/////////////////////////////////////////////////
/* Exemples de crida
adr             oWin('blanc.htm')
adr,x,y         oWin('blanc.htm', '100', '100')
*/

  var nargs = new Number(arguments.length);
  var xdef = new String('750');
  var ydef = new String('450');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }
  var numSes = obtNumSes('2');
  var messWin = window.open(adr,numSes,'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}

function oWinSes(adr, x, y) {
// Obre una finestra nova amb numSes
////////////////////////////////////
  var nargs = new Number(arguments.length);
  var xdef = new String('750');
  var ydef = new String('450');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }

  var numSes = obtNumSes();
  var cgi = '/FinestraNova.html?s=' + numSes + '&htm=' + adr + '&appid=' + genDir('campus');
  var messWin = window.open(cgi,getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}

function oWinSesName(adr, x, y) {
// Obre una finestra nova amb numSes. Cal passar el camí complet d'adr des del campus
/////////////////////////////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  var xdef = new String('750');
  var ydef = new String('500');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }

  var cgi = '/FinestraNova.html?s=' + numSes + '&htm=' + adr + '&appid=' + genDir('campus');
  var messWin = window.open(cgi,obtNumSes('2'),'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}

function doTren(adr, x, y) {
// Obre finestra del tren amb numSes
// adr del tipus 'GATECO.DADESBANC/dadesbanc_tren.dadesbanc'
// Opcions: adr: obre amb dimensions predefinides
//          adr,x,y: obre en finestra nova de dimensions x i y
//          adr,'': carrega adr en el marc actual
// La finestra generada no es pot redimensionar perquè sino el Navigator perd el número de sessió
// Detecta el nom del servidor i hi afegeix el nom de protocol segur. 
/////////////////////////////////////////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  var xdef = new String('750');
  var ydef = new String('450');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }

 //Hi ha crides al tren que no funcionen amb https (a UOC)
 if((adr.indexOf('MARQUETING.SEGUIMENT')==-1)&&(adr.indexOf('INTERNA.ESPAIS')==-1)&&(adr.indexOf('CLUB.BTUOC')==-1)) p = 'https://';
 else p='http://';

 var numSes = obtNumSes();  // Amb el paràmetre 1 obté el nº de sessió antic. 

 //Força 'https' sobre 'cv.uoc.edu'
 if(p=='https://') var cgi = p + 'cv.uoc.edu' + '/tren/trenacc?s=' + numSes + '&modul=' + adr;
 else var cgi = p + location.hostname + '/tren/trenacc?s=' + numSes + '&modul=' + adr;

 if (nargs=='2')  self.location= p + location.hostname + '/tren/trenacc?s=' + numSes + '&modul=' + adr;
 else var messWin = window.open(cgi,getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=no,scrollbars=yes,status=yes');  
}

function doTrineu(adr, x, y) {
// Obre finestra del trineu amb numSes
// adr del tipus 'campus/plsql/llistes.print_members?lid=5421&psid='
// Opcions: adr: obre amb dimensions predefinides
//          adr,x,y: obre en finestra nova de dimensions x i y
//          adr,'': carrega adr en el marc actual
//////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  var xdef = new String('600');
  var ydef = new String('400');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }

  var numSes = obtNumSes();
  var cgi = 'http://trineu.uoc.es:445/' + adr + numSes;
  if (nargs=='2') self.location= cgi;
  else var messWin = window.open(cgi,getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=no,scrollbars=yes,status=yes');
}

function avisEspera(msg, x, y) {
  var inici_html = "<html>\n<head>\n<title></title>\n</head>\n<body bgcolor=\"#fff5e0\">\n\n<font face=\"Arial\" size=\"-1\">\n";
  var final_html = "\n</font>\n<p align=\"center\"><a HREF=\"javascript:self.close()\"><img src=\"/DBS/a/mc-icons/sortir.gif\" border=0></a></p>\n\n</body>\n</html>";
  var s = inici_html + msg + final_html;

  var nargs = new Number(arguments.length);
  var xdef = new String('400');
  var ydef = new String('200');

  if(nargs<3) {
    x = new String(xdef);
    y = new String(ydef);
  }
  var messWin = window.open('',getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');

  d = messWin.document;
  d.open();  d.write(s);  d.close();
}

function doRes(uid) {
// Obre l'historial de l'usuari amb número uid
// Afegeix l'uid al nom de finestra generat per evitar el problema
// de generar dos noms iguals en obertures successives i immediates 
///////////////////////////////////////////////////////////////////
  var cgi = new String();
  var numSes = obtNumSes();

  var cgi = genDir('arrel') + '/' + genDir('campus') + '/' + genDir('llengua') + '/resume_0.html?s=' + obtNumSes() + '&uid=' + uid;
	var winNm = getWinNm() + uid;
	var messWin = window.open(cgi,winNm,'width=700,height=400,menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}

function doPrefer(opcio, tema) {
// Canvia les preferències
// En lloc d'escriure-les amb javascript, ho fem en HTML per a poder aplicar estils més fàcilment.
/////////////////////////////////////////////////////////////////////////////////////////////////
  var adr = new String();
  var ruta = new String('/cgi-bin/comuni/');

  var nargs = new Number(arguments.length);
  if(nargs<2) tema = new String('');
  else tema = '&t=' + tema;

  adr = ruta + opcio + '?s=' + obtNumSes() + tema;
  self.document.URL = adr;
}

function doAjuda() {
  // Obre una plana d'obertura i consulta d'incidències per a l'usuari actual
  ///////////////////////////////////////////////////////////////////////////
  var x = new String('600');
  var y = new String('450');
  var numSes = obtNumSes('1');

//var cgi = 'http://trineu.uoc.es:445/incidencies/plsql/usr.mainincidfromUser?sid=' + numSes;
  var cgi = 'http://cv.uoc.es:445/incidencies/plsql/usr.User2User?sid=' + numSes;
  var winNm = getWinNm();
  var messWin = window.open(cgi,getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}	

function doWrite(to,cc,re,bo) {
// Obre una finestra amb un missatge preadreçat
// El camp 'bo' pot contenir unes paraules que apareixeran al cos del missatge. Per a textos
// més extensos, cal passar el nom d'un fitxer .mail, que col.locarem al directori /home/tmp
// i que conté el text del cos del missatge.
////////////////////////////////////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  if(nargs<4) {
    cc = new String('');
    re = new String('');
    bo = new String('');
  }

  var cgi = new String();
  var numSes = obtNumSes();
  if(bo.indexOf('.mail')==-1) cgi='/cgi-bin/bustia/wrte_fcnt0?s=' + numSes + '&l=pers&to=' + to + '&fr=&cc=' + cc + '&re=' + re + '&bo=' + bo;
  else  cgi='/cgi-bin/bustia/wrte_fcnt0?s=' + numSes + '&to=' + to + '&fr=&cc=' + cc + '&re=' + re + '&fi=' + bo;

  var messWin = window.open(cgi,getWinNm(),'width=600,height=400,menubar=yes,resizable=no,scrollbars=yes,status=yes');
}

function mouseOver(msg) {
  self.status = msg;
}

function mouseOut(msg) {
// Sense paràmetre esborra l'status i amb paràmetre mostra el missatge
//////////////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  if(nargs<1) msg = "";
  self.status = msg;
}

function statusMsg(msg) {
// Sense paràmetre esborra l'status o mostra el title; amb paràmetre mostra el missatge
///////////////////////////////////////////////////////////////////////////////////////
  var nargs = new Number(arguments.length);
  if(nargs<1) {
    if(self.document.title==null) msg = "";
    else msg = self.document.title;
  }
  self.status = msg;
}

function carregaImatges() {
// Precarrega les imatges passades com a paràmetre
//////////////////////////////////////////////////
  var llistaCarrega = new Array();
  var imatges = carregaImatges.arguments;
  if (document.images) {
    for (var i=0; i<imatges.length; i++) {
      llistaCarrega[i] = new Image;
      llistaCarrega[i].src = imatges[i];
    }
  }
}

function canviaImatge(imatge,nom) {
//Fa l'efecte de canviar la imatge existent per la passada com a paràmetre.
//Cal haver-li donat nom a la imatge amb l'atribut 'name' de l'HTML
////////////////////////////////////////////////////////////////////
	if(document.images) document.images[nom].src = imatge;
}

function enrera() {
// Pot substituir l'history.back. Si té history, fa un back; si és finestra nova inicial,
// la tanca; si l'anterior és l'entrada al campus, fa un reInici() (v.CLUB)
////////////////////////////////////////////////////////////////////////////////////////
  var wnom = new String(top.window.name);
  var historial = new Number(history.length);
  if(detectaVis()=='ne') historial = historial-1;
  if(historial>0) history.back();
  else {
    if(wnom!='') top.close();
    else reInici();
  }
}

function obreBustia(lo,i1,i2,i3) {
// Si no se li han passat gifs de navegació, hi assigna blanc.gif
// Obre la bústia amb l'adreça generada.
/////////////////////////////////////////////////////////////////
  adr = new String();
  var nargs = new Number(arguments.length);
  var numSes = obtNumSes();
 
  if(nargs<2) i1 = new String('blanc.gif');
  if(nargs<3) i2 = new String('blanc.gif');
  if(nargs<4) i3 = new String('blanc.gif');

  adr = genDir('arrel') + '/' + genDir('campus') + '/' + genDir('llengua') + '/cgi-bin/activi/debat_0?s=' + numSes + '&l=' + lo + '&img1=' + i1 + '&img2=' + i2 + '&img3=' + i3;
  oWin(adr,'600','400');
}

function obreDisc(lo,i1,i2,i3) {
// Si no se li han passat gifs de navegació, hi assigna blanc.gif
// Obre l'espai de fitxers amb l'adreça generada.
/////////////////////////////////////////////////////////////////
  adr = new String();
  var nargs = new Number(arguments.length);
  var numSes = obtNumSes();
 
  if(nargs<2) i1 = new String('blanc.gif');
  if(nargs<3) i2 = new String('blanc.gif');
  if(nargs<4) i3 = new String('blanc.gif');

  adr = genDir('arrel') + '/' + genDir('campus') + '/' + genDir('llengua') + '/cgi-bin/activi/fdebat_0?s=' + numSes + '&l=' + lo + '&img1=' + i1 + '&img2=' + i2 + '&img3=' + i3;
  oWin(adr,'600','400');
}

function obreBar(canal) {
// Obre l'espai de conversa amb codi 'canal'
////////////////////////////////////////////
  var numSes = obtNumSes();
  var adr = '/servlet/InviteChannel?ACCEPT=TRUE&SESSIONID=' + numSes + '&CHANNELID=' + canal;
  //top.winOpen(adr,'noprefix'); des del menú principal (v.UOC)
  oWin(adr,'noprefix');
}

function obreLlengua() {
// Genera el nom del servidor i del directori de campus, el qual serveix per a identificar
// el campus d'origen dins del web de llengua. Si no se li han passat gifs de navegació,
// hi assigna blanc.gif. Obre la bústia amb l'adreça generada.
/////////////////////////////////////////////////////////////////////////////////////////
  var x = new String('750');
  var y = new String('500');
  var numSes = obtNumSes('1');

  var cgi = genDir('arrel') + '/UOC/a/seu_central/llengua/index.html?s=' + numSes + '&e=' + genDir('campus');
  var messWin = window.open(cgi,getWinNm(),'width='+ x + ',height=' + y + ',menubar=yes,resizable=yes,scrollbars=yes,status=yes');
}

function doBiblioteca(s) {
// Obre la plana de biblioteca representada per <i>adr</i>
// Utilitza el document xina.uoc.es:443/comodin.html
//////////////////////////////////////////////////////////
//  var numSes = obtNumSes('2');
//  oWinSes('http://xina.uoc.es:443/comodin.html?s=' + numSes + '&p=' + s,'600','400');

  var appid = new String(s);
  var numSes = new String(top.logobar.document.IDs.session.value);
  var oldNumSes = new String(top.logobar.document.IDs.oldsession.value);
  var nom = new String('');
  var adr = new String('');

  // Si la llengua des d'on s'obre és el castellà, obre en castellà sino en català.
  if(genDir('llengua')=='b') adr = 'http://xina.uoc.es:443/cas/index.html';
  else adr = 'http://xina.uoc.es:443/cat/index.html';

  nom = 'sessio' + numSes + 'sessiovell' + oldNumSes + 'appid' + appid;
  var altura=screen.height;       var anchura=screen.width;
  var vent_x=770;                 var vent_y=500;
  var posx=(screen.width/2)-400;  var posy=(screen.height/2)-300;
  var finestra = window.open(adr,nom,'resizable=1,toolbar=1,location=0,directories=0,status=1,menubar=0,scrollbars=0,width=770,height=500,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy+'');
}

function reInici() {
// Torna a la plana d'inici tenint en compte la llengua del campus
//////////////////////////////////////////////////////////////////
  var numSes = obtNumSes();
  var adr = '/' + genDir('campus') + '/' + genDir('llengua') + '/extcgi_0.html?s=' + numSes + '&img=hola&cgi=hola';
  parent.location = adr;
}


////////////////////////////////////////////////////////////////////////////
// Les funcions següents s'utilitzen exclusivament des d'altres funcions //
//////////////////////////////////////////////////////////////////////////
function genDir(s) {
// Funció genèrica que retorna el nom del campus, la llengua o la ruta fins el nom
// del campus segons el paràmetre passat. El protocol i el domini s'extreuen des
// del document amb location.protocol i location.hostname;
// Si hom crida la funció des d'una plana d'informació associada (/ACRONIM/mat)
// agafa la llengua de la finestra top.main.claslist on es despleguen les aules.
//////////////////////////////////////////////////////////////////////////////////
  var ruta = location.pathname.split('/');
  if(ruta[2]=='mat') ruta = top.main.claslist.location.pathname.split('/');
  var r = new String();;

  switch(s) {
    case 'arrel'  : r = location.protocol + '//' + location.hostname;
                    break;
    case 'campus' : r = ruta[1];
                    break;
    case 'llengua': r = ruta[2];
                    break;
    default: break;
  }  
  return r;
}

function detectaVis() {
// Funció genèrica que retorna nom de codi del visualitzador
// Retorna 'ne' o 'ie'
////////////////////////////////////////////////////////////
  var s = new String();
  switch(navigator.appName) {
    case 'Netscape':  s = 'ne';
          break;
    case 'Microsoft Internet Explorer': s = 'ie';
          break;
    default: s = 'ie';
          break;
  }
  return s;
}

