/*function setCookie(nm,vl,ex){
  document.cookie=nm+"="+escape(vl)+((ex)?";expires="+ex.toGMTString():"")+"; path=/";
  }
function getCookie(n){
  var v,e,s,o;
  var a=document.cookie;s=n+"=";
  if(a.length > 0){
    o=a.indexOf(s);
    if(o!=-1){
      o+=s.length;
      e=a.indexOf(";",o);
      if(e==-1)e=a.length;
      v=unescape(a.substring(o,e));
    }else{
      v=null;
      }
    }else{
      v=null;
    }
    return v;
  }
  */
function base64_decode(encStr){
  var base64s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  var bits;
  var decOut="";
  for(var i=0;i<encStr.length;i+=4){
    bits=(base64s.indexOf(encStr.charAt(i))&0xff)<<18|(base64s.indexOf(encStr.charAt(i+1))&0xff)<<12|(base64s.indexOf(encStr.charAt(i+2))&0xff)<<6|base64s.indexOf(encStr.charAt(i+3))&0xff;decOut+=String.fromCharCode((bits&0xff0000)>>16,(bits&0xff00)>>8,bits&0xff);
    }
    if(encStr.charCodeAt(i-2)==61){
      return decOut.substring(0,decOut.length -2);
      }else if(encStr.charCodeAt(i -1) == 61){
      return decOut.substring(0, decOut.length -1);
    }else {return decOut;
    }
  }
function sendmail(s){document.location="mailto:"+base64_decode(s);}
function sendmail2(h,u){document.location="mailto:"+u+"@"+h;}

function homePopup(u) {
	window.open('/popups/'+u,'','width=520,height=390,scrollbars=yes');
	return false;
}

function setLang(n) {
	var d = new Date();
	d.setFullYear(d.getFullYear()+1);
	if (getCookie('UserLang')!=n) {
		setCookie('UserLang',n,d);
    document.location.reload();
	} else {
		return false;
	}
}


function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}






function printerFriendly() {
  q  = document.location.pathname;
  q += (document.location.search=="") ? "?print=1" : document.location.search + "&print=1";
  window.open(q,"","width=712,height=534,scrollbars=1,toolbar=1,location=1,menubar=1,status=1,resizable=0");
}


function validateEmail(s) {
	var filter = /^[a-zA-z0-9-_\.]+@[a-zA-z0-9-\.]+\.[a-zA-z]{2,4}$/;
	return filter.test(s);
}
function validatePassword(s) {
	fil = /^[\x21-\x7e]{4,32}$/;
	return fil.test(s);
}
function validateLogin(f) {
	var err = "";
	if(f.u.value=="nombre@mail.com" || f.u.value=="name@mail.com") {
		err+=(getCookie('UserLang')=="es")?"* La direcci�n de correo no v�lida\n":"* Please enter your email address\n";
	}
	if(!validateEmail(f.u.value)) {
		err+=(getCookie('UserLang')=="es")?"* La direcci�n de correo no v�lida\n":"* Please enter your email address\n";
	}
	if(f.p.value == "") {
		err+=(getCookie('UserLang')=="es")?"* Debe introducir su contrase�a\n":"* Please enter your password\n";
	}
	if(err!="") {
		alert(err); return false;
	} else {
		if(f.backTo.value=="") {
			f.backTo.value = document.location;
		}
		return true;
	}
}
function validateNewsPost(f) {
	var err = "";
	if (f.tx_subject.value == "") {
		err = (getCookie('UserLang')=="es") ? "* Debe introducir un asunto para el mensaje\n" : "* You must include a subject\n";
		alert(err);
		return false;
	}
	if (f.tx_msg.value == "") {
		err = (getCookie('UserLang')=="es") ? "* El mensaje no puede estar vac�o\n" : "* Message body cannot be empty\n";
		alert(err);
		return false;
	}
	return true;
}
function validateChPass(f) {
	var err = "";
        if (!validatePassword(f.tx_pwd.value))
                err += (getCookie('UserLang')=="es") ?
                "* Su contrase�a debe tener al menos 4 caracteres\n" :
                "* Your password must be at least 4 characters long\n";

        if (f.tx_pwd.value!=f.tx_pwd2.value)
                err += (getCookie('UserLang')=="es") ?
                "* Las contrase�as no coinciden\n" :
                "* Passwords don't match\n";

        if (err!="") {
                alert(err);
                return false;
        } else {
                return true;
        }
}
function validateUserData(f) {
	var err = "";
	var fil;

	fil = /[a-zA-Z0-9]{4,16}/;
	if (!fil.test(f.tx_nickname.value))
		err += (getCookie('UserLang')=="es") ? 
		"* En campo nickname debe contener entre 4 y 32 caracteres, y debe estar compuesto de letras y/o n�meros\n" : 
		"* Nickname must be between 4 and 32 characters and can only containg alphanumeric characters\n";

	fil = /[a-zA-Z -]{3,32}/;
	if (!fil.test(f.nm_user.value))
		err += (getCookie('UserLang')=="es") ?
		"* El nombre debe tener un minimo de 3 caracteres, y debe estar compuesto de letras y espacios\n" :
		"* Your name must be at least 3 characters long, and can only contanin letters and spaces\n";
	if (!fil.test(f.tx_surname1.value))
		err += (getCookie('UserLang')=="es") ?
		"* El primer apellido debe tener un minimo de 3 caracteres, y debe estar compuesto de letras y espacios\n" :
		"* Your surname must be at least 3 characters long, and can only contanin letters and spaces\n";

	if (!validateEmail(f.tx_main_email.value))
		err += (getCookie('UserLang')=="es") ?
		"* Su direcci�n de correo electr�nico no es v�lida\n" :
		"* Your email address is not valid\n";

	if (!validatePassword(f.tx_pwd.value))
		err += (getCookie('UserLang')=="es") ?
		"* Su contrase�a debe tener al menos 4 caracteres\n" :
		"* Your password must be at least 4 characters long\n";

	if (f.tx_pwd.value!=f.tx_pwd2.value)
		err += (getCookie('UserLang')=="es") ?
		"* Las contrase�as no coinciden\n" :
		"* Passwords don't match\n";
	if (!f.iagree.checked) {
		err += (getCookie('UserLang')=="es") ?
		"* Debe aceptar las condiciones de uso y pol�tica de privacidad\n" :
		"* You must accept the end user conditions and privacy policy\n";
	}
	if (err!="") {
		alert(err);
		return false;
	} else {
		return true;
	}
}
function validateSearch(f) {
  var ok = (f.summary_keyword.value.length>0);
  
  if (ok)
    if (f.catalog.options[f.catalog.selectedIndex].value=="k_bugs")
      f.action = "http://sourceforge.net/tracker/index.php";
}
