/* 

   o----------------------o----------------------o
           CAMERON McEFEE | 530.339.8372
       New Media Designer | cm@cameronmcefee.com
   o----------------------o----------------------o
                 Thanks for looking!

Trill is the creative property and � of Cameron McEfee.
                For more info, go to:
       www.cameronmcefee.com/development/trill

A portion of this script is based on the Twitter Badge. 
       You can give Twitter credit for that one.

*/

window.onload = initTrill;
var trillShell;
var trillTweetShell;
var tweetText;
var tweetDate;
function twitterCallback2(C) {
	var A=[];
	var timeVar=[];
	var validTweet = false; 
	var D = 0;
	
	while(D<C.length && validTweet == false) {
		var E=C[D].user.screen_name;
		var B=C[D].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,function(F) { return'<a href="'+F+'">'+F+"</a>"} ).replace(/\B@([_a-z0-9]+)/ig,function(F){ return F.charAt(0)+'<a href="http://www.twitter.com/'+F.substring(1)+'">'+F.substring(1)+"</a>" });
		
		if(B.indexOf("@") == -1 ) {
			A.push("<li><span>"+B+"</span></li>");
			timeVar.push(relative_time(C[D].created_at));
			validTweet = true;
		} else {
			D++;	
		}
	}
	
	tweetText = A;
	tweetDate = timeVar;
	
}

function relative_time(C) {
	var B=C.split(" ");
	C = pickDay(B[0])+", "+pickMonth(B[1])+" "+B[2];
	return("on "+C);
	function pickDay(day) {
		switch(day){
			case "Sun":
				return("Sunday");
				break;
			case "Mon":
				return("Monday");
				break;
			case "Tue":
				return("Tuesday");
				break;
			case "Wed":
				return("Wednesday");
				break;
			case "Thu":
				return("Thursday");
				break;
			case "Fri":
				return("Friday");
				break;
			case "Sat":
				return("Saturday");
				break;
			default:
				return("this date was lost in eternity");
		}
	}
	function pickMonth(month) {
		switch(month){
			case "Jan":
				return("January");
				break;
			case "Feb":
				return("February");
				break;
			case "Mar":
				return("March");
				break;
			case "Apr":
				return("April");
				break;
			case "May":
				return("May");
				break;
			case "Jun":
				return("Jun");
				break;
			case "Jul":
				return("July");
				break;
			case "Aug":
				return("August");
				break;
			case "Sep":
				return("September");
				break;
			case "Oct":
				return("October");
				break;
			case "Nov":
				return("November");
				break;
			case "Dec":
				return("December");
				break;
			default:
				return("this date was lost in eternity");
		}
	}
}

function sendTweet() {
	document.getElementById("twitter_update_list").innerHTML=tweetText.join("");
	document.getElementById("twitter-time").innerHTML=tweetDate.join("");
}


function initTrill() { //sets up everything
	/* get username */
	if(userName == "" || userName == null) {
		userName = "natespotts";
	}
	/* Trill HTML elements */
	
	var trillInjectLoc = document.getElementsByTagName("body")[0]; //where trill will be injected (in this case, the bottom of the body tag)
	
	/* var trillInjectLoc = document.getElementById("yourlocation"); */ /* 	if you want to target a specific element, uncomment this line, delete the line before it, and replace "yourlocation" with the id of your location div */;
	
	trillShell = document.createElement("div");
		trillShell.setAttribute("id", "trill-shell");
		
	trillTweetShell = document.createElement("div");
		trillTweetShell.setAttribute("id", "trill-tweet-shell");
			
	var trillToggle = document.createElement("a");
		trillToggle.setAttribute("href", "#");
		
		var trillBird = document.createElement("div");
			trillBird.setAttribute("id", "trill-bird");
			trillBird.setAttribute("class", "button-init");
			
	//make toggle button
	trillToggle.appendChild(trillBird);
	// make trill
	trillShell.appendChild(trillTweetShell);
	trillShell.appendChild(trillToggle);
	//inject trill
	trillInjectLoc. appendChild(trillShell);

	/* Scripts needed for running */
	var javaInjections = []; //array of injected scripts
	var javascriptInjectLoc = document.getElementsByTagName("body")[0]; //where scripts will be injected (bottom of the page)
/*	var javaBlogger = document.createElement("script"); //script for blogger.js
		javaBlogger.setAttribute("type", "text/javascript");
		javaBlogger.setAttribute("charset", "utf-8");
		javaBlogger.setAttribute("src", "trill/js/blogger.js");
		javaBlogger.setAttribute("id", "java_one");
		javaInjections.push(javaBlogger);*/
		
	var javaBloggerMethod = document.createElement("script"); //method passed to blogger.js. this is the tweeter's url
		javaBloggerMethod.setAttribute("type", "text/javascript");
		javaBloggerMethod.setAttribute("charset", "utf-8");
		javaBloggerMethod.setAttribute("src", "http://twitter.com/statuses/user_timeline/"+userName+".json?callback=twitterCallback2&amp;count=20");
		javaBloggerMethod.setAttribute("id", "java_one");
		javaInjections.push(javaBloggerMethod);
		
	var cssInject = document.createElement("link");
		cssInject.setAttribute("href", "trill/css/trill.css");
		cssInject.setAttribute("type", "text/css");
		cssInject.setAttribute("rel", "stylesheet");
		document.getElementsByTagName("head")[0].appendChild(cssInject);
		
	for (i=0; i<javaInjections.length; i++) {
		javascriptInjectLoc.appendChild(javaInjections[i]);
	}
	
	document.getElementById("trill-bird").onclick = toggleVisiblity;	
}

