var dom = function (elm) { return document.getElementById(elm); }
var dov = function (elm) { if (!dom(elm)) alert('Error en tiempo de ejecucion! No existe el elemento ' + elm); return dom(elm).value; }
var doc = function (elm) { return dom(elm).checked; }
var replace = function (texto, s1, s2) { return texto.split(s1).join(s2); }
var cerrar = function (elm) { dom(elm).parentNode.removeChild(dom(elm)); }
var emfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var telfilter = /^([6789]{1})+([0-9]{8})+$/;
var cpfilter = /^([0-9]{5})+$/;
var depfilter = /^([RCTS]{1})+$/;

var xmlobj = function () { if (window.XMLHttpRequest) return new XMLHttpRequest(); else if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); else { alert('No se pudo crear el objeto XML'); return false; } }

var iWidth = '';
onload = function() { var iWidth = window.innerWidth?window.innerWidth:document.body.offsetWidth; }
onresize = function() { var w = window.innerWidth?window.innerWidth:document.body.offsetWidth; if (w == iWidth) return; iWidth = w; if(dom('pr_tabla')) { cerrar('pr_tabla'); presentacion(); } }

var presentacion = function ()
	{
	/*
	Control de presentación
	2009 - Gustavo Durán
	2009 - Grupo Lehmberg
	*/
	if (dom('pr_tabla') == undefined) var tbl = pr_creaTabla(); else var tbl = dom('pr_tabla');	
	if (tbl == undefined) return;
	// Restablecer color de fondo
	for (r=0; r<4; r++) for (c=0; c<30; c++) tbl.rows[r].cells[c].style.backgroundColor = '#336';
	// Colorear celdas del lado izquierdo de la tabla
	for (r=0; r<4; r++) { rnd = 8 * Math.random(); for (c=0; c<18 + rnd; c++) tbl.rows[r].cells[c].style.backgroundColor = '#366'; tbl.rows[r].cells[c].style.backgroundColor = '#588'; tbl.rows[r].cells[c+1].style.backgroundColor = '#8BB'; tbl.rows[r].cells[c+3].style.backgroundColor = '#AFF'; }
	}

var pr_creaTabla = function ()
	{
	/*
	Generador de cuadrados en cabecera
	2009 - Gustavo Durán
	2009 - Grupo Lehmberg
	*/
	// Alto máximo desde el borde superior de la página
	var h = dom('lh_head').offsetHeight - 10;
	// Ancho máximo, calculado
	var w = window.innerWidth?window.innerWidth:document.body.offsetWidth;
	w = (w<780)?780:w;
	// Si es Firefox, quitar el ancho de una columna
	if (navigator.userAgent.indexOf('MSIE') == -1) w -= h/4;
	// Elemento contenedor
	var cont = dom('lh_head');
	// Calcular dimensiones de los cuadrados (para 5 filas)
	var sq = h/4;
	// Calcular cantidad de columnas
	var col = Math.floor(w/sq);
	
	// Crear tabla
	var tbl = document.createElement('table');
	tbl.id = 'pr_tabla';
	tbl.style.position = 'absolute'; 
	tbl.style.left = 0;
	tbl.style.top = 0;
	tbl.style.zIndex = 10;
	tbl.style.backgroundColor = '#FFF';
	tbl.style.width = w + 'px';
	cont.appendChild(tbl);
	// Dibujar filas y columnas
	for (r=0; r<4; r++) { row = tbl.insertRow(r); for (c=0; c<col; c++) { cell = row.insertCell(c); cell.id = 'r' + r + 'c' + c; cell.innerHTML = ' '; cell.style.width = sq + 'px'; cell.style.height = sq + 'px'; cell.style.backgroundColor = '#336'; } }
	return tbl;
	}

var envia = function ()
	{
	var frm = document.forms.contacta;
	if (!depfilter.test(frm.dept.value)) { alert('Elija un departamento'); return false; }
	if (frm.nombre.value == '' || frm.nombre.value == 'Introduzca su nombre') { alert('Introduzca su nombre'); return false; }
	if (!emfilter.test(frm.mail.value )) { alert('Introduzca una dirección de correo electrónico'); return false; }
	if (frm.tel.value != '' && !telfilter.test(frm.tel.value )) { alert('Introduzca un teléfono correcto'); return false; }
	if (frm.mensaje.value == '' || frm.mensaje.value == 'Escriba su consulta') { alert('Escriba el mensaje'); return false; }
	return true;
	}

