/* JavaScript for Staplegun.us */

var aNavBG = new Object;
var hasClicked = false;
var navbgfixer = false;


// Detect old browsers
//if (Browser.Engine.trident) alert(Browser.Engine.version);


window.addEvent('domready', function(){
	// set active nav bg object
	aNavBG = $('mainNavActiveMarkerDiv');

	initNavBGPos();

	$$('.mainNavItem a').each(function(obj){
		obj.addEvent('click', function(event){
			event.stop();
			this.blur();
			hasClicked = true;
			$$('.mainNavItem .activeNav').each(function(o){
				o.removeClass('activeNav');
			});
			obj.addClass('activeNav');
			setNavBGPos();
			loadPageContent(this.getProperty('href'));
			if (!navbgfixer) navbgfixer = setInterval(setNavBGPos, 2000);
		});

		if (window.location.hash != ''){
			if (obj.getProperty('href') == window.location.hash.replace(/^#/, '')){
				obj.addClass('activeNav');
				setNavBGPos();
				loadPageContent(window.location.hash.replace(/^#/, ''));
				navbgfixer = setInterval(setNavBGPos, 2000);
			}
		} else {
			var strUrl = window.location.toString();
			if (typeof(nobgvideo) == 'undefined' || nobgvideo == false){
				if (!strUrl.match(/id=[^1]$|id=[0-9]{2,}|\/home$/)) loadBGVideo();
			}
		}
	});
	
	$$('#projPagination a').each(function(obj){
		obj.addEvent('click', function(event){
			event.stop();
			this.blur();
			hasClicked = true;
			$$('#projPagination a').each(function(o){
				o.removeClass('active');
			});
			obj.addClass('active');
			loadPageContent(this.getProperty('href'));
			if (!navbgfixer) navbgfixer = setInterval(setNavBGPos, 2000);
		});
	});

	$$('.projNavItem a').each(function(obj){
		obj.addEvent('click', function(event){
			event.stop();
			$$('.projNavItem a').each(function(o){
				o.getParent().removeClass('activeProjNavItem');
			});
			this.getParent().addClass('activeProjNavItem');
			$$('#projPagination a').each(function(o){
				if ($$('.activeProjNavItem a')[0].href.match(/cat=[0-9]+/)){
					var newcat = $$('.activeProjNavItem a')[0].href.replace(/^[\s\S]+cat=([0-9]+)[\s\S]*$/i, '$1');
					if (o.href.match(/cat=/)){
						o.href = o.href.replace(/^([\s\S]+cat=)[0-9]+([\s\S]*)$/i, '$1' + newcat + '$2');
					} else {
						o.href += '&cat=' + newcat;
					}
				} else {
					o.href = o.href.replace(/[&]*cat=[0-9]*/i, '');
				}
			});
			loadPageContent(this.getProperty('href'));
		});
	});
	
});

window.addEvent('resize', function(){
	setNavBGPos();
});

function setNavBGPos(){
	//if (!hasClicked) return false;
	if (!$$('#mainNavDiv .activeNav')[0]) return;
	
	var aNav = $$('#mainNavDiv .activeNav')[0];
	var pos = aNav.getParent('div').getCoordinates();
	$('navItemBG').tween('width', pos.width);
	new Fx.Morph('navSlitShadow').start({
		'left': -25,
		'width': pos.width + 50
	});

	new Fx.Morph('navCornerLeft').start({
		'left': -11
	});
	new Fx.Morph('navCornerRight').start({
		'left': pos.width - 11
	});
	aNavBG.tween('left', pos.left);

	if (aNav.innerHTML.toLowerCase() == 'projects'){
		showProjSubnav();
	} else {
		hideProjSubnav();
	}
}

function initNavBGPos(){
	var pos = $$('#mainNavDiv .mainNavItem')[0].getCoordinates();
	$('navItemBG').setStyle('width', pos.width);
	new Fx.Morph('navSlitShadow').set({
		'width': pos.width + 50
	});
	
	new Fx.Morph('navCornerLeft').set({
		'left': -11
	});
	new Fx.Morph('navCornerRight').set({
		'left': pos.width - 11
	});
	//aNavBG.setStyle('left', pos.left);
	
	if ($$('#mainNavDiv .mainNavItem a.activeNav')[0]){
		switch($$('#mainNavDiv .mainNavItem a.activeNav')[0].innerHTML.toLowerCase()){
			case 'projects':
				showProjSubnav();
				setNavBGPos();
				rotateBGImage();
				initPageContent();
				window.scrollTo(0,100);
				navbgfixer = setInterval(setNavBGPos, 2000);
				break;
			case 'company':
				$$('#mainNavDiv .mainNavItem a.activeNav')[0].removeClass('activeNav');
				hideProjSubnav();
				break;
			default:
				setNavBGPos();
				rotateBGImage();
				initPageContent();
				navbgfixer = setInterval(setNavBGPos, 2000);
				hideProjSubnav();
				break;
		}
	}
}

function initTextFields(){
	var f = $$('input[type=text], textarea');
	if (f.length < 1) return false;
	$$('input[type=text], textarea').each(function(obj){
		obj.setProperty('label', obj.value);
		obj.addEvent('focus', function(){
			if (this.value == this.getProperty('label')) this.value = '';
		});
		obj.addEvent('blur', function(){
			if (this.value.length < 1) this.value = this.getProperty('label');
		});
	});
}

function loadPageContent(pgUrl){
	if (!pgUrl) return;
	var req = new Request({
		method: 'get',
		url: pgUrl,
		onRequest: function() {
			$('pageContent').tween('opacity', 0);
			rotateBGImage();
		},
		onComplete: function(response){
			response = stripTemplate(response);
			$('pageContent').innerHTML = '<div class="wrapped">' + response + '</div>';
			window.scrollTo(0,0);	
			$('pageContent').tween('opacity', 1);
			initPageContent();
			pageTracker._trackPageview(); // Track with Analytics
			
			if ($$('#mainNavDiv .mainNavItem a.activeNav')[0]){
				window.location.hash = $$('#mainNavDiv .mainNavItem a.activeNav')[0].getProperty('href');
				document.title = document.title.replace(/^(STAPLEGUN | )[\s\S]*$/i, '$1 | ' + $$('.mainNavItem a.activeNav')[0].innerHTML);
			}
			if ($$('.mainNavItem a.activeNav')[0].innerHTML.match(/projects/i)){
				totalProjCount = getTotalProjCount();
				insertMoreLink();
			}
		}
	}).send();
}

function stripTemplate(str){
	str = str.replace(/^[\s\S]+<div id="pageContent"><div class="wrapped">/i, '');
	str = str.replace(/<!--endPageContent-->[\s\S]+/i, '');
	return str;
}

function initPageContent(){
	initCompanySubnav();
	initTextFields();
	initContactSubmit();
}

function initCompanySubnav(){
	if ($$('.companySubnav').length < 1) return;
	var i = 0;
	$$('.companySubnav').each(function(obj){
		if (i == 0){
			obj.addClass('active');
			$('companyContent').innerHTML = obj.getElement('.content').innerHTML;
		}
		obj.getElement('.content').setStyle('display', 'none');
		obj.addEvent('click', function(){
			new Fx.Tween('companyContent').start('opacity', 0).chain(function(){
				$('companyContent').innerHTML = obj.getElement('.content').innerHTML;
				initFAQItems();
				this.start('opacity', 1);
			});
			$$('.companySubnav').each(function(o){
				if (o == obj) o.addClass('active');
				else o.removeClass('active');
			});
		});
		i++;
	});
}

function showProjSubnav(){
	new Fx.Tween('headerDiv').start('top', -150);
	new Fx.Tween('headerShadow').start('top', 60);
	new Fx.Tween('mainNavDiv').start('top', 15);
	new Fx.Tween('mainNavActiveMarkerDiv').start('top', 21);
	new Fx.Tween('pageContent').start('padding-top', 125);
}

function hideProjSubnav(){
	new Fx.Tween('headerDiv').start('top', 0);
	new Fx.Tween('headerShadow').start('top', 60 + 150);
	new Fx.Tween('mainNavDiv').start('top', 15 + 150);
	new Fx.Tween('mainNavActiveMarkerDiv').start('top', 21 + 150);
	new Fx.Tween('pageContent').start('padding-top', 250);
}

function rotateBGImage(){
	if (sgBGImgList.length < 1) return;
	var newIndx = Math.floor(Math.random() * sgBGImgList.length);
	new Fx.Tween('floodBG').start('opacity', 0).chain(function(){
		$('bgVidPlayer').setStyle('display', 'none');
		$$('#floodBG img')[0].src = sgBGImgList[newIndx].src;
		this.start('opacity', .16);
	});
}


function loadBGVideo(){
	$('pageContent').setStyle('opacity', 0);
	$('floodBG').setStyle('opacity', 1);
	$('bgVidPlayer').setStyles({
		'position': 'absolute',
		'top': 0,
		'left': 0,
		'height': '100%',
		'width': '100%',
		'overflow': 'visible'
	});
	$f('bgVidPlayer', {
		src: 'assets/flash/flowplayer-3.1.2.swf', 
		wmode: 'opaque'
	}, {
		clip: {
			'autoPlay': true
		},
		onBeforeFinish: function(){
			this.play(0);
			return false;
		},
		plugins: {
			'controls': null
		}
	});
}

function initContactSubmit(){
	if (!$('contactSubmit')) return;
	$('contactSubmit').addEvent('click', function(event){
		var req = new Request({
			method: 'post',
			url: 'index.php?id=175',
			onRequest: function(){
				$('pageContent').tween('opacity', 0);
				rotateBGImage();
			},
			onComplete: function(response){
				response = stripTemplate(response);
				$('pageContent').innerHTML = '<div class="wrapped">' + response + '</div>';
				$('pageContent').tween('opacity', 1);
			}
		}).send(generateFormData('contactForm'));
	});
}

function generateFormData(frmID){
	var f = $(frmID);
	var ret = '';
	f.getElements('input[type=text],textarea').each(function(o){
		if (ret.length) ret += '&';
		ret += o.name + '=' + o.value;
	});
	return ret;
}

function initFAQItems(){
	if ($$('#companyContent .faqItem').length > 0){
		$$('#companyContent .faqItem').each(function(obj){
			var fx = new Fx.Slide(obj.getElement('.faqAnswer')).hide();
			obj.store('faqFx', fx);
			obj.addEvent('click', function(){
				this.blur();
				this.retrieve('faqFx').toggle();
			});
		});
	}
}

function clearMoreLink(){
	var pc = $$('#pageContent .wrapped')[0];
	pc.innerHTML = pc.innerHTML.replace(/<!--startmore-->[\s\S]*<!--endmore-->/i, '');
	return pc;
}

var totalProjCount = 0;
function insertMoreLink(){
	var pc = clearMoreLink();
	if (totalProjCount > $$('.projectListing').length){
		pc.innerHTML += '<!--startmore--><div id="morestats"></div>';
		pc.innerHTML += '<div id="morelink">show more&gt;&gt;</div><!--endmore-->';
		$('morestats').innerHTML = 'Viewing ' + $$('.projectListing').length + ' of <span id="projcnt">' + totalProjCount + '</span>';
		$('projcnt').innerHTML = totalProjCount;
		$('morelink').addEvent('click', function(){
			loadMoreProjects();
		});
	}
}

function loadMoreProjects(){
	showLoading();
	var u = $$('.activeProjNavItem a')[0].getProperty('href');
	var offset = $$('.projectListing').length;
	if (u.match(/offset=/i)) u = u.replace(/offset=[0-9]*/i, 'offset='+offset);
	else u += '&offset=' + offset;
	var r = new Request({
		url: u,
		method: 'get',
		onComplete: function(resp){
			totalProjCount = getTotalProjCount(resp);
			resp = stripTemplate(resp);
			$$('#pageContent .wrapped')[0].innerHTML += resp;
			insertMoreLink();
			hideLoading();
		}
	}).send();
}

function getTotalProjCount(str){
	if (!str) str = document.body.innerHTML;
	return str.replace(/^[\s\S]*projCount=([0-9]+)[\s\S]*$/i, '$1');
}

function showLoading(){
	new Element('div', { id: 'siteOverlay' }).inject(document.body, 'bottom').setStyle('opacity', 0);
	new Element('div', { id: 'sgLoading' }).inject(document.body, 'bottom').setStyle('opacity', 0);
	$('siteOverlay').fade(.93);
	$('sgLoading').fade(1);
}

function hideLoading(){
	$('sgLoading').fade(0);
	new Fx.Tween('siteOverlay').start('opacity', 0).chain(function(){
		$('siteOverlay').destroy();
	});
}

/* SOCIAL SHARING LINKS */
function AddToTwitter(url){
	window.open('http://twitter.com/home?status='+url, 'twitter', 'toolbar=no,width=550,height=550');
}

function AddToDelicious(url, title){
	window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+url+'&amp;title='+title, 'delicious','toolbar=no,width=550,height=550');
}

function AddToFacebook(url){
	window.open('http://www.facebook.com/sharer.php?u='+url, 'facebook', 'toolbar=no,width=550,height=550');
}

function AddToDigg(url){
	window.open('http://www.digg.com/submit?phase=2&amp;url='+url, 'facebook', 'toolbar=no,width=550,height=550');
}