var _BSS_LB_SFONDO 			= "#000000"; 		// colore sfondo pagina
var _BSS_LB_CHILD_BORDER 	= "8px solid #ffffff"; 		// cornice finestra LITEBOX "8px solid #E0E0E0"
var _BSS_LB_CHILD_SFONDO 	= "#ffffff"; 		// colore sfondo finestra LITEBOX #E0E0E0"
var _BSS_LB_CHILD_TESTO		= "#666666"; 		// colore testo finestra LITEBOX
var _BSS_LB_WIDTH 			= "200"; 		// larghezza di default finestra LITEBOX
var _BSS_LB_HEIGHT 			= "200"; 		// altezza di default finestra LITEBOX
var _BSS_LB_FADE			= 70;	// fade dello sfondo
var _BSS_LB_TOP 			= 50; // positione top del LITEBOX 100

// ------------------------------------------------------------ INIT
function bss_init (elemento) {
	
	// posizione originale
	elemento.originalTop = elemento.offsetTop;
	elemento.originalLeft = elemento.offsetLeft;
	
	// dimensioni originali
	elemento.originalWidth = elemento.offsetWidth;
	elemento.originalHeight = elemento.offsetHeight;
	
	// fade
	elemento.fade_incremento = 0;
	elemento.fade_start = 0;
	elemento.fade_end = 0;
	elemento.fade_corrente = 0;
	
	// move
	elemento.move_x = 0;
	elemento.move_y = 0;
	elemento.move_a_x = 0;
	elemento.move_a_y = 0;
	elemento.move_x_incremento = 0;
	elemento.move_y_incremento = 0;
	
	// resize
	elemento.resize_w = 0;
	elemento.resize_h = 0;
	elemento.resize_a_w = 0;
	elemento.resize_a_h = 0;
	elemento.resize_w_incremento = 0;
	elemento.resize_h_incremento = 0;
}


// ------------------------------------------------------------ ALTEZZA/LARGHEZZA
function bss_winHeight() {
	var myHeight = 0;
	if (self.innerHeight) {
		myHeight = self.innerHeight; // all except Explorer
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		myHeight = document.documentElement.clientHeight; // Explorer 6 Strict Mode
	}
	else if (document.body) {
		myHeight = document.body.clientHeight; // other Explorers
	}
	return myHeight;
}

function bss_winWidth() {
	var myWidth = 0;
	if (self.innerHeight) {
		myWidth = self.innerWidth; // all except Explorer
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		myWidth = document.documentElement.clientWidth;	// Explorer 6 Strict Mode
	}
	else if (document.body) {
		myWidth = document.body.clientWidth; // other Explorers
	}	
	return myWidth;
}


// ------------------------------------------------------------ ALTEZZA/LARGHEZZA
function bss_winScrollY() {
	var myScrollY = 0;
	if (self.pageYOffset) {
		myScrollY = self.pageYOffset; // all except Explorer
	}
	else if (document.documentElement && document.documentElement.scrollTop) {
		myScrollY = document.documentElement.scrollTop; // Explorer 6 Strict
	}
	else if (document.body) {
		myScrollY = document.body.scrollTop; // all other Explorers
	}
	return myScrollY;
}

function bss_winScrollX() {
	var myScrollX = 0;
	if (self.pageYOffset) {
		myScrollX = self.pageXOffset; // all except Explorer
	}
	else if (document.documentElement && document.documentElement.scrollLeft) {
		myScrollX = document.documentElement.scrollLeft; // Explorer 6 Strict
	}
	else if (document.body) {
		myScrollX = document.body.scrollLeft; // all other Explorers
	}
	return myScrollX;
}


// ------------------------------------------------------------ VISIBILITA'
function bss_visible (elemento,d) {
	var	style = elemento.style;
	style.visibility = "visible";
	if (d) {style.display = d};
}

function bss_hidden (elemento,d) {
	var	style = elemento.style;
	style.visibility = "hidden";
	if (d) {style.display = d};
}


