// http://jdbartlett.github.com/innershiv | WTFPL License
window.innerShiv=(function(){var d,r;return function(h,u){if(!d){d=document.createElement('div');r=document.createDocumentFragment();/*@cc_on d.style.display = 'none'@*/}var e=d.cloneNode(true);/*@cc_on document.body.appendChild(e);@*/e.innerHTML=h.replace(/^\s\s*/, '').replace(/\s\s*$/, '');/*@cc_on document.body.removeChild(e);@*/if(u===false){return e.childNodes;}var f=r.cloneNode(true),i=e.childNodes.length;while(i--){f.appendChild(e.firstChild);}return f;}}());
if (window.console === undefined) { window.console = { log: function() {} }; }	
	
	// GLOBAL VARS
	var isIE = ($.browser.msie && ($.browser.version == "6.0" || $.browser.version == "7.0" || $.browser.version == "8.0"));
	var isIE9 = ($.browser.msie && ($.browser.version == "9.0"));
	var isIOS = (navigator.userAgent.match(/iPad/i) != null);
	
	var ANIMATION_SPEED = 300;
	var AUTO_SPEED = 12000;
	var autoScroll;
	var isAnimating = false;
	
	var featureTimer = null;
	var featureTime = 8000;
	
	var RecaptchaOptions = {
		theme : 'clean'
	};
	
	//- INIT
	$(document).ready(function() 
	{
		// YouTube
		if(isIOS)
		{
			$(".feature .chamber.video").remove();
			$(".callout_row .chamber.video").remove();
		}
		else
		{
			initYouTube();
		}
		
		if($(".feature").length > 0)
		{
			//HOME - ALIGN FEATURE
			$('.feature .chamber:last').prependTo('.feature .cylinder');
			var itemWidth = $('.feature').find(".chamber").outerWidth(true);
			$('.feature .cylinder').css({left: -(1 * itemWidth)});
			
			//HOME - FEATURE CLICK
			$(".feature .arrow").live("click", featureAdvance);
			$(".feature").mouseenter(showArrows).mouseleave(hideArrows);
			
			featureTimer = setInterval(autoSwitchFeature, featureTime);
		}
		
		//HOME - VT CALLOUT
		$(".virtual_tour .chamber").live("click", virtualTourAdvance);
		
		//REVOLER CLICKS
		$(".callout_row .arrow").live("click", calloutsAdvance).css({ display: "block", opacity: 0 });
		$(".callout_row").mouseenter(showCalloutArrows).mouseleave(hideCalloutArrows);
		
		if(isIOS)
		{
			$(".feature").trigger("mouseenter");
			$(".callout_row").trigger("mouseenter");
		}
		
		//REVOLVER SWIPES
		if(isIOS)
		{
			$(".revolver").swipe({
				swipe: revolverSwipe,
				threshold: 20,
				fingers: 1,
				allowPageScroll: "vertical"
			});
		}
		
		//MAGAZINE FEATURE
		$.doTimeout(8000, advanceMagazineFeature);
		
		//MAJORS/MINORS
		$("#mm-nav a").click(toggleMajorMinorSet);
		$("#mm-listing .item .schools .button").click(toggleMajorMinorItemDetails);
		$("#mm-search input").keyup(filterMajorMinorSet);
		$("#mm-search").submit(doFilterMajorMinorSet);
		$("#clear_search").click(clearSearch);
		
		// TIP & CANNON - LOAD MORE + JUMPER
		$(".load_more.cannon").click(loadAjaxPage);
		$(".load_more.tips").click(loadAjaxPage);
		$("select.jumper").change(jumperSelect);
		
		//MAGAZINE - CALLOUTS & POLLS
		fixIssueColumns();
		$(".poll_submit").submit(submitPollAnswer);
		$(".poll_submit .results").click(showPollResults);
		
		//ANCHOR LINKS
		$.localScroll({
			filter: ":not(.smartbox)",
			axis: 'y',
			offset: { left: 0, top: -65 },
			duration: 250
		});
		
		//SMARTBOX
		$("a.smartbox").smartbox({
			top: 150,
			fixed: true
		});
		
		//POP-GALLERY
		$(".pop_gallery").popGallery();
		
		//Add Link Context Icons
		$("section.content a").not(".callout_row a, .tweet a, .tips a").contextualize({
			exclude: ".button"
		});
	});
	
	
