// ELIMINA ERRORI JAVASCRIPT

//function blockError(){return true;}

//window.onerror = blockError;

// VARIABILE SPECIFICA DEL SITO
visObj=""; //last visible object control

////////////////////////////////////////////////////////////////////////////////////////
function QBrowser() {
//debugger;
	var b = navigator.appName
	if (b=="Netscape") this.b = "ns"
	else if (b=="Microsoft Internet Explorer") this.b = "ie"
	//else if (b=="Opera") this.b = "op"
	else this.b = b
	this.version = navigator.appVersion
	this.v = parseInt(this.version)
	//alert(this.version);
	//QBrowser.op6 = (this.b=="op" && this.v>=5)
	QBrowser.ns = (this.b=="ns" && this.v>=4)
	QBrowser.ns4 = (this.b=="ns" && this.v==4)
	QBrowser.ns5 = (this.b=="ns" && this.v>=5)
	QBrowser.ie = (this.b=="ie" && this.v>=4)
	QBrowser.ie4 = (this.version.indexOf('MSIE 4')>0) || (this.version.indexOf('MSIE 4.5')>0)
	QBrowser.ie5 = (this.version.indexOf('MSIE 5.0')>0) || (this.version.indexOf('MSIE 5.01')>0) || (this.version.indexOf('MSIE 5.5')>0) || (this.version.indexOf('MSIE 6.0')>0)|| (this.version.indexOf('MSIE 7.0')>0) || (this.version.indexOf('MSIE 8.0')>0)
	QBrowser.min = (this.ns||this.ie)
	
	QBrowser.min = (this.ns||this.ie)

	QBrowser.dirQLayer	= "/" ;

	if(QBrowser.ns) {
		if(QBrowser.ns4) QBrowserNs4(this) ;
		else QBrowserNs5(this) ;
	}
	if(QBrowser.ie4) QBrowserIe(this) ;
	if(QBrowser.ie5) QBrowserIe5(this) ;
	
	QBrowser.saveCookie 		= QBrowserSaveCookie ; 
	QBrowser.readCookie 		= QBrowserReadCookie ;
	QBrowser.deleteCookie 		= QBrowserDeleteCookie ;
	QBrowser.arrayNameCookie 	= QBrowserArrayNameCookie ;
}

__QBROWSER_JS__ = new QBrowser() ;

function QBrowserNs4() {
	QBrowser.winW = window.innerWidth ;
	QBrowser.winH = window.innerHeight ;
	
	QBrowser.resizeFix = resizeFixNs ;	
	window.onResize = QBrowser.resizeFix ;
	
	QBrowser.show = showNS4 ;
	QBrowser.hide = hideNS4 ;
	QBrowser.contentDiv = contentDivNS4 ;
}

function QBrowserNs5() {
	QBrowser.winW = window.innerWidth ;
	QBrowser.winH = window.innerHeight ;
	
	QBrowser.resizeFix = resizeFixNs ;	
	window.onResize = QBrowser.resizeFix ;

	QBrowser.show = showNS5 ;
	QBrowser.hide = hideNS5 ;
	QBrowser.contentDiv = contentDivNS5 ;
}

function QBrowserIe() {
	QBrowser.winW = document.body.offsetWidth-20;
	QBrowser.winH = document.body.offsetHeight-4 ;
	
	QBrowser.resizeFix = resizeFixIe ;	
	window.onResize = QBrowser.resizeFix ;

	QBrowser.show = showIE ;
	QBrowser.hide = hideIE ;
	QBrowser.contentDiv = contentDivIE ;
}

function QBrowserIe5() {
	if(document.body != null) {
		QBrowser.winW = document.body.offsetWidth-20;
		QBrowser.winH = document.body.offsetHeight-4 ;
	}
	QBrowser.resizeFix = resizeFixIe ;	
	window.onResize = QBrowser.resizeFix ;

	QBrowser.show = showIE5 ;
	QBrowser.hide = hideIE5 ;
	QBrowser.contentDiv = contentDivIE5 ;
}

function resizeFixNs() {
	if (QBrowser.widthCheck != window.innerWidth || QBrowser.heightCheck != window.innerHeight) {
		//document.location.href = document.location.href ;
		history.go(0) ;
	
		QBrowser.winW = window.innerWidth ;
		QBrowser.winH = window.innerHeight ;
	}
}

function resizeFixIe() {
	history.go(0) ;
	
	QBrowser.winW = document.body.offsetWidth-20;
	QBrowser.winH = document.body.offsetHeight-4 ;
}


function showNS4(div,nest) {
	//alert(div,nest,visObj);
	if (visObj){
		QBrowser.hide(visObj);
	}
	obj = nest?document[nest].document[div]:document[div] ; 
	obj.visibility='visible';
	obj.display='block';
	visObj=div;
}

function showNS5(div,nest) {
	if (visObj){
		QBrowser.hide(visObj);
	}
	obj=document.getElementById(div).style ;
	obj.visibility='visible';
	obj.display='block';
	visObj=div;
}