var limpiar = function () { var frm = document.forms.contacta; frm.nombre.value = ''; frm.mail.value = ''; frm.tel.value = ''; frm.mensaje.value = ''; return false; }

var ch_dept = function ()
	{
	if (!dom('dept')) return;
	if (dov('dept') == 'R') dom('pan_rrhh').style.display = 'block';
	else dom('pan_rrhh').style.display = 'none';
	}

var xi_login = function ()
	{
	if (dov('ulog') == '' || dov('upwd') == '') { alert('Introduzca sus credenciales de acceso'); return false; }
	dom('js').value = 1;
	return true;
	}

var al_login = function ()
	{
	if (dov('alumno') == '') { alert('Introduzca su NIF/NIE'); return false; }
	if (!checkNIF(dov('alumno'))) { alert('Credenciales de acceso no válidas'); return false; }
	return true;
	}

var checkNIF = function (nif)
	{
	if (!nif) return false;
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	if (nif.length != 9) return false;
	else
		{
		letra = nif.substr(8, 1); letra = letra.toUpperCase();
		dni = nif.substr(0, 8);
		// Para las letras de los NIE, ver http://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
		dni = dni.toUpperCase(); dni = dni.replace('X','0'); dni = dni.replace('Y','1'); dni = dni.replace('Z','2');
		dni -= parseInt(dni/23) * 23;
		if (letras.charAt(dni) != letra) return false;
		else return true;
		}
	}

var sol_info = function ()
	{
	if (!doc('acepto')) { alert('Debe aceptar los términos y condiciones'); return false; }
	if (dov('nombre') == '') { alert('Introduzca su nombre'); return false; }
	if (dov('apellidos') == '') { alert('Introduzca su/s apellido/s'); return false; }
	if (dov('nombre') == '') { alert('Introduzca su nombre'); return false; }
	if (!emfilter.test(dov('email'))) { alert('Introduzca una dirección de correo electrónico'); return false; }
	if (dov('tlf') != '' && !telfilter.test(dov('tlf'))) { alert('Introduzca el número de teléfono'); return false; }
	if (dov('cp') != '' && !cpfilter.test(dov('cp'))) { alert('Introduzca el código postal de su lugar de residencia'); return false; }
	if (dov('cpe') != '' && !cpfilter.test(dov('cpe'))) { alert('Introduzca el código postal de su lugar de trabajo'); return false; }

	var m = 0;
	for (i=0; i<document.getElementsByName('sectores[]').length; i++) if (document.getElementsByName('sectores[]')[i].checked) m ++;
	if (m == 0) { alert('Marque al menos un sector'); return false; }
	m = 0;
	for (i=0; i<document.getElementsByName('materias[]').length; i++) if (document.getElementsByName('materias[]')[i].checked) m ++;
	if (m == 0) { alert('Marque al menos una materia de curso'); return false; }
	m = 0;
	for (i=0; i<document.getElementsByName('modoc[]').length; i++) if (document.getElementsByName('modoc[]')[i].checked) m ++;
	if (m == 0) { alert('Marque al menos un medio de contacto'); return false; }
	m = 0;
	for (i=0; i<document.getElementsByName('modal[]').length; i++) if (document.getElementsByName('modal[]')[i].checked) m ++;
	if (m == 0) { alert('Marque al menos una modalidad'); return false; }
	
	if (dov('sotros_txt') == '') dom('sotros').checked = false;
	if (dov('motros_txt') == '') dom('motros').checked = false;
	return true;
	}

var chMedio = function ()
	{
	if (!dom('medio')) return;
	if (dov('medio') == '') dom('medio_txt').disabled = true;
	else dom('medio_txt').disabled = false;
	}

/***********************************************
* Carousel Slideshow II- By Harry Armadillo (http://www.codingforums.com/showthread.php?t=58814)
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
* Please keep this notice intact
***********************************************/