//-----------------------------------
//  FEATURE  -----------------------
//-----------------------------------
	
	function featureAdvance(e)
	{
		if(!isAnimating)
		{
			clearInterval(featureTimer);
			isAnimating = true;
			var target = $(this);
			var revolver = target.parents(".revolver");
			var trigger = revolver.find(".trigger");
			var itemWidth = revolver.find(".chamber").outerWidth(true);
		
			var left = parseInt(revolver.find(".cylinder").css("left"),10);
			var total = revolver.find(".chamber").length;
			var index = -Math.floor(left/itemWidth);
						
			index += (target.hasClass("previous")) ? -1 : 1;
			var direction = "next";
			if(!target.hasClass("previous"))
			{
				var clone = revolver.find('.chamber:first').clone();
				revolver.find(".cylinder").append(clone);
				
				left -= itemWidth;
			} else {
				direction = "previous";
				var clone = revolver.find('.chamber:last').clone();
				revolver.find(".cylinder").prepend(clone);
				
				var cloneWidth = clone.outerWidth(true);
				revolver.find(".cylinder").css({left: (left - cloneWidth) + 'px'});
				index++;
			}
			if(clone.hasClass("video"))
			{
				clone.find(".yt_player").html("");
			}
		
			if(index <= 0)
			{
				index = 0;
			}
			if(index >= total)
			{
				index = total;
			}
			revolver.find(".cylinder").stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED, function() { 
				cleanFeature(direction);
				
				if(clone.hasClass("video"))
				{
					clone.find(".yt_player").each(setupPlayer);
				}
			});
		}
	}
	function autoSwitchFeature()
	{
		if(!isAnimating)
		{
			isAnimating = true;
			var revolver = $(".feature");
			var trigger = revolver.find(".trigger");
			var itemWidth = revolver.find(".chamber").outerWidth(true);
		
			var left = parseInt(revolver.find(".cylinder").css("left"),10);
			var total = revolver.find(".chamber").length;
			var index = -Math.floor(left/itemWidth);
						
			index += 1;
			var direction = "next";
			var clone = revolver.find('.chamber:first').clone();
			revolver.find(".cylinder").append(clone);
			
			left -= itemWidth;
		
			if(clone.hasClass("video"))
			{
				clone.find(".yt_player").html("");
			}
		
			if(index <= 0)
			{
				index = 0;
			}
			if(index >= total)
			{
				index = total;
			}
			revolver.find(".cylinder").stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED, function() { 
				cleanFeature(direction);
				
				if(clone.hasClass("video"))
				{
					clone.find(".yt_player").each(setupPlayer);
				}
			});
		}
	}
	function cleanFeature(direction)
	{
		var revolver = $(".feature");
		var itemWidth = revolver.find(".chamber").outerWidth(true);
		var left = parseInt(revolver.find(".cylinder").css("left"),10);
		if(direction == "next")
		{
			revolver.find('.chamber:first').remove();
			revolver.find(".cylinder").css({left: (left + itemWidth) + 'px'});
		} else {
			revolver.find('.chamber:last').remove();	
		}
		isAnimating = false;
	}
	
	// ARROW CLICKS - IF PAGINATION PRESENT
	function showArrows()
	{
		var target = $(this);
		target.find(".arrow.next").stop().animate({ opacity: 1, right: 0 }, 250);
		target.find(".arrow.previous").stop().animate({ opacity: 1, left: 0 }, 250);
	}
	
	function hideArrows()
	{
		if(!isIOS)
		{
			var target = $(this);
			target.find(".arrow.next").stop().animate({ opacity: 0, right: -30 }, 250);
			target.find(".arrow.previous").stop().animate({ opacity: 0, left: -30 }, 250);
		}
	}
	
	// ALIUS SWIPES TO TRIGGER CLICKS
	function revolverSwipe(e, dir)
	{
		if(dir == "left" || dir == "right")
		{
			var items = $(this).find(".arrow span");
			var selected = $(this).find(".arrow span.selected");
			var index = items.index(selected);
			
			if(dir == "left")
				$(this).find(".arrow.next").trigger("click");
			else
				$(this).find(".arrow.previous").trigger("click");
		}
	}
	
	
