/* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ */
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutSine',
	
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	}
});
//SCROLLSCRIPTS
/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
/**
 * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/11/2009
 * @author Ariel Flesler
 * @version 1.2.7
 **/
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);
/**
 * jQuery[a] - Animated scrolling of series
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/20/2008
 * @author Ariel Flesler
 * @version 1.2.1
 *
 * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
 */
;(function($){var a='serialScroll',b='.'+a,c='bind',C=$[a]=function(b){$.scrollTo.window()[a](b)};C.defaults={duration:1e3,axis:'x',event:'click',start:0,step:1,lock:1,cycle:1,constant:1};$.fn[a]=function(y){y=$.extend({},C.defaults,y);var z=y.event,A=y.step,B=y.lazy;return this.each(function(){var j=y.target?this:document,k=$(y.target||this,j),l=k[0],m=y.items,o=y.start,p=y.interval,q=y.navigation,r;if(!B)m=w();if(y.force)t({},o);$(y.prev||[],j)[c](z,-A,s);$(y.next||[],j)[c](z,A,s);if(!l.ssbound)k[c]('prev'+b,-A,s)[c]('next'+b,A,s)[c]('goto'+b,t);if(p)k[c]('start'+b,function(e){if(!p){v();p=1;u()}})[c]('stop'+b,function(){v();p=0});k[c]('notify'+b,function(e,a){var i=x(a);if(i>-1)o=i});l.ssbound=1;if(y.jump)(B?k:w())[c](z,function(e){t(e,x(e.target))});if(q)q=$(q,j)[c](z,function(e){e.data=Math.round(w().length/q.length)*q.index(this);t(e,this)});function s(e){e.data+=o;t(e,this)};function t(e,a){if(!isNaN(a)){e.data=a;a=l}var c=e.data,n,d=e.type,f=y.exclude?w().slice(0,-y.exclude):w(),g=f.length,h=f[c],i=y.duration;if(d)e.preventDefault();if(p){v();r=setTimeout(u,y.interval)}if(!h){n=c<0?0:n=g-1;if(o!=n)c=n;else if(!y.cycle)return;else c=g-n-1;h=f[c]}if(!h||d&&o==c||y.lock&&k.is(':animated')||d&&y.onBefore&&y.onBefore.call(a,e,h,k,w(),c)===!1)return;if(y.stop)k.queue('fx',[]).stop();if(y.constant)i=Math.abs(i/A*(o-c));k.scrollTo(h,i,y).trigger('notify'+b,[c])};function u(){k.trigger('next'+b)};function v(){clearTimeout(r)};function w(){return $(m,l)};function x(a){if(!isNaN(a))return a;var b=w(),i;while((i=b.index(a))==-1&&a!=l)a=a.parentNode;return i}})}})(jQuery);

