/**
 * Interface Elements for jqClix
 * ImageBox
 * @name Imagebox
 * @description This a jqClix equivalent for Lightbox2. Alternative to image popups that will display images in an overlay. All links that have attribute 'rel' starting with 'imagebox' and link to an image will display the image inside the page. Galleries can by build buy giving the value 'imagebox-galname' to attribute 'rel'. Attribute 'title' will be used as caption.
 * @param Hash hash A hash of parameters
 * @option Integer border border width
 * @option String loaderSRC path to loading image
 * @option String closeHTML path to close overlay image
 * @option Float overlayOpacity opacity for overlay
 * @option String textImage when a galalry it is build then the iteration is displayed
 * @option String textImageFrom when a galalry it is build then the iteration is displayed
 * @option Integer fadeDuration fade duration in miliseconds
 *
 * @type jqClix
 * @cat Plugins/Interface
 */
jqClix.ImageBox = {
	options : {
		border				: 10,
		loaderSRC			: 'images/loading.gif',
		closeHTML			: '',
		printHTML           : '',
		overlayOpacity		: 0.8,
		textImage   		: '',
		textImageCur		: '',
		textImageFrom		: '',
		fadeDuration		: 400,
		timeInterval        : 0 //in milliseconds
	},
	imageLoaded : false,
	firstResize : false,
	currentRel : null,
	animationInProgress : false,
	opened : false,
	
	keyPressed : function(event)
	{
		if(!jqClix.ImageBox.opened || jqClix.ImageBox.animationInProgress)
			return;
		var pressedKey = event.charCode || event.keyCode || -1;
		switch (pressedKey)
		{
			//end
			case 35:
				if (jqClix.ImageBox.currentRel)
					jqClix.ImageBox.start(null, jqClix('a[rel=' + jqClix.ImageBox.currentRel+ ']:last').get(0));
			break;
			//home
			case 36:
				if (jqClix.ImageBox.currentRel)
					jqClix.ImageBox.start(null, jqClix('a[rel=' + jqClix.ImageBox.currentRel+ ']:first').get(0));
			break;
			//left
			case 37:
			//backspace
			case 8:
			//page up
			case 33:
			//p
			case 80:
			case 112:
				/*var prevEl = jqClix('#ImageBoxPrevImage');
				if(prevEl.get(0).onclick != null) {
					prevEl.get(0).onclick.apply(prevEl.get(0));
				}*/
				var prevEl2 = jqClix('#ImageBoxPrevImg');
				if(prevEl2.get(0).onclick != null) {
				    prevEl2.get(0).onclick.apply(prevEl2.get(0));
				}
			break;
			//up
			case 38:
			break;
			//right
			case 39:
			//page down
			case 34:
			//space
			case 32:
			//n
			case 110:
			case 78:
				/*var nextEl = jqClix('#ImageBoxNextImage');
				if(nextEl.get(0).onclick != null) {
					nextEl.get(0).onclick.apply(nextEl.get(0));
				}*/
				
				var nextEl2 = jqClix('#ImageBoxNextImg');
				if(nextEl2.get(0).onclick != null) {
				    nextEl2.get(0).onclick.apply(nextEl2.get(0));
				}
			break;
			//down;
			case 40:
			break;
			//escape
			case 27:
				jqClix.ImageBox.hideImage();
			break;
		}
	},	
	
	init : function(options)
	{
		if (options)
			jqClix.extend(jqClix.ImageBox.options, options);
		if (window.event) {
			jqClix('body',document).bind('keyup', jqClix.ImageBox.keyPressed);
		} else {
			jqClix(document).bind('keyup', jqClix.ImageBox.keyPressed);
		}
		jqClix('a').each(
			function()
			{
				el 				= jqClix(this);
				relAttr 		= el.attr('rel')||'';
				hrefAttr 		= el.attr('href')||'';
				imageTypes 		= /\.jpg|\.jpeg|\.png|\.gif|\.bmp/g;
				if (hrefAttr.toLowerCase().match(imageTypes) != null && relAttr.toLowerCase().indexOf('imagebox') == 0) {
					el.bind('click', jqClix.ImageBox.start);
				}
			}
		);
		if (jqClix.browser.msie) {
			iframe = document.createElement('iframe');
			jqClix(iframe)
				.attr(
					{
						id			: 'ImageBoxIframe',
						src			: 'javascript:false;',
						frameborder	: 'no',
						scrolling	: 'no'
					}
				)
				.css (
					{
						display		: 'none',
						position	: 'absolute',
						top			: '0',
						left		: '0',
						filter		: 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
					}
				);
			jqClix('body').append(iframe);
		}
		
		overlay	= document.createElement('div');
		jqClix(overlay)
			.attr('id', 'ImageBoxOverlay')
			.css(
				{
					position	: 'absolute',
					display		: 'none',
					top			: '0',
					left		: '0',
					opacity		: 0
				}
			)
			.append(document.createTextNode(' '))
			.bind('click', jqClix.ImageBox.hideImage);
			
		/* edit 1 arrows */
		prevImg = document.createElement('a');
		jqClix(prevImg)
		    .attr(
		        {
		            id              : 'ImageBoxPrevImg',
		            href            : '#'
		        }
		    )
			.append(document.createTextNode(' '));
			
	    nextImg = document.createElement('a');
		jqClix(nextImg)
		    .attr(
		        {
		            id              : 'ImageBoxNextImg',
		            href            : '#'
		        }
		    )
			.append(document.createTextNode(' '));
		
		playImg = document.createElement('a');
		jqClix(playImg)
		    .attr(
		        {
		            id              : 'ImageBoxPlaySlideShow',
		            href            : '#'
		        }
		    )
		    .append(document.createTextNode(' '));
		    
		pauseImg = document.createElement('a');
		jqClix(pauseImg)
		    .attr(
		        {
		            id              : 'ImageBoxPauseSlideShow',
		            href            : '#'
		        }
		    )
		    .append(document.createTextNode(' '));
		    
		printImg = document.createElement('a');
		jqClix(printImg)
		    .attr(
		        {
		            id              : 'ImageBoxPrintImg',
		            href            : '#'
		        }
		    )
		    .css(
				{
					left		: jqClix.ImageBox.options.border + 'px'
					//top			: 1.5 * jqClix.ImageBox.options.border + 'px'
				}
			)
		    .append(jqClix.ImageBox.options.printHTML)
			.append(document.createTextNode(' '));
	    
	    	                
			
		closeEl = document.createElement('a');
		jqClix(closeEl)
			.attr(
				{
					id			: 'ImageBoxClose',
					href		: '#'
				}
			)
			.css(
				{
					right		: 1.2 * jqClix.ImageBox.options.border + 'px'
					//top			: 1.5 * jqClix.ImageBox.options.border + 'px'
				}
			)
			.append(jqClix.ImageBox.options.closeHTML)
			.bind('click', jqClix.ImageBox.hideImage);
		    
		
		captionText = document.createElement('div');
		jqClix(captionText)
			.attr('id', 'ImageBoxCaptionText')
			.css(
				{
					paddingLeft		: jqClix.ImageBox.options.border + 'px',
					backgroundColor : 'white'
				}
			)
			.append(document.createTextNode(' '));
			
		captionControl = document.createElement('div');
		jqClix(captionControl)
		    .attr('id','ImageBoxCaptionControl')
		.append(prevImg)
		.append(playImg)
		.append(pauseImg)
		.append(nextImg)
		.append(printImg)
		.append(closeEl);
			
		captionImages = document.createElement('div');
		jqClix(captionImages)
			.attr('id', 'ImageBoxCaptionImages')
			.css(
				{
					paddingLeft		: jqClix.ImageBox.options.border + 'px'
					
					//paddingBottom	: jqClix.ImageBox.options.border + 'px'
				}
			)
			.append(document.createTextNode(' '));
			
	    /*captionSize = document.createElement('div');
	    jqClix(captionSize)
	        .attr('id', 'ImageBoxCaptionSize')
	        .css(
	            {
	                paddingLeft		: jqClix.ImageBox.options.border + 'px'
	            }
	        )
	        .append(document.createTextNode(' '));*/	
	    captionInfo = document.createElement('div');
	    jqClix(captionInfo)
	        .attr('id', 'ImageBoxCaptionInfo')
	        .css(
	            {
	                paddingLeft		: jqClix.ImageBox.options.border + 'px',
	                paddingBottom	: jqClix.ImageBox.options.border + 'px'
	            }
	        )
	        .append(document.createTextNode(' '));		
		
			
		captionEl = document.createElement('div');
		jqClix(captionEl)
			.attr('id', 'ImageBoxCaption')
			.append(captionControl)
			.append(captionText)
			.append(captionImages)
			.append(captionInfo);
			//.append(captionSize);
		
		loader = document.createElement('img');
		loader.src = jqClix.ImageBox.options.loaderSRC;
		jqClix(loader)
			.attr('id', 'ImageBoxLoader')
			.css(
				{
					position	: 'absolute'
				}
			);
			
		prevImage = document.createElement('a');
		jqClix(prevImage)
			.attr(
				{
					id			: 'ImageBoxPrevImage',
					href		: '#'
					
				}
			)
			.append(document.createTextNode(' '));
			
		nextImage = document.createElement('a');
		jqClix(nextImage)
			.attr(
				{
					id			: 'ImageBoxNextImage',
					href		: '#'
				}
			)
			.append(document.createTextNode(' '));
		
		innerContainer = document.createElement('div');
		jqClix(innerContainer)
			.attr('id', 'ImageBoxContainer')
			.append([loader, prevImage, nextImage]);
			
		
		outerContainer = document.createElement('div');
		jqClix(outerContainer)
			.attr('id', 'ImageBoxOuterContainer')
			.append([innerContainer,captionEl]);
		
		jqClix('body')
			.append(overlay)
			.append(outerContainer);
	},
	
	start : function(e, elm)
	{
		el = elm ? jqClix(elm) : jqClix(this);
		linkRel =  el.attr('rel');
		var totalImages, iteration, prevImage, nextImage;
		if (linkRel != 'imagebox') {
			jqClix.ImageBox.currentRel = linkRel;
			gallery = jqClix('a[rel=' + linkRel + ']');
			totalImages = gallery.size();
			iteration = gallery.index(elm ? elm : this);
			prevImage =  gallery.get(iteration - 1);
			nextImage = gallery.get(iteration + 1);
			prevImg = gallery.get(iteration - 1);
			nextImg = gallery.get(iteration + 1);
		}
		imageSrc =  el.attr('href');
		captionText = el.attr('title');
		jqClix.ImageBox.options.textImage = el.attr('alt');
		if(!jqClix.ImageBox.options.textImage){
		    jqClix.ImageBox.options.textImage = "";
		}
		jqClix.ImageBox.options.timeInterval = el.attr('delay');
		pageSize = jqClix.iUtil.getScroll();
		var arrayPageSize = jqClix.ImageBox.getPageSize();
		var arrayPageScroll = jqClix.ImageBox.getPageScroll();
		overlay = jqClix('#ImageBoxOverlay');
		if (!jqClix.ImageBox.opened) {
			jqClix.ImageBox.opened = true;
			if (jqClix.browser.msie) {
				jqClix('#ImageBoxIframe')
					.css ('height', Math.max(arrayPageSize[1], arrayPageSize[3], pageSize.h) + 'px')
					.css ('width', Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w) + 'px')
					.show();
			}
			overlay
				.css ('height', Math.max(arrayPageSize[1], arrayPageSize[3], pageSize.h) + 'px')
				.css ('width', Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w) + 'px')
				.show()
				.fadeTo( 
					300,
					jqClix.ImageBox.options.overlayOpacity,
					function()
					{
						jqClix.ImageBox.loadImage(
							imageSrc, 
							captionText, 
							pageSize, 
							totalImages, 
							iteration,
							prevImage,
							nextImage,
							prevImg,
							nextImg
						);       
		                        
					}
				);
			jqClix('#ImageBoxOuterContainer').css ('width', Math.max(arrayPageSize[0],pageSize.w) + 'px');
		} else {
			jqClix('#ImageBoxPrevImage').get(0).onclick = null;
			jqClix('#ImageBoxNextImage').get(0).onclick = null;
			jqClix('#ImageBoxPrevImg').get(0).onclick = null;
			jqClix('#ImageBoxNextImg').get(0).onclick = null;
			jqClix.ImageBox.loadImage(
				imageSrc, 
				captionText, 
				pageSize, 
				totalImages, 
				iteration,
				prevImage,
				nextImage,
				prevImg,
				nextImg
			);
		}
		return false;
	},

		
	loadImage : function(imageSrc, captiontext, pageSize, totalImages, iteration, prevImage, nextImage, prevImg, nextImg)
	{
		jqClix('#ImageBoxCurrentImage').remove();
		prevImageEl = jqClix('#ImageBoxPrevImage');
		prevImageEl.hide();
		nextImageEl = jqClix('#ImageBoxNextImage');
		nextImageEl.hide();
		prevImgEl = jqClix('#ImageBoxPrevImg');
		//prevImgEl.hide();
		nextImgEl = jqClix('#ImageBoxNextImg');
		//nextImgEl.hide();
		printImgEl = jqClix('#ImageBoxPrintImg');
		playImgEl = jqClix('#ImageBoxPlaySlideShow');
		pauseImgEl = jqClix('#ImageBoxPauseSlideShow');
		loader = jqClix('#ImageBoxLoader');
		innerContainer = jqClix('#ImageBoxContainer');
		outerContainer = jqClix('#ImageBoxOuterContainer');
		captionEl = jqClix('#ImageBoxCaption').css('visibility', 'hidden');
		closeElem = jqClix('#ImageBoxClose');
		jqClix('#ImageBoxCaptionText').html(captionText);
		jqClix.ImageBox.animationInProgress = true;
		var interval;
		var currentIteration;
		if (totalImages) {
			
			    /*if(jqClix.ImageBox.options.textImage != ""){
			        jqClix('#ImageBoxCaptionImages').html(
			            jqClix.ImageBox.options.textImage + '<br><br>' +
				        jqClix.ImageBox.options.textImageCur 
				        + ' ' + (iteration + 1) + ' '
				        + jqClix.ImageBox.options.textImageFrom  
				        + ' ' + totalImages
				    );
				} else {
				    jqClix('#ImageBoxCaptionImages').html(
				        jqClix.ImageBox.options.textImageCur 
				        + ' ' + (iteration + 1) + ' '
				        + jqClix.ImageBox.options.textImageFrom  
				        + ' ' + totalImages
				    );
				}*/
	
		
		    jqClix('#ImageBoxCaptionImages').html(
				    jqClix.ImageBox.options.textImage 
			    );
    		
		    jqClix('#ImageBoxCaptionInfo').html(
	                jqClix.ImageBox.options.textImageCur 
			        + ' ' + (iteration + 1) + ' '
			        + jqClix.ImageBox.options.textImageFrom  
			        + ' ' + totalImages
	        );
        }
			/*jqClix('#ImageBoxCaptionImages').html(
				jqClix.ImageBox.options.textImage 
			);*/
		if (prevImage) {
			prevImageEl.get(0).onclick = function()
			{
				this.blur();
				jqClix.ImageBox.start(null, prevImage);
				return false;
			};
		}
		if (nextImage) {
			nextImageEl.get(0).onclick =function()
			{
				this.blur();
				jqClix.ImageBox.start(null, nextImage);
				return false;
			};
		}
		if (prevImg) {
			prevImgEl.removeClass('prevImgdisabled').get(0).onclick = function()
			{
				this.blur();
				jqClix.ImageBox.start(null, prevImg);
				return false;
			};
		} else {
		    prevImgEl.addClass('prevImgdisabled');
		    prevImgEl.get(0).onclick = function(){ return false; };
		}
		if (nextImg) {
			nextImgEl.removeClass('nextImgdisabled').get(0).onclick =function()
			{
			    this.blur();
			    jqClix.ImageBox.start(null, nextImg);
				return false;
			};
		} else {
		    nextImgEl.addClass('nextImgdisabled');
		    nextImgEl.css('cursor', 'default');
		    nextImgEl.get(0).onclick = function(){ this.focus(); return false; };
		}
					
		if (playImg) {
			playImgEl.get(0).onclick =function()
			{
			    currentIteration = iteration;
			    play();
                playImgEl.css('display','none');
                pauseImgEl.css('display','inline');
                
                return false;
			};
		}
		
				/*.append(prevImg)
		.append(playImg)
		.append(pauseImg)
		.append(nextImg)*/
		
        
		
		
		play = function(){
		        interval = self.setInterval("play2()", (jqClix.ImageBox.options.timeInterval * 1000));
		        play2 = function(){
		            if(iteration+1 < totalImages){
		                nextImgEl.get(0).onclick();
		                iteration++;
		                
		                if(iteration == currentIteration){
		                    window.clearInterval(interval);
		                    playImgEl.css('display','inline');
                            pauseImgEl.css('display','none');
		                }
		            }
		            else if(iteration+1 == totalImages){
		                if(currentIteration == 0){
		                    window.clearInterval(interval);
		                    playImgEl.css('display','inline');
                            pauseImgEl.css('display','none');
		                }
	                    iteration = 0;
	                    firstImage = gallery.get(0);
			            jqClix.ImageBox.start(null, firstImage);	                
		            }
		            if (pauseImg) {
			            pauseImgEl.get(0).onclick =function()
			            {
                            window.clearInterval(interval);
                            playImgEl.css('display','inline');
                            pauseImgEl.css('display','none');
                            
                            return false;
			            };
		            }
		            
		            if(closeEl) {
		                closeElem.get(0).onclick = function()
		                {
		                    pauseImgEl.get(0).onclick();
		                    jqClix.ImageBox.hideImage();
		                    return false;
		                };
		            }
		        }
		       
		    };
		
		
		loader.show();
		containerSize = jqClix.iUtil.getSize(innerContainer.get(0));
		containerW = Math.max(containerSize.wb, loader.get(0).width + jqClix.ImageBox.options.border * 2);
		containerH = Math.max(containerSize.hb, loader.get(0).height + jqClix.ImageBox.options.border * 2);
		loader
			.css(
				{
					left	: (containerW - loader.get(0).width)/2 + 'px',
					top		: (containerH - loader.get(0).height)/2 + 'px'
				}
			);
		innerContainer
			.css(
				{
					width	: containerW + 'px',
					height	: containerH + 'px'
				}
			)
			.show();
		clientSize = jqClix.iUtil.getClient();
		outerContainer
			.css('top', arrayPageScroll[1] + (arrayPageSize[3] / 15) + 'px');
		if (outerContainer.css('display') == 'none') {
			outerContainer
				.show()
				.fadeIn(
					jqClix.ImageBox.options.fadeDuration
				);
		}
		imageEl = new Image;
		jqClix(imageEl)
			.attr('id', 'ImageBoxCurrentImage')
			.bind('load', 
			function()
			{
			    var imgwidth = 0, imgheight = 0, el;

                if (imageEl.width || imageEl.complete)
                {
                    if (imageEl.width)
                    {
                        imgwidth = imageEl.width;
                        imgheight = imageEl.height;
                    }

                    else if (imageEl.complete)
                    {
                        var dum = new Image(); dum.src = imageEl.src;
                        imgwidth = dum.width;
                        imgheight = dum.height;
                    }
            		
                    if (imgwidth)
                    {
                        if (imageEl.onreadystatechange) imageEl.onreadystatechange = null;
                        if (imageEl.onload) imageEl.onload = null;
                    }
                }
                
                var prevImgButton = document.getElementById('ImageBoxPrevImg').clientWidth;
                var playImgButton = document.getElementById('ImageBoxPlaySlideShow').clientWidth;
                var nextImgButton = document.getElementById('ImageBoxNextImg').clientWidth;
                var printImgButton = document.getElementById('ImageBoxPrintImg').clientWidth;
                
                var totalCtrl = prevImgButton + playImgButton + nextImgButton + printImgButton + 40;
                
                var multiplyWindow = 10;
                
                if(imgwidth < totalCtrl){
                    document.getElementById('ImageBoxCaption').style.width = imgwidth * multiplyWindow;
                    document.getElementById('ImageBoxContainer').style.width = imgwidth * multiplyWindow;
                    imageEl.style.marginLeft = imgwidth * multiplyWindow / 2 - 18 + 'px';
                    
                    containerW = imageEl.width*multiplyWindow + jqClix.ImageBox.options.border * 2;
				    containerH = imageEl.height + jqClix.ImageBox.options.border * 2;
				    
                } else if(totalCtrl <= imgwidth < arrayPageSize[2] && imgheight < arrayPageSize[3])  {
                    document.getElementById('ImageBoxOverlay').style.width = Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w, imgwidth)  + 'px';
                    document.getElementById('ImageBoxOuterContainer').style.width = Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w, imgwidth) + 'px';
                    document.getElementById('ImageBoxOverlay').style.height = (Math.max(arrayPageSize[1], arrayPageSize[3], pageSize.h, imgheight)) + 'px';
                    document.getElementById('ImageBoxOuterContainer').style.height = document.getElementById('ImageBoxCaption').clientHeight + imgheight + 2*jqClix.ImageBox.options.border;//(Math.max(arrayPageSize[3], pageSize.h, imgheight) - (jqClix.ImageBox.options.border *2) - (arrayPageScroll[1] + (arrayPageSize[3] / 15))) + 'px';
                    containerW = imageEl.width + jqClix.ImageBox.options.border * 2;
				    containerH = imageEl.height + jqClix.ImageBox.options.border * 2;
                    
                } else {
                    document.getElementById('ImageBoxOverlay').style.width = Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w, (imgwidth+2*jqClix.ImageBox.options.border)) + 'px';
                    document.getElementById('ImageBoxOverlay').style.height = document.getElementById('ImageBoxCaption').clientHeight + imgheight + 2*jqClix.ImageBox.options.border + (arrayPageScroll[1] + (arrayPageSize[3] / 15));//(Math.max(arrayPageSize[1], arrayPageSize[3], pageSize.h, imgheight) + document.getElementById('ImageBoxCaption').clientHeight + (arrayPageScroll[1] + (arrayPageSize[3] / 15))) + 'px';
                    document.getElementById('ImageBoxOuterContainer').style.height = document.getElementById('ImageBoxCaption').clientHeight + imgheight + 2*jqClix.ImageBox.options.border;
                    document.getElementById('ImageBoxOuterContainer').style.width = Math.max(arrayPageSize[0], arrayPageSize[2], pageSize.w, (imgwidth+2*jqClix.ImageBox.options.border));
                
                    containerW = imageEl.width + jqClix.ImageBox.options.border * 2;
				    containerH = imageEl.height + jqClix.ImageBox.options.border * 2;
                }			    
			    
				/*containerW = imageEl.width + jqClix.ImageBox.options.border * 2;
				containerH = imageEl.height + jqClix.ImageBox.options.border * 2;	*/	
				
				//loader.hide();
				innerContainer.animate(
					{
						height		: containerH
					},
					containerSize.hb != containerH ? jqClix.ImageBox.options.fadeDuration : 1,
					function()
					{
					    loader.hide();
						innerContainer.animate(
							{
								width		: containerW
							},
							containerSize.wb != containerW ? jqClix.ImageBox.options.fadeDuration : 1,
							function()
							{
							    //loader.hide();
								innerContainer.prepend(imageEl);
								jqClix(imageEl)
									.css(
										{
											position	: 'absolute',
											left		: jqClix.ImageBox.options.border + 'px',
											top			: jqClix.ImageBox.options.border + 'px'
										}
									)
									.fadeIn(
										jqClix.ImageBox.options.fadeDuration,
										function()
										{
											captionSize = jqClix.iUtil.getSize(captionEl.get(0));
											if (prevImage) {
												prevImageEl
													.css(
														{
															left	: jqClix.ImageBox.options.border + 'px',
															top		: jqClix.ImageBox.options.border + 'px',
															width	: containerW/2 - jqClix.ImageBox.options.border * 3 + 'px',
															height	: containerH - jqClix.ImageBox.options.border * 2 + 'px'
														}
													)
													.show();
											}
											if (nextImage) {
												nextImageEl
													.css(
														{
															left	: containerW/2 + jqClix.ImageBox.options.border * 2 + 'px',
															top		: jqClix.ImageBox.options.border + 'px',
															width	: containerW/2 - jqClix.ImageBox.options.border * 3 + 'px',
															height	: containerH - jqClix.ImageBox.options.border * 2 + 'px'
														}
													)
													.show();
											}
											captionEl
												.css(
													{
														width		: containerW + 'px',
														top			: - captionSize.hb + 'px',
														visibility	: 'visible'
													}
												)
												.animate(
													{
														top		: -1
													},
													jqClix.ImageBox.options.fadeDuration,
													function()
													{
														jqClix.ImageBox.animationInProgress = false;
													}
												);
												
                        		                    
						                        /*jqClix('#ImageBoxCaptionSize').html(
		                                              imgwidth + 'x' + imgheight + (imageEl.fileSize && imageEl.fileSize > 0 ? ' (' + Math.floor(imageEl.fileSize/1024) + 'KB)' : '')//(Math.round(imageEl.size/1024)) + 'KB)'
		                                        );*/
		                                        
		                                        
		                                        if (printImg) {
			                                        printImgEl.get(0).onclick =function()
			                                        {		                                                
				                                       var newwindow = window.open(imageEl.src,'Printpage','width =' + imgwidth + ', height =' + imgheight + '\'');
				                                       newwindow.focus();
				                                        
				                                       window.setTimeout(function(){newwindow.print(); newwindow.close()},1000);
				                                       return false;                                    
				                                       
			                                        };
			                                        
		                                        }                 
										}
									);
							}
						);
					}
				);
			}
		);
		                    
		imageEl.src = imageSrc;

			
	},
		
	getPageSize : function(){
	    var xScroll, yScroll;

	    if (window.innerHeight && window.scrollMaxY) {
		    xScroll = document.body.scrollWidth;
		    yScroll = window.innerHeight + window.scrollMaxY;
	    } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		    xScroll = document.body.scrollWidth;
		    yScroll = document.body.scrollHeight;
	    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		    xScroll = document.body.offsetWidth;
		    yScroll = document.body.offsetHeight;
	    }

	    var windowWidth, windowHeight;
	    if (self.innerHeight) {	// all except Explorer
		    windowWidth = self.innerWidth;
		    windowHeight = self.innerHeight;
	    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		    windowWidth = document.documentElement.clientWidth;
		    windowHeight = document.documentElement.clientHeight;
	    } else if (document.body) { // other Explorers
		    windowWidth = document.body.clientWidth;
		    windowHeight = document.body.clientHeight;
	    }

	    // for small pages with total height less then height of the viewport
	    if(yScroll < windowHeight){
		    pageHeight = windowHeight;
	    } else {
		    pageHeight = yScroll;
	    }

	    // for small pages with total width less then width of the viewport
	    if(xScroll < windowWidth){
		    pageWidth = windowWidth;
	    } else {
		    pageWidth = xScroll;
	    }


	    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	    return arrayPageSize;
    },
    
    getPageScroll : function(){

	    var yScroll;

	    if (self.pageYOffset) {
		    yScroll = self.pageYOffset;
	    } else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		    yScroll = document.documentElement.scrollTop;
	    } else if (document.body) {// all other Explorers
		    yScroll = document.body.scrollTop;
	    }

	    arrayPageScroll = new Array('',yScroll)
	    return arrayPageScroll;
    },
	
	hideImage : function()
	{
		jqClix('#ImageBoxCurrentImage').remove();
		jqClix('#ImageBoxOuterContainer').hide();
		jqClix('#ImageBoxCaption').css('visibility', 'hidden');
		jqClix('#ImageBoxOverlay').fadeTo(
			300, 
			0, 
			function(){
				jqClix(this).hide();
				if (jqClix.browser.msie) {
					jqClix('#ImageBoxIframe').hide();
				}
			}
		);
		jqClix('#ImageBoxPrevImage').get(0).onclick = null;
		jqClix('#ImageBoxNextImage').get(0).onclick = null;
		jqClix('#ImageBoxPrevImg').get(0).onclick = null;
		jqClix('#ImageBoxNextImg').get(0).onclick = null;
		jqClix.ImageBox.currentRel = null;
		jqClix.ImageBox.opened = false;
		jqClix.ImageBox.animationInProgress = false;
		return false;
	}
};