//-----------------------------------
//  CALLOUTS  -----------------------
//-----------------------------------

	// VIRTUAL TOUR CALLOUT
	function virtualTourAdvance(e)
	{
		
		var target = $(this);
		if(!target.hasClass("selected"))
		{
			var cylinder = target.parent();
			var itemWidth = target.outerWidth(true);
			var index = cylinder.find(".chamber").index(target);
			cylinder.stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED, function(){
				var left = parseInt(cylinder.css("left"),10);
				cylinder.find('.chamber:first').clone().appendTo(cylinder);
				cylinder.find('.chamber:first').remove();
				cylinder.css({left: (left + itemWidth) + 'px'});
			});
			cylinder.find(".selected").removeClass("selected");
			target.addClass("selected");
		}
	}
	
	// IN PAGE CALLOUTS
	function calloutsAdvance(e)
	{
		if(!isAnimating)
		{
			//isAnimating = true;
			var target = $(this);
			var revolver = target.parents(".revolver");
			var trigger = revolver.find(".trigger");
			var itemWidth = revolver.find(".chamber").outerWidth(true);
		
			var left = parseInt(revolver.find(".cylinder").css("left"),10);
			var total = revolver.find(".chamber").length;
			var index = -Math.floor(left/itemWidth);
						
			index += (target.hasClass("previous")) ? -1 : 1;
			var direction = "next";
			if(!target.hasClass("previous"))
			{
				var clone = revolver.find('.chamber:first').clone();
				revolver.find(".cylinder").append(clone);
				
				left -= itemWidth;
			} 
			else 
			{
				direction = "previous";
				var clone = revolver.find('.chamber:last').clone();
				revolver.find(".cylinder").prepend(clone);
				
				var cloneWidth = clone.outerWidth(true);
				revolver.find(".cylinder").css({ left: (left - cloneWidth) });
				index++;
			}
			if(clone.hasClass("video"))
			{
				clone.find(".yt_player").html("");
			}
			
			if(index <= 0)
			{
				index = 0;
			}
			if(index >= total)
			{
				index = total;
			}
			revolver.find(".cylinder").stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED, function() {
				var left = parseInt(revolver.find(".cylinder").css("left"),10);
				if(direction == "next")
				{
					revolver.find('.chamber:first').remove();
					revolver.find(".cylinder").css({ left: (left + itemWidth) });
				} else {
					revolver.find('.chamber:last').remove();	
				}
				isAnimating = false;
				
				if(clone.hasClass("video"))
				{
					clone.find(".yt_player").each(setupPlayer);
				}
			});
			
			if(revolver.find(".trigger").length > 0)
			{
				var triggers = revolver.find(".trigger span");
				var triggerIndex = triggers.index(triggers.filter(".active"));
				triggerIndex += (direction == "previous") ? -1 : 1;
				
				if(triggerIndex >= triggers.length)
					triggerIndex = 0;
				if(triggerIndex < 0)
					triggerIndex = triggers.length - 1;
				
				triggers.filter(".active").removeClass("active");
				triggers.eq(triggerIndex).addClass("active");
			}
		}
	}
	function showCalloutArrows()
	{
		var target = $(this);
		target.find(".arrow").stop().animate({ opacity: 1 }, 250);
	}
	function hideCalloutArrows()
	{
		if(!isIOS)
		{
			var target = $(this);
			target.find(".arrow").stop().animate({ opacity: 0 }, 250);
		}
	}
	
	//PAGINATION TRIGGERS
	function triggerClick()
	{
		var target = $(this);
		var revolver = target.parents(".revolver");
		var index = revolver.find(".trigger span").index(target);
		var itemWidth = revolver.find(".chamber").outerWidth();
		
		revolver.find(".cylinder").stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED);
		
		revolver.find(".trigger span.active").removeClass("active");
		target.addClass("active");
	}
	
	
