//
// x_js.js
//
//
function MM_reloadPage(init) {	//reloads the window if Nav4 resized
	if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
		document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
	else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
		if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
		obj.visibility=v; }
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_goToURL() { //v3.0
	var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_callJS(jsStr) { //v2.0
	return eval(jsStr)
}

function MM_popupMsg(msg) { //v1.0
	alert(msg);
}

function EV_validCasForm() {
	var i,p,q,nm,test,num,min,max,errors='',args=EV_validCasForm.arguments;
	for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.name; if ((val=val.value)!="") {
			if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
	if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe ser dirección e-mail.\n';
			} else if (test!='R') { num = parseFloat(val);
	if (isNaN(val)) errors+='- '+nm+' debe ser numérico.\n';
	if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
		min=test.substring(8,p); max=test.substring(p+1);
		if (num<min || max<num) errors+='- '+nm+' el numero debe estar entre '+min+' y '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es obligatorio.\n'; }
	} if (errors) alert('Hay los siguientes errores:\n'+errors);
	document.EV_valor = (errors == '');
}

function EV_validCatForm() {
	var i,p,q,nm,test,num,min,max,errors='',args=EV_validCatForm.arguments;
	for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.name; if ((val=val.value)!="") {
			if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
	if (p<1 || p==(val.length-1)) errors+='- '+nm+' ha de ser adreça e-mail.\n';
			} else if (test!='R') { num = parseFloat(val);
	if (isNaN(val)) errors+='- '+nm+' ha de ser numèric.\n';
	if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
		min=test.substring(8,p); max=test.substring(p+1);
		if (num<min || max<num) errors+='- '+nm+' el numero ha de estar entre '+min+' i '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' és obligatori.\n'; }
	} if (errors) alert('Hi han els següents errors:\n'+errors);
	document.EV_valor = (errors == '');
}

function EV_aviso(msg)
	{
	alert(msg);
	}

function EV_foco(entrada)
	{
	entrada.focus()
	entrada.select()
	}

function EV_ventana(direc,nombre,parametros)
	{
	window.open(direc,nombre,parametros);
	}

function EV_iraURL()
	{
	var i, args=EV_iraURL.arguments; document.EV_valor = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
	}

function EV_ejecutaJS(jsStr)
	{
	return eval(jsStr)
	}

function EV_cierra()
	{
	window.close()
	}

function EV_imprime()
	{
	window.print()
	}

function EV_cambio() {
		window.moveTo(0,0);
		if (document.all) {
		top.window.resizeTo(778,547); //800 x 600
		}
		else if (document.layers||document.getElementById) {
		if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){
		top.window.outerHeight = screen.availHeight;
		top.window.outerWidth = screen.availWidth;
		}
		}
	var i, args=EV_cambio.arguments; document.EV_valor = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function EV_fecha() {
		var hoy = new Date();
		eldia = hoy.getDate();
		elmes = hoy.getMonth();
		elano = hoy.getYear();
		if (eldia < "10") dia = "0" + eldia;
		else dia = eldia;
		if (elmes < "9") mes = "0" + (elmes + 1);
		else mes = elmes + 1;
		ano = elano.toString();
		document.write (dia);
		document.write ("/");
		document.write (mes);
		document.write ("/");
		document.write (ano.substring(4,2));
}

function EV_vercapa(capa)
	// mostrar una capa si está oculta y ocultar si está visible
	{
	estado=document.getElementById(capa).style.visibility;
	if (estado=="visible") EV_oculta(capa);
	else EV_muestra(capa);
	}

function EV_muestra(capa){
document.getElementById(capa).style.visibility="visible";
}

function EV_oculta(capa){
document.getElementById(capa).style.visibility="hidden";
}


function EV_selcombo(a,b)
	// poner la selección en combo box del formulario
	{
	eval(a+".selectedIndex="+b);
	}

function EV_NO_selcomba()
	// quitar la selección en los otros combo box del formulario
	{
	var i, args=EV_NO_selcombo.arguments;
	for (i=0;i<(args.length);i++)
		{
		eval(args[i]+".selectedIndex=0")
		}
	}

