/*
 *
 */
function partitaIVAValida(pi)
{
	if( pi == '' )  return '';
	if( pi.length != 11 )
		return false;
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return false;
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
		return false;
	return true;
}

/*
 *
 */
function codiceFiscaleValido(cfins) {
  var cf = trim(cfins.toUpperCase());

  // se e' lungo 11 ritorna la valutazione della partita iva
  if (cf.length == 11)
    return partitaIVAValida(cf)

  var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
  if (!cfReg.test(cf))
    return false;
  var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
  var s = 0;
  for( i = 1; i <= 13; i += 2 )
    s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
  for( i = 0; i <= 14; i += 2 )
    s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
  if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
    return false;
  return true;
}

function isPhoneNumberValid(s) {
  return containsOnly(s, '+-/ 0123456789');
}

function isEmailAddressValid(str) {
  if ((str.indexOf('@') == -1) || (str.indexOf('@') == 0) || (str.indexOf('@') == str.length)) {
     return false;
  }
  if ((str.indexOf('.') == -1) || (str.indexOf('.') == 0) || (str.indexOf('.') == str.length)) {
      return false;
  }
  if (str.indexOf('@', (str.indexOf('@') + 1)) != -1) {
    return false;
  }
  if ((str.substring(str.indexOf('@') - 1, str.indexOf('@')) == '.') || (str.substring(str.indexOf('@') + 1, str.indexOf('@') + 2) == '.')) {
    return false;
  }
  if (str.indexOf('.', (str.indexOf('@') + 2)) == -1) {
    return false;
  }
  if (str.indexOf(' ') != -1) {
    return false;
  }
  return true;
}

function isSlashS(s) {
  return ((s == ' ') || (s == '\t') || (s == '\n') || (s == '\r') || (s == '\f'));
}

function trim(s) {
  begin = 0;
  while ((begin < s.length) && isSlashS(s.charAt(begin))) {
    ++begin;
  }
  if (begin == s.length) {
    return '';
  } else {
    end = s.length - 1;
    while ((end > begin) && isSlashS(s.charAt(end))) {
      --end;
    }
    return s.substring(begin, end + 1);
  }
}


function isStringEmpty(s) {
  begin = 0;
  while ((begin < s.length) && isSlashS(s.charAt(begin))) {
    ++begin;
  }
  return begin == s.length;
}


function isValidFilename(fname)
{
	var reg = new RegExp(/^[a-zA-Z0-9\.\-\+\_]+$/);
	var sepPosition = Math.max(fname.lastIndexOf("\\"),fname.lastIndexOf("\/")); // Posizione del separatore delle dir
	fname = fname.substring(sepPosition+1); // Tolgo il path
	
	if (!reg.test(fname)) {
		alert('Il nome del file puņ contenere solo caratteri alfanumerici. \nSono esclusi gli spazi, la punteggiatura e altri caratteri speciali.');
		return false;
	}	
	return true;
} 

