Array.prototype.removeDuplicates = function() {
    for ( var i = 1; i < this.length; i++ ) {
        if ( this[i][0] == this[i - 1][0] ) {
            this.splice( i, 1 );
        }
    }
};

Array.prototype.empty = function() {
    for ( var i = 0; i <= this.length; i++ ) {
        this.shift();
    }
};

String.prototype.trim = function(){
    return this.replace( /^\s+|\s+$/g, '' );
};

function Stretta_LightBox() {
    this.theme                    = 'red';     // theme
    this.hideFlash                = true;      // controls whether or not Flash objects should be hidden
    this.outerBorder              = true;      // controls whether to show the outer grey (or theme) border
    this.resizeSpeed              = 5;         // controls the speed of the image resizing (1=slowest and 10=fastest)
    this.maxOpacity               = 50;        // higher opacity = darker overlay, lower opacity = lighter overlay
    this.navType                  = 2;         // 1 = "Prev/Next" buttons on top left and left (default), 2 = "<< prev | next >>" links next to image number
    this.autoResize               = false;     // controls whether or not images should be resized if larger than the browser window dimensions
    this.doAnimations             = true;      // controls whether or not "animate" Lightbox, i.e. resize transition between images, fade in/out effects, etc.
    this.borderSize               = 12;        // if you adjust the padding in the CSS, you will need to update this variable -- otherwise, leave this alone...
    this.slideInterval            = 4000;      // Change value (milliseconds) to increase/decrease the time between "slides" (10000 = 10 seconds)
    this.showNavigation           = true;      // true to display Next/Prev buttons/text during slideshow, false to hide
    this.showClose                = true;      // true to display the Close button, false to hide
    this.showDetails              = true;      // true to display image details (caption, count), false to hide
    this.showPlayPause            = true;      // true to display pause/play buttons next to close button, false to hide
    this.autoEnd                  = true;      // true to automatically close Lightbox after the last image is reached, false to keep open
    this.pauseOnNextClick         = false;     // true to pause the slideshow when the "Next" button is clicked
    this.pauseOnPrevClick         = true;      // true to pause the slideshow when the "Prev" button is clicked
	
    if ( this.resizeSpeed > 10 ) {
        this.resizeSpeed = 10;
    }
	
    if ( this.resizeSpeed < 1 ) {
        resizeSpeed = 1;
    }
	
    this.resizeDuration           = ( 11 - this.resizeSpeed ) * 0.15;
    this.resizeWTimerArray        = new Array();
    this.resizeWTimerCount        = 0;
    this.resizeHTimerArray        = new Array();
    this.resizeHTimerCount        = 0;
    this.showContentTimerArray    = new Array();
    this.showContentTimerCount    = 0;
    this.overlayTimerArray        = new Array();
    this.overlayTimerCount        = 0;
    this.imageTimerArray          = new Array();
    this.imageTimerCount          = 0;
    this.timerIDArray             = new Array();
    this.timerIDCount             = 0;
    this.slideshowIDArray         = new Array();
    this.slideshowIDCount         = 0;
    this.imageArray               = new Array();
    this.activeImage              = null;
    this.slideArray               = new Array();
    this.activeSlide              = null;
    this.frameArray               = new Array();
    this.activeFrame              = null;
	
    this.checkFrame();
	
    this.isSlideshow              = false;
    this.isLightFrame             = false;
	
    /*@cc_on
	/*@if (@_jscript)
	this.ie = (document.all && !window.opera) ? true : false;
	/*@else @*/
	this.ie = false;
	/*@end
    @*/
	
    this.ie7 = ( this.ie && window.XMLHttpRequest );
    this.initialize();
};

