

/*
* checkForm e
* Created by Brand039.com
* last modify 29/11/2005
* info: alessandro.mauri@brand039.com
*/

var reSelect        = /^select/
var reNotEmpty      = /\w/
var reName          = /^[a-z][a-zèòàìùé\`\'\.\s]*$/i
var reWord          = /^\w[\wèòàìùé\`\'\.,\-\°]*$/i
var reWords         = /^\w[\wèòàìùé\`\'\.,\-\°\s]*$/i
var reInt           = /^\-?\d+$/
var reNaturalInt    = /^[1-9]\d*$/
var reNatural0Int   = /^\d+$/
var reDay           = /^(0?[1-9]|[12][0-9]|3[01])$/
var reMonth         = /^(0?[1-9]|1[0-2])$/
var reYear          = /^(20|19)?\d\d$/
var reCAP           = /^\d\d\d\d\d$/
var reSiglaProv     = /^[a-z][a-z]$/i
var reEmail         = /^\w[\w\-\.]*@\w[\w\-\.]*\.[a-z]{2,4}$/i
var reTarga         = /^[A-Z0-9]{5,10}$/i
var rePassword      = /^.{4,16}$/
var reCodiceFiscale = /^[A-Z]{6,6}\d\d[A-EHLMPRST]([04][1-9]|[1256][0-9]|[37][01])[A-ILM]\d\d\d[A-Z]$/i

var reTelFisso      = /^0\d{6,13}$/
var reTelCell       = /^\d{7,15}$/
var reTel           = reTelCell
var rePartitaIva  = /^\w{6,6}\d\d\w\d\d\w\d\d\d\w$/
var rePatente     = /\w/



function showError(e, value, type, label, par1, par2) {
	switch (type) {
		case 'text':
			if (value) alert('"' + value + '" non è un valore valido per il campo "' + label + '".')
			else alert('Non è stato specificato un valore valido per il campo "' + label + '".')
			break;

		case 'date':
			if (value) alert('"' + value + '" non è una data valida per il campo "' + label + '".')
			else alert('Non è stata specificata una data valida per il campo "' + label + '".')
			break;

		case 'cmpdate':
			if (par2) { // focusOn_e1
				alert('La "' + label + '" non deve essere posteriore alla "' + par1 + '".')
			} else {
				alert('La "' + par1 + '" non deve essere anteriore alla "' + label + '".')
			}
			break;
 
		case 'int':
			if (value) alert('' + label + ' non corretto.')
			else alert('Non è stato specificato nessun numero  per il campo "' + label + '".')
			break;

		case 'checkbox':
			alert('Il campo "' + label + '" non è stato spuntato')
			break;

		case 'confirmPassword':
			alert('Il valore del campo '+label+' non coincide a '+par1+'.')
			break;

		case 'password':
			if (value) alert('Non è stata inserita una password valida per il campo "' + label + '".')
			else alert('Non è stata specificata nessuna password per il campo "' + label + '".')
			break;

		case 'radio':
		case 'select':
			alert('Non è stata selezionata nessuna voce per il campo "' + label + '".')
			break;

		case 'singleRadio':
			alert('Il campo "' + label + '" non è stato selezionato')
			break;
	}
	if (type != 'radio' && type != 'singleRadio') e.focus()
	return false
}


function testPWD(e, re, label) {
	if (e.value && re.test(e.value)) {
		return true;
	}else{
	 	return (label ? showError(e, e.value, 'password', label) : false);
	}
}

function testRE(e, re, label) {
	if (e.value && re.test(e.value)) {
		return true;
	}else{
	 	return (label ? showError(e, e.value, 'text', label) : false);
	}
}


function testOptRE(e, re, label) {
	if (e.value == null || e.value == '') return true
	else return testRE(e, re, label)
}


function testCmpDate(e1, e2, label1, label2, focusOn_e1) {
	if (testDate(e1, label1) && testDate(e2, label2)) {
		var dmy1= e1.value.split('/')
		var d1 = parseInt(dmy1[0], 10)
		var m1 = parseInt(dmy1[1], 10)
		var y1 = parseInt(dmy1[2], 10)

		var dmy2= e2.value.split('/')
		var d2 = parseInt(dmy2[0], 10)
		var m2 = parseInt(dmy2[1], 10)
		var y2 = parseInt(dmy2[2], 10)

		if (y2>y1) return true
		else if (y2==y1 && m2>m1) return true
		else if (y2==y1 && m2==m1 && d2>=d1) return true
		else return (label1 && label2
						? showError(  focusOn_e1 ? e1 : e2
									, focusOn_e1 ? e1.value : e2.value
									, 'cmpdate'
									, label1
									, label2
									, focusOn_e1)
						: false)
	} else return false
}


function testOptCmpDate(e1, e2, label1, label2, focusOn_e1) {
	var e1Full = (e1.value != null && e1.value != '')
	var e2Full = (e2.value != null && e2.value != '')
	if (e1Full && e2Full) return testCmpDate(e1, e2, label1, label2, focusOn_e1)
	else if (e1Full) return testDate(e1, label1)
	else if (e2Full) return testDate(e2, label2)
	else return true
}


function testInt(e, min, max, label) {
if (parseInt(e.value,10) >= min && parseInt(e.value,10) <=max) return true
	else return (label ? showError(e, e.value, 'int', label, min, max) : false)
}


function testOptInt(e, min, max, label) {
	if (e.value==null || e.value=='') return true
	else return testInt(e, min, max, label)
}


function testSelect(e, firstValidIndex, label) {
	if (e.selectedIndex >= firstValidIndex) return true
	else return (label ? showError(e, false, 'select', label) : false)
}


function testSelectOption(e, value) {
	for (var i=0; i<e.options.length; i++) {
		if (e.options[i].selected && e.options[i].value == value) return true
	}
	return false
}


function testDate(e, label) {
	var dmy = e.value.split('/')
	if (reDay.test(dmy[0]) && reMonth.test(dmy[1]) && reYear.test(dmy[2])) {

		var d = parseInt(dmy[0], 10)
		var m = parseInt(dmy[1], 10)
		var y = parseInt(dmy[2], 10)

		// Con il passare degli anni aggiustare l'assegnazione automatica del secolo
		if (y < 10) y += 2000
		else if (y < 100) y += 1900

		var bisestile = (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0) ? 1 : 0);

		if ( m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12 || (m==2 && d<=28+bisestile) ||
			 ((m==4 || m==6 || m==9 || m==11) && d <=30) ) {
			e.value = (d < 10 ? '0' : '') + d + '/' + (m < 10 ? '0' : '') + m + '/' + y
			return true
		}
	}
	return (label ? showError(e, e.value, 'date', label) : false)
}


function testOptDate(e, label) {
	if (e.value == null || e.value == '') return true
	else return testDate(e, label)
}


function testPasswords(e1, e2, label1, label2) {
	if (!rePassword.test(e1.value)) return (label1 ? showError(e1, e1.value, 'password', label1) : false)
	if (e1.value != e2.value) {
		if (label1 && label2) showError(e1, e1.value, 'confirmPassword', label1, label2)
		e2.focus()
		return false
	} else return true
}


function testCheckBox(e, label) {
	if (label && !e.checked) showError(e, e.value, 'checkbox', label)
	return e.checked
}


function testRadio(e, label) {
	if (e.type) {
		if (e.checked) return true
		return (label ? showError(e, e.value, 'singleRadio', label) : false)
	} else {
		for (var i=0; i<e.length; i++) {
			if (e[i].checked) return true
		}
		return  (label ? showError(e[0], false, 'radio', label) : false)
	}
}


function testRadioElement(e, value) {
	for (var i=0; i<e.length; i++) {
		if (e[i].checked && e[i].value == value) return true
	}
	return false
}


function checkForm(formId, checksToDo) {
	var v;
	if (typeof checksToDo != 'object') return true
	for (a=0; a<checksToDo.length; a++) {
		eval('v = '+checksToDo[a]);
		if (!v) return false;
	}
	return true
}


function checkAndSubmit(formId, checksToDo) {
	if (checkForm(formId, checksToDo)) {
		formId.submit()
		return true
	} else return false
}


function CheckLogin(form){
	var ret
	var myform = Array();
	// dati anagrafici
	myform[0] = "testRE(form.username, 	reEmail, 		'Username')";
	myform[1] = "testPWD(form.password, 	rePassword, 	'Password')";
	
	return checkForm(form, myform);
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
