imgPath = new Array;
SiClickGoTo = new Array;
version = navigator.appVersion.substring(0,1);
if (version >= 3)
	{
	i0 = new Image;
	i0.src = 'images/header1.jpg';
	SiClickGoTo[0] = "";
	imgPath[0] = i0.src;
	i1 = new Image;
	i1.src = 'images/header13.jpg';
	SiClickGoTo[1] = "";
	imgPath[1] = i1.src;
	i2 = new Image;
	i2.src = 'images/header3.jpg';
	SiClickGoTo[2] = "";
	imgPath[2] = i2.src;
	i3 = new Image;
	i3.src = 'images/header4.jpg';
	SiClickGoTo[3] = "";
	imgPath[3] = i3.src;
	i4 = new Image;
	i4.src = 'images/header7.jpg';
	SiClickGoTo[4] = "";
	imgPath[4] = i4.src;
	i5 = new Image;
	i5.src = 'images/header8.jpg';
	SiClickGoTo[5] = "";
	imgPath[5] = i5.src;
	i6 = new Image;
	i6.src = 'images/header9.jpg';
	SiClickGoTo[6] = "";
	imgPath[6] = i6.src;
	i7 = new Image;
	i7.src = 'images/header10.jpg';
	SiClickGoTo[7] = "";
	imgPath[7] = i7.src;
	i8 = new Image;
	i8.src = 'images/header11.jpg';
	SiClickGoTo[8] = "";
	imgPath[8] = i8.src;
	i9 = new Image;
	i9.src = 'images/header12.jpg';
	SiClickGoTo[9] = "";
	imgPath[9] = i9.src;
	i10 = new Image;
	i10.src = 'images/header2.jpg';
	SiClickGoTo[10] = "";
	imgPath[10] = i10.src;
	}
a = 0;
function StartAnim()
	{
	if (version >= 3)
		{
		document.write('<A HREF="#" onClick="ImgDest();return(false)"><IMG SRC="images/header1.jpg" BORDER=0 ALT=Menu NAME=defil></A>');
		defilimg()
		}
	else
		{
		document.write('<A HREF=""><IMG SRC="images/header1.jpg" BORDER=0></A>')
		}
	}
function ImgDest()
	{
	document.location.href = SiClickGoTo[a-1];
	}
function defilimg()
	{
	if (a == 11)
		{
		a = 0;
		}
	if (version >= 3)
		{
		document.defil.src = imgPath[a];
		tempo3 = setTimeout("defilimg()",5000);
		a++;
		}
	}
/* iubito's menu - http://iubito.free.fr/prog/menu.php - configuration du javascript */


/* true = le menu sera vertical, à gauche.
   false = le menu sera horizontal, en haut. */
var vertical = false;

/* Centrer le menu ? (true/false).
	Centre horizontalement ou verticalement suivant le mode choisi. */
var centrer_menu = false;

/* On est obligé de définir une largeur pour les menus.
	Pour mettre des menus de largeurs différentes :
	var largeur_menu = new Array(largeur menu1, largeur menu2, largeur menu3...)
	Il faut faire attention à mettre autant de valeurs que de nombre de menu !
	Attention, si vous êtes en menu vertical, mettez une largeur fixe (pas de Array) !
	*/
var largeur_menu = 130;

/* En mode vertical, on a besoin de connaître la hauteur de chaque menu.
	Même si les "cases" ne sont pas dimensionnées en hauteur.
	Ajustez cette variable si les menus sont trop rapprochés ou espacés en vertical.
	Pour mettre des menus de hauteurs différentes :
	var hauteur_menu = new Array(hauteur menu1, hauteur menu2, hauteur menu3...)
	Il faut faire attention à mettre autant de valeurs que de nombre de menu !
	Attention, si vous êtes en menu horizontal, mettez une largeur fixe (pas de Array) !
	*/
var hauteur_menu = 50;

/* En mode horizontal.
	Largeur des sous-menus, pour IE uniquement, les autres navigateurs respectent la largeur
	auto. Mettez "auto" uniquement si vous êtes sûr d'avoir mis des &nbsp; à la place des
	espace dans les items !
	Pour mettre des sous-menus de largeurs différentes :
	var largeur_sous_menu = new Array(largeur1, largeur2...).
	Il faut faire attention à mettre autant de valeurs que de menus.
	Si un menu n'a pas de sous-menus, il faut mettre quand même quelque chose !
	Il est possible de mettre "auto" dans certaines colonnes, à condition de respecter la
	consigne ci-dessus.
	*/
var largeur_sous_menu = 160;

/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette
	option (active par défaut) permet d'avoir une largeur automatique. En cas contraire
	(false), les sous menus auront la largeur largeur_sous_menu. */
var largeur_auto_ssmenu = true;

/* ... pour mettre un peu d'espace entre les menus ! */
var espace_entre_menus = 5;


/* position du menu par rapport au haut de l'écran ou de la page.
	0 = le menu est tout en haut. en px */
var top_menu = 80;
/* En version horizontale.
	position des sous-menus par rapport au haut de l'écran ou de la page. Il faut prévoir
	la hauteur des menus, donc ne pas mettre 0 et faire "à tâton". en px */
var top_ssmenu = top_menu + 28;

/* Position gauche du menu, en px. */
var left_menu =140;
/* En version verticale.
	Position des sous-menus par rapport au bord gauche de l'écran. */
var left_ssmenu = largeur_menu+2;

/* Quand la souris quitte un sous-menu, si le sous-menu disparait immédiatement,
	cela gêne l'utilisateur. Alors on peut mettre un délai avant disparition du sous-menu.
	500 ms c'est bien :-) */
var delai = 650; // en milliseconde

/* En version horizontale.
	Comme le menu peut se superposer avec le texte de la page, il est possible de faire
	descendre un peu la page (on augmente la marge du haut) pour aérer un peu la page,
	une quarantaine de pixel c'est pas mal. en px*/
var marge_en_haut_de_page = top_menu + 40;
/* En version verticale.
	On décale le document à droite pour pas que le menu le superpose. */
var marge_a_gauche_de_la_page = largeur_menu + 10;


/* Mettez à true si vous souhaitez que le menu soit toujours visible.
	Mettez false si vous ne le souhaitez pas, dans ce cas le menu "disparaîtra" quand vous
	descendrez dans la page. */
var suivre_le_scroll=false;

/* Pour IE uniquement, les balises <select> passent toujours au-dessus du menu, donc
	par défaut on cache les listes déroulantes quand le menu est ouvert, puis on les fait
	réapparaître à la fermeture du menu. Pour empêcher ça, mettre à false. */
var cacher_les_select=true;


var nbmenu = 0; //Auto-calculé
var timeout; //ne pas toucher, c'est pour déclarer la variable
var agt = navigator.userAgent.toLowerCase();
var isMac = (agt.indexOf('mac') != -1);
var isOpera = (agt.indexOf('opera') != -1);
var IEver = parseInt(agt.substring(agt.indexOf('msie ') + 5));
var isIE = ((agt.indexOf('msie')!=-1 && !isOpera && (agt.indexOf('webtv')==-1)) && !isMac);
var isIE5win = (isIE && IEver >= 5);
var isIE5mac = ((agt.indexOf('msie') != -1) && isMac);
var isSafari = (agt.indexOf('safari') != -1);

//pour enlever les "px" pour faire des calculs...
var reg = new RegExp("px", "g");

// onScroll pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs
// qui respectent les normes CSS...
window.onscroll = function()
{
	if (suivre_le_scroll && (isIE || isIE5mac))
	{
		if (isIE5mac) document.getElementById("conteneurmenu").style.visibility="hidden";
		var cumul=0;
		for(i=1;i<=nbmenu;i++)
		{
			var scrollTop = (document.documentElement&&document.documentElement.scrollTop
								?document.documentElement.scrollTop
								:document.body.scrollTop);
			if (!vertical) {
				document.getElementById("menu"+i).style.top = scrollTop + top_menu + "px";
				if (document.getElementById("ssmenu"+i))//undefined
					document.getElementById("ssmenu"+i).style.top = scrollTop + top_ssmenu + "px";
			} else {
				document.getElementById("menu"+i).style.top = scrollTop
							+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				if (document.getElementById("ssmenu"+i))//undefined
					document.getElementById("ssmenu"+i).style.top = scrollTop
							+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				cumul += isFinite(hauteur_menu)?hauteur_menu:hauteur_menu[i-1];
			}
		}
		if (isIE5mac) document.getElementById("conteneurmenu").style.visibility="visible";
	}
}

