/*--------------------------------------------------------------------------*/
/*  Countdown script
/*--------------------------------------------------------------------------*/
$(document).ready(function() {
	countdown = {
		leadingzero: 0,
		startedmessage: "<div class=expired>It is here!</div>"
	};
	
	$('div.countdown').each(function(s) {
		displaycountdown(this.id);
	});
});

function displaycountdown(id) {
	var countdowncontainer = $('#' + id);
	var eventdate = new Date(countdowncontainer.children('.totalseconds').html());
	var nowdate = new Date();
	
	totalseconds = Math.floor(new Date(eventdate-nowdate).valueOf()/1000);
	
	if (totalseconds < 0) {
		if (countdown.startedmessage == '') {
			totalseconds = 0;
		} else {
			countdowncontainer.html(countdown.startedmessage);
			return;
		}
	}

	seconds = calctime(totalseconds,1,60);
	minutes = calctime(totalseconds,60,60);
	hours = calctime(totalseconds,3600,24);
	days = calctime(totalseconds,86400,100000);
	
	countdowncontainer.children('.cdsec').html(seconds);
	countdowncontainer.children('.cdmin').html(minutes);
	countdowncontainer.children('.cdhour').html(hours);
	countdowncontainer.children('.cdday').html(days);
	
	setTimeout(function(){displaycountdown(id)}, 1000);
}

function calctime(secs, num1, num2) {
	s = ((Math.floor(secs/num1))%num2).toString();
	if (countdown.leadingzero && s.length < 2)
		s = "0" + s;
	return  s ;
}

/*--------------------------------------------------------------------------*/
/*  Social networking links
/*--------------------------------------------------------------------------*/
function sharepage(site){
	var pgURL = escape(location).replace('dev.', 'www.');
	var pgTitle = escape(document.title);
	
	if (arguments.length > 1) {
		pgURL = arguments[1];
	}
	
	var social = {
		delicious: "http://del.icio.us/post?url=" + pgURL + "&title=" + pgTitle,
		digg: "http://digg.com/submit/?url=" + pgURL + "&title=" + pgTitle,
		facebook: "http://www.facebook.com/sharer.php?u=" + pgURL + "&t=" + pgTitle,
		fark: "http://cgi.fark.com/cgi/fark/submit.pl?new_url=" + pgURL + "&headline=" + pgTitle,
		flickr: "http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&u=" + pgURL + "&t=" + pgTitle,
		livespaces: "https://favorites.live.com/quickadd.aspx?marklet=1&mkt=en-us&url=" + pgURL + "&title=" + pgTitle,
		multiply: "http://multiply.com/gus/journal/compose/?body=&url=" + pgURL + "&subject=" + pgTitle,
		myspace: "http://www.myspace.com/Modules/PostTo/Pages/?u=" + pgURL + "&t=" + pgTitle + "&c=",
		mixx: "http://www.mixx.com/submit?page_url=" + pgURL,
		orkut: "http://www.orkut.com/Main##Scrapbook.aspx?rl=ms",
		stumbleupon: "http://www.stumbleupon.com/submit?url=" + pgURL + "&title=" + pgTitle
	}
	
	var foo = window.open(social[site], site, 'width=800,height=600,resizable=1,scrollbars=1');
	
	pageTracker._trackEvent('Share', 'Click', site);
}

/*--------------------------------------------------------------------------*/
/*  Compilation of custom, swfobject, livepipe, tabs and lightwindow
/*--------------------------------------------------------------------------*/

function getCookie(name) {
	if (document.cookie.length > 0) {
		pos = document.cookie.indexOf(name + "=");
		if (pos != -1) { 
			pos = pos + name.length+1; 
			end = document.cookie.indexOf(";", pos);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(pos, end));
		} 
	}
	return "";
}

function setCookie(name, value, exp) {
	type = "d";
	if (arguments.length > 3) {
		type = arguments[3];
	}
	
	var expdate = new Date();
	
	switch(type) {
		case "s":
			expdate.setSeconds(expdate.getSeconds() + exp);
			break;
		case "m":
			expdate.setMinutes(expdate.getMinutes() + exp);
			break;
		case "h":
			expdate.setHours(expdate.getHours() + exp);
			break;
		default:
			expdate.setDate(expdate.getDate() + exp);
			break;
	}
	
	document.cookie = name + "=" + escape(value) + ((exp == null) ? "" : ";expires=" + expdate.toGMTString()) + ';path=/';
}

function checkCookie(name) {
	value = getCookie(name);
	if (value == null || value == "") {
		return false;
	}
	return true;
}

