/******************************************************************************
 Esempio di richiamo:  onBlur="return checkDate(this, 'GG/MM/AAAA');" 	
 Testato per IE 5.0, NS 4.75		          
 ******************************************************************************/
/////////////////////////////////////////////////////////////////////////////////
//Check se anno bisestile  MM/AAAA ** OK spostata sopra
function isBisestile(anno)
{      
      return ((anno%100==0)?(anno%400==0):(anno%4 ==0));
}
//////////////////////////////////////////////////////////////////////////////////
//Check delle date nel formato  GG/MM/AA ** OK spostata sopra
function checkDateGGMMAA( dte ) 
{
    var giorniPerMese = [31,28,31,30,31,30,31,31,30,31,30,31];
    if (dte.length != 8) return false;
    giorno = dte.slice(0, 2);
    c = dte.slice(2, 3);
    mese = dte.slice(3, 5);
    e = dte.slice(5, 6);
    anno = parseInt(dte.slice(6, 8)) + 2000;        
    if (mese <1 || mese>12 || c != '/' || e != '/') return false;
    if (giorno < 1 || giorno > (( mese==2 && isBisestile(anno))?29:giorniPerMese[mese - 1])) return false;
    return true;
}
/////////////////////////////////////////////////////////////////////////////////
//Check delle date nel formato  GG/MM/AAAA ** OK spostata sopra
function checkDateGGMMAAAA( dte )
{
    var giorniPerMese = [31,28,31,30,31,30,31,31,30,31,30,31];
    if (dte.length != 10) return false;
    giorno = dte.slice(0, 2);
    c = dte.slice(2, 3);
    mese = dte.slice(3, 5);
    e = dte.slice(5, 6);
    anno = dte.slice(6, 10);
    if (mese <1 || mese>12 || c != '/' || e != '/' || giorno.indexOf('/') != -1 || mese.indexOf('/') != -1 || anno.indexOf('/') != -1) return false;
    if (giorno < 1 || giorno > (( mese==2 && isBisestile(anno))?29:giorniPerMese[mese - 1])) return false;
    return true;
}
/////////////////////////////////////////////////////////////////////////////////
//Check delle date nel formato  MM/AA ** OK spostata sopra
function checkDateMMAA( dte ) 
{
    if (dte.length != 5) return false;
    mese = dte.slice(0, 2);
    c = dte.slice(2, 3);
    anno = parseInt(dte.slice(3, 5)) + 2000;
    if (mese <1 || mese>12 || c != '/' ) return false;
    return true;
}
/////////////////////////////////////////////////////////////////////////////////
//Check delle date nel formato  MM/AAAA ** OK spostata sopra
function checkDateMMAAAA( dte )
{
    if (dte.charAt(0) == '/') return false;
	if (dte.charAt(1) == '/') return false;
	if (dte.charAt(3) == '/') return false;
	if (dte.charAt(4) == '/') return false;
	if (dte.charAt(5) == '/') return false;
	if (dte.charAt(6) == '/') return false;
	
	if (dte.charAt(2) != '/') return false;
	
	if (dte.length != 7) return false;
    mese = dte.slice(0, 2);
    c = dte.slice(2, 3);
    anno = parseInt(dte.slice(3, 5)) + 2000;
    if (mese <1 || mese>12 || c != '/' ) return false;
	
    return true;
}
/////////////////////////////////////////////////////////////////////////////////
//fa il check della data a fronte del formato che viene passato  ** OK spostata sopra
function checkDate( d, formato)
{
  if (d.value != '')
  {
      if (formato=="GG/MM/AAAA")
    {
        if (checkDateGGMMAAAA( d.value ) == true)
        {
        	return true;
        }
        else
        {
        	alert("Attenzione la data deve essere nel formato:\n\nGG/MM/AAAA");
        	d.value='';
        	d.focus();
        	return false;
        }
    }     
    else if (formato=="MM/AAAA")
    {
        if (checkDateMMAAAA( d.value ) == true)
        return true
        else
        {
        alert("Attenzione la data deve essere nel formato:\n\nMM/AAAA");
        d.value='';
        d.focus();
        }
    }
    else if (formato=="GG/MM/AA")
    {
        return checkDateGGMMAA( d )?(true):(alert("Attenzione la data deve essere nel formato:\n\nGG/MM/AA"));    
    }
    else if (formato=="MM/AA")
    {
        return checkDateMMAA( d )?(true):(alert("Attenzione la data deve essere nel formato:\n\nMM/AA"));    
    }
    else 
    {
        alert("formato data non valido !");
        return false;
    }
  }
  else
  {
  	return true;
  }
}
