function canviar_idioma(sel) {
	window.location = "/?l=" + sel.value;
}

function validaEmail(s) { // comprova si un email s és vàlid
    var expr = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,6})+$/;
    if (expr.test(s))
        return true;
    else
        return false;
}

function validaLogin(s) { // comprova que un login s compleix uns requisits (primer caracter: lletra minus, seguents: alfanum minus)
    var expr = /^[a-z][a-z0-9]*$/;
    if (expr.test(s))
        return true;
    else
        return false;
}

function reg_usuari(f, s) { // valida formulari (f) d'alta nou usuari amb seguretat s mínima (s=true) o sense (s=false)
    if (f.nomReal.value.length > 50 ) {
        alert(vlang_regform_001);
        f.nomReal.focus();
        return false;
    }
	
    if ((f.login.value.length < 3) || (f.login.value.length > 10)) {
		alert(vlang_regform_002);
        f.login.focus();
        return false;
    }
    
    if (! validaLogin(f.login.value)) {
		alert(vlang_regform_003);
        f.login.focus();
        return false;
    }
	
    if ((s) && (f.contrasenya.value.length < 7)) {
		alert(vlang_regform_004);
        f.contrasenya.focus();
        return false;
    }
    if (f.contrasenya.value != f.contrasenya2.value) {
		alert(vlang_regform_005);
        f.contrasenya.focus();
        return false;
    }
	
	if (f.idioma.value == -1) {
		alert(vlang_regform_006);
        f.idioma.focus();
        return false;
    }
	
    if (! validaEmail(f.email.value)) {
		alert(vlang_regform_007);
        f.email.focus();
        return false;
    }
	
	if (! f.reg_condicions.checked) {
		alert(vlang_regform_008);
		return false;
	}
	
	var p = new Ajax.Request('/mRegistreUsuari.php',
		{   method:'post',
			parameters: {   idioma: f.idioma.value,
							login: f.login.value,
							email: f.email.value,
							contrasenya: f.contrasenya.value,
							nomReal: f.nomReal.value,
							codi_captcha: f.codi_captcha.value,
							emailPublic: f.emailPublic.checked,
							rebreMsgPriv: f.rebreMsgPriv.checked
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/";
					} else {
						alert(transport.responseText);
						document.getElementById('image_captcha').src = '/captcha/image.php?sid=' + Math.random();
						document.getElementById('codi_captcha').value = "";
					}
			}
		});

    return true;
}

function doLogin(f) { // autentica usuari
	var p = new Ajax.Request('/mLogin.php',
		{   method:'post',
			parameters: {	login: f.login.value,
							contrasenya: f.contrasenya.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK "))
						window.location = "/?l=" + transport.responseText.substring(3);
					else
						alert(transport.responseText);
			}
		});
    return true;
}

function edit_usuari(f, s) { // valida formulari (f) de modificació d'usuari ("EL MEU COMPTE") amb seguretat s mínima (s=true) o sense (s=false)
    if (f.nomReal.value.length > 50 ) {
        alert(vlang_regform_001);
        f.nomReal.focus();
        return false;
    }
	
    if ((s) && (f.contrasenya.value.length > 1 && f.contrasenya.value.length < 7)) {
		alert(vlang_regform_004);
        f.contrasenya.focus();
        return false;
    }
    if (f.contrasenya.value != f.contrasenya2.value) {
		alert(vlang_regform_005);
        f.contrasenya.focus();
        return false;
    }
	
	if (f.idioma.value == -1) {
		alert(vlang_regform_006);
        f.idioma.focus();
        return false;
    }
	
    if (! validaEmail(f.email.value)) {
		alert(vlang_regform_007);
        f.email.focus();
        return false;
    }
	
	
	var p = new Ajax.Request('/mEditUsuari.php',
		{   method:'post',
			parameters: {   idioma: f.idioma.value,
							email: f.email.value,
							contrasenya: (f.contrasenya.value.length > 0) ? f.contrasenya.value : "",
							nomReal: f.nomReal.value,
							emailPublic: f.emailPublic.checked,
							rebreMsgPriv: f.rebreMsgPriv.checked
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/";
					} else {
						alert(transport.responseText);
						document.getElementById('image_captcha').src = '/captcha/image.php?sid=' + Math.random();
						document.getElementById('codi_captcha').value = "";
					}
			}
		});

    return true;
}

