/*
 * Steve Martin
 * JS Version 1.0
 * Written by Knicknack (http://knicknack.com)
 */

/*
 * Steve Martin
 *
 * @function N/A
 *   XX
 */
var SM = function() 
{
	/*
	 * E-mail Submission
	 *
	 */
	this.SubmitEmail = function ()
	{
		var email 	= $('#form_email').val();
		var url 	= 'http://app.topspin.net/api/v1/fan/create_fan?resp_format=xml&fan%5Bsource_campaign%5D=http://app.topspin.net/api/v1/artist/3837/campaign/10094485&fan%5Bemail%5D=' + email + '&fan%5Breferring_url%5D=http://www.stevemartin.com/&fan%5Bconfirmation_target%5D=http://labs.topspin.net/e4m/confirm.php?sessionid=3f66ccf859a7c9177a8928b4414dfe8c';
		
		if(email != 'Enter your e-mail for a free song!') {

			$.ajax({
				type: "POST",
				url: url,
				success: function(msg){

					$('.email').animate({ "marginTop":"-=23px" , opacity:0 }, 350);
					
					$('.email-thankyou').css({"display":"block"});
					$('.email-thankyou').animate({ opacity:1 }, 500);
					
					setTimeout(reloadExclusiveSubmit, 4000);

				}
			});

		}
		
		/*
		 * Reset the form
		 *
		 */
		function reloadExclusiveSubmit() 
		{
			$('.email-thankyou').animate({ opacity:0 }, 500, function () { $(this).css({"display":"none"}); });
			$('#form_email').val('Enter your e-mail for a free song!');
			
			$('.email').animate({ "marginTop":"+=23px" , opacity:1 }, 350, function () { 
				
			});
		}

	}
} // end function, EB

/* Load default objects */
var SM = new SM;

/*
 *
 * @function enableMouseovers
 *   Enables the navigation hand mouseover
 */
var hand_position = 0;
 
function enableMouseovers() 
{

	$("li.nav-item").mouseover(function()
	{
		setHandPosition(this,'hover');

	});
	
	$(".navigation").hover(function()
	{
		$('.hand').animate({"marginTop": hand_position}, {queue:false, duration:375});
	});
}

function setHandPosition(item,type)
{
	var speed;
	var middle =$(item).height() / 2;
		
	var position = ((($(item).position().top - $('.hand').height()) + (($('.hand').height())/ 2)) + ( middle / 2 ) ) - 30;
	
	if(type == 'default') {
		hand_position = position;
		speed = 600;
	} else {
		speed = 375;
	}
	
	$('.hand').animate({"marginTop": position}, {queue:false, duration:speed});
}

function checkActive() 
{
	var currentPage = window.location.pathname;
	
	currentPage  = currentPage.replace("http://www.stevemartin.com/", "");
	currentPage  = currentPage.replace("http://stevemartin.com/", "");
	currentPage  = currentPage.replace("http://stevemartin.typepad.com/", "");
	currentPage  = currentPage.replace(".html", "");
	
	currentPage  = currentPage.replace("stevemartin/", "");
	currentPage  = currentPage.replace("site/", "");
	currentPage  = currentPage.replace("dev/", "");
	
	currentPage  = currentPage.replace("/", "");
	currentPage  = currentPage.replace("/", "");
	currentPage  = currentPage.replace("-", "");
	currentPage  = currentPage.replace("-", "");
	
	if (currentPage == "" || currentPage == "index") {
		currentPage = "home";
	} else if (hasNumbers(currentPage)){
		currentPage = "blog";
	} 

	$("#nav_item_"+currentPage).addClass('selected');
	setHandPosition("#nav_item_"+currentPage,'default');
}

function hasNumbers(t)
{
	var regex = /\d/g;
	return regex.test(t);
}


// Twitter Module

var tweets				= new Array();
var tweet_user 			= 'stevemartintogo';
var tweet_rotate_cid	= 0;
var tweet_delay			= 5000;
var tweet_timer;

function loadTweets() 
{
	var twitter_api_url = 'http://search.twitter.com/search.json?q=&callback=?';
	var twitter_query    = '&lang=all&from='+tweet_user+'&rpp=15';
	
	var url = 'http://www.twitter.com/statuses/user_timeline/' + tweet_user + '.json?callback=twitterCallback&count=20';
	
	$.getJSON(
		twitter_api_url + twitter_query,
		function(data) {
			$.each(data.results, function(i, tweet) {

				if(tweet.text != undefined) {
					var tweet_date = new Date(tweet.created_at);
					var date_now   = new Date();
					var date_diff  = date_now - tweet_date;
					var tweet_time = Math.round(date_diff/(1000*60*60));
					
					if(tweet_time < 1){
						var tweet_time   = Math.round(date_diff/(1000*60));
						tweet_time += ' minutes ago';
					} else { 
						tweet_time += ' hours ago'; 
					}
					
					var tweet_id			= tweet.id;
					var tweet_text 			= tweet.text.searchLinks().searchUsers();
					var tweet_plain_text 	= tweet.text;
					var tweet_user 			= tweet.from_user;
					
					tweets.push(new Array( tweet_id , tweet_text , tweet_time , tweet_user , tweet_plain_text ));

				}
			});
			
			$('#twitter-loading').animate({ opacity: 0 , "marginTop": "15px" }, 500,
				function () {
					$(this).remove();
					rotateTweet();
				}
			);
			checkTwitterButtons();
		}
	);
	
	String.prototype.searchLinks = function() {
		return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
			return m.link(m);
		});
	};
	
	String.prototype.searchUsers = function() {
		return this.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
			return m1 + '@<a href="http://twitter.com/' + m2 + '" target="_blank">' + m2 + '</a>';
		});
	}; 
}

