// RapidCode utilty è nato con l'intento di velocizzare alcune operazioni javascript
//generiche
function campo(id_field){
	return document.getElementById(id_field);
	}
	
function valore(id_field){
	return document.getElementById(id_field).value;
	}//valore

function equals(id_field, id_field2){
	return valore(id_field)==valore(id_field2);
	}
	
function gt(id_field, num){
	return length(id_field)>num;
	}

function lt(id_field, num){
	return length(id_field)<num;
	}

function eq(id_field, num){
	return length(id_field)==num;
	}

function html(id_field){
	return document.getElementById(id_field).innerHTML;
	}//html

function stile(id_field){
	return document.getElementById(id_field).style;
	}//style

function length(id_field){
	return valore(id_field).length;
	}//length

function display(id_field){
	stile(id_field).display='';
	}//display

function hide(id_field){
	stile(id_field).display='none';
	}//hide
	
//function AJAX
function initRequest(){
	if (window.ActiveXObject) return new ActiveXObject("MICROSOFT.XMLHTTP");
	if (window.XMLHttpRequest) return new XMLHttpRequest();
	alert('Browser error');
	}

function doRequest(url, dest){
	//dest= 'alert', 'id.location', where location=innerHTML, value...etc
	var method='GET';
	var async=true;
	
	var req=initRequest();
	
	req.open(method, url, async);
	req.onreadystatechange=function(){
		if (req.readyState==4 && req.status==200) {
			if (dest=='alert') alert(req.responseText);
			if (dest!='') {
				var roba=dest.split('.');
				if (roba[1]=='innerHTML') document.getElementById(roba[0]).innerHTML=req.responseText;
				if (roba[1]=='value') document.getElementById(roba[0]).value=req.responseText;
				}//inner if
			}//if
		}
	req.send(null);
	}

//function fade
function opacity(id, opacStart, opacEnd, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

function changeOpac(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}
//fade effect provided by http://brainerror.net/scripts/javascript/blendtrans/

function fadeIn(id){
	opacity(id, 0, 100, 1000);
}

function fadeOut(id){
	opacity(id, 100, 0, 1000);
}


//function errore
function errore(id_field){
	//id_field=data_di_nascita --> nome_campo=Data Di Nascita
	var campo=id_field.split('_');
	var nome_campo="";
	for (i=0; i<campo.length; i++){
		campo[i]=campo[i].substr(0, 1).toUpperCase() + campo[i].substr(1);
		nome_campo+=campo[i]+" ";
	}
	alert('Compilare correttamente il campo '+nome_campo);
	document.getElementById(id_field).focus();
	return false;
	}//errore
	
function errore_mex(id_field, messaggio){
	//id_field=data_di_nascita --> nome_campo=Data Di Nascita
	var campo=id_field.split('_');
	var nome_campo="";
	for (i=0; i<campo.length; i++){
		campo[i]=campo[i].substr(0, 1).toUpperCase() + campo[i].substr(1);
		nome_campo+=campo[i]+" ";
	}
	alert(messaggio);
	document.getElementById(id_field).focus();
	return false;
	}//errore

//controlli

function codice_fiscale(id_field){
	var cf=valore(id_field);
	var validi, i, s, set1, set2, setpari, setdisp;
    if( cf == '' )  return errore(id_field);
    cf = cf.toUpperCase();
    if( cf.length != 16 )
        return errore(id_field);
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
        if( validi.indexOf( cf.charAt(i) ) == -1 )
            return errore(id_field);
    }
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    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 errore(id_field);
    return true;
	}//codice_fiscale

function controlla_data(idGiorno, idMese, idAnno){
	
	var giorno=valore(idGiorno);
	var mese=valore(idMese);
	var anno=valore(idAnno);
	
	if (isNaN(giorno)) return errore(idGiorno);
	if (giorno=='') return errore(idGiorno);
	if (giorno<1) return errore(idGiorno);
	if (giorno>31) return errore(idGiorno);	
	
	if (isNaN(mese)) return errore(idMese);
	if (mese=='') return errore(idMese);
	if (mese<1) return errore(idMese);
	if (mese>12) return errore(idMese);
	
	
	if (isNaN(anno)) return errore(idAnno);	
	if (anno=='') return errore(idAnno);
	if (anno<1900) return errore(idAnno);
	var data_curr=new Date();
	//if (anno>data_curr.getYear()) return errore(idAnno);
	
	
	if (mese==1 || mese==3 || mese==5 || mese==7 || mese==8 || mese==10 || mese==12){}//if
	else {
		if (giorno==31) return errore(idGiorno);
		}//else
		
	if (anno%4==0){}//if
	else {
		if (mese==2 && giorno==29) return errore(idGiorno);
		}//else
		
	return true;
	}//controlla_data