Stretta_LightBox.prototype.initialize = function() {
    this.updateLightBoxItems();
	
    var objBody = this.doc.getElementsByTagName( "body" ).item( 0 );
	
    if ( this.doc.getElementById( 'lbOverlay' ) ) {
        objBody.removeChild( this.doc.getElementById( "lbOverlay" ) );
        objBody.removeChild( this.doc.getElementById( "lbMain" ) );
    }
	
    var objOverlay = this.doc.createElement( "div" );
	objOverlay.setAttribute( 'id','lbOverlay' );
	objOverlay.setAttribute( ( this.ie? 'className' : 'class' ), this.theme );
	
	if ((this.ie && !this.ie7) || (this.ie7 && this.doc.compatMode == 'BackCompat')) {
		objOverlay.style.position = 'absolute';
	}
	
	objOverlay.style.display = 'none';
	objBody.appendChild(objOverlay);
	
    var objLightbox = this.doc.createElement("div");
	objLightbox.setAttribute('id','lbMain');
	objLightbox.style.display = 'none';
	objBody.appendChild(objLightbox);
	
	var objDetailsContainer = this.doc.createElement("div");
	objDetailsContainer.setAttribute('id','lbDetailsContainer');
	objDetailsContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
	objLightbox.appendChild(objDetailsContainer);
	
	var objClose = this.doc.createElement("a");
	objClose.setAttribute('id','lbClose');
	objClose.setAttribute((this.ie ? 'className' : 'class'), this.theme);
	objClose.setAttribute('href','#');
	objDetailsContainer.appendChild(objClose);
	
	var objDetails = this.doc.createElement("div");
	objDetails.setAttribute('id','lbDetails');
	objDetailsContainer.appendChild(objDetails);
	
    var objOuterContainer = this.doc.createElement("div");
	objOuterContainer.setAttribute('id','lbOuterContainer');
	objOuterContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
	objLightbox.appendChild(objOuterContainer);
	
    var objImageContainer = this.doc.createElement("div");
	objImageContainer.setAttribute('id','lbImageContainer');
	objOuterContainer.appendChild(objImageContainer);
	
    var objLightboxImage = this.doc.createElement("img");
	objLightboxImage.setAttribute('id','lbImage');
	objImageContainer.appendChild(objLightboxImage);
	
    var objLoading = this.doc.createElement("div");
	objLoading.setAttribute('id','lbLoading');
	objOuterContainer.appendChild(objLoading);
};

Stretta_LightBox.prototype.updateLightBoxItems = function() {
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
	
    for (var i = 0; i < anchors.length; i++) {
        var anchor = anchors[i];
        var relAttribute = String(anchor.getAttribute('rel'));
		
        if (anchor.getAttribute('href')) {
            if (relAttribute.toLowerCase().match('lightbox')) {
                anchor.onclick = function () { myLightBox.start(this, false, false); return false; }
            }
        }
    }
};

Stretta_LightBox.prototype.start = function(imageLink, doSlide, doFrame) {
    if (this.ie && !this.ie7) {    this.toggleSelects('hide');    }
	
    if (this.hideFlash) { this.toggleFlash('hide'); }
	
    this.isLightFrame = (doFrame ? true : false);
    var pageSize    = this.getPageSize();
    var objOverlay    = this.doc.getElementById('lbOverlay');
    var objBody        = this.doc.getElementsByTagName("body").item(0);
    objOverlay.style.height = pageSize[1] + "px";
    objOverlay.style.display = '';
    this.appear('lbOverlay', (this.doAnimations ? 0 : this.maxOpacity));
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
	
	
	this.imageArray = [];
	this.imageNum = 0;
	this.slideArray = [];
	this.slideNum = 0;
	
	if ((imageLink.getAttribute('rel') == 'lightbox')) {
		this.imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));
	} else {
		if (imageLink.getAttribute('rel').indexOf('lightbox') != -1) {
			for (var i = 0; i < anchors.length; i++) {
				var anchor = anchors[i];
				
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
					this.imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
				}
			}
			
			this.imageArray.removeDuplicates();
			while(this.imageArray[this.imageNum][0] != imageLink.getAttribute('href')) { this.imageNum++; }
		}
	}
	
    var object = this.doc.getElementById('lbMain');
	object.style.top = (this.getPageScroll() + (pageSize[3] / 15)) + "px";
	object.style.display = '';
	
    if (!this.outerBorder) {
        this.doc.getElementById('lbOuterContainer').style.border = 'none';
        this.doc.getElementById('lbDetailsContainer').style.border = 'none';
    } else {
        this.doc.getElementById('lbOuterContainer').style.borderBottom = '';
        this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme);
    }
	
    this.doc.getElementById('lbOverlay').onclick = function() { myLightBox.end(); return false; }
    this.doc.getElementById('lbMain').onclick = function(e) {
        var e = e;
		
        if (!e) {
            if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
                e = window.parent.window.event;
            } else {
                e = window.event;
            }
        }
		
        var id = (e.target ? e.target.id : e.srcElement.id);
		
        if (id == 'lbMain') { myLightBox.end(); return false; }
    }
	
    this.doc.getElementById('lbClose').onclick = function() { myLightBox.end(); return false; }
	this.changeContent(this.imageNum);
};