function EV_concapa(cap1,cap2)
	// mostrar una capa, cap1, si está visible otra, cap2
	{
	estado=document.getElementById(cap2).style.visibility;
	if (estado=="visible") document.getElementById(cap1).style.visibility="visible";
	}

function EV_ver_pdf(elemen)
	// abrir ventana nueva con pdf en lista de combo
	{
	var a = '../docs/' + elemen.options[elemen.selectedIndex].value;
	if (a!='../docs/0') window.open(a,'acta','resizable=yes,width=600,height=420,top=0,left=0');
	}

function NO_selCB()
	// quitar la selección en los otros combo box del formulario
	{
	var i, args=NO_selCB.arguments;
	for (i=0;i<(args.length);i++)
		{
		eval(args[i]+".selectedIndex=0")
		}
	}

function Val_Cif(campo)
	{
	var cif = campo.value.toUpperCase();
	var par = 0;
	var non = 0;
	var cad = "ABCDEFGHJNPQRSUVW";
	var bis = "NPQRSW";
	var let = cif.charAt(0);
	if (!isNaN(let))
		{
		nif=cif;
		Val_Dni(campo);
		return false;
		}
	if (cif.length!=9)
		{
		Situa_Campo(campo,'El CIF ha de tener 9 dígitos');
		return false;
		}
	if (cad.indexOf(let)==-1)
		{
		Situa_Campo(campo,'El comienzo del CIF no es válido');
		return false;
		}
	// si el cif tiene letra final, pasarla a numero
	if (bis.indexOf(let)!=-1)
		{
		var fin = cif.charCodeAt(8);
		var lan = String.fromCharCode(fin-16)
		cif = cif.substring(0,8) + lan
		}
		//document.write("fin: "+fin+" lan: "+lan+" cif: "+cif)
	for (zz=2;zz<8;zz+=2)
		{
		par = par+parseInt(cif.charAt(zz));
		}
	for (zz=1;zz<9;zz+=2)
		{
		nn = 2*parseInt(cif.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
		}
	var pac = par + non;
	var con = (10 - ( pac % 10));
	if (con == 10) con = 0;
	if (con != cif.charAt(8))
		{
		Situa_Campo(campo,'El código del CIF no es válido');
		return false;
		}
	return true;
	}

function Val_Dni(campo)
	{
	var abc = campo.value;
	var dni = abc.substring(0,abc.length-1);
	var let = abc.charAt(abc.length-1);
	if (abc!='')
		{
		if (!isNaN(let))
			{
			alert('Falta la letra del NIF');
			campo.focus();
			return false;
			}
		else
			{
			var cad = "TRWAGMYFPDXBNJZSQVHLCKET";
			var pos = dni % 23;
			var car = cad.substring(pos,pos+1);
			if (car!=let.toUpperCase())
				{
				Situa_Campo(campo,'El código del NIF no es válido');
				return false;
				}
			}
		}
	return true;
	}

	function Val_Nie(campo)
	{
	var abc = campo.value;
	if (abc!='')
		{
		var let = abc.charAt(0);
			if (let.toUpperCase() != 'X')
				{
				alert('El NIE debe comenzar por la letra X.');
				campo.focus();
				return false;
				}
		let = abc.charAt(abc.length-1);
		if (!isNaN(let))
			{
			alert('Falta la letra del NIE');
			campo.focus();
			return false;
			}
		var dni = abc.substring(1, abc.length-1);
		var cad = "TRWAGMYFPDXBNJZSQVHLCKET";
		var pos = dni % 23;
		var car = cad.substring(pos, pos+1);
		if (car!=let.toUpperCase())
			{
			Situa_Campo(campo, 'El código del NIE no es válido');
			return false;
			}
		}
		return true;
	}

function Situa_Campo(campo,mensa)
	{
	alert(mensa);
	campo.focus();
	campo.select;
	}

function EV_Decimal(num,dec)
	{
	// convertir a numeros con 'dec' decimales fijos
	var a0 = "";
	for (i = 0; i < dec; i++)
		{
		var a0 = a0 + "0"
		}
	var a1 = String(num);
	var a2 = a1.indexOf('.',0);
	var a3 = Number(dec);
	if (a2==-1)
		{
		a1 = a1 + '.'+ a0
		}
	else
		{
		var a0 = a1.substr(0,a2+1);
		var a4 = a1.substr(a2+1,a3);
		var a5 = a3-a4.length;
		for (i = 0; i < a5; i++)
			{
			var a4 = a4 + "0";
			}
		var a1 = a0 + a4;
		}
	return a1
	}

function mailAnt1()
	{
	var usua = "info"
	var domi = "ofertademanda.net"
	document.write("<a href=\"mailto:"+usua+"@"+domi+"\"")
	}

function mailAnt2()
	{
	var usua = "info"
	var domi = "ofertademanda.net"
	document.write(usua+"@"+domi)
	}

function validaEmail(emailStr)
	{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null)
		{
		return false;
		}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)
		{
		if (user.charCodeAt(i)>127)
			{
			return false;
			}
		}
	for (i=0; i<domain.length; i++)
		{
		if (domain.charCodeAt(i)>127)
			{
			return false;
			}
		}
	if (user.match(userPat)==null)
		{
		return false;
		}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
		{
		for (var i=1;i<=4;i++)
			{
			if (IPArray[i]>255)
				{
				return false;
				}
			}
		return true;
		}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1)
			{
			return false;
			}
		}
	if (len<2)
		{
		return false;
		}
	return true;
	}

