Date.prototype.setISO8601 = function (string) {
	var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
		"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
		"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
	var d = string.match(new RegExp(regexp));

	var offset = 0;
	var date = new Date(d[1], 0, 1);

	if (d[3]) { date.setMonth(d[3] - 1); }
	if (d[5]) { date.setDate(d[5]); }
	if (d[7]) { date.setHours(d[7]); }
	if (d[8]) { date.setMinutes(d[8]); }
	if (d[10]) { date.setSeconds(d[10]); }
	if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
	if (d[14]) {
		offset = (Number(d[16]) * 60) + Number(d[17]);
		offset *= ((d[15] == '-') ? 1 : -1);
	}

	offset -= date.getTimezoneOffset();
	time = (Number(date) + (offset * 60 * 1000));
	this.setTime(Number(time));
}

var date = new Date();




/////////////////Facebook Feed Stuff/////////////////////////
var graphURL = "https://graph.facebook.com/spokefest/feed?callback=processResult&limit=10&access_token=233189600030132|YWLHh0gIx_DKgEEBfX2uc-uFcIw";

var likesString = "";
var cmmtString = "";
var preLoad = true;
var interval;

// Use JSONP to call the Graph API
function loadPosts() {
	var scriptFeed = document.createElement("script");
	scriptFeed.src = graphURL;
	document.body.appendChild(scriptFeed);
}

var messageCnt = 0;

function processResult(posts) {
	if (posts.paging == undefined) {
		document.getElementById("showPosts").innerHTML = "No more results";
	
	}else {
	  	graphURL = posts.paging.next;
		
		
		//Start the for loop
		$.each(posts.data, function(post) {
			
			var message = document.createElement("li");
			var postStr = posts.data[post];
			
			if (postStr.comments == undefined) {
			  
			  	cmmtString= ""
			  
			}else{
			
				cmmtString= "";
				for (var x in postStr.comments.data){
				
					cmmtString += '<blockquote><span class="friendResponse"><img src="https://graph.facebook.com/' + postStr.comments.data[x].from.id + '/picture/" width="35" height="35" align="left" class="friendProPic" /><a href="http://www.facebook.com/profile.php?id='+postStr.comments.data[x].from.id+'" target="_blank">' + postStr.comments.data[x].from.name + '</a>: ' + postStr.comments.data[x].message +'</span></blockquote>';
				
				}
			  
			}
			
			if(postStr.likes != undefined && postStr.likes.count > 1){
			  	likesString = '<blockquote><span class="friendLike"><a href="http://www.facebook.com/profile.php?id='+postStr.from.id+'" target="_blank">'+postStr.likes.count+' people</a> like this.</span></blockquote>';
			}else if(postStr.likes != undefined && postStr.likes.count == 1){
			  	likesString = '<blockquote><span class="friendLike"><a href="http://www.facebook.com/profile.php?id='+postStr.from.id+'" target="_blank">'+postStr.likes.count+' person</a> likes this.</span></blockquote>';
			}
			
			var storylink = storylink = "http://www.facebook.com/profile.php?id="+postStr.from.id;
			var profilePic = '<a href="'+ storylink +'" target="_blank"><img src="https://graph.facebook.com/' + postStr.from.id + '/picture/" width="48" height="48" align="left" border="0" class="profilePic" /></a>';
			
			var loadPic = '<img src="https://graph.facebook.com/' + postStr.from.id + '/picture/" width="48" height="48" align="left" border="0" id="hello" />';
			
			if(postStr.type == "photo"){
				var getPostPic = '<div class="postPic"><a href="'+postStr.link+'" target="_blank"><img src="'+postStr.picture+'" border="0" class="postPicStyle" /></a></div>';
			}else{
				var getPostPic = "";
			}
			
			if(postStr.type == "link"){
			  getDesc = "";
			  if(postStr.description == undefined){
				  //Do nothing
			  }else{
				 getDesc = '&ldquo;'+postStr.description+'&rdquo;'; 
			  }
			  
			  var getPostLink = '<div class="postLink"><a href="'+postStr.link+'" target="_blank">'+ postStr.name +'</a><blockquote class="linkQuote">'+getDesc+'</blockquote></div>';
			
			}else{
			  getPostLink = "";
			}
			
			date.setISO8601(postStr.created_time);
			var month = date.toString().substr(4, 3);
			var day = date.toString().substr(8, 2);
			var year = date.toString().substr(11, 4);
			var time = date.toString().substr(16, 5);
			var ampm;
			var hour = Number(date.toString().substr(16, 2));
			if(hour > 12){
			  hour = (hour -12).toString();
			  ampm = "pm";
			}else if(hour < 10){
			  hour = date.toString().substr(17, 1);
			  ampm = "am";
			}else{
			  hour = hour.toString();
			  ampm = "am";
			}
			
			var minute = date.toString().substr(19, 2);
			
			var createdDate = month +' '+ day +', '+ year +' at '+ hour+':'+minute+ampm;
			//alert(date);
			
						
			message.innerHTML = profilePic +'<div class="message_txt"><a href="'+ storylink +'" target="_blank">'+ postStr.from.name +'</a><br />'+ postStr.message +'</div><span class="postDate">'+createdDate+'</span>'+ getPostPic + getPostLink + likesString+ cmmtString;
			$(message).appendTo("#showPosts");
			
			//Initialize the Facebook Feed to load on the open of the page
			messageCnt++;
			if(messageCnt == posts.data.length && preLoad == true){
				//I found that if there is no delay the scrollbar will not initialize properly when someone first arrives at the page
				interval = setInterval("getFacebook()", 1000);
			}
			
			
			
			
			
	  	});//End for loop
	}//End else
}//End Function

