/**
 * @author Bully
 */

var baseURL = "";
var features = [];

var minW = 1024;
var currFeature = 0;
var controlsDelay = !KISS ? 1700 : 600;

var featureDuration = 1100;
var featureDelay = 1200;

var imageDuration = 1100;
var imageDelay = 400;
var imageStartX = 100;
var imageEndX = 0;

var headlineDuration = 1300;
var headlineDelay = 800;
var headlineStartX = 50;
var headlineEndX = 0;

var startOpacity = 0;
var endOpacity = 1;

var featureActive = false;
var isTransitioning = false;
var imagesLoaded = 0;
var preloadQueue = [];

$(document).ready(function() {
	// #feature-headline
	// #image-container
	// #feature-callout-container
	onBrowserResizeFreshness(minW);
	
	$(window).resize(function(evt) {
	  onBrowserResizeFreshness(minW);
	});

	/*
	 * pick feature to show preload feature image + headline slide
	 * in start timer
	 * 
	 */

	currFeature = Math.floor( Math.random()*(features.length) );

	$("#feature-controls-container h5").css( {
		opacity : 0.5
	});
	$("#feature-controls-container").css( {
		opacity : 0
	});
	$("#preload-container").css( {
		opacity : 0
	});
	clearCalloutText();
	showFeature(currFeature);

	// set hover actions for feature control buttons
	$('.feature-control-btn')
			.hover(
					function() {
						$(this)
								.find("img")
								.attr(
										"src",
										baseURL
												+ "images/work-gallery-nav-btn-SELECTED.png");
						return false;
					},
					function() {
						var num = getFeatureNum($(this).find("a")
								.attr("id"));
						if (num != currFeature)
							$(this)
									.find("img")
									.attr(
											"src",
											baseURL
													+ "images/work-gallery-nav-btn.png");
						return false;
					});

	// handle click of feature control buttons
	$('.feature-control-btn').click(function() {
		if (!isTransitioning) {
			var num = getFeatureNum($(this).find("a").attr("id"));
			showFeature(num);
			resetFeatureBtns(num);
		}
		return false;
	});

	// figure out how to cancel a load in progress

}); // END $(document).ready(function()


function onBrowserResizeFreshness(minW) {
	var w2 = $(window).width();
	$('#footer-content-container').width(w2);
		
	var h = $(document).height() - $('#footer-container').position().top;
	$('#footer-container').height(h);
}

// show a feature!
// animates + clears out content, shows preloader, preloads next
// content, then animates that in
function showFeature($num) {
	currFeature = $num < features.length ? $num : 0;

	if (featureActive) {
		isTransitioning = true;
		animateOut(true);
		featureActive = false;
	} else {
		isTransitioning = true;
		featureActive = true;
		prepForAnimateIn();
		resetFeatureBtns();
		preloadImages();
	}
} // END showFeature()

function togglePreloader($flag) {
	var opacity = $flag ? 1 : 0;
	$('#preload-container').animate( {
		opacity : opacity
	}, {
		duration : 200,
		easing : "easeOutExpo"
	});

	if ($flag) {
		try {
			$('#home-preloader-swf').get(0).startAnimation();
		}
		catch (err) {
			
		}
	}
}

function preloadImages() {
	// show preloader
	togglePreloader(true);

	// start preloading
	preloadQueue = [];
	preloadQueue.push(features[currFeature].headline);
	preloadQueue.push(features[currFeature].bg);

	$.preload(preloadQueue, {
		base : '',
		ext : '',
		onComplete : onPreloadImage,
		onFinish : onPreloadImagesComplete
	});

} // END preloadImages()

function onPreloadImage() {
	// imagesLoaded++;

	// if ( imagesLoaded == preloadQueue.length )
	// onPreloadImagesComplete();

} // END onPreloadImage()

function onPreloadImagesComplete($details) {
	// alert("failed images: " + $details.failed)
	imagesLoaded = 0;

	setImages();
	setCalloutText();

	// hide preloader
	togglePreloader(false);
	animateIn();

} // END onPreloadImagesComplete()

function prepForAnimateIn() {
	if (!KISS) {
		$("#image-container").css( {
			left : imageStartX + 'px',
			opacity : startOpacity
		});
		$("#feature-headline").css( {
			left : headlineStartX + 'px',
			opacity : startOpacity
		});
		$("#feature-callout-container").css( {
			top : "-10px",
			left : "0px",
			opacity : startOpacity
		});
	} else {
		// $("#image-container").hide();
		// $("#feature-headline").hide();
	}
}

/***************************************************************
 * 
 * ANIMATE FEATURE IN
 * 
 **************************************************************/

