
/* 
	Libraries: we put 'em all here it reduce the number of requests. Cause 1 big file is 
	faster than 10 small ones */


    $(document).ready(function() {
        if ( document.getElementById('news_scroller') ) {
        	$('#news_scroller').jScrollPane();
        }

        if ( document.getElementById('social_feed_content') ) {
    		$('#social_feed_content').jScrollPane();
    		$('#social_feeds_tabs_list li.default').click();
    	}


        if ( document.getElementById('promos') ) {
            $("#promos a").click( function(e) {
               var link = e.currentTarget;
               window.open(link.href); 
               return false;
            });
        }

        $('a[rel=lightbox]').lightBox();

        if ( $('.slider')[0] ) {
            $('.slider').slider()
        }
    });

    if ( document.getElementById('site_logo') ) {
        $(window).load(function () {
            $("img#site_logo").fadeIn(600, function() {
                $("ul#primary_nav").fadeIn(600, function() {
                    $("ul#action_links").fadeIn(600);
                });
            });
        });
    }



var currentSocialFeedTab = null;
var currentSocialFeedSubTab = null;
var currentSocialFeedType = null;

function changeSocialFeed(tab, feedData, type){
	
	if(tab != currentSocialFeedTab && type != currentSocialFeedType){
		
		var months = new Array();
		months['01'] = 'Jan';
		months['02'] = 'Feb';
		months['03'] = 'Mar';
		months['04'] = 'Apr';
		months['05'] = 'May';
		months['06'] = 'Jun';
		months['07'] = 'Jul';
		months['08'] = 'Aug';
		months['09'] = 'Sep';
		months['10'] = 'Oct';
		months['11'] = 'Nov';
		months['12'] = 'Dec';
		
		if(type == "twitter" || type == "youtube"){
			
			$('#social_feed_logo').fadeOut(300);
			$('#social_feed_title').fadeOut(300, function(){
				$('#social_feed_title').html((type == "youtube") ? feedData.youtube_channel : feedData.twitter_updates);
				$('#social_feed_title').fadeIn(300);
				$('#social_feed_logo').css('background', 'url(' + feedData.logo + ')');
				$('#social_feed_logo').fadeIn(300);
			});
			
			if(currentSocialFeedTab != null){
				$(currentSocialFeedTab).removeClass("selected");
			}
			
			$(tab).addClass('selected');			
			currentSocialFeedTab = tab;
		}
		
		else{
			if(currentSocialFeedSubTab != null){
				$(currentSocialFeedSubTab).removeClass("selected");
			}
			
			$(tab).addClass('selected');			
			currentSocialFeedSubTab = tab;
		}
		
		$('#social_feed_items').html('');
		$('#social_feed_content').jScrollPaneRemove();
		
		if(type == "twitter"){
			
			var subFeedsList = $(
				"<div id='social_feed_categories'>" + 
					"<ul>" + 
						"<li class='nonClickable'>" + feedData.viewing + "</li>" + 
						"<li class='divider'></li>" +
						"<li onclick=\"changeSocialFeed(this,feedData.twitter,'twitter_commdev')\"><div>" + feedData.commdev_tweets + "</div></li>" +
						"<li class='divider'></li>" +
						"<li onclick=\"changeSocialFeed(this,feedData.twitter,'twitter_fans')\"><div>" + feedData.fan_tweets + "</div></li>" +
						"<li class='divider'></li>" +
					"</ul>" + 
				"</div>"
			);
			
			$('#social_feeds_widget').append(subFeedsList);
			$('#social_feed_content_container').addClass('hasSubCats');
			$('#social_feeds_top_separator').addClass('twitter');
			
			$('#social_feed_categories ul li:nth-child(3)').click();
		}
		
		else if(type == "twitter_commdev" || type == "twitter_fans"){
			
			var feedURL = (type == "twitter_commdev") ? feedData.commdev_feed_url : feedData.fans_feed_url;
			
			$.getJSON(feedURL, function(data){
				var itemCount = 0;
				$.each(data, function(i, item){
					
					var date = new Date(item.created_at);
					var pHour = date.getHours();
					var pMinute = date.getMinutes();
					var pMonth = (date.getMonth() + 1).toString();
					var pDay = date.getDate();
					
					var pAmPm = "AM";
					
					if(pMonth.length < 2){pMonth = "0" + pMonth;}
					pMonth = months[pMonth];
					
					if(pHour >= 12){
						if(pHour > 12){pHour -= 12;}
						var pAmPm = "PM";
					}
					
					if(type == "twitter_fans" && item.retweeted_status != null && item.retweeted_status != "undefined"){
						item = item.retweeted_status;
					}
					
					var li = $(
						"<li id=\"social_feed_item_" + itemCount + "\""  + (((itemCount+2)%2==0) ? " class=\"even\"" : "") + ">" + 
							"<table cellspacing='0' cellpadding='0'>" + 
								"<tr>" + 
									"<td valign='middle'>" + 
										"<a href='http://www.twitter.com/" + item.user.screen_name + "' target='_blank'><img src='" + item.user.profile_image_url + "'></a>" + 
									"</td>" + 
									"<td valign='middle'>" + 
										"<div style='margin-bottom: 10px;'>" +
											"<a href='http://www.twitter.com/" + item.user.screen_name + "' target='_blank'>" + item.user.screen_name + "</a> " + parseTwitterStatus(item.text) + 
										"</div>" +
										"<div style='font-size: 11px; font-weight: bold; color: #062b42'>" +
											pMonth + " " + pDay + ", " + pHour + ":" + pMinute + " " + pAmPm + " via " + item.source +
										"</div>" +
									"</td>" + 
								"</tr>" + 
							"</table>" + 
						"</li>"
					);
					
					$('#social_feed_items').append(li);
					li.css({'opacity': 0});
					setTimeout("$('#social_feed_item_" + itemCount + "').animate({'opacity': 1}, 150)", 100 * itemCount);
					itemCount ++;
				});
				
				$('#social_feed_items li:first-child').css('margin-top', '10px');
				$('#social_feed_content').jScrollPane();
			});
		}
		
		else if(type == "youtube"){
			$('#social_feed_categories').html('');
			$('#social_feed_categories').remove();
			$('#social_feed_content_container').removeClass('hasSubCats');
			$('#social_feeds_top_separator').removeClass('twitter');
			
			$.getJSON(feedData.feed_url, function(data){
				var itemCount = 0;
				$.each(data.feed.entry, function(i, item){
					
					var title = unescape(item.title.$t);
					var thumbnail = unescape(item.media$group.media$thumbnail[0].url);
					var link = unescape(item.link[0].href);
					var publishDate = unescape(item.published.$t);
					var views = unescape(item.yt$statistics.viewCount);
					
					//2010-07-02T22:19:42.000Z
					var pYear = publishDate.substr(0, 4);
					var pMonth = months[publishDate.substr(5, 2)];
					var pDay = publishDate.substr(8, 2);
					
					var pHour = publishDate.substr(11, 2);
					var pMinute = publishDate.substr(14, 2);					
					var pAmPm = "AM";
					
					if(pHour >= 12){
						if(pHour > 12){pHour -= 12;}
						var pAmPm = "PM";
					}
					
					var li = $(
						"<li id=\"social_feed_item_" + itemCount + "\""  + (((itemCount+2)%2==0) ? " class=\"youtube even\"" : " class=\"youtube\"") + ">" + 
							"<table cellspacing='0' cellpadding='0'>" + 
								"<tr>" + 
									"<td valign='middle'>" + 
										"<a href='" + link + "' target='_blank'><img src='" + thumbnail + "'></a>" + 
									"</td>" + 
									"<td valign='middle'>" + 
										"<div style='width: 100%; margin-bottom: 10px;'><a href='" + link + "' target='_blank' style='color:#ffffff; font-size: 13px; line-height: 16px;'>" + title + "</a></div>" + 
										"<div style='width:100%;font-size:11px;font-weight:bold'>" + pMonth + " " + pDay + ", " + pHour + ":" + pMinute + " " + pAmPm + "<span style='padding: 0px 10px 0px 10px'>|</span>Views: " + views +"</div>" + 
									"</td>" + 
								"</tr>" + 
							"</table>" + 
						"</li>"
					);
					
					$('#social_feed_items').append(li);
					li.css({'opacity': 0});
					setTimeout("$('#social_feed_item_" + itemCount + "').animate({'opacity': 1}, 150)", 100 * itemCount);
					itemCount ++;
				});
				
				$('#social_feed_items li:first-child').css('margin-top', '16px');
				$('#social_feed_content').jScrollPane();
			});
		}
		
		currentSocialFeedType = type;			
	}
}

