/**
 * GUSTAVO
 * @version 0.1.9
 * @modify 0.0.1 originale
 * @modify 0.1.0 aggiunta funzioni di controllo per il tipo euro e il range di str
 * @modify 0.1.1 migliorato il controllo euro per i decimali
 * @modify 0.1.2 generazione dinamica del pattern per il controllo del range di str
 * @modify 0.1.3 aggiunta la funzione add_event
 * @modify 0.1.4 aggiunto il parametro opzionale settings su Gstv_open_popup
 * @modify 0.1.5 aggiunto funziona per il controllo dei Check
 * @modify 0.1.6 aggiunta funzione per identificare gli elementi con una determinata classe
 * @modify 0.1.7 aggiunta funzione per il controllo della validità di un campo data
 * @modify 0.1.8 focus su popup
 * @modify 0.1.9 funzione showHide
 * @author Francesco Giuliani, Marco Marcelloni, Lorenzo Massacci
 * @copyright 2005-2007 e-xtrategy s.r.l
 * @modify 09/10/2007
 * Questo  programma e'  software  libero; e'  lecito redistribuirlo  o
 * modificarlo secondo i termini  della Licenza Pubblica Generica GNU
 * come e' pubblicata dalla Free  Software Foundation; o la versione 2
 * della licenza o (a propria scelta) una versione successiva.
 * 
 * Questo programma  e' distribuito nella  speranza che sia  utile, ma
 * SENZA  ALCUNA GARANZIA;  senza  neppure la  garanzia implicita  di
 * NEGOZIABILITA'  o di  APPLICABILITA' PER  UN PARTICOLARE  SCOPO.  Si
 * veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.
 * 
 * Questo  programma deve  essere  distribuito assieme  ad una  copia
 * della Licenza Pubblica Generica GNU;  in caso contrario, se ne puo'
 * ottenere  una scrivendo  alla Free  Software Foundation,  Inc., 51
 * Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 * 
 **/

/* ********************************************************* APERTURA PAGINE IN POP-UP */
function Gstv_open_popup(page,settings) {
	if (settings=="") {
		wPopup = window.open(page,"Gstvpopup","width=500,height=350,scrollbars=yes,resizable=yes");
	} else {
		wPopup =window.open(page,"Gstvpopup",settings);
	}	
	wPopup.focus();
  return false;
}

/* ***************************************************************** GET ELEMENT BY ID */
function Gstv_restituisciElemento(id) {
	if (document.getElementById)
		elemento = document.getElementById(id);
	else if (document.all)
		elemento = document.all[id];
	else if (document.layers)
		elemento =  document.layers[id];
	else
		alert("Browser incompatibile!");
	return elemento;
}

/* **********************************************************CONTROLLA ID COME STIRNGA */
function Gstv_controllaObbStringa(id) {
	if 	(id.value=="") {
		return false;
	}
	return true;
}

/* **********************************************************CONTROLLA ID COME CHECK */
function Gstv_controllaObbCheck(id) {
	if 	(id.checked=="") {
		return false;
	}
	if 	(id.checked==false) {
		return false;
	}
	return true;
}

/* ***********************************************************IMPOSTA IL COLORE FINALE */
function Gstv_coloraCampi (id,sfondo,testo) {
	id.style.background='#'+sfondo;
	id.style.color='#'+testo;
}

/* ***********************************************************************STAMPA ALERT */
function Gstv_azionaAlert (msg) {
	alert(msg);
}

/* *******************************************************CONTROLLO FORMATTAZIONE MAIL */
function Gstv_validaEmail(campoEmail) {
	if (campoEmail.value != "") {
		_pattern=/^[\w\-]+(\.?\-?\w+)*@[a-zA-Z0-9]+(\.?\-?[a-zA-Z0-9]+){2,}\.[a-zA-Z]{2,}$/;
		if (_pattern.test(campoEmail.value)==false) {
			return false;
		}
	}
	return true;
}

/* ********************************************************CONTROLLO FORMATTAZIONE INT */
function Gstv_validaInt(campoInt) {
	if (campoInt.value != "") {
		_pattern=/^(\d)+$/;
		if (_pattern.test(campoInt.value)==false) {
			return false;
		}
	}
	return true;
}

/* *******************************************************CONTROLLO FORMATTAZIONE EURO */
function Gstv_validaEuro(campoEuro) {
	if (campoEuro.value != "") {
		_pattern=/^(\d)+(\.(\d){1,2})?$/;  /* se c'è il . ci deve essere 1 o 2 decimali */
		if (_pattern.test(campoEuro.value)==false) {
			return false;
		}
	}
	return true;
}

