/* -------------------------------------------------------------------- */
/* NET4VISIONS.COM Website - main.js 04-08-2009 */
/* Version: 1.01 */
/* Created by: net4visions.com */
/* Last edited: 06-26-2010 */
/* Requirements: mootools 1.2.4.js
/* -------------------------------------------------------------------- */

// EQUALIZE BOX HEIGHT/WIDTH
Elements.implement({
	'equalize': function(axis) {
		var axis = axis ? axis.toLowerCase() : 'height';
		if (['height', 'width'].indexOf(axis.toLowerCase()) == -1) axis = 'height';
		
		var offset	= 'offset' + axis.capitalize();
		var prop 	= (typeof document.body.style.maxHeight != 'undefined' ? 'min-' : '') + axis;
		var vals	= this.map(function(element, index) { return element.getSize().y });
		vals.sort(function(a,b) { return b - a });
		
		this.setStyle(axis, vals[0]);
		this.each(function(element, index){
			element.setStyle(prop, vals[0] - (element[offset] - element.getStyle(axis).toInt()));
		}, this)
		
		return this;
	}
});


var Site = new Class({
	Implements: [Options, Events],
	
	options: {
		smoothTabs: 		true,
		externalLinks: 		true,
		convertTips:		true,
		columnHeights:		true,
		smoothScroll:		true,
		convertCode:		true
	},	
	
	// INIT
	initialize: function(options) {		
		this.setOptions(options);	
		
		this.setFaqs();
		this.setTabs();
		this.setSlideshow();
		this.setGallery();
		this.setFlashPlayer();
		
		if (this.options.externalLinks) this.setLinks();
		if (this.options.convertTips) 	this.setTips();
		if (this.options.convertCode) 	this.setCode();
		if (this.options.columnHeights)	this.setColumnHeights();
		if (this.options.smoothScroll) 	this.setScroll();		
	},
	
	// SET TABS
	setTabs: function() {
		var bprTabs = new TabSwapper({
		  	selectedClass: 		'on',
		  	deselectedClass:	'off',
		  	tabs: 				$$('.tabs li'),
		  	clickers: 			$$('.tabs li a'),
		  	sections: 			$$('.panels div.panel'),
		  	
			//remember what the last tab the user clicked was
		  	cookieName: 		'tabSet',
		  	
			//use transitions to fade across
		  	smooth: 			true,
			smoothSize: 		true
		});
	},
	
	// FAQ SLIDES
	setFaqs: function() { // faq - requently asked questions
		
		var els = $$('dl#faq dd');
		if (els.length == 0) return false;
		
		var fx = els.map(function(el) {
			return new Fx.Slide(el, { 
				duration: 	'normal',
				mode: 		'vertical',
				transition:	Fx.Transitions.Quad.easeOut,
				wait: 		false
			}).hide();
		});	
		
		$$('dl#faq dt.toggler').each( function(el, idx) {			
			el.addEvent('click', function(evt) {
				evt.stop();
				fx[idx].toggle();				
			}).setStyle('cursor', 'pointer');	
		});	
	},

	// HIGHLIGHT EXTERNAL LINKS
	setLinks: function() {
		if(!this.options.externalLinks) return false;		
		$$('a[rel=external]').each(function(el) {
			if ($type(el.getFirst()) != 'element') el.addClass('external');
			el.set('target','_blank');
		});
	},
	
	// SET SLIDESHOW
	setSlideshow: function() {
		var sw = new SimpleViewer('slide');		
	},
	
	// SET GALLERY
	setGallery: function() {
		var ig01 = new IGallery('gallery-01');
		var ig02 = new IGallery('gallery-02', { start: 0 });
	},
	
	// SET FLASH PLAYER
	setFlashPlayer: function() {
		Player = new Player('swfContainerID', { buttons: { disable: ['#btnOpenID','#btnQuitID','#btnToggID']}, lightbox: true, autoplay: false, draggable: false });
	},
		
	// SHOW METRIC VALUES
	setTips: function() {
		var els = $$('.inches', '.feet', '.yard', '.sqfeet', '.acres');
		if (els.length == 0) return false;
		$each(els, function(element){
			element.setStyle('cursor', 'pointer');
			var value = this._convert(parseFloat(element.get('text').replace(',','')), element.get('class'));
			element.store('tip:text', value);
		},this)
		var convertTips = new Tips(els, {className:'tip-convert', offsets: {'x': 12, 'y': 12}});
	},
	
	// SETUP CODE FIELDS
	setCode: function() {
		$$('code.php', 'code.js').each(function(el){
			new Lighter(el, {
				altLines: 'hover',
				mode: 'ol'//,
				//indent: 5,
				//clipboard: true
			});
		})
	},
	
	// EQUAL COLUMN HEIGHTS
	setColumnHeights: function() {
		var els  = $$('div.eq div.box');
		if (els.length == 0) return false;
		els.equalize();
	},
		
	// SMOOTH SCROLL
	setScroll: function() {
		new Fx.SmoothScroll({
			links: $$('a[href*=#]')
		});
	}
});


// global variables
var LB;
var Player;
var Site;


// domready - init site
window.addEvent('domready', function() {
	LB 		= new Lightbox({
		assetBaseUrl: './assets/site/slimbox/'
	});	
	Site	= new Site();
});