//-----------------------------------
//  MAJORS / MINORS  ----------------
//-----------------------------------
	
	// HIDE/SHOW MAJORS AND MINORS
	function toggleMajorMinorSet(e)
	{
		var target = $(this);
		target.toggleClass("active");
		
		var showMajors = ($("#mm-majors").hasClass("active")) ? true : false;
		var showMinors = ($("#mm-minors").hasClass("active")) ? true : false;
		
		if(!showMajors && target[0] == $("#mm-minors")[0])
		{
			$("#mm-majors").toggleClass("active");
			var showMajors = true;
			var showMinors = false;
		}
		if(!showMinors && target[0] == $("#mm-majors")[0])
		{
			$("#mm-minors").toggleClass("active");
			var showMajors = false;
			var showMinors = true;
		}
		
		var showArtsSciences = ($("#mm-arts_sciences").hasClass("active")) ? true : false;
		var showEngineering = ($("#mm-engineering").hasClass("active")) ? true : false;
		
		if(!showArtsSciences && target[0] == $("#mm-engineering")[0])
		{
			$("#mm-arts_sciences").toggleClass("active");
			var showArtsSciences = true;
			var showEngineering = false;
		}
		if(!showEngineering && target[0] == $("#mm-arts_sciences")[0])
		{
			$("#mm-engineering").toggleClass("active");
			var showArtsSciences = false;
			var showEngineering = true;
		}
		var search_q = $("#mm-search input").val().toLowerCase();
		var totalShow = 0;
		
		$("#mm-listing .item").each(function(i){
			var item = $(this);
			var show = false;
			var id = $(this).attr("id");
			
			if(item.hasClass("arts_sciences-major") && (showMajors && showArtsSciences)) show = true;
			if(item.hasClass("arts_sciences-minor") && (showMinors && showArtsSciences)) show = true;
			
			if(item.hasClass("engineering-major") && (showMajors && showEngineering)) show = true;
			if(item.hasClass("engineering-minor") && (showMinors && showEngineering)) show = true;
			
			if(search_q.length > 0 )
			{
				var to_search = item.find("h2").html().toLowerCase();
				var match = to_search.indexOf(search_q);
			
				if(match < 0)
				{ 
					show = false;
				}
			}
			if(show)
			{
				totalShow++;
				if(!item.is(":visible"))
				{
					item.show().css({ opacity: 0 });
				}
				var height = item.find(".inner").outerHeight(true);
				item.stop().animate({ height: height, opacity: 1 }, ANIMATION_SPEED, "easeOutQuad", function() {
					$(this).css({ height: "auto" });
				});
				$("a[href='#" + id + "']").show().removeClass("mm-hide");
			}
			else 
			{
				item.stop().animate({ height: 0, opacity: 0 }, ANIMATION_SPEED, "easeOutQuad", function() {
					$(this).hide();
				});
				$("a[href='#" + id + "']").hide().addClass("mm-hide");
			}
		});
		
		if(totalShow > 0) 
		{
			$("#mm-listing .no-results").animate({ height: 0, opacity: 0 });
		}
		else
		{
			if(!$("#mm-listing .no-results").is(":visible"))
			{
				$("#mm-listing .no-results").show();
			}
			if($("#mm-listing .no-results").css("opacity") < 1)
			{
				$("#mm-listing .no-results").css({ opacity: 0 }, ANIMATION_SPEED, "easeOutQuad");
			}
			var height2 = $("#mm-listing .no-results .inner").outerHeight(true);
			$("#mm-listing .no-results").stop().animate({ height: height2, opacity: 1 }, ANIMATION_SPEED, "easeOutQuad");
		}
		
		$("#mm-listing .item").each(function() {
			var count = $(this).find(".related a").not(".mm-hide").length;
			if(count > 0)
			{
				$(this).find(".related h6").show();
			}
			else
			{
				$(this).find(".related h6").hide();
			}
		});
		
		return false;
	}
	
	var IS_ANIMATING = false;
	function toggleMajorMinorItemDetails(e)
	{
		if(IS_ANIMATING) return false;
		IS_ANIMATING = true;
		
		e.preventDefault();
		e.stopPropagation();
		
		var target = $(this);
		var item = target.parents(".item");
		
		var small = item.find(".small");
		var schools = item.find(".schools");
		var large = item.find(".large");
		var related = item.find(".related");
		
		if(item.hasClass("open"))
		{
			//CLOSE ITEM
			item.removeClass("open");
			
			var smallHeight = small.outerHeight(true);
			var schoolsHeight = schools.outerHeight(true);
			if(smallHeight < schoolsHeight)
			{
				smallHeight = schoolsHeight
			}
			var largeHeight = large.outerHeight(true);
			var heightDelta = largeHeight - smallHeight;
			var newHeight = item.find(".inner").outerHeight() - heightDelta - 20;
			
			large.animate({ opacity: 0 }, ANIMATION_SPEED, "easeOutQuad", function() {
				$(this).hide();
				IS_ANIMATING = false;
			});
			item.find(".inner").animate({ height: newHeight }, ANIMATION_SPEED, "easeOutQuad");
			
			related.animate({opacity: 0 }, ANIMATION_SPEED, "easeOutQuad");
		}
		else
		{
			//OPEN ITEM
			item.addClass("open");
			
			large.css({ display: "block", opacity: 0 });
			related.css({ display: "block", opacity: 0 });
			
			var smallHeight = small.outerHeight(true);
			var schoolsHeight = schools.outerHeight(true);
			if(smallHeight < schoolsHeight)
			{
				smallHeight = schoolsHeight
			}
			
			var largeHeight = large.outerHeight(true);
			if(largeHeight < smallHeight)
			{
				largeHeight = smallHeight;
				large.find(".description").css({ height: largeHeight });
			}
			var heightDelta = largeHeight - smallHeight;
			var newHeight = item.find(".inner").outerHeight() + heightDelta;
			
			large.animate({ opacity: 1 }, ANIMATION_SPEED, "easeOutQuad", function() {
				IS_ANIMATING = false;
			});
			item.find(".inner").animate({ height: newHeight }, ANIMATION_SPEED, "easeOutQuad");
			
			related.animate({opacity: 1 }, ANIMATION_SPEED, "easeOutQuad");
		}
	}
	function filterMajorMinorSet()
	{
		$.doTimeout("mmFilter", 200, doFilterMajorMinorSet);
	}
	function doFilterMajorMinorSet()
	{
		$.doTimeout("mmFilter");
		var search_q = $("#mm-search input").val().toLowerCase();
		var showMajors = ($("#mm-majors").hasClass("active")) ? true : false;
		var showMinors = ($("#mm-minors").hasClass("active")) ? true : false;
		var showArtsSciences = ($("#mm-arts_sciences").hasClass("active")) ? true : false;
		var showEngineering = ($("#mm-engineering").hasClass("active")) ? true : false;
		var totalShow = 0;
		
		$("#mm-listing .item").each(function(i){
			var item = $(this);
			var show = false;
			var id = $(this).attr("id");
			
			var to_search = item.find("h2").html().toLowerCase();
			var match = to_search.indexOf(search_q);
			if(item.hasClass("arts_sciences-major") && (showMajors && showArtsSciences)) show = true;
			if(item.hasClass("arts_sciences-minor") && (showMinors && showArtsSciences)) show = true;
			
			if(item.hasClass("engineering-major") && (showMajors && showEngineering)) show = true;
			if(item.hasClass("engineering-minor") && (showMinors && showEngineering)) show = true;
			
			if(match < 0) show = false;

			if(show)
			{
				totalShow++;
				if(!item.is(":visible"))
				{
					item.show().css({ opacity: 0 });
				}
				var height = item.find(".inner").outerHeight(true);
				item.stop().animate({ height: height, opacity: 1 }, ANIMATION_SPEED, "easeOutQuad", function() {
					$(this).css({ height: "auto" });
				});
				$("a[href='#" + id + "']").show().removeClass("mm-hide");;
			}
			else 
			{
				item.stop().animate({ height: 0, opacity: 0 }, ANIMATION_SPEED, "easeOutQuad", function() {
					$(this).hide();
				});
				$("a[href='#" + id + "']").hide().addClass("mm-hide");;
			}
		});
		
		if(totalShow > 0) 
		{
			$("#mm-listing .no-results").animate({ height: 0, opacity: 0 });
		}
		else
		{
			if(!$("#mm-listing .no-results").is(":visible"))
			{
				$("#mm-listing .no-results").show();
			}
			if($("#mm-listing .no-results").css("opacity") < 1)
			{
				$("#mm-listing .no-results").css({ opacity: 0 }, ANIMATION_SPEED, "easeOutQuad");
			}
			var height2 = $("#mm-listing .no-results .inner").outerHeight(true);
			$("#mm-listing .no-results").stop().animate({ height: height2, opacity: 1 }, ANIMATION_SPEED, "easeOutQuad");
		}
		
		if(search_q.length > 0)
		{
			$("#clear_search").show();
		} else {
			$("#clear_search").hide();
		}
		
		$("#mm-listing .item").each(function() {
			var count = $(this).find(".related a").not(".mm-hide").length;
			if(count > 0)
			{
				$(this).find(".related h6").show();
			}
			else
			{
				$(this).find(".related h6").hide();
			}
		});
		
		return false;
		
	}
	function clearSearch()
	{
		$("#mm-search input").val("");
		doFilterMajorMinorSet();
		return false;
	}
	
	
