window.addEvent('domready', function() {
	$$('.pg-gl').each(function(wrapper) {
		if(!wrapper.hasClass('pg-init')) new pgGridLightbox(wrapper);
		wrapper.addClass('pg-init');
	});
});
var oldLeft = 0;
var newLeft = 125;
var overLeft = 0;
var overRight = 0;
var pgGridLightbox = new Class({
																 
	Implements: [Options],
 
	options: {
		initial: 0
	},
												
	initialize: function(el, options) {
		//options
		this.setOptions(options);
		
		//main element reference
		this.wrapper = document.id(el);
		
		//last item to be clicked
		this.last = {
			clicked: false,
			index: 0
		}; 
		
		//-----
		
		//a tags
		this.anchors = {
			anch: this.wrapper.getElements('.thumbs a')
		};
		
		this.anchors.anch.each(function(a) {
		  a.addEvent('mouseover',function(image) {
			  overLeft =  parseInt(image.target.getPosition().x);
			  overRight = overLeft + parseInt(image.target.getSize().x);
			  
		  }.bind(this));
		}.bind(this));
		
		//thumbs
		this.thumbs = {
			images: this.wrapper.getElements('.thumbs img'),
			imagesSrc: []
		};
		
		this.thumbs.images.each(function(thumb) {																		 
			//store thumbnail info
			var parts = thumb.get('title').split('##');
			thumb.set('title', '');
			thumb.store('index', parts[0]);
			thumb.store('title', parts[1].length > 0 ? parts[1] + ':' : '&nbsp;');
			thumb.store('tip:title', parts[1].length > 0 ? parts[1] : '&nbsp;');
			thumb.store('description', parts[2].length > 0 ? parts[2] : '&nbsp;');
			thumb.store('tip:text', parts[2].length > 0 ? parts[2] : '&nbsp;');
			
		}.bind(this));
		
		
		//preload
		this.preload();
		
		//-----
		
		//tooltips
		this.tips = new Tips(this.thumbs.images, {
			className: 'pg-gl-tip',
			offset: {'x': -125, 'y': 20},
			windowPadding: {'x': 125, 'y': 125} 
		});
		
		this.tips.addEvent('show',function() {
			winL = window.getScroll().x;
			winSize = parseInt(window.getSize().x);
			
			winR = winL + winSize;
			var left = 125;
			
			if ((overLeft-winL) <left) {
				left = (overLeft-winL);
			}
			if (overRight+125 > winR)  {
				left = 250 - (winR-overRight);
			}
			if (left > 250)  {
			  left = 250;	
			}
			if (left < 0)  {
			  left = 0;	
			}
			newLeft = left;
			if (oldLeft != newLeft)  {
			  oldLeft = newLeft;
			  this.options.offset = {'x': -1*left, 'y': 20}
			  this.tip.setStyle("background-position",((left>240)?240:left)+"px 0");  
			  this.tip.setStyle("left",(xpos-left)+"px");
			}
		});
	},
	
	//preload all images, adjust margins, trigger initial click
	preload: function() {
		this.thumbs.images.each(function(thumb) {
			this.thumbs.imagesSrc.push(thumb.getParent().get('href'));
		}.bind(this));
		
		new Asset.images(this.thumbs.imagesSrc);
		
		return this;
	}
	
});

var xpos = 0;
function getPosition(e) {
    xpos = e.page.x;
}

window.addEvent('mousemove', getPosition);