function parseTwitterStatus(t){
	// links
	t = t.replace(/[a-z]+:\/\/[a-z0-9-_]+\.[a-z0-9-_:~%&\?\/.=]+[^:\.,\)\s*$]/ig, function(m){return '<a target="_blank" href="' + m + '">' + ((m.length > 25) ? m.substr(0, 24) + '...' : m) + '</a>';});
	// @
	t = t.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2){return m1 + '@<a target="_blank" href="http://twitter.com/' + m2 + '">' + m2 + '</a>';});
	// #
	t = t.replace(/(^|[^\w'"]+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2){return m1 + '#<a target="_blank" href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';});
	
	return t;
}


/** jquery cookie **/

jQuery.cookie=function(_1,_2,_3){if(typeof _2!="undefined"){_3=_3||{};if(_2===null){_2="";_3.expires=-1;}var _4="";if(_3.expires&&(typeof _3.expires=="number"||_3.expires.toUTCString)){var _5;if(typeof _3.expires=="number"){_5=new Date();_5.setTime(_5.getTime()+(_3.expires*24*60*60*1000));}else{_5=_3.expires;}_4="; expires="+_5.toUTCString();}var _6=_3.path?"; path="+(_3.path):"";var _7=_3.domain?"; domain="+(_3.domain):"";var _8=_3.secure?"; secure":"";document.cookie=[_1,"=",encodeURIComponent(_2),_4,_6,_7,_8].join("");}else{var _9=null;if(document.cookie&&document.cookie!=""){var _a=document.cookie.split(";");for(var i=0;i<_a.length;i++){var _b=jQuery.trim(_a[i]);if(_b.substring(0,_1.length+1)==(_1+"=")){_9=decodeURIComponent(_b.substring(_1.length+1));break;}}}return _9;}};


/* jscrollPane */
(function($) {

$.jScrollPane = {
	active : []
};
$.fn.jScrollPane = function(settings)
{
	settings = $.extend({}, $.fn.jScrollPane.defaults, settings);

	var rf = function() { return false; };
	
	return this.each(
		function()
		{
			var $this = $(this);
			var paneEle = this;
			var currentScrollPosition = 0;
			var paneWidth;
			var paneHeight;
			var trackHeight;
			var trackOffset = settings.topCapHeight;
			var $container;
			
			if ($(this).parent().is('.jScrollPaneContainer')) {
				$container = $(this).parent();
				currentScrollPosition = settings.maintainPosition ? $this.position().top : 0;
				var $c = $(this).parent();
				paneWidth = $c.innerWidth();
				paneHeight = $c.outerHeight();
				$('>.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown, >.jScrollCap', $c).remove();
				$this.css({'top':0});
			} else {
				$this.data('originalStyleTag', $this.attr('style'));
				// Switch the element's overflow to hidden to ensure we get the size of the element without the scrollbars [http://plugins.jquery.com/node/1208]
				$this.css('overflow', 'hidden');
				this.originalPadding = $this.css('paddingTop') + ' ' + $this.css('paddingRight') + ' ' + $this.css('paddingBottom') + ' ' + $this.css('paddingLeft');
				this.originalSidePaddingTotal = (parseInt($this.css('paddingLeft')) || 0) + (parseInt($this.css('paddingRight')) || 0);
				paneWidth = $this.innerWidth();
				paneHeight = $this.innerHeight();
				$container = $('<div></div>')
					.attr({'className':'jScrollPaneContainer'})
					.css(
						{
							'height':paneHeight+'px', 
							'width':paneWidth+'px'
						}
					);
				if (settings.enableKeyboardNavigation) {
					$container.attr(
						'tabindex', 
						settings.tabIndex
					);
				}
				$this.wrap($container);
				$container = $this.parent();
				// deal with text size changes (if the jquery.em plugin is included)
				// and re-initialise the scrollPane so the track maintains the
				// correct size
				$(document).bind(
					'emchange', 
					function(e, cur, prev)
					{
						$this.jScrollPane(settings);
					}
				);
				
			}
			trackHeight = paneHeight;
			
			if (settings.reinitialiseOnImageLoad) {
				// code inspired by jquery.onImagesLoad: http://plugins.jquery.com/project/onImagesLoad
				// except we re-initialise the scroll pane when each image loads so that the scroll pane is always up to size...
				// TODO: Do I even need to store it in $.data? Is a local variable here the same since I don't pass the reinitialiseOnImageLoad when I re-initialise?
				var $imagesToLoad = $.data(paneEle, 'jScrollPaneImagesToLoad') || $('img', $this);
				var loadedImages = [];
				
				if ($imagesToLoad.length) {
					$imagesToLoad.each(function(i, val)	{
						$(this).bind('load readystatechange', function() {
							if($.inArray(i, loadedImages) == -1){ //don't double count images
								loadedImages.push(val); //keep a record of images we've seen
								$imagesToLoad = $.grep($imagesToLoad, function(n, i) {
									return n != val;
								});
								$.data(paneEle, 'jScrollPaneImagesToLoad', $imagesToLoad);
								var s2 = $.extend(settings, {reinitialiseOnImageLoad:false});
								$this.jScrollPane(s2); // re-initialise
							}
						}).each(function(i, val) {
							if(this.complete || this.complete===undefined) { 
								//needed for potential cached images
								this.src = this.src; 
							} 
						});
					});
				};
			}

			var p = this.originalSidePaddingTotal;
			var realPaneWidth = paneWidth - settings.scrollbarWidth - settings.scrollbarMargin - p;

			var cssToApply = {
				'height':'auto',
				'width': realPaneWidth + 'px'
			}

			if(settings.scrollbarOnLeft) {
				cssToApply.paddingLeft = settings.scrollbarMargin + settings.scrollbarWidth + 'px';
			} else {
				cssToApply.paddingRight = settings.scrollbarMargin + 'px';
			}

			$this.css(cssToApply);

			var contentHeight = $this.outerHeight();
			var percentInView = paneHeight / contentHeight;
			
			var isScrollable = percentInView < .99;
			$container[isScrollable ? 'addClass' : 'removeClass']('jScrollPaneScrollable');

			if (isScrollable) {
				$container.append(
					$('<div></div>').addClass('jScrollCap jScrollCapTop').css({height:settings.topCapHeight}),
					$('<div></div>').attr({'className':'jScrollPaneTrack'}).css({'width':settings.scrollbarWidth+'px'}).append(
						$('<div></div>').attr({'className':'jScrollPaneDrag'}).css({'width':settings.scrollbarWidth+'px'}).append(
							$('<div></div>').attr({'className':'jScrollPaneDragTop'}).css({'width':settings.scrollbarWidth+'px'}),
							$('<div></div>').attr({'className':'jScrollPaneDragBottom'}).css({'width':settings.scrollbarWidth+'px'})
						)
					),
					$('<div></div>').addClass('jScrollCap jScrollCapBottom').css({height:settings.bottomCapHeight})
				);
				
				var $track = $('>.jScrollPaneTrack', $container);
				var $drag = $('>.jScrollPaneTrack .jScrollPaneDrag', $container);
				
				
				var currentArrowDirection;
				var currentArrowTimerArr = [];// Array is used to store timers since they can stack up when dealing with keyboard events. This ensures all timers are cleaned up in the end, preventing an acceleration bug.
				var currentArrowInc;
				var whileArrowButtonDown = function() 
				{
					if (currentArrowInc > 4 || currentArrowInc % 4 == 0) {
						positionDrag(dragPosition + currentArrowDirection * mouseWheelMultiplier);
					}
					currentArrowInc++;
				};

				if (settings.enableKeyboardNavigation) {
					$container.bind(
						'keydown.jscrollpane',
						function(e) 
						{
							switch (e.keyCode) {
								case 38: //up
									currentArrowDirection = -1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 40: //down
									currentArrowDirection = 1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 33: // page up
								case 34: // page down
									// TODO
									return false;
								default:
							}
						}
					).bind(
						'keyup.jscrollpane',
						function(e) 
						{
							if (e.keyCode == 38 || e.keyCode == 40) {
								for (var i = 0; i < currentArrowTimerArr.length; i++) {
									clearInterval(currentArrowTimerArr[i]);
								}
								return false;
							}
						}
					);
				}

				if (settings.showArrows) {
					
					var currentArrowButton;
					var currentArrowInterval;

					var onArrowMouseUp = function(event)
					{
						$('html').unbind('mouseup', onArrowMouseUp);
						currentArrowButton.removeClass('jScrollActiveArrowButton');
						clearInterval(currentArrowInterval);
					};
					var onArrowMouseDown = function() {
						$('html').bind('mouseup', onArrowMouseUp);
						currentArrowButton.addClass('jScrollActiveArrowButton');
						currentArrowInc = 0;
						whileArrowButtonDown();
						currentArrowInterval = setInterval(whileArrowButtonDown, 100);
					};
					$container
						.append(
							$('<a></a>')
								.attr(
									{
										'href':'javascript:;', 
										'className':'jScrollArrowUp', 
										'tabindex':-1
									}
								)
								.css(
									{
										'width':settings.scrollbarWidth+'px',
										'top':settings.topCapHeight + 'px'
									}
								)
								.html('Scroll up')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = -1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf),
							$('<a></a>')
								.attr(
									{
										'href':'javascript:;', 
										'className':'jScrollArrowDown', 
										'tabindex':-1
									}
								)
								.css(
									{
										'width':settings.scrollbarWidth+'px',
										'bottom':settings.bottomCapHeight + 'px'
									}
								)
								.html('Scroll down')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = 1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf)
						);
					var $upArrow = $('>.jScrollArrowUp', $container);
					var $downArrow = $('>.jScrollArrowDown', $container);
				}
				
				if (settings.arrowSize) {
					trackHeight = paneHeight - settings.arrowSize - settings.arrowSize;
					trackOffset += settings.arrowSize;
				} else if ($upArrow) {
					var topArrowHeight = $upArrow.height();
					settings.arrowSize = topArrowHeight;
					trackHeight = paneHeight - topArrowHeight - $downArrow.height();
					trackOffset += topArrowHeight;
				}
				trackHeight -= settings.topCapHeight + settings.bottomCapHeight;
				$track.css({'height': trackHeight+'px', top:trackOffset+'px'})
				
				var $pane = $(this).css({'position':'absolute', 'overflow':'visible'});
				
				var currentOffset;
				var maxY;
				var mouseWheelMultiplier;
				// store this in a seperate variable so we can keep track more accurately than just updating the css property..
				var dragPosition = 0;
				var dragMiddle = percentInView*paneHeight/2;
				
				// pos function borrowed from tooltip plugin and adapted...
				var getPos = function (event, c) {
					var p = c == 'X' ? 'Left' : 'Top';
					return event['page' + c] || (event['client' + c] + (document.documentElement['scroll' + p] || document.body['scroll' + p])) || 0;
				};
				
				var ignoreNativeDrag = function() {	return false; };
				
				var initDrag = function()
				{
					ceaseAnimation();
					currentOffset = $drag.offset(false);
					currentOffset.top -= dragPosition;
					maxY = trackHeight - $drag[0].offsetHeight;
					mouseWheelMultiplier = 2 * settings.wheelSpeed * maxY / contentHeight;
				};
				
				var onStartDrag = function(event)
				{
					initDrag();
					dragMiddle = getPos(event, 'Y') - dragPosition - currentOffset.top;
					$('html').bind('mouseup', onStopDrag).bind('mousemove', updateScroll).bind('mouseleave', onStopDrag)
					if ($.browser.msie) {
						$('html').bind('dragstart', ignoreNativeDrag).bind('selectstart', ignoreNativeDrag);
					}
					return false;
				};
				var onStopDrag = function()
				{
					$('html').unbind('mouseup', onStopDrag).unbind('mousemove', updateScroll);
					dragMiddle = percentInView*paneHeight/2;
					if ($.browser.msie) {
						$('html').unbind('dragstart', ignoreNativeDrag).unbind('selectstart', ignoreNativeDrag);
					}
				};
				var positionDrag = function(destY)
				{
					$container.scrollTop(0);
					destY = destY < 0 ? 0 : (destY > maxY ? maxY : destY);
					dragPosition = destY;
					$drag.css({'top':destY+'px'});
					var p = destY / maxY;
					$this.data('jScrollPanePosition', (paneHeight-contentHeight)*-p);
					$pane.css({'top':((paneHeight-contentHeight)*p) + 'px'});
					$this.trigger('scroll');
					if (settings.showArrows) {
						$upArrow[destY == 0 ? 'addClass' : 'removeClass']('disabled');
						$downArrow[destY == maxY ? 'addClass' : 'removeClass']('disabled');
					}
				};
				var updateScroll = function(e)
				{
					positionDrag(getPos(e, 'Y') - currentOffset.top - dragMiddle);
				};
				
				var dragH = Math.max(Math.min(percentInView*(paneHeight-settings.arrowSize*2), settings.dragMaxHeight), settings.dragMinHeight);
				
				$drag.css(
					{'height':dragH+'px'}
				).bind('mousedown', onStartDrag);
				
				var trackScrollInterval;
				var trackScrollInc;
				var trackScrollMousePos;
				var doTrackScroll = function()
				{
					if (trackScrollInc > 8 || trackScrollInc%4==0) {
						positionDrag((dragPosition - ((dragPosition - trackScrollMousePos) / 2)));
					}
					trackScrollInc ++;
				};
				var onStopTrackClick = function()
				{
					clearInterval(trackScrollInterval);
					$('html').unbind('mouseup', onStopTrackClick).unbind('mousemove', onTrackMouseMove);
				};
				var onTrackMouseMove = function(event)
				{
					trackScrollMousePos = getPos(event, 'Y') - currentOffset.top - dragMiddle;
				};
				var onTrackClick = function(event)
				{
					initDrag();
					onTrackMouseMove(event);
					trackScrollInc = 0;
					$('html').bind('mouseup', onStopTrackClick).bind('mousemove', onTrackMouseMove);
					trackScrollInterval = setInterval(doTrackScroll, 100);
					doTrackScroll();
					return false;
				};
				
				$track.bind('mousedown', onTrackClick);
				
				$container.bind(
					'mousewheel',
					function (event, delta) {
						delta = delta || (event.wheelDelta ? event.wheelDelta / 120 : (event.detail) ?
-event.detail/3 : 0);
						initDrag();
						ceaseAnimation();
						var d = dragPosition;
						positionDrag(dragPosition - delta * mouseWheelMultiplier);
						var dragOccured = d != dragPosition;
						return !dragOccured;
					}
				);

				var _animateToPosition;
				var _animateToInterval;
				function animateToPosition()
				{
					var diff = (_animateToPosition - dragPosition) / settings.animateStep;
					if (diff > 1 || diff < -1) {
						positionDrag(dragPosition + diff);
					} else {
						positionDrag(_animateToPosition);
						ceaseAnimation();
					}
				}
				var ceaseAnimation = function()
				{
					if (_animateToInterval) {
						clearInterval(_animateToInterval);
						delete _animateToPosition;
					}
				};
				var scrollTo = function(pos, preventAni)
				{
					if (typeof pos == "string") {
						// Legal hash values aren't necessarily legal jQuery selectors so we need to catch any
						// errors from the lookup...
						try {
							$e = $(pos, $this);
						} catch (err) {
							return;
						}
						if (!$e.length) return;
						pos = $e.offset().top - $this.offset().top;
					}
					ceaseAnimation();
					var maxScroll = contentHeight - paneHeight;
					pos = pos > maxScroll ? maxScroll : pos;
					$this.data('jScrollPaneMaxScroll', maxScroll);
					var destDragPosition = pos/maxScroll * maxY;
					if (preventAni || !settings.animateTo) {
						positionDrag(destDragPosition);
					} else {
						$container.scrollTop(0);
						_animateToPosition = destDragPosition;
						_animateToInterval = setInterval(animateToPosition, settings.animateInterval);
					}
				};
				$this[0].scrollTo = scrollTo;
				
				$this[0].scrollBy = function(delta)
				{
					var currentPos = -parseInt($pane.css('top')) || 0;
					scrollTo(currentPos + delta);
				};
				
				initDrag();
				
				scrollTo(-currentScrollPosition, true);
			
				// Deal with it when the user tabs to a link or form element within this scrollpane
				$('*', this).bind(
					'focus',
					function(event)
					{
						var $e = $(this);
						
						// loop through parents adding the offset top of any elements that are relatively positioned between
						// the focused element and the jScrollPaneContainer so we can get the true distance from the top
						// of the focused element to the top of the scrollpane...
						var eleTop = 0;
						
						var preventInfiniteLoop = 100;
						
						while ($e[0] != $this[0]) {
							eleTop += $e.position().top;
							$e = $e.offsetParent();
							if (!preventInfiniteLoop--) {
								return;
							}
						}
						
						var viewportTop = -parseInt($pane.css('top')) || 0;
						var maxVisibleEleTop = viewportTop + paneHeight;
						var eleInView = eleTop > viewportTop && eleTop < maxVisibleEleTop;
						if (!eleInView) {
							var destPos = eleTop - settings.scrollbarMargin;
							if (eleTop > viewportTop) { // element is below viewport - scroll so it is at bottom.
								destPos += $(this).height() + 15 + settings.scrollbarMargin - paneHeight;
							}
							scrollTo(destPos);
						}
					}
				)
				
				
				if (settings.observeHash) {
					if (location.hash && location.hash.length > 1) {
						setTimeout(function(){
							scrollTo(location.hash);
						}, $.browser.safari ? 100 : 0);
					}
					
					// use event delegation to listen for all clicks on links and hijack them if they are links to
					// anchors within our content...
					$(document).bind('click', function(e){
						$target = $(e.target);
						if ($target.is('a')) {
							var h = $target.attr('href');
							if (h && h.substr(0, 1) == '#' && h.length > 1) {
								setTimeout(function(){
									scrollTo(h, !settings.animateToInternalLinks);
								}, $.browser.safari ? 100 : 0);
							}
						}
					});
				}
				
				// Deal with dragging and selecting text to make the scrollpane scroll...
				function onSelectScrollMouseDown(e)
				{
				   $(document).bind('mousemove.jScrollPaneDragging', onTextSelectionScrollMouseMove);
				   $(document).bind('mouseup.jScrollPaneDragging',   onSelectScrollMouseUp);
				  
				}
				
				var textDragDistanceAway;
				var textSelectionInterval;
				
				function onTextSelectionInterval()
				{
					direction = textDragDistanceAway < 0 ? -1 : 1;
					$this[0].scrollBy(textDragDistanceAway / 2);
				}

				function clearTextSelectionInterval()
				{
					if (textSelectionInterval) {
						clearInterval(textSelectionInterval);
						textSelectionInterval = undefined;
					}
				}
				
				function onTextSelectionScrollMouseMove(e)
				{
					var offset = $this.parent().offset().top;
					var maxOffset = offset + paneHeight;
					var mouseOffset = getPos(e, 'Y');
					textDragDistanceAway = mouseOffset < offset ? mouseOffset - offset : (mouseOffset > maxOffset ? mouseOffset - maxOffset : 0);
					if (textDragDistanceAway == 0) {
						clearTextSelectionInterval();
					} else {
						if (!textSelectionInterval) {
							textSelectionInterval  = setInterval(onTextSelectionInterval, 100);
						}
					}
				}

				function onSelectScrollMouseUp(e)
				{
				   $(document)
					  .unbind('mousemove.jScrollPaneDragging')
					  .unbind('mouseup.jScrollPaneDragging');
				   clearTextSelectionInterval();
				}

				$container.bind('mousedown.jScrollPane', onSelectScrollMouseDown);

				
				$.jScrollPane.active.push($this[0]);
				
			} else {
				$this.css(
					{
						'height':paneHeight+'px',
						'width':paneWidth-this.originalSidePaddingTotal+'px',
						'padding':this.originalPadding
					}
				);
				$this[0].scrollTo = $this[0].scrollBy = function() {};
				// clean up listeners
				$this.parent().unbind('mousewheel').unbind('mousedown.jScrollPane').unbind('keydown.jscrollpane').unbind('keyup.jscrollpane');
			}
			
		}
	)
};

$.fn.jScrollPaneRemove = function()
{
	$(this).each(function()
	{
		$this = $(this);
		var $c = $this.parent();
		if ($c.is('.jScrollPaneContainer')) {
			$this.css(
				{
					'top':'',
					'height':'',
					'width':'',
					'padding':'',
					'overflow':'',
					'position':''
				}
			);
			$this.attr('style', $this.data('originalStyleTag'));
			$c.after($this).remove();
		}
	});
}

$.fn.jScrollPane.defaults = {
	scrollbarWidth : 10,
	scrollbarMargin : 5,
	wheelSpeed : 18,
	showArrows : false,
	arrowSize : 0,
	animateTo : false,
	dragMinHeight : 1,
	dragMaxHeight : 99999,
	animateInterval : 100,
	animateStep: 3,
	maintainPosition: true,
	scrollbarOnLeft: false,
	reinitialiseOnImageLoad: false,
	tabIndex : 0,
	enableKeyboardNavigation: true,
	animateToInternalLinks: false,
	topCapHeight: 0,
	bottomCapHeight: 0,
	observeHash: true
};

// clean up the scrollTo expandos
$(window).bind('unload', function() {
		var els = $.jScrollPane.active; 
		for (var i=0; i<els.length; i++) {
			els[i].scrollTo = els[i].scrollBy = null;
		}
	}
);

})(jQuery);