function validaFecha(day, month, year)
	{
	var checkstr = "0123456789";
	var Datevalue = "";
	var DateField = day + month + year;
	var DateTemp = "";
	var seperator = ".";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
	err = 0;
	DateValue = DateField;
	/* Delete all chars except 0..9 */
	for (i = 0; i < DateValue.length; i++)
		{
		if (checkstr.indexOf(DateValue.substr(i,1)) >= 0)
			{
			DateTemp = DateTemp + DateValue.substr(i,1);
			}
		}
	DateValue = DateTemp;
	/* Always change date to 8 digits - string*/
	/* if year is entered as 2-digit / always assume 20xx */
	if (DateValue.length == 6)
		{
		DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
		}
	if (DateValue.length != 8)
		{
		err = 19;
		}
	/* year is wrong if year = 0000 */
	year = DateValue.substr(4,4);
	if (year == 0)
		{
		err = 20;
		}
	/* Validation of month*/
	month = DateValue.substr(2,2);
	if ((month < 1) || (month > 12))
		{
		err = 21;
		}
	/* Validation of day*/
	day = DateValue.substr(0,2);
	if (day < 1)
		{
		err = 22;
		}
	/* Validation leap-year / february / day */
	if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0))
		{
		leap = 1;
		}
	if ((month == 2) && (leap == 1) && (day > 29))
		{
		err = 23;
		}
	if ((month == 2) && (leap != 1) && (day > 28))
		{
		err = 24;
		}
	/* Validation of other months */
	if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12")))
		{
		err = 25;
		}
	if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11")))
		{
		err = 26;
		}
	/* if 00 ist entered, no error, deleting the entry */
	if ((day == 0) && (month == 0) && (year == 00))
		{
		err = 0; day = ""; month = ""; year = ""; seperator = "";
		}
	/* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	if (err == 0)
		{
		return true;
		}
	/* Error-message if err != 0 */
	else
		{
		//alert("Date is incorrect!");
		//DateField.select();
		//DateField.focus();
		return false;
		}
	}

function filtraTelefono(string)
	{
	var newNumber="";
	for(i=0;i<string.length;i++)
		{
		valchar=string.substring(i,i+1);
		charCode=valchar.charCodeAt();
		//48=0,57=9
		if(charCode>=48 && charCode<=57)
			{
			newNumber+=valchar;
			}
		}
	return newNumber;
	}