function toggleVisiblity() {
		
		if(trillTweetShell.hasChildNodes()) {
			while ( trillTweetShell.childNodes.length >= 1 ) {
  		    	trillTweetShell.removeChild( trillTweetShell.firstChild );  
				var birdSwap = document.getElementById("trill-bird")
				birdSwap.setAttribute("class", "button-inactive");
   			} 
		} else {
			
			var closeButton = document.createElement("a");
				closeButton.setAttribute("href", "#");
				closeButton.setAttribute("id", "trill-close-btn");
	
			var trillTopDiv = document.createElement("div");
				trillTopDiv.setAttribute("id", "trill-top");
				
			var nbspTop = document.createTextNode("&nbsp;");
		
			var trillMiddleDiv = document.createElement("div");
				trillMiddleDiv.setAttribute("id", "trill-middle");
		
			var trillH1 = document.createElement("h1");
				trillH1.setAttribute("class", "trill");
			
			var trillTitleSuperscript = document.createTextNode("via");
			var trillSpan = document.createElement("span");
				trillSpan.setAttribute("class", "trill-superscript");
			var trillTitle = document.createTextNode(" Twitter");
		
		
			var trillH2 = document.createElement("h2");
				trillH2.setAttribute("id", "twitter-time");
				trillH2.setAttribute("class", "trill");
			
			var trillHrDivTop = document.createElement("div");
				trillHrDivTop.setAttribute("class", "trill-hr");
			
			var trillHrDivBottom = document.createElement("div");
				trillHrDivBottom.setAttribute("class", "trill-hr");
			var trillHr = document.createElement("hr");
				trillHr.setAttribute("class", "trill");
				
			var trillUl = document.createElement("ul");
				trillUl.setAttribute("id", "twitter_update_list");
			
			var trillLi = document.createElement("li");
		
			var trillP = document.createElement("p");
				trillP.setAttribute("id", "trill-link");
			
			var trillLink = document.createElement("a");
				trillLink.setAttribute("href", "http://twitter.com/natespotts");
			var trillLinkText = document.createTextNode("follow me on twitter");

			var trillBottomDiv = document.createElement("div");
				trillBottomDiv.setAttribute("id", "trill-bottom");
				
			var birdSwap = document.getElementById("trill-bird")
			birdSwap.setAttribute("class", "button-active");
	
			//make title
			trillSpan.appendChild(trillTitleSuperscript);
			trillH1.appendChild(trillSpan);
			trillH1.appendChild(trillTitle);
			//make hr
			trillHrDivTop.appendChild(trillHr);
			trillHrDivBottom.appendChild(trillHr);
			//make link
			trillLink.appendChild(trillLinkText);
			trillP.appendChild(trillLink);
			//make ul
			trillUl.appendChild(trillLi);
			//make middle
			if( tweetText && tweetDate) {
				trillMiddleDiv.appendChild(trillH1);
				trillMiddleDiv.appendChild(trillH2);
				trillMiddleDiv.appendChild(trillHrDivTop);
				trillMiddleDiv.appendChild(trillUl);
				trillMiddleDiv.appendChild(trillHrDivBottom);
				trillMiddleDiv.appendChild(trillP);
			} else {
				trillMiddleDiv.setAttribute("id", "trill-middle-fail");
			}

			//make trill Tweet
			trillTweetShell.appendChild(closeButton);
			trillTweetShell.appendChild(trillTopDiv);
			trillTweetShell.appendChild(trillMiddleDiv);
			trillTweetShell.appendChild(trillBottomDiv);
			document.getElementById("trill-close-btn").onclick = toggleVisiblity;
			if( tweetText && tweetDate) {
				sendTweet();
			}
		}
		return false;
		
}