var form;
var lang = 'it';
var MSG = new Array();

MSG['Nome'] = new Array();
MSG['Nome']['it'] = 'Nome';

MSG['Cognome'] = new Array();
MSG['Cognome']['it'] = 'Cognome';

MSG['Indirizzo'] = new Array();
MSG['Indirizzo']['it'] = 'Indirizzo';

MSG['Città'] = new Array();
MSG['Città']['it'] = 'Città';

MSG['Provincia'] = new Array();
MSG['Provincia']['it'] = 'Provincia';

MSG['Regione'] = new Array();
MSG['Regione']['it'] = 'Regione';

MSG['Username'] = new Array();
MSG['Username']['it'] = 'Username';

MSG['Password'] = new Array();
MSG['Password']['it'] = 'Password';

MSG['Email'] = new Array();
MSG['Email']['it'] = 'Email';

MSG['Maternita'] = new Array();
MSG['Maternita']['it'] = 'Maternita';

MSG['NumeroFigli'] = new Array();
MSG['NumeroFigli']['it'] = 'NumeroFigli';

MSG['Cellulare'] = new Array();
MSG['Cellulare']['it'] = 'Cellulare';

MSG['Data'] = new Array();
MSG['Data']['it'] = 'Data';

MSG['Adesione'] = new Array();
MSG['Adesione']['it'] = 'Adesione';




function reformat(valuex){		
	return trim(valuex.replace(/[\n\r]/g,' '))	
}



function check_field(fid, fdesc, ftype, freq, fdefault) {
	var check = false;
	switch (ftype)	{
		case 'testo'	:
						check = check_field_text(fid, fdesc, freq, fdefault);
						break;
		case 'numerico'	:
						check = check_field_numeric(fid, fdesc, freq, fdefault);
						break;						
		case 'alfanumerico'	:
						check = check_field_alfanumerico(fid, fdesc, freq, fdefault);
						break				
		case 'data'	:
						check = check_field_date(fid, fdesc, freq, fdefault);
						break;		
		case 'email'	:
						check = check_field_email(fid, fdesc, freq, fdefault);
						break;
		case 'textarea'	:
						check = check_field_textarea(fid, fdesc, freq, fdefault);
						break;		
		case 'combobox'	:	
						check = check_field_combobox(fid, fdesc, freq, fdefault);
						break;
		case 'checkbox'	:
						check = check_field_checkbox(fid, fdesc, freq, fdefault);
						break;		
		case 'radiobutton'	:
						check = check_field_radiobutton(fid, fdesc, freq, fdefault);
						break;		
		case 'file'	:
						check = check_field_file(fid, fdesc, freq, fdefault);
						break;
	}
	return 	check;
}

  function check_field_date_birth(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;	
	
		if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	
	
	if ((fvalue != '') && !valid_date(fvalue)){
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido')
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	
		return false;
	}	
	return true;
}




function check_field_nome(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}

 return true;	
}

function check_field_indirizzo(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}

 return true;	
}

function check_field_text(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if ((fvalue != '') && !valid_text(fvalue)) {		
		if (lang == 'it') 
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else 
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false
	}		
 return true;	
}

function check_field_numeric(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if ((fvalue != '') && !valid_number(fvalue)){
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false;
	}	
	return true;
}



function check_field_alfanumerico(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	
	return true;
}


function check_field_alfanumeric(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	if ((fvalue != '') && !valid_alfanumeric(fvalue)) {		
		if (lang == 'it') 
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.');
		else 
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
			
		return false
	}		
 return true;	
}



function check_field_date(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') { 
		required_field(fdesc);
		return false;
	}
	
	if ((fvalue != '') && !valid_date(fvalue)){
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido')
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	
		return false;
	}	
	return true;
}

function check_field_email(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		 required_field(fdesc);
		 return false
		}
	if ((fvalue != '') && !valid_email(fvalue)) {		
		if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido.')
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid.')	;
				
		return false
	}	
	return true;
}

function check_field_textarea(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}
	
	if (fvalue.length > 999){
		form.elements[fid].value = fvalue.value.substring(0,999);
		if (lang == 'it')
			alert('Testo del campo "' + MSG[fdesc][lang] +'" troppo lungo verrà troncato.');
		else
			alert('The field "' + MSG[fdesc][lang] +'" must be no more than 1000 characters long.');	
		
		return false;
	}
	
	return true;
}

function check_field_combobox(fid, fdesc, freq, fdefault) {
	var field = form.elements[fid];
	var findex = field.selectedIndex;
	if ((freq) && (findex < 0)) {
		required_field_select(fdesc);
		return false;
  } else if (findex >= 0) {
		var fvalue = field.options[findex].value;
		if (freq && fvalue == '') {
			required_field_select(fdesc);
			return false;
		}
	}
	return true;
}