function getFacebook(){
	var intFacebook = $('#facebookTwitterFeeds');
	if(intFacebook.length > 0){
		$('.feed', intFacebook)[0].innerHTML = $('#facebookFeed')[0].innerHTML;
		$("#loadFacebook").css('background-image', 'url(includes/images/page_pics/facebook_twitter/facebook_selected_logo_main_page.png)');	
		intFacebook.tinyscrollbar_update(0);
	}	
	clearInterval(interval);
};
getFacebook();
/////////////////End Facebook Feed Stuff/////////////////////////







/////////////////Twitter Feed Stuff/////////////////////////
/**
 * remy sharp / http://remysharp.com
 * Twitter / @rem
 * http://remysharp.com/2007/05/18/add-twitter-to-your-blog-step-by-step/
 *
 * @params
 *   cssIdOfContainer: e.g. twitters
 *   options: 
 *       {
 *           id: {String} username,
 *           count: {Int} 1-20, defaults to 1 - max limit 20
 *           prefix: {String} '%name% said', defaults to blank
 *           clearContents: {Boolean} true, removes contents of element specified in cssIdOfContainer, defaults to true
 *           ignoreReplies: {Boolean}, skips over tweets starting with '@', defaults to false
 *           template: {String} HTML template to use for LI element (see URL above for examples), defaults to predefined template
 *           enableLinks: {Boolean} linkifies text, defaults to true,
 *           newwindow {Boolean} opens links in new window, defaults to false
 *           timeout: {Int} How long before triggering onTimeout, defaults to 10 seconds if onTimeout is set
 *           onTimeoutCancel: {Boolean} Completely cancel twitter call if timedout, defaults to false
 *           onTimeout: {Function} Function to run when the timeout occurs. Function is bound to element specified with 
 *           cssIdOfContainer (i.e. 'this' keyword)
 *           callback: {Function} Callback function once the render is complete, doesn't fire on timeout
 *
 *      CURRENTLY DISABLED DUE TO CHANGE IN TWITTER API:
 *           withFriends: {Boolean} includes friend's status
 *
 *       }
 *
 * @license MIT (MIT-LICENSE.txt)
 * @version 1.13.1 - Number of fixes to ify, and fixed date parsing in Opera and 12AM issue
 * @date $Date: 2009-08-25 09:45:35 +0100 (Tue, 25 Aug 2009) $

 
 //This is what the format looks like when it is parsed
	
	<div id="tweet">
	  <ul>
		<li>
		  <span class="twitterPrefix">Remy said: </span>
		  <span class="twitterStatus">I just had a bizarre spaces moment - moving my cursor to the bottom of the screen switched space - annoying if it hadn't just gone away.</span>
		  <span class="twitterTime">20 minutes ago</span>
		</li>
		<li>
		  <span class="twitterPrefix">Remy said: </span>
		  <span class="twitterStatus">Great quote - Michael J Fox: "my happiness grows in direct proportion to my acceptance, and in inverse proportion to my expectations."</span>
		  <span class="twitterTime">7 days ago</span>
		</li>
	  </ul>
	</div>
  */

