/**********************************************************************
 *
 * Javascript Comuni - BMR Genomics
 * created by Gabriele - 16/09/2007 
 *
 **********************************************************************/
 
function newBrWin(page,title,w,h) {	
	if(w == '') {
		var wd = 450;	
	}	
	else {
		var wd = w;	
	}
	if(h == '') {
		var hg = 450;	
	}
	else {
		var hg = h;	
	}
	var titolo = title;
	searchWin = window.open(page,titolo,'scrollbars=yes,resizable=yes,width='+wd+',height='+hg+',status=no,location=no,toolbar=no');
}

function goToURL(address) {
	location.href = address;
}

//Controlla se un campo numerico è maggiore di 0
function gtzero(sText) {
	var gt = true;
	if(parseInt(sText) <= 0) {
		gt = false	
	}
	return gt;
}

//Controlla se un testo è numerico.
function IsNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

//Elimina gli spazi bianchi da una stringa
function trim(stringa) {
	while (stringa.substring(0,1) == ' ')
	{
		stringa = stringa.substring(1, stringa.length);
	}
	while (stringa.substring(stringa.length-1, stringa.length) == ' ')
	{
		stringa = stringa.substring(0,stringa.length-1);
	}
	return stringa;
}

//Controlla se un indirizzo e-mail è valido
function isMailAddress(address)
{
	var x = address;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) {
		return true;	
	}
	else {
		return false;	
	};
}

/********************************************************
 * Spedisce una mail controllando l'indirizzo ed eventualmente
 * caricando un alert 
 *
 ********************************************************/
function sendMail(lingua) {
	var noAddrErr;
	var badAddrErr;
	var successMsg;
	
	var address = document.forms[1].sender.value;	
	if(lingua == 'it') {
		noAddrErr = 'Inserire un indirizzo e-mail valido!';
		badAddrErr = 'L\'indirizzo e-mail introdotto non è valido!';
		successMsg = 'E-Mail inviata. Grazie per il vostro contributo!';				
	}		
	else {
		noAddrErr = 'Insert a valid e-mail address';
		badAddrErr = 'Bad e-amil address!';
		successMsg = 'Your e-mail has been successfully sent. Thank you for your collaboration!';					
	}
	if( address == "" ) {
		alert(noAddrErr);
		return;
	}
	if( !isMailAddress(address) ) {
		alert(badAddrErr);
		return;
	}
	document.forms[1].submit();
	return;
}

//Controlla se una data è valida
function isValidDate(day, month, year) {
	var strDate = month+'/'+ day+'/'+year;
	var myDate = new Date( Date.parse(strDate) );
	if( myDate.getDate()  == day && myDate.getFullYear()  ==year && myDate.getMonth() ==(month-1) ) {
		//Controlla se la data è dopo il 1900  		
  		if( dateCompare(day, month, year,1,1,1900) < 0 ) {
			return false;  		
  		}
  		return true;
	} 
	else {
		return false;  	
  	}
}

//Controlla se una data è precedente a oggi
function beforeToday(day, month, year) {
	var strDate = month+'/'+ day+'/'+year;
	var myDate = new Date( Date.parse(strDate) );
	
	var today = new Date();
	var d1 = myDate.getTime();
	var d2 = today.getTime();
	if( d2 < d1 ) {
		return false;	
	}
	else {
		return true;	
	}
}

//Confronta 2 date, ritorna 0 se uguali, -1 se 1<2, 1 se 1>2 
function dateCompare(day1, month1, year1, day2, month2, year2) {
	var strDate1 = month1+'/'+ day1+'/'+year1;
	var myDate1 = new Date( Date.parse(strDate1) );
	
	var strDate2 = month2+'/'+ day2+'/'+year2;
	var myDate2 = new Date( Date.parse(strDate2) );	
	
	var d1 = myDate1.getTime();
	var d2 = myDate2.getTime();
	if( d2 == d1 ) {
		return 0;	
	}
	else {
		if( d1 < d2 ) {
			return -1;				
		}
		else {
			return 1;		
		}		
	}
}

 /******************************************************************************
 *Include una pagina html nella pagina corrente (usato per le parti comuni)
 *To include a page, invoke ajaxinclude("afile.htm") in the BODY of page
 *Included file MUST be from the same domain as the page displaying it.
 ******************************************************************************/
var rootdomain="http://"+window.location.hostname;


function ajaxinclude(url) {
var page_request = false;
if (window.XMLHttpRequest) // if Mozilla, Safari etc
	page_request = new XMLHttpRequest();
else 
	if (window.ActiveXObject) { // if IE
				
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}
	else
		return false;

page_request.open('GET', url, false); //get page synchronously 
page_request.send(null);
writecontent(page_request);
}

function writecontent(page_request){
	//if (window.location.href.indexOf("http")==-1 || page_request.status==200)
	if (page_request.status==200)					
		document.write(page_request.responseText);
}
/**************************************************************************************
 * Ajax che produce dinamicamente un pezzo di pagina in base al valore di un parametro
 * (Versione più figa)
 *      ajaxform                => si deve chiamare il form in cui l'input è compreso
 * parName                      => nome (id) del parametro che viene passato
 * targetName           => nome del <div> dove comparirà l'effetto dell'ajax
 **************************************************************************************/