function validaCodPostal(string)
	{
	if (string.length != 5)
		{
		return false;
		}
	return validaNumero(string);
	}

	function validaNumero(string)
	{
	for(i=0;i<string.length;i++)
		{
		valchar=string.substring(i,i+1);
		charCode=valchar.charCodeAt();
		if(charCode < 48 || charCode > 57)
			{
			return false;
			}
		}
	return true;
	}
	
function validaContrasenya(texto)  // Ha de tener 1 numero, 1 mayuscula y 1 minuscula
	{
	var a1 = texto;
	var c1 = false;
	var c2 = false;
	var c3 = false;
	if (a1!='') 
		{
		for (i = 0; i < a1.length; i++)
			{
			var a2 = false;
			var car1 = a1.charAt(i);
			var cod1 = car1.charCodeAt(0);
			// mirar a ver si hay un numero
			for (j = 48; j < 58; j++)
	{
	if (cod1 == j)
		{
		a2 = true;
		c1 = true;
		//document.write ('Numero: '+car1+' ascii: '+cod1+'  ');
		}
	}
			// mirar a ver si hay una letra mayuscula
			for (j = 65; j < 91; j++)
	{
	if (cod1 == j)
		{
		a2 = true;
		c2 = true;
		//document.write ('Mayuscula: '+car1+' ascii: '+cod1+'	');
		}
	}
			// mirar a ver si hay una letra minuscula
			for (j = 97; j < 123; j++)
	{
	if (cod1 == j)
		{
		a2 = true;
		c3 = true;
		//document.write ('Minuscula: '+car1+' ascii: '+cod1+'	');
		}
	}
			if (a2==false)
			break;
			}
		if (c1==false || c2==false || c3==false || (a1.length < 8))
			{
			return false;
			}
		else
			{
			return true;
			}
		}
	}

function ValeTipo(fichero,tipo)
	{
	fitxer=fichero.value;
	if (tipo==1)
		{
		extArray = new Array(".jpg");
		}
	if (tipo==2)
		{
		extArray = new Array(".pdf");
		}
	correcto = false;
	if (!fitxer) return false;
	while (fitxer.indexOf("\\") != -1) fitxer = fitxer.slice(fitxer.indexOf("\\") + 1);
	ext = fitxer.slice(fitxer.indexOf(".")).toLowerCase();
	//document.write(ext);
	for (var i = 0; i<extArray.length; i++)
		{
		//document.write(extArray[i]);
		if (extArray[i] == ext)
			{
			correcto = true;
			break;
			}
		}
	if (correcto)
		{
		return true;
		}
	else
		{
		alert("Usted sólo puede subir archivos con extension " + (extArray.join(" ")) + "\nPor favor seleccione un nuevo archivo");
		//fichero.value="";
		return false;
		}
	}

function isDate(dateStr) {
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null) {
		//alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
		return false;
	}

	month = matchArray[1]; // p@rse date into variables
	day = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12) { // check month range
		//alert("Month must be between 1 and 12.");
		return false;
	}

	if (day < 1 || day > 31) {
		//alert("Day must be between 1 and 31.");
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		//alert("Month "+month+" doesn`t have 31 days!")
		return false;
	}

	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			//alert("February " + year + " doesn`t have " + day + " days!");
			return false;
		}
	}
	return true; // date is valid
}

function Trim(s) {
	return s.replace(/^(\s|\&nbsp;)*|(\s|\&nbsp;)*$/g,"");
}

function OcultaIMG()
	{
	document.datos.src="../images/x0000.gif"
	}

function MuestraIMG(op)
	{
	if (op=='0M') document.datos.src="../images/x0002.jpg"
	if (op=='1M') document.datos.src="../images/x1002.jpg"
	if (op=='T') document.datos.src="../images/x0004.jpg"
	if (op=='D') document.datos.src="../images/x0003.jpg"
	}

function filtrarQS(texto)
	{
		var sz = texto;
		sz = sz.replace(/&/g, '');
		sz = sz.replace(/\?/g, '');
		return sz;
	}