function email(id_field){
	var email=valore(id_field);
	if (email=='') return false;//errore(id_field);
	if (email.indexOf('@')<5) return false;//errore(id_field);
	if (email.length<10){
			return false;//errore(id_field);
		}//if
		var comodo=email.split('@');
		if (comodo[1]<5){
			return false;//errore(id_field);
		}//if
		var estensione=comodo[1].split('.');
		var tail=estensione[estensione.length-1];
		if (!isNaN(estensione[0])){
			return false;//errore(id_field);
		}//if
		tail=tail.toUpperCase();
		if (tail!='COM' && tail!='NET' && tail!='ORG' && tail!='EDU'&& tail!='GOV' && tail!='INFO' 
		  && tail!='AD' && tail!='AE' && tail!='AF' && tail!='AG' && tail!='AI' && tail!='AL' && tail!='AM' && tail!='AN' && tail!='AO' && tail!='AQ' && tail!='AR' && tail!='AS' && tail!='AT' && tail!='AU' && tail!='AW' && tail!='AZ' && tail!='BA' && tail!='BB' && tail!='BD' && tail!='BE' && tail!='BF' && tail!='BG' && tail!='BH' && tail!='BI' && tail!='BJ' && tail!='BM' && tail!='BN' && tail!='BO' && tail!='BR' && tail!='BS' && tail!='BT' && tail!='BV' && tail!='BW' && tail!='BY' && tail!='BZ' && tail!='CA' && tail!='CC' && tail!='CF' && tail!='CG' && tail!='CH' && tail!='CI' && tail!='CK' && tail!='CL' && tail!='CM' && tail!='CN' && tail!='CO' && tail!='CR' && tail!='CS' && tail!='CU' && tail!='CV' && tail!='CX' && tail!='CY' && tail!='CZ' && tail!='DE' && tail!='DJ' && tail!='DK' && tail!='DM' && tail!='DO' && tail!='DZ' && tail!='EC' && tail!='EE' && tail!='EG' && tail!='EH' && tail!='ES' && tail!='ET' && tail!='FI' && tail!='FJ' && tail!='FK' && tail!='FM' && tail!='FO' && tail!='FR' && tail!='FX' && tail!='GA' && tail!='GB' && tail!='GD' && tail!='GE' && tail!='GH' && tail!='GI' && tail!='GL' && tail!='GP' && tail!='GQ' && tail!='GF' && tail!='GM' && tail!='GN' && tail!='GR' && tail!='GT' && tail!='GU' && tail!='GW' && tail!='GY' && tail!='HK' && tail!='HM' && tail!='HN' && tail!='HR' && tail!='HT' && tail!='HU' && tail!='ID' && tail!='IE' && tail!='IL' && tail!='IN' && tail!='IO' && tail!='IQ' && tail!='IR' && tail!='IS' && tail!='IT' && tail!='JM' && tail!='JO' && tail!='JP' && tail!='KE' && tail!='KG' && tail!='KH' && tail!='KI' && tail!='KM' && tail!='KN' && tail!='KP' && tail!='KR' && tail!='KY' && tail!='KZ' && tail!='LA' && tail!='LB' && tail!='LC' && tail!='LI' && tail!='LK' && tail!='LR' && tail!='LS' && tail!='LT' && tail!='LU' && tail!='LV' && tail!='LY' && tail!='MA' && tail!='MC' && tail!='MD' && tail!='MG' && tail!='MH' && tail!='ML' && tail!='MM' && tail!='MN' && tail!='MO' && tail!='MP' && tail!='MQ' && tail!='MR' && tail!='MS' && tail!='MT' && tail!='MU' && tail!='MV' && tail!='MW' && tail!='MX' && tail!='MY' && tail!='MZ' && tail!='NA' && tail!='NC' && tail!='NE' && tail!='NF' && tail!='NG' && tail!='NI' && tail!='NL' && tail!='NO' && tail!='NP' && tail!='NR' && tail!='NT' && tail!='NU' && tail!='NZ' && tail!='OM' && tail!='PA' && tail!='PE' && tail!='PF' && tail!='PG' && tail!='PH' && tail!='PK' && tail!='PL' && tail!='PM' && tail!='PN' && tail!='PT' && tail!='PR' && tail!='PW' && tail!='PY' && tail!='QA' && tail!='RE' && tail!='RO' && tail!='RU' && tail!='RW' && tail!='SA' && tail!='SB' && tail!='SC' && tail!='SD' && tail!='SE' && tail!='SG' && tail!='SH' && tail!='SI' && tail!='SJ' && tail!='SK' && tail!='SL' && tail!='SM' && tail!='SN' && tail!='SO' && tail!='SR' && tail!='ST' && tail!='SU' && tail!='SV' && tail!='SY' && tail!='SZ' && tail!='TC' && tail!='TD' && tail!='TF' && tail!='TG' && tail!='TH' && tail!='TJ' && tail!='TK' && tail!='TM' && tail!='TN' && tail!='TO' && tail!='TP' && tail!='TR' && tail!='TT' && tail!='TV' && tail!='TW' && tail!='TZ' && tail!='UA' && tail!='UG' && tail!='UK' && tail!='UM' && tail!='US' && tail!='UY' && tail!='UZ' && tail!='VA' && tail!='VC' && tail!='VE' && tail!='VG' && tail!='VI' && tail!='VN' && tail!='VU' && tail!='WF' && tail!='WS' && tail!='YE' && tail!='YU' && tail!='ZA' && tail!='ZM' && tail!='ZR' && tail!='ZW' ){
			return false;//errore(id_field);
		}//if
		return true;
	}//email

