// ColorBox v1.3.9 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
// c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
(function(b,gb){var v="none",t="click",N="LoadedContent",d=false,x="resize.",o="y",u="auto",f=true,M="nofollow",q="on",n="x";function e(a,c){a=a?' id="'+k+a+'"':"";c=c?' style="'+c+'"':"";return b("<div"+a+c+"/>")}function p(a,b){b=b===n?m.width():m.height();return typeof a==="string"?Math.round(a.match(/%/)?b/100*parseInt(a,10):parseInt(a,10)):a}function Q(c){c=b.isFunction(c)?c.call(h):c;return a.photo||c.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i)}function cb(){for(var c in a)if(b.isFunction(a[c])&&c.substring(0,2)!==q)a[c]=a[c].call(h);a.rel=a.rel||h.rel||M;a.href=a.href||b(h).attr("href");a.title=a.title||h.title}function db(d){h=d;a=b.extend({},b(h).data(r));cb();if(a.rel!==M){i=b("."+H).filter(function(){return (b(this).data(r).rel||this.rel)===a.rel});g=i.index(h);if(g===-1){i=i.add(h);g=i.length-1}}else{i=b(h);g=0}if(!w){w=F=f;R=h;try{R.blur()}catch(e){}b.event.trigger(hb);a.onOpen&&a.onOpen.call(h);y.css({opacity:+a.opacity,cursor:a.overlayClose?"pointer":u}).show();a.w=p(a.initialWidth,n);a.h=p(a.initialHeight,o);c.position(0);S&&m.bind(x+O+" scroll."+O,function(){y.css({width:m.width(),height:m.height(),top:m.scrollTop(),left:m.scrollLeft()})}).trigger("scroll."+O)}T.add(I).add(J).add(z).add(U).hide();V.html(a.close).show();c.slideshow();c.load()}var eb={transition:"elastic",speed:300,width:d,initialWidth:"600",innerWidth:d,maxWidth:d,height:d,initialHeight:"450",innerHeight:d,maxHeight:d,scalePhotos:f,scrolling:f,inline:d,html:d,iframe:d,photo:d,href:d,title:d,rel:d,opacity:.9,preloading:f,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",open:d,loop:f,slideshow:d,slideshowAuto:f,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:d,onLoad:d,onComplete:d,onCleanup:d,onClosed:d,overlayClose:f,escKey:f,arrowKey:f},r="colorbox",k="cbox",hb=k+"_open",P=k+"_load",W=k+"_complete",X=k+"_cleanup",fb=k+"_closed",G=b.browser.msie&&!b.support.opacity,S=G&&b.browser.version<7,O=k+"_IE6",y,j,E,s,Y,Z,ab,bb,i,m,l,K,L,U,T,z,J,I,V,C,D,A,B,h,R,g,a,w,F,c,H=k+"Element";c=b.fn[r]=b[r]=function(c,d){var a=this;if(!a[0]&&a.selector)return a;c=c||{};if(d)c.onComplete=d;if(!a[0]||a.selector===undefined){a=b("<a/>");c.open=f}a.each(function(){b(this).data(r,b.extend({},b(this).data(r)||eb,c)).addClass(H)});c.open&&db(a[0]);return a};c.init=function(){var h="hover";m=b(gb);j=e().attr({id:r,"class":G?k+"IE":""});y=e("Overlay",S?"position:absolute":"").hide();E=e("Wrapper");s=e("Content").append(l=e(N,"width:0; height:0"),L=e("LoadingOverlay").add(e("LoadingGraphic")),U=e("Title"),T=e("Current"),J=e("Next"),I=e("Previous"),z=e("Slideshow"),V=e("Close"));E.append(e().append(e("TopLeft"),Y=e("TopCenter"),e("TopRight")),e().append(Z=e("MiddleLeft"),s,ab=e("MiddleRight")),e().append(e("BottomLeft"),bb=e("BottomCenter"),e("BottomRight"))).children().children().css({"float":"left"});K=e(d,"position:absolute; width:9999px; visibility:hidden; display:none");b("body").prepend(y,j.append(E,K));s.children().hover(function(){b(this).addClass(h)},function(){b(this).removeClass(h)}).addClass(h);C=Y.height()+bb.height()+s.outerHeight(f)-s.height();D=Z.width()+ab.width()+s.outerWidth(f)-s.width();A=l.outerHeight(f);B=l.outerWidth(f);j.css({"padding-bottom":C,"padding-right":D}).hide();J.click(c.next);I.click(c.prev);V.click(c.close);s.children().removeClass(h);b("."+H).live(t,function(a){if(a.button!==0&&typeof a.button!=="undefined"||a.ctrlKey||a.shiftKey||a.altKey)return f;else{db(this);return d}});y.click(function(){a.overlayClose&&c.close()});b(document).bind("keydown",function(b){if(w&&a.escKey&&b.keyCode===27){b.preventDefault();c.close()}if(w&&a.arrowKey&&!F&&i[1])if(b.keyCode===37&&(g||a.loop)){b.preventDefault();I.click()}else if(b.keyCode===39&&(g<i.length-1||a.loop)){b.preventDefault();J.click()}})};c.remove=function(){j.add(y).remove();b("."+H).die(t).removeData(r).removeClass(H)};c.position=function(f,b){function c(a){Y[0].style.width=bb[0].style.width=s[0].style.width=a.style.width;L[0].style.height=L[1].style.height=s[0].style.height=Z[0].style.height=ab[0].style.height=a.style.height}var e,h=Math.max(m.height()-a.h-A-C,0)/2+m.scrollTop(),g=Math.max(m.width()-a.w-B-D,0)/2+m.scrollLeft();e=j.width()===a.w+B&&j.height()===a.h+A?0:f;E[0].style.width=E[0].style.height="9999px";j.dequeue().animate({width:a.w+B,height:a.h+A,top:h,left:g},{duration:e,complete:function(){c(this);F=d;E[0].style.width=a.w+B+D+"px";E[0].style.height=a.h+A+C+"px";b&&b()},step:function(){c(this)}})};c.resize=function(b){if(w){b=b||{};if(b.width)a.w=p(b.width,n)-B-D;if(b.innerWidth)a.w=p(b.innerWidth,n);l.css({width:a.w});if(b.height)a.h=p(b.height,o)-A-C;if(b.innerHeight)a.h=p(b.innerHeight,o);if(!b.innerHeight&&!b.height){b=l.wrapInner("<div style='overflow:auto'></div>").children();a.h=b.height();b.replaceWith(b.children())}l.css({height:a.h});c.position(a.transition===v?0:a.speed)}};c.prep=function(o){var d="hidden";function n(t){var o,q,s,n,d=i.length,e=a.loop;c.position(t,function(){function t(){G&&j[0].style.removeAttribute("filter")}if(w){G&&p&&l.fadeIn(100);a.iframe&&b("<iframe frameborder=0"+(a.scrolling?"":" scrolling='no'")+(G?" allowtransparency='true'":"")+"/>").attr({src:a.href,name:(new Date).getTime()}).appendTo(l);l.show();U.show().html(a.title);if(d>1){T.html(a.current.replace(/\{current\}/,g+1).replace(/\{total\}/,d)).show();J[e||g<d-1?"show":"hide"]().html(a.next);I[e||g?"show":"hide"]().html(a.previous);o=g?i[g-1]:i[d-1];s=g<d-1?i[g+1]:i[0];if(a.slideshow){z.show();g===d-1&&!e&&j.is("."+k+"Slideshow_on")&&z.click()}if(a.preloading){n=b(s).data(r).href||s.href;q=b(o).data(r).href||o.href;if(Q(n))b("<img/>")[0].src=n;if(Q(q))b("<img/>")[0].src=q}}L.hide();a.transition==="fade"?j.fadeTo(f,1,function(){t()}):t();m.bind(x+k,function(){c.position(0)});b.event.trigger(W);a.onComplete&&a.onComplete.call(h)}})}if(w){var p,f=a.transition===v?0:a.speed;m.unbind(x+k);l.remove();l=e(N).html(o);l.hide().appendTo(K.show()).css({width:function(){a.w=a.w||l.width();a.w=a.mw&&a.mw<a.w?a.mw:a.w;return a.w}(),overflow:a.scrolling?u:d}).css({height:function(){a.h=a.h||l.height();a.h=a.mh&&a.mh<a.h?a.mh:a.h;return a.h}()}).prependTo(s);K.hide();b("#"+k+"Photo").css({cssFloat:v});S&&b("select").not(j.find("select")).filter(function(){return this.style.visibility!==d}).css({visibility:d}).one(X,function(){this.style.visibility="inherit"});a.transition==="fade"?j.fadeTo(f,0,function(){n(0)}):n(f)}};c.load=function(){var j,d,q,m=c.prep;F=f;h=i[g];a=b.extend({},b(h).data(r));cb();b.event.trigger(P);a.onLoad&&a.onLoad.call(h);a.h=a.height?p(a.height,o)-A-C:a.innerHeight&&p(a.innerHeight,o);a.w=a.width?p(a.width,n)-B-D:a.innerWidth&&p(a.innerWidth,n);a.mw=a.w;a.mh=a.h;if(a.maxWidth){a.mw=p(a.maxWidth,n)-B-D;a.mw=a.w&&a.w<a.mw?a.w:a.mw}if(a.maxHeight){a.mh=p(a.maxHeight,o)-A-C;a.mh=a.h&&a.h<a.mh?a.h:a.mh}j=a.href;L.show();if(a.inline){e("InlineTemp").hide().insertBefore(b(j)[0]).bind(P+" "+X,function(){b(this).replaceWith(l.children())});m(b(j))}else if(a.iframe)m(" ");else if(a.html)m(a.html);else if(Q(j)){d=new Image;d.onload=function(){var e;d.onload=null;d.id=k+"Photo";b(d).css({margin:u,border:v,display:"block",cssFloat:"left"});if(a.scalePhotos){q=function(){d.height-=d.height*e;d.width-=d.width*e};if(a.mw&&d.width>a.mw){e=(d.width-a.mw)/d.width;q()}if(a.mh&&d.height>a.mh){e=(d.height-a.mh)/d.height;q()}}if(a.h)d.style.marginTop=Math.max(a.h-d.height,0)/2+"px";setTimeout(function(){m(d)},1);i[1]&&(g<i.length-1||a.loop)&&b(d).css({cursor:"pointer"}).click(c.next);if(G)d.style.msInterpolationMode="bicubic"};d.src=j}else e().appendTo(K).load(j,function(c,a,b){m(a==="error"?"Request unsuccessful: "+b.statusText:this)})};c.next=function(){if(!F){g=g<i.length-1?g+1:0;c.load()}};c.prev=function(){if(!F){g=g?g-1:i.length-1;c.load()}};c.slideshow=function(){function f(){z.text(a.slideshowStop).bind(W,function(){d=setTimeout(c.next,a.slideshowSpeed)}).bind(P,function(){clearTimeout(d)}).one(t,function(){e()});j.removeClass(b+"off").addClass(b+q)}var e,d,b=k+"Slideshow_";z.bind(fb,function(){z.unbind();clearTimeout(d);j.removeClass(b+"off "+b+q)});e=function(){clearTimeout(d);z.text(a.slideshowStart).unbind(W+" "+P).one(t,function(){f();d=setTimeout(c.next,a.slideshowSpeed)});j.removeClass(b+q).addClass(b+"off")};if(a.slideshow&&i[1])a.slideshowAuto?f():e()};c.close=function(){if(w){w=d;b.event.trigger(X);a.onCleanup&&a.onCleanup.call(h);m.unbind("."+k+" ."+O);y.fadeTo("fast",0);j.stop().fadeTo("fast",0,function(){j.find("iframe").attr("src","about:blank");l.remove();j.add(y).css({opacity:1,cursor:u}).hide();try{R.focus()}catch(c){}setTimeout(function(){b.event.trigger(fb);a.onClosed&&a.onClosed.call(h)},1)})}};c.element=function(){return b(h)};c.settings=eb;b(c.init)})(jQuery,this)

/*
 * stickyfloat - jQuery plugin for verticaly floating anything in a constrained area
 * 
 * Example: jQuery('#menu').stickyfloat({duration: 400});
 * parameters:
 * 		duration 	- the duration of the animation
 *		startOffset - the amount of scroll offset after it the animations kicks in
 *		offsetY		- the offset from the top when the object is animated
 *		lockBottom	- 'true' by default, set to false if you don't want your floating box to stop at parent's bottom
 * $Version: 05.16.2009 r1
 * Copyright (c) 2009 Yair Even-Or
 * vsync.design@gmail.com
 */

$.fn.stickyfloat = function(options, lockBottom) {
	var $obj 				= this;
	var parentPaddingTop 	= parseInt($obj.parent().css('padding-top'));
	var startOffset 		= $obj.parent().offset().top;
	var opts 				= $.extend({ startOffset: startOffset, offsetY: parentPaddingTop, duration: 200, lockBottom:true }, options);
	
	$obj.css({ position: 'absolute' });
	
	if(opts.lockBottom){
		var bottomPos = $obj.parent().height() - $obj.height() + parentPaddingTop; //get the maximum scrollTop value
		if( bottomPos < 0 )
			bottomPos = 0;
	}
	
	$(window).scroll(function () { 
		$obj.stop(); // stop all calculations on scroll event

		var pastStartOffset			= $(document).scrollTop() > opts.startOffset;	// check if the window was scrolled down more than the start offset declared.
		var objFartherThanTopPos	= $obj.offset().top > startOffset;	// check if the object is at it's top position (starting point)
		var objBiggerThanWindow 	= $obj.outerHeight() < $(window).height();	// if the window size is smaller than the Obj size, then do not animate.
		
		// if window scrolled down more than startOffset OR obj position is greater than
		// the top position possible (+ offsetY) AND window size must be bigger than Obj size
		if( (pastStartOffset || objFartherThanTopPos) && objBiggerThanWindow ){ 
			var newpos = ($(document).scrollTop() -startOffset + opts.offsetY );
			if ( newpos > bottomPos )
				newpos = bottomPos;
			if ( $(document).scrollTop() < opts.startOffset ) // if window scrolled < starting offset, then reset Obj position (opts.offsetY);
				newpos = parentPaddingTop;

			$obj.animate({ top: newpos }, opts.duration );
		}
	});
};

/*  Transpose v0.90 - jQuery-powered plugin that transitions list items automatically, manually on user-demand, or both.
 *	Verified by JSLint, The Good Parts (http://www.jslint.com/)	
 *	
 	v0.91 - Slight Code Optimization.  Completely made motion type modular.
 */

/*global $: false clearInterval: false document: false setInterval: false Transpose: false Transpose: true jQuery: false*/

"use strict";

(function ($) {	
	$.fn.transpose = function (options) {
		return this.each(function () {
			if ($(this).data('transpose')) {
				return;
			}
			var settings = new Transpose.setup(this, options);
			transpose = $(this).data('settings', settings);
			Transpose.launch(settings);			
		});		
	};	
	var Transpose = {		
		setup: function (element, options) {
			element = "#" + $(element.id).selector;
			var defaults = {
				automatic: true,
				autoRestart: true,
				targetId: element,
				motion: 'fade',
				motionTimer: 'fast',
				nextId: 'target-right',
				paginator: false,
				paginatorCurrent: 'current',
				paginatorId: 'paginator',
				paginatorLabel: false,
				prevId: 'target-left',
				prevNext: false,
				timer: 10000
			},
		    config = $.extend(defaults, options || {});
			return config;
		},	
		launch: function (settings) {
			this.settings = settings;
			this.motion.determine();
			this.targetCount = $(settings.targetId + " > li").size();
			$(settings.targetId + ' li:not(:first)').hide();
			$(settings.targetId + ' li:first').show().addClass('active');
			if (settings.automatic) {
				Transpose.startTimer(settings.timer);
			}
			if (settings.prevNext) {
				Transpose.prevNext();
			}
			if (settings.paginator) {
				this.paginator.buildPaginator();
			}
		},
		
		// function to fade out, swap the image, increase the index and fade in the image 
		autoSperse: function () { 
			Transpose.motion.chosen();
		},
		
		index: {
			currentIndex: 1,
			modifyIndex: function (selectedBanner, alteredIndex) {
				if (alteredIndex !== undefined) {
					if ($(Transpose.settings.targetId + " :animated").length > 0) {
						return false;
					}
					else {					
						if (alteredIndex === -1) {
							alteredIndex = Transpose.targetCount - 1;
							selectedBanner = $(Transpose.settings.targetId + " li").eq(alteredIndex);
						}
						else if (alteredIndex === -2) {
							alteredIndex = Transpose.targetCount - 2;
							selectedBanner = $(Transpose.settings.targetId + " li").eq(alteredIndex);
						}
						
						Transpose.index.currentIndex = alteredIndex + 1;
						//Index Precaution - Don't let the index be greater than the total number of targets minus one and don't let the index fall below 0.
						if (Transpose.index.currentIndex > Transpose.targetCount - 1) {
							Transpose.index.currentIndex = 0;
						}
						else if (Transpose.index.currentIndex < 0) {
							Transpose.index.currentIndex = Transpose.targetCount - 1;
						}
						else {
							Transpose.index.currentIndex = alteredIndex + 1;
						}
						Transpose.motion.chosen(selectedBanner, alteredIndex);
					}
				}
				else {			
					this.currentIndex += 1;
					if (this.currentIndex === Transpose.targetCount) { 
						this.currentIndex = 0; 
					}
				}			
			}
		},
		 
		motion: {
			chosen: '',
			determine: function () {
				switch (Transpose.settings.motion) {
					case "fade":
						Transpose.motion.chosen = Transpose.motion.fade;
					break;
					default:
						Transpose.motion.chosen = "failed";
				}
			},
			fade: function (selectedBanner, alteredIndex) {
				var activeTarget = $(Transpose.settings.targetId + " li.active");
				// first fade the image out
				activeTarget.fadeTo(Transpose.settings.motionTimer, 0, function () {
					Transpose.updateStatus.target(this);
					Transpose.updateStatus.paginator(alteredIndex);
					if (selectedBanner === undefined) {
						$(Transpose.settings.targetId + " li").eq(Transpose.index.currentIndex).show().fadeTo(Transpose.settings.motionTimer, 1, function () {
							Transpose.updateStatus.target(this);			
							// Index Manipulation
							Transpose.index.modifyIndex();
						});		
					}
					else {
						//Fade the image in.
						$(selectedBanner).show().fadeTo(Transpose.settings.motionTimer, 1, function () {
							Transpose.updateStatus.target(this);	
							if (Transpose.settings.autoRestart) {
								Transpose.startTimer(Transpose.settings.timer);
							}
						});
					}
				});	
			}
		},
				
		paginator: {
			buildPaginator: function () {
				this.panelCreator();
				this.assignButtons();
				$("#target0").parent().addClass(Transpose.settings.paginatorCurrent);
			},
			panelCreator: function () {
				//var targetController = document.createElement("ul"),
				var targetController = document.getElementById('hero-nav');
			    counter = 0;
				//targetController.id = Transpose.settings.paginatorId;	
				for (; counter < Transpose.targetCount; counter += 1) {
					this.nodeCreator(counter, targetController);
				}
				$(Transpose.settings.targetId).after(targetController);			
			},
			nodeCreator: function (counter, targetController) {
				//var targetAnchor = document.createElement("a"),
				//li = document.createElement("li");
				//targetAnchor.setAttribute('href', '#');
				var targetAnchors = document.getElementById('hero-nav').getElementsByTagName('a'),
				targetAnchor = targetAnchors[counter];
				targetAnchor.id = "target" + counter;
				//li.appendChild(targetAnchor);
				//targetController.appendChild(li);
				if (Transpose.settings.paginatorLabel) {
					this.nodeLabeler(targetAnchor, counter);
				}
			},
			nodeLabeler: function (targetAnchor, counter) {
				var anchorText = document.createTextNode(counter + 1);
				targetAnchor.appendChild(anchorText);
			},
			individualAssigner: function (i) {
				$("#target" + i).mouseenter(function () {
					if ($(this).parent().hasClass(Transpose.settings.paginatorCurrent)) {
						return false;
					}
					clearInterval(Transpose.timer);
					Transpose.index.modifyIndex($(Transpose.settings.targetId + " li").eq(i), i);
					return false;
				});
			},
			assignButtons: function () {
				for (var i = 0; i < Transpose.targetCount; i += 1) {
					this.individualAssigner(i);	
				}
			}
		},
		
		prevNext: function () {
			var prevButton = document.createElement("a"),
			nextButton = document.createElement("a");
			prevButton.id = Transpose.settings.prevId;
			prevButton.setAttribute('href', '#');
			$(Transpose.settings.targetId).append(prevButton);
			$("#" + Transpose.settings.prevId).click(function () {
				clearInterval(Transpose.timer);
				Transpose.index.modifyIndex($(Transpose.settings.targetId + " li").eq(Transpose.index.currentIndex - 2), Transpose.index.currentIndex - 2);
				return false;
			});
			nextButton.id = Transpose.settings.nextId;
			nextButton.setAttribute('href', '#');
			$(Transpose.settings.targetId).append(nextButton);
			$("#" + Transpose.settings.nextId).click(function () {
				clearInterval(Transpose.timer);
				Transpose.index.modifyIndex($(Transpose.settings.targetId + " li").eq(Transpose.index.currentIndex), Transpose.index.currentIndex);
				return false;
			});
		},
		
		//Method that invokes the timer used to automatically swap images
		startTimer: function (milliseconds) {
			clearInterval(Transpose.timer);
			Transpose.timer = setInterval(Transpose.autoSperse, Transpose.settings.timer);
		},
		
		updateStatus: {
			paginator: function (alteredIndex) {
				$("#" + Transpose.settings.paginatorId + " li a").parent().removeClass(Transpose.settings.paginatorCurrent);
				if (alteredIndex !== undefined) {
					$("#target" + alteredIndex).parent().addClass(Transpose.settings.paginatorCurrent);
				}
				else {
					$("#target" + Transpose.index.currentIndex).parent().addClass(Transpose.settings.paginatorCurrent);
				}
			},
			target: function (target) {
				$(target).toggleClass('active');
			}		
		}		
	};
}(jQuery));

var heroLinkAssigner = function (heroNumber) {
	$("#heroLink" + heroNumber).mouseover(function () {
		$("#hero-nav li.active").removeClass("active");
		$("#heroLink" + heroNumber).parent().addClass("active");
		$("#hero-images li.active").removeClass("active").hide();
		$("#heroImage" + heroNumber).parent().addClass("active").show();
	});
}

$(document).ready(function () {
	
	$('#hero-images').transpose({
		autoRestart: true,
		motionTimer: 0,
		paginator: true,
		paginatorCurrent: 'active',
		paginatorId: 'hero-nav',
		timer: 7000 
	});
	
	// Dynamic Fixed Quick Form
	var fixedName = 'quick-contact-fixed',
	placeholder = $('#quick-contact-holder'),
	quickForm = $('#quick-contact'),  //Height is 353
	viewport = $(window),
	bottomOffset = $('#footer-wrapper').height(),  //100
	pageHeight = $('body').height(),  //1786
	containerHeight = $('#container').height(); //1646
	
	if (quickForm.length > 0) {
	
		viewport.bind(
			'scroll resize',
			function () {
				var placeholderTop = placeholder.offset().top,
				viewportTop = viewport.scrollTop();
				if ((viewportTop > placeholderTop) && viewport.height() > quickForm.height()) {
					placeholder.height(placeholder.height());
					quickForm.css({
						'position' : 'fixed',
						'top' : 0
					});
				}
				else if (viewportTop <= placeholderTop) {
					placeholder.css('height', 'auto');
					quickForm.css({
						'position' : 'static'
					})				
				}
			}
		);
	
	}
	
	//$('#right-column').stickyfloat({ duration: 800 });
	$('a.modal').colorbox();
	$('table.data tbody tr:even, table.specs tbody tr:even').addClass('altRow');
	
});