Stretta_LightBox.prototype.changeContent = function(imageNum) {
    this.activeImage = imageNum;
	
    this.doc.getElementById('lbLoading').style.display = '';
    this.doc.getElementById('lbImage').style.display = 'none';
    this.doc.getElementById('lbDetailsContainer').style.display = 'none';
	
    object = this.doc.getElementById('lbDetails');
	object.innerHTML = '<span id="lbPrev_Off" style="display: none;"></span><a href="#" id="lbPrev" style="display: none;"></a><span id="lbCaption"></span><span id="lbNext_Off" style="display: none;"></span><a href="#" id="lbNext" style="display: none;"></a>';
	object.style.display = 'none';
	
	imgPreloader = new Image();
	imgPreloader.onload = function() {
		var imageWidth = imgPreloader.width;
		var imageHeight = imgPreloader.height;
		
		if (myLightBox.autoResize) {
			var pagesize = myLightBox.getPageSize();
			var x = pagesize[2] - 150;
			var y = pagesize[3] - 150;
			
			if (imageWidth > x) {
				imageHeight = Math.round(imageHeight * (x / imageWidth));
				imageWidth = x;
				
				if (imageHeight > y) {
					imageWidth = Math.round(imageWidth * (y / imageHeight));
					imageHeight = y;
				}
			} else if (imageHeight > y) {
				imageWidth = Math.round(imageWidth * (y / imageHeight));
				imageHeight = y;
				
				if (imageWidth > x) {
					imageHeight = Math.round(imageHeight * (x / imageWidth));
					imageWidth = x;
				}
			}
		}
		
		var lbImage = myLightBox.doc.getElementById('lbImage')
		lbImage.src = myLightBox.imageArray[myLightBox.activeImage][0];
		lbImage.width = imageWidth;
		lbImage.height = imageHeight;
		myLightBox.resizeContainer(imageWidth, imageHeight);
		imgPreloader.onload = function() {};
	}	
	imgPreloader.src = this.imageArray[this.activeImage][0];
};