var carousel = function (params){
  if(!(params.width>0 && isFinite(params.width)))params.width=100;
  if(!(params.height>0 && isFinite(params.height)))params.height=100;
  if(!(params.sides>2 && isFinite(params.sides)))params.sides=4;
  if(!(params.steps>0 && params.steps<100 && isFinite(params.steps)))params.steps=20;
  if(!(params.speed>0 && isFinite(params.speed)))params.speed=8;
  if(!(params.image_border_width>=0 && isFinite(params.image_border_width)))params.image_border_width=0;
  if(isFinite(params.id)||!params.id)params.id='bad_id_given_'+Math.random();
  
  document.write("<div style='position:relative;overflow:hidden;' id='"+params.id.replace(/[^a-zA-Z0-9]+/g,'_')+"'></div>");
  var cdiv=dom(params.id.replace(/[^a-zA-Z0-9]+/g,'_'))
  cdiv.style.width=params.width+'px';
  cdiv.style.height=params.height+'px';
  cdiv.style.border=params.border;
  cdiv.style.position='relative';
  cdiv.style.overflow='hidden';
  cdiv.title=params.id;
    
  var counter=0,spinning=true,interval=Math.floor(60000/params.sides/params.steps/params.speed)-5;
  interval=isNaN(interval)?200:interval;
  var img_position=[],images=[],img_dimension=[];
  var img_index=params.images.length+1,img_index_cap=2*params.images.length;
  var faces=Math.ceil(params.sides/2), dimension, direction, targ, attr, faraway;

  function init(){
    if(params.direction=="left" || params.direction=="right"){
      direction=params.direction;
      dimension="width";
      }
    else if(params.direction=="top" || params.direction=="bottom"){
      direction=params.direction;
      dimension="height";
      }
    else {
      direction="left";
      dimension="width";
      }      
    faraway=(direction=="left"||direction=="top")?'-20000px':'20000px';
    cdiv.style[dimension]=params[dimension]/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)+'px';
    var img=new Image();
    img.style.position='absolute';
    img.style[direction]=faraway;
    img.style.width=params.width-2*params.image_border_width+'px';
    img.style.height=params.height-2*params.image_border_width+'px';
    img.style.border=(params.image_border_width||0)+'px solid '+params.image_border_color;
  
    for(var i=0;i<params.images.length;i++){
      images[i]=img.cloneNode(true);
      images[i].src=params.images[i];
      if(params.links && params.links[i] && params.links[i]!=''){
        targ=params.lnk_targets && params.lnk_targets[i]||params.lnk_base||'new';
        if(targ=="_blank"){
          attr=(params.lnk_attr && params.lnk_attr[i])?",'"+params.lnk_attr[i]+"'":"";
          images[i].onclick=new Function("window.open('"+params.links[i]+"','"+targ+"'"+attr+")");
          }
        else if(targ.substr(0,1)=="_"){
          images[i].onclick=new Function(targ.substr(1)+".location='"+params.links[i]+"'");
          }
        else{
          attr=(params.lnk_attr && params.lnk_attr[i])?",'"+params.lnk_attr[i]+"'":"";
          images[i].onclick=new Function("var t='"+targ+"';if(window[t]){try{window[t].close()}catch(z){}}window[t]=window.open('"+params.links[i]+"',t"+attr+");window[t].focus()");
          }
        images[i].style.cursor=document.all?'hand':'pointer';
        }

      if(params.titles && params.titles[i] && params.titles[i]!='')
        images[i].title=params.titles[i];
      if(document.all)
        images[i].alt=images[i].title;
      images[i+params.images.length]=images[i];
      if(params.images.length==faces)
        images[i+2*params.images.length]=images[i];
      cdiv.appendChild(images[i]);
      }
  
    var face_size=params.size_mode=='image'?params[dimension]:params[dimension]*Math.sin(Math.PI/params.sides);
    var face_offset=params[dimension]*Math.cos(Math.PI/params.sides)/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)/2-.5;
    var pi_piece=2*Math.PI/params.steps/params.sides;
    for(i=0;i<=params.steps*faces;i++){
      img_dimension[i]=face_size*Math.sin(pi_piece*i);
      img_position[i]=(i<params.steps*params.sides/2)?Math.floor(params[dimension]/2/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)-face_offset*Math.cos(pi_piece*i)-img_dimension[i]/2)+'px':faraway;
      img_dimension[i]=img_dimension[i]-2*params.image_border_width>1?Math.ceil(img_dimension[i])-2*params.image_border_width+'px':'1px';
      }
    }
  init();

  cdiv.rotate = function(){
    setTimeout('dom("'+cdiv.id+'").rotate()',interval);
    if(!spinning) return;
    if(++counter>=params.steps){
      counter=0;
      if(++img_index>=img_index_cap)
        img_index=params.images.length;
      }
    images[img_index-faces].style[direction]=faraway;
    for(var i=faces-1;i>=0;i--){
      images[img_index-i].style[direction]=img_position[counter+i*params.steps];
      images[img_index-i].style[dimension]=img_dimension[counter+i*params.steps];
      }
    }
  cdiv.onmouseover=function(){ spinning=false; }
  cdiv.onmouseout=function(){ spinning=true; }
  setTimeout('dom("'+cdiv.id+'").rotate()',100);
  }
 /***********************************************/

