/* * JQZoom Evolution 1.0.1 - Javascript Image magnifier * * Copyright (c) Engineer Renzi Marco(www.mind-projects.it) * * $Date: 12-12-2008 * *	ChangeLog: *   * $License : GPL,so any change to the code you should copy and paste this section,and would be nice to report this to me(renzi.mrc@gmail.com). */(function($){    $.fn.jqzoom = function(options)    {        var settings = {            zoomType: 'standard', //standard/reverse/innerzoom            zoomWidth: 200,		//zoomed width default width            zoomHeight: 200,		//zoomed div default width            xOffset: 10,		//zoomed div default offset            yOffset: 0,            position: "right" ,//zoomed div default position,offset position is to the right of the image            lens:true, //zooming lens over the image,by default is 1;			lensReset : false,			imageOpacity: 0.2,			title : true,			alwaysOn: false,			showEffect: 'show',			hideEffect: 'hide',			fadeinSpeed: 'fast',			fadeoutSpeed: 'slow',			preloadImages :true,			showPreload: true,			preloadText : 'Loading zoom',			preloadPosition : 'center'   //bycss        };			//extending options			options = options || {};        	$.extend(settings, options);		return this.each(function()		{			var a = $(this);			var aTitle = a.attr('title'); //variabile per memorizzare il titolo href			$(a).removeAttr('title');			$(a).css('outline-style','none');			var img = $("img", this);			var imageTitle = img.attr('title');			img.removeAttr('title');	//variabile per memorizzare il titolo immagine			var smallimage = new Smallimage( img );			var smallimagedata = {};			//imageborder			var btop = 0;			var bleft = 0;			var loader = null;     //variabile per memorizzare oggetto loader			loader = new Loader();			var ZoomTitle = (trim(aTitle).length > 0) ? aTitle :			(trim(imageTitle).length > 0) ? imageTitle : null;  //setting zoomtitle			var ZoomTitleObj = new zoomTitle();			var largeimage = new Largeimage( a[0].href );			var lens = new Lens();			var lensdata = {};			//lensborder			var largeimageloaded = false;			var scale = {}; //rapporto tra immagine grande e piccola scale.x/scale.y			var stage = null; // quadrato che mostra l'immagine ingrandita			var running = false; // running = true quando si verifica l'evento che mostra lo zoom(adesso mouseover).			var mousepos = {};			var firstime = 0;			var preloadshow = false;			var isMouseDown = false;			var dragstatus = false			//loading smallimagedata			smallimage.loadimage();			//ritorna false al click dell href			$(this).click(function(){return false;});			//se settato alwaysOn attivo lo Zoom e lo mostro.			//attivo al mouseover			$(this).hover(function(e)			{				mousepos.x = e.pageX;				mousepos.y	= e.pageY;				activate();			},function()			{				deactivate();			});			//ALWAYS ON			if(settings.alwaysOn)			{				setTimeout(function(){activate();},150);			}			function activate()			{				if ( !running ) {					//finding border					smallimage.findborder();					running = true;					//rimuovo il titolo al mouseover					imageTitle = img.attr('title');					img.removeAttr('title');					aTitle = a.attr('title');					$(a).removeAttr('title');					//se non cè creo l'oggetto largeimage					if (!largeimage || $.browser.safari) {						largeimage = new Largeimage( a[0].href );					}					//se l'immagine grande non è stata caricata la carico					if(!largeimageloaded || $.browser.safari)					{						largeimage.loadimage();					}else					{					//after preload						if(settings.zoomType != 'innerzoom')						{							stage = new Stage();							stage.activate();						}						lens = new Lens;						lens.activate();					}					//hack per MAC				/*	if($.browser.safari)					{						if(settings.zoomType != 'innerzoom') //se innerzoom non mostro la finestra dello zoom						{							stage = new Stage();							stage.activate();						}						if($('div.jqZoomPup').length <= 0)						{						lens = new Lens();						}						//if(settings.zoomType == 'innerzoom'){lens = new Lens()};						lens.activate();						(settings.alwaysOn) ? lens.center() : lens.setposition(null);					}					*/					a[0].blur();					//alert($('div.jqZoomPup').length);					return false;				}			}			function deactivate()			{				if(settings.zoomType == 'reverse' &&  !settings.alwaysOn)				{					img.css({'opacity' : 1});				}				if(!settings.alwaysOn)				{					//resetting parameters					running = false;					largeimageloaded = false;					$(lens.node).unbind('mousemove');					lens.remove();					if($('div.jqZoomWindow').length >0)					{						stage.remove();					}					if($('div.jqZoomTitle').length > 0)					{						ZoomTitleObj.remove();					}					//resetting title					img.attr('title',imageTitle);					a.attr('title',aTitle);					$().unbind();					a.unbind('mousemove');					//resetto il parametro che mi dice che è la prima volta che mostor lo zoom					firstime = 0;					//remove ieiframe					if(jQuery('.zoom_ieframe').length > 0)					{						jQuery('.zoom_ieframe').remove();					}				}else				{					if(settings.lensReset)					{						switch(settings.zoomType)						{							case 'innerzoom':							largeimage.setcenter();							break;							default:							lens.center();							break;						}					}				}				//non so se serve da provare				if(settings.alwaysOn)				{					activate();				}			};		//smallimage		function Smallimage( image )		{			this.node = image[0];			this.loadimage = function() {				this.node.src = image[0].src;			};			this.findborder = function()			{				var bordertop = '';				bordertop = $(img).css('border-top-width');				btop = '';				var borderleft = '';				borderleft = $(img).css('border-left-width');				bleft = '';				/*if($.browser.msie)				{					var temp = bordertop.split(' ');					bordertop = temp[1];					var temp = borderleft.split(' ');					borderleft = temp[1];				}*/				if(bordertop)				{					for(i=0;i<3;i++)					{						var x = [];						x = bordertop.substr(i,1);						if(isNaN(x) == false)						{							btop = btop +''+ bordertop.substr(i,1);						}else						{							break;						}					}				}				if(borderleft)				{					for(i=0;i<3;i++)					{						if(!isNaN(borderleft.substr(i,1)))						{							bleft = bleft + borderleft.substr(i,1)						}else						{							break;						}					}				}				btop = (btop.length > 0) ? eval(btop) : 0;				bleft = (bleft.length > 0) ? eval(bleft) : 0;			}			this.node.onload = function()			{				//setto il cursor e la posizione dell'href				a.css({'cursor':'crosshair','display':'block'});				if(a.css('position')!= 'absolute' && a.parent().css('position'))				{					a.css({'cursor':'crosshair','position':'relative','display':'block'});				}				if(a.parent().css('position') != 'absolute')				{					a.parent().css('position','relative');					//a.css('position','relative');				}				else{				//a.css('position','relative');				}				if($.browser.safari || $.browser.opera)				{					//$(img).css({position:'absolute',top:'0px',left:'0px'});				}				/*if(a.css('position')!= 'absolute' && a.parent().css('position'))				{					a.css({'cursor':'crosshair','position':'relative','display':'block'});				}				if(a.parent().css('position') != 'absolute')				{					alert('in');					a.parent().css('position','relative');					//a.css('position','relative');				}				else{				//a.css('position','relative');				}*/				/*				if(a.parent().css('position') != 'relative' && a.css('position') != 'absolute')				{				a.css({'cursor':'crosshair','position':'relative','display':'block'});				}*/				//al docuemnt ready viene caricato l'src quindi viene azionato l'onload e carico tutti i dati				smallimagedata.w = $( this ).width();				smallimagedata.h = $( this ).height();				//non viene fatta assegnazione alla variabile globale				smallimagedata.h = $( this ).height();				smallimagedata.pos = $( this ).offset();				smallimagedata.pos.l = $( this ).offset().left;				smallimagedata.pos.t = $( this ).offset().top;				smallimagedata.pos.r = smallimagedata.w + smallimagedata.pos.l;				smallimagedata.pos.b = smallimagedata.h + smallimagedata.pos.t;				//per sicurezza setto l'altezza e la width dell'href				//a.height(smallimagedata.h);				//a.width(smallimagedata.w);				//PRELOAD IMAGES				if(settings.preloadImages)				{					largeimage.loadimage();				}			};			return this;		};		//Lens		function Lens()		{			//creating element and adding class			this.node = document.createElement("div");			$(this.node).addClass('jqZoomPup');			this.node.onerror = function() {				$( lens.node ).remove();				lens = new Lens();				lens.activate() ;			};			//funzione privata per il caricamento dello zoom			this.loadlens = function()			{				switch(settings.zoomType)				{					case 'reverse':						this.image = new Image();						this.image.src = smallimage.node.src; // fires off async						this.node.appendChild( this.image );						$( this.node ).css({'opacity' : 1});					break;					case 'innerzoom':						this.image = new Image();						this.image.src = largeimage.node.src; // fires off async						this.node.appendChild( this.image );						$( this.node ).css({'opacity' : 1});					break					default:					break;				}				switch(settings.zoomType)				{					case 'innerzoom':						lensdata.w = smallimagedata.w;						lensdata.h = smallimagedata.h;					break;					default:						lensdata.w = (settings.zoomWidth)/scale.x;						lensdata.h = (settings.zoomHeight)/scale.y;					break;				}			$( this.node ).css({					width: lensdata.w + 'px',					height: lensdata.h + 'px',					position: 'absolute',					/*cursor: 'crosshair',*/					display: 'none',					//border: '1px solid blue'					borderWidth: 1+'px'				});			a.append(this.node);			}			return this;		};		Lens.prototype.activate = function()		{			//carico la lente			this.loadlens();			switch(settings.zoomType)			{				case 'reverse':					img.css({'opacity' : settings.imageOpacity});					(settings.alwaysOn) ? lens.center() : lens.setposition(null);					//lens.center();					//bindo ad a il mousemove della lente					a.bind( 'mousemove', function(e)					{						mousepos.x = e.pageX;						mousepos.y = e.pageY;						lens.setposition( e );					});				break;				case 'innerzoom':					//	lens = new Lens();					//	lens.activate();					$( this.node ).css({top : 0 ,left: 0});				   	if(settings.title)					{						ZoomTitleObj.loadtitle();					}					largeimage.setcenter();				   	a.bind( 'mousemove', function(e)				   	{						mousepos.x = e.pageX;						mousepos.y = e.pageY;						largeimage.setinner( e );					/*if(settings.zoomType == 'innerzoom' && running)					{						$(a).mousemove(function(){							if($('div.jqZoomPup').length <= 0)							{								lens = new Lens();								lens.activate();							}						});					}*/						/*if($('div.jqZoomPup').length <= 0)							{								lens = new Lens();								lens.activate();							}*/					});				break;				default:					/*$(document).mousemove(function(e){					if(isMouseDown && dragstatus != false){					lens.setposition( e );					}					});					lens.center()					dragstatus = 'on'					$(document).mouseup(function(e){					if(isMouseDown && dragstatus != false){						isMouseDown = false;						dragstatus = false;					}					});					$(this.node).mousedown(function(e){					$('div.jqZoomPup').css("cursor", "move");					$(this.node).css("position", "absolute");				// set z-index					$(this.node).css("z-index", parseInt( new Date().getTime()/1000 ));					if($.browser.safari)					{						$(a).css("cursor", "move");					}					isMouseDown    = true;					dragstatus = 'on';					lens.setposition( e );					});					*/					(settings.alwaysOn) ? lens.center() : lens.setposition(null);					//bindo ad a il mousemove della lente					$(a).bind( 'mousemove', function(e)					{						mousepos.x = e.pageX;						mousepos.y = e.pageY;						lens.setposition( e );					});				break;			}			return this;		};		Lens.prototype.setposition = function( e)		{			if(e)			{				mousepos.x = e.pageX;				mousepos.y	= e.pageY;			}			if(firstime == 0)			{			 	var lensleft = (smallimagedata.w)/2 - (lensdata.w)/2 ;			 	var lenstop = (smallimagedata.h)/2 - (lensdata.h)/2 ;				//ADDED				$('div.jqZoomPup').show()				if(settings.lens)				{					this.node.style.visibility = 'visible';				}				else				{					this.node.style.visibility = 'hidden';					$('div.jqZoomPup').hide();				}				//ADDED				firstime = 1;			}else			{				var lensleft = mousepos.x - smallimagedata.pos.l - (lensdata.w)/2 ;				var lenstop = mousepos.y - smallimagedata.pos.t -(lensdata.h)/2 ;			}				//a sinistra				if(overleft())				{					lensleft = 0  + bleft;				}else				//a destra				if(overright())				{					if($.browser.msie)					{					lensleft = smallimagedata.w - lensdata.w  + bleft + 1  ;					}else					{					lensleft = smallimagedata.w - lensdata.w  + bleft - 1  ;					}				}				//in alto				if(overtop())				{					lenstop = 0 + btop ;				}else				//sotto				if(overbottom())				{					if($.browser.msie)					{					lenstop = smallimagedata.h - lensdata.h  + btop + 1 ;					}else					{					lenstop = smallimagedata.h - lensdata.h - 1 + btop  ;					}				}				lensleft = parseInt(lensleft);				lenstop = parseInt(lenstop);				//setto lo zoom ed un eventuale immagine al centro				$('div.jqZoomPup',a).css({top: lenstop,left: lensleft });				if(settings.zoomType == 'reverse')				{					$('div.jqZoomPup img',a).css({'position': 'absolute','top': -( lenstop - btop +1) ,'left': -(lensleft - bleft +1)  });				}				this.node.style.left = lensleft + 'px';				this.node.style.top = lenstop + 'px';				//setto l'immagine grande				largeimage.setposition();				function overleft() {					return mousepos.x - (lensdata.w +2*1)/2  - bleft < smallimagedata.pos.l;				}				function overright() {					return mousepos.x + (lensdata.w + 2* 1)/2  > smallimagedata.pos.r + bleft ;				}				function overtop() {					return mousepos.y - (lensdata.h + 2* 1)/2  - btop < smallimagedata.pos.t;				}				function overbottom() {					return mousepos.y + (lensdata.h + 2* 1)/2    > smallimagedata.pos.b + btop;				}			return this;		};		//mostra la lente al centro dell'immagine		Lens.prototype.center = function()		{			$('div.jqZoomPup',a).css('display','none');			var lensleft = (smallimagedata.w)/2 - (lensdata.w)/2 ;			var lenstop = (smallimagedata.h)/2 - (lensdata.h)/2;			this.node.style.left = lensleft + 'px';			this.node.style.top = lenstop + 'px';			$('div.jqZoomPup',a).css({top: lenstop,left: lensleft });			if(settings.zoomType == 'reverse')			{				/*if($.browser.safari){					alert('safari');					alert(2*bleft);					$('div.jqZoomPup img',a).css({'position': 'absolute','top': -( lenstop - btop +1) ,'left': -(lensleft - 2*bleft)  });				}else				{*/					$('div.jqZoomPup img',a).css({'position': 'absolute','top': -(lenstop - btop + 1) ,'left': -( lensleft  - bleft +1)   });				//}			}			largeimage.setposition();			if($.browser.msie)			{				$('div.jqZoomPup',a).show();			}else			{				setTimeout(function(){$('div.jqZoomPup').fadeIn('fast');},10);			}		};		//ritorna l'offset		Lens.prototype.getoffset = function() {			var o = {};			o.left = parseInt(this.node.style.left) ;			o.top =  parseInt(this.node.style.top) ;			return o;		};		//rimuove la lente		Lens.prototype.remove = function()		{			if(settings.zoomType == 'innerzoom')			{				$('div.jqZoomPup',a).fadeOut('fast',function(){/*$('div.jqZoomPup img').remove();*/$(this).remove();});			}else			{				//$('div.jqZoomPup img').remove();				$('div.jqZoomPup',a).remove();			}		};		Lens.prototype.findborder = function()		{			var bordertop = '';			bordertop = $('div.jqZoomPup').css('borderTop');			//alert(bordertop);			lensbtop = '';			var borderleft = '';			borderleft = $('div.jqZoomPup').css('borderLeft');			lensbleft = '';			if($.browser.msie)			{				var temp = bordertop.split(' ');				bordertop = temp[1];				var temp = borderleft.split(' ');				borderleft = temp[1];			}			if(bordertop)			{				for(i=0;i<3;i++)				{					var x = [];					x = bordertop.substr(i,1);					if(isNaN(x) == false)					{						lensbtop = lensbtop +''+ bordertop.substr(i,1);					}else					{						break;					}				}			}			if(borderleft)			{				for(i=0;i<3;i++)				{					if(!isNaN(borderleft.substr(i,1)))					{						lensbleft = lensbleft + borderleft.substr(i,1)					}else					{						break;					}				}			}			lensbtop = (lensbtop.length > 0) ? eval(lensbtop) : 0;			lensbleft = (lensbleft.length > 0) ? eval(lensbleft) : 0;		}		//LARGEIMAGE		function Largeimage( url )		{			this.url = url;			this.node = new Image();			/*if(settings.preloadImages)			{			 	preload.push(new Image());				preload.slice(-1).src = url ;			}*/			this.loadimage = function()			{				if(!this.node)				this.node = new Image();				this.node.style.position = 'absolute';				this.node.style.display = 'none';				this.node.style.left = '-5000px';				this.node.style.top = '10px';				loader = new Loader();				if(settings.showPreload && !preloadshow)				{					loader.show();					preloadshow = true;				}				document.body.appendChild( this.node );				this.node.src = this.url; // fires off async			}			this.node.onload = function()			{				this.style.display = 'block';				var w = Math.round($(this).width());				var	h = Math.round($(this).height());				this.style.display = 'none';				//setting scale				scale.x = (w / smallimagedata.w);				scale.y = (h / smallimagedata.h);				if($('div.preload').length > 0)				{					$('div.preload').remove();				}				largeimageloaded = true;				if(settings.zoomType != 'innerzoom' && running){					stage = new Stage();					stage.activate();				}				if(running)				{				//alert('in');				lens = new Lens();				lens.activate() ;				}				//la attivo				if($('div.preload').length > 0)				{					$('div.preload').remove();				}			}			return this;		}		Largeimage.prototype.setposition = function()		{          	this.node.style.left = Math.ceil( - scale.x * parseInt(lens.getoffset().left) + bleft) + 'px';			this.node.style.top = Math.ceil( - scale.y * parseInt(lens.getoffset().top) +btop) + 'px';		};		//setto la posizione dell'immagine grande nel caso di innerzoom		Largeimage.prototype.setinner = function(e) {          	this.node.style.left = Math.ceil( - scale.x * Math.abs(e.pageX - smallimagedata.pos.l)) + 'px';			this.node.style.top = Math.ceil( - scale.y * Math.abs(e.pageY - smallimagedata.pos.t)) + 'px';			$('div.jqZoomPup img',a).css({'position': 'absolute','top': this.node.style.top,'left': this.node.style.left  });		};		Largeimage.prototype.setcenter = function() {          	this.node.style.left = Math.ceil(- scale.x * Math.abs((smallimagedata.w)/2)) + 'px';			this.node.style.top = Math.ceil( - scale.y * Math.abs((smallimagedata.h)/2)) + 'px';			$('div.jqZoomPup img',a).css({'position': 'absolute','top': this.node.style.top,'left': this.node.style.left  });		};		//STAGE		function Stage()		{			var leftpos = smallimagedata.pos.l;			var toppos = smallimagedata.pos.t;			//creating element and class			this.node = document.createElement("div");			$(this.node).addClass('jqZoomWindow');			$( this.node )				.css({					position: 'absolute',					width: Math.round(settings.zoomWidth) + 'px',					height: Math.round(settings.zoomHeight) + 'px',					display: 'none',					zIndex: 10000,					overflow: 'hidden'				});			//fa il positionamento		    switch(settings.position)		    {		    	case "right":				leftpos = (smallimagedata.pos.r + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width)				? (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset))				: (smallimagedata.pos.l - settings.zoomWidth - Math.abs(settings.xOffset));				topwindow = smallimagedata.pos.t + settings.yOffset + settings.zoomHeight;				toppos = (topwindow < screen.height && topwindow > 0)				?  smallimagedata.pos.t + settings.yOffset				:  smallimagedata.pos.t;		    	break;		    	case "left":				leftpos = (smallimagedata.pos.l - Math.abs(settings.xOffset) - settings.zoomWidth > 0)				? (smallimagedata.pos.l - Math.abs(settings.xOffset) - settings.zoomWidth)				: (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset));				topwindow = smallimagedata.pos.t + settings.yOffset + settings.zoomHeight;				toppos = (topwindow < screen.height && topwindow > 0)				?  smallimagedata.pos.t + settings.yOffset				:  smallimagedata.pos.t;		    	break;		    	case "top":				toppos = (smallimagedata.pos.t - Math.abs(settings.yOffset) - settings.zoomHeight > 0)				? (smallimagedata.pos.t - Math.abs(settings.yOffset) - settings.zoomHeight)				: (smallimagedata.pos.t + smallimagedata.h + Math.abs(settings.yOffset));				leftwindow = smallimagedata.pos.l + settings.xOffset + settings.zoomWidth;				leftpos = (leftwindow < screen.width && leftwindow > 0)				? smallimagedata.pos.l + settings.xOffset				: smallimagedata.pos.l;		    	break;		    	case "bottom":				toppos = (smallimagedata.pos.b + Math.abs(settings.yOffset) + settings.zoomHeight < $('body').height())				? (smallimagedata.pos.b + Math.abs(settings.yOffset))				: (smallimagedata.pos.t - settings.zoomHeight - Math.abs(settings.yOffset));				leftwindow = smallimagedata.pos.l + settings.xOffset + settings.zoomWidth;				leftpos = (leftwindow < screen.width && leftwindow > 0)				? smallimagedata.pos.l + settings.xOffset				: smallimagedata.pos.l;		    	break;		    	default:				leftpos = (smallimagedata.pos.l + smallimagedata.w + settings.xOffset + settings.zoomWidth < screen.width)				? (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset))				: (smallimagedata.pos.l - settings.zoomWidth - Math.abs(settings.xOffset));				toppos = (smallimagedata.pos.b + Math.abs(settings.yOffset) + settings.zoomHeight < screen.height)				? (smallimagedata.pos.b + Math.abs(settings.yOffset))				: (smallimagedata.pos.t - settings.zoomHeight - Math.abs(settings.yOffset));		    	break;		    }			this.node.style.left = leftpos + 'px';			this.node.style.top = toppos + 'px';			return this;		}		Stage.prototype.activate = function()		{			if ( !this.node.firstChild )					this.node.appendChild( largeimage.node );			if(settings.title)			{				ZoomTitleObj.loadtitle();			}			document.body.appendChild( this.node );			switch(settings.showEffect)			{				case 'show':					$(this.node).show();				break;				case 'fadein':					$(this.node).fadeIn(settings.fadeinSpeed);				break;				default:					$(this.node).show();				break;			}			$(this.node).show();            if ($.browser.msie && $.browser.version < 7) {	        this.ieframe = $('<iframe class="zoom_ieframe" frameborder="0" src="#"></iframe>')	          .css({ position: "absolute", left:this.node.style.left,top:this.node.style.top,zIndex: 99,width:settings.zoomWidth,height:settings.zoomHeight })	          .insertBefore(this.node);	     	 };			largeimage.node.style.display = 'block';		}		Stage.prototype.remove = function() {			switch(settings.hideEffect)			{				case 'hide':					$('.jqZoomWindow').remove();				break;				case 'fadeout':					$('.jqZoomWindow').fadeOut(settings.fadeoutSpeed);				break;				default:					$('.jqZoomWindow').remove();				break;			}		}		function zoomTitle()		{			this.node =  jQuery('<div />')				.addClass('jqZoomTitle')				.html('' + ZoomTitle +'');			this.loadtitle = function()			{				if(settings.zoomType == 'innerzoom')				{					$(this.node)					.css({position: 'absolute',						  top: smallimagedata.pos.b +3,						  left: (smallimagedata.pos.l+1),						  width:smallimagedata.w						  })					.appendTo('body');				}else				{					$(this.node).appendTo(stage.node);				}			};		}		zoomTitle.prototype.remove = function() {			$('.jqZoomTitle').remove();		}		function Loader()		{			this.node = document.createElement("div");			$(this.node).addClass('preload');			$(this.node).html(settings.preloadText);//appendo il testo			$(this.node )				.appendTo("body")				.css('visibility','hidden');			this.show = function()			{				switch(settings.preloadPosition)				{					case 'center':						loadertop =  smallimagedata.pos.t + (smallimagedata.h - $(this.node ).height())/2;						loaderleft = smallimagedata.pos.l + (smallimagedata.w - $(this.node ).width())/2;					break;					default:					var loaderoffset = this.getoffset();					loadertop = !isNaN(loaderoffset.top) ? smallimagedata.pos.t + loaderoffset.top : smallimagedata.pos.t + 0;					loaderleft = !isNaN(loaderoffset.left) ? smallimagedata.pos.l + loaderoffset.left : smallimagedata.pos.l + 0;					break;				}				//setting position				$(this.node).css({							top: loadertop  ,							left: loaderleft ,							position: 'absolute',							visibility:'visible'					    	});			}			return this;		}		Loader.prototype.getoffset = function()		{			var o = null;			o = $('div.preload').offset();			return o;		}		});	}})(jQuery);	function trim(stringa)	{	    while (stringa.substring(0,1) == ' '){	        stringa = stringa.substring(1, stringa.length);	    }	    while (stringa.substring(stringa.length-1, stringa.length) == ' '){	        stringa = stringa.substring(0,stringa.length-1);	    }	    return stringa;	}
