$(document).ready(function(){
	//top nav tooltips
	if (!$.browser.msie || jQuery.browser.version > 6){
		$('ul.top-nav li:not(.active) a').each(function(){
			jA = $(this);
			jA.append('<div class="toptip-top"><div class="toptip-bot2"><div class="toptip-mid"><div class="toptip-bot1"><div class="toptip">'+ jA.attr('title') +'</div></div></div></div></div>'
					).removeAttr('title'
					).mouseover(function(){$('.toptip-top',this).css('left',Math.round(($(this).width() / 2)-104.5)+'px').show();}
					).mouseout(function(){$('.toptip-top',this).hide();})
		});
		$('ul.top-nav li.active a').removeAttr('title');
	}
	
	//read-more hide/show divs
	$('div.read-more').hide().each(function(i){
		jEl = $(this);
		bInline = jEl.hasClass('inline');
		bOneOff = jEl.hasClass('oneoff');
		strId = jEl.attr('id');
		if (!strId || !strId.length || strId.length == 0) {
			strId='divReadMore-'+i;
			jEl.attr('id',strId);
		}
		strTitle = jEl.attr('title');
		strOneOff = (bOneOff) ? ' oneoff' : '';
		jEl.removeAttr('title');
		strTitle = (strTitle && strTitle.length && strTitle.length > 0) ? strTitle : ((bInline) ? 'more...' : 'Read More...');
		strAltTitle = ((bInline) ? '...less' : '...Read less');
		strHTML = '<a href="#'+strId+'" class="read-more'+strOneOff+'" title="'+strTitle+'" alttitle="'+strAltTitle+'">'+strTitle+'</a>';
		if (bInline) {
			jEl.prev().append(' '+ strHTML);
		} else {
			jEl.before('<p>'+ strHTML +'</p>');
		}
	});
	$('a.read-more').click(function(){
		jEl = $(this);
		if (jEl.hasClass('open')){
			$(this.hash).slideUp('slow');
			jEl.removeClass('open');
			try{pageTracker._trackEvent('ReadMoreLess', 'Less', this.hash);}catch(e){}
		} else {
			$(this.hash).slideDown('slow');
			jEl.addClass('open');
			try{pageTracker._trackEvent('ReadMoreLess', 'More', this.hash);}catch(e){}
		}
		if (jEl.hasClass('oneoff')) {
			jEl.remove();
			return false;			
		}
		strTitle = jEl.attr('alttitle');
		jEl.html(strTitle);
		jEl.attr('alttitle',jEl.attr('title'));
		jEl.attr('title',strTitle);
		return false;
	});
	
	//ie only links
	if (!$.browser.msie){
		$('a.ieonly').attr('href','javascript:void(0);').addClass('disabled').append(' (unavailable in this browser, requires Internet Explorer)');
	}
	
	$('.anti-scroll').each(function(){
		var iOffset = $(this).offset().top;
		$(this).attr('iOffset',iOffset);
	});
	
	$(window).bind('scrollstop',function(){
		var iWindowScrollTop = $(window).scrollTop();
		$('.anti-scroll').each(function(){
			var jThis = $(this);
			var iScrollTo = (iWindowScrollTop - jThis.attr('iOffset')) + 15;
			if (iScrollTo <= 0) {
				jThis.animate({top:'0px'},100,null,function(){jThis.css('position','static');});
			} else {
				var strScrollTo = iScrollTo + 'px';
				jThis.css('position','relative').animate({top:strScrollTo},100);
			}
		});
	});
	
	toScrolling = null;
	$(window).scroll(function(){
		if (toScrolling) window.clearTimeout(toScrolling);
		toScrolling = window.setTimeout('$(window).trigger("scrollstop")',250);
	});
	
	$('div.slides a').click(function(){
		if ($(this).hasClass('active')) return false;;
		$('div.slides div.slide.active').fadeOut().trigger('slide-end').removeClass('active');
		$('div.slides a.active').removeClass('active');
		$(this).addClass('active');
		$(this.hash).fadeIn('slow').trigger('slide-start').addClass('active');
		return false;
	});
	
	jExWinContainer = $('#exwin');
	if (jExWinContainer.length >0){
		//Inject UI Elements
		$('body').append('<div id="exwin_zoom"></div><div id="exwin_overlay"></div>');
		jExWinContainer.wrapInner('<div id="exwin_window"><div id="exwin_slide_frame"><div id="exwin_slides"></div></div></div>');
		$('#exwin_window').prepend('<a href="#close" id="exwin_window_close">Close</a><a href="#next" id="exwin_next">Next</a>');
		
		//Set Globals
		totalExampleSlides = $('#exwin_slides').children().length;
		currentExampleSlide = 1;
		slideWidth = 895;
		showAfter = true;
		slideFrameWidth = slideWidth * totalExampleSlides;
		
		strPaginationHtml = '<div id="exwin_pagination"><ul>';
		var slideId=0;
		$('#exwin_slides .exwin_slide').each(function(){
			slideId++;
			$(this).attr({rel:slideId,id:'slide_'+slideId});
			strPaginationHtml += '<li><a href="#" rel="'+slideId+'" id="page'+slideId+'">'+slideId+'</a></li>';
		});
		strPaginationHtml += '</ul></div>';
		$('#exwin_window').append(strPaginationHtml);
		var paginationLeft = 608 + (251 - (31 * totalExampleSlides))/2;
		$('#exwin_pagination').css('left',paginationLeft+'px');
		
		$('.projectquality .exwin_slide').each(function(){
			var index = $(this).attr('rel');
			$(this).append('<div class="exwin_ba-toggle">' +
				'<a href="#" class="before" rel="'+index+'">Before</a>' +
				'<a href="#" class="after" rel="'+index+'">After</a>' +
				'<div class="ba-arrow"></div>' +
			'</div>');
		});
		
		//Assign Clicks
		$('.exwin_launcher').click(openExampleWindow);
		$('#exwin_window_close').click(closeExampleWindow);
		$('#exwin_next').click(nextExample);
		
		$('#exwin_pagination ul a').click(function(){
			var index = $(this).attr('rel');
			goToSlide(index);
			return false;
		});
		
		$('.exwin_ba-toggle .before').click(function(){
			var index = $(this).attr('rel');
			showExampleBefore(index);
			return false;
		});
		
		$('.exwin_ba-toggle .after').click(function(){
			var index = $(this).attr('rel');
			showExampleAfter(index);
			return false;
		});
		$(document).keydown(function(e){
			if (e.keyCode == 27) closeExampleWindow();
		});
	} //if jExWinContainer
		
});

