jQuery(document).ready(function(){
	if(jQuery("#content").hasClass('homepage'))
	{
		//homepage
		display_latest_tweet();
		start_featured_slideshow();
	}
	if(jQuery("#content").hasClass('portfolio'))
	{
		//portfolio
		portfolio_load();
		
	}
	if(jQuery("#content").hasClass('portfolio-client'))
	{
		//portfolio
		portfolio_client_load();
	}
	if(jQuery("#content").hasClass('distractions'))
	{
		//distractions
		distractions_load();	
	}
	if(jQuery("#content").hasClass('movie'))
	{
		//movie page
		jQuery("#movie-click-to-play").bind('click',function()
		{
			playVid()
		});
		jQuery("#movie-accordion").jCcordion();
		jQuery("#movie-cast-gallery").castGallery();
		jQuery(window).load(function(){
			jQuery("#prod-history .accordion-content .padding").jScrollPane({scrollbarWidth:10, scrollbarMargin:10});
			jQuery("#fan-art-gallery-wrap").jScrollPane({scrollbarWidth:10, scrollbarMargin:10});
			jQuery("#accolades-wrap").jScrollPane({scrollbarWidth:10, scrollbarMargin:10});
		});
	}
	//lightbox swfs
	jQuery('.swf').each(function(){
		var dWidth 	= parseInt(jQuery(this).attr('href').match(/width=[0-9]+/i)[0].replace('width=',''));
		var dHeight 	=  parseInt(jQuery(this).attr('href').match(/height=[0-9]+/i)[0].replace('height=',''));
		jQuery(this).fancybox({
			'width':dWidth,
			'height':dHeight,
			'autoScale' : false,
			'type' : 'swf',
			'overlayColor':'#000000',
			'padding':0
		});
	});
	
	//lightbox forced scale
	jQuery('.forcedScale').each(function(){
		jQuery(this).fancybox({
			'autoScale' : false,
			'overlayColor':'#000000'
		});
	});
	
	//tooltips
	jQuery('a.has-tooltip[title]').each(function()
	{
		jQuery(this).qtip(
		{ 
			style: 
			{ 
				background: jQuery(this).css('backgroundColor'), 
				color: '#fff',
				width: 200,
			    padding: 10,
				tip: true,
				border: {
			    	width: 2,
			        radius: 3,
			        color: darkerColor(jQuery(this).css('backgroundColor'))
			    }
			},
			position: 
			{
				corner: 
				{
	         		target: 'topMiddle',
			        tooltip: 'bottomMiddle'
			    }
		   	} 
		});	
	});
})

function portfolio_load()
{
	var delayer = 150;
	jQuery(".wrap-stuff").each(function()
	{
		delayer += 200;
		jQuery(this).css({top:'-186px'}).delay(delayer).animate({top: '0'},'slow','easeOutQuad');
		jQuery(this).hover(
		function()
		{
			jQuery(this).find(".client_responsibilities").stop().animate({height:30},'fast');
		},
		function()
		{
			jQuery(this).find(".client_responsibilities").stop().animate({height:22},'fast');
		});
		
	});
}

function portfolio_client_load()
{
	//count slider children and start sliding
	/*var delayer=0;
	jQuery(".project_slider").each(function()
	{
		if(jQuery(this).children(".project_media_image").length>1)
		{
			jQuery(this).clientSlideShow(delayer);delayer+=800;
		}
	});*/
	
	jQuery(document).keydown(function(e)
	{
		//console.log(e.keyCode);
		if(jQuery("#fancybox-overlay").css('display')=='none')
		{
			
		    if (e.keyCode == 37 || e.keyCode == 75) 
		    { 
		    	var url = jQuery(".client_pagination.prev").attr('href');
				if(typeof url != 'undefined')
			    {
			    	portfolio_navigate(url);
			    }
		    }
		    if (e.keyCode == 39 || e.keyCode == 74) 
		    { 
		    	var url = jQuery(".client_pagination.next").attr('href');
				if(typeof url != 'undefined')
			    {
			    	portfolio_navigate(url);
			    }
		    }
	    }
	});
	
	// intercept video url links, play in player
	jQuery(".project_media_link.video").each(function()
	{
		var url = jQuery(this).attr("href");
		if(typeof url == 'undefined'){url='';}
		jQuery(this).click(function(event)
		{
			event.preventDefault();
			var div=jQuery(this).parent();
			embed_video(url,div,1);
			
			return false;
		});
	});
}