function check_field_checkbox(fid, fdesc, freq, fdefault) {

	var field = form.elements[fid];	
	var fchecked	= false; 
	if (field.length) {
		for (j = 0; j < field.length; j++)
    	if (field[j].checked == true ) 
    	{    		  	
    				fchecked = true;
    				break;
    	}
		} else if (field.checked == true)
						fchecked = true;
			
	if (!fchecked && freq ){
		 required_field_check(fdesc)
		 return false;
		}
	
	return true;	
}	

function check_field_radiobutton(fid, fdesc, freq, fdefault) {
	var field = form.elements[fid];
	var fchecked	= false; 
	for (j = 0; j < field.length; j++)   	  	
    	if (field[j].checked == true) 
    	{
    		fchecked = true;
    		break;
    	}
    				
	if (!fchecked && freq ){
		 required_field_select(fdesc)
		 return false;
		}
	
	return true;	
}

function check_field_file(fid, fdesc, freq, fdefault)
{                 	
	var fvalue = form.elements[fid].value;

	if (freq && fvalue == '') {
		required_field(fdesc);
		return false;
	}		
	
	if (fvalue != '') {
		var validExt = new Array('txt','doc','pdf');
		var ext = fvalue.substring(fvalue.lastIndexOf(".")+1, fvalue.length).toLowerCase();
		for (var i = 0; i < validExt.length ; i++)
               if (ext == validExt[i])
                      return true; 
    if (lang == 'it')
			alert('Il campo "' + MSG[fdesc][lang] +'" non è valido, estensione .'+ ext +' non permessa, solo :(txt,doc,pdf)');
		else
			alert('The field "' + MSG[fdesc][lang] +'" is not valid, allowed :(txt,doc,pdf)');
				
		return false;
	}
	return true;                                                
}

function required_field(fdesc) {
	if (lang == 'it')
		alert('Il campo "' + MSG[fdesc][lang] + '" è obbligatorio.');
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');	
}

function required_field_select(fdesc) {
	if (lang == 'it')
		alert('Selezionare un valore per il campo "' + MSG[fdesc][lang] + '".');		
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');
}

function required_field_check(fdesc) {
	if (lang == 'it')
		alert('E\' necessario selezionare il campo "' + MSG[fdesc][lang] + '".');		
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');
}

function required_field_choose(fdesc) {
	if (lang == 'it')
		alert('Selezionare uno o più valori per il campo "' + MSG[fdesc][lang] + '".');
	else
		alert('Enter "' + MSG[fdesc][lang] + '"');		
}

function valid_number(fvalue) {
	var re = /^[+-.\d]+$/
	return re.test(fvalue)
}

function valid_text(fvalue) {
	var re = /^[a-zA-Z. ]+$/
	return re.test(fvalue)
}

function valid_alfanumeric(fvalue) {
	if (fvalue != '')
	    return true;
	return false;    
	
}


function valid_email(fvalue) {
	var re = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/
	return re.test(fvalue)		
}

function valid_date(fvalue) {
	var datePat = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
	
	if (!datePat.test(fvalue)) 
			return false		
	
	var matchArray = fvalue.match(datePat);	
	
	var day=parseInt(matchArray[1],10);
	var month=parseInt(matchArray[2],10);
	var year=parseInt(matchArray[3],10);		
		
	if (month < 1 || month > 12 || day < 1 || day > 31 )	
		return false
		
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		if (lang == 'it')
			alert('Il mese ' + month + ' ha solo 30 giorni');
		else
			alert('is not a valid date');
			
		return false	
	}
		
	if (month == 2) 
	{ 		
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			if (lang == 'it')
				alert('febbraio ' + year + ' non ha ' + day + ' giorni');
			else
				alert('is not a valid date');
						
			return false
			}
		}	
return true
}

function trim(valuex)
{
  reTrim=/\s+$|^\s+/g
  return valuex.replace(reTrim,'')
}

function makeGiorno(){
	var xarray = new Array();
	xarray[0] = new Option('','');
	for (i=1;i<10;i++) xarray[i] = new Option('0'+i,'0'+i);
	for (i=10;i<=31;i++) xarray[i] = new Option(i,i);
	return xarray;
}