Stretta_LightBox.prototype.resizeContainer = function(imgWidth, imgHeight) {
    this.wCur = this.doc.getElementById('lbOuterContainer').offsetWidth;
    this.hCur = this.doc.getElementById('lbOuterContainer').offsetHeight;
    this.xScale = ((imgWidth  + (this.borderSize * 2)) / this.wCur) * 100;
    this.yScale = ((imgHeight  + (this.borderSize * 2)) / this.hCur) * 100;
    var wDiff = (this.wCur - this.borderSize * 2) - imgWidth;
    var hDiff = (this.hCur - this.borderSize * 2) - imgHeight;
	
    if (!(hDiff == 0)) {
        this.hDone = false;
        this.resizeH('lbOuterContainer', this.hCur, imgHeight + this.borderSize*2, this.getPixelRate(this.hCur, imgHeight));
    } else {
        this.hDone = true;
    }
	
    if (!(wDiff == 0)) {
        this.wDone = false;
        this.resizeW('lbOuterContainer', this.wCur, imgWidth + this.borderSize*2, this.getPixelRate(this.wCur, imgWidth));
    } else {
        this.wDone = true;
    }
	
    if ((hDiff == 0) && (wDiff == 0)) {
        if (this.ie){ this.pause(250); } else { this.pause(100); }
    }
	
    this.doc.getElementById('lbDetailsContainer').style.width = (imgWidth + (this.borderSize * 2) + (this.ie && this.doc.compatMode == "BackCompat" && this.outerBorder ? 2 : 0)) + "px";
    this.showContent();
};

Stretta_LightBox.prototype.showContent = function() {
    if (this.wDone && this.hDone) {
        for (var i = 0; i < this.showContentTimerCount; i++) { window.clearTimeout(this.showContentTimerArray[i]); }
		
        this.doc.getElementById('lbLoading').style.display = 'none';
		this.doc.getElementById('lbDetailsContainer').style.display = '';
		this.doc.getElementById('lbImage').style.display = '';
		this.appear('lbImage', (this.doAnimations ? 0 : 100));
		this.preloadNeighborImages();
		
		this.doc.getElementById('lbClose').style.display = '';
		this.doc.getElementById('lbDetails').style.display = '';
		
        this.doc.getElementById('lbImageContainer').style.display = '';
		
    } else {
        this.showContentTimerArray[this.showContentTimerCount++] = setTimeout("myLightBox.showContent()", 200);
    }
};

Stretta_LightBox.prototype.updateDetails = function() {
    var object = this.doc.getElementById('lbCaption');
    var sTitle = this.imageArray[this.activeImage][1];
    object.style.display = '';
    object.innerHTML = (sTitle == null ? ' ' : sTitle);
    this.updateNav();
    this.appear('lbDetailsContainer', 100);
};

Stretta_LightBox.prototype.updateNav = function() {
    
	if(this.activeImage != 0) {
		var object = this.doc.getElementById('lbPrev');
		object.style.display = '';
		object.onclick = function() {
			myLightBox.changeContent(myLightBox.activeImage - 1); return false;
		}
	} else {
		this.doc.getElementById('lbPrev_Off').style.display = '';
	}
	
	if(this.activeImage != (this.imageArray.length - 1)) {
		var object = this.doc.getElementById('lbNext');
		object.style.display = '';
		object.onclick = function() {
			myLightBox.changeContent(myLightBox.activeImage + 1); return false;
		}
	} else {
		this.doc.getElementById('lbNext_Off').style.display = '';
	}
	
    this.enableKeyboardNav();
};

Stretta_LightBox.prototype.enableKeyboardNav = function() {
    document.onkeydown = this.keyboardAction;
};

Stretta_LightBox.prototype.disableKeyboardNav = function() {
    document.onkeydown = '';
};

Stretta_LightBox.prototype.keyboardAction = function(e) {
    var keycode = key = escape = null;
    keycode    = (e == null) ? event.keyCode : e.which;
    key        = String.fromCharCode(keycode).toLowerCase();
    escape  = (e == null) ? 27 : e.DOM_VK_ESCAPE;
	
    if ((key == 'x') || (key == 'c') || (keycode == escape)) {
        myLightBox.end();
    } else if ((key == 'p') || (keycode == 37)) {
        if (myLightBox.isSlideshow) {
            if(myLightBox.activeSlide != 0) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeSlide - 1);
            }
        } else if (myLightBox.isLightFrame) {
            if(myLightBox.activeFrame != 0) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeFrame - 1);
            }
        } else {
            if(myLightBox.activeImage != 0) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeImage - 1);
            }
        }
    } else if ((key == 'n') || (keycode == 39)) {
        if (myLightBox.isSlideshow) {
            if(myLightBox.activeSlide != (myLightBox.slideArray.length - 1)) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeSlide + 1);
            }
        } else if (myLightBox.isLightFrame) {
            if(myLightBox.activeFrame != (myLightBox.frameArray.length - 1)) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeFrame + 1);
            }
        } else {
            if(myLightBox.activeImage != (myLightBox.imageArray.length - 1)) {
                myLightBox.disableKeyboardNav();
                myLightBox.changeContent(myLightBox.activeImage + 1);
            }
        }
    }
};