function portfolio_navigate(url)
{
	//jQuery('#content').load(url+' #content');
	window.location = url;
}

function distractions_load()
{
	var maxDestractionsPerPage = 4;
	jQuery(".group_distractions_wrapper").each(function()
	{
		var theWrap = jQuery(this);
		theWrap.data('distractions',jQuery(this).find(".distraction").length);
		theWrap.data('currentPage',1);
		var totalPages = theWrap.data('distractions');
		theWrap.data('totalPages',totalPages);
		var thePage = jQuery(this).find(".distraction");
		var pageWidth = thePage.outerWidth(true);
		theWrap.data('pageWidth',pageWidth);
		theWrap.children(".group_distractions").width(theWrap.data('distractions')*theWrap.data('pageWidth'));
		if(theWrap.data('distractions')<=maxDestractionsPerPage)
		{
			theWrap.children('.distractions_next_btn').css({'display':'none'});
			theWrap.children('.distractions_prev_btn').css({'display':'none'});
		}
		else
		{
			theWrap.children('.distractions_prev_btn').css({'display':'none'});
			var curPage = theWrap.data('currentPage');
			theWrap.children('.distractions_next_btn').click(function()
			{
				var parentWrap = jQuery(this).parent(".group_distractions_wrapper");
				curPage++;
				if(parentWrap.data('totalPages')-curPage<(maxDestractionsPerPage-1))
				{
					curPage--;
					theWrap.children('.distractions_next_btn').css({'display':'none'});
				}
				parentWrap.data('currentPage',curPage);
				var newLeft = - ((curPage-1)*parentWrap.data('pageWidth'));
				jQuery(this).siblings(".group_distractions").stop().animate({marginLeft:newLeft});
				update_nav_buttons();
			});
			theWrap.children('.distractions_prev_btn').click(function()
			{
				var parentWrap = jQuery(this).parent(".group_distractions_wrapper");
				curPage--;
				if(curPage==0)
				{
					curPage++;
					theWrap.children('.distractions_prev_btn').css({'display':'none'});
				}
				parentWrap.data('currentPage',curPage);
				var newLeft = - ((curPage-1)*parentWrap.data('pageWidth'));
				jQuery(this).siblings(".group_distractions").stop().animate({marginLeft:newLeft});
				update_nav_buttons();
			});
			
			function update_nav_buttons()
			{
				if(curPage>1)
				{
					theWrap.children('.distractions_prev_btn').css({'display':'block'});
				}
				else
				{
					theWrap.children('.distractions_prev_btn').css({'display':'none'});
				}
				if(totalPages-curPage>(maxDestractionsPerPage-1))
				{
					theWrap.children('.distractions_next_btn').css({'display':'block'});
				}
				else
				{
					theWrap.children('.distractions_next_btn').css({'display':'none'});
				}
			}
		}
	});
	// intercept video url links, play in player
	jQuery(".distraction.video").each(function()
	{
		var url = jQuery(this).attr("href");
		if(typeof url == 'undefined'){url='';}
		jQuery(this).click(function(event)
		{
			event.preventDefault();
			var div="#currently_playing_window";
			embed_video(url,div,1);
			
			var title = jQuery(this).children(".title").html();
			var description = jQuery(this).children(".description").html();
			jQuery("#currently_playing_title .title_text").html(title);
			jQuery("#currently_playing_description p").html(description);
			
			return false;
		});
	});
}