/*--------------------------------------------------------------------------*/
// swfobject.js v1.4.4
/*--------------------------------------------------------------------------*/
if(typeof deconcept=="undefined"){var deconcept=new Object();}
if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}
if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;}
this.DETECT_KEY=_b?_b:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params=new Object();
this.variables=new Object();
this.attributes=new Array();
if(_1){this.setAttribute("swf",_1);}
if(id){this.setAttribute("id",id);}
if(w){this.setAttribute("width",w);}
if(h){this.setAttribute("height",h);}
if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(c){this.addParam("bgcolor",c);}
var q=_8?_8:"high";
this.addParam("quality",q);
this.setAttribute("useExpressInstall",_7);
this.setAttribute("doExpressInstall",false);
var _d=(_9)?_9:window.location;
this.setAttribute("xiRedirectUrl",_d);
this.setAttribute("redirectUrl","");
if(_a){this.setAttribute("redirectUrl",_a);}};
deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
this.attributes[_e]=_f;
},getAttribute:function(_10){
return this.attributes[_10];
},addParam:function(_11,_12){
this.params[_11]=_12;
},getParams:function(){
return this.params;
},addVariable:function(_13,_14){
this.variables[_13]=_14;
},getVariable:function(_15){
return this.variables[_15];
},getVariables:function(){
return this.variables;
},getVariablePairs:function(){
var _16=new Array();
var key;
var _18=this.getVariables();
for(key in _18){_16.push(key+"="+_18[key]);}
return _16;},getSWFHTML:function(){var _19="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
if(this.getAttribute("doExpressInstall")){
this.addVariable("MMplayerType","PlugIn");}
_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
var _1a=this.getParams();
for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
var _1c=this.getVariablePairs().join("&");
if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";
}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
var _1d=this.getParams();
for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
var _1f=this.getVariablePairs().join("&");
if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}
return _19;
},write:function(_20){
if(this.getAttribute("useExpressInstall")){
var _21=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+" - Flash Player Installation";
this.addVariable("MMdoctitle",document.title);}}
if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
var n=(typeof _20=="string")?document.getElementById(_20):_20;
n.innerHTML=this.getSWFHTML();return true;
}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
return false;}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){
var _23=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){
var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}
catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}
catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}
catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}
return _23;};
deconcept.PlayerVersion=function(_27){
this.major=_27[0]!=null?parseInt(_27[0]):0;
this.minor=_27[1]!=null?parseInt(_27[1]):0;
this.rev=_27[2]!=null?parseInt(_27[2]):0;
};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
if(this.major<fv.major){return false;}
if(this.major>fv.major){return true;}
if(this.minor<fv.minor){return false;}
if(this.minor>fv.minor){return true;}
if(this.rev<fv.rev){
return false;
}return true;};
deconcept.util={getRequestParameter:function(_29){
var q=document.location.search||document.location.hash;
if(q){var _2b=q.substring(1).split("&");
for(var i=0;i<_2b.length;i++){
if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){
return _2b[i].substring((_2b[i].indexOf("=")+1));}}}
return "";}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;}
var _2d=document.getElementsByTagName("OBJECT");
for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){
if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}};
deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){};
if(typeof window.onunload=="function"){
var _30=window.onunload;
window.onunload=function(){
deconcept.SWFObjectUtil.cleanupSWFs();_30();};
}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}};
if(typeof window.onbeforeunload=="function"){
var oldBeforeUnload=window.onbeforeunload;
window.onbeforeunload=function(){
deconcept.SWFObjectUtil.prepUnload();
oldBeforeUnload();};
}else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;}
if(Array.prototype.push==null){
Array.prototype.push=function(_31){
this[this.length]=_31;
return this.length;};}
var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;