function recup_pwd(f) { // recupera contrasenya d'un usuari (sol·licitud)
    if ((f.login.value.length < 3) || (f.login.value.length > 10)) {
		alert(vlang_regform_002);
        f.login.focus();
        return false;
    }
	
    if (! validaEmail(f.email.value)) {
		alert(vlang_regform_007);
        f.email.focus();
        return false;
    }

	var p = new Ajax.Request('/mRecuperaContrasenya.php',
		{   method:'post',
			parameters: {	login: f.login.value,
							email: f.email.value,
							codi_captcha: f.codi_captcha.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/";
					} else {
						alert(transport.responseText);
						document.getElementById('image_captcha').src = '/captcha/image.php?sid=' + Math.random();
						document.getElementById('codi_captcha').value = "";
					}
			}
		});

    return true;
}

function recup_pwd2(f) { // restableix contrasenya d'un usuari (canvi)
    if (f.contrasenya.value.length < 7) {
		alert(vlang_regform_004);
        f.contrasenya.focus();
        return false;
    }
    if (f.contrasenya.value != f.contrasenya2.value) {
		alert(vlang_regform_005);
        f.contrasenya.focus();
        return false;
    }

	var p = new Ajax.Request('/mRecuperaContrasenya.php',
		{   method:'post',
			parameters: {	login: f.login.value,
							auth: f.auth.value,
							contrasenya: f.contrasenya.value,
							codi_captcha: f.codi_captcha.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/";
					} else {
						alert(transport.responseText);
						document.getElementById('image_captcha').src = '/captcha/image.php?sid=' + Math.random();
						document.getElementById('codi_captcha').value = "";
					}
			}
		});

    return true;
}

function enviar_privmsg(f) { // envia un missatge privat
	var p = new Ajax.Request('/mMsgPrivat.php',
		{   method:'post',
			parameters: {	destinatari: f.destinatari.value,
							assumpte: f.assumpte.value,
							text: FCKeditorAPI.GetInstance('text').GetXHTML(),
							ac: f.ac.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/msgpriv/enviats";
					} else
						alert(transport.responseText);
					
			}
		});

    return true;
}

function del_privmsg(id, page) { // esborra un missatge privat
	var p = new Ajax.Request('/mMsgPrivat.php',
		{   method:'post',
			parameters: {	id: id,
							ac: "baixa"
						},
			onSuccess: function(transport) {
					window.location = "/msgpriv/rebuts/pagina/"+page;
			}
		});

    return true;
}


function enviar_noticia(f) { // envia una notícia
	var p = new Ajax.Request('/mAdminNoticia.php',
		{   method:'post',
			parameters: {	titol: f.titol.value,
							tags: f.tags.value,
							bloquejat: f.bloquejat.checked,
							text: FCKeditorAPI.GetInstance('text').GetXHTML(),
							id: f.id.value,
							ac: f.ac.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/noticia";
					} else
						alert(transport.responseText);
					
			}
		});
    return true;
}

function del_notice(id, page) { // esborra una notícia
	var p = new Ajax.Request('/mAdminNoticia.php',
		{   method:'post',
			parameters: {	id: id,
							ac: "baixa"
						},
			onSuccess: function(transport) {
					window.location = "/noticia/pagina/"+page;
			}
		});

    return true;
}

function del_notice_comment(id, ide, page) { // esborra un comentari d'una notícia
	var p = new Ajax.Request('/mAdminComNoticia.php',
		{   method:'post',
			parameters: {	id: id,
							ac: "baixa"
						},
			onSuccess: function(transport) {
					window.location = "/noticia/"+ide+"/pagina/"+page;
			}
		});

    return true;
}

function enviar_com_noticia(f) { // envia un comentari d'una notícia
	var p = new Ajax.Request('/mAdminComNoticia.php',
		{   method:'post',
			parameters: {	text: FCKeditorAPI.GetInstance('text').GetXHTML(),
							id: f.id.value,
							idc: f.idc.value,
							ac: f.ac.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/noticia/"+f.id.value;
					} else
						alert(transport.responseText);
					
			}
		});
    return true;
}

function enviar_missatge(f) { // envia un missatge
	var p = new Ajax.Request('/mAdminMissatge.php',
		{   method:'post',
			parameters: {	titol: f.titol.value,
							tags: f.tags.value,
							bloquejat: f.bloquejat.checked,
							text: FCKeditorAPI.GetInstance('text').GetXHTML(),
							id: f.id.value,
							ac: f.ac.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/forum";
					} else
						alert(transport.responseText);
					
			}
		});
    return true;
}

function del_message(id, page) { // esborra un missatge
	var p = new Ajax.Request('/mAdminMissatge.php',
		{   method:'post',
			parameters: {	id: id,
							ac: "baixa"
						},
			onSuccess: function(transport) {
					window.location = "/forum/pagina/"+page;
			}
		});

    return true;
}