// comportamento

function abilita(id_field){
	var c=campo(id_field);
	c.disabled=false;
	}

function abilitaAll(form_id){
	var form='';
	for (i=0; i<document.forms.length; i++) if (document.forms[i].id==form_id) form=document.forms[i];
	var elementi=form.elements;
	for (i=0; i<elementi.length; i++) abilita(elementi[i].id);
	}

function disabilita(id_field){
	var c=campo(id_field);
	c.disabled=true;
	}

function disabilitaAll(form_id){
	var form='';
	for (i=0; i<document.forms.length; i++) if (document.forms[i].id==form_id) form=document.forms[i];
	var elementi=form.elements;
	for (i=0; i<elementi.length; i++) disabilita(elementi[i].id);
	}


//di stile

function background(id_field, bgcolor){
	var stiles=stile(id_field);
	stiles.backgroundColor=bgcolor;
	}

function bordo(id_field, property){
	var stiles=stile(id_field);
	/*
	allowed form:
		borderWidth borderStyle borderColor
	*/
	var curr=property.split(' ');
	if (curr.length<3) {
		alert('property di bordo nella forma: borderWidth(px) borderStyle(medium, thin, thick, dashed, dotted, double, groove, hidden, inset, none, outset, ridge, solid) borderColor(#hex)');
		return;
		}
	stiles.border=property;
	}

function margini(id_field, property){
	var stiles=stile(id_field);
	/*
	allowed form:
		XXpx XXpx XXpx XXpx
	*/
	var curr=property.split(' ');
	if (curr.length<4){
		alert('property di margini nella forma: NNpx MMpx TTpx YYpx');
		return;
		}
	stiles.margin=property;
	}
	
function padding(id_field, property){
	var stiles=stile(id_field);
	/*
	allowed form:
		XXpx XXpx XXpx XXpx
	*/
	var curr=property.split(' ');
	if (curr.length<4){
		alert('property di padding nella forma: NNpx MMpx TTpx YYpx');
		return;
		}
	stiles.padding=property;
	}

function height(id_field, height){//not workin
	var stiles=stile(id_field);
	/*
	allowed form:
		XXXXpx
	*/
	stiles.height=height;
	}