/**
 * SWFAddress 2.2: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/>
 *
 * SWFAddress is (c) 2006-2008 Rostislav Hristov and contributors
 * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
 */
if(typeof asual=="undefined"){asual={};}if(typeof asual.swfaddress=="undefined"){asual.swfaddress={};}if(typeof asual.util=="undefined"){asual.util={};}asual.util.Browser=new function(){var B=-1,D=navigator.userAgent,H=false,G=false,F=false,A=false,C=false,I=false;var E=function(K,J){return parseFloat(D.substr(D.indexOf(K)+J));};if(A=/Opera/.test(D)){B=parseFloat(navigator.appVersion);}if(H=/MSIE/.test(D)){B=E("MSIE",4);}if(I=/Chrome/.test(D)){B=E("Chrome",7);}if(G=/Camino/.test(D)){B=E("Camino",7);}if(F=(/AppleWebKit/.test(D)&&!I)){B=E("Safari",7);}if(C=(/Firefox/.test(D)&&!G)){B=E("Firefox",8);}this.toString=function(){return "[class Browser]";};this.getVersion=function(){return B;};this.isIE=function(){return H;};this.isSafari=function(){return F;};this.isOpera=function(){return A;};this.isCamino=function(){return G;};this.isFirefox=function(){return C;};this.isChrome=function(){return I;};};asual.util.Events=new function(){var C="DOMContentLoaded",G="onstop",I=window,F=document,B=[],A=asual.util,D=A.Browser;this.toString=function(){return "[class Events]";};this.addListener=function(L,J,K){B.push({o:L,t:J,l:K});if(!(J==C&&(D.isIE()||D.isSafari()))){if(L.addEventListener){L.addEventListener(J,K,false);}else{if(L.attachEvent){L.attachEvent("on"+J,K);}}}};this.removeListener=function(N,K,L){for(var J=0,M;M=B[J];J++){if(M.o==N&&M.t==K&&M.l==L){B.splice(J,1);break;}}if(!(K==C&&(D.isIE()||D.isSafari()))){if(N.removeEventListener){N.removeEventListener(K,L,false);}else{if(N.detachEvent){N.detachEvent("on"+K,L);}}}};var H=function(){for(var K=0,J;J=B[K];K++){if(J.t!=C){A.Events.removeListener(J.o,J.t,J.l);}}};var E=function(){if(F.readyState=="interactive"){function J(){F.detachEvent(G,J);H();};F.attachEvent(G,J);I.setTimeout(function(){F.detachEvent(G,J);},0);}};if(D.isIE()||D.isSafari()){(function(){try{if((D.isIE()&&F.body)||!/loaded|complete/.test(F.readyState)){F.documentElement.doScroll("left");}}catch(K){return setTimeout(arguments.callee,0);}for(var J=0,K;K=B[J];J++){if(K.t==C){K.l.call(null);}}})();}if(D.isIE()){I.attachEvent("onbeforeunload",E);}this.addListener(I,"unload",H);};asual.util.Functions=new function(){this.toString=function(){return "[class Functions]";};this.extend=function(C,A){function B(){};B.prototype=C.prototype;A.prototype=new B();A.prototype.constructor=A;A.superConstructor=C;A.superClass=C.prototype;return A;};this.bind=function(F,B,E){for(var C=2,D,A=[];D=arguments[C];C++){A.push(D);}return function(){return F.apply(B,A);};};};asual.swfaddress.WEBAddressEvent=function(D){var A=asual.swfaddress.WEBAddress;this.toString=function(){return "[object WEBAddressEvent]";};this.type=D;this.target=[A][0];this.value=A.getValue();this.path=A.getPath();this.pathNames=A.getPathNames();this.parameters={};var E=A.getParameterNames();for(var C=0,B=E.length;C<B;C++){this.parameters[E[C]]=A.getParameter(E[C]);}this.parametersNames=E;};asual.swfaddress.WEBAddressEvent.INIT="init";asual.swfaddress.WEBAddressEvent.CHANGE="change";asual.swfaddress.WEBAddress=new function(){var ID="",_2f="function",_30="undefined",_31=asual.swfaddress,_32=asual.util,_33=_32.Browser,_34=_32.Events,_35=_32.Functions,_36=_33.getVersion(),_37=false,_t=top,_d=_t.document,_h=_t.history,_l=_t.location,_si=setInterval,_st=setTimeout,_dc=decodeURIComponent,_ec=encodeURIComponent,_40,_41,_42,_43,_44=_d.title,_45=_h.length,_46=false,_47=false,_48=true,_49=true,_4a=[],_4b={},_4c={history:true,html:false,strict:true,tracker:"_trackDefault"};if(_33.isOpera()){_37=_36>=9.02;}if(_33.isIE()){_37=_36>=6;}if(_33.isSafari()){_37=_36>=312;}if(_33.isChrome()){_37=_36>=0.2;}if(_33.isCamino()){_37=_36>=1;}if(_33.isFirefox()){_37=_36>=1;}if((!_37&&_l.href.indexOf("#")!=-1)||(_33.isSafari()&&_36<418&&_l.href.indexOf("#")!=-1&&_l.search!="")){_d.open();_d.write("<html><head><meta http-equiv=\"refresh\" content=\"0;url="+_l.href.substr(0,_l.href.indexOf("#"))+"\" /></head></html>");_d.close();}var _4d=function(){var _4e=_l.href.indexOf("#");return _4e!=-1?_l.href.substr(_4e+1):"";};var _4f=_4d();var _50=function(_51,_52){if(_4c.strict){_51=_52?(_51.substr(0,1)!="/"?"/"+_51:_51):(_51==""?"/":_51);}return _51;};var _53=function(_54){return (_33.isIE()&&_l.protocol=="file:")?_4f.replace(/\?/,"%3F"):_54;};var _55=function(el){for(var i=0,l=el.childNodes.length,s;i<l;i++){if(el.childNodes[i].src){_42=String(el.childNodes[i].src);}if(s=_55(el.childNodes[i])){return s;}}};var _5a=function(){if(_33.isIE()&&_d.title!=_44&&_d.title.indexOf("#")!=-1){_d.title=_44;if(_4c.html&&_40&&_40.contentWindow&&_40.contentWindow.document){_40.contentWindow.document.title=_44;}}};var _5b=function(){if(!_46){var _5c=_4d();var _5d=!(_4f==_5c||_4f==_dc(_5c)||_dc(_4f)==_5c);if(_33.isSafari()&&_36<523){if(_45!=_h.length){_45=_h.length;if(typeof _4a[_45-1]!=_30){_4f=_4a[_45-1];}_5e.call(this);}}else{if(_33.isIE()&&_5d){if(_36<7){_l.reload();}else{this.setValue(_5c);}}else{if(_5d){_4f=_5c;_5e.call(this);}}}_5a.call(this);}};var _5f=function(_60){this.dispatchEvent(new _31.WEBAddressEvent(_60));_60=_60.substr(0,1).toUpperCase()+_60.substr(1);if(typeof this["on"+_60]==_2f){this["on"+_60]();}};var _61=function(){_5f.call(this,"init");};var _62=function(){_5f.call(this,"change");};var _5e=function(){_62.call(this);_st(_35.bind(_63,this),10);};var _64=function(_65){if(typeof urchinTracker==_2f){urchinTracker(_65);}if(typeof pageTracker!=_30&&typeof pageTracker._trackPageview==_2f){pageTracker._trackPageview(_65);}};eval("var _trackDefault = "+_64+";");var _63=function(){if(typeof _4c.tracker!=_30&&eval("typeof "+_4c.tracker+" != \""+_30+"\"")){var fn=eval(_4c.tracker);if(typeof fn==_2f){fn(_dc((_l.pathname+(/\/$/.test(_l.pathname)?"":"/")+this.getValue()).replace(/\/\//,"/").replace(/^\/$/,"")));}}};var _67=function(){var doc=_40.contentWindow.document;doc.open();doc.write("<html><head><title>"+_d.title+"</title><script>var "+ID+" = \""+_ec(_4d())+"\";</script></head></html>");doc.close();};var _69=function(){var win=_40.contentWindow;var src=win.location.href;_4f=(_4c.html)?(src.indexOf("?")>-1?_dc(src.substr(src.indexOf("?")+1)):""):(typeof win[ID]!=_30?_dc(win[ID]):"");if(_4c.html){win.document.title=_44;}if(_4f!=_4d()){_5e.call(_31.WEBAddress);_l.hash=_53(_4f);}};var _6c=function(){if(!_47){_47=true;var _6d="id=\""+ID+"\" style=\"position:absolute;top:-9999px;\"";if(_33.isIE()&&_36<8){_d.body.appendChild(_d.createElement("div")).innerHTML="<iframe "+_6d+" src=\""+(_4c.html?_42.replace(/\.js(\?.*)?$/,".html")+"?"+_ec(_4d()):"javascript:false;")+"\" width=\"0\" height=\"0\"></iframe>";_40=_d.getElementById(ID);_st(function(){_34.addListener(_40,"load",_69);if(!_4c.html&&typeof _40.contentWindow[ID]==_30){_67();}},50);}else{if(_33.isSafari()){if(_36<418){_d.body.innerHTML+="<form "+_6d+" method=\"get\"></form>";_41=_d.getElementById(ID);}if(typeof _l[ID]==_30){_l[ID]={};}if(typeof _l[ID][_l.pathname]!=_30){_4a=_l[ID][_l.pathname].split(",");}}}_st(_35.bind(_61,this),1);_st(_35.bind(_62,this),2);_st(_35.bind(_63,this),10);if(_33.isIE()&&_36>=8){_d.body.onhashchange=_35.bind(_5b,this);_43=_si(_35.bind(_5a,this),50);}else{_43=_si(_35.bind(_5b,this),50);}}};var _6e=function(){clearInterval(_43);};this.onInit=null;this.onChange=null;this.toString=function(){return "[class WEBAddress]";};this.back=function(){_h.back();};this.forward=function(){_h.forward();};this.up=function(){var _6f=this.getPath();this.setValue(_6f.substr(0,_6f.lastIndexOf("/",_6f.length-2)+(_6f.substr(_6f.length-1)=="/"?1:0)));};this.go=function(_70){_h.go(_70);};this.addEventListener=function(_71,_72){if(typeof _4b[_71]==_30){_4b[_71]=[];}_4b[_71].push(_72);};this.removeEventListener=function(_73,_74){if(typeof _4b[_73]!=_30){for(var i=0,l;l=_4b[_73][i];i++){if(l==_74){break;}}_4b[_73].splice(i,1);}};this.dispatchEvent=function(_77){if(this.hasEventListener(_77.type)){_77.target=this;for(var i=0,l;l=_4b[_77.type][i];i++){l(_77);}return true;}return false;};this.hasEventListener=function(_7a){return (typeof _4b[_7a]!=_30&&_4b[_7a].length>0);};this.getBaseURL=function(){var url=_l.href;if(url.indexOf("#")!=-1){url=url.substr(0,url.indexOf("#"));}if(url.substr(url.length-1)=="/"){url=url.substr(0,url.length-1);}return url;};this.getStrict=function(){return _4c.strict;};this.setStrict=function(_7c){_4c.strict=_7c;};this.getHistory=function(){return _4c.history;};this.setHistory=function(_7d){_4c.history=_7d;};this.getTracker=function(){return _4c.tracker;};this.setTracker=function(_7e){_4c.tracker=_7e;};this.getTitle=function(){return _d.title;};this.setTitle=function(_7f){if(!_37){return null;}if(typeof _7f==_30){return;}if(_7f=="null"){_7f="";}_44=_d.title=_7f;_st(function(){if((_49||_4c.html)&&_40&&_40.contentWindow&&_40.contentWindow.document){_40.contentWindow.document.title=_7f;_49=false;}if(!_48&&(_33.isCamino()||_33.isFirefox())){_l.replace(_l.href.indexOf("#")!=-1?_l.href:_l.href+"#");}_48=false;},50);};this.getStatus=function(){return _t.status;};this.setStatus=function(_80){if(typeof _80==_30){return;}if(!_33.isSafari()){_80=_50((_80!="null")?_80:"",true);if(_80=="/"){_80="";}if(!(/http(s)?:\/\//.test(_80))){var _81=_l.href.indexOf("#");_80=(_81==-1?_l.href:_l.href.substr(0,_81))+"#"+_80;}_t.status=_80;}};this.resetStatus=function(){_t.status="";};this.getValue=function(){if(!_37){return null;}return _50(_4f,false);};this.setValue=function(_82){if(!_37){return null;}if(typeof _82==_30){return;}if(_82=="null"){_82="";}_82=_50(_82,true);if(_82=="/"){_82="";}if(_4f==_82||_4f==_dc(_82)||_dc(_4f)==_82){return;}_48=true;_4f=_82;_46=true;_5e.call(_31.WEBAddress);_4a[_h.length]=_4f;if(_33.isSafari()){if(_4c.history){_l[ID][_l.pathname]=_4a.toString();_45=_h.length+1;if(_36<418){if(_l.search==""){_41.action="#"+_4f;_41.submit();}}else{if(_36<523||_4f==""){var evt=_d.createEvent("MouseEvents");evt.initEvent("click",true,true);var _84=_d.createElement("a");_84.href="#"+_4f;_84.dispatchEvent(evt);}else{_l.hash="#"+_4f;}}}else{_l.replace("#"+_4f);}}else{if(_4f!=_4d()){if(_4c.history){_l.hash=(_33.isChrome()?"":"#")+_53(_4f);}else{_l.replace("#"+_4f);}}}if((_33.isIE()&&_36<8)&&_4c.history){if(_4c.html){var loc=_40.contentWindow.location;loc.assign(loc.pathname+"?"+_4d());}else{_st(_67,50);}}if(_33.isSafari()){_st(function(){_46=false;},1);}else{_46=false;}};this.getPath=function(){var _86=this.getValue();return (_86.indexOf("?")!=-1)?_86.split("?")[0]:_86;};this.getPathNames=function(){var _87=this.getPath();var _88=_87.split("/");if(_87.substr(0,1)=="/"||_87.length==0){_88.splice(0,1);}if(_87.substr(_87.length-1,1)=="/"){_88.splice(_88.length-1,1);}return _88;};this.getQueryString=function(){var _89=this.getValue();var _8a=_89.indexOf("?");return (_8a!=-1&&_8a<_89.length)?_89.substr(_8a+1):"";};this.getParameter=function(_8b){var _8c=this.getValue();var _8d=_8c.indexOf("?");if(_8d!=-1){_8c=_8c.substr(_8d+1);var _8e=_8c.split("&");var p,i=_8e.length;while(i--){p=_8e[i].split("=");if(p[0]==_8b){return p[1];}}}return "";};this.getParameterNames=function(){var _91=this.getValue();var _92=_91.indexOf("?");var _93=[];if(_92!=-1){_91=_91.substr(_92+1);if(_91!=""&&_91.indexOf("=")!=-1){var _94=_91.split("&");var i=0;while(i<_94.length){_93.push(_94[i].split("=")[0]);i++;}}}return _93;};if(_37){for(var i=1;i<_45;i++){_4a.push("");}_4a.push(_4d());if(_33.isIE()&&_l.hash!=_4d()){_l.hash="#"+_53(_4d());}_55(document);var _qi=_42.indexOf("?");if(_42&&_qi>-1){var _98,_99=_42.substr(_qi+1).split("&");for(var i=0,p;p=_99[i];i++){_98=p.split("=");if(/^(history|html|strict)$/.test(_98[0])){_4c[_98[0]]=(isNaN(_98[1])?eval(_98[1]):(parseFloat(_98[1])>0));}if(/^tracker$/.test(_98[0])){_4c[_98[0]]=_98[1];}}}if(/file:\/\//.test(_l.href)){_4c.html=false;}var _ei=_42.indexOf(".js"),l;if(_42&&_ei>-1){while(_ei--){l=_42.substr(_ei,1);if(/(\/|\\)/.test(l)){break;}ID=l+ID;}}_5a.call(this);if(window==_t){_34.addListener(document,"DOMContentLoaded",_35.bind(_6c,this));}_34.addListener(_t,"load",_35.bind(_6c,this));_34.addListener(_t,"unload",_35.bind(_6e,this));}else{_63();}};SWFAddressEvent=asual.swfaddress.SWFAddressEvent=function(A){SWFAddressEvent.superConstructor.apply(this,arguments);this.target=[SWFAddress][0];this.toString=function(){return "[object SWFAddressEvent]";};};asual.util.Functions.extend(asual.swfaddress.WEBAddressEvent,SWFAddressEvent);asual.swfaddress.SWFAddressEvent.INIT="init";asual.swfaddress.SWFAddressEvent.CHANGE="change";SWFAddress=asual.swfaddress.SWFAddress=new function(){var _9e="undefined",_t=top,_l=_t.location,_a1=this,_a2=[],_a3=[],_a4={},_a5=asual.util,_a6=asual.util.Functions,_a7=asual.swfaddress.WEBAddress;for(var p in _a7){this[p]=_a7[p];}var _a9=function(_aa){this.dispatchEvent(new SWFAddressEvent(_aa));_aa=_aa.substr(0,1).toUpperCase()+_aa.substr(1);if(typeof this["on"+_aa]=="function"){this["on"+_aa]();}};var _ab=function(e){if(_a3.length>0){var _ad=window.open(_a3[0],_a3[1],eval(_a3[2]));if(typeof _a3[3]!=_9e){eval(_a3[3]);}}_a3=[];};var _ae=function(){if(_a5.Browser.isSafari()){document.body.addEventListener("click",_ab);}_a9.call(this,"init");};var _af=function(){_b0();_a9.call(this,"change");};var _b0=function(){for(var i=0,id,obj,_b4=SWFAddress.getValue(),_b5="setSWFAddressValue";id=_a2[i];i++){obj=document.getElementById(id);if(obj){if(obj.parentNode&&typeof obj.parentNode.so!=_9e){obj.parentNode.so.call(_b5,_b4);}else{if(!(obj&&typeof obj[_b5]!=_9e)){var _b6=obj.getElementsByTagName("object");var _b7=obj.getElementsByTagName("embed");obj=((_b6[0]&&typeof _b6[0][_b5]!=_9e)?_b6[0]:((_b7[0]&&typeof _b7[0][_b5]!=_9e)?_b7[0]:null));}if(obj){obj[_b5](decodeURIComponent(_b4));}}}else{if(obj=document[id]){if(typeof obj[_b5]!=_9e){obj[_b5](_b4);}}}}};this.toString=function(){return "[class SWFAddress]";};this.addEventListener=function(_b8,_b9){if(typeof _a4[_b8]==_9e){_a4[_b8]=[];}_a4[_b8].push(_b9);};this.removeEventListener=function(_ba,_bb){if(typeof _a4[_ba]!=_9e){for(var i=0,l;l=_a4[_ba][i];i++){if(l==_bb){break;}}_a4[_ba].splice(i,1);}};this.dispatchEvent=function(_be){if(typeof _a4[_be.type]!=_9e&&_a4[_be.type].length){_be.target=this;for(var i=0,l;l=_a4[_be.type][i];i++){l(_be);}return true;}return false;};this.hasEventListener=function(_c1){return (typeof _a4[_c1]!=_9e&&_a4[_c1].length>0);};this.href=function(url,_c3){_c3=typeof _c3!=_9e?_c3:"_self";if(_c3=="_self"){self.location.href=url;}else{if(_c3=="_top"){_l.href=url;}else{if(_c3=="_blank"){window.open(url);}else{_t.frames[_c3].location.href=url;}}}};this.popup=function(url,_c5,_c6,_c7){try{var _c8=window.open(url,_c5,eval(_c6));}catch(ex){}_a3=arguments; if(typeof _c7!=_9e){eval(_c7);}};this.getIds=function(){return _a2;};this.getId=function(_c9){return _a2[0];};this.setId=function(id){_a2[0]=id;};this.addId=function(id){this.removeId(id);_a2.push(id);};this.removeId=function(id){for(var i=0;i<_a2.length;i++){if(id==_a2[i]){_a2.splice(i,1);break;}}};this.setValue=function(_ce){if(_a2.length>0!=0&&_a5.Browser.isFirefox()&&navigator.userAgent.indexOf("Mac")!=-1){setTimeout(function(){_a7.setValue.call(SWFAddress,_ce);},500);}else{_a7.setValue.call(this,_ce);}};_a7.addEventListener("init",_a6.bind(_ae,this));_a7.addEventListener("change",_a6.bind(_af,this));(function(){var _cf;if(typeof FlashObject!=_9e){SWFObject=FlashObject;}if(typeof SWFObject!=_9e&&SWFObject.prototype&&SWFObject.prototype.write){var _s1=SWFObject.prototype.write;SWFObject.prototype.write=function(){_cf=arguments;if(this.getAttribute("version").major<8){this.addVariable("$swfaddress",SWFAddress.getValue());((typeof _cf[0]=="string")?document.getElementById(_cf[0]):_cf[0]).so=this;}var _d1;if(_d1=_s1.apply(this,_cf)){_a1.addId(this.getAttribute("id"));}return _d1;};}if(typeof swfobject!=_9e){var _d2=swfobject.registerObject;swfobject.registerObject=function(){_cf=arguments;_d2.apply(this,_cf);_a1.addId(_cf[0]);};var _d3=swfobject.createSWF;swfobject.createSWF=function(){_cf=arguments;_d3.apply(this,_cf);_a1.addId(_cf[0].id);};var _d4=swfobject.embedSWF;swfobject.embedSWF=function(){_cf=arguments;_d4.apply(this,_cf);_a1.addId(_cf[8].id);};}if(typeof UFO!=_9e){var _u=UFO.create;UFO.create=function(){_cf=arguments;_u.apply(this,_cf);_a1.addId(_cf[0].id);};}if(typeof AC_FL_RunContent!=_9e){var _a=AC_FL_RunContent;AC_FL_RunContent=function(){_cf=arguments;_a.apply(this,_cf);for(var i=0,l=_cf.length;i<l;i++){if(_cf[i]=="id"){_a1.addId(_cf[i+1]);}}};}})();};


/**
 * jQuery lightBox plugin
 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * and adapted to me for use like a plugin from jQuery.
 * @name jquery-lightbox-0.5.js
 * @author Leandro Vieira Pinho - http://leandrovieira.com
 * @version 0.5
 * @date April 11, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
 * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US
 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
 */
(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:media_url + '//img/lightbox-ico-loading.gif',imageBtnPrev:media_url + '//images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:media_url + '//img/lightbox-btn-close.gif',imageBlank:media_url + '//img/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;}
function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i<jQueryMatchedObj.length;i++){settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));}}
while(settings.imageArray[settings.activeImage][0]!=objClicked.getAttribute('href')){settings.activeImage++;}
_set_image_to_view();}
function _set_interface(){$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="'+settings.imageLoading+'"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="'+settings.imageBtnClose+'"></a></div></div></div></div>');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});}
function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}
var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}}
$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();}
if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}}
function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}}
if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}}
_enable_keyboard_navigation();}
function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});}
function _disable_keyboard_navigation(){$(document).unbind();}
function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;}
key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();}
if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}}
if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}}
function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];}
if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}}
function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});}
function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}
windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=xScroll;}else{pageWidth=windowWidth;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);return arrayPageSize;};function ___getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};function ___pause(ms){var date=new Date();curDate=null;do{var curDate=new Date();}
while(curDate-date<ms);};return this.unbind('click').click(_initialize);};})(jQuery);