function showIE(div) {
	if (visObj){
		QBrowser.hide(visObj);
	}
	obj = document.all[div].style ;
	obj.visibility='visible';
	obj.display='block';
	visObj=div;
}

function showIE5(div) {
	if (visObj){
		QBrowser.hide(visObj);
	}
	obj = document.getElementById(div).style ;
	obj.visibility='visible';
	obj.display='block';
	visObj=div;
}

function hideNS4(div,nest) {
	//alert();
	obj = nest?document[nest].document[div]:document[div] ; 
	obj.visibility='hidden';
	obj.display='none';
}

function hideNS5(div,nest) {
	obj=document.getElementById(div).style ;
	obj.visibility='hidden';
	obj.display='none';
}

function hideIE(div) {
	obj = document.all[div].style ;
	obj.visibility='hidden';
	obj.display='none';
}

function hideIE5(div) {
	obj = document.getElementById(div).style ;
	obj.visibility='hidden';
	obj.display='none';
}

function showOLD(div,nest){
	QBrowser.show(div,nest) ;
}

//Hides the div
function hideOLD(div,nest){
	QBrowser.hide(div,nest) ;
}




////////////////////////
function showZ(showobj) {
	document.all[showobj].style.visibility = "visible"
 }
function hideZ(hideobj) {
	document.all[hideobj].style.visibility = "hidden"
 }
 

//////////////////////////////////////////////

function contentDivNS4(text, div,nest) {
	obj = nest?document[nest].document[div]:document[div] ; 
	obj.document.open() ;
	obj.document.write(text) ;
	obj.document.close() ;
}

function contentDivNS5(text, div,nest) {
	obj=document.getElementById(div) ;
	obj.innerHTML = text ;
}

function contentDivIE(text, div,nest) {
	obj = bw.dom?document.getElementById(div).style:document.all[div].style ;
	obj.event.innerHTML = text ;
}

function contentDivIE5(text, div,nest) {
	obj = document.getElementById(div) ;
	obj.innerHTML = text ;
}

function contentDiv(text, div,nest) {
	QBrowser.contentDiv(text, div,nest) ;
}

/////////////////////////////////////////////////////////////////////////////////
// Funzioni di Cookie
function QBrowserSaveCookie(name,value,days) {

	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000)) ;
		var expires = "; expires="+date.toGMTString() ;
	}
	else expires = "" ;
	document.cookie = name+"="+value+expires+"; path=/" ;
}

function QBrowserReadCookie(name) {
	var nameEQ = name + "=" ;
	var ca = document.cookie.split(';') ;
	for(var i=0;i<ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length) ;
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length) ;
	}
	return null ;
}

function QBrowserDeleteCookie(name) {
	QBrowser.saveCookie(name,"",-1) ;
}

function QBrowserArrayNameCookie() {
	var ca = document.cookie.split(';') ;
	var ret = new Array() ;

	for(var i=0;i<ca.length;i++) {
		var c = ca[i];
		var tmp = c.split('=') ;

		ret[ret.length] = tmp[0] ;
	}
	return ret ;	
}

function openWin( windowURL, windowName, windowFeatures ) { 
	return window.open( windowURL, windowName, windowFeatures ) ; 
}


//////////////////////////////////////////////////////////////////////////////////////
/* 
	L'oggetto torna un numero casuale.
	L'inizializazione setta il range di interi entro cui deve operare.
	L'oggetto fa in modo di non generare mai lo stesso numero prima di aver
	generati tutti quelli di una serie (SPERO)

	n deve essere > a 0
*/
///////////////////////////////////////////////////////////////////////////////
function RandomNumberGenerator(n) 
{
	this.limite = n ;
	this.index = -1 ;
	this.numeriGenerati = new Array(n) ;

	for(i=0 ; i < this.numeriGenerati.length - 1 ; i++) {
		this.numeriGenerati[i] = 0 ;
	}
	
	var d = new Date() ;
	
	this.seed = 2345678901 + (d.getSeconds() * 0xFFFFFF) + (d.getMinutes() * 0xFFFF) ;
	this.A = 48271 ;
	this.M = 2147483647 ;
	this.Q = this.M / this.A ;
	this.R = this.M % this.A ;
	this.oneOverM = 1.0 / this.M ;
	
	this.next = NextRandomIntinRange ;
	this.nextFloat = NextRandomNumber ; 
	
	return this ;
}

function NextRandomIntinRange()
{
	var numero = 0 ;
	var sent = true ;
	
	while(sent)
	{
		var i = 0 ;
	
		numero = Math.round(this.limite * this.nextFloat()) ; 	
		if(numero == 0)
			continue ;
			
		for(i = 0; i <= this.index ; i++ )
		{
			if(numero == 0 || numero == this.numeriGenerati[i])
				break ;
		}
		
		if(i > this.index ) {

			this.index++ ;
			if(this.index == (this.numeriGenerati.length - 1)) this.index = -1 ;
			else this.numeriGenerati[this.index] = numero ;
				
			sent = false ;
		}
	}
	
	return (numero) ;
}

