
function _trim(str) {
	return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

function getYear(d) { 
	 return (d < 1000) ? d + 1900 : d;
}

function isValidDate(date) {
	
	if (date.length != 10) return false ;

	var day=date.substring(0,2);
	var mon=date.substring(3,5) -1;
	var year=date.substring(6,10);
	if (date.substring(2,3)!='/' || date.substring(5,6)!='/') 
		return false;
	
	var test = new Date(year,mon,day);
	if (getYear(test.getYear())==year && test.getMonth()==mon && test.getDate()==day) return true ;
	return false ;
}

function isPartitaIVA(pi) {
	pi = pi.toUpperCase();
	if (pi.substr(0,2)=='SM' && pi.length>=4) return true ;
	if (pi.substr(0,2)=='CH' && pi.length>=4) return true ;

	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 isCodiceFiscale(cfins) {
	var cf = cfins.toUpperCase();
	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 isValidEmail(str) {
    if (window.RegExp) {
        var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
        var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
        var reg1 = new RegExp(reg1str);
        var reg2 = new RegExp(reg2str);
        if (!reg1.test(str) && reg2.test(str))
			return true;
    } else {
        if(str.indexOf("@") >= 0)
        	return true;
    }
    return false;
}
function isNumeric(str) {
	str = _trim(str).replace(/,/,".") ;
	return str.length ? !isNaN(str/1) : false ;
}