Stretta_LightBox.prototype.preloadNeighborImages = function() {
    if (this.isSlideshow) {
        if ((this.slideArray.length - 1) > this.activeSlide) {
            preloadNextImage = new Image();
            preloadNextImage.src = this.slideArray[this.activeSlide + 1][0];
        }
		
        if(this.activeSlide > 0) {
            preloadPrevImage = new Image();
            preloadPrevImage.src = this.slideArray[this.activeSlide - 1][0];
        }
    } else {
        if ((this.imageArray.length - 1) > this.activeImage) {
            preloadNextImage = new Image();
            preloadNextImage.src = this.imageArray[this.activeImage + 1][0];
        }
		
        if(this.activeImage > 0) {
            preloadPrevImage = new Image();
            preloadPrevImage.src = this.imageArray[this.activeImage - 1][0];
        }
    }
};

Stretta_LightBox.prototype.togglePlayPause = function(hideID, showID) {
    if (this.isSlideshow && hideID == "lbPause") {
        for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); }
    }
	
    this.doc.getElementById(hideID).style.display = 'none';
    this.doc.getElementById(showID).style.display = '';
	
    if (hideID == "lbPlay") {
        this.isPaused = false;
        if (this.activeSlide == (this.slideArray.length - 1)) {
            this.end();
        } else {
            this.changeContent(this.activeSlide + 1);
        }
    } else {
        this.isPaused = true;
    }
};

Stretta_LightBox.prototype.end = function(caller) {
    var closeClick = (caller == 'slideshow' ? false : true);
	
    if (this.isSlideshow && this.isPaused && !closeClick) { return; }
	
    this.disableKeyboardNav();
    this.doc.getElementById('lbMain').style.display = 'none';
    this.fade('lbOverlay', (this.doAnimations ? this.maxOpacity : 0));
    this.toggleSelects('visible');
	
    if (this.hideFlash) { this.toggleFlash('visible'); }
	
    if (this.isSlideshow) {
        for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); }
    }
	
    if (this.isLightFrame) {
		this.initialize();
    }
};

Stretta_LightBox.prototype.checkFrame = function() {
    if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
        this.isFrame = true;
        this.lightbox = "window.parent." + window.name + ".myLightBox";
        this.doc = parent.document;
    } else {
        this.isFrame = false;
        this.lightbox = "myLightBox";
        this.doc = document;
    }
};

Stretta_LightBox.prototype.getPixelRate = function(cur, img) {
    var diff = (img > cur) ? img - cur : cur - img;
    if (diff >= 0 && diff <= 100) { return 10; }
    if (diff > 100 && diff <= 200) { return 15; }
    if (diff > 200 && diff <= 300) { return 20; }
    if (diff > 300 && diff <= 400) { return 25; }
    if (diff > 400 && diff <= 500) { return 30; }
    if (diff > 500 && diff <= 600) { return 35; }
    if (diff > 600 && diff <= 700) { return 40; }
    if (diff > 700) { return 45; }
};