function xmlhttpPostDyn(strURL,parName,targetName) {
    var xmlHttpReq = false;
    var self = this;
    var par = parName;
    var target = targetName;
	
	   
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }

    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepageDyn(self.xmlHttpReq.responseText,target);
        }
    }
    self.xmlHttpReq.send(getquerystringDyn(par));
}

function getquerystringDyn(parName) {
	if(  parName == '' ) {
		return '';	
	} 
	//Separo più parametri con il simbolo '.'

	var p = 0;
	var qstr = "";
	var array_par = parName.split('.');
	for( p=0; p<array_par.length; p++ ) {
    	var nome       = array_par[p];
    	var parameter  = document.getElementById(nome).value;  
    	qstr = qstr + nome+'='+parameter+'&';  // NOTE: no '?' before querystring
	}
    return qstr;
}

function updatepageDyn(str,target) {
    var trg = target;
    document.getElementById(target).innerHTML = str;
}



/**************************************************************************************
 * Ajax che produce dinamicamente un pezzo di pagina in base al valore di un parametro
 *	ajaxform 		=> si deve chiamare il form in cui l'input è compreso
 * param 			=> si deve chiamare l'input
 * result			=> si deve chiamare il div dove si visualizza il pezzo di pagina
 * target			=> parte della pagina in cui scrivere
 **************************************************************************************/
function xmlhttpPost(strURL,target) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText,target);
        }
    }
    self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
    var form      = document.forms['ajaxform'];
    var parameter = form.param.value;    
    qstr = 'param='+parameter;  // NOTE: no '?' before querystring
	     
    return qstr;
}

function updatepage(str,target) { 
    document.getElementById(target).innerHTML = str;
}

/***********************************************************************/
function cambiaLingua(lingua) {
	var pageAdd = window.location.href;
	page = new String(pageAdd);	
	
	re_html = new RegExp("webp\/[a-z]{2}/");
	re_perl = new RegExp("lingua=[a-z]{2}&");
	if( re_html.exec(page) != null ) {
		var rstr = 'webp/'+lingua;
  		newpage = page.replace(/webp\/[a-z]{2}/,rstr);
	}
	else {	
		if( re_perl.exec(page) != null ) {  			
			var rstr2 = 'lingua='+lingua+'&';
			newpage = page.replace(/lingua=[a-z]{2}&/,rstr2);
		}
		else {
			newpage = '/webp/'+lingua+'/index.html';		
		}
	}	
	goToURL(newpage);
		
	return;	
}
/**********************************************************
 * Chiude una div aperta con ajax senza ricaricare la pag
 * riceve in input il div da cancellare
 ***********************************************************/
function closeAjaxDiv (nomediv) {
		document.getElementById(nomediv).innerHTML = '';
} 
/*************************************************************************************
  * Gestione accenti per motore di ricerca
  **************************************************************************************/
function cerca() {
	document.forms['search'].query.value = escape(document.forms['search'].query.value); 
	document.forms['search'].submit(); 	
}
/**************************************************************************************
 * Include le news tramite ajax
 *	ajaxform 		=> si deve chiamare il form in cui l'input è compreso
 * target			=> parte della pagina in cui scrivere
 **************************************************************************************/
/*
function news (index,lingua) {
	var i=index; //indice della news da includere tramite ajax
	var l=lingua;
			
	var url = '/webp/'+l+'/gen/news/news_'+i+'.html';		
	xmlhttpPost(url,'result');	
}	
*/

/*******************************************************
 * Funzioni che usano JQuery
 * (richiedono di essere messe dentro '\$(document).ready(function() {'
 *	
 ********************************************************/
//nasconde un campo di input e la sua label in base a un valore 
 function jq_nascondi(param,valore,id_input,id_label) {
	 if (param == valore) {
       $('#'+id_label).show();
       $('#'+id_input).show();	 
	 }
	 else {
       $('#'+id_label).hide();
       $('#'+id_input).hide();
   
       $('#'+id_input).attr('value', '');
	  }
}
//Stessa funzione ma riceve un array di campi 
 function jq_nascondiArray(param,valore,array_id) {
   if (param == valore) {
      for(var i=0; i< array_id.length; i++) {
         $('#'+array_id[i]).show();
      }
   }
   else {
      for(var i=0; i< array_id.length; i++) {
         $('#'+array_id[i]).hide();
			try {
				  $('#'+array_id[i]).attr('value','');				
			}      
			catch(e) {};
      }   
   }
}
/**********************************************************
 * Verifica se è un codice fiscale
  *
 ***********************************************************/
function isValidCF(cf) {

	var validi, i, s, set1, set2, setpari, setdisp;

	cf = cf.toUpperCase();
	if( cf.length != 16 ) {
		return false;
	}	
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return false;
	}
	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 false;
	}	
	return true;
}

function isValidPIVA(pi) {
	if( pi.length != 11 )
		return false;
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return false;
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) ) {
		return false;
	}	
	return true;
}



