// Llibreria javascript per validar formularis

var sXifres = "0123456789"
var sBlancs = " \t\n\r";

function esLletra (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function esMajuscula (c)
{   return ((c >= "A") && (c <= "Z"))
}

function esDigit (c)
{   return ((c >= "0") && (c <= "9"))
}


function esLletraODigit (c)
{   return (esLletra(c) || esDigit(c))
}

// mirem si el parametre esta buit
function esBuit(s)
{   return ((s == null) || (s.length == 0))
}

function esSenseInfo (s)

{   var i;

    if (esBuit(s)) return true;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (sBlancs.indexOf(c) == -1) return false;
    }

    return true;
}


function esCaracterOKEMail (s)
{   var i;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! (esLletra(c) || esDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
       	return false;
		}
    }

    return true;
}

// mirem si és una adreça de correu
function esAdrecaCorreu (s)
{   

    if (esSenseInfo(s)) return false;
    if (!esCaracterOKEMail(s)) return false;

    atOffset = s.lastIndexOf('@');

    if ( atOffset < 1 )
        return false;
    else {
 	dotOffset = s.lastIndexOf('.');
 	if (dotOffset <0 || dotOffset<atOffset || ((s.length-dotOffset)<3) || (dotOffset-atOffset<2)) 
 	   return false; 	  
    }
    
    return true;
}

// mirem si la data és correcta dd/mm/aaaa
function esData(data){
if (esSenseInfo(data))
     return false;
else {
     if (!/^\d{2}\/\d{2}\/\d{4}$/.test(data)){
            return false;
     }
	 
     var dia  =  parseInt(data.substring(0,2),10);
     var mes  =  parseInt(data.substring(3,5),10);
     var any =  parseInt(data.substring(6),10);

     switch(mes){
         case 1: case 3: case 5: case 7: case 8: case 10: case 12:
             numDies=31;
             break;
         case 4: case 6: case 9: case 11:
             numDies=30;
             break;
         case 2:
             if (comprovaSiDeTraspas(any)){ numDies=29 }else{ numDies=28};
             break;
         default:
             return false;
     }
       
         if (dia>numDies || dia==0){
             return false;
         }
         return true;
     }
}

function comprovaSiDeTraspas(any){
if ( ( any % 100 != 0) && ((any % 4 == 0) || (any % 400 == 0))) {
    return true;
    }
else {
    return false;
    }
}


