   var http_request = false;
   var localWhereToPut = "";
   
   function makePOSTRequest(url, parameters, whereToPut) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            //http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      localWhereToPut = whereToPut;
	  http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById(localWhereToPut).innerHTML   = result;            
         } else {
            alert('There was a problem with the request.');
         }
      }
   }
   
    function getFormValues(fobj,valFunc) {
     var str = "";
     var valueArr = null;
     var val = "";
     var cmd = "";
     for(var i = 0;i < fobj.elements.length;i++)
     {
         switch(fobj.elements[i].type)
         {
	     case "textarea":
             case "text":
                  if(valFunc)
                  {
                      //use single quotes for argument so that the value of
                      //fobj.elements[i].value is treated as a string not a literal
                      cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
                      val = eval(cmd)
                  }
                  str += fobj.elements[i].name +
                   "=" + escape(fobj.elements[i].value) + "&";
                   break;
             case "select-one":
                  str += fobj.elements[i].name +
                  "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
                  break;
         }
     }
     str = str.substr(0,(str.length - 1));
     return str;
    }
	 
   function getAspaniasInfo(obj, whichPage, whereToPut, whatToPost) {
	 if (checkAspaniasInfo(whatToPost) == false)
	 {
	     makePOSTRequest(whichPage, getFormValues(whatToPost), whereToPut);
	 }
   }

   function getAspaniasInfoES(obj, whichPage, whereToPut, whatToPost) {
	 if (checkAspaniasInfoES(whatToPost) == false)
	 {
	     makePOSTRequest(whichPage, getFormValues(whatToPost), whereToPut);
	 }
   }

   function getFriend(obj, whichPage, whereToPut, whatToPost) {
	 if (checkFriend(whatToPost) == false)
	 {
	     makePOSTRequest(whichPage, getFormValues(whatToPost), whereToPut);
	 }
   }


   function getFriendES(obj, whichPage, whereToPut, whatToPost) {
	 if (checkFriendES(whatToPost) == false)
	 {
	     makePOSTRequest(whichPage, getFormValues(whatToPost), whereToPut);
	 }
   }

   function checkAspaniasInfo(fobj)
   {
	var errorString="Les dades introduides no son correctes. \n";
	var error = false;
	var empty = false;
	for(var i = 0;i < fobj.elements.length;i++)
    {
		if(fobj.elements[i].name == "nom" || fobj.elements[i].name=="cognoms" || fobj.elements[i].name=="ciutat" || fobj.elements[i].name=="email")
		{
			if(isEmpty(fobj.elements[i]))
			{
				error = true;
				if (empty == false)
				{
					errorString = errorString + "Els camps marcats amb * no poden ser buits\n";	
					empty = true;
				}
			}
			else
			{
				if(fobj.elements[i].name == "email")
				{
					if(!emailValidator(fobj.elements[i]))
					{
						error = true;
						errorString = errorString + "El camp E-mail no conté una adreça d'e-mail vàlida\n";	
					}
				}
			}
		}
		if(fobj.elements[i].name == "telefon")
		{
			if(!isEmpty(fobj.elements[i]))
			{	
				if(!isNumeric(fobj.elements[i]) || !lengthRestriction(fobj.elements[i], 9, 9))
				{
					error = true;
					errorString = errorString + "El camp Telèfon conté un valor no vàlid. Escriu el telèfon sense espais, ni prefixos internacionals\n";
				}
			}
		}
		if(fobj.elements[i].name == "codipostal")
		{
			if(!isEmpty(fobj.elements[i]))
			{	
				if(!isNumeric(fobj.elements[i]) || !lengthRestriction(fobj.elements[i], 5, 5))
				{
					error = true;
					errorString = errorString + "El camp Codi Postal conté un valor no vàlid.\n";
				}
			}
		}	
	}
	if (error)
	{
		alert(errorString);
	}
	return error;
   }

   function checkAspaniasInfoES(fobj)
   {
	var errorString="Los datos introducidos no son correctos \n";
	var error = false;
	var empty = false;
	for(var i = 0;i < fobj.elements.length;i++)
    {
		if(fobj.elements[i].name == "nom" || fobj.elements[i].name=="cognoms" || fobj.elements[i].name=="ciutat" || fobj.elements[i].name=="email")
		{
			if(isEmpty(fobj.elements[i]))
			{
				error = true;
				if (empty == false)
				{
					errorString = errorString + "Los campos marcados con * no pueden estar vacíos\n";	
					empty = true;
				}
			}
			else
			{
				if(fobj.elements[i].name == "email")
				{
					if(!emailValidator(fobj.elements[i]))
					{
						error = true;
						errorString = errorString + "El campo E-Mail no contiene una dirección de correo electrónico válida\n";	
					}
				}
			}
		}
		if(fobj.elements[i].name == "telefon")
		{
			if(!isEmpty(fobj.elements[i]))
			{	
				if(!isNumeric(fobj.elements[i]) || !lengthRestriction(fobj.elements[i], 9, 9))
				{
					error = true;
					errorString = errorString + "El campo teléfono contiene un número no válido. Escriba el teléfono sin espacios ni prefijos internacionales\n";
				}
			}
		}
		if(fobj.elements[i].name == "codipostal")
		{
			if(!isEmpty(fobj.elements[i]))
			{	
				if(!isNumeric(fobj.elements[i]) || !lengthRestriction(fobj.elements[i], 5, 5))
				{
					error = true;
					errorString = errorString + "El campo Código Postal contiene un valor no válido\n";
				}
			}
		}	
	}
	if (error)
	{
		alert(errorString);
	}
	return error;
   }


   function checkFriend(fobj)
   {
	var errorString="Les dades introduides no son correctes. \n";
	var error = false;
	var empty = false;
	var falseEmail = false;
	for(var i = 0;i < fobj.elements.length;i++)
        {
		if(isEmpty(fobj.elements[i]))
		{
			error = true;
			if (empty == false)
			{
				errorString = errorString + "Els camps marcats amb * no poden ser buits\n";	
				empty = true;
			}
		}
		else
		{
			if(fobj.elements[i].name == "emailFrom" || fobj.elements[i].name == "emailTo")
			{
				if(!emailValidator(fobj.elements[i]))
				{
					error = true;
					if (falseEmail == false)
					{
						errorString = errorString + "Adreça d'email no vàlida\n";
						falseEmail = true;
					}
				}
			}
		}
	}
	if (error)
	{
		alert(errorString);
	}
	return error;
   }

   function checkFriendES(fobj)
   {
	var errorString="Los datos introducidos no son correctos \n";
	var error = false;
	var empty = false;
	var falseEmail = false;
	for(var i = 0;i < fobj.elements.length;i++)
        {
		if(isEmpty(fobj.elements[i]))
		{
			error = true;
			if (empty == false)
			{
				errorString = errorString + "Los campos marcados con * no pueden estar vacíos\n";	
				empty = true;
			}
		}
		else
		{
			if(fobj.elements[i].name == "emailFrom" || fobj.elements[i].name == "emailTo")
			{
				if(!emailValidator(fobj.elements[i]))
				{
					error = true;
					if (falseEmail == false)
					{
						errorString = errorString + "Dirección de e-mail no válida\n";
						falseEmail = true;
					}
				}
			}
		}
	}
	if (error)
	{
		alert(errorString);
	}
	return error;
   }

function isEmpty(elem){
	if(elem.value.length == 0){
		return elem.name;
	}
	return 0;
}

function isNumeric(elem){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		return false;
	}
}

function isAlphabet(elem){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

function isAlphanumeric(elem){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

function lengthRestriction(elem, min, max){
	var uInput = elem.value;
	if(uInput.length >= min && uInput.length <= max){
		return true;
	}else{
		return false;
	}
}


function emailValidator(elem){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		return true;
	}else{
		return false;
	}
}