/*--------------------------------------------------------------------------*/
// jquery.colorbox.js v1.3.2
/*--------------------------------------------------------------------------*/
(function ($) {
	//Shortcuts (to increase compression)
	var colorbox = 'colorbox',
	hover = 'hover',
	TRUE = true,
	FALSE = false,
	cboxPublic,
	isIE = !$.support.opacity,
	isIE6 = isIE && !window.XMLHttpRequest,

	//Event Strings (to increase compression)
	cbox_click = 'click.colorbox',
	cbox_open = 'cbox_open',
	cbox_load = 'cbox_load',
	cbox_complete = 'cbox_complete',
	cbox_cleanup = 'cbox_cleanup',
	cbox_closed = 'cbox_closed',
	cbox_resize = 'resize.cbox_resize',

	//Cached jQuery Object Variables
	$overlay,
	$cbox,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingOverlay,
	$loadingGraphic,
	$title,
	$caption,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,

	//Variables for cached values or use across multiple functions
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	element,
	index,
	settings,
	open,
	active,
	callback,
	
	// ColorBox Default Settings.	
	// See http://colorpowered.com/colorbox for details.
	defaults = {
		transition: "elastic",
		speed: 350,
		width: FALSE,
		height: FALSE,
		innerWidth: FALSE,
		innerHeight: FALSE,
		initialWidth: "400",
		initialHeight: "400",
		modHeight: 0,
		maxWidth: FALSE,
		maxHeight: FALSE,
		scalePhotos: TRUE,
		scrolling: TRUE,
		inline: FALSE,
		html: FALSE,
		iframe: FALSE,
		photo: FALSE,
		href: FALSE,
		title: FALSE,
		caption: FALSE,
		rel: FALSE,
		opacity: 0.9,
		preloading: TRUE,
		current: "image {current} of {total}",
		previous: "previous",
		next: "next",
		close: "close",
		open: FALSE,
		overlayClose: TRUE,
		slideshow: FALSE,
		slideshowAuto: TRUE,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		preloadIMG: TRUE,
		socialLink: false
	};

	// ****************
	// HELPER FUNCTIONS
	// ****************
		
	// Convert % values to pixels
	function setSize (size, dimension) {
		dimension = dimension === 'x' ? document.documentElement.clientWidth : document.documentElement.clientHeight;
		return (typeof size === 'string') ? Math.round((size.match(/%/) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
	function isImage (url) {
		return settings.photo || url.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i);
	}
	
	// Assigns functions results to their respective settings.  This allows functions to be used to set ColorBox options.
	function process () {
		for (var i in settings) {
			if (typeof(settings[i]) === 'function') {
			    settings[i] = settings[i].call(element);
			}
		}
	}

	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.fn.colorbox.close();
	// Usage from within an iframe: parent.$.fn.colorbox.close();
	// ****************
	
	cboxPublic = $.fn.colorbox = function (options, custom_callback) {
		
		if (this.length) {
			this.each(function () {
				var data = $(this).data(colorbox) ? $.extend({},
					$(this).data(colorbox), options) : $.extend({}, defaults, options);
				$(this).data(colorbox, data).addClass("cboxelement");
			});
		} else {
			$(this).data(colorbox, $.extend({}, defaults, options));
		}
		
		$(this).unbind(cbox_click).bind(cbox_click, function (e) {
			
			element = this;
			settings = $(element).data(colorbox);
			
			//caption hack
			settings.caption = $(element).attr("caption");
			author = $(element).attr("author");
			
			if (author != null && author.length > 0) {
				settings.caption += " <span id=\"credt\">(Credit: " + author + ")</span>";
			}
			
			process();//process settings functions
			
			callback = custom_callback || FALSE;
			
			var rel = settings.rel || element.rel;
			
			if (rel && rel !== 'nofollow') {
				$related = $('.cboxelement').filter(function () {
					var relRelated = $(this).data(colorbox).rel || this.rel;
					return (relRelated === rel);
				});
				index = $related.index(element);
				
				if (index < 0) { //this checks direct calls to colorbox
					$related = $related.add(element);
					index = $related.length - 1;
				}
			
			} else {
				$related = $(element);
				index = 0;
			}
			if (!open) {
				open = TRUE;
				
				active = TRUE; // this is to prevent the page-change action from queuing up if the visitor holds down the left or right keys.
				// Set Navigation Key Bindings
				$().bind("keydown.cbox_close", function (e) {
					if (e.keyCode === 27) {
						e.preventDefault();
						cboxPublic.close();
					}
				}).bind("keydown.cbox_arrows", function(e) {
					if (e.keyCode === 37) {
						e.preventDefault();
						$prev.click();
					} else if (e.keyCode === 39) {
						e.preventDefault();
						$next.click();
					}
				});
				
				if (settings.overlayClose) {
					$overlay.css({"cursor": "pointer"}).one('click', cboxPublic.close);
				}
				
				//remove the focus from the anchor to prevent accidentally calling
				//colorbox multiple times (by pressing the 'Enter' key
				//after colorbox has opened, but before the user has clicked on anything else)
				element.blur();
				
				$.event.trigger(cbox_open);
				
				$close.html(settings.close);
				
				$overlay.css({"opacity": settings.opacity}).show();
				
				// Opens inital empty ColorBox prior to content being loaded.
				settings.w = setSize(settings.initialWidth, 'x');
				settings.h = setSize(settings.initialHeight, 'y');
				cboxPublic.position(0);
				
				if (isIE6) {
					$window.bind('resize.cboxie6 scroll.cboxie6', function () {
						$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
					}).trigger("scroll.cboxie6");
				}
			}
			cboxPublic.slideshow();
			
			cboxPublic.load();
			
			e.preventDefault();
		});
		
		if (options && options.open) {
			$(this).triggerHandler(cbox_click);
		}
		
		return this;
	};

	// Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
	// This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
	// having to run once, instead of each time colorbox is opened.
	cboxPublic.init = function () {
		
		// jQuery object generator to save a bit of space
		function $div(id) {
			return $('<div id="cbox' + id + '"/>');
		}
		
		// Create & Append jQuery Objects
		$window = $(window);
		$cbox = $('<div id="colorbox"/>');
		$overlay = $div("Overlay").hide();
		$wrap = $div("Wrapper");
		$content = $div("Content").append(
			$loaded = $div("LoadedContent").css({width: 0, height: 0}),
			$loadingOverlay = $div("LoadingOverlay"),
			$loadingGraphic = $div("LoadingGraphic"),
			$title = $div("Title"),
			$caption = $div("Caption"),
			$social = $div("Social"),
			$current = $div("Current"),
			$slideshow = $div("Slideshow"),
			$next = $div("Next"),
			$prev = $div("Previous"),
			$close = $div("Close")
		);
		
		$wrap.append( // The 3x3 Grid that makes up ColorBox
			$('<div/>').append(
				$div("TopLeft"),
				$topBorder = $div("TopCenter"),
				$div("TopRight")
			),
			$('<div/>').append(
				$leftBorder = $div("MiddleLeft"),
				$content,
				$rightBorder = $div("MiddleRight")
			),
			$('<div/>').append(
				$div("BottomLeft"),
				$bottomBorder = $div("BottomCenter"),
				$div("BottomRight")
			)
		).children().children().css({'float': 'left'});
		$('body').prepend($overlay, $cbox.append($wrap));
				
		if (isIE) {
			$cbox.addClass('cboxIE');
			if (isIE6) {
				$overlay.css('position', 'absolute');
			}
		}
		
		// Add rollover event to navigation elements
		$content.children()
		.addClass(hover)
		.mouseover(function () { $(this).addClass(hover); })
		.mouseout(function () { $(this).removeClass(hover); })
		.hide();
		
		// Cache values needed for size calculations
		interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(TRUE) - $content.height();//Subtraction needed for IE6
		interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(TRUE) - $content.width();
		loadedHeight = $loaded.outerHeight(TRUE);
		loadedWidth = $loaded.outerWidth(TRUE);
		
		// loadedHeight += 30;
		
		// Setting padding to remove the need to do size conversions during the animation step.
		$cbox.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
		
		// Setup button & key events.
		$next.click(cboxPublic.next);
		$prev.click(cboxPublic.prev);
		$close.click(cboxPublic.close);
		
		// Adding the 'hover' class allowed the browser to load the hover-state
		// background graphics.  The class can now can be removed.
		$content.children().removeClass(hover);
	};

	cboxPublic.position = function (speed, loadedCallback) {
		var
		animate_speed,
		winHeight = document.documentElement.clientHeight,
		// keeps the top and left positions within the browser's viewport.
		posTop = Math.max(winHeight - settings.h - loadedHeight - interfaceHeight - settings.modHeight,0)/2 + $window.scrollTop(),
		posLeft = Math.max(document.documentElement.clientWidth - settings.w - loadedWidth - interfaceWidth,0)/2 + $window.scrollLeft();
		
		// setting the speed to 0 to reduce the delay between same-sized content.
		animate_speed = ($cbox.width() === settings.w+loadedWidth && $cbox.height() === settings.h+loadedHeight+settings.modHeight) ? 0 : speed;
		
		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";
		
		function modalDimensions (that) {
			// loading overlay size has to be sure that IE6 uses the correct height.
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
			$loadingGraphic[0].style.height = $loadingOverlay[0].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
		}
		
		$cbox.dequeue().animate({width:settings.w+loadedWidth, height:settings.h+loadedHeight+settings.modHeight, top:posTop, left:posLeft}, {duration: animate_speed,
			complete: function(){
				modalDimensions(this);
				
				active = FALSE;
				
				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w+loadedWidth+interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h+loadedHeight+settings.modHeight+interfaceHeight) + "px";
				
				if (loadedCallback) {loadedCallback();}
			},
			step: function(){
				modalDimensions(this);
			}
		});
	};

	cboxPublic.resize = function (object) {
		if(!open){ return; }
		
		var topMargin,
		prev,
		prevSrc,
		next,
		nextSrc,
		photo,
		timeout,
		speed = settings.transition==="none" ? 0 : settings.speed;
		
		$window.unbind(cbox_resize);
		
		if (settings.socialLink) {
			$cbox.addClass('social');
		}
		
		if(!object){
			timeout = setTimeout(function(){ // timer allows IE to render the dimensions before attempting to calculate the height
				var $child = $loaded.wrapInner("<div style='overflow:auto'></div>").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.
				settings.h = $child.height();
				$loaded.css({height:settings.h});
				$child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation
				cboxPublic.position(speed);
			}, 1);
			return;
		}
		
		$loaded.remove();
		$loaded = $('<div id="cboxLoadedContent"/>').html(object);
		
		function getWidth(){
			settings.w = settings.w || $loaded.width();
			return settings.w;
		}
		function getHeight(){
			settings.h = settings.h || $loaded.height();
			return settings.h;
		}
		
		$loaded.hide()
		.appendTo($overlay)// content has to be appended to the DOM for accurate size calculations.  Appended to an absolutely positioned element, rather than BODY, which avoids an extremely brief display of the vertical scrollbar in Firefox that can occur for a small minority of websites.
		.css({width:getWidth(), overflow:settings.scrolling ? 'auto' : 'hidden'})
		.css({height:getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);
		
		$('#cboxPhoto').css({cssFloat:'none'});// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
		
		// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
		if (isIE6) {
			$('select:not(#colorbox select)').filter(function(){
				return this.style.visibility !== 'hidden';
			}).css({'visibility':'hidden'}).one(cbox_cleanup, function(){
				this.style.visibility = 'inherit';
			});
		}
				
		function setPosition (s) {
			cboxPublic.position(s, function(){
				if (!open) { return; }
				
				if (isIE) {
					//This fadeIn helps the bicubic resampling to kick-in.
					if( photo ){$loaded.fadeIn(100);}
					//IE adds a filter when ColorBox fades in and out that can cause problems if the loaded content contains transparent pngs.
					$cbox[0].style.removeAttribute("filter");
				}
				
				$content.children().show();
				
				//Waited until the iframe is added to the DOM & it is visible before setting the src.
				//This increases compatability with pages using DOM dependent JavaScript.
				if(settings.iframe){
					$loaded.append("<iframe id='cboxIframe'" + (settings.scrolling ? " " : "scrolling='no'") + " name='iframe_"+new Date().getTime()+"' frameborder=0 src='"+(settings.href || element.href)+"' />");
				}
				
				$loadingOverlay.hide();
				$loadingGraphic.hide();
				$slideshow.hide();
				
				if ($related.length>1) {
					$current.html(settings.current.replace(/\{current\}/, index+1).replace(/\{total\}/, $related.length));
					$next.html(settings.next);
					$prev.html(settings.previous);
					
					if(settings.slideshow){
						$slideshow.show();
					}
				} else {
					$current.hide();
					$next.hide();
					$prev.hide();
				}
				
				$title.html(settings.title || element.title);
				$caption.html(settings.caption || element.caption);
				
				if (settings.socialLink == false) {
					$social.hide();
				} else {
					var sID = element.id;
					var sURL = window.location.href.split('#')[0] + '#' + sID;
					sEncodedURL = encodeURIComponent(sURL);
					
					var sShareHtml = '<a href="' + sURL + '" id="hyperlink" title="Link to Photo" target="_blank"><span>Link to Photo</span>&nbsp;</a>'+
						'<span id="share"><span class="title"><b>Share: </b></span>'+
						'<span onClick="sharepage(\'facebook\', \''+sEncodedURL+'\');" class="facebook" title="Facebook"></span>'+
						'<span onClick="sharepage(\'myspace\', \''+sEncodedURL+'\');" class="myspace" title="MySpace"></span>'+
						'<span onClick="sharepage(\'digg\', \''+sEncodedURL+'\');" class="digg" title="Digg"></span>'+
						'<span onClick="sharepage(\'buzz\', \''+sEncodedURL+'\');" class="buzz" title="Buzz"></span>'+
						'<span onClick="sharepage(\'stumbleupon\', \''+sEncodedURL+'\');" class="stumbleupon" title="StumbleUpon"></span>'+
						'<span onClick="sharepage(\'delicious\', \''+sEncodedURL+'\');" class="delicious" title="Delicious"></span>'+
						'</span></span>';
			
					$social.html(sShareHtml);
					$social.show();
				}
				
				if (settings.caption == undefined || settings.caption.length == 0) {
					$caption.hide();
				} else {
					$caption.wrapInner(document.createElement("span"));
					$caption.show();
				}
				
				$.event.trigger(cbox_complete);
				
				if (callback) {
					callback.call(element);
				}
				
				if (settings.transition === 'fade'){
					$cbox.fadeTo(speed, 1, function(){
						if(isIE){$cbox[0].style.removeAttribute("filter");}
					});
				}
				
				$window.bind(cbox_resize, function(){
					cboxPublic.position(0);
				});
			});
		}
		
		if((settings.transition === 'fade' && $cbox.fadeTo(speed, 0, function(){setPosition(0);})) || setPosition(speed)){}
		
		// Preloads images within a rel group
		if (settings.preloading && $related.length>1) {
			prev = index > 0 ? $related[index-1] : $related[$related.length-1];
			next = index < $related.length-1 ? $related[index+1] : $related[0];
			nextSrc = $(next).data(colorbox).href || next.href;
			prevSrc = $(prev).data(colorbox).href || prev.href;
			
			if(isImage(nextSrc)){
				$('<img />').attr('src', nextSrc);
			}
			
			if(isImage(prevSrc)){
				$('<img />').attr('src', prevSrc);
			}
		}
	};

	cboxPublic.load = function () {
		var href, img, setResize, resize = cboxPublic.resize;
		
		active = TRUE;
		
		// Preload loops through the HTML to find IMG elements and loads their sources.
		// This allows the resize method to accurately estimate the dimensions of the new content.
		function preload(html){
			var
			$ajax = $(html),
			$imgs = $ajax.find('img'),
			x = $imgs.length;
			
			(function loadloop(){
				var img = new Image();
				x = x-1;
				if(x >= 0 && settings.preloadIMG){
					img.onload = loadloop;
					img.src = $imgs[x].src;
				} else {
					resize($ajax);
				}
			}());
		}
		
		element = $related[index];
		
		settings = $(element).data(colorbox);
			
		//caption hack
		settings.caption = $(element).attr("caption");
		author = $(element).attr("author");
		
		if (author != null && author.length > 0) {
			settings.caption += " <span id=\"credt\">(Credit: " + author + ")</span>";
		}
		
		//convert functions to static values
		process();
		
		$.event.trigger(cbox_load);
		
		// Evaluate the height based on the optional height and width settings.
		settings.h = settings.height ?
				setSize(settings.height, 'y') - loadedHeight - interfaceHeight - settings.modHeight :
				settings.innerHeight ?
					setSize(settings.innerHeight, 'y') :
					FALSE;
		settings.w = settings.width ?
				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
				settings.innerWidth ?
					setSize(settings.innerWidth, 'x') :
					FALSE;
		
		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;
		
		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if(settings.maxWidth){
			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if(settings.maxHeight){
			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight - settings.modHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}
		
		href = settings.href || element.href;
		
		$loadingOverlay.show();
		$loadingGraphic.show();
		$close.show();
				
		if (settings.inline) {
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when ColorBox closes or loads new content.
			$('<div id="cboxInlineTemp" />').hide().insertBefore($(href)[0]).bind(cbox_load+' '+cbox_cleanup, function(){
				$(this).replaceWith($loaded.children());
			});
			resize($(href));
		} else if (settings.iframe) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			resize(" ");
		} else if (settings.html) {
			preload(settings.html);
		} else if (isImage(href)){
			img = new Image();
			img.onload = function(){
				var percent;
				
				img.onload = null;
				
				img.id = 'cboxPhoto';
				
				$(img).css({margin:'auto', border:'none', display:'block', cssFloat:'left'});
				
				if(settings.scalePhotos){
					setResize = function(){
						img.height -= img.height * percent;
						img.width -= img.width * percent;	
					};
					if(settings.mw && img.width > settings.mw){
						percent = (img.width - settings.mw) / img.width;
						setResize();
					}
					if(settings.mh && img.height > settings.mh){
						percent = (img.height - settings.mh) / img.height;
						setResize();
					}
				}
				
				if (settings.h) {
					img.style.marginTop = Math.max(settings.h - img.height,0)/2 + 'px';
				}
				
				resize(img);
				
				if($related.length > 1){
					$(img).css({cursor:'pointer'}).click(cboxPublic.next);
				}
				
				if(isIE){
					img.style.msInterpolationMode='bicubic';
				}
			};
			img.src = href;
		} else {
			$('<div />').load(href, function(data, textStatus){
				if(textStatus === "success"){
					preload(this);
				} else {
					resize($("<p>Request unsuccessful.</p>"));
				}
			});
		}
	};

	//navigates to the next page/image in a set.
	cboxPublic.next = function () {
		if(!active){
			index = index < $related.length-1 ? index+1 : 0;
			cboxPublic.load();
		}
	};
	
	cboxPublic.prev = function () {
		if(!active){
			index = index > 0 ? index-1 : $related.length-1;
			cboxPublic.load();
		}
	};

	cboxPublic.slideshow = function () {
		var stop, timeOut, className = 'cboxSlideshow_';
		
		$slideshow.bind(cbox_closed, function(){
			$slideshow.unbind();
			clearTimeout(timeOut);
			$cbox.removeClass(className+"off"+" "+className+"on");
		});
		
		function start(){
			$slideshow
			.text(settings.slideshowStop)
			.bind(cbox_complete, function(){
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
			})
			.bind(cbox_load, function(){
				clearTimeout(timeOut);	
			}).one("click", function(){
				stop();
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"off").addClass(className+"on");
		}
		
		stop = function(){
			clearTimeout(timeOut);
			$slideshow
			.text(settings.slideshowStart)
			.unbind(cbox_complete+' '+cbox_load)
			.one("click", function(){
				start();
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"on").addClass(className+"off");
		};
		
		if(settings.slideshow && $related.length>1){
			if(settings.slideshowAuto){
				start();
			} else {
				stop();
			}
		}
	};

	//Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
	cboxPublic.close = function () {
		$.event.trigger(cbox_cleanup);
		open = FALSE;
		$().unbind("keydown.cbox_close keydown.cbox_arrows");
		$window.unbind(cbox_resize+' resize.cboxie6 scroll.cboxie6');
		$overlay.css({cursor: 'auto'}).fadeOut('fast');
		
		$cbox
		.stop(TRUE, FALSE)
		.fadeOut('fast', function () {
			$loaded.remove();
			$cbox.css({'opacity': 1});
			$content.children().hide();
			$.event.trigger(cbox_closed);
		});
	};

	cboxPublic.element = function(){ return element; };

	cboxPublic.settings = defaults;
	
	// Initializes ColorBox when the DOM has loaded
	$(cboxPublic.init);

}(jQuery));


/*--------------------------------------------------------------------------*/
// Misc
/*--------------------------------------------------------------------------*/
$(document).ready(function(){
	$("a.lightwindow").colorbox();
	$("a.lightwindowemail").colorbox({iframe:true, width:400, height:500});
	
	var aURL = window.location.href.split('#');
	if (aURL.length > 1) {
		var sAnchor = aURL[1];
		$('a.lightwindow').each(function() {
			if (this.id == sAnchor) {
				$('#' +sAnchor).colorbox({open:true,socialLink:true,modHeight:30}); 
			}
		});
	}
	
	$("#event_tabs a").each(function() {
		this.onmousedown = function () {
			this.blur();
			return false;
		}
		this.onclick = function() {
			this.blur();
		}
		if ( /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ) {
			this.onfocus = function() {
				this.blur();
			}
		}
	});

});

// Store campaigns to pass to TM later
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

$(document).ready(function(){
	urlvars = getUrlVars();
	if (urlvars['utm_campaign'] != undefined && urlvars['utm_campaign'].length > 0) {
		source = urlvars['utm_source'];
		medium = urlvars['utm_medium'];
		campaign = urlvars['utm_campaign']
		camefrom = source + '_' + medium + '_' + campaign;
		setCookie('camefrom', camefrom, 28);
	}
});

// Hide the annoying focus borders on the tabs
// and enable cross domain Google Analytics tracking for TM.com links
$(document).ready(function(){
	$('a,label').each(function() {
		$(this).attr('hideFocus', 'true').css('outline', 'none');
	});
	
	var cfcprefix = '';
	var cfcprefixes = {
		atlantamotorspeedway: "cfc_ams",
		bristoldragway: "cfc_bms",
		bristolmotorspeedway: "cfc_bms",
		charlottemotorspeedway: "cfc_cms",
		infineonraceway: "cfc_inf",
		kentuckyspeedway: "cfc_ks",
		lvms: "cfc_lvms",
		nhms: "cfc_nhms",
		texasmotorspeedway: "cfc_tms"
	}
	
	var sitename = document.domain.replace(/(www|dev|probld)\./i, '');
	sitename = sitename.replace(/\.(com|org)/i, '');
	
	if (cfcprefixes[sitename] == undefined) {
		cfcprefix = sitename;
	} else {
		cfcprefix = cfcprefixes[sitename];
	}
	
	$("a[href*='ticketmaster']").attr('href', function() {
		newlink = this.href;
		
		// See if there is a camefrom code to apply
		camefromcode = getCookie('camefrom');
		
		// If so, replace the existing camefrom code or add a new one
		if (camefromcode.length > 0) {
			urlcodematch = this.href.match(/camefrom=[^&]*/i);
			urlcode = new String(urlcodematch);
			if (urlcodematch) {
				if (urlcode.length == 9) {
					newcode = urlcode + cfcprefix + '_' + camefromcode;
				} else {
					newcode = urlcode + '_' + camefromcode;
				}
				newcode = newcode.substr(0, 41);
				newlink = this.href.replace(urlcode, newcode);
			} else {
				separator = (this.href.search(/\?/) == -1) ? '?' : '&';
				newcode = cfcprefix + '_' + camefromcode;
				newcode = newcode.substr(0, 32);
				newlink = this.href + separator + 'CAMEFROM=' + newcode;
			}
		}
		
		return newlink;
	});
	
	$("a[href*='ticketmaster']").click(function(event) {
		// event.stopPropagation();
		// pageTracker._link(this.href);
		// pageTracker._link('https://de.ticketmaster.com/html.ng/');
		// event.preventDefault();
		// pageTracker._link(this.href);
		// window.location = pageTracker._getLinkerUrl(this.href);
		// return false;
	});
	
	$("#speedNews .article a, #cat_speed_news #news .chart a").click(function(event) {
		pageTracker._trackEvent('SpeedTV', 'Click', this.href);
	});
});

/*--------------------------------------------------------------------------*/
// jquery.tweet.js v1.0.0
/*--------------------------------------------------------------------------*/
(function($) {
  $.fn.tweet = function(o){
    var s = {
      username: ["seaofclouds"],              // [string]   required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"]
      avatar_size: null,                      // [integer]  height and width of avatar if displayed (48px max)
      count: 3,                               // [integer]  how many tweets to display?
      intro_text: null,                       // [string]   do you want text BEFORE your your tweets?
      outro_text: null,                       // [string]   do you want text AFTER your tweets?
      join_text:  null,                       // [string]   optional text in between date and tweet, try setting to "auto"
      auto_join_text_default: "i said,",      // [string]   auto text for non verb: "i said" bullocks
      auto_join_text_ed: "i",                 // [string]   auto text for past tense: "i" surfed
      auto_join_text_ing: "i am",             // [string]   auto tense for present tense: "i was" surfing
      auto_join_text_reply: "i replied to",   // [string]   auto tense for replies: "i replied to" @someone "with"
      auto_join_text_url: "i was looking at", // [string]   auto tense for urls: "i was looking at" http:...
      loading_text: null,                     // [string]   optional loading text, displayed while tweets load
      query: null                             // [string]   optional search query
    };
    
    if(o) $.extend(s, o);
    
    $.fn.extend({
      linkUrl: function() {
        var returning = [];
        var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
        this.each(function() {
          returning.push(this.replace(regexp,"<a href=\"$1\">$1</a>"))
        });
        return $(returning);
      },
      linkUser: function() {
        var returning = [];
        var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;
        this.each(function() {
          returning.push(this.replace(regexp,"<a href=\"http://twitter.com/$1\">@$1</a>"))
        });
        return $(returning);
      },
      linkHash: function() {
        var returning = [];
        var regexp = / [\#]+([A-Za-z0-9-_]+)/gi;
        this.each(function() {
          returning.push(this.replace(regexp, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all&from='+s.username.join("%2BOR%2B")+'">#$1</a>'))
        });
        return $(returning);
      },
      capAwesome: function() {
        var returning = [];
        this.each(function() {
          returning.push(this.replace(/(a|A)wesome/gi, 'AWESOME'))
        });
        return $(returning);
      },
      capEpic: function() {
        var returning = [];
        this.each(function() {
          returning.push(this.replace(/(e|E)pic/gi, 'EPIC'))
        });
        return $(returning);
      },
      makeHeart: function() {
        var returning = [];
        this.each(function() {
          returning.push(this.replace(/(&lt;)+[3]/gi, "<tt class='heart'>&#x2665;</tt>"))
        });
        return $(returning);
      }
    });

    function relative_time(time_value) {
      var parsed_date = Date.parse(time_value);
      var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
      var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
      if(delta < 60) {
      return 'less than a minute ago';
      } else if(delta < 120) {
      return 'about a minute ago';
      } else if(delta < (45*60)) {
      return (parseInt(delta / 60)).toString() + ' minutes ago';
      } else if(delta < (90*60)) {
      return 'about an hour ago';
      } else if(delta < (24*60*60)) {
      return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
      } else if(delta < (48*60*60)) {
      return '1 day ago';
      } else {
      return (parseInt(delta / 86400)).toString() + ' days ago';
      }
    }

    return this.each(function(){
      var list = $('<ul class="tweet_list">').appendTo(this);
      var intro = '<p class="tweet_intro">'+s.intro_text+'</p>'
      var outro = '<p class="tweet_outro">'+s.outro_text+'</p>'
      var loading = $('<p class="loading">'+s.loading_text+'</p>');
      if(typeof(s.username) == "string"){
        s.username = [s.username];
      }
      var query = '';
      if(s.query) {
        query += 'q='+s.query;
      }
      query += '&q=from:'+s.username.join('%20OR%20from:');
      var url = 'http://search.twitter.com/search.json?&'+query+'&rpp='+s.count+'&callback=?';
      if (s.loading_text) $(this).append(loading);
      $.getJSON(url, function(data){
        if (s.loading_text) loading.remove();
        if (s.intro_text) list.before(intro);
        $.each(data.results, function(i,item){
          // auto join text based on verb tense and content
          if (s.join_text == "auto") {
            if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) {
              var join_text = s.auto_join_text_reply;
            } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) {
              var join_text = s.auto_join_text_url;
            } else if (item.text.match(/^((\w+ed)|just) .*/im)) {
              var join_text = s.auto_join_text_ed;
            } else if (item.text.match(/^(\w*ing) .*/i)) {
              var join_text = s.auto_join_text_ing;
            } else {
              var join_text = s.auto_join_text_default;
            }
          } else {
            var join_text = s.join_text;
          };

          var join_template = '<span class="tweet_join"> '+join_text+' </span>';
          var join = ((s.join_text) ? join_template : ' ')
          var avatar_template = '<a class="tweet_avatar" href="http://twitter.com/'+ item.from_user+'"><img src="'+item.profile_image_url+'" height="'+s.avatar_size+'" width="'+s.avatar_size+'" alt="'+item.from_user+'\'s avatar" title="'+item.from_user+'\'s avatar" border="0"/></a>';
          var avatar = (s.avatar_size ? avatar_template : '')
          var date = '<a href="http://twitter.com/'+item.from_user+'/statuses/'+item.id+'" title="view tweet on twitter">'+relative_time(item.created_at)+'</a>';
          var text = '<span class="tweet_text">' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ '</span>';
          
          // until we create a template option, arrange the items below to alter a tweet's display.
          list.append('<li>' + avatar + date + join + text + '</li>');

          list.children('li:first').addClass('tweet_first');
          list.children('li:odd').addClass('tweet_even');
          list.children('li:even').addClass('tweet_odd');
        });
        if (s.outro_text) list.after(outro);
      });

    });
  };
})(jQuery);

/*--------------------------------------------------------------------------*/
// Form highlighting - Keep this at the end of the file
/*--------------------------------------------------------------------------*/
jQuery.fn.highlight = function(selector, className, eventStart, eventEnd){
	var className = className || 'highlight';
	if(eventStart == undefined && eventEnd == undefined){
		var eventStart = 'mouseover';
		var eventEnd = 'mouseout';
	}
	else if(eventStart == eventEnd || eventStart != undefined && eventEnd == undefined){
		var toggle = true;
	}
	
	this.each
		(
		function(){
			var tagName	= this.tagName.toLowerCase();
			
			if(tagName == 'form'){
				selector		= selector || 'li';
				var elements 	= jQuery("textarea, select, multi-select, :text, :image, :password, :radio, :checkbox, :file", this);

				elements.bind(
					'focus', 
					function(){
						var parents	= jQuery(this).parents(selector)
						var parent	= jQuery(parents.get(0))
						parent.addClass(className);
					}
				);
				
				elements.bind(
					'blur', 
					function(){
						var parents	= jQuery(this).parents(selector)
						var parent	= jQuery(parents.get(0))
						parent.removeClass(className);
					}
				);
			}else{
				if(tagName.match(/^(table|tbody)$/) != null){
					selector = selector || 'tr';
				}
				else if(tagName.match(/^(ul|ol)$/) != null){
					selector = selector || 'li';
				}
				else{
					selector = '*';
				}
					
				var elements = jQuery(selector, this);

				if(toggle){
					elements.bind(
						eventStart, 
						function(){
							if(jQuery(this).hasClass(className)){
								jQuery(this).removeClass(className);
							}
							else{
								jQuery(this).addClass(className);
							}
						}
					);
					
				}
					
				else{
					elements.bind(
						eventStart, 
						function(){
							jQuery(this).addClass(className);
						}
					);
						
					elements.bind(
						eventEnd, 
						function(){
							jQuery(this).removeClass(className);
						}
					);
				}
			}
		}
	);
}