//END PLUGINS
//START PAGESCRIPTS
$(function() {
	
	function updateOrientation(){
		var orientation = window.orientation;

	    switch(orientation) {
	      case 90: case -90:
	        orientation = 'landscape';
	      break;
	      default:
	        orientation = 'portrait';
	    }
	}

	function getViewport() {
 
		if (typeof window.innerWidth != 'undefined')  {
			viewportwidth = window.innerWidth,
			viewportheight = window.innerHeight
		} else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0){
			viewportwidth = document.documentElement.clientWidth,
			viewportheight = document.documentElement.clientHeight
		} else {
			viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
			viewportheight = document.getElementsByTagName('body')[0].clientHeight
		}
	}
	
	function resetCufon() {
		Cufon.replace('#copyright span,h2', { fontFamily: 'mgh-alt', hover: true });
		Cufon.replace('h3,p,.text-promo h2, .text-promo h3, .text-promo p, .text-promo li, #navigation li a, div.fmi, .panel li.icn a', { fontFamily: 'mgh-base', hover: true });
	}
	
	$('#bg').css('visibility','visible');
	$('#pagewrap').css('visibility','visible');
	$('#imageScroller').css('visibility','visible');
	$('#navigation li:last-child a').css('padding-right', 0);
		
	var imagesWidth = 0;
	function setImageULWidth(){
		$('#images ul').each(function(){
			var iWidth = $(this).width();
			imagesWidth = imagesWidth + iWidth;
			$('#images').css ('width',imagesWidth);
		});
	}
	
	setImageULWidth();
	
	$('#imageScroller a').hover(function(){
		$(this).addClass('hover');
	}, function(){
		$(this).removeClass('hover');
	});
	
	var theWindow = $(window),
	$bg	= $('#bg'),
	$aspectRatio = $bg.width() / $bg.height(),
	$wrap = $('#pagewrap'),
	$scrollBlock = $('#imageScroller'),
	$scroller = $('#scroller');
	$images = $('#images'),
	$nav = $('#navigation'),
	$deviceAgent = navigator.userAgent.toLowerCase(),
	$agentID = $deviceAgent.match(/(iphone|ipod|ipad)/),

	$init = 0;
	wrapHeight = $wrap.height();
	var viewportwidth;
 	var viewportheight;
		
	if($agentID){
		$.event.add(theWindow, 'load', updateOrientation);
		$.event.add(theWindow, 'resize', updateOrientation);
	}
	
	$('#navigation a').click(function(){
		$init = 1;
		var newImage = $(this).attr('name');
		var className = $(this).attr('class').split(' ')[0];
		var activeID = $('#pagewrap').find('div.active').attr('id');
		clickAdvance(newImage,className,activeID);
	});
	
	$('#images-home a').click(function(){
		var newImage = $(this).attr('name');
		var className = $(this).attr('class').split(' ')[0];
		var activeID = $('#pagewrap').find('div.active').attr('id');
		clickAdvance(newImage,className,activeID);
	});
	
	$('.fmi a').click(function(){
		var newImage = $(this).attr('name');
		var className = $(this).attr('class').split(' ')[0];
		var activeID = $('#pagewrap').find('div.active').attr('id');
		clickAdvance(newImage,className,activeID);
	});
	
	function changeSection(newImage,className,activeID){
		$('#bg').clone().insertBefore('#bg').attr('id','temp');
		$("#bg").attr("src", newImage);
		resizeBg();
		$('#temp').fadeOut('slow', function(){$(this).remove();});
		$('#'+activeID).fadeOut('slow', function(){$(this).removeClass('active').addClass('inactive');});
		$('#'+className).fadeIn('slow',function(){$(this).removeClass('inactive').addClass('active');});
	}
	function stopScroll() {
    	$('#scroller').stop(true, false);  // Stops and dequeue's animations
	}
	function clickAdvance(newImage,className,activeID){
		if((activeID !== className) || className == null){
			$target = 'ul#images-' + className;
			$('#bg').clone().insertBefore('#bg').attr('id','temp');
			$("#bg").attr({src: newImage}).removeClass(activeID).addClass(className);
			resizeBg();
			$('#temp').fadeOut('slow', function(){$(this).remove();});
			$('#'+activeID).fadeOut('slow', function(){$(this).removeClass('active').addClass('inactive');});
			$('#'+className).fadeIn('slow',function(){$(this).removeClass('inactive').addClass('active');});
			//if ($.browser.msie) {} else {}
			$('#scroller').scrollTo($target, 1200,{axis:'x',easing: 'easeInOutSine', offset: $scrollOffset }).delay(1200);
			$('#navigation a.selected').removeClass('selected');
			$('#navigation a.'+className).addClass('selected');
			Cufon.replace('#navigation li a', { fontFamily: 'mgh-base', hover: true });
		}
	}
		    			    		
	function resizeBg() {
		if ( (theWindow.width() / theWindow.height()) < $aspectRatio ) {
			$bg.removeClass('bgheight bgwidth').addClass('bgheight');
		} else {
			$bg.removeClass('bgheight bgwidth').addClass('bgwidth');
		}
		$aspectRatio = $bg.width() / $bg.height();
	}
	
	function centerWrap() {
		getViewport();
		wrapHeight = $wrap.height();
		var newTop = Math.floor((theWindow.height() - wrapHeight) / 2);
		$newLeft = Math.floor((theWindow.width() - $wrap.width()) / 2);
		$scrollOffset = 0;
		
		if (newTop < 0) {newTop = 0;}
		
		setImageULWidth();
		setScrollerSpacing();
		
		$wrap.css('top',newTop);
		if(!$agentID){
			if(viewportwidth > 1220) {
				$scrollBlock.css('top', newTop + (wrapHeight * .429));
				$nav.css('left', $newLeft + (wrapHeight * 0.0438));
				$scroller.css('margin-left', $newLeft + (wrapHeight * 0.0438));
				if($init !== 0){
					$('#scroller').scrollTo($target, 0,{axis:'x',easing: 'easeInOutSine', offset: $scrollOffset }).delay(0);
				} else {
					$('#scroller').scrollTo('ul#images-home', 0,{axis:'x',easing: 'easeInOutSine', offset: $scrollOffset }).delay(0);
				}
			} else {
				$scroller.css('width', $scrollBlock.css('width') * .96);
				$scrollBlock.css('top', newTop + (wrapHeight * .394));
				$nav.css('left',  $newLeft + (wrapHeight * 0.0438));
				$scroller.css('margin-left',  $newLeft + (wrapHeight * 0.03));
				if($init !== 0){
					$('#scroller').scrollTo($target, 0,{axis:'x',easing: 'easeInOutSine', offset: $scrollOffset }).delay(0);
				} else {
					$('#scroller').scrollTo('ul#images-home', 0,{axis:'x',easing: 'easeInOutSine', offset: $scrollOffset }).delay(0);
				}
			}
		} else {
			$scrollBlock.css('width', '101%');
			$scroller.css('width', $scrollBlock.css('width') * .96);
			$scrollBlock.css('top', newTop + (wrapHeight * .4));
			$nav.css('left',  $newLeft + (wrapHeight * 0.03));
			$scroller.css('margin-left',  $newLeft + (wrapHeight * 0.03));
			$('#bg').css({ 'width': 1024, 'height': 768});
			$('#temp').css({ 'width': 1024, 'height': 768});
		}
		
	}
		                   			
	theWindow.resize(function() {
		resizeBg();
		centerWrap();
		resetCufon();
	}).trigger('resize');
	
	centerWrap();
});

function setScrollerSpacing(){
	$('#images .panel').each(function(){
		var panelWidth = $(this).width();
		var itemsWidth = 0;
		var liCount = 0;
		$(this).children('li').each(function(){
			$(this).css('margin',0);
			var objWidth = $(this).width();
			itemsWidth += objWidth;
			liCount++;
		});
		if(liCount > 0){
			var newTarget = liCount - 1;
			var extraSpace = (panelWidth - 5) - itemsWidth;
			var newMargin = extraSpace/newTarget;
			$(this).children('li').css({'margin-left' : newMargin});
			$(this).children('li:first').css({'margin-left' : 0, 'margin-right' : 0});
			$(this).children('li:last').css({'margin-right' : 0});
		}
	});
}

$('#navigation li a').hover(function(){Cufon.replace('#navigation li a', { fontFamily: 'mgh-base', hover: true });});

$(window).load(function(){
	setScrollerSpacing();
});