// ------------------------------------------------------------ OPACITA'
function bss_opacity (elemento,o) {
	var	style = elemento.style;
	style.opacity = style.MozOpacity = style.KhtmlOpacity = o/100;
	style.filter = "alpha(opacity=" + o + ")";
}
function bss_fade (elemento,start_percentuale,end_percentuale,incremento,millisecondi,start_fade_corrente) {
// NOTA: se start_fade_corrente non è impostato viene interpretato = false
	
	// interrompo l'evento di fade attuale
	if (elemento.fade_timerID != undefined) {clearInterval(elemento.fade_timerID);}
	
	// inizializzo le variabili di gestione dell'evento fade
	if ((!start_fade_corrente) || (elemento.fade_corrente == undefined)) {elemento.fade_corrente = start_percentuale;}
	elemento.fade_incremento = incremento;
	elemento.fade_start = start_percentuale;
	elemento.fade_end = end_percentuale;
	
	// inizializzo la funzione di fading
	elemento.bss_fading = function () {
		// opacizzo l'elemento
		bss_opacity (elemento,elemento.fade_corrente);
		
		// se sono al primo passaggio imposto la visibilità a true
		if (elemento.fade_corrente == elemento.fade_start) {bss_visible(elemento)};
		
		// controllo se devo salire o scendere con la percentuale
		if (elemento.fade_start < elemento.fade_end) {
			// incremento sino ad arrivare al minimo consentito
			elemento.fade_corrente += elemento.fade_incremento;
			if (elemento.fade_corrente > elemento.fade_end) {
				clearInterval(elemento.fade_timerID);
				elemento.fade_timerID = -1;
				elemento.fade_corrente -= elemento.fade_incremento;
			}
		} else {
			// decremento sino ad arrivare al massimo consentito
			elemento.fade_corrente -= elemento.fade_incremento;
			if (elemento.fade_corrente < elemento.fade_end) {
				clearInterval(elemento.fade_timerID);
				elemento.fade_timerID = -1;
				elemento.fade_corrente += elemento.fade_incremento;
			}
		}
	}
	
	// inizializzo il ciclo di fading on dell'elemento
	elemento.fade_timerID = setInterval(elemento.bss_fading,millisecondi);
}


// ------------------------------------------------------------ SPOSTAMENTIO
function bss_position (elemento,x,y) {
	var	style = elemento.style;
	style.top = y + "px";
	style.left = x + "px";
}

function bss_move (elemento,da_x,da_y,a_x,a_y,millisecondi,start_posizione_corrente) {
// NOTA: se start_posizione_corrente non è impostato viene interpretato = false
	
	// interrompo l'evento di move attuale
	if (elemento.move_timerID != undefined) {clearInterval(elemento.move_timerID);}
	
	// inizializzo le variabili di gestione dell'evento fade
	if ((!start_posizione_corrente) || (elemento.move_corrente == undefined)) {elemento.move_x = da_x;elemento.move_y = da_y;}
	elemento.move_a_x = a_x;
	elemento.move_a_y = a_y;
	
	// calcolo lo spostamento x e y
	var deltax = (elemento.move_a_x-elemento.move_x);
	var deltay = (elemento.move_a_y-elemento.move_y);
	var deltaBig = ((Math.abs(deltax) > Math.abs(deltay))?Math.abs(deltax):Math.abs(deltay));
	elemento.move_x_incremento = (deltax/deltaBig)*(12/millisecondi);
	elemento.move_y_incremento = (deltay/deltaBig)*(12/millisecondi);
	
	// inizializzo la funzione di fade ON
	elemento.bss_moving = function () {
		// se sono al primo passaggio imposto la visibilità a true
		// 7/12/06 - Temporanemanete disattivo
		// if ((elemento.move_x == elemento.move_x_incremento) && (elemento.move_y == elemento.move_y_incremento)) {bss_visible(elemento,"block")};
		
		// incremento il moving verificando di non essere arrivato in un intorno del punto di arrivo
		if (Math.abs(elemento.move_a_x-elemento.move_x) <= Math.abs(elemento.move_x_incremento)) {
			elemento.move_x = elemento.move_a_x;
		} else {
			elemento.move_x += elemento.move_x_incremento;
		}
		if (Math.abs(elemento.move_a_y-elemento.move_y) <= Math.abs(elemento.move_y_incremento)) {
			elemento.move_y = elemento.move_a_y;
		} else {
			elemento.move_y += elemento.move_y_incremento;
		}
		
		// se sono arrivato al punto di arrivo esco dal ciclo
		if ((elemento.move_x == elemento.move_a_x) && (elemento.move_y == elemento.move_a_y)) {
			clearInterval(elemento.move_timerID);
			elemento.move_timerID = -1;
		}
		
		// sposto l'elemento
		bss_position (elemento,elemento.move_x,elemento.move_y);
	}
	
	// inizializzo il ciclo di fading on dell'elemento
	elemento.move_timerID = setInterval(elemento.bss_moving,millisecondi);
}