function width(id_field, width){//not workin
	var stiles=stile(id_field);
	/*
	allowed form:
		XXXXpx
	*/
	stiles.width=width;
	}

function color(id_field, color){
	var stiles=stile(id_field);
	/*
	allowed form:
		#** ** ** (with no spaces)
	*/
	stiles.color=color;
	}

function font_family(id_field, font_family){
	var stiles=stile(id_field);
	/*
	allowed values:
		times -> "Times New Roman", Times, serif
		arial -> Arial, Helvetica, sans-serif
		verdana -> Verdana, Arial, Helvetica, sans-serif
		courier -> "Courier New", Courier, monospace
	*/
	if (font_family=='times') stiles.fontFamily='"Times New Roman", Times, serif';
	else if (font_family=='arial') stiles.fontFamily='Arial, Helvetica, sans-serif';
	else if (font_family=='verdana') stiles.fontFamily='Verdana, Arial, Helvetica, sans-serif';
	else if (font_family=='courier') stiles.fontFamily='"Courier New", Courier, monospace';
	else {
		alert('property di font-family nella forma:\ntimes -> "Times New Roman", Times, serif\narial -> Arial, Helvetica, sans-serif\nverdana -> Verdana, Arial, Helvetica, sans-serif\ncourier -> "Courier New", Courier, monospace');
		return;
		}
	}

function font_size(id_field, font_size){
	var stiles=stile(id_field);
	/*
	allowed values:fontSize
		xx-small
		x-small
		small
		medium
		large
		x-large
		xx-large 	
	*/
	var allowed=Array("xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large");
	var trovato=false;
	for (i=0; i<allowed.length; i++) if (allowed[i]==font_size) trovato=true;
	if (!trovato) {
		alert('property di font-size nella forma:\n xx-small\nx-small\nsmall\nmedium\nlarge\nx-large\nxx-large');
		return;
		}
	stiles.fontSize=font_size;
	}

function font_style(id_field, font_style){
	var stiles=stile(id_field);
	/*
	allowed values:fontStyle
		normal
		italic
	*/
	stiles.fontStyle=font_style;
	}

function font_weight(id_field, font_weight){
	var stiles=stile(id_field);
	/*
	allowed values:fontWeight
		normal 
		lighter
		bold
		bolder
	*/
	stiles.fontWeight=font_weight;
	}

function align(id_field, alignment){//not workin
	var stiles=stile(id_field);
	/*
	allowed values:textAlign
		left
		right
		center
		justify
	*/
	stiles.textAlign=alignment;
	}

//tabella tabelle

function crea_cella(riga, indice, valore){
	var x=document.getElementById(riga).insertCell(indice);
	x.innerHTML=valore;
	}
	
function modifica_cella(tabella, riga, indice, valore){
	var x=document.getElementById(tabella).rows[riga].cells;
	x[indice].innerHTML=valore;
	}
	
function elimina_cella(riga, indice){
	document.getElementById(riga).deleteCell(indice);
	}

function crea_riga(tabella, id_riga, array_celle){
	var x=document.getElementById(tabella);
	var righe=x.rows.length;
	var indice_nuova_riga=righe;
	var tmp=x.insertRow(indice_nuova_riga);
	
	document.getElementById(tabella).rows[indice_nuova_riga].id=id_riga;
	
	for (i=0; i<array_celle.length; i++) {
			var cella_curr=tmp.insertCell(i);
			cella_curr.innerHTML=array_celle[i];
		}//for
	}
	
function modifica_riga(){}

function elimina_riga(tabella, id_riga){
	//var l=document.getElementById(tabella).rows.length;
	//for(i=0; i<l; i++) alert(document.getElementById(tabella).rows[i].id);
	var indice=document.getElementById(id_riga).rowIndex;
	document.getElementById(tabella).deleteRow(indice);
	}

function mostra_riga(){}

/*
function nascondi_riga(){}

function crea_colonna(tabella, colonna, array_celle){
	for (i=0; i<array_celle.length; i++){
		var x=document.getElementById(tabella).rows[i];
		x.insertCell(colonna);
		x.innerHTML=array_celle[i];
		}//for
	}
	
function modifica_colonna(){}
function elimina_colonna(){}
*/