function openExampleWindow(e) {
	currentExampleSlide = 1;
	
	$('#exwin_pagination ul a').removeClass('current');
	$('#exwin_pagination ul a:first').addClass('current');
		
	var viewportHeight = $(window).height();
	var viewportWidth = $(window).width();
	var bodyHeight = $('body').height();
	var scrollTop = $(window).scrollTop();
	
	var exampleMarginTopEnd = ((viewportHeight - 584) / 2) + scrollTop;
	if (exampleMarginTopEnd < 0) exampleMarginTopEnd = 0;
	var exampleMarginTopStart = exampleMarginTopEnd + 60;
	
	zoomOffset = $('.exwin_launcher').offset();
	zoomStartX = zoomOffset.left + 10;
	zoomStartY = zoomOffset.top + 5;
	zoomEndX = (viewportWidth - 899)/2;
	zoomEndY = exampleMarginTopEnd;

	$('#exwin').css({'display':'block'});
	$('#exwin_overlay').css({'height':bodyHeight+'px'});
	$('#exwin_overlay').show();
	$('#exwin_slides').css({'left':'0px','width':slideFrameWidth+'px'});
	$('#exwin_window').css({'margin-top': exampleMarginTopEnd+'px'});
	
	$('#exwin_zoom').css({
		'left':zoomStartX+'px',
		'top':zoomStartY+'px',
		'width': '137px',
		'height': '110px'
	}).animate({
		left: zoomEndX+'px',
		top: zoomEndY+'px',
		width: '899px',
		height: '584px',
		opacity: 0.8
	},300,'easeOutQuad',function(){
		$('#exwin_window').show();
		setTimeout("$('#slide_'+currentExampleSlide+' .exwin_spotlight').fadeIn(1000)",700);
		setTimeout("showExampleAfter(currentExampleSlide)",1200);
		
		$('#exwin_zoom').css({'left':0,'top':0,'width':0,'height':0}).hide();
	});
	return false;
}