/**
 * Interface Elements for jqClix
 * utility function
 *
 * http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 *
 */

jqClix.iUtil = {
	getPosition : function(e)
	{
		var x = 0;
		var y = 0;
		var es = e.style;
		var restoreStyles = false;
		if (jqClix(e).css('display') == 'none') {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			restoreStyles = true;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
		}
		var el = e;
		while (el){
			x += el.offsetLeft + (el.currentStyle && !jqClix.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
			y += el.offsetTop + (el.currentStyle && !jqClix.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
			el = el.offsetParent;
		}
		el = e;
		while (el && el.tagName  && el.tagName.toLowerCase() != 'body')
		{
			x -= el.scrollLeft||0;
			y -= el.scrollTop||0;
			el = el.parentNode;
		}
		if (restoreStyles == true) {
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {x:x, y:y};
	},
	getPositionLite : function(el)
	{
		var x = 0, y = 0;
		while(el) {
			x += el.offsetLeft || 0;
			y += el.offsetTop || 0;
			el = el.offsetParent;
		}
		return {x:x, y:y};
	},
	getSize : function(e)
	{
		var w = jqClix.css(e,'width');
		var h = jqClix.css(e,'height');
		var wb = 0;
		var hb = 0;
		var es = e.style;
		if (jqClix(e).css('display') != 'none') {
			wb = e.offsetWidth;
			hb = e.offsetHeight;
		} else {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
			wb = e.offsetWidth;
			hb = e.offsetHeight;
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {w:w, h:h, wb:wb, hb:hb};
	},
	getSizeLite : function(el)
	{
		return {
			wb:el.offsetWidth||0,
			hb:el.offsetHeight||0
		};
	},
	getClient : function(e)
	{
		var h, w, de;
		if (e) {
			w = e.clientWidth;
			h = e.clientHeight;
		} else {
			de = document.documentElement;
			w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
			h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		}
		return {w:w,h:h};
	},
	getScroll : function (e)
	{
		var t=0, l=0, w=0, h=0, iw=0, ih=0;
		if (e && e.nodeName.toLowerCase() != 'body') {
			t = e.scrollTop;
			l = e.scrollLeft;
			w = e.scrollWidth;
			h = e.scrollHeight;
			iw = 0;
			ih = 0;
		} else  {
			if (document.documentElement) {
				t = document.documentElement.scrollTop;
				l = document.documentElement.scrollLeft;
				w = document.documentElement.scrollWidth;
				h = document.documentElement.scrollHeight;
			} else if (document.body) {
				t = document.body.scrollTop;
				l = document.body.scrollLeft;
				w = document.body.scrollWidth;
				h = document.body.scrollHeight;
			}
			iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
			ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
		}
		return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
	},
	getMargins : function(e, toInteger)
	{
		var el = jqClix(e);
		var t = el.css('marginTop') || '';
		var r = el.css('marginRight') || '';
		var b = el.css('marginBottom') || '';
		var l = el.css('marginLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPadding : function(e, toInteger)
	{
		var el = jqClix(e);
		var t = el.css('paddingTop') || '';
		var r = el.css('paddingRight') || '';
		var b = el.css('paddingBottom') || '';
		var l = el.css('paddingLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getBorder : function(e, toInteger)
	{
		var el = jqClix(e);
		var t = el.css('borderTopWidth') || '';
		var r = el.css('borderRightWidth') || '';
		var b = el.css('borderBottomWidth') || '';
		var l = el.css('borderLeftWidth') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)||0
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPointer : function(event)
	{
		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
		var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
		return {x:x, y:y};
	},
	traverseDOM : function(nodeEl, func)
	{
		func(nodeEl);
		nodeEl = nodeEl.firstChild;
		while(nodeEl){
			jqClix.iUtil.traverseDOM(nodeEl, func);
			nodeEl = nodeEl.nextSibling;
		}
	},
	purgeEvents : function(nodeEl)
	{
		jqClix.iUtil.traverseDOM(
			nodeEl,
			function(el)
			{
				for(var attr in el){
					if(typeof el[attr] === 'function') {
						el[attr] = null;
					}
				}
			}
		);
	},
	centerEl : function(el, axis)
	{
		var clientScroll = jqClix.iUtil.getScroll();
		var windowSize = jqClix.iUtil.getSize(el);
		if (!axis || axis == 'vertically')
			jqClix(el).css(
				{
					top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
				}
			);
		if (!axis || axis == 'horizontally')
			jqClix(el).css(
				{
					left:	clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
				}
			);
	},
	fixPNG : function (el, emptyGIF) {
		var images = jqClix('img[@src*="png"]', el||document), png;
		images.each( function() {
			png = this.src;				
			this.src = emptyGIF;
			this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
		});
	}
};

// Helper function to support older browsers!
[].indexOf || (Array.prototype.indexOf = function(v, n){
	n = (n == null) ? 0 : n;
	var m = this.length;
	for (var i=n; i<m; i++)
		if (this[i] == v)
			return i;
	return -1;
});

/**
 * Interface Elements for jqClix
 * Slideshow
 * 
 * http://interface.eyecon.ro
 * 
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 */


/**
 * Creates an image slideshow. The slideshow can autoplay slides, each image can have caption, navigation links: next, prev, each slide. A page may have more then one slideshow, eachone working independently. Each slide can be bookmarked. The source images can be defined by JavaScript in slideshow options or by HTML placing images inside container.
 *
 * 
 * 
 * @name Slideshow
 * @description Creates an image slideshow. The slideshow can autoplay slides, each image can have caption, navigation links: next, prev, each slide. A page may have more then one slideshow, eachone working independently. Each slide can be bookmarked. The source images can be defined by JavaScript in slideshow options or by HTML placing images inside container.
 * @param Hash hash A hash of parameters
 * @option String container container ID
 * @option String loader path to loading indicator image
 * @option String linksPosition (optional) images links position ['top'|'bottom'|null]
 * @option String linksClass (optional) images links cssClass
 * @option String linksSeparator (optional) images links separator
 * @option Integer fadeDuration fade animation duration in miliseconds
 * @option String activeLinkClass (optional) active image link CSS class
 * @option String nextslideClass (optional) next image CSS class
 * @option String prevslideClass (optional) previous image CSS class
 * @option String captionPosition (optional) image caption position ['top'|'bottom'|null]
 * @option String captionClass (optional) image caption CSS class
 * @option String autoplay (optional) seconds to wait untill next images is displayed. This option will make the slideshow to autoplay.
 * @option String random (optional) if slideshow autoplayes the images can be randomized
 * @option Array images (optional) array of hash with keys 'src' (path to image) and 'cation' (image caption) for images
 *
 * @type jqClix
 * @cat Plugins/Interface
 * @author Stefan Petre
 */
jqClix.islideshow = {
	slideshows: [],
	gonext : function()
	{
		this.blur();
		slideshow = this.parentNode;
		id = jqClix.attr(slideshow, 'id');
		if (jqClix.islideshow.slideshows[id] != null) {
			window.clearInterval(jqClix.islideshow.slideshows[id]);
		}
		slide = slideshow.ss.currentslide + 1;
		if (slideshow.ss.images.length < slide) {
			slide = 1;
		}
		images = jqClix('img', slideshow.ss.holder);
		slideshow.ss.currentslide = slide;
		if (images.size() > 0) {
			images.fadeOut(
				slideshow.ss.fadeDuration,
				jqClix.islideshow.showImage
			);
		}
	},
	goprev : function()
	{
		this.blur();
		slideshow = this.parentNode;
		id = jqClix.attr(slideshow, 'id');
		if (jqClix.islideshow.slideshows[id] != null) {
			window.clearInterval(jqClix.islideshow.slideshows[id]);
		}
		slide = slideshow.ss.currentslide - 1;
		images = jqClix('img', slideshow.ss.holder);
		if (slide < 1) {
			slide = slideshow.ss.images.length ;
		}
		slideshow.ss.currentslide = slide;
		if (images.size() > 0) {
			images.fadeOut(
				slideshow.ss.fadeDuration,
				jqClix.islideshow.showImage
			);
		}
	},
	timer : function (c)
	{
		slideshow = document.getElementById(c);
		if (slideshow.ss.random) {
			slide = slideshow.ss.currentslide;
			while(slide == slideshow.ss.currentslide) {
				slide = 1 + parseInt(Math.random() * slideshow.ss.images.length);
			}
		} else {
			slide = slideshow.ss.currentslide + 1;
			if (slideshow.ss.images.length < slide) {
				slide = 1;
			}
		}
		images = jqClix('img', slideshow.ss.holder);
		slideshow.ss.currentslide = slide;
		if (images.size() > 0) {
			images.fadeOut(
				slideshow.ss.fadeDuration,
				jqClix.islideshow.showImage
			);
		}
	},
	go : function(o)
	{
		var slideshow;
		if (o && o.constructor == Object) {
			if (o.loader) {
				slideshow = document.getElementById(o.loader.slideshow);
				url = window.location.href.split("#");
				o.loader.onload = null;
				if (url.length == 2) {
					slide = parseInt(url[1]);
					show = url[1].replace(slide,'');
					if (jqClix.attr(slideshow,'id') != show) {
						slide = 1;
					}
				} else {
					slide = 1;
				}
			}
			if(o.link) {
				o.link.blur();
				slideshow = o.link.parentNode.parentNode;
				id = jqClix.attr(slideshow, 'id');
				if (jqClix.islideshow.slideshows[id] != null) {
					window.clearInterval(jqClix.islideshow.slideshows[id]);
				}
				url = o.link.href.split("#");
				slide = parseInt(url[1]);
				show = url[1].replace(slide,'');
				if (jqClix.attr(slideshow,'id') != show) {
					slide = 1;
				}
			}
			if (slideshow.ss.images.length < slide || slide < 1) {
				slide = 1;
			}
			slideshow.ss.currentslide = slide;
			slidePos = jqClix.iUtil.getSize(slideshow);
			slidePad = jqClix.iUtil.getPadding(slideshow);
			slideBor = jqClix.iUtil.getBorder(slideshow);
			if (slideshow.ss.prevslide) {
				slideshow.ss.prevslide.o.css('display', 'none');
			}
			if (slideshow.ss.nextslide) {
				slideshow.ss.nextslide.o.css('display', 'none');
			}
			
			//center loader
			if (slideshow.ss.loader) {
				y = parseInt(slidePad.t) + parseInt(slideBor.t);
				if (slideshow.ss.slideslinks) {
					if (slideshow.ss.slideslinks.linksPosition == 'top') {
						y += slideshow.ss.slideslinks.dimm.hb;
					} else {
						slidePos.h -= slideshow.ss.slideslinks.dimm.hb;
					}
				}
				if (slideshow.ss.slideCaption) {
					if (slideshow.ss.slideCaption && slideshow.ss.slideCaption.captionPosition == 'top') {
						y += slideshow.ss.slideCaption.dimm.hb;
					} else {
						slidePos.h -= slideshow.ss.slideCaption.dimm.hb;
					}
				}
				if (!slideshow.ss.loaderWidth) {
					slideshow.ss.loaderHeight = o.loader ? o.loader.height : (parseInt(slideshow.ss.loader.css('height'))||0);
					slideshow.ss.loaderWidth = o.loader ? o.loader.width : (parseInt(slideshow.ss.loader.css('width'))||0);
				}
				
				slideshow.ss.loader.css('top', y + (slidePos.h - slideshow.ss.loaderHeight)/2 + 'px');
				slideshow.ss.loader.css('left', (slidePos.wb - slideshow.ss.loaderWidth)/2 + 'px');
				slideshow.ss.loader.css('display', 'block');
			}
			
			//getimage
			images = jqClix('img', slideshow.ss.holder);
			if (images.size() > 0) {
				images.fadeOut(
					slideshow.ss.fadeDuration,
					jqClix.islideshow.showImage
				);
			} else {
				lnk = jqClix('a', slideshow.ss.slideslinks.o).get(slide-1);
				jqClix(lnk).addClass(slideshow.ss.slideslinks.activeLinkClass);
				var img = new Image();
				img.slideshow = jqClix.attr(slideshow,'id');
				img.slide = slide-1;
				img.src = slideshow.ss.images[slideshow.ss.currentslide-1].src ;
				if (img.complete) {
					img.onload = null;
					jqClix.islideshow.display.apply(img);
				} else {
					img.onload = jqClix.islideshow.display;
				}
				//slideshow.ss.holder.html('<img src="' + slideshow.ss.images[slide-1].src + '" />');
				if (slideshow.ss.slideCaption) {
					slideshow.ss.slideCaption.o.html(slideshow.ss.images[slide-1].caption);
				}
				//jqClix('img', slideshow.ss.holder).bind('load',jqClix.slideshowDisplay);
			}
		}
	},
	showImage : function()
	{
		slideshow = this.parentNode.parentNode;
		slideshow.ss.holder.css('display','none');
		if (slideshow.ss.slideslinks.activeLinkClass) {
			lnk = jqClix('a', slideshow.ss.slideslinks.o).removeClass(slideshow.ss.slideslinks.activeLinkClass).get(slideshow.ss.currentslide - 1);
			jqClix(lnk).addClass(slideshow.ss.slideslinks.activeLinkClass);
		}
		//slideshow.ss.holder.html('<img src="' + slideshow.ss.images[slideshow.ss.currentslide - 1].src + '" />');
		
		var img = new Image();
		img.slideshow = jqClix.attr(slideshow,'id');
		img.slide = slideshow.ss.currentslide - 1;
		img.src = slideshow.ss.images[slideshow.ss.currentslide - 1].src ;
		if (img.complete) {
			img.onload = null;
			jqClix.islideshow.display.apply(img);
		} else {
			img.onload = jqClix.islideshow.display;
		}
		if (slideshow.ss.slideCaption) {
			slideshow.ss.slideCaption.o.html(slideshow.ss.images[slideshow.ss.currentslide-1].caption);
		}
		//jqClix('img', slideshow.ss.holder).bind('load',jqClix.slideshowDisplay);
	},
	display : function ()
	{
		slideshow = document.getElementById(this.slideshow);
		if (slideshow.ss.prevslide) {
			slideshow.ss.prevslide.o.css('display', 'none');
		}
		if (slideshow.ss.nextslide) {
			slideshow.ss.nextslide.o.css('display', 'none');
		}
		slidePos = jqClix.iUtil.getSize(slideshow);
		y = 0;
		if (slideshow.ss.slideslinks) {
			if (slideshow.ss.slideslinks.linksPosition == 'top') {
				y += slideshow.ss.slideslinks.dimm.hb;
			} else {
				slidePos.h -= slideshow.ss.slideslinks.dimm.hb;
			}
		}
		if (slideshow.ss.slideCaption) {
			if (slideshow.ss.slideCaption && slideshow.ss.slideCaption.captionPosition == 'top') {
				y += slideshow.ss.slideCaption.dimm.hb;
			} else {
				slidePos.h -= slideshow.ss.slideCaption.dimm.hb;
			}
		}
		par = jqClix('.slideshowHolder', slideshow);
		y = y + (slidePos.h - this.height)/2 ;
		x = (slidePos.wb - this.width)/2;
		slideshow.ss.holder.css('top', y + 'px').css('left', x + 'px').html('<img src="' + this.src + '" />');
		slideshow.ss.holder.fadeIn(slideshow.ss.fadeDuration);
		nextslide = slideshow.ss.currentslide + 1;
		if (nextslide > slideshow.ss.images.length) {
			nextslide = 1;
		}
		prevslide = slideshow.ss.currentslide - 1;
		if (prevslide < 1) {
			prevslide = slideshow.ss.images.length;
		}
		slideshow.ss.nextslide.o
				.css('display','block')
				.css('top', y + 'px')
				.css('left', x + 2 * this.width/3 + 'px')
				.css('width', this.width/3 + 'px')
				.css('height', this.height + 'px')
				.attr('title', slideshow.ss.images[nextslide-1].caption);
		slideshow.ss.nextslide.o.get(0).href = '#' + nextslide + jqClix.attr(slideshow, 'id');
		slideshow.ss.prevslide.o
				.css('display','block')
				.css('top', y + 'px')
				.css('left', x + 'px')
				.css('width', this.width/3 + 'px')
				.css('height', this.height + 'px')
				.attr('title', slideshow.ss.images[prevslide-1].caption);
		slideshow.ss.prevslide.o.get(0).href = '#' + prevslide + jqClix.attr(slideshow, 'id');
	},
	build : function(o)
	{
		if (!o || !o.container || jqClix.islideshow.slideshows[o.container])
			return;
		var container = jqClix('#' + o.container);
		var el = container.get(0);
		
		if (el.style.position != 'absolute' && el.style.position != 'relative') {
			el.style.position = 'relative';
		}
		el.style.overflow = 'hidden';
		if (container.size() == 0)
			return;
		el.ss = {};
		
		el.ss.images = o.images ? o.images : [];
		el.ss.random = o.random && o.random == true || false;
		imgs = el.getElementsByTagName('IMG');
		for(i = 0; i< imgs.length; i++) {
			indic = el.ss.images.length;
			el.ss.images[indic] = {src:imgs[i].src, caption:imgs[i].title||imgs[i].alt||''};
		}
		
		if (el.ss.images.length == 0) {
			return;
		}
		
		el.ss.oP = jqClix.extend(
				jqClix.iUtil.getPosition(el),
				jqClix.iUtil.getSize(el)
			);
		el.ss.oPad = jqClix.iUtil.getPadding(el);
		el.ss.oBor = jqClix.iUtil.getBorder(el);
		t = parseInt(el.ss.oPad.t) + parseInt(el.ss.oBor.t);
		b = parseInt(el.ss.oPad.b) + parseInt(el.ss.oBor.b);
		jqClix('img', el).remove();
		el.ss.fadeDuration = o.fadeDuration ? o.fadeDuration : 500;
		if (o.linksPosition || o.linksClass || o.activeLinkClass) {
			el.ss.slideslinks = {};
			container.append('<div class="slideshowLinks"></div>');
			el.ss.slideslinks.o = jqClix('.slideshowLinks', el);
			if (o.linksClass) {
				el.ss.slideslinks.linksClass = o.linksClass;
				el.ss.slideslinks.o.addClass(o.linksClass);
			}
			if (o.activeLinkClass) {
				el.ss.slideslinks.activeLinkClass = o.activeLinkClass;
			}
			el.ss.slideslinks.o.css('position','absolute').css('width', el.ss.oP.w + 'px');
			if (o.linksPosition && o.linksPosition == 'top') {
				el.ss.slideslinks.linksPosition = 'top';
				el.ss.slideslinks.o.css('top',t + 'px');
			} else {
				el.ss.slideslinks.linksPosition = 'bottom';
				el.ss.slideslinks.o.css('bottom',b + 'px');
			}
			el.ss.slideslinks.linksSeparator = o.linksSeparator ? o.linksSeparator : ' ';
			for (var i=0; i<el.ss.images.length; i++) {
				indic = parseInt(i) + 1;
				el.ss.slideslinks.o.append('<a href="#' + indic + o.container + '" class="slideshowLink" title="' + el.ss.images[i].caption + '">' + indic + '</a>' + (indic != el.ss.images.length ? el.ss.slideslinks.linksSeparator : ''));
			}
			jqClix('a', el.ss.slideslinks.o).bind(
				'click',
				function()
				{
					jqClix.islideshow.go({link:this})
				}
			);
			el.ss.slideslinks.dimm = jqClix.iUtil.getSize(el.ss.slideslinks.o.get(0));
		}
		if (o.captionPosition || o.captionClass) {
			el.ss.slideCaption = {};
			container.append('<div class="slideshowCaption">&nbsp;</div>');
			el.ss.slideCaption.o = jqClix('.slideshowCaption', el);
			if (o.captionClass) {
				el.ss.slideCaption.captionClass = o.captionClass;
				el.ss.slideCaption.o.addClass(o.captionClass);
			}
			el.ss.slideCaption.o.css('position','absolute').css('width', el.ss.oP.w + 'px');
			if (o.captionPosition&& o.captionPosition == 'top') {
				el.ss.slideCaption.captionPosition = 'top';
				el.ss.slideCaption.o.css('top', (el.ss.slideslinks && el.ss.slideslinks.linksPosition == 'top' ? el.ss.slideslinks.dimm.hb + t : t) + 'px');
			} else {
				el.ss.slideCaption.captionPosition = 'bottom';
				el.ss.slideCaption.o.css('bottom', (el.ss.slideslinks && el.ss.slideslinks.linksPosition == 'bottom' ? el.ss.slideslinks.dimm.hb + b : b) + 'px');
			}
			el.ss.slideCaption.dimm = jqClix.iUtil.getSize(el.ss.slideCaption.o.get(0));
		}
		
		if (o.nextslideClass) {
			el.ss.nextslide = {nextslideClass:o.nextslideClass};
			container.append('<a href="#2' + o.container + '" class="slideshowNextSlide">&nbsp;</a>');
			el.ss.nextslide.o = jqClix('.slideshowNextSlide', el);
			el.ss.nextslide.o.css('position', 'absolute').css('display', 'none').css('overflow','hidden').css('fontSize', '30px').addClass(el.ss.nextslide.nextslideClass);
			el.ss.nextslide.o.bind('click', jqClix.islideshow.gonext);
		}
		if (o.prevslideClass) {
			el.ss.prevslide= {prevslideClass:o.prevslideClass};
			container.append('<a href="#0' + o.container + '" class="slideshowPrevslide">&nbsp;</a>');
			el.ss.prevslide.o = jqClix('.slideshowPrevslide', el);
			el.ss.prevslide.o.css('position', 'absolute').css('display', 'none').css('overflow','hidden').css('fontSize', '30px').addClass(el.ss.prevslide.prevslideClass);
			el.ss.prevslide.o.bind('click', jqClix.islideshow.goprev);
		}
		
		container.prepend('<div class="slideshowHolder"></div>');
		el.ss.holder = jqClix('.slideshowHolder', el);
		el.ss.holder.css('position','absolute').css('top','0px').css('left','0px').css('display', 'none');
		if (o.loader) {
			container.prepend('<div class="slideshowLoader" style="display: none;"><img src="' + o.loader + '" /></div>');
			el.ss.loader = jqClix('.slideshowLoader', el);
			el.ss.loader.css('position', 'absolute');
			var img = new Image();
			img.slideshow = o.container;
			img.src = o.loader;
			if (img.complete) {
				img.onload = null;
				jqClix.islideshow.go({loader:img});
			} else {
				img.onload = function()
				{
					jqClix.islideshow.go({loader:this});
				};
			}
		} else {
			jqClix.islideshow.go({container:el});
		}
		
		if(o.autoplay) {
			time = parseInt(o.autoplay) * 1000;
		}
		jqClix.islideshow.slideshows[o.container] = o.autoplay ? window.setInterval('jqClix.islideshow.timer(\'' + o.container + '\')', time) : null;
	}
};
jqClix.slideshow = jqClix.islideshow.build;