var increaseFontSize = function ()
	{
	var p = document.getElementsByTagName('body');
	for(i=0;i<p.length;i++)
		{
		if (p[i].style.fontSize) var s = parseInt(p[i].style.fontSize.replace('px', '')); else var s = 12;
		if(s != 18) s += 1;
		p[i].style.fontSize = s + 'px';
		}
	}

var decreaseFontSize = function ()
	{
	var p = document.getElementsByTagName('body');
	for (i=0; i<p.length; i++)
		{
		if (p[i].style.fontSize) var s = parseInt(p[i].style.fontSize.replace('px', '')); else var s = 12;
		if(s != 8) s -= 1;
		p[i].style.fontSize = s + 'px';
		}   
	}

var crearPanel = function (alto, ancho, ident, titulo, ref)
	{
	if (!ancho) ancho = 200;
	if (!ident) ident = 'popwindow';
	if (!titulo) titulo = ' ';
	if (!ref) ref = document.body;
	else ref = dom(ref);

	var dv = document.createElement('div');
	dv.id = ident;
	dv.className = 'ventana ';
	dv.style.width = ancho + 'px';
	if (alto) dv.style.height = alto + 'px';
	var posY = getPositionTop(ref) + 30;
	dv.style.top = posY + 'px';
	var posX = getPositionLeft(ref);
	if (posX + ancho >= window.innerWidth) posX -= ancho;
	dv.style.left = posX + 'px';

	var sp = document.createElement('span');
	sp.onclick = function() { cerrar(ident); }
	sp.className = 'cerrar';
	sp.appendChild(document.createTextNode("X"));
	dv.appendChild(sp);
			
	var hd = document.createElement('div');
	hd.className = 'cabeza';
	hd.onmousedown = function (evt) { dragStart(evt || window.event, ident); }
	hd.appendChild(document.createTextNode(titulo));
	dv.appendChild(hd);
	return dv;
	}

var getPositionLeft = function (This)
	{
	var el = This; var pL = 0;
	while (el) { pL += el.offsetLeft; el = el.offsetParent; }
	return pL;
	}

var getPositionTop = function (This)
	{
	var el = This; var pT = 0;
	while (el) { pT += el.offsetTop; el = el.offsetParent; }
	return pT;
	}

/*************************************************************************/
/* Copyright 2001 by Mike Hall */
/* Please see http://www.brainjar.com for terms of use. */
/*************************************************************************/
// Determine browser and version.

var Browser = function ()
	{
	var ua, s, i;
	this.isIE = false;
	this.isNS = false;
	this.version = null;
	ua = navigator.userAgent;
	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) { this.isIE = true; this.version = parseFloat(ua.substr(i + s.length)); return; }
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = parseFloat(ua.substr(i + s.length)); return;	}
	// Treat any other "Gecko" browser as NS 6.1.
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = 6.1; return; }
	}

var browser = new Browser();

var dragObj = new Object();
dragObj.zIndex = 0;

var dragStart = function (event, id)
	{
	var el;
	var x, y;
	// If an element id was given, find it. Otherwise use the element being
	// clicked on.
	if (id) dragObj.elNode = dom(id);
	else
		{
		if (browser.isIE) dragObj.elNode = window.event.srcElement;
		if (browser.isNS) dragObj.elNode = event.target;
	// If this is a text node, use its parent element.
		if (dragObj.elNode.nodeType == 3) dragObj.elNode = dragObj.elNode.parentNode;
		}
	// Get cursor position with respect to the page.
	if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }
	if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; }
	// Save starting positions of cursor and element.

	dragObj.cursorStartX = x;
	dragObj.cursorStartY = y;
	dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
	dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);

	if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
	if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0;

	// Update element's z-index.
	dragObj.elNode.style.zIndex = ++dragObj.zIndex;

	// Capture mousemove and mouseup events on the page.
	if (browser.isIE) { document.attachEvent("onmousemove", dragGo); document.attachEvent("onmouseup", dragStop); window.event.cancelBubble = true; window.event.returnValue = false; }
	if (browser.isNS) { document.addEventListener("mousemove", dragGo, true); document.addEventListener("mouseup", dragStop, true); event.preventDefault(); }
	}