function makeMese(){
	var xarray = new Array()
	var mesiarray = (form.elements['lang'] && form.elements['lang'].value == 'en') ? 
												new Array('','January','February','March','April','May','June','July','August','September','October','November','December'):
												new Array('','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
									
	xarray[0] = new Option('','');
	for (i=1;i<10;i++) xarray[i] = new Option(mesiarray[i],'0'+i);
	for (i=10;i<=12;i++) xarray[i] = new Option(mesiarray[i],i);
	return xarray;
}

function makeAnno(){
	var xarray = new Array();
	xarray[0] = new Option('','');
	for (i=1;i<70;i++) xarray[i] = new Option(1936+i,1936+i);
	return xarray;
}

function populateCombo(xcombo,xarray){	
	for (m=xcombo.options.length-1;m>0;m--)
		xcombo.options[m]=null;
	var selectedarray=eval(xarray);
	for (i=0;i<selectedarray.length;i++)
			xcombo.options[i]=new Option(selectedarray[i].text,selectedarray[i].value);
	xcombo.options[0].selected=true;
}

function check_form_utente()
{	
  //alert('');
	if (form.elements['lang'] && form.elements['lang'].value == 'en')
			lang = 'en';
  
 

	if ( !check_field_nome('Nome', 'Nome', 'testo', true, '') ) {	
		form.elements['Nome'].focus();
		return false;
	}
	
	if ( !check_field('Cognome', 'Cognome', 'testo', true, '') ) {	
		form.elements['Cognome'].focus();
		return false;
	}	
				
	if ( !check_field_indirizzo('Indirizzo', 'Indirizzo', 'testo', true, '') ) {			
		form.elements['Indirizzo'].focus();
		return false;
	}
	
		if ( !check_field('Città', 'Città', 'testo', true, '') ) {			
		form.elements['Città'].focus();
		return false;
	}
	
	
	if ( !check_field('Provincia', 'Provincia', 'testo', true, '') ) {			
		form.elements['Provincia'].focus();
		return false;
	}
	
	if ( !check_field('Regione', 'Regione', 'testo', true, '') ) {			
		form.elements['Regione'].focus();
		return false;
	}
	
	if ( !check_field('Sesso', 'Sesso', 'combobox', true, '') ) {
	     form.elements['Sesso'].focus();
		   return false;
	}
	
	
	if ( !check_field('Maternita', 'Maternita', 'combobox', true, '') ) {
	     form.elements['Maternita'].focus();
		   return false;
	}

	
		
		if ( !check_field('NumeroFigli', 'NumeroFigli', 'numerico', true, '') ) {	
		form.elements['NumeroFigli'].focus();
		return false;
	}
	
		 // set data evento
	field_giorno = form.elements['giorno'];
	field_mese =	 form.elements['mese'];
	field_anno =	 form.elements['anno'];

	 
	if ( field_giorno[field_giorno.selectedIndex].value != '' &&  field_mese[field_mese.selectedIndex].value != '' &&  field_anno[field_anno.selectedIndex].value != '' ) {
	   form.elements['Data'].value = field_giorno[field_giorno.selectedIndex].value + '/' + 	field_mese[field_mese.selectedIndex].value + '/' + field_anno[field_anno.selectedIndex].value ;
	 }
	else {
		form.elements['Data'].value = '';
	}
 
 
	if ( !check_field_date_birth('Data', 'Data', 'testo', true, '') ) {			
	//	form.elements['Data'].focus();
		return false;
	}
	
	if ( !check_field('Cellulare', 'Cellulare', 'numerico', false, '') ) {	
		form.elements['Cellulare'].focus();
		return false;
	}
	
	if ( !check_field('Email', 'Email', 'email', true, '') ) {	
		form.elements['Email'].focus();
		return false;
	}
	
	if ( !check_field('Username', 'Username', 'alfanumerico', true, '') ) {			
		form.elements['Username'].focus();
		return false;
	}
	
				

  
  if ( !check_field('Password', 'Password', 'alfanumerico', true, '') ) {	
		form.elements['Password'].focus();
		return false;
	}
	
	 	if ( !check_field('Adesione', 'Adesione', 'checkbox', true, '') ) {
	//	form.elements['Adesione'].focus();
		return false;
	}
	
	

	form.action = '/Form/registra_utente_newsletter.php';
	return true;
	
}

function activateRequested(fid){
	var field = form.elements[fid];
	 for (j = 0; j < field.length; j++)
    field[j].disabled = false;  
}

function disabledRequested(fid){
	var field = form.elements[fid];
	 for (j = 0; j < field.length; j++)
    field[j].disabled = true;  
}





function init(thisform) {		
		form = thisform;

		if (form.elements['giorno']) populateCombo(form.elements['giorno'],makeGiorno());
		if (form.elements['mese']) populateCombo(form.elements['mese'],makeMese());
		if (form.elements['anno']) populateCombo(form.elements['anno'],makeAnno());
	
		
}
		
		