// to protect variables from resetting if included more than once
if (typeof renderTwitters != 'function') (function () {
    /** Private variables */
    
    // only used for the DOM ready, since IE & Safari require special conditions
    var browser = (function() {
        var b = navigator.userAgent.toLowerCase();

        // Figure out what browser is being used
        return {
            webkit: /(webkit|khtml)/.test(b),
            opera: /opera/.test(b),
            msie: /msie/.test(b) && !(/opera/).test(b),
            mozilla: /mozilla/.test(b) && !(/(compatible|webkit)/).test(b)
        };
    })();

    var guid = 0;
    var readyList = [];
    var isReady = false;
    
    var monthDict = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    
    /** Global functions */
    
    // based on Dustin Diaz's ify, but with my fixes :-)
    window.ify = function() {
      var entities = {
          '"' : '&quot;',
          '&' : '&amp;',
          '<' : '&lt;',
          '>' : '&gt;'
      };

      return {
        "link": function(t) {
          return t.replace(/[a-z]+:\/\/[a-z0-9-_]+\.[a-z0-9-_:~%&\?\/.=]+[^:\.,\)\s*$]/ig, function(m) {
            return '<a href="' + m + '">' + ((m.length > 25) ? m.substr(0, 24) + '...' : m) + '</a>';
          });
        },
        "at": function(t) {
          return t.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
            return m1 + '@<a href="http://twitter.com/' + m2 + '">' + m2 + '</a>';
          });
        },
        "hash": function(t) {
          return t.replace(/(^|[^\w'"]+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2) {
            return m1 + '#<a href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';
          });
        },
        "clean": function(tweet) {
          return this.hash(this.at(this.link(tweet)));
        }
      };
    }();
    
    // to create a public function within our private scope, we attach the 
    // the function to the window object
    window.renderTwitters = function (obj, options) {
        // private shortcuts
        function node(e) {
            return document.createElement(e);
        }
        
        function text(t) {
            return document.createTextNode(t);
        }

        var target = document.getElementById(options.twitterTarget);
        var data = null;
        var ul = node('ul'), li, statusSpan, timeSpan, i, max = obj.length > options.count ? options.count : obj.length;
        
        for (i = 0; i < max && obj[i]; i++) {
            data = getTwitterData(obj[i]);
                        
            if (options.ignoreReplies && obj[i].text.substr(0, 1) == '@') {
                max++;
                continue; // skip
            }
            
            li = node('li');
            
            if (options.template) {
                li.innerHTML = options.template.replace(/%([a-z_\-\.]*)%/ig, function (m, l) {
                    var r = data[l] + "" || "";
                    if (l == 'text' && options.enableLinks) r = ify.clean(r);
                    return r;
                });
            } else {
                statusSpan = node('span');
                statusSpan.className = 'twitterStatus';
                timeSpan = node('span');
                timeSpan.className = 'twitterTime';
                statusSpan.innerHTML = obj[i].text; // forces the entities to be converted correctly

                if (options.enableLinks == true) {
                    statusSpan.innerHTML = ify.clean(statusSpan.innerHTML);
                }

                timeSpan.innerHTML = relative_time(obj[i].created_at);

                if (options.prefix) {
                    var s = node('span');
                    s.className = 'twitterPrefix';
                    s.innerHTML = options.prefix.replace(/%(.*?)%/g, function (m, l) {
                        return obj[i].user[l];
                    });
                    li.appendChild(s);
                    li.appendChild(text(' ')); // spacer :-(
                }

                li.appendChild(statusSpan);
                li.appendChild(text(' '));
                li.appendChild(timeSpan);
            }
            
            if (options.newwindow) {
                li.innerHTML = li.innerHTML.replace(/<a href/gi, '<a target="_blank" href');
            }
            
            ul.appendChild(li);
        }

        if (options.clearContents) {
            while (target.firstChild) {
                target.removeChild(target.firstChild);
            }
        }

        target.appendChild(ul);
        
        if (typeof options.callback == 'function') {
            options.callback();
        }
    };
    
    window.getTwitters = function (target, id, count, options) {
        guid++;

        if (typeof id == 'object') {
            options = id;
            id = options.id;
            count = options.count;
        } 

        // defaulting options
        if (!count) count = 1;
        
        if (options) {
            options.count = count;
        } else {
            options = {};
        }
        
        if (!options.timeout && typeof options.onTimeout == 'function') {
            options.timeout = 10;
        }
        
        if (typeof options.clearContents == 'undefined') {
            options.clearContents = true;
        }
        
        // Hack to disable withFriends, twitter changed their API so this requires auth
        // http://getsatisfaction.com/twitter/topics/friends_timeline_api_call_suddenly_requires_auth
        if (options.withFriends) options.withFriends = false;

        // need to make these global since we can't pass in to the twitter callback
        options['twitterTarget'] = target;
        
        // default enable links
        if (typeof options.enableLinks == 'undefined') options.enableLinks = true;

        // this looks scary, but it actually allows us to have more than one twitter
        // status on the page, which in the case of my example blog - I do!
        window['twitterCallback' + guid] = function (obj) {
            if (options.timeout) {
                clearTimeout(window['twitterTimeout' + guid]);
            }
            renderTwitters(obj, options);
        };

        // check out the mad currying!
        ready((function(options, guid) {
            return function () {
                // if the element isn't on the DOM, don't bother
                if (!document.getElementById(options.twitterTarget)) {
                    return;
                }
                
                var url = 'http://www.twitter.com/statuses/' + (options.withFriends ? 'friends_timeline' : 'user_timeline') + '/' + id + '.json?callback=twitterCallback' + guid + '&count=20&cb=' + Math.random();

                if (options.timeout) {
                    window['twitterTimeout' + guid] = setTimeout(function () {
                        // cancel callback
                        if (options.onTimeoutCancel) window['twitterCallback' + guid] = function () {};
                        options.onTimeout.call(document.getElementById(options.twitterTarget));
                    }, options.timeout * 1000);
                }
                
                var script = document.createElement('script');
                script.setAttribute('src', url);
                document.getElementsByTagName('head')[0].appendChild(script);
            };
        })(options, guid));
    };
    
    // GO!
    DOMReady();
    

    /** Private functions */
    
    function getTwitterData(orig) {
        var data = orig, i;
        for (i in orig.user) {
            data['user_' + i] = orig.user[i];
        }
        
        data.time = relative_time(orig.created_at);
        
        return data;
    }
    
    function ready(callback) {
        if (!isReady) {
            readyList.push(callback);
        } else {
            callback.call();
        }
    }
    
    function fireReady() {
        isReady = true;
        var fn;
        while (fn = readyList.shift()) {
            fn.call();
        }
    }

    // ready and browser adapted from John Resig's jQuery library (http://jquery.com)
    function DOMReady() {
        if ( document.addEventListener && !browser.webkit ) {
            document.addEventListener( "DOMContentLoaded", fireReady, false );
        } else if ( browser.msie ) {
            // If IE is used, use the excellent hack by Matthias Miller
            // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited

            // Only works if you document.write() it
            document.write("<scr" + "ipt id=__ie_init defer=true src=//:><\/script>");

            // Use the defer script hack
            var script = document.getElementById("__ie_init");

            // script does not exist if jQuery is loaded dynamically
            if (script) {
                script.onreadystatechange = function() {
                    if ( this.readyState != "complete" ) return;
                    this.parentNode.removeChild( this );
                    fireReady.call();
                };
            }

            // Clear from memory
            script = null;

        } else if ( browser.webkit ) {
            // Continually check to see if the document.readyState is valid
            var safariTimer = setInterval(function () {
                // loaded and complete are both valid states
                if ( document.readyState == "loaded" || 
                document.readyState == "complete" ) {

                    // If either one are found, remove the timer
                    clearInterval( safariTimer );
                    safariTimer = null;
                    // and execute any waiting functions
                    fireReady.call();
                }
            }, 10);
        }
    }
    
    function relative_time(time_value) {
        var values = time_value.split(" "),
            parsed_date = Date.parse(values[1] + " " + values[2] + ", " + values[5] + " " + values[3]),
            date = new Date(parsed_date),
            relative_to = (arguments.length > 1) ? arguments[1] : new Date(),
            delta = parseInt((relative_to.getTime() - parsed_date) / 1000),
            r = '';
        
        function formatTime(date) {
            var hour = date.getHours(),
                min = date.getMinutes() + "",
                ampm = 'AM';
            
            if (hour == 0) {
                hour = 12;
            } else if (hour == 12) {
                ampm = 'PM';
            } else if (hour > 12) {
                hour -= 12;
                ampm = 'PM';
            }
            
            if (min.length == 1) {
                min = '0' + min;
            }
            
            return hour + ':' + min + ' ' + ampm;
        }
        
        function formatDate(date) {
            var ds = date.toDateString().split(/ /),
                mon = monthDict[date.getMonth()],
                day = date.getDate()+'',
                dayi = parseInt(day),
                year = date.getFullYear(),
                thisyear = (new Date()).getFullYear(),
                th = 'th';
            
            // anti-'th' - but don't do the 11th, 12th or 13th
            if ((dayi % 10) == 1 && day.substr(0, 1) != '1') {
                th = 'st';
            } else if ((dayi % 10) == 2 && day.substr(0, 1) != '1') {
                th = 'nd';
            } else if ((dayi % 10) == 3 && day.substr(0, 1) != '1') {
                th = 'rd';
            }
            
            if (day.substr(0, 1) == '0') {
                day = day.substr(1);
            }
            
            return mon + ' ' + day + th + (thisyear != year ? ', ' + year : '');
        }
        
        delta = delta + (relative_to.getTimezoneOffset() * 60);

        if (delta < 5) {
            r = 'less than 5 seconds ago';
        } else if (delta < 30) {
            r = 'half a minute ago';
        } else if (delta < 60) {
            r = 'less than a minute ago';
        } else if (delta < 120) {
            r = '1 minute ago';
        } else if (delta < (45*60)) {
            r = (parseInt(delta / 60)).toString() + ' minutes ago';
        } else if (delta < (2*90*60)) { // 2* because sometimes read 1 hours ago
            r = 'about 1 hour ago';
        } else if (delta < (24*60*60)) {
            r = 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
        } else {
            if (delta < (48*60*60)) {
                r = formatTime(date) + ' yesterday';
            } else {
                r = formatTime(date) + ' ' + formatDate(date);
                // r = (parseInt(delta / 86400)).toString() + ' days ago';
            }
        }

        return r;
    }
})();