var dragGo = function (event)
	{
	var x, y;
	// Get cursor position with respect to the page.
	if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }
	if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; }
	// Move drag element by the same amount the cursor has moved.
	dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
	dragObj.elNode.style.top = (dragObj.elStartTop + y - dragObj.cursorStartY) + "px";
	if (browser.isIE) { window.event.cancelBubble = true; window.event.returnValue = false; }
	if (browser.isNS) event.preventDefault();
	}

var dragStop = function (event)
	{
	// Clear the drag element global.
	dragObj.elNode = null;
	// Stop capturing mousemove and mouseup events.
	if (browser.isIE) { document.detachEvent("onmousemove", dragGo); document.detachEvent("onmouseup", dragStop); }
	if (browser.isNS) { document.removeEventListener("mousemove", dragGo, true); document.removeEventListener("mouseup", dragStop, true); }
	}

var showimg = function (uri, elm)
	{
	var ident = 'imgpan_' + elm;
	if (dom(ident)) return;
	var img = document.createElement('img');
	img.src = uri;
	var dv = crearPanel(0, 0, ident, '', 'img_' + elm);
	dv.appendChild(img);
	dv.style.width = img.width + 'px';
	document.body.appendChild(dv);
	}

var hideimg = function (elm)
	{
	cerrar('imgpan_' + elm);
	}

var cleanInputs = function ()
	{
	var p = document.getElementsByTagName('input');
	for(i=0;i<p.length;i++) p.value = '';
	}

var loadContent = function(c)
	{
	/*
	2009 - Gustavo Durán
	2009 - Grupo Lehmberg
	*/
	if (c.file == undefined) return false;
	var out = 'js';
	var call = c.file;
	if (c.cont != undefined) { dom(c.cont).innerHTML = '<div class="aviso"><img src="/imagenes/loading.gif" alt=""></div>'; out = 'div'; }
	if (c.method == undefined) c.method = 'GET';
	if (c.query == undefined) c.query = null;
	if (c.prm != undefined) call += '?' + c.prm;
	
	var xo = new xmlobj();
	xo.open(c.method, call);
	if (c.method == 'POST') xo.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
	xo.send(c.query);
	xo.onreadystatechange = function() { if (xo.readyState == 4) { (out=='js') ? eval(xo.responseText) : dom(c.cont).innerHTML = xo.responseText; if(c.scr!=undefined) eval(c.scr); } }
	}

var expandC = function(ident, file, ajustar, desplaza)
	{
	/*
	2009 - Gustavo Durán
	2009 - Grupo Lehmberg
	*/
	var fila = 0;
	if (desplaza != undefined || desplaza == 1) fila = 1;
	var img = dom('i' + ident);
	if (img.src.search('plus') > 0)
		{
		var rw = dom('r' + ident);
		img.src = '/imagenes/minus.png';
		var nrw = rw.parentNode.insertRow(rw.rowIndex + fila);
		nrw.id = 'p' + ident;
		nrw.className = rw.className;
		var ec = nrw.insertCell(0);
		ec.innerHTML = ' ';
		var nc = nrw.insertCell(1);
		nc.id = 'td_' + ident;
		nc.className = 'newRow'
		nc.colSpan = rw.cells.length - 1;
		
		param = 'id=' + ident;
		if ((p=file.indexOf('?')) >= 0)
			{
			param = file.slice(p + 1);
			file = file.slice(0, p);
			}
		loadContent({cont:nc.id, file:file, prm:param});		
		}
	else
		{
		if (dom('p' + ident)) 
			{
			var rw = dom('p' + ident);
			rw.parentNode.deleteRow(rw.rowIndex - 1 + fila);
			img.src = '/imagenes/plus.png';
			}
		}
	}

var RecaptchaOptions = {theme : 'white', lang : 'es'};