function del_message_comment(id, ide, page) { // esborra un comentari d'un missatge
	var p = new Ajax.Request('/mAdminComMissatge.php',
		{   method:'post',
			parameters: {	id: id,
							ac: "baixa"
						},
			onSuccess: function(transport) {
					window.location = "/forum/"+ide+"/pagina/"+page;
			}
		});

    return true;
}

function enviar_com_missatge(f) { // envia un comentari d'un missatge
	var p = new Ajax.Request('/mAdminComMissatge.php',
		{   method:'post',
			parameters: {	text: FCKeditorAPI.GetInstance('text').GetXHTML(),
							id: f.id.value,
							idc: f.idc.value,
							ac: f.ac.value
						},
			onSuccess: function(transport) {
					if (transport.responseText.startsWith("OK ")) {
						alert(transport.responseText.substring(3));
						window.location = "/forum/"+f.id.value;
					} else
						alert(transport.responseText);
					
			}
		});
    return true;
}

function enviar_config(f) { // canvia la configuració
	var p = new Ajax.Request('/mAdminConfig.php',
		{   method:'post',
			parameters: {	idioma: f.idioma.value,
							tempsEdit: f.tempsEdit.value
						},
			onSuccess: function(transport) {
					alert(transport.responseText);
			}
		});
    return true;
}

function carrega_idioma(lb, f) { // carrega un idioma
	var p = new Ajax.Request('/utilAJAX.php',
		{   method:'post',
			parameters: {	id: lb.options[lb.selectedIndex].value,
							op: "queryIdioma"
						},
			onSuccess: function(transport) {
					var k = eval('(' + transport.responseText + ')');
					f.id.value = k["id"];
					f.id2.value = k["id"];
					f.codi.value = k["codi"];
					f.nom.value = k["nom"];
			}
		});
    return true;
}

function del_input_value(id) { // posa el valor d'un element a string nul ("")
	var v = document.getElementById(id);
	v.value = "";
}

function admin_idioma(f, ac) { // realitza canvis sobre els idiomes
	var p = new Ajax.Request('/mAdminIdioma.php',
		{   method:'post',
			parameters: {	id: f.id.value,
							id2: f.id2.value,
							codi: f.codi.value,
							nom: f.nom.value,
							ac: ac
						},
			onSuccess: function(transport) {
				var q = new Ajax.Request('/utilAJAX.php',
					{   method:'post',
						parameters: {	op: "queryAllIdioma"
									},
						onSuccess: function(transport) {
								var k = eval('(' + transport.responseText + ')');
								var i;
								buida_opcions(f.lidiomes);
								for (i = 0; i < k.length; i++)
									nova_opcio(f.lidiomes, k[i]["nom"], k[i]["id"]);
								f.id2.value = "";
						}
					});
					if (! transport.responseText.startsWith("OK "))
						alert(transport.responseText);
			}
		});
    return true;
}

function carrega_usuari(lb, f) { // carrega un idioma
	var p = new Ajax.Request('/utilAJAX.php',
		{   method:'post',
			parameters: {	id: lb.options[lb.selectedIndex].value,
							op: "queryUsuari"
						},
			onSuccess: function(transport) {
					//alert(transport.responseText);
					
					var k = eval('(' + transport.responseText + ')');
					var d;
					var s;
					
					f.id.value = k["id"];
					f.contrasenya.value = "";
					f.contrasenya2.value = "";
					
					if (k["dataCreacio"]) {
						d = new Date();
						d.setTime(k["dataCreacio"] * 1000);
						s = format_dia(d.getDate(), (d.getMonth()+1), (d.getFullYear())) + ", " + format_hora(d.getHours(), d.getMinutes(), d.getSeconds());
						f.dataCreacio.value = s;
					} else {
						f.dataCreacio.value = vlang_adminuser_003;
					}

					if (k["dataElim"]) {
						d = new Date();
						d.setTime(k["dataElim"] * 1000);
						s = format_dia(d.getDate(), (d.getMonth()+1), (d.getFullYear())) + ", " + format_hora(d.getHours(), d.getMinutes(), d.getSeconds());
						f.eliminat.value = k["eliminador"] + ", " + s;
					} else {
						f.eliminat.value = vlang_adminuser_001;
					}

					sel_op(f.privilegis, k["privilegis"]);
					sel_op(f.idioma, k["idioma"]);
					f.login.value = k["login"];
					f.email.value = k["email"];
					f.nomReal.value = k["nomReal"];
					//f.avatar.value = k["avatar"];
					
					if (k["dataActual"]) {
						d = new Date();
						d.setTime(k["dataActual"] * 1000); // NOTA: aqui
						s = format_dia(d.getDate(), (d.getMonth()+1), (d.getFullYear())) + ", " + format_hora(d.getHours(), d.getMinutes(), d.getSeconds());
						f.lastConn.value = s + ", " + k["ipActual"];
					} else {
						f.lastConn.value = vlang_adminuser_002;
					}
					
					f.emailPublic.checked = (k["emailPublic"]) ? true : false;
					f.rebreMsgPriv.checked = (k["rebreMsgPriv"]) ? true : false;
			}
		});
    return true;
}

