//++
//	Cufon replacement calls
//++
Cufon.replace('h2, #intro > p, a.button, h3, .promo h4',{hover:true});


//++
//	external link creator
//++
function makeExternalLink(link) {
	if (link.readAttribute('title')) { if ( link.readAttribute('title').indexOf('(opens in new window)') < 0 ) { link.writeAttribute('title',link.readAttribute('title')+' (opens in new window)'); } }
	link.observe('click', function(e){ e.stop(); window.open(this.readAttribute('href'), 'ge_external_link'); });
}


//++
//	Initialize page on DOM Load
//++
document.observe('dom:loaded',function(){
	
	// lightbox links
	$$('.lightbox').each(function(el){ el.observe("click", function(e) { e.stop(); GE_Lightbox.getInstance().start(this); } ); });
	
	// tabs
	geTabController.getInstance();
	
	// external links
	$$('a.external').each(function(el){ makeExternalLink(el); });
	
});


//++
//	page tabs
//++
var geTabController = function(){
	this.activeTab = null;
	this.tabs = [];
	this.init();
};
geTabController.prototype.init = function(){
	var self = this;
	$('content').addClassName('tabs-active');
	$$('.page').each( function(el,i){ 
		var tab = new geTab(el,i);
		tab.deactivate();
		tab.a.observe('click',self.toggleTab.bind(i));
		$$('a[href*=#'+tab.tab.readAttribute('id')+']').each(function(el){ el.observe('click',self.toggleTab.bind(i)); });
		self.tabs.push(tab);
	});
	var href = document.location.href;
	var id = href.indexOf('#')>0 ? href.substr(href.indexOf('#')+1,href.length) : null;
	if (id) { for (var i=0; i<this.tabs.length; i++) { if (this.tabs[i].tab.readAttribute('id')==id) { this.showTab(i); break; } } }
	else { this.showTab(0); }
};
geTabController.prototype.showTab = function(i){
	this.tabs[i].activate();
	this.activeTab = i;
};
geTabController.prototype.hideTab = function(i){
	this.tabs[i].deactivate();
	this.activeTab = null;
};
geTabController.prototype.toggleTab = function(e){
	e.stop();
	var self = geTabController.getInstance();
	self.hideTab(self.activeTab);
	self.showTab(this);
};
geTabController._instance = null;
geTabController.getInstance = function() {
	if (geTabController._instance == null) geTabController._instance = new geTabController();
	return geTabController._instance;
};

var geTab = function(el,i) {
	this.tab = null;
	this.a = null;
	this.init(el,i);
};
geTab.prototype.init = function(el,i){
	this.tab = el;
	this.a = el.down('h3 a');
};
geTab.prototype.activate = function(){
	this.tab.addClassName('current');
	this.tab.setStyle({position:'relative'});
	this.tab.down('.article').show();
	this.tab.down('.aside').show();
	Cufon.replace(this.a);
};
geTab.prototype.deactivate = function(){
	this.tab.removeClassName('current');
	this.tab.setStyle({left:'0',position:'absolute',top:'0'});
	this.tab.down('.article').hide();
	this.tab.down('.aside').hide();
	Cufon.replace(this.a);
};