function showExampleAfter(slideIndex) {
	$('#slide_'+slideIndex+' .exwin_after').fadeIn(500);
	$('#slide_'+slideIndex+' .ba-arrow').animate({left:'104px'},500,'easeOutQuad');
	$('#slide_'+slideIndex+' .exwin_ba-toggle').addClass('after-state');
}

function showExampleBefore(slideIndex) {
	$('#slide_'+slideIndex+' .exwin_after').fadeOut(500);
	$('#slide_'+slideIndex+' .ba-arrow').animate({left:'41px'},500,'easeOutQuad');
	$('#slide_'+slideIndex+' .exwin_ba-toggle').removeClass('after-state');
	showAfter = false;
}

function closeExampleWindow() {
	$('.exwin_spotlight').hide();
	$('#exwin_window').hide();
	$('#exwin_overlay').hide();
	
	$('#exwin_zoom').show().css({
		'left':zoomEndX+'px',
		'top':zoomEndY+'px',
		'width': '899px',
		'height': '584px',
		'opacity': '0.6'
	}).animate({
		left: zoomStartX+'px',
		top: zoomStartY+'px',
		width: '137px',
		height: '110px',
		opacity: 0
	},300,'easeOutQuad',function(){
		$('#exwin_zoom').hide()
	});
	return false;
}

function nextExample() {
	if (currentExampleSlide == totalExampleSlides) {
		goToSlide(1);
	} else {
		goToSlide(parseInt(currentExampleSlide)+1);
	}
	return false;
}

function goToSlide(index) {
	showAfter = true;
	
	if (currentExampleSlide == index) return false;
	if (index > totalExampleSlides) return false;
	
	nextExampleSlide = index;
	positionPx = slideWidth * index - slideWidth;
	
	$('#exwin_slides').animate({left:'-'+positionPx+'px'},400,false,function(){
		$('#slide_'+nextExampleSlide+' .exwin_spotlight').fadeIn(1000);
			setTimeout('if (showAfter) { showExampleAfter(nextExampleSlide); } else { showAfter=true; }',1000);
	});
	
	$('#exwin_pagination ul a').removeClass('current');
	$('a#page'+index).addClass('current');
	
	currentExampleSlide = nextExampleSlide;
		
	return false;
}

function fnNextLI(strContext){
	jCurLI = $('li.active',$(strContext));
	jNextLI = jCurLI.next();
	if (jNextLI.length == 0) jNextLI = $('li:first',$(strContext));
	$(strContext)[0].toNext = setTimeout('fnNextLI("div#action-plan");',3000);
	$('img',jCurLI).fadeOut();
	jCurLI.removeClass('active');
	jNextLI.addClass('active');
	$('img',jNextLI).fadeIn();
}

// script adapted from Josh Fraser (http://www.onlineaspect.com)
function getLocalGMTOffset() {
	var rightNow = new Date();
	var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
	var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
	var temp = jan1.toGMTString();
	var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	temp = june1.toGMTString();
	var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
	var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
	var dst;
	if (std_time_offset == daylight_time_offset) {
		dst = "0"; // daylight savings time is NOT observed
	} else {
		// positive is southern, negative is northern hemisphere
		var hemisphere = std_time_offset - daylight_time_offset;
		if (hemisphere >= 0)
			std_time_offset = daylight_time_offset;
		dst = "1"; // daylight savings time is observed
	}
	return fnConvertTimeToOffset(std_time_offset)+","+dst;
}

function fnConvertTimeToOffset(value) {
	var hours = parseInt(value);
   	value -= parseInt(value);
	value *= 60;
	var mins = parseInt(value);
   	value -= parseInt(value);
	value *= 60;
	var secs = parseInt(value);
	var display_hours = hours;
	// handle GMT case (00:00)
	if (hours == 0) {
		display_hours = "00";
	} else if (hours > 0) {
		// add a plus sign and perhaps an extra 0
		display_hours = (hours < 10) ? "+0"+hours : "+"+hours;
	} else {
		// add an extra 0 if needed 
		display_hours = (hours > -10) ? "-0"+Math.abs(hours) : hours;
	}
	mins = (mins < 10) ? "0"+mins : mins;
	return display_hours+":"+mins;
}