/* ******************************************************CONTROLLO VALORI CENTRALI INT */
function Gstv_rangeInt(campoInt,min,max) {
	if (campoInt.value != "") {
		if ((Gstv_minInt(campoInt,min)) && (Gstv_maxInt(campoInt,max))) {
			return true;
		}
		else {
			return false;
		}
	}
	return true;
}

/* ********************************************************CONTROLLO VALORI MINIMI INT */
function Gstv_minInt(campoInt,min) {
	if (typeof(min) == "number") {
		if (campoInt.value >= min) {
			return true;
		}
		else {
			return false;
		}
	}
	else {
		return true;
	}

}

/* *******************************************************CONTROLLO VALORI MASSIMI INT */
function Gstv_maxInt(campoInt,max) {
	if (typeof(max) == "number") {
		if (campoInt.value <= max) {
			return true;
		}
		else {
			return false;
		}
	}
	else {
		return true;
	}

}

/* ******************************************************CONTROLLO VALORI CENTRALI STR */
function Gstv_rangeStr(campoStringa,min,max) {
	if (campoStringa.value != "") {
		pattern='^.{';
		if (min != "*") {
			pattern += min;
			pattern += ',';
		}
		else {
			pattern += '0,';
		}
		if (max != "*") {
			pattern += max;
		}
		pattern += '}$';
		espressione = new RegExp(pattern);
		return espressione.test(campoStringa.value);
	}
	return true;
}

/* **********************************************CONTROLLO VALIDITA' DELLA PARTITA IVA */
function Gstv_validaPartitaIVA(sz_Codice) {
	/*QUESTO FUNZIONE E' STATA COPIATA COSI' DAL SITO DI ANTEG: NON SO PERCHE' QUESTA PARTE E' COMMENTATA*/
	/*var n_Val,n_Som1=0,n_Som2=0,lcv;
	if (sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0))
		return false;
   
	for (lcv=0;lcv<9;lcv+=2) {
		n_Val=parseInt(sz_Codice.charAt(lcv));
		n_Som1+=n_Val;
		n_Val=parseInt(sz_Codice.charAt(lcv+1));
		n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
	}
	n_Som2 = 10 - (n_Som1 % 10);
	n_Val=parseInt(sz_Codice.charAt(10));
	if (n_Som2==n_Val)
		return true;
	return false;*/
	/* NON SEMBRA CHE FUNZIONI */
	/*if (sz_Codice!='') {
		if (sz_Codice.length!=11 || sz_Codice=='00000000000')
			return false;
		else
			return true;	
	} else {
		return false; 
	}*/
	/* RIFACIMENTO */
	if (sz_Codice.value != "") {
		_pattern=/^\d{11}$/;
		if ((_pattern.test(sz_Codice.value)==false) || (sz_Codice.value == 00000000000)) {
			return false;
		}
	}
	return true;
}

/* **********************************************PERMETTE DI AGGIUNGERE DINAMICAMENTE UN EVENTO AD UN ELEMENTO JS */
function Gstv_addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}


/* ********************************************** Un metodo elegante per identificare gli elementi di una determinata classe. */
function Gstv_getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if (node == null)
    node = document;
  if (tag == null)
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}

/* **********************************************CONTROLLO VALIDITA' DATA */
function Gstv_controlloData(data) {
	strData = data.value;
	if (strData != "") {
		if (strData.length != 10) {
			alert("La data inserita non è valida");
			return false;
		} else {
			gg = strData.substring(0,2);
			mm = strData.substring(3,5);
			aa = strData.substring(6,10);
			data = new Date(aa,mm-1,gg);                 
			year=data.getYear();
			if ((navigator.appName == "Microsoft Internet Explorer") && (year < 2000))              
				year=1900 + year;
			if (navigator.appName == "Netscape") 
				year=1900 + year; 
			if (navigator.appName == "Opera") 
				year=1900 + year;   
			if(data.getDate() != gg || data.getMonth()+1 != mm || year != aa) {
				alert("La data inserita non è valida");
				return false;
			} 
		} 
	}
	return true;
}

/* **********************************************Mostra nascondi */
function Gstv_showHide(id) {
	if (elemento = Gstv_restituisciElemento(id)) {
		if ((elemento.style.display=="none") || (elemento.style.display=="")) {
			elemento.style.display = "block";
		} else {
			elemento.style.display = "none";
		}
	}	
	return false;
}