function preChargement()
{
	if (document.getElementById("conteneurmenu"))
		document.getElementById("conteneurmenu").style.visibility="hidden";
}

function Chargement() {
	
	//Compte nbmenu
	nbmenu = 0;
	while (document.getElementById("menu"+(nbmenu+1)))
		nbmenu++;
	
	document.getElementById("conteneurmenu").style.visibility="hidden";
	trimespaces();
	with(document.body.style) {
		if (!vertical) marginTop=marge_en_haut_de_page+"px";
		else		   marginLeft=marge_a_gauche_de_la_page+"px";
	}
	
	positionne();
	CacherMenus();
	
	//pour Safari, qui a du mal à afficher le menu parfois, le fait de changer la taille
	//des caractères corrige le problème. Merci Stol ! http://iubito.free.fr/forum/read.php?id=705&f=2
	if(isSafari)
		document.getElementById('conteneurmenu').style.fontSize='10px';
	
	// comme on a évité le clignotement, maintenant on fait apparaître le menu ;-)
	document.getElementById("conteneurmenu").style.visibility='';
}
window.onresize = Chargement;

/*
 * Place les éléments du menu correctement, au chargement, au scroll, au redimensionnement
 * de la fenêtre
 */
function positionne() {
	//Calcul hauteur et largeur fenêtre compatible avec certains doctypes IE
	var largeur_fenetre;
	if (document.documentElement && document.documentElement.clientWidth) {
		largeur_fenetre = document.documentElement.clientWidth;
	} else if (document.body && document.body.clientWidth) {
		largeur_fenetre = document.body.clientWidth;
	} else if (window.innerWidth) {
		largeur_fenetre = window.innerWidth;
	}

	var hauteur_fenetre;
	if (document.documentElement && document.documentElement.clientHeight) {
		hauteur_fenetre = document.documentElement.clientHeight;
	} else if (document.body && document.body.clientHeight) {
		hauteur_fenetre = document.body.clientHeight;
	} else if (window.innerHeight) {
		hauteur_fenetre = window.innerHeight;
	}

	if (centrer_menu) {
		if (!vertical) {
			var largeur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(largeur_menu))
				largeur_totale += largeur_menu * nbmenu;
			else {
				for (i = 1; i <= nbmenu; i++)
					largeur_totale += largeur_menu[i-1];
			}
			left_menu = (largeur_fenetre - largeur_totale)/2;
		} else {
			var hauteur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(hauteur_menu))
				hauteur_totale += hauteur_menu * nbmenu;
			else {
				for (i = 1; i <= nbmenu; i++)
					hauteur_totale += hauteur_menu[i-1];
			}
			top_menu = (hauteur_fenetre - hauteur_totale)/2;
		}
	}
	
	//Menus
	var cumul = 0;
	for(i=1;i<=nbmenu;i++) {
		with(document.getElementById("menu"+i).style) {
			if (!vertical) {
				top=top_menu+"px";
				left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px";
			} else {
				top=(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				left=left_menu+"px";
			}
			if (!suivre_le_scroll || isIE || isIE5mac)
				position="absolute";
			else position="fixed";
			//if (vertical) height=hauteur_menu+"px";
			margin="0";
			zIndex="2";
			if (vertical || isFinite(largeur_menu))
				width=largeur_menu+"px";
			else
				width=largeur_menu[i-1]+"px";
			if ((!vertical && isFinite(largeur_menu)) || (vertical && isFinite(hauteur_menu))) {
				cumul += (!vertical?largeur_menu:hauteur_menu);
			}
			else {
				cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
				if (vertical) height=hauteur_menu[i-1]+"px";
			}
		}
	}
	
	//Sous-menus
	cumul = 0;
	for(i=1;i<=nbmenu;i++) {
		if (document.getElementById("ssmenu"+i))//undefined
		{
			with(document.getElementById("ssmenu"+i).style) {
				if (!suivre_le_scroll || isIE || isIE5mac)
					position="absolute";
				else position="fixed";
				if (!vertical) {
					top=top_ssmenu+"px";
					left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px";
				} else {
					left=left_ssmenu+"px";
					top=(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
				}
				if (isIE || isOpera || isIE5mac || !largeur_auto_ssmenu) {
					if (isFinite(largeur_sous_menu))
						width = largeur_sous_menu+(largeur_sous_menu!="auto"?"px":"");
					else
						width = largeur_sous_menu[i-1]+(largeur_sous_menu[i-1]!="auto"?"px":"");
				}
				else width = "auto";
				if (!vertical && !isIE5mac) {
					//repositionnement si déborde à droite
					if ((width != "auto")
						&& ((left.replace(reg,'').valueOf()*1 + width.replace(reg,'').valueOf()*1) > largeur_fenetre))
						left = (largeur_fenetre-width.replace(reg,'').valueOf())+"px";
				}
				margin="0";
				zIndex="3";
			}
		}
		if ((!vertical && isFinite(largeur_menu)) || (vertical && isFinite(hauteur_menu))) {
			cumul += (!vertical?largeur_menu:hauteur_menu);
		}
		else {
			cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
		}
	}
}


function MontrerMenu(strMenu) {
	AnnulerCacher();
	CacherMenus();
	if (document.getElementById(strMenu))//undefined
		with (document.getElementById(strMenu).style)
			visibility="visible";
	SelectVisible("hidden",document.getElementsByTagName('select'));
}

function CacherDelai() {
	timeout = setTimeout('CacherMenus()',delai);
}
function AnnulerCacher() {
	if (timeout) {
		clearTimeout(timeout);
	}
}
function CacherMenus() {
	for(i=1;i<=nbmenu;i++) {
		if (document.getElementById("ssmenu"+i))//undefined
			with(document.getElementById("ssmenu"+i).style)
				visibility="hidden";
	}
	SelectVisible("visible",document.getElementsByTagName('select'));
}

function trimespaces() {
	//Contourne un bug d'IE5/win... il ne capte pas bien les css pour les <li>, donc on les vire !
	if(isIE5win) {
		for(i=1;i<=nbmenu;i++) {
			if (document.getElementById("ssmenu"+i))//undefined
				with(document.getElementById("ssmenu"+i))
					innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
		}
	}
}

function SelectVisible(v,elem) {
	if (cacher_les_select && (isIE||isIE5win))
		for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}
/*************************************************************************************************
* Floatbox v2.43
*
* Image and IFrame viewer by Byron McGregor
*   June 21, 2008
*   Website: http://randomous.com/tools/floatbox/
* License: Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by/3.0/)
* This comment block must be retained in all deployments and distributions.
* Credit: Derived from Lytebox v3.22, the original work of Markus F. Hay.
*   Website: http://www.dolem.com/lytebox/
*   Lytebox was originally derived from the Lightbox class (v2.02), written by Lokesh Dhakar.
*   Website: http://huddletogether.com/projects/lightbox2/
*************************************************************************************************/

function Floatbox() {
	this.defaultOptions = {

/***** BEGIN OPTIONS CONFIGURATION *****/
// see docs/options.html for detailed descriptions

/*** <General Options> ***/
theme:          'auto'   ,// 'auto'|'black'|'white'|'blue'|'yellow'|'red'|'custom'
padding:         12      ,// pixels
panelPadding:    8       ,// pixels
outerBorder:     4       ,// pixels
innerBorder:     1       ,// pixels
autoResize:      true    ,// true|false
overlayOpacity:  80      ,// 0-100
upperOpacity:    65      ,// 0-100
showResize:      true    ,// true|false
showCaption:     true    ,// true|false
showItemNumber:  true    ,// true|false
showClose:       true    ,// true|false
hideFlash:       true    ,// true|false
disableScroll:   false   ,// true|false
enableCookies:   false   ,// true|false
cookieScope:    'site'   ,// 'site'|'folder'
url404Image:    '/floatbox/images/404.jpg'  ,// change this if you install in another folder
/*** </General Options> ***/

/*** <Navigation Options> ***/
navType:            'both'  ,// 'upper'|'lower'|'both'|'none'
upperNavWidth:       42     ,// 0-50
upperNavPos:         20     ,// 0-100
showUpperNav:       'once'  ,// 'always'|'once'|'never'
showHints:          'once'  ,// 'always'|'once'|'never'
enableWrap:          true   ,// true|false
enableKeyboardNav:   true   ,// true|false
outsideClickCloses:  true   ,// true|false
/*** </Navigation Options> ***/

/*** <Animation Options> ***/
resizeOrder:         'both'  ,// 'both'|'width'|'height'|'random'
resizeDuration:       5.5    ,// 0-10
imageFadeDuration:    4.5    ,// 0-10
overlayFadeDuration:  0      ,// 0-10
/*** </Animation Options> ***/

/*** <Slideshow Options> ***/
slideInterval:  4.1    ,// seconds
endTask:       'exit'  ,// 'stop'|'exit'|'loop'
showPlayPause:  true   ,// true|false
startPaused:    false  ,// true|false
pauseOnPrev:    true   ,// true|false
pauseOnNext:    false  ,// true|false
/*** </Slideshow Options> ***/

/*** <String Localization> ***/
strHintClose:    'exit (kbd: esc)'       ,
strHintPrev:     'prev (kbd: lt.arrow)'  ,
strHintNext:     'next (kbd: rt.arrow)'  ,
strHintPlay:     'play (kbd: spacebar)'  ,
strHintPause:    'pause (kbd: spacebar)' ,
strHintResize:   'resize (kbd: tab)'     ,
strImageCount:   'image %1 of %2'        ,
strIframeCount:  'page %1 of %2'         };
/*** </String Localization> ***/

/***** END OPTIONS CONFIGURATION *****/

	this.win = top;
	this.doc = this.win.document;
	this.bod = this.doc.body;
	this.arrAnchors = [];
	this.arrImageHrefs = [];
	this.arrItems = [];
	this.arrResize1 = [];
	this.arrResize2 = [];
	this.objTimeouts = {};
	this.objImagePreloads = {};
	this.lowerPanelSpace = 24;
	this.resizeSpace = 6;
	this.initialSize = 300;
	this.showHintsTime = 1600;
	var navAgent = navigator.userAgent;
	if (window.opera) {
		var ver = parseFloat(navAgent.substring(navAgent.indexOf('Opera/') + 6)) || 999;
		this.operaOld = ver < 9.5;
		this.operaQuirks = this.doc.compatMode === 'BackCompat';
	} else if (document.all) {
		this.ie = true;
		this.ieOld = /*@cc_on @if(@_jscript_version < 5.7) ! @end @*/ false;
		this.ieQuirks = this.doc.compatMode === 'BackCompat';
	} else {
		var idx = navAgent.indexOf("Firefox");
		if (idx !== -1) {
			var ver = parseFloat(navAgent.substring(idx + 8)) || 999;
			this.ffOld = ver < 3.0;
		}
		this.ffNew = !this.ffOld;
	}
};
Floatbox.prototype.tagAnchors = function(doc) {
	if (!window.opera) {
		var i = this.arrAnchors.length;
		while (i--) {
			try {
				var x = this.arrAnchors[i].href;
			} catch(e) {
				this.arrAnchors.splice(i, 1);
			}
		}
	}
	var reIsFbxd = /^(?:gallery|iframe|slideshow|lytebox|lyteshow|lyteframe|lightbox)/i;
	var reIsImg = /\.(?:jpg|jpeg|png|gif|bmp)\s*$/i;
	var reAuto = /autoStart\s*[:=]\s*true/i;
	var click = function () { fb.start(this); return false; };
	function tagAnchor(anchor) {
		var href = anchor.getAttribute('href');
		var rel = anchor.getAttribute('rel');
		var rev = anchor.getAttribute('rev');
		var title = anchor.getAttribute('title');
		if (reIsFbxd.test(rel)) {
			anchor.onclick = click;
			var i = (doc == fb.doc)? 0 : fb.arrAnchors.length;
			while (i--) {
				var prevAnchor = fb.arrAnchors[i];
				if (prevAnchor.getAttribute('href') == href &&
					prevAnchor.getAttribute('rel') == rel &&
					prevAnchor.getAttribute('rev') == rev &&
					prevAnchor.getAttribute('title') == title) {
					break;
				}
			}
			if (i == -1) {
				fb.arrAnchors.push(anchor);
				if (reIsImg.test(href)) fb.arrImageHrefs.push(href);
			}
			if (reAuto.test(rev)) fb.autoStart = anchor;
		}
	};
	var anchors = doc.getElementsByTagName('a');
	for (var i = 0, len = anchors.length; i < len; i++) {
		tagAnchor(anchors[i]);
	}
	anchors = doc.getElementsByTagName('area');
	for (var i = 0, len = anchors.length; i < len; i++) {
		tagAnchor(anchors[i]);
	}
};
Floatbox.prototype.preloadNextImage = function(href) {
	if (!(href || this.blockPreloadChain)) {
		for (var i = 0, len = this.arrImageHrefs.length; i < len; i++) {
			var h = this.arrImageHrefs[i];
			if (!this.objImagePreloads[h]) {
				var href = h;
				break;
			}
		}
	}
	if (href) {
		this.objImagePreloads[href] = new Image();
		this.objImagePreloads[href].onload = this.objImagePreloads[href].onerror =
			function() { setTimeout(function() { fb.preloadNextImage() }, 200) };
		this.objImagePreloads[href].src = href;
	}
};
Floatbox.prototype.setNode = function(nodeType, id, parentNode, title) {
	var node = this.doc.getElementById(id);
	if (!node) {
		node = this.doc.createElement(nodeType);
		if (id) node.id = id;
		if (nodeType == 'a') node.setAttribute('href', '#');
		if (title && this.showHints != 'never') node.setAttribute('title', title);
		if (nodeType == 'iframe') {
			node.setAttribute('scrolling', this.itemScrolling);
			node.setAttribute('frameBorder', '0');
			node.setAttribute('align', 'middle');
		}
		parentNode.appendChild(node);
	}
	node.className = id + '_' + this.theme;
	node.style.display = 'none';
	return node;
};
Floatbox.prototype.buildDOM = function() {
	this.fbOverlay		= this.setNode('div', 'fbOverlay', this.bod);
	this.fbFloatbox		= this.setNode('div', 'fbFloatbox', this.bod);
	this.fbLoader		= this.setNode('div', 'fbLoader', this.fbFloatbox);
	this.fbContentPanel	= this.setNode('div', 'fbContentPanel', this.fbFloatbox);
	if (this.upperNav) {
		this.fbLeftNav		= this.setNode('a', 'fbLeftNav', this.fbContentPanel);
		this.fbRightNav		= this.setNode('a', 'fbRightNav', this.fbContentPanel);
		this.fbUpperPrev	= this.setNode('a', 'fbUpperPrev', this.fbContentPanel, this.strHintPrev);
		this.fbUpperNext	= this.setNode('a', 'fbUpperNext', this.fbContentPanel, this.strHintNext);
	}
	this.fbResize		= this.setNode('a', 'fbResize', this.fbContentPanel, this.strHintResize);
	this.fbInfoPanel	= this.setNode('div', 'fbInfoPanel', this.fbContentPanel);
	this.fbCaption		= this.setNode('span', 'fbCaption', this.fbInfoPanel);
	this.fbItemNumber	= this.setNode('span', 'fbItemNumber', this.fbInfoPanel);
	this.fbControlPanel	= this.setNode('div', 'fbControlPanel', this.fbContentPanel);
	this.fbLowerNav		= this.setNode('div', 'fbLowerNav', this.fbControlPanel);
	this.fbLowerPrev	= this.setNode('div', 'fbLowerPrev', this.fbLowerNav);
	this.fbLowerPrevA	= this.setNode('a', 'fbLowerPrevA', this.fbLowerPrev, this.strHintPrev);
	this.fbLowerNext	= this.setNode('div', 'fbLowerNext', this.fbLowerNav);
	this.fbLowerNextA	= this.setNode('a', 'fbLowerNextA', this.fbLowerNext, this.strHintNext);
	this.fbControls		= this.setNode('div', 'fbControls', this.fbControlPanel);
	this.fbClose		= this.setNode('a', 'fbClose', this.fbControls, this.strHintClose);
	this.fbPlayPause	= this.setNode('div', 'fbPlayPause', this.fbControls);
	this.fbPlay			= this.setNode('a', 'fbPlay', this.fbPlayPause, this.strHintPlay);
	this.fbPause		= this.setNode('a', 'fbPause', this.fbPlayPause, this.strHintPause);
};
Floatbox.prototype.parseOptionString = function(str) {
	if (!str) return {};
	var quotes = [], match;
	var rexp = /`(.*?)`/g;
	while (match = rexp.exec(str)) quotes.push(match[1]);
	if (quotes.length) str = str.replace(rexp, '``');
	str = str.replace(/\s*[:=]\s*/g, ':');
	str = str.replace(/\s*[;&]\s*/g, ' ');
	str = str.replace(/^\s+|\s+$/g, '');
	var aVars = str.split(' ');
	var pairs = {};
	var i = aVars.length, j = quotes.length;
	while (i--) {
		var aThisVar = aVars[i].split(':');
		if (aThisVar[1] == '``') aThisVar[1] = quotes[--j] || '';
		pairs[aThisVar[0]] = aThisVar[1];
	}
	return pairs;
};
Floatbox.prototype.setOptions = function(pairs) {
	if (typeof(pairs) != 'object') return;
	for (var name in pairs) {
		var value = pairs[name];
		if (typeof(value) == 'string') {
			if (name.indexOf('str') != 0) value = value.toLowerCase();
			if (isNaN(value)) {
				if (value == 'true') {
					this[name] = true;
				} else if (value == 'false') {
					this[name] = false;
				} else if (value) {
					this[name] = value;
				}
			} else {
				this[name] = +value;
			}
		} else {
			this[name] = value;
		}
	}
};
Floatbox.prototype.start = function(anchor) {
	this.itemCount = this.arrItems.length = this.itemsShown = this.resizeCounter = 0;
	this.currentItem = -1;
	this.startAnchor = anchor;
	var href = anchor.getAttribute('href');
	var rel = anchor.getAttribute('rel');
	var rev = anchor.getAttribute('rev');
	var title = anchor.getAttribute('title');
	this.isIframe = /^(iframe|lyteframe)/i.test(rel);
	if (!this.isIframe) {
		this.blockPreloadChain = true;
		this.preloadNextImage(href);
	}
	var reDontShow = /showThis\s*[:=]\s*false/i;
	if (/^(gallery|iframe|lytebox|lyteframe|lightbox)$/i.test(rel)) {
		if (href && !reDontShow.test(rev)) {
			this.arrItems.push( {href: href, title: title, rev: rev, seen: false} );
		}
	} else {
		for (var i = 0, len = this.arrAnchors.length; i < len; i++) {
			var href_i = this.arrAnchors[i].getAttribute('href');
			var rev_i = this.arrAnchors[i].getAttribute('rev');
			if (this.arrAnchors[i].getAttribute('rel') == rel) {
				if (href_i && !reDontShow.test(rev_i)) {
					this.arrItems.push( {
						href: this.arrAnchors[i].getAttribute('href'),
						title: this.arrAnchors[i].getAttribute('title'),
						rev: rev_i, seen: false
					} );
				}
			}
		}
	}
	this.itemCount = this.arrItems.length;
	this.modal = this.doSlideshow = this.loadPageOnClose = false;
	this.setOptions(this.defaultOptions);
	if (typeof(this.win.setFloatboxOptions) == 'function') this.win.setFloatboxOptions();
	if (this.enableCookies) {
		var match = /fbOptions=(.+?)(;|$)/.exec(this.doc.cookie);
		if (match) this.setOptions(this.parseOptionString(match[1]));
		var strOptions = '';
		for (var name in this.defaultOptions) {
			if (name.indexOf('str') != 0) strOptions += ' ' + name + ':' + this[name];
		}
		var strPath = '/';
		if (this.cookieScope == 'folder') {
			strPath = this.win.location.pathname;
			strPath = strPath.substring(0, strPath.lastIndexOf('/') + 1);
		}
		this.doc.cookie = 'fbOptions=' + strOptions + '; path=' + strPath;
	}
	this.setOptions(this.parseOptionString(rev));
	this.setOptions(this.parseOptionString(this.win.location.search.substring(1)));
	if (this.theme == 'grey') this.theme = 'white';
	if (!/^(auto|black|white|blue|yellow|red|custom)$/.test(this.theme)) this.theme='auto';
	if (this.theme == 'auto') this.theme = this.isIframe? 'white' : 'black';
	if (this.endTask == 'cont') this.endTask = 'loop';
	this.isSlideshow = this.itemCount > 1 && (/^(slideshow|lyteshow)/i.test(rel) || this.doSlideshow);
	this.isPaused = this.startPaused;
	if (this.isIframe) {
		this.autoResize = this.showResize = false;
		if (this.ffOld) this.disableScroll = true;
	}
	if (this.modal && (this.isSlideshow || this.isIframe)) {
		this.navType = 'none';
		this.showClose = false;
		this.showPlayPause = false;
		this.enableKeyboardNav = false;
		this.outsideClickCloses = false;
		this.showHints = 'never';
	}
	if (!/^(upper|lower|both|none)$/i.test(this.navType)) this.navType = 'both';
	if (this.itemCount <= 1) {
		this.navType = 'none';
		this.showItemNumber = false;
	} else if (this.isIframe && /upper|both/i.test(this.navType)) {
		this.navType = 'lower';
	}
	this.upperNav = /upper|both/i.test(this.navType);
	this.lowerNav = /lower|both/i.test(this.navType);
	if (this.upperNav) {
		if (this.upperNavWidth < 0) this.upperNavWidth = 0;
		if (this.upperNavWidth > 50) this.upperNavWidth = 50;
	}
	if (this.showHints == 'once') {
		this.hideHint = function(id) {
			if (this[id].title) this.objTimeouts[id] = setTimeout(function() { fb[id].title = ''; }, this.showHintsTime);
		};
	} else {
		this.hideHint = function() { return; };
	}
	this.buildDOM();
	this.fbResize.onclick = function() { fb.scaleItem = this.scaleItem; fb.loadItem(fb.currentItem); return false; };
	this.fbPlay.onclick = function() { fb.setPause(false); return false; };
	this.fbPause.onclick = function() { fb.setPause(true); return false; };
	this.fbClose.onclick = function() { fb.end(); return false; };
	if (this.outsideClickCloses) this.fbOverlay.onclick = function() { fb.end(); return false; };
	this.fbLowerPrevA.onclick = function() {
		if (fb.enableWrap || fb.currentItem != 0) {
			fb.loadItem((fb.currentItem == 0)? fb.itemCount - 1 : fb.currentItem - 1);
			if (fb.isSlideshow  && fb.pauseOnPrev && !fb.isPaused && fb.showPlayPause) {
				fb.setPause(true);
			}
		}
		return false;
	};
	this.fbLowerNextA.onclick = function() {
		if (fb.enableWrap || fb.currentItem != fb.itemCount - 1) {
			fb.loadItem((fb.currentItem == fb.itemCount - 1)? 0 : fb.currentItem + 1);
			if (fb.isSlideshow && fb.pauseOnNext && !fb.isPaused && fb.showPlayPause) {
				fb.setPause(true);
			}
		}
		return false;
	};
	if (this.upperNav) {
		this.fbLeftNav.onclick = this.fbUpperPrev.onclick = this.fbLowerPrevA.onclick;
		this.fbRightNav.onclick = this.fbUpperNext.onclick = this.fbLowerNextA.onclick;
		this.fbLeftNav.onmouseover = this.fbLeftNav.onmousemove =
		this.fbUpperPrev.onmousemove = function() {
			if (!fb.objTimeouts.fbContentPanel) fb.fbUpperPrev.style.visibility = 'visible';
			if (fb.lowerNav && !fb.showUpperNav) fb.fbLowerPrevA.style.backgroundPosition = 'bottom';
			return true;
		};
		this.fbRightNav.onmouseover = this.fbRightNav.onmousemove =
		this.fbUpperNext.onmousemove = function() {
			if (!fb.objTimeouts.fbContentPanel) fb.fbUpperNext.style.visibility = 'visible';
			if (fb.lowerNav && !fb.showUpperNav) fb.fbLowerNextA.style.backgroundPosition = 'bottom';
			return true;
		};
		this.fbUpperPrev.onmouseover = this.fbUpperNext.onmouseover = function() {
			this.onmousemove();
			fb.hideHint(this.id);
			return true;
		};
		this.fbLeftNav.onmouseout = function() {
			fb.fbUpperPrev.style.visibility = 'hidden';
			if (fb.lowerNav) fb.fbLowerPrevA.style.backgroundPosition = 'top';
		};
		this.fbRightNav.onmouseout = function() {
			fb.fbUpperNext.style.visibility = 'hidden';
			if (fb.lowerNav) fb.fbLowerNextA.style.backgroundPosition = 'top';
		};
		this.fbUpperPrev.onmouseout = this.fbUpperNext.onmouseout = function() {
			this.style.visibility = 'hidden';
			fb.clearTimeout(this.id);
		};
		this.fbLeftNav.onmouseup = this.fbRightNav.onmouseup = function(evt) {
			var e = evt || fb.win.event;
			if (e.button == 2) {
				fb.fbLeftNav.style.display = fb.fbRightNav.style.display = 'none';
				setTimeout(function() { if (fb.fbLeftNav) fb.fbLeftNav.style.display = fb.fbRightNav.style.display = ''; }, 20);
			}
		};
	}
	this.fbPlay.onmouseover = this.fbPause.onmouseover = this.fbClose.onmouseover =
	this.fbLowerPrevA.onmouseover =	this.fbLowerNextA.onmouseover = function() {
		this.style.backgroundPosition = 'bottom';
		fb.hideHint(this.id);
		return true;
	};
	this.fbResize.onmouseover = function() {
		fb.hideHint(this.id);
		return true;
	};
	this.fbPlay.onmouseout = this.fbPause.onmouseout = this.fbClose.onmouseout =
	this.fbLowerPrevA.onmouseout = this.fbLowerNextA.onmouseout = function() {
		this.style.backgroundPosition = 'top';
		fb.clearTimeout(this.id);
	};
	this.fbResize.onmouseout = function() {
		fb.clearTimeout(this.id);
	};
	if (this.enableKeyboardNav) {
		this.priorOnkeydown = this.doc.onkeydown;
		this.doc.onkeydown = this.keyboardAction;
	}
	if (window.opera) {
		this.priorOnkeypress = this.doc.onkeypress;
		this.doc.onkeypress = function() { return false; };
	}
	if (this.ieOld || this.ieQuirks) {
		this.setVisibility('select', 'hidden');
		this.fbOverlay.style.position = 'absolute';
		this.win.attachEvent('onresize', fb.stretchOverlay);
		this.win.attachEvent('onscroll', fb.stretchOverlay);
		this.stretchOverlay();
	}
	if (this.ieOld && this.isIframe) this.innerBorder = 0;
	if (this.hideFlash) {
		this.setVisibility('object', 'hidden');
		this.setVisibility('embed', 'hidden');
	}
	var callback = function() {
		setTimeout(function() { fb.turnOn(href, rev, title); }, 20);
	};
	this.fade(this.fbOverlay, 0, this.overlayOpacity, callback);
};
Floatbox.prototype.turnOn = function(href, rev, title) {
	this.fbFloatbox.style.position = 'absolute';
	this.fbFloatbox.style.width = this.fbFloatbox.style.height = this.fbFloatbox.style.borderWidth = '0';
	this.fbFloatbox.style.left = (this.getDisplayWidth() / 2 + this.getXScroll()) + 'px';
	this.fbFloatbox.style.top = (this.getDisplayHeight() / 3 + this.getYScroll()) + 'px';
	this.fbFloatbox.style.display = this.fbContentPanel.style.display = this.fbLoader.style.display = '';
	if (this.upperNav) {
		this.fbLeftNav.style.display = this.fbRightNav.style.display = '';
		this.fbLeftNav.style.top = this.fbRightNav.style.top =
		this.fbLeftNav.style.left = this.fbRightNav.style.right =
		this.fbUpperPrev.style.left = this.fbUpperNext.style.right =
			(this.padding + this.innerBorder) + 'px';
		if (this.showUpperNav == 'never' || (this.showUpperNav == 'once' && this.upperNavShown)) {
			this.showUpperNav = false;
		} else {
			this.fade(this.fbUpperPrev, this.upperOpacity);
			this.fade(this.fbUpperNext, this.upperOpacity);
		}
	}
	if (this.lowerNav) {
		this.fbLowerNav.style.display = this.fbLowerPrev.style.display = this.fbLowerPrevA.style.display =
		this.fbLowerNext.style.display = this.fbLowerNextA.style.display = '';
	}
	this.fbResize.style.left = this.fbResize.style.top = (this.padding + this.innerBorder) + 'px';
	if (!this.isSlideshow) this.showPlayPause = false;
	if (this.showClose || this.showPlayPause || this.lowerNav) {
		this.fbControlPanel.style.display = '';
		this.fbControlPanel.style.right = Math.max(this.padding, 8) + 'px';
	}
    var controlsWidth = 0;
	if (this.showClose) {
		this.fbControls.style.display = this.fbClose.style.display = '';
		controlsWidth = this.fbClose.offsetWidth;
	}
	if (this.showPlayPause) {
		this.fbControls.style.display = this.fbPlayPause.style.display =
		this.fbPlay.style.display = this.fbPause.style.display = '';
		this.fbPlay.style.left = this.isPaused? '' : '-9999px';
		this.fbPause.style.left = this.isPaused? '-9999px' : '';
		controlsWidth += this.fbPlayPause.offsetWidth;
	}
	this.fbControls.style.width = controlsWidth + 'px';
	this.fbControlPanel.style.width = (this.fbLowerNav.offsetWidth + controlsWidth) + 'px';
	this.xFramework = 2*(this.outerBorder + this.innerBorder + this.padding);
	this.yFramework = this.xFramework - this.padding;
	for (i = this.itemCount - 1; i > 0; i--) {
		if (this.arrItems[i].href == href &&
			this.arrItems[i].rev == rev &&
			this.arrItems[i].title == title) {
			break;
		}
	}
	this.loadItem(i);
};
Floatbox.prototype.loadItem = function(newItem) {
	this.clearTimeout('slideshow');
	this.clearTimeout('resizeGroup');
	this.blockPreloadChain = true;
	this.win.focus();
	this.isFirstItem = (this.currentItem == -1);
	if (this.currentItem != newItem) {
		this.resizeActive = false;
		if (this.showUpperNav == 'once' && this.upperNavShown) this.showUpperNav = false;
		this.currentItem = newItem;
	}
	this.revOptions = this.parseOptionString(this.arrItems[this.currentItem].rev);
	this.currentHref = this.arrItems[this.currentItem].href;
	if (this.displayWidth != (this.displayWidth = this.getDisplayWidth())) this.resizeActive = false;
	if (this.displayHeight != (this.displayHeight = this.getDisplayHeight())) this.resizeActive = false;
	this.fbContentPanel.style.visibility = 'hidden';
	this.fbResize.style.display = 'none';
	if (this.fbItem) {
		this.fbContentPanel.removeChild(this.fbItem);
		delete this.fbItem;
	};
	if (this.upperNav) {
		this.fbUpperPrev.style.visibility = this.fbUpperNext.style.visibility = 'hidden';
		this.fbLeftNav.style.height = this.fbRightNav.style.height = '0';
		if (!this.showUpperNav) this.fbUpperPrev.style.display = this.fbUpperNext.style.display = 'none';
	}
	if (this.fbFloatbox.style.position == 'fixed') {
		this.fbFloatbox.style.left = (this.fbFloatbox.offsetLeft + this.getXScroll()) + 'px';
		this.fbFloatbox.style.top = (this.fbFloatbox.offsetTop + this.getYScroll()) + 'px';
		this.fbFloatbox.style.position = 'absolute';
	}
	this.fbCaption.style.display = this.fbItemNumber.style.display = 'none';
	if (this.showCaption) {
		var sCaption = this.revOptions.caption? this.revOptions.caption : this.arrItems[this.currentItem].title || '';
		if (sCaption == 'href') sCaption = this.currentHref;
		sCaption = sCaption.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&amp;/g, '&');
		try { this.fbCaption.innerHTML = sCaption; } catch(e) { sCaption = ''; }
		if (sCaption) this.fbCaption.style.display = '';
	}
	if (this.showItemNumber) {
		var sCount = this.isIframe? this.strIframeCount : this.strImageCount;
		sCount = sCount.replace('%1', this.currentItem + 1);
		sCount = sCount.replace('%2', this.itemCount);
		try { this.fbItemNumber.innerHTML = sCount; } catch(e) { sCount = ''; }
		if (sCount) this.fbItemNumber.style.display = '';
	}
	if (this.isFirstItem) {
		this.objTimeouts.firstLoad = setTimeout(function() {
			fb.fbFloatbox.style.left = (fb.fbFloatbox.offsetLeft - fb.initialSize/2) + 'px';
			fb.fbFloatbox.style.top = (fb.fbFloatbox.offsetTop - fb.initialSize/3) + 'px';
			fb.fbFloatbox.style.width = fb.fbFloatbox.style.height = fb.initialSize + 'px';
			fb.fbFloatbox.style.borderWidth = fb.outerBorder + 'px';
		}, 500);
	} else {
		this.objTimeouts.loader = setTimeout(function() { fb.fbLoader.style.display = ''; }, 120);
	}
	if (this.isIframe) {
		setTimeout(function() { fb.setSize(); }, 20);
	} else {
		var loader = new Image();
		loader.onload = function() { fb.setSize(this.width, this.height); };
		loader.onerror = function() {
			fb.fbCaption.innerHTML = fb.currentHref.substring(fb.currentHref.lastIndexOf('/') + 1);
			fb.fbCaption.style.display = '';
			if (fb.currentHref != fb.url404Image) {
				this.src = fb.currentHref = fb.url404Image;
			} else {
				fb.setSize();
			}
		};
		loader.src = this.currentHref;
	}
};
Floatbox.prototype.setSize = function(imageWidth, imageHeight) {
	this.clearTimeout('firstLoad');
	if (typeof(this.panelHeight) == 'undefined') {
		if (!this.fbCaption.style.display || !this.fbItemNumber.style.display || !this.fbControlPanel.style.display || this.lowerNav) {
			this.panelHeight = 15 + 2*this.panelPadding;
			if (!this.fbCaption.style.display && this.showItemNumber) this.panelHeight += 15;
		} else {
			this.panelHeight = this.padding;
		}
	}
	var maxWidth = this.displayWidth - this.xFramework - 2*this.resizeSpace;
	var maxHeight = this.displayHeight - this.yFramework - this.panelHeight - 2*this.resizeSpace;
	var width = 0, height = 0;
	this.itemScrolling = 'auto';
	if (this.revOptions.width) width = (this.revOptions.width == 'max')? maxWidth : parseInt(this.revOptions.width);
	if (this.revOptions.height) height = (this.revOptions.height == 'max')? maxHeight : parseInt(this.revOptions.height);
	if (this.revOptions.scrolling) {
		if (this.isIframe && /yes|no/i.test(this.revOptions.scrolling)) this.itemScrolling = this.revOptions.scrolling;
	}
	width = width || imageWidth || 500;
	height = height || imageHeight || 300;
	this.nativeWidth = width;
	this.nativeHeight = height;
	if (typeof(this.scaleItem) == 'undefined') this.scaleItem = this.autoResize;
	if (this.scaleItem) {
		var scale = Math.min(maxWidth / width, maxHeight / height);
		if (scale < 1) {
			width = Math.round(width * scale);
			height = Math.round(height * scale);
		}
	}
	if (this.isFirstItem) this.fbFloatbox.style.borderWidth = this.outerBorder + 'px';
	if (this.upperNav && this.showUpperNav) {
		this.fbUpperPrev.style.top = this.fbUpperNext.style.top =
			(height * this.upperNavPos/100 + this.padding + this.innerBorder) + 'px';
	}
	this.newWidth = width + this.xFramework;
	this.infoPanelHeight = 0;
	this.fbInfoPanel.style.display = this.fbControlPanel.style.display = '';
	if (!this.fbCaption.style.display || !this.fbItemNumber.style.display) {
		var ipWidth = this.newWidth - 2*(this.outerBorder + Math.max(this.padding, 8)) - this.lowerPanelSpace - this.fbControlPanel.offsetWidth;
		if (ipWidth > 80) {
			this.fbInfoPanel.style.width = ipWidth + 'px';
			this.fbInfoPanel.style.left = '-9999px';
			this.infoPanelHeight = this.fbInfoPanel.offsetHeight;
		}
	}
	this.panelHeight = Math.max(this.infoPanelHeight, this.fbControlPanel.offsetHeight);
	this.fbInfoPanel.style.display = this.fbControlPanel.style.display = 'none';
	if (this.panelHeight) this.panelHeight += 2*this.panelPadding;
	this.panelHeight = Math.max(this.panelHeight, this.padding);
	this.newHeight = this.yFramework + height + this.panelHeight;
	if ((this.scaleItem || height == maxHeight) && this.newHeight > this.displayHeight) {
		if (this.resizeCounter++ < 3) {
			return this.loadItem(this.currentItem);
		}
	}
	var freeSpace = this.displayWidth - this.newWidth;
	var newLeft = (freeSpace <= 0)? 0 : Math.floor(freeSpace/2);
	var freeSpace = this.displayHeight - this.newHeight;
	var ratio = freeSpace / this.displayHeight;
	if (ratio <= .15) {
		var factor = 2;
	} else if (ratio >= .3) {
		var factor = 3;
	} else {
		var factor = 2 + (ratio - .15)/.15;
	}
	var newTop = (freeSpace <= 0)? 0 : Math.floor(freeSpace/factor);
	if (this.getXScroll() || this.getYScroll()) {
		this.fbFloatbox.style.display = 'none';
		if (this.ieOld || this.ieQuirks) this.stretchOverlay();
		newLeft += this.getXScroll();
		newTop += this.getYScroll();
		this.fbFloatbox.style.display = '';
	}
	this.itemWidth = width;
	this.itemHeight = height;
	var oldLeft = this.fbFloatbox.offsetLeft, oldTop = this.fbFloatbox.offsetTop;
	var oldWidth = this.fbFloatbox.offsetWidth, oldHeight = this.fbFloatbox.offsetHeight;
	this.arrResize1.length = this.arrResize2.length = 0;
	if (oldLeft != newLeft)
		var resizeL = [this.fbFloatbox, 'left', oldLeft, newLeft];
	if (oldTop != newTop)
		var resizeT = [this.fbFloatbox, 'top', oldTop, newTop];
	var borderAdjust = this.ieQuirks? 0 : 2*this.outerBorder;
	if (oldWidth != this.newWidth)
		var resizeW = [this.fbFloatbox, 'width', oldWidth - borderAdjust, this.newWidth - borderAdjust];
	if (oldHeight != this.newHeight)
		var resizeH = [this.fbFloatbox, 'height', oldHeight - borderAdjust, this.newHeight - borderAdjust];
	switch ((this.resizeOrder == 'random')? Math.floor(Math.random()*3) : this.resizeOrder) {
		case 'width': case 1:
			if (resizeL) this.arrResize1.push(resizeL);
			if (resizeW) this.arrResize1.push(resizeW);
			if (resizeT) this.arrResize2.push(resizeT);
			if (resizeH) this.arrResize2.push(resizeH);
			break;
		case 'height': case 2:
			if (resizeL) this.arrResize2.push(resizeL);
			if (resizeW) this.arrResize2.push(resizeW);
			if (resizeT) this.arrResize1.push(resizeT);
			if (resizeH) this.arrResize1.push(resizeH);
			break;
		default:
			if (resizeL) this.arrResize1.push(resizeL);
			if (resizeW) this.arrResize1.push(resizeW);
			if (resizeT) this.arrResize1.push(resizeT);
			if (resizeH) this.arrResize1.push(resizeH);
	}
	this.fbInfoPanel.style.left = Math.max(this.padding, 8) + 'px';
	this.resizeGroup(this.arrResize1, function() {
		fb.resizeGroup(fb.arrResize2, function() { fb.showContent(); })
	});
};
Floatbox.prototype.showContent = function() {
	this.clearTimeout('loader');
	var vscrollChanged = (this.displayWidth != (this.displayWidth = this.getDisplayWidth()));
	var hscrollChanged = (this.displayHeight != (this.displayHeight = this.getDisplayHeight()));
	if (this.resizeCounter++ < 4) {
		var tolerance = 25 + 2*this.resizeSpace;
		if ((vscrollChanged && Math.abs(this.newWidth - this.displayWidth) < tolerance)
		||  (hscrollChanged && Math.abs(this.newHeight - this.displayHeight) < tolerance))
			return this.loadItem(this.currentItem);
	}
	this.resizeCounter = 0;
	if (this.ieOld || this.ieQuirks) this.stretchOverlay();
	if (this.disableScroll && !(this.ieOld || this.ieQuirks || this.operaQuirks)) {
		if (this.newWidth <= this.displayWidth && this.newHeight <= this.displayHeight) {
			this.fbFloatbox.style.position = 'fixed';
			this.fbFloatbox.style.left = (this.fbFloatbox.offsetLeft - this.getXScroll()) + 'px';
			this.fbFloatbox.style.top = (this.fbFloatbox.offsetTop - this.getYScroll()) + 'px';
		}
	}
	this.fbItem = this.setNode((this.isIframe? 'iframe' : 'img'), 'fbItem', this.fbContentPanel);
	this.fbItem.width = this.itemWidth;
	this.fbItem.height = this.itemHeight;
	this.fbItem.src = this.currentHref;
	this.fbItem.style.left = this.fbItem.style.top = this.padding + 'px';
	this.fbItem.style.borderWidth = this.innerBorder + 'px';
	if (this.upperNav) {
		this.fbLeftNav.style.width = this.fbRightNav.style.width = Math.max(this.upperNavWidth/100 * this.itemWidth, this.fbUpperPrev.offsetWidth) + 'px';
		this.fbLeftNav.style.height = this.fbRightNav.style.height = this.itemHeight + 'px';
	}
	var panelTop = this.itemHeight + 2*this.innerBorder + this.padding;
	if (this.infoPanelHeight) {
		this.fbInfoPanel.style.display = '';
		this.fbInfoPanel.style.top = (panelTop + (this.panelHeight - this.fbInfoPanel.offsetHeight) / 2) + 'px';
	}
	if (this.showClose || this.showPlayPause || this.lowerNav) {
		this.fbControlPanel.style.display = '';
		this.fbControlPanel.style.top = (panelTop + (this.panelHeight - this.fbControlPanel.offsetHeight) / 2) + 'px';
	}
	delete this.panelHeight;
	this.prevItem = this.currentItem? this.currentItem - 1 : this.itemCount - 1;
	this.nextItem = (this.currentItem < this.itemCount - 1)? this.currentItem + 1 : 0;
	var prevHref = (this.enableWrap || this.currentItem != 0)? this.arrItems[this.prevItem].href : '';
	var nextHref = (this.enableWrap || this.currentItem != this.itemCount - 1)?  this.arrItems[this.nextItem].href : '';
	if (this.lowerNav) {
		this.fbLowerPrevA.href = prevHref;
		this.fbLowerPrevA.style.left = prevHref? '' : '-9999px';
		this.fbLowerNextA.href = nextHref;
		this.fbLowerNextA.style.left = nextHref? '' : '-9999px';
	}
	if (this.upperNav) {
		if (window.opera || this.ffNew) {
			this.fbLeftNav.href = this.fbUpperPrev.href =
			this.fbRightNav.href = this.fbUpperNext.href = this.currentHref;
		} else {
			this.fbLeftNav.href = this.fbUpperPrev.href = prevHref;
			this.fbRightNav.href = this.fbUpperNext.href = nextHref;
		}
		this.fbLeftNav.style.visibility = prevHref? 'visible' : 'hidden';
		this.fbRightNav.style.visibility = nextHref? 'visible' : 'hidden';
		this.upperNavShown = true;
	}
	delete this.scaleItem;
	if (this.showResize) {
		if (this.resizeActive) {
			this.fbResize.scaleItem = !this.fbResize.scaleItem;
		} else {
			var xtra = this.outerBorder;
			if (this.newWidth - xtra - this.padding > this.displayWidth
			|| this.newHeight - xtra - this.panelPadding > this.displayHeight) {
				this.fbResize.scaleItem = true;
				this.resizeActive = true;
			} else {
				xtra += this.resizeSpace;
				if (this.itemWidth < this.nativeWidth - xtra - this.padding
				|| this.itemHeight < this.nativeHeight - xtra - this.panelPadding) {
					this.fbResize.scaleItem = false;
					this.resizeActive = true;
				}
			}
		}
		if (this.resizeActive) {
			this.fbResize.style.backgroundPosition = this.fbResize.scaleItem? 'bottom' : 'top';
			this.fade(this.fbResize, this.upperOpacity);
		}
	}
	this.fade(this.fbContentPanel, 0, 100);
	this.fbLoader.style.display = 'none';
	this.fbItem.style.display = '';
	if (window.opera && this.isIframe) {
		var src = this.fbItem.src;
		this.fbItem.src = '';
		setTimeout(function() { fb.fbItem.src = src; }, 10);
	}
	if (!this.arrItems[this.currentItem].seen) {
		this.arrItems[this.currentItem].seen = true;
		this.itemsShown++;
	}
	this.blockPreloadChain = false;
	this.preloadNextImage(this.isIframe? '' : this.arrItems[this.nextItem].href);
	if (this.isSlideshow && !this.isPaused) {
		if (this.endTask == 'loop' || this.itemsShown < this.itemCount) {
			this.objTimeouts.slideshow = setTimeout(function() { fb.loadItem(fb.nextItem); }, this.slideInterval*1000);
		} else if (this.endTask == 'exit') {
			this.objTimeouts.slideshow = setTimeout(function() { fb.end(); }, this.slideInterval*1000);
		} else {
			this.objTimeouts.slideshow = setTimeout(function() { fb.setPause(true); }, this.slideInterval*1000);
			var i = this.itemCount;
			while (i--) this.arrItems[i].seen = false;
			this.itemsShown = 0;
		}
	}
};
Floatbox.prototype.end = function() {
	for (var key in this.objTimeouts) this.clearTimeout(key);
	if (this.enableKeyboardNav) this.doc.onkeydown = this.priorOnkeydown;
	if (window.opera) this.doc.onkeypress = this.priorOnkeypress;
	this.fbOverlay.onclick = null;
	this.fbFloatbox.style.display = 'none';
	if (this.ieOld || this.ieQuirks) {
		this.win.detachEvent('onresize', fb.stretchOverlay);
		this.win.detachEvent('onscroll', fb.stretchOverlay);
	}
	var callBack = function() {
		fb.fbOverlay.style.display = 'none';
		if (fb.hideFlash) {
			fb.setVisibility('object', '');
			fb.setVisibility('embed', '');
		}
		if (fb.ieOld || fb.ieQuirks) fb.setVisibility('select', '');
	};
	this.fade(this.fbOverlay, this.overlayOpacity, 0, callBack);
	function remove(el) { el.parentNode.removeChild(el); };
	if (this.upperNav) {
		remove(this.fbUpperPrev); delete this.fbUpperPrev;
		remove(this.fbUpperNext); delete this.fbUpperPrev;
		remove(this.fbLeftNav); delete this.fbLeftNav;
		remove(this.fbRightNav); delete this.fbRightNav;
	}
	if (this.fbItem) { remove(this.fbItem); delete this.fbItem; }
	remove(this.fbCaption); delete this.fbCaption;
	remove(this.fbItemNumber); delete this.fbItemNumber;
	remove(this.fbInfoPanel); delete this.fbInfoPanel;
	if (this.loadPageOnClose) {
		if (this.loadPageOnClose == 'this') {
			this.win.location.reload(true);
		} else if (this.loadPageOnClose == 'back') {
			history.back();
		} else {
			this.win.location.replace(this.loadPageOnClose);
		}
	}
};
Floatbox.prototype.keyboardAction = function(evt) {
	var e = evt || fb.win.event;
	var keyCode = e.which || e.keyCode;
	switch (keyCode) {
		case 37: case 39:
			if (fb.itemCount > 1) {
				(keyCode == 37)? fb.fbLowerPrevA.onclick() : fb.fbLowerNextA.onclick();
				if (fb.showHints == 'once') {
					fb.fbLowerPrevA.title = fb.fbLowerNextA.title = '';
					if (fb.upperNav) fb.fbUpperPrev.title = fb.fbUpperNext.title = '';
				}
			}
			return false;
		case 32:
			if (fb.isSlideshow) {
				fb.setPause(!fb.isPaused);
				if (fb.showHints == 'once') fb.fbPlay.title = fb.fbPause.title = '';
			}
			return false;
		case 9:
			if (fb.resizeActive) {
				fb.fbResize.onclick();
				if (fb.showHints == 'once') fb.fbResize.title = '';
			}
			return false;
		case 27:
			if (fb.showHints == 'once') fb.fbClose.title = '';
			fb.end();
			return false;
		case 13:
			return false;
	}
};
Floatbox.prototype.setPause = function(bPause) {
	this.isPaused = bPause;
	if (bPause) {
		this.clearTimeout('slideshow');
	} else {
		this.loadItem(this.nextItem);
	}
	if (this.showPlayPause) {
		this.fbPlay.style.left = bPause? '' : '-9999px';
		this.fbPause.style.left = bPause? '-9999px' : '';
	}
};
Floatbox.prototype.fade = function(obj, startOp, finishOp, funcOnComplete) {
	if (!funcOnComplete) var funcOnComplete = function() { return; };
	this.clearTimeout(obj.id);
	if (typeof(finishOp) == 'undefined') finishOp = startOp;
	var fadeIn = (startOp <= finishOp && finishOp > 0);
	var duration = (obj.id == 'fbOverlay')? this.overlayFadeDuration : this.imageFadeDuration;
	if (duration > 10) duration = 10;
	if (duration < 0) duration = 0;
	if (duration == 0) {
		startOp = finishOp;
		var incr = 100;
	} else {
		var root = Math.pow(100, .1);
		var power = duration + ((10 - duration)/9) * (Math.log(2)/Math.log(root) - 1);
		var incr = Math.round(100/Math.pow(root, power));
	}
	if (!fadeIn) incr = -incr;
	this.setOpacity(obj, startOp, finishOp, incr, fadeIn, funcOnComplete);
	if (fadeIn) {
		obj.style.display = '';
		obj.style.visibility = 'visible';
	}
};
Floatbox.prototype.setOpacity = function(obj, thisOp, finishOp, incr, fadeIn, funcOnComplete) {
	if (funcOnComplete) arguments.callee.oncomplete = funcOnComplete;
	if ((fadeIn && thisOp >= finishOp) || (!fadeIn && thisOp <= finishOp)) thisOp = finishOp;
	if (fb.ie) {
		obj.style.filter = 'alpha(opacity=' + thisOp + ')';
	} else {
		obj.style.opacity = obj.style.MozOpacity = obj.style.KhtmlOpacity = thisOp/100;
	}
	if (thisOp == finishOp) {
		this.objTimeouts[obj.id] = null;
		if (fb.ie && finishOp >= 100) {
			try { obj.style.removeAttribute('filter'); } catch(e) {}
		}
		if (arguments.callee.oncomplete) arguments.callee.oncomplete();
	} else {
		this.objTimeouts[obj.id] = setTimeout(function() { fb.setOpacity(fb[obj.id], thisOp + incr, finishOp, incr, fadeIn); }, 20);
	}
};
Floatbox.prototype.resizeGroup = function(arr, funcOnComplete) {
	if (!funcOnComplete) var funcOnComplete = function() { return; };
	var i = arr.length;
	if (!i) return funcOnComplete();
	this.clearTimeout('resizeGroup');
	var diff = 0;
	while (i--) diff = Math.max(diff, Math.abs(arr[i][3] - arr[i][2]));
	var rate = (diff && this.resizeDuration)? Math.pow(Math.max(1, 2.2 - this.resizeDuration/10), (Math.log(diff))) / diff : 1;
	i = arr.length;
	while (i--) arr[i][3] -= arr[i][2];
	this.resize(rate, 1, arr, funcOnComplete);
};
Floatbox.prototype.resize = function(rate, count, arr, funcOnComplete) {
	if (arr) arguments.callee.arr = arr;
	if (funcOnComplete) arguments.callee.oncomplete = funcOnComplete;
	var arr = arguments.callee.arr;
	var increment = rate * count;
	if (increment > 1) increment = 1;
	var i = arr.length;
	while (i--) {
		var obj = arr[i][0], prop = arr[i][1], startPx = arr[i][2], diff = arr[i][3];
		obj.style[prop] = (startPx + diff * increment) + 'px';
	}
	if (increment >= 1) {
		this.objTimeouts.resizeGroup = null;
		if (arguments.callee.oncomplete) arguments.callee.oncomplete();
	} else {
		this.objTimeouts.resizeGroup = setTimeout(function() { fb.resize(rate, count + 1); }, 20);
	}
};
Floatbox.prototype.getXScroll = function() {
	return this.win.pageXOffset || this.bod.scrollLeft || this.doc.documentElement.scrollLeft || 0;
};
Floatbox.prototype.getYScroll = function() {
	return this.win.pageYOffset || this.bod.scrollTop || this.doc.documentElement.scrollTop || 0;
};
Floatbox.prototype.getDisplayWidth = function() {
	return (this.doc.documentElement && this.doc.documentElement.clientWidth) || this.bod.clientWidth;
};
Floatbox.prototype.getDisplayHeight = function() {
	if (this.doc.childNodes && !this.doc.all && !navigator.taintEnabled && !this.doc.evaluate) {
		return this.win.innerHeight;
	}
	if (this.operaOld) {
		return this.bod.clientHeight;
	}
	var elementHeight = (this.doc.documentElement && this.doc.documentElement.clientHeight) || 0;
	if (!elementHeight || (this.doc.compatMode === 'BackCompat')) {
		return this.bod.clientHeight;
	}
	return elementHeight;
};
Floatbox.prototype.setVisibility = function(tagName, state, thisWindow) {
	if (!thisWindow) {
		arguments.callee(tagName, state, top)
	} else {
		try {
			var els = thisWindow.document.getElementsByTagName(tagName);
			var i = els.length;
			while (i--) {
				els[i].style.visibility = state;
				if (!state) els[i].focus();
			}
		} catch(e) {}
		var frames = thisWindow.frames;
		i = frames.length;
		while (i--) {
			if (typeof(frames[i].window) == 'object') arguments.callee(tagName, state, frames[i].window);
		}
		return;
	}
	if (!state && this.startAnchor) this.startAnchor.focus();
};
Floatbox.prototype.clearTimeout = function(key) {
	if (this.objTimeouts[key]) {
		clearTimeout(this.objTimeouts[key]);
		this.objTimeouts[key] = null;
	}
};
Floatbox.prototype.stretchOverlay = function() {
	if (arguments.length == 1) {
		fb.clearTimeout('onresize');
		fb.objTimeouts.onresize = setTimeout(function() { fb.stretchOverlay(); }, 50);
	} else {
		fb.objTimeouts.onresize = null;
		var width = fb.fbFloatbox.offsetLeft + fb.fbFloatbox.offsetWidth;
		var height = fb.fbFloatbox.offsetTop + fb.fbFloatbox.offsetHeight;
		var style = fb.fbOverlay.style;
		style.width = style.height = '0';
		style.width = Math.max(width, fb.bod.scrollWidth, fb.bod.clientWidth, fb.doc.documentElement.clientWidth, fb.getDisplayWidth() + fb.getXScroll()) + 'px';
		style.height = Math.max(height, fb.bod.scrollHeight, fb.bod.clientHeight, fb.doc.documentElement.clientHeight, fb.getDisplayHeight() + fb.getYScroll()) + 'px';
	}
};
function initfb() {
	if (arguments.callee.done) return;
	if (self != top && !parent.fb) {
		setTimeout(initfb, 50);
		return;
	}
	arguments.callee.done = true;
	if (!top.floatbox) top.floatbox = new Floatbox();
	fb = top.floatbox;
	fb.tagAnchors(self.document);
	if (fb.autoStart) {
		fb.start(fb.autoStart);
		fb.autoStart = null;
	} else {
		fb.preloadNextImage();
	}
};
/*@cc_on
/*@if (@_win32 || @_win64)
	fb_tempNode = document.createElement('div');
	(function() {
		if (document.readyState != 'complete') return setTimeout(arguments.callee, 50);
		try {
			fb_tempNode.doScroll('left');
		} catch(e) {
			return setTimeout(arguments.callee, 50);
		}
		initfb();
		delete fb_tempNode;
	})();
@else @*/
	if (/Apple|KDE/i.test(navigator.vendor)) {
		(function() {
			if (/loaded|complete/.test(document.readyState)) {
				initfb();
			} else {
				setTimeout(arguments.callee, 50);
			}
		})();
	} else if (document.addEventListener) {
		document.addEventListener('DOMContentLoaded', initfb, false);
	}
/*@end
@*/
fb_prevOnload = window.onload;
window.onload = function() {
	if (typeof(fb_prevOnload) == 'function') fb_prevOnload();
	initfb();
};