function embed_video(url, div, autoplay)
{
	var height = jQuery(div).height();
	var width = jQuery(div).width();
	
	if(url!='' && url.match('vimeo'))
	{
		url = url.match(/http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/);
		url = url[2];
		jQuery(div).html('<iframe src="http://player.vimeo.com/video/'+url+'?title=0&amp;byline=0&amp;portrait=0&amp;autoplay='+autoplay+'&amp;color=2a6190" width="'+width+'" height="'+height+'" frameborder="0"></iframe>');
	}
	else if (url!='' && url.match('youtube'))
	{
		url = url.replace(/^[^v]+v.(.{11}).*/,"$1");
		jQuery(div).html('<iframe title="YouTube video player" width="'+width+'" height="'+height+'" src="http://www.youtube.com/embed/'+url+'?autoplay='+autoplay+'" frameborder="0" allowfullscreen></iframe>');
	}
}

jQuery.fn.castGallery = function()
{
	var currentMember = 1;
	var paneWidth = jQuery(this).children(".cast-member-box").width();
	var totalMembers = jQuery(this).children(".cast-member-box").size();
	jQuery("#movie-case-gallery-next").bind('click',function()
	{
		nextMember();
	});
	function nextMember()
	{
		currentMember ++;
		if(currentMember > totalMembers)
		{
			currentMember=1;
		}
		var newMargin = -(paneWidth*(currentMember-1));
		jQuery("#movie-cast-gallery").animate({marginLeft:newMargin});
	}
}

jQuery.fn.clientSlideShow = function(delayer)
{
	var showSpeed = 4000;
	var me = jQuery(this);
		
	me.data('slideCount',me.children(".project_media_image").length);
	me.data('currSlide',1);
	me.data('slideWidth',me.children(".project_media_image").width());
	
	var totalWidth = me.data('slideCount') * me.data('slideWidth');
	me.css({width:totalWidth});
	
	var delayTheTimer = setTimeout(function()
	{ 
		setInterval(function()
		{
			nextPortfolioSlide(me);
		},showSpeed); 
	},delayer);
	
	return me;
}

function nextPortfolioSlide(me)
{	
	var curSlide = me.data('currSlide');
	curSlide++;
	
	if(curSlide>me.data('slideCount')){curSlide=1;}
	me.data('currSlide',curSlide);
	
	var newMargin = -((curSlide-1)*me.data('slideWidth'));
	me.stop().animate({marginLeft:newMargin},'slow');
}

jQuery.fn.jCcordion = function()
{
	var parentUl = jQuery(this);
	parentUl.data('current-pane','');
	var openHeight = 440;
	var closedHeight = 50;
	var firstOpen = false;
	
	parentUl.children(".pane").css({height:closedHeight}).each(function()
	{
		var pane = jQuery(this);
		if(pane.hasClass('pane')&&!pane.hasClass('dont_open'))
		{
			pane.bind('click',function()
			{
				togglePane(pane);
			});
		}
		if(!firstOpen)
		{
			firstOpen = true;
			pane.animate({height:openHeight},'fast');
			parentUl.data('current-pane',pane);
		}
		
	});
		
	function togglePane(pane)
	{
		if(pane!=parentUl.data('current-pane'))
		{
			parentUl.data('current-pane').animate({height:closedHeight},'fast');
			pane.animate({height:openHeight},'fast');
			parentUl.data('current-pane',pane);
		}
	}
	
	return jQuery(this);
}

function playVid()
{
	jQuery("#movie-click-to-play").unbind('click');
	jQuery("#movie-hero-image").css({height:560});
	//var theVid = '<iframe id="player" style="display:none;" src="http://player.vimeo.com/video/20216147?title=0&amp;byline=0&amp;portrait=0&amp;color=2a6190&amp;autoplay=1" width="940" height="529" frameborder="0"></iframe>';
	var theVid = '<iframe id="player" title="YouTube video player" width="940" height="560" src="http://www.youtube.com/embed/IseyTkPSZsk?autoplay=1&hd=1&rel=0&fmt=22" frameborder="0" allowfullscreen></iframe>';
	jQuery("#movie-hero-image").html(theVid);
	jQuery("#movie-play-btn").hide();
	jQuery("#movie-hero-title").hide();
	jQuery("#player").show();
	
}