// ------------------------------------------------------------ RIDIMENSIONAMENTO
function bss_size (elemento,w,h) {
	var	style = elemento.style;
	style.width = w + "px";
	style.height = h + "px";
	if (elemento.style.overflow != "hidden") {elemento.style.overflow = "hidden";}
}

function bss_resize (elemento,da_w,da_h,a_w,a_h,millisecondi,start_dimensione_corrente) {
// NOTA: se start_dimensione_corrente non è impostato viene interpretato = false
	
	// interrompo l'evento di resize attuale
	if (elemento.resize_timerID != undefined) {clearInterval(elemento.resize_timerID);}
	
	// forzo la visualizzazione del contenuto all'interno del DIV
	elemento.style.overflow = "hidden";
	
	// inizializzo le variabili di gestione dell'evento fade
	if ((!start_dimensione_corrente) || (elemento.resize_corrente == undefined)) {elemento.resize_w = da_w;elemento.resize_h = da_h;}
	elemento.resize_a_w = a_w;
	elemento.resize_a_h = a_h;
	
	// calcolo il ridimensionamento w e h
	var deltaw = (elemento.resize_a_w-elemento.resize_w);
	var deltah = (elemento.resize_a_h-elemento.resize_h);
	var deltaBig = ((Math.abs(deltaw) > Math.abs(deltah))?Math.abs(deltaw):Math.abs(deltah));
	elemento.resize_w_incremento = (deltaw/deltaBig)*(12/millisecondi);
	elemento.resize_h_incremento = (deltah/deltaBig)*(12/millisecondi);
	
	// inizializzo la funzione di fade ON
	elemento.bss_resizing = function () {
		// se sono al primo passaggio imposto la visibilità a true
		// 7/12/06 - Temporanemanete disattivo
		// if ((elemento.resize_w == elemento.resize_w_incremento) && (elemento.resize_h == elemento.resize_h_incremento)) {bss_visible(elemento,"block")};
		
		// incremento il moving verificando di non essere arrivato in un intorno del punto di arrivo
		if (Math.abs(elemento.resize_a_w-elemento.resize_w) <= Math.abs(elemento.resize_w_incremento)) {
			elemento.resize_w = elemento.resize_a_w;
		} else {
			elemento.resize_w += elemento.resize_w_incremento;
		}
		if (Math.abs(elemento.resize_a_h-elemento.resize_h) <= Math.abs(elemento.resize_h_incremento)) {
			elemento.resize_h = elemento.resize_a_h;
		} else {
			if (false) { //!confirm ("elemento.resize_a_h: " + elemento.resize_a_h + "\nelemento.resize_h: " + elemento.resize_h + "\nDiff: " + Math.abs(elemento.resize_a_h-elemento.resize_h) + "\nPasso: " + elemento.resize_h_incremento)) {
				document.location = "http://websvil"
			};
			elemento.resize_h += elemento.resize_h_incremento;
		}
		
		// se sono arrivato al ridimensionamento di arrivo esco dal ciclo
		if ((elemento.resize_w == elemento.resize_a_w) && (elemento.resize_h == elemento.resize_a_h)) {
			clearInterval(elemento.resize_timerID);
			elemento.resize_timerID = -1;
		}
		
		// sposto l'elemento
		bss_size (elemento,elemento.resize_w,elemento.resize_h);
	}
	
	// inizializzo il ciclo di fading on dell'elemento
	elemento.resize_timerID = setInterval(elemento.bss_resizing,millisecondi);
}

// ------------------------------------------------------------ LITEBOX
function bss_litebox_custom(sfondo) { //, cornice_child, sfondo_child, testo_child) {
	// imposto le proprietà dello sfondo
	elemento = document.getElementById("litebox_sfondo");
	elemento.style.background = sfondo;
	
	// imposto le proprietà del contenuto
	/*elemento = document.getElementById("litebox_child");
	elemento.style.border = cornice_child;
	elemento.style.background = sfondo_child;
	elemento.style.color = testo_child;*/
}

