/**
	Provide front-end base for SPARC-based website's content handling and enhancements. (such as image zooms and mouseovers)
	Create generic i72 object for later additions/extensions
	
	@file		i72.js
	@path		/assets/js/i72.js
	@version	2011/03/09	- Initial creation
	@copyright	2011- Ignition72, LLC
	@author		Joseph Wilson
	@link		www.ignition72.com <http://www.ignition72.com/>
*/
var i72 = {

	/**
		i72.init
		Scan current page, and enhance found items
		@version	2011/03/09	- Initial creation
		@return		false
	*/
	init:function(){
		$$('.content div.on-mouseover').each(function(e){i72.image.initMouseover(e);});
		$$('.content div.on-click').each(function(e){i72.image.initZoom(e);});
		return false;
	},

	/**
		i72.image
		image-enhancement object
		@version	2011/03/09	- Initial creation
	*/
	image: {

		/**
			i72.image.initMouseover
			Set observers prototype-based mouseover support for images with mouseovers set in SPARC
			@version	2011/03/09	- Initial creation
		*/
		initMouseover:function(e){
			e.down('a').observe('mouseover',function(ev){
				Event.element(ev).up('div').select('img').each(function(im){im.hasClassName('first-img') ? im.hide() : im.show();});
				ev.stop();
			}).observe('mouseout',function(ev){
				Event.element(ev).up('div').select('img').each(function(im){im.hasClassName('first-img') ? im.show() : im.hide();});
				ev.stop();
			});
		},

		/**
			i72.image.initZoom
			Set observers for images with zoom and secondary images set in SPARC
			@version	2011/03/09	- Initial creation
		*/
		initZoom:function(e){
			e.down('a').observe('click',i72.image.zoom);
		},

		/**
			i72.image.zoom
			Provide prototype-based lightbox-style click-zoom support for images with zoom and secondary images set in SPARC
			This creates necessary containers if none exist when requested
			@version	2011/03/09	- Initial creation
		*/
		zoom:function(ev){
			var target = Event.element(ev).up('div');
			ev.stop();
			if ($$('.i72-cover').length === 0) {
				var cover = $(document.createElement('div')),
					imagewrap = $(document.createElement('div'));
				$(document.body).insert(cover).insert(imagewrap);
				cover.setStyle({
					display:'none',
					position:'fixed',
					top:0,
					left:0,
					backgroundColor:'#000',
					height:'100%',
					width:'100%',
					zIndex:7200
				});
				cover.observe('click',i72.image.zoomClose);
				imagewrap.observe('click',i72.image.zoomClose);
				cover.addClassName('i72-cover');
				imagewrap.addClassName('i72-imagewrap');
			} else {
				var cover = $$('.i72-cover')[0],
					imagewrap = $$('.i72-imagewrap')[0];
			}
			var img = target.down('.second-img'),
				newimg = new Image(),
				imgsize = img.getDimensions(),
				coversize = cover.getDimensions();
			imgsize.width = (imgsize.width > (coversize.width + 60)) ? coversize.width - 60: imgsize.width;
			imgsize.height = (imgsize.height > (coversize.height + 60)) ? coversize.height - 40: imgsize.height;
			imagewrap.setStyle({
				display:'none',
				position:'fixed',
				top:'50%',
				left:'50%',
				marginTop:'-' + Math.round((imgsize.height + 40) / 2) + 'px',
				marginLeft:'-' + Math.round((imgsize.width + 40) / 2) + 'px',
				backgroundColor: '#fff',
				paddingTop:'40px',
				height:(imgsize.height + 40) + 'px',
				width:(imgsize.width + 40) + 'px',
				zIndex:7201,
				overflow:'auto'
			});
			newimg.src = img.src;
			imagewrap.insert(newimg);
			Effect.Appear(cover,{from:0,to:0.6,duration:0.3});
			Effect.Appear(imagewrap,{from:0,to:1,duration:0.3});
		},

		/**
			i72.image.zoomClose
			Hide zoom UI, removes created image element
			This creates necessary containers if none exist when requested
			@version	2011/03/09	- Initial creation
		*/
		zoomClose: function(){
			var cover = $$('.i72-cover')[0],
				imagewrap = $$('.i72-imagewrap')[0];
			Effect.Fade(cover,{from:0.6,to:0,duration:0.3});
			Effect.Fade(imagewrap,{from:1,to:0,duration:0.3,afterFinish:function(){imagewrap.down('img').remove();}});
		}
	}
};

/* set event handler to fire on dom:loaded */
document.observe('dom:loaded',i72.init);