function animateIn() {
	// animate in feature image
	if (!KISS) {
		$('#image-container').delay(imageDelay).animate( {
			left : imageEndX,
			opacity : endOpacity
		}, {
			duration : imageDuration,
			easing : "easeOutExpo"
		}

		);

		// animate in feature headline
		$('#feature-headline').delay(headlineDelay).animate( {
			left : headlineEndX,
			opacity : endOpacity
		}, {
			duration : headlineDuration,
			easing : "easeOutExpo"
		});

		// animate in feature callout
		$('#feature-callout-container').delay(featureDelay)
				.animate( {
					top : 0,
					opacity : endOpacity
				}, {
					duration : featureDuration,
					easing : "easeOutExpo",
					complete : onTransitionInComplete
				}

				);
	} else {
		onTransitionInComplete();
		$("#image-container").removeClass("hidden");
		$("#feature-headline-img").removeClass("hidden");
		$("#feature-callout-container").removeClass("hidden");
		// $("#image-container").show();
		// $("#feature-headline").show();
	}

	$('#feature-controls-container').delay(controlsDelay)
			.animate( {
				opacity : 1.0
			}, {
				duration : 500,
				easing : "easeOutExpo"
			}

			);

} // END animateIn()

/***************************************************************
 * 
 * ANIMATE FEATURE OUT
 * 
 **************************************************************/

function animateOut(killThatshit) {
	// animate in feature image
	if (!KISS) {
		$('#image-container').delay(0).animate( {
			opacity : 0
		}, {
			duration : 300,
			easing : "easeOutExpo"
		}

		);

		// animate in feature headline
		$('#feature-headline').delay(0).animate( {
			opacity : 0
		}, {
			duration : 300,
			easing : "easeOutExpo"
		}

		);

		// animate in feature callout
		$('#feature-callout-container').delay(0).animate( {
			opacity : 0
		}, {
			duration : 300,
			easing : "easeOutExpo",
			complete : onTransitionOutComplete
		}

		);
	} else {
		// $("#image-container").hide();
		// $("#feature-headline").hide();
		$("#image-container").addClass("hidden");
		$("#feature-headline-img").addClass("hidden");
		$("#feature-callout-container").addClass("hidden");
		clearCalloutText();
		onTransitionOutComplete();
	}

} // END animateIn()

function onTransitionOutComplete() {
	featureActive = false;
	showFeature(currFeature);

} // END onTransitionOutComplete()

function onTransitionInComplete() {
	isTransitioning = false;

	try {
		$('#home-preloader-swf').get(0).stopAnimation();
	}
	catch ( err ) {
		
	}
} // END onTransitionComplete()

function setImages() {
	// if ( !KISS ) {
	if ( isIE6 ) {
		$("#image-container").css("filter",
			"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + features[currFeature].bg + ",sizingMethod='image')");
	}
	else {
		$("#image-container").css("background-image",
				"url(" + features[currFeature].bg + ")");
	}
	/*
	 * } else if (isIE8) {
	 * $("#image-container-inner").css("filter",
	 * "progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+features[currFeature].bg+",sizingMethod='crop');"); }
	 * else if (isIE7) {
	 * $("#image-container-inner").removeClass("png-fix");
	 * $("#image-container-inner").css("background-image",
	 * "url("+ features[currFeature].bg + ")");
	 * $("#image-container-inner").addClass("png-fix"); }
	 */

	if ( isIE6 ) {
		$("#feature-headline-img").css("filter",
				"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + features[currFeature].headline + ",sizingMethod='image')");
	}
	else {
		$("#feature-headline-img").attr("src",
			features[currFeature].headline);
	}
}

function clearImages() {
	$("#image-container").css("background-image", "none");
	$("#feature-headline-img").attr("src", "");
}

function setCalloutText() {
	// #feature-callout-text
	// #feature-callout-container h4
	// #feature-callout-button a
	// #feature-callout-button span

	$("#feature-callout-text").text(features[currFeature].desc);
	$("#feature-callout-container h4").text(
			features[currFeature].subheader);
	$("#feature-callout-button a").attr("href",
			features[currFeature].link_url);
	$("#feature-callout-button span").text(
			features[currFeature].link_title);
} // END setCalloutText

function clearCalloutText() {
	$("#feature-callout-text").text("");
	$("#feature-callout-container h4").text("");
	$("#feature-callout-button a").attr("href", "#");
	$("#feature-callout-button span").text("");
}

function resetFeatureBtns() {
	$
			.each(
					$('.feature-control-btn'),
					function() {
						var num = getFeatureNum($(this).find(
								"a").attr("id"));
						if (num != currFeature)
							$(this)
									.find("img")
									.attr(
											"src",
											baseURL
													+ "images/work-gallery-nav-btn.png");
						else
							$(this)
									.find("img")
									.attr(
											"src",
											baseURL
													+ "images/work-gallery-nav-btn-SELECTED.png");
					});
} // END resetFeatureBtns ()

function getFeatureNum($id) {
	return $id.split("feature-control-btn-")[1] - 1;
} // END getFeatureNum()