//-----------------------------------
//  THE DAILY CANNON + TUFTS TIPS ---
//-----------------------------------
	function loadAjaxPage(e)
	{
		e.preventDefault();
		e.stopPropagation();
		
		var button = $(this);
		var url = button.attr("href");
		var parts = url.split("p=");
		
		url = parts[0] + "p=" + (parseInt(parts[1], 10) + 1);
		button.attr("href", url);
		
		$.ajax({
			url: url,
			success: function(data)
			{
				if(data.indexOf("NONE") > -1)
				{
					button.parents(".ribbon").animate({ height: 0 }, 200);
				}
				else
				{
					$(".listing-wrapper").append(data);
				}
			}
		});
	}
	
	function jumperSelect(e)
	{
		var val = $(this).val();
		window.location.href = val;
	}
	
	
	
	/* MAGAZINE */
	function advanceMagazineFeature()
	{
		var target = $(this);
		
		var revolver = $("#magazine_feature .revolver");
		var cylinder = revolver.find(".cylinder");
		var triggers = revolver.find(".triggers");
		
		var itemWidth = revolver.find(".chamber").outerWidth(true);
		var index = triggers.find("a").index( triggers.find("a.selected") ) + 1;
		
		if(index > triggers.find("a").length-1)
			index = 0;
		
		cylinder.stop().animate({ left: -(index * itemWidth) }, ANIMATION_SPEED);
		
		triggers.find(".selected").removeClass("selected");
		triggers.find("a").eq(index).addClass("selected");
		
		return true;
	}
	
	
	function fixIssueColumns()
	{
		var tallest = 0;
		$("#magazine_callouts .column").each(function() {
			var height = $(this).find(".contain").outerHeight();
			if(height > tallest)
				tallest = height;
		});
		if(tallest > 0)
		{
			$("#magazine_callouts .column").css({ height: tallest });
		}
	}
	
	function submitPollAnswer(e)
	{
		e.preventDefault();
		e.stopPropagation();
		
		var form = $(this);
		
		var poll_answer = form.find("input[name=poll_answer]:checked").val();
		var poll_id = form.find("input[name=poll_id]").val();
		
		$.ajax({
			method: "GET",
			url: "www_root/ajax/magazine/submit-poll-answer/",
			data: { answer: poll_answer, id: poll_id },
			success: function(data) {
				$("form.poll_submit").html('<img src="' + data + '" alt="Results" height="250" width="200" />');
				fixIssueColumns();
			}
		});
	}
	
	function showPollResults(e)
	{
		e.preventDefault();
		e.stopPropagation();
		
		var poll_id = $("form.poll_submit input[name=poll_id]").val();
		
		$.ajax({
			method: "GET",
			url: "www_root/ajax/magazine/submit-poll-answer/",
			data: { answer: "show-results", id: poll_id },
			success: function(data) {
				$("form.poll_submit").html('<img src="' + data + '" alt="Results" height="250" width="200" />');
				fixIssueColumns();
			}
		});
	}
	
	
	