function loadTweets(){
	getTwitters('showTweets', { 
	  id: 'spokefest', 
	  count: 10, 
	  enableLinks: true, 
	  ignoreReplies: false, 
	  clearContents: true,
	  template: '<div class="twitterPic"><a href="%user_profile_image_url%" target="_blank\"><img src="%user_profile_image_url%" border="0" class="postPicStyle" /></a></div>'+
	  ' <span class="message_txt">%text%</span> <span class="postDate"><a href="http://twitter.com/%user_screen_name%/statuses/%id_str%/">%time%</a></span>'
	});

};//End Process Tweets
/////////////////End Twitter Feed Stuff/////////////////////////



//////////////////////////Slide Show/////////////////////////////////

function slideSwitch() {
		var $active = $('#slideshow IMG.active');
	
		if ( $active.length == 0 ){
			 $active = $('#slideshow IMG:last');
		}
	
		// use this to pull the images in the order they appear in the markup
		var $next =  $active.next().length ? $active.next() : $('#slideshow IMG:first');
	
		// uncomment the 3 lines below to pull the images in random order
		// var $sibs  = $active.siblings();
		// var rndNum = Math.floor(Math.random() * $sibs.length );
		// var $next  = $( $sibs[ rndNum ] );
	
		$active.addClass('last-active');
	
		$next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, 1000, function() {
			$active.removeClass('active last-active');
		});
		
	}
	