function bss_litebox_init() {
	// scrivo il div che userò per visualzizare la gallery 
	var elemento = document.getElementsByTagName("BODY");
	var boo = document.getElementsByTagName("BODY")[0];
	var sp1 = document.createElement("div");
	sp1.setAttribute("id", "litebox");
	sp1.innerHTML = "<div id=\"litebox_sfondo\" onClick=\"bss_litebox('off');\"></div><div id=\"litebox_preload\">loading</div><div id=\"litebox_child\"></div>";
	boo.insertBefore(sp1, boo.firstChild);
	
	// imposto le proprietà dello sfondo
	elemento = document.getElementById("litebox_sfondo");
	elemento.style.width = bss_winWidth() + "px";
	elemento.style.height = bss_winHeight() + "px";
	elemento.style.background = _BSS_LB_SFONDO;
	
	// imposto le proprietà dello contenuto
	elemento = document.getElementById("litebox_child");
	elemento.style.border = _BSS_LB_CHILD_BORDER;
	elemento.style.backgroundColor = _BSS_LB_CHILD_SFONDO;
	elemento.style.color = _BSS_LB_CHILD_TESTO;
	
	// aggiorno i link HREF con proprietà REL
	var allAs = document.body.getElementsByTagName("A");
	var splitted;
	var titled;
	for(var i=0;i<allAs.length;i++){
		if (((allAs[i].rel.indexOf("litebox") >= 0) || (allAs[i].rel.indexOf("reloadbox") >= 0)) && (allAs[i].href.indexOf("javascript:") < 0)) {
			splitted = allAs[i].rel.split(" ");
			w = (splitted.length > 1)?splitted[1]:_BSS_LB_WIDTH;
			h = (splitted.length > 2)?splitted[2]:_BSS_LB_HEIGHT;
			s = (splitted.length > 3)?splitted[3]:_BSS_LB_SFONDO;
			titled = allAs[i].title.replace(/"/g,String.fromCharCode(39));
			alHREF = allAs[i].href;
			if (allAs[i].rel.indexOf("litebox") >= 0) {
				allAs[i].href = "javascript:bss_litebox_custom(\"" + s + "\");bss_litebox_innerHTML (\"" + allAs[i].href + "\",\"" + titled + "\"," + w + "," + h + ");bss_litebox('on'," + _BSS_LB_FADE + ",true);";
			} else {
				allAs[i].href = "javascript:parent.bss_litebox_reload (\"" + allAs[i].href + "\",\"" + titled + "\"," + w + "," + h + ");";
			}
		}
	}
}

function bss_litebox_innerHTML(cosa,testo,w,h) {
	
	// verifico se devo visualizzare un IFRAME
	cosa=cosa.toLowerCase();
	if ((cosa == "") || (cosa.indexOf(".html") > 0) || (cosa.indexOf(".htm") > 0) || (cosa.indexOf(".asp") > 0) || (cosa.indexOf(".php") > 0) || (cosa.indexOf(".doc") > 0) || (cosa.indexOf(".pdf") > 0) || (cosa.indexOf(".txt") > 0) || (cosa.indexOf(".rtf") > 0) || (cosa.indexOf(".xls") > 0)) {
		cosa = "<iframe src=\"" + cosa + "\" name=\"bss_ifr\" id=\"bss_ifr\" width=\"" + w + "px\" height=\"" + h + "px\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"auto\" frameborder=\"0\"></iframe><br><br>" + testo;		
	} else {
		// verifico se devo visualizzare un'immagine
		if ((cosa.indexOf(".jpeg") > 0) || (cosa.indexOf(".jpg") > 0) || (cosa.indexOf(".gif") > 0) || (cosa.indexOf(".png") > 0)) {
			cosa = "<img src=\"" + cosa + "\" name=\"bss_img\" id=\"bss_img\" border=\"0\" alt=\"" + testo + "\" title=\"" + testo + "\"><br><br>" + testo;
		}
	}
	
	// imposto il contenuto nel mio LITEBOX
	var elemento = document.getElementById("litebox_child");
	elemento.innerHTML = cosa + "<div id=\"litebox_close\"><a href=\"javascript:;\" onClick=\"bss_litebox('off');\">CHIUDI X</a></div>";
	
	// riposiziono il PRELOAD
	winScroll = bss_winScrollY();
	var t = winScroll + _BSS_LB_TOP;
	var elemento = document.getElementById("litebox_preload");
	l = (bss_winWidth() - elemento.clientWidth)/2;
	bss_position (elemento,l,t);
}

function bss_litebox_center(elemento,myTag) {
	winScroll = bss_winScrollY();
	var t = winScroll + _BSS_LB_TOP;
	var tagoo = document.getElementById(myTag);
	var l = (bss_winWidth() - tagoo.width)/2;
	
	if (typeof( window.innerHeight ) != 'number') {// IE
		elemento.style.width = tagoo.width + "px";
	} else {
		elemento.style.minWidth = tagoo.width + "px";
	}
	
	// riposiziono il DIV
	bss_position (elemento,l,t);		
	bss_visible(elemento);
}

function bss_litebox(cosa,opacita,fade) {
	if (cosa == "on") {
		// calcolo lo scrolling verticale
		winScroll = bss_winScrollY();
		var t = winScroll + _BSS_LB_TOP;
		
		if (fade) {
			// BACO DI IE6 - nascondo tutti i SELECT
			var allSelects = document.body.getElementsByTagName("SELECT");
			for(var i=0;i<allSelects.length;i++){bss_hidden(allSelects[i]);}
			
			// opacizzo lo sfondo
			var elemento = document.getElementById("litebox_sfondo");
			bss_position (elemento,0,winScroll);
			bss_opacity(elemento,opacita-20);
			bss_visible(elemento);
			bss_fade(elemento,opacita-20,opacita,20,5)
		};
		
		// riposiziono e visualizzo il preload
		var elemento = document.getElementById("litebox_preload");
		l = (bss_winWidth() - elemento.clientWidth)/2;
		bss_position (elemento,l,t);
		bss_visible(document.getElementById("litebox_preload"));

		// controllo se devo visualizzare il CHILD o far apparire il LOADING
		elemento = document.getElementById("litebox_child");
		if (document.getElementById("bss_img")) {
			var imgPreload = new Image();
			imgPreload.onload=function(){
				// riposiziono e visualizzo il child
				bss_litebox_center(elemento,"bss_img");
			}
			imgPreload.src = document.getElementById("bss_img").src;
		} else {
			// riposiziono e visualizzo il child
			bss_litebox_center(elemento,"bss_ifr");
		}
	} else {
		// nascondo il child e il preload
		bss_hidden(document.getElementById("litebox_child"));
		bss_hidden(document.getElementById("litebox_preload"));
		
		// nascondo lo sfondo in fade
		var elemento = document.getElementById("litebox_sfondo");
		bss_fade(elemento,elemento.fade_corrente,0,20,5);
		var t=setTimeout("bss_hidden(document.getElementById('litebox_sfondo'))",200)
		//bss_hidden(document.getElementById("litebox_sfondo"));
		
		// BACO DI IE6 - rivisualizzo tutti i SELECT
		var allSelects = document.body.getElementsByTagName("SELECT");
		for(var i=0;i<allSelects.length;i++){bss_visible(allSelects[i]);}
	}
}

function bss_litebox_reload(cosa,testo,w,h) {
	
	// chiudo il LITEBOX
	bss_litebox_innerHTML(cosa,testo,w,h);
	bss_litebox('on',_BSS_LB_FADE,false);
}

function bss_litebox_resize(w,h) {
	
	// ridimensiono l'IFRAME
	if (document.getElementById("bss_ifr")) {
		var elemento = document.getElementById("bss_ifr");
		elemento.width = w;
		elemento.height = h;
		
		// lo ricentro
		bss_litebox_center(document.getElementById("litebox_child"),"bss_ifr");
	}
}


// ------------------------------------------------------------ SLIDESHOW
function bss_slideshow (elemento,incremento,millisecondi,fermoimmagine) {
	
	// rivisualizzo tutte le immagini contenuto nell'elemento e le mando in opacity tranne la prima
	var imgs = elemento.getElementsByTagName('img');
	for(i=0;i<imgs.length;i++) {
		bss_opacity(imgs[i],0);
		if (i<=0) {bss_fade(imgs[i],0,100,4,50);};
		bss_visible (imgs[i],"block");
	}
	
	// imposto l'immagine corrente
	elemento.slideshow_img = 0;
	
	// creo lo slideshow
	elemento.bss_slideshowing = function () {
		// assolvo l'immagine nuova
		var imgs = elemento.getElementsByTagName('img');
		var nIndex = imgs[elemento.slideshow_img+1]?elemento.slideshow_img+1:0;
		bss_fade(imgs[nIndex],0,100,incremento,millisecondi);
		
		// dissolvo l'immagine corrente
		bss_fade(imgs[elemento.slideshow_img],100,0,incremento,millisecondi);
		
		// imposto la nuova immagine corrente
		elemento.slideshow_img = nIndex;
	}
	
	// lancio lo slideshow
	elemento.slideshowing_timerID = setInterval(elemento.bss_slideshowing,fermoimmagine);
}
