
function open_popup(page) {
  var h = 750;
  var w = 900;
  var x = 0.5*(screen.availWidth-w);
  var y = 0.5*(screen.availHeight-h);
  var settings = "directories=0,height="+h+",left="+x+",location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0,top="+y+",width="+w;
  winpop = window.open(page,"_blank",settings);
  if (winpop != null) {
  	winpop.focus();
	return winpop;
  }
}

function open_smallpopup(page) {
  var h = 600;
  var w = 600;
  var x = 0.5*(screen.availWidth-w);
  var y = 0.5*(screen.availHeight-h);
  var settings = "directories=0,height="+h+",left="+x+",location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0,top="+y+",width="+w;
  winpop = window.open(page,"_blank",settings);
  if (winpop != null) {
  	winpop.focus();
	return winpop;
  }
}

function open_verysmallpopup(page) {
  var h = 300;
  var w = 300;
  var x = 0.5*(screen.availWidth-w);
  var y = 0.5*(screen.availHeight-h);
  var settings = "directories=0,height="+h+",left="+x+",location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0,top="+y+",width="+w;
  winpop = window.open(page,"_blank",settings);
  if (winpop != null) {
  	winpop.focus();
	return winpop;
  }
}


function open_popunder(page){
  var h = 1;
  var w = 1;
  var x = 100;
  var y = 100;
  var settings = "directories=0,height="+h+",left="+x+",location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0,top="+y+",width="+w;
  winpop = window.open(page,"_blank",settings);
  winpop.blur();
  window.focus();
}

function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		alert("L'indirizzo email non è valido (controllare @ e punti).")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
		// user is not valid
		alert("Email non valido (username).")
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Email non valido (Indirizzo IP).")
			return false
			}
		}
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("Email non valido (dominio).")
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length>4) {
	   alert("Email non valido (dominio di 2,3 o 4 caratteri).")
	   return false
	}
	if (len < 2) {
	   alert("Email non valido (hostname).")
	   return false
	}
	return true;
}

function CROCheck(CRO){
// controlla la validità del CRO: 11 cifre, di cui le ultime 2 sono il resto della divisione per 13 delle prime 9 cifre
	if (CRO.length!=11){
		alert("Formato del C.R.O. non valido.\nAccertarsi della correttezza rivolgendosi alla propria banca.\nSiamo comunque disponibili per qualunque informazione aggiuntiva.")
		return false;
	}
	if (isNaN(CRO)) { // se c'è qualche lettera in mezzo alle 11 cifre...
		alert("Formato del C.R.O. non valido.\nAccertarsi della correttezza rivolgendosi alla propria banca.\nSiamo comunque disponibili per qualunque informazione aggiuntiva.")
		return false;
	}	
	num = parseInt(CRO.substring(0,9));
	div = parseInt(CRO.substring(9,11));
	mod = num % 13;
	if (mod == div) {
		return true;
	} else {
		alert("Formato del C.R.O. non valido.\nAccertarsi della correttezza rivolgendosi alla propria banca.\nSiamo comunque disponibili per qualunque informazione aggiuntiva.")
		return false;
	}
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("Data non valida: il formato dovrebbe essere gg/mm/aaaa")
		return false
	}
	if (strMonth.length < 1 || month < 1 || month > 12){
		alert("Inserire un mese valido")
		return false
	}
	if (strDay.length < 1 || day < 1 || day > 31 || (month==2 && day > daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Inserire un giorno valido")
		return false
	}
	if (strYear.length != 4 || year==0 || year < minYear || year > maxYear){
		alert("Inserire un numero di anno (4 cifre) valido")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Inserire una data valida")
		return false
	}
return true
}