Stretta_LightBox.prototype.appear = function(id, opacity) {
    var object = this.doc.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + (opacity + 10) + ")";
	
    if (opacity == 100 && (id == 'lbImage')) {
        try { object.removeAttribute("filter"); } catch(e) {}    /* Fix added for IE Alpha Opacity Filter bug. */
        this.updateDetails();
    } else if (opacity >= this.maxOpacity && id == 'lbOverlay') {
        for (var i = 0; i < this.overlayTimerCount; i++) { window.clearTimeout(this.overlayTimerArray[i]); }
		
        return;
    } else if (opacity >= 100 && id == 'lbDetailsContainer') {
        try { object.removeAttribute("filter"); } catch(e) {}    /* Fix added for IE Alpha Opacity Filter bug. */
		
        for (var i = 0; i < this.imageTimerCount; i++) { window.clearTimeout(this.imageTimerArray[i]); }
		
        this.doc.getElementById('lbOverlay').style.height = this.getPageSize()[1] + "px";
    } else {
        if (id == 'lbOverlay') {
            this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLightBox.appear('" + id + "', " + (opacity+20) + ")", 1);
        } else {
            this.imageTimerArray[this.imageTimerCount++] = setTimeout("myLightBox.appear('" + id + "', " + (opacity+10) + ")", 1);
        }
    }
};

Stretta_LightBox.prototype.fade = function(id, opacity) {
    var object = this.doc.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
	
    if (opacity <= 0) {
        try {
            object.display = 'none';
        } catch(err) {
        }
    } else if (id == 'lbOverlay') {
        this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLightBox.fade('" + id + "', " + (opacity-20) + ")", 1);
    } else {
        this.timerIDArray[this.timerIDCount++] = setTimeout("myLightBox.fade('" + id + "', " + (opacity-10) + ")", 1);
    }
};

Stretta_LightBox.prototype.resizeW = function(id, curW, maxW, pixelrate, speed) {
    if (!this.hDone) {
        this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLightBox.resizeW('" + id + "', " + curW + ", " + maxW + ", " + pixelrate + ")", 100);
        return;
    }
	
    var object = this.doc.getElementById(id);
    var timer = speed ? speed : (this.resizeDuration/2);
    var newW = (this.doAnimations ? curW : maxW);
    object.style.width = (newW) + "px";
	
    if (newW < maxW) {
        newW += (newW + pixelrate >= maxW) ? (maxW - newW) : pixelrate;
    } else if (newW > maxW) {
        newW -= (newW - pixelrate <= maxW) ? (newW - maxW) : pixelrate;
    }
	
    this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLightBox.resizeW('" + id + "', " + newW + ", " + maxW + ", " + pixelrate + ", " + (timer+0.02) + ")", timer+0.02);
	
    if (parseInt(object.style.width) == maxW) {
        this.wDone = true;
        for (var i = 0; i < this.resizeWTimerCount; i++) { window.clearTimeout(this.resizeWTimerArray[i]); }
    }
};

Stretta_LightBox.prototype.resizeH = function(id, curH, maxH, pixelrate, speed) {
    var timer = speed ? speed : (this.resizeDuration/2);
    var object = this.doc.getElementById(id);
    var newH = (this.doAnimations ? curH : maxH);
    object.style.height = (newH) + "px";
	
    if (newH < maxH) {
        newH += (newH + pixelrate >= maxH) ? (maxH - newH) : pixelrate;
    } else if (newH > maxH) {
        newH -= (newH - pixelrate <= maxH) ? (newH - maxH) : pixelrate;
    }
	
    this.resizeHTimerArray[this.resizeHTimerCount++] = setTimeout("myLightBox.resizeH('" + id + "', " + newH + ", " + maxH + ", " + pixelrate + ", " + (timer+.02) + ")", timer+.02);
	
    if (parseInt(object.style.height) == maxH) {
        this.hDone = true;
        for (var i = 0; i < this.resizeHTimerCount; i++) { window.clearTimeout(this.resizeHTimerArray[i]); }
    }
};

Stretta_LightBox.prototype.getPageScroll = function() {
    if (self.pageYOffset) {
        return this.isFrame ? parent.pageYOffset : self.pageYOffset;
    } else if (this.doc.documentElement && this.doc.documentElement.scrollTop){
        return this.doc.documentElement.scrollTop;
    } else if (document.body) {
        return this.doc.body.scrollTop;
    }
};