/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;( function($) {
	$.fn.superfish = function(op){

		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
			over = function(){
				var $$ = $(this), menu = getMenu($$);
				clearTimeout(menu.sfTimer);
				$$.showSuperfishUl().siblings().hideSuperfishUl();
			},
			out = function(){
				var $$ = $(this), menu = getMenu($$), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray($$[0],o.$path)>-1);
					$$.hideSuperfishUl();
					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
				},o.delay);	
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
			
		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(ul)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;
			
			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();
			
			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);
			
		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 800,
		animation	: {opacity:'show'},
		speed		: 'normal',
		autoArrows	: true,
		dropShadows : true,
		disableHI	: false,		// true disables hoverIntent detection
		onInit		: function(){}, // callback functions
		onBeforeShow: function(){},
		onShow		: function(){},
		onHide		: function(){}
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>ul').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>ul:hidden').css('visibility','visible');
			sf.IE7fix.call($ul);
			o.onBeforeShow.call($ul);
			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
			return this;
		}
	});

})(jQuery);

/** Slider **/

(function($){
    $.fn.slider = function() {
        var panelContainer = $('ul#panels');
        var numberOfPages = $('ul#panels li').length;
        
        $('#slide_total').text(numberOfPages);
    
        // bad hardcoding. bad vance no bisquet
        panelContainer[0].style.width = (892 * numberOfPages) + 'px'; 
        
        var scrollTo = function(dir) {

            var curPage = parseInt($('#slide_current').text());
            var nextPage = ( dir == 'left' ) ? curPage + 1 : curPage -1;
            var to = (nextPage -1) * -892;
            
            $('ul#panels').animate({left: to}, 'slow');
            $('#slide_current').text(nextPage);
            
            // remove clicks
            $('a#slide_right').unbind('click');
            $('a#slide_left').unbind('click');
            $('a#slide_right').removeClass('inactive');
            $('a#slide_left').removeClass('inactive');
            
            if ( nextPage <= 1 ) {
                $('a#slide_left').click( function() { scrollTo('left') } );
                $('a#slide_right').addClass('inactive');
            } else if (  nextPage >= numberOfPages ) {
                $('a#slide_right').click( function() { scrollTo('right'); } );
                $('a#slide_left').addClass('inactive');
            } else {
                $('a#slide_left').click( function() { scrollTo('left') } );
                $('a#slide_right').click( function() { scrollTo('right'); } );
            }
        };
        
        $('a#slide_left').click( function() { scrollTo('left') } );
        $('a#slide_right').click( function() { scrollTo('right'); } );
        
        
    };
  
})(jQuery);