function NextRandomNumber()
{
	var hi = this.seed / this.Q ;
	var lo = this.seed % this.Q ;
	var test = this.A * lo - this.R * hi ;
	
	if(test > 0)
		this.seed = test ;
	else
		this.seed = test + this.M ;
		
	return (this.seed * this.oneOverM) ;
}
//////////////////////////////////////////////////////////////////////////////////////

function changeCSS(id, newClass) {
	identity=document.getElementById(id);
	identity.className=newClass;
}



/////////////////////////////////////////////////////////////////////////////////////
// Altre funzioni

function conferma(testo, url)	{
	var azione = confirm(testo);
	if (azione == true)	{ 
// 		pippo = document.location(url); ######### corretto da xho
		document.location.href = url;
	}
}


// preview popup per modelli e scrivi
function openPreview (file, titolo, testo) {
	// alert(testo);
	var winUrl		= './' + escape(file) + '?preview=' + escape(titolo) + '&testo=' + escape(testo);
	var winTitle	= 'preview' + escape(titolo);
	var winOptions	= 'location=no, menubar=no, toolbar=no, status=yes, scrollbars=yes, width=440, height=380';
	window.open (winUrl, winTitle, winOptions);
}

// open popup per log file
function openLog (file, titolo) {
	// alert(testo);
	var winUrl		= escape(file);
	var winTitle	= 'logfile_' + escape(titolo);
	var winOptions	= 'location=no, menubar=no, toolbar=no, status=yes, scrollbars=yes, width=600, height=380';
	newWindow = window.open (winUrl, winTitle, winOptions);
	newWindow.focus();
}

//apre finestra che collega esternametne all'opac via campo ricerca LIbera
function opacGetUrl( codice, polo ) { 
	//opacUrl = "http://ssol.cib.unibo.it:8080/SebinaOpac/Opac?action=search&kindOfSearch=simple&xmlOutput=true&startat=0&list=&filter=&thCategoria=Libro+Moderno&thCategoria=Libro+Antico&thCategoria=Audiovisivi&thCategoria=Grafica&thCategoria=Musica&AutEnteDesc=&thAutEnteDesc=&TitoloBase2=&thTitoloBase2=&AnnoPubbl=&AnnoPubbl=&LIBERA="+codice+"&thNaturaDett=&sort=Titolo&Sistema=Comune&PoloBiblio="+polo;
	opacUrl = "http://sol.cib.unibo.it/SebinaOpac/Opac?sysb="+polo+"&action=search&kindOfSearch=simple&xmlOutput=true&thCategoria=Libro+Moderno&thCategoria=Libro+Antico&thCategoria=Audiovisivi&thCategoria=Grafica&thCategoria=Musica&LIBERA="+codice+"&sort=Titolo";
	newWindow = window.open( opacUrl, "opac") ; 
	newWindow.focus();
}

//conferma submit
function confirmSubmit(testo)
{
var agree=confirm(testo);
if (agree)
	return true ;
else
	return false ;
}

//nuova: visibilit&agrave; per tabella
function showT(div) {
	if (visObj){
		QBrowser.hide(visObj);
	}
	obj = document.getElementById(div).style ;
	obj.visibility='visible';
	obj.display='table-cell';
	visObj=div;
}

// compare e scompare con tipo di display passabile

function showHide(div,displayType) {
  
	obj = document.getElementById(div).style ;
	
   if (!displayType) { displayType = 'block';} 
   
   if (obj.display != 'none') {
		obj.display = 'none';
   } else {
		obj.display = displayType;
   }
} 


//opacity
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    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++;
        }
    }
}

//change the opacity for different browsers
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 + ")";
} 

// popup per i giochi
function openGame (winUrl) {
	// alert(testo);
	var winTitle = "giochi";
	var winOptions	= 'location=no, menubar=no, toolbar=no, resizable=yes, status=no, scrollbars=yes, width=578, height=500';
	newWindow = window.open ('/giochi/'+winUrl, winTitle, winOptions);
	newWindow.focus();
}


////// nuovo show

visNEWObj= "";

function show(idContent,nest) {
	if (visNEWObj){
		hide(visNEWObj);
	}
	obj = document.getElementById(idContent).style ;
	obj.display='block';
	visNEWObj=idContent;
}

function hide(idContent,nest) {
	obj = document.getElementById(idContent).style ;
	obj.display='none';
}

///// show hide menu

visMENUObj= "";

function showMENU(idContent,nest) {
	if (visMENUObj){
		hideMENU(visMENUObj);
	}
	obj = document.getElementById(idContent).style ;
	obj.display='block';
	visMENUObj=idContent;
}

function hideMENU(idContent,nest) {
	obj = document.getElementById(idContent).style ;
	obj.display='none';
}


///// show hide alternativo

visALTObj= "";

function showALT(idContent,nest) {
	if (visALTObj){
		hideALT(visALTObj);
	}
	obj = document.getElementById(idContent).style ;
	obj.display='block';
	visALTObj=idContent;
}

function hideALT(idContent,nest) {
	obj = document.getElementById(idContent).style ;
	obj.display='none';
}