Stretta_LightBox.prototype.getPageSize = function() {
    var xScroll, yScroll, windowWidth, windowHeight;
	
    if (window.innerHeight && window.scrollMaxY) {
        xScroll = this.doc.scrollWidth;
        yScroll = (this.isFrame ? parent.innerHeight : self.innerHeight) + (this.isFrame ? parent.scrollMaxY : self.scrollMaxY);
    } else if (this.doc.body.scrollHeight > this.doc.body.offsetHeight){
        xScroll = this.doc.body.scrollWidth;
        yScroll = this.doc.body.scrollHeight;
    } else {
        xScroll = this.doc.getElementsByTagName("html").item(0).offsetWidth;
        yScroll = this.doc.getElementsByTagName("html").item(0).offsetHeight;
        xScroll = (xScroll < this.doc.body.offsetWidth) ? this.doc.body.offsetWidth : xScroll;
        yScroll = (yScroll < this.doc.body.offsetHeight) ? this.doc.body.offsetHeight : yScroll;
    }
	
    if (self.innerHeight) {
        windowWidth = (this.isFrame) ? parent.innerWidth : self.innerWidth;
        windowHeight = (this.isFrame) ? parent.innerHeight : self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        windowWidth = this.doc.documentElement.clientWidth;
        windowHeight = this.doc.documentElement.clientHeight;
    } else if (document.body) {
        windowWidth = this.doc.getElementsByTagName("html").item(0).clientWidth;
        windowHeight = this.doc.getElementsByTagName("html").item(0).clientHeight;
        windowWidth = (windowWidth == 0) ? this.doc.body.clientWidth : windowWidth;
        windowHeight = (windowHeight == 0) ? this.doc.body.clientHeight : windowHeight;
    }
	
    var pageHeight = (yScroll < windowHeight) ? windowHeight : yScroll;
    var pageWidth = (xScroll < windowWidth) ? windowWidth : xScroll;
    return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
};

Stretta_LightBox.prototype.toggleFlash = function(state) {
    var objects = this.doc.getElementsByTagName("object");
	
    for (var i = 0; i < objects.length; i++) {
        objects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
	
    var embeds = this.doc.getElementsByTagName("embed");
	
    for (var i = 0; i < embeds.length; i++) {
        embeds[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
	
    if (this.isFrame) {
        for (var i = 0; i < parent.frames.length; i++) {
            try {
                objects = parent.frames[i].window.document.getElementsByTagName("object");
				
                for (var j = 0; j < objects.length; j++) {
                    objects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch(e) { }
            try {
                embeds = parent.frames[i].window.document.getElementsByTagName("embed");
				
                for (var j = 0; j < embeds.length; j++) {
                    embeds[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch(e) {
            }
        }
    }
};

Stretta_LightBox.prototype.toggleSelects = function(state) {
    var selects = this.doc.getElementsByTagName("select");
	
    for (var i = 0; i < selects.length; i++ ) {
        selects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
	
    if (this.isFrame) {
        for (var i = 0; i < parent.frames.length; i++) {
            try {
                selects = parent.frames[i].window.document.getElementsByTagName("select");
                for (var j = 0; j < selects.length; j++) {
                    selects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch(e) {
            }
        }
    }
};

Stretta_LightBox.prototype.pause = function(numberMillis) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
	
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime) { return; }
    }
};


/*
if (window.addEventListener) {
window.addEventListener("load",initLightBox,false);
} else if (window.attachEvent) {
window.attachEvent("onload",initLightBox);
} else {
window.onload = function() {initLightBox();}
}

function initLightBox() {
myLightBox = new Stretta_LightBox();
};
*/

FastInit.addOnLoad( function() {
		myLightBox = new Stretta_LightBox();
} );