var form;

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 '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;
		case 'telephone'	:
						check = check_field_telephone(fid, fdesc, freq, fdefault);
						break;				
	}
	return 	check;
}

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)) {				
			alert('Il campo "' + fdesc +'" non è valido.');					
			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)){
			alert('Il campo "' + fdesc +'" non è valido.');
			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)){		
			alert('Il campo "' + fdesc +'" non è valido, deve essere  gg/mm/aaaa es. 01/05/1985')
			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)) {		
		alert('Il campo "' + fdesc +'" non è valido.')
		return false;
	}
	return true;
}

function check_field_telephone(fid, fdesc, freq, fdefault) {
	var fvalue = form.elements[fid].value;
	if (freq && fvalue == '') {
		 required_field(fdesc);
		 return false;
	}	
	if (!valid_telephone(fvalue)) {		
		alert('Il campo "' + fdesc +'" non è valido, deve essere es. 021234567 oppure 00393473265834')
		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){				
			alert('Testo del campo "' + fdesc +'" troppo lungo verrà troncato a 1000 caratteri. ');
			form.elements[fid].value = fvalue.substring(0,999);
			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('exe','bin','com','pif','src','inf');
		
		var ext = fvalue.substring(fvalue.lastIndexOf(".")+1, fvalue.length).toLowerCase();
		for (var i = 0; i < validExt.length ; i++)
               if (ext == validExt[i]) {                      
											alert('Il campo "' + fdesc +'" non è valido, solo foto o video');
											return false;
								}
		return true;
	}
	return true;                                                
}


function required_field(fdesc) {
		alert('Il campo "' + fdesc + '" è obbligatorio.');
}

function required_field_select(fdesc) {	
		alert('Selezionare un valore per il campo "' + fdesc + '".');		
}

function required_field_check(fdesc) {	
		alert('E\' necessario selezionare il campo "' + fdesc + '".');			
}

function required_field_choose(fdesc) {
		alert('Selezionare uno o più valori per il campo "' + fdesc + '".');
}

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_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) {		
			alert('Il mese ' + month + ' ha solo 30 giorni');
			return false	
	}
		
	if (month == 2) 
	{ 		
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {			
				alert('febbraio ' + year + ' non ha ' + day + ' giorni');									
				return false;
			}
		}	
return true;
}

function valid_telephone(fvalue)
{	
	var re = /^[\d]+[\d]+$/
	return re.test(fvalue)
}


function trim(valuex)
{
  reTrim=/\s+$|^\s+/g
  return valuex.replace(reTrim,'')
}


function reformat(valuex){			
  valuex = valuex.replace(/[;]+/g,' ');
  valuex = trim(valuex.replace(/[\n\r]/g,' '));
	return valuex;
}

function check_form(thisform)
{	
	form = thisform;		
	if ( !check_field('nome', 'Nome', 'testo', true, '') ) {	
		form.elements['nome'].focus();
		return false;
	}
	
	if ( !check_field('cognome', 'Cognome', 'testo', true, '') ) {	
		form.elements['cognome'].focus();
		return false;
	}
	
	form.elements['datanascita'].value = form.elements['day'].value + "/" + form.elements['month'].value + "/" + form.elements['year'].value;
	
	if ( !check_field('datanascita', 'Data di nascita', 'data', true, '') ) {	
		form.elements['datanascita'].focus();
		return false;
	}
	
	if ( !check_field('telefono', 'Telefono', 'telephone', true, '') ) {	
		form.elements['telefono'].focus();
		return false;
	}
	if ( !check_field('email', 'E-mail', 'email', true, '') ) {	
		form.elements['email'].focus();
		return false;
	}
	if ( !check_field('specialita', 'Specialita', 'combobox', true, '') ) {	
		form.elements['specialita'].focus();
		return false;
	}
	if ( !check_field('oggetto', 'Oggetto', 'testo', true, '') ) {	
		form.elements['oggetto'].focus();
		return false;
	}
	if ( !check_field('testoesteso', 'Commento', 'textarea', true, '') ) {	
		form.elements['testoesteso'].focus();
		return false;
	}	
	/*
	if ( !check_field('consenso', 'Acconsento', 'checkbox', true, '') ) {	
		form.elements['consenso'].focus();
		return false;
	}
	*/
	if ( !check_field('allegato', 'Allegato', 'file', false, '') ) {	
		form.elements['allegato'].focus();
		return false;
	}
	
	var acconsenti;
	if (form.consenso[0].checked) acconsenti="ok_acconsento";
	else acconsenti="NON_acconsento";
	
	var colonnasonora;
	if (form.colonnasonora[0].checked) colonnasonora="colonnasonora_presente";
	else colonnasonora="colonnasonora_assente";
		
	form.elements['textheaderform'].value = 'Nome;Cognome;DataNascita;Telefono;Email;SitoWeb;Spacialita;Oggetto;Testo;Consenso;ColonnaSonora;Titolo;AutoreCompositore;EdizioneMusicale;CasaDiscografica;';
	form.elements['textdataform'].value = 
	reformat(form.elements['nome'].value) + ';' +
  reformat(form.elements['cognome'].value) + ';' +
  reformat(form.elements['datanascita'].value) + ';' +
  reformat(form.elements['telefono'].value) + ';' +  
	reformat(form.elements['email'].value) + ';' +
	reformat(form.elements['sitoweb'].value) + ';' +
	reformat(form.elements['specialita'].value) + ';' +
	reformat(form.elements['oggetto'].value) + ';' + 	 
  reformat(form.elements['testoesteso'].value) + ';' + acconsenti + ';' + colonnasonora + ';' +
  reformat(form.elements['titolo_colonnasonora'].value) + ';' + 
  reformat(form.elements['autorecompositore_colonnasonora'].value) + ';' + 
  reformat(form.elements['edizionemusicale_colonnasonora'].value) + ';' + 
  reformat(form.elements['casadiscografica_colonnasonora'].value) + ';'
  
	form.action = 'http://servizi.mediaset.it/Contenuti/tgcom120secondiReportCSV.jsp';			
	return true;
}