function stopVid()
{
	jQuery("#player").hide();
	jQuery("#movie-click-to-play").unbind('click');
	jQuery("#movie-hero-image").animate({height:420},'fast');
	jQuery("#movie-hero-image").html('');
	jQuery("#movie-play-btn").show();
	jQuery("#movie-stop-btn").hide();
	jQuery("#the-title").show();
	jQuery("#close-title").hide();
	jQuery("#movie-click-to-play").bind('click',function(){playVid();});
}

function display_latest_tweet()
{
	jQuery("body").append(
    '<sc'+'ript type="text/javascript" src="http://twitter.com/statuses/user_timeline/watermanstudios.json?callback=twitterCallback2&amp;count=1"></sc'+'ript>'
  	);
}

function twitterCallback2(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    var theTweetLink = '<a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">'+relative_time(twitters[i].created_at)+'</a>';
    statusHTML.push(status);
  }
  jQuery("#home-latest-tweets").children("p").html(statusHTML.join());
  jQuery("#tweet-time-ago").html(theTweetLink);
  //jQuery("#twitter-avatar").attr("src", "http://a0.twimg.com/profile_images/1399278517/icon_bigger.png");
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  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);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*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';
  }
}


var theSlidesElement = jQuery("#home-featured-posts-slider-slides");
var theSlidesControls = jQuery("#home-featured-posts-slider-controls");
var slideWidth = jQuery("#home-featured-posts-slider").width();
var slides = Array();
var sliderLinks = Array();
var slideDuration = 8000; //8 seconds.
var currentSlide = 1;
var theTimer;

function start_featured_slideshow()
{	
	//push slides into array
    theSlidesElement.children().each(function()
    {
        slides.push(this);
    });
    
    //push slide links into array
    var i = 1;
    theSlidesControls.children().each(function(){
        sliderLinks.push(this);
        //add controls
        this.number = i;
        jQuery(this).bind('click',function(){
        	gotoSlide(this.number);
        });
        i++;
    });
    
    //make first slide link "active"
    jQuery(sliderLinks[0]).addClass('active');
	
	//start Timer
    theTimer = setTimeout("gotoSlide(null)",slideDuration);
};

function gotoSlide(aSlide)
{
    //remove active class from current slide link
    jQuery(sliderLinks[currentSlide-1]).removeClass('active');
    
    if(aSlide)
    {
	    clearTimeout(theTimer);
	    jQuery(theSlidesElement).stop(true, true);
	    currentSlide = aSlide;
	} else {	        
        currentSlide++;
    }
    if(currentSlide>slides.length)
    {
        currentSlide=1;
    }
    var newMargin = -((currentSlide-1)*slideWidth);
    jQuery(theSlidesElement).animate(
    {
    	marginLeft:newMargin
	},"slow");
		
    //add active class to new slide link
    jQuery(sliderLinks[currentSlide-1]).addClass('active');
    
    //console.log("switching slides to "+currentSlide);
    theTimer = setTimeout("gotoSlide()",slideDuration);
}

function darkerColor(color) {
	var rgb = getRGB(color);
    
    for(var i = 0; i < rgb.length; i++){
        rgb[i] = Math.max(0, rgb[i] - 40);
    }
    
    var newColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
    
    return newColor;
}

function getRGB(color) {
	var result;
	
	// Look for rgb(num,num,num)
	if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
	
	// Look for rgb(num%,num%,num%)
	if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) return [parseFloat(result[1]) * 2.55, parseFloat(result[2]) * 2.55, parseFloat(result[3]) * 2.55];
	
	// Look for #a0b1c2
	if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)];
	
	// Look for #fff
	if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) return [parseInt(result[1] + result[1], 16), parseInt(result[2] + result[2], 16), parseInt(result[3] + result[3], 16)];
}