function outputTweet(id,i,type) 
{
	
	var tweet_id			= tweets[id][0]
	var tweet_text	 		= tweets[id][1];
	var tweet_time 			= tweets[id][2];
	var tweet_user			= tweets[id][3];
	var tweet_text_plain	= tweets[id][4];
	
	var retweetText = tweet_text_plain.replace(/%([a-z_\-\.]*)%/ig, function (m, l) {
		var r = data[l];
		return r;
	});
	
	// Create HTML for Tweet					
	var tweet_html = '<div id="twitter_status_'+id+'" class="twitter-status-tweet">';
		tweet_html	  += '<div class="twitter-status-text">' + tweet_text + '</div>';
		tweet_html	  += '<div class="twitter-status-details">';
		tweet_html    += '<div class="twitter-status-details-retweet"><a href="http://twitter.com/?status=RT @' + tweet_user + ': ' + retweetText + '" target="_blank" class="img-link"></a></div>';
			tweet_html    += '<div class="twitter-status-details-time">' + tweet_time + '</div>';
		tweet_html    += '</div>';
		tweet_html    += '<div class="twitter-status-divider"></div>';
	tweet_html += '</div>';
	//$('.tweet-time').html(tweet_time);
	
	if(type == "previous") {
		_newMargin = "-300px";
	} else {
		_newMargin = "300px";
	}

	$('.twitter-status-container').append(tweet_html);
	$('#twitter_status_'+id).addClass("row-"+i);
	$('#twitter_status_'+id).css({"margin-left": _newMargin});
	
	twitterLoading = true;
	
	$('#twitter_status_'+id).delay(800*(i*0.15)).animate({"marginLeft": "0px"}, 750, function() { if(i == 2) { toggleTwitterLoading(false); } });
	//$('.btn-retweet').html('<a href="http://twitter.com/?status=RT @' + tweet_user + ': ' + retweetText + '" target="_blank" class="img-link"></a>');
}

function rotateTweet(type) 
{
	for (i = 0; i < 3; i++) {
		outputTweet(tweet_rotate_cid + i,i,type);
	}
}

function removeTweets(type) 
{
	twitterLoading = true;
	var _newMargin;
	var cid;
	
	if(type == "previous") {
		_newMargin = "300px";
		cid = Math.abs(tweet_rotate_cid + 3);
	} else {
		_newMargin = "-300px";
		cid = Math.abs(tweet_rotate_cid - 3);
	}
	var loaded = 0;
	for (i = 0; i < 3; i++) {
		$('#twitter_status_'+Math.abs(cid+i)).delay(800*(i*0.15)).animate({"marginLeft": _newMargin}, 750,
			function() {
				$(this).remove();
				
				loaded++;
				if(loaded == 3) {
					toggleTwitterLoading(false);
				}
			}
		);
	}
}
var twitterLoading = true;
function loadTweet(type) 
{
	if(!twitterLoading) {
		var continueLoad = false;
		
		if(type == 'next' && tweet_rotate_cid < 12) {
			tweet_rotate_cid = tweet_rotate_cid + 3;
			continueLoad = true;
		} else if (type == 'previous' && tweet_rotate_cid > 0) {
			tweet_rotate_cid = tweet_rotate_cid - 3;
			continueLoad = true;
		} else if (type == 'first-load') {
			tweet_rotate_cid = 0;
			continueLoad = true;
		}
		if(continueLoad) {
			removeTweets(type);
			rotateTweet(type);
		}
	}
}

function checkTwitterButtons() {
	if(tweet_rotate_cid == 0) {
		$('.twitter-paginate-prev').addClass('tweet-disabled');
	} else {
		$('.twitter-paginate-prev').removeClass('tweet-disabled');
	}
	if(tweet_rotate_cid == 12) {
		$('.twitter-paginate-next').addClass('tweet-disabled');
	} else {
		$('.twitter-paginate-next').removeClass('tweet-disabled');
	}
	if(twitterLoading) {
		$('.twitter-paginate-prev').addClass('tweet-disabled');
		$('.twitter-paginate-next').addClass('tweet-disabled');
	}
}

function toggleTwitterLoading(_loading) {
	twitterLoading = _loading;
	checkTwitterButtons();
}

// Loader

$(document).ready(function() {
	enableMouseovers();
	loadTweets();
	checkActive();
});