$(function() {
	setInterval( "slideSwitch()", 5000 );
});
	
///////////////////////End Slide Show/////////////////////////////////////




////////////////////Set Tab Click Events///////////////////////////
var setClickEvents = {
	socialTabs: function(){
		var facebookTwitter = $('#facebookTwitterFeeds');
		if(facebookTwitter.length > 0){
			facebookTwitter.tinyscrollbar();
			$('#loadFacebook').click(function(){
				preLoad = false;
				$('.feed', facebookTwitter)[0].innerHTML = $('#facebookFeed')[0].innerHTML;	
				facebookTwitter.tinyscrollbar_update(0);
				$("#loadFacebook").css('background-image', 'url(includes/images/page_pics/facebook_twitter/facebook_selected_logo_main_page.png)');
				$("#loadTwitter").css('background-image', '');
				return false;
			});
			$('#loadTwitter').click(function(){
				$('.feed', facebookTwitter)[0].innerHTML = $('#twitterFeed')[0].innerHTML;
				facebookTwitter.tinyscrollbar_update(0);
				$("#loadTwitter").css('background-image', 'url(includes/images/page_pics/facebook_twitter/twitter_selected_logo_main_page.png)');
				$("#loadFacebook").css('background-image', '');
				return false;
			});			
		}
	}//End socialTabs
};
////////////////////End Set Tab Click Events///////////////////////



///////////////////Load Facebook and Twitter Feeds/////////////////////////
var intFacebookTwitter = {
	getContent: function(){
		loadPosts();
		loadTweets();	
	}
}
///////////////////End Load Facebook and Twitter Feeds/////////////////////////



///////////////////Initialize settings//////////////////////////
$(document).ready(function(){
	setClickEvents.socialTabs();
	intFacebookTwitter.getContent();
});
///////////////////End Initialize settings//////////////////////////








  







