$(document).ready( function() { });

// rollover images
$.fn.attachRollover = function() {
	$(this).each( function()  {	
		var defaultImg = $(this).attr("src");
		var highlightImg = defaultImg.replace(".png", "-highlight.png");
		
		$(this).mouseover( function() {
			$(this).attr("src", highlightImg);
		});
		$(this).mouseout( function() {
			$(this).attr("src", defaultImg);
		});	
	});
};

// initialize thumbnail gallery
$.fn.initThumbnails = function() {
	//console.log("initThumbnails");
	
	var windowItems = $(this).find(".window li");
	var thumbAnchors = $(this).find(".thumbs li a");
	
	thumbAnchors.each( function(i) {
		$(this).click( function(e) {
			$(this).blur();
			e.preventDefault();
		
			displayImage(i);
		});
	});
	
	function displayImage(n) {
		windowItems.hide();
		windowItems.eq(n).show();
	}
	
	displayImage(0);
}

// display twitter content
function showTweets(data) {
	/** USER SETTINGS ***********/
	var targetId="tweets";									// Id of element where twitters will be inserted
	var showUsername = false;								// Set to true to show username
	var showTime = true;									// Set to true to show time
	var showFollowMe = false;								// Set to true to show "follow me on Twitter" link
	/*****************************/
	
	var tweets = data;
	var targetObj = document.getElementById(targetId);
	
	// check to see if Twitter is down [not yet successfully tested]
	if (tweets['error']) {
		var errTxtNd = tweets['error'];
		var newP = document.createElement('p');
		newP.appendChild(errTxtNd);
		newP.className = "twitterError";
		targetObj.appendChild(newP);
		return;
	}
	
	var newUl = document.createElement('ul');
	newUl.className = "tweetList";
	
	for (var i=0; i<tweets.length; i++) {
		var username = tweets[i]['user']['screen_name'];
		var tweetId = tweets[i]['id'];
		var userUrl = "http://www.twitter.com/" + username + "/";
		var tweetUrl = "http://www.twitter.com/" + username + "/status/" + tweetId;

		var text = tweets[i]['text'];
				
		// parse text - add links to URLs and @usernames
		var arr = [];
		
		// find URLs, put in array to replace later
		var urlRgx = /\b(http|ftp|www)\S+\b/gi;
		while ((urlArray = urlRgx.exec(text)) != null) {	
			var url = urlArray[0];
			var urlLink = url;
			
			var wwwRgx = /^www/gi;
			if (wwwRgx.test(urlLink)) {	
				urlLink = "http://" + url;
			}
			var replacement = '<a href="'+urlLink+'">'+url+'</a>';
			
			var obj = new Object();
			obj.find = urlArray[0];
			obj.repl = replacement;
			arr.push(obj);
		}
		
		// find @ usernames, put in array to replace later
		var unRgx = /(^|\s)(@\S+)\b/gi;
		while ((unArray = unRgx.exec(text)) != null) {
			var atUsr = unArray[2];
			var usr = unArray[2].slice(1);
			var urlLink = "http://www.twitter.com/" + usr + "/";
			var replacement =  '<a href="'+urlLink+'" title="'+usr+' on Twitter">'+atUsr+'</a>';
			var obj = new Object();
			obj.find = atUsr;
			obj.repl = replacement;
			arr.push(obj);
		}
		
		// find # hashtags, put in array to replace later
		var unRgx = /(^|\s)(#\S+)\b/gi;
		while ((unArray = unRgx.exec(text)) != null) {
			var atHash = unArray[2];
			var hash = unArray[2].slice(1);
			var hashLink = "http://twitter.com/#!/search/%23" + hash;
			var replacement =  '<a href="'+hashLink+'" title="search for '+hash+' on Twitter">'+atHash+'</a>';
			var obj = new Object();
			obj.find = atHash;
			obj.repl = replacement;
			arr.push(obj);
		}
		
		// do the replacing
		for (var j=0; j<arr.length; j++) {
			var text = text.replace(arr[j].find, arr[j].repl);
		}
		
		// parse time - based on code from http://twitter.com/javascripts/blogger.js
		var time = "";
		var createdAt = tweets[i]['created_at'];
		var B=createdAt.split(" ");
		var C=B[1]+" "+B[2]+", "+B[5]+" "+B[3];
		var A=Date.parse(C);
		var D=(arguments.length>1)?arguments[1]:new Date();
		var E=parseInt((D.getTime()-A)/1000);
		E=E+(D.getTimezoneOffset()*60);
		if (E<60) {
			time = "less than a minute ago";
		} else if (E<120) {
			time = "about a minute ago";
		} else if (E<(60*60)) {
			time = (parseInt(E/60)).toString() + " minutes ago";
		} else if (E<(120*60)) {
			time = "about an hour ago";
		} else if (E<(24*60*60)) {
			time = "about " + (parseInt(E/3600)).toString() + " hours ago";
		} else if (E<(48*60*60)) {
			time = "1 day ago";
		} else {
			time = (parseInt(E/86400)).toString() +" days ago";
		}
		
		var newLi = document.createElement('li');
		 
		if (showUsername) {
			var newStrong = document.createElement('strong');
			var newTxtNd = document.createTextNode(username + " ");
			newStrong.appendChild(newTxtNd);
			newLi.appendChild(newStrong);
		}
		 
		var newSpan = document.createElement('span');
		//var newTxtNd2 = document.createTextNode(text + " ");
		//newSpan.appendChild(newTxtNd2);
		newLi.appendChild(newSpan);
		newSpan.innerHTML = text + " ";
		
		if (showTime) { 
			var newSmall = document.createElement('small');
			var newA = document.createElement('a');
			newA.href = tweetUrl;
			newA.title = username + " Twitter status " + tweetId;
			var newTxtNd3 = document.createTextNode(time);
			newA.appendChild(newTxtNd3);
			newSmall.appendChild(newA);
			newLi.appendChild(newSmall);
		}
		
		newUl.appendChild(newLi);
	}
	
	targetObj.appendChild(newUl);
	
	if (showFollowMe) {
		var newA2 = document.createElement('a');
		newA2.className = "twitterLink";
		newA2.title = "follow " + username + " on Twitter";
		newA2.href = userUrl;
		
		var newTxtNd4 = document.createTextNode("follow me on Twitter");
		newA2.appendChild(newTxtNd4);
		
		targetObj.appendChild(newA2);
	}
}

// grab URL query variables
function gup(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if (results == null)
		return "";
	else
		return results[1];
}

// preload images
function preloadImages( srcs ) {
	var preloadString = '';
	for(i=0; i<srcs.length; i++){
		preloadString += '<img src="' + srcs[i] + '" />';
	}
	$('#preloader').html(preloadString);
};