function admin_usuari(f, ac) { // realitza canvis sobre els usuaris
    if (f.nomReal.value.length > 50 ) {
        alert(vlang_regform_001);
        f.nomReal.focus();
        return false;
    }
	
    if ((f.login.value.length < 3) || (f.login.value.length > 10)) {
		alert(vlang_regform_002);
        f.login.focus();
        return false;
    }
    
    if (! validaLogin(f.login.value)) {
		alert(vlang_regform_003);
        f.login.focus();
        return false;
    }
	
    if (f.contrasenya.value != f.contrasenya2.value) {
		alert(vlang_regform_005);
        f.contrasenya.focus();
        return false;
    }
	
	if (f.idioma.value == -1) {
		alert(vlang_regform_006);
        f.idioma.focus();
        return false;
    }
	
    if (! validaEmail(f.email.value)) {
		alert(vlang_regform_007);
        f.email.focus();
        return false;
    }

	var p = new Ajax.Request('/mAdminUsuari.php',
		{   method:'post',
			parameters: {	id: f.id.value,
							privilegis: f.privilegis.value,
							idioma: f.idioma.value,
							contrasenya: (f.contrasenya.value.length > 0) ? f.contrasenya.value : "",
							login: f.login.value,
							email: f.email.value,
							nomReal: f.nomReal.value,
							//avatar: f.avatar.value,
							emailPublic: f.emailPublic.checked,
							rebreMsgPriv: f.rebreMsgPriv.checked,
							ac: ac
						},
			onSuccess: function(transport) {
				var q = new Ajax.Request('/utilAJAX.php',
					{   method:'post',
						parameters: {	op: "queryAllUsuari",
										eliminats: f.eliminats.value
									},
						onSuccess: function(transport) {
								var k = eval('(' + transport.responseText + ')');
								var i;
								buida_opcions(f.lusuaris);
								
								for (i = 0; i < k.length; i++)
									nova_opcio(f.lusuaris, k[i]["login"], k[i]["id"]);
						}
					});
					if (! transport.responseText.startsWith("OK ")) {
						alert(transport.responseText);
					} else {
						f.contrasenya.value = "";
						f.contrasenya2.value = "";
					}
			}
		});
    return true;
}

function format_hora(hh, mm, ss) { // retorna HH:MM:SS, si hh=3 -> HH=03
    var _s;
    
    if (hh < 10) _s = "0" + hh;
    else _s = hh;
        
    _s += ":";
        
    if (mm < 10) _s += "0" + mm;
    else _s += mm;
        
    _s += ":";
    
    if (ss < 10) _s += "0" + ss;
    else _s += ss;
    
    return _s;
}

function format_dia(d, m, a) { // retorna DD/MM/AAAA, si m=3 -> MM=03
    var _s;
    
    if (d < 10) _s = "0" + d;
    else _s = d;
        
    _s += "/";
        
    if (m < 10) _s += "0" + m;
    else _s += m;
        
    _s += "/";
    
    _s += a;
    
    return _s;
}

function nova_opcio(lb, texte, valor) { // afegeix una opcio a l'OBJECTE listbox lb
    var _o = new Option(texte,valor);
    try {
        lb.add(_o, null); // estàndard
    } catch(ex) {
        lb.add(_o); // només IE
    }
}

function lleva_opcio(lb, idx) { // lleva l'opció amb índex idx a l'OBJECTE listbox lb
    if ((lb.length > 0) && (idx < lb.length))
        lb.remove(idx);
}

function buida_opcions(lb) { // lleva totes les opcins d'un l'OBJECTE listbox lb
    var tam = lb.length;
    for (var i = 0; i < tam; i++)
        lleva_opcio(lb, 0); // elimina primera opció
}

function sel_op(lb, val) { // selecciona la primera ocurrència d'una op amb valor "val" d'un OBJECTE listbox
    var tam = lb.length;
    var i = 0;
    while ((i < tam) && (lb.options[i].value != val)) // mentre no acabi opcions i no trobi final, recorre opcions
        i++;
    if (i < tam) // si l'ha trobada
        lb.selectedIndex = i; // ho seleccionam
}