//-----------------------------------
//  YOU TUBE PLAYER -----------------
//-----------------------------------
	var ytPlayers = []; //to track the players
	var ytBuild = false;
	
	function initYouTube()
	{
		$("head").append('<script src="http://www.youtube.com/player_api"></script>');
		$(".chamber.video .label").live("click", startVideo);
		if(!ytBuild)
		{
			onYouTubePlayerAPIReady();
		}
	}
	
	function onYouTubePlayerAPIReady() 
	{
		if(typeof jQuery != 'undefined' && typeof YT != 'undefined')
		{
			$(".yt_player").each(setupPlayer);
			if($(".yt_player").length > 0 && !ytBuild)
			{
				ytBuild = true;
			}
		}
	}
	
	function setupPlayer()
	{
		var id = $(this).attr("id");
		var video = $(this).attr("title");
		var isCallout = ($(this).hasClass("callout_player")) ? true : false;
		var isCollar = ($(this).hasClass("collar_player")) ? true : false;
		
		var height = 350;
		var width = 639;
		if(isCallout)
		{
			height = 309;
			width = 659;
		}
		if(isCollar)
		{
			height = 360;
			width = 720;
		}
		
		ytPlayers[id] = new YT.Player(id, {
			height: height,
			width: width,
			videoId: video,
			events: {
				'onReady': onPlayerReady,
				'onStateChange': onPlayerStateChange
			},
			playerVars: { 
				'theme': 'light',
				'color': 'red',
				'showsearch': 0,
				'showinfo': 0,
				'rel': 0,
				'modestbranding': 1,
				'hd': 1,
				'autohide': 0,
				'wmode': 'transparent'
			}
		});
	}
	
	function onPlayerReady(e)
	{
		for(var key in ytPlayers)
		{
			if(ytPlayers[key] == e.target)
			{
				var iframe = $("#" + key); //sloppy - maybe a better way?
				showVideoLabel(iframe.parents(".chamber"));
			}
		}
	}
	
	function onPlayerStateChange(e) 
	{
		var iframe = null;
		for(var key in ytPlayers)
		{
			if(ytPlayers[key] == e.target)
			{
				iframe = $("#" + key);
			}
		}
		if(iframe != null)
		{
			var chamber = iframe.parents(".chamber");
			if(e.data != YT.PlayerState.BUFFERING)
			{
				if(e.data == YT.PlayerState.PLAYING) 
				{
					hideVideoLabel(chamber);
					clearInterval(featureTimer);
					$.doTimeout("youtuber");
				}
				else if(e.data == YT.PlayerState.PAUSED) 
				{
					$.doTimeout("youtuber", 500, function() {
						showVideoLabel(chamber);
					});
				}
				else if(e.data == YT.PlayerState.ENDED) 
				{
					$.doTimeout("youtuber", 500, function() {
						showVideoLabel(chamber);
					});
				}
			}
		}
	}
	
	function startVideo(e)
	{
		e.preventDefault();
		e.stopPropagation();
		
		var chamber = $(this).parents(".chamber.video");
		var id = chamber.find(".yt_player").attr("id");
		ytPlayers[id].playVideo();
	}
	
	function hideVideoLabel(target)
	{
		if(!target.find(".label").hasClass("hidden"))
		{
			target.find(".label").stop().animate({ opacity: 0, top: "100px" }, 250).addClass("hidden");
		}
	}
	
	function showVideoLabel(target)
	{
		if(!isIE)
		{
			target.find(".label").stop().css({ display:"block", opacity:0 }).animate({ opacity: 1, top: "70px" }, 250).removeClass("hidden");
		}
	}
	
