	core = {};
	flickr = {};
	twitter = {};
	youtube = {};
	
	//flickr 'globals'
	flickr.place_holder = "flickr-placeholder";
	flickr.ajax_page = "/ajax-flickr.php";
	flickr.refresh = 65000; //use milliseconds, please.
	
	//youtube 'globals'
	youtube.place_holder = "youtube-placeholder";
	youtube.ajax_page = "/ajax-youtube.php";
	youtube.refresh = 850000; //use milliseconds, please.
	
	//twitter 'globals'
	twitter.place_holder = "twitter-placeholder";
	twitter.ajax_page = "/ajax-twitter.php";
	twitter.default_refresh = 40; //use seconds, please.
	twitter.min_refresh = 20; //use seconds, please.
	twitter.max_refresh = 60; //use seconds, please.
	
	
	/******************************************************* GENERIC FUNCTIONS ****************************************************/
	
	core.get_random_string = function(){
		var chars = "0123456789abcdefghiklmnopqrstuvwxyz";
		var string_length = 7;
		var uId = '';

		for (var i=0; i<string_length; i++) {
			var rnum = Math.floor(Math.random() * chars.length);
			uId += chars.substring(rnum,rnum+1);
			}
		return uId;
	}
	
	/**
	 * Update steh labe above the slider
	 **/
	core.update_slider_label = function()
	{
		var sv = $("#twitter-slider").slider('option', 'value');
		$("#slider_label").text("Refresh tweets every "+sv+" seconds.");
	}
	
	core.run_ajax = function(page_to_load, data, target, fader){
		//jquery action
		
			 $.ajax({
			 
   				type: "GET",
  				url: page_to_load,
   				data: data,
   				dataType: 'html',
   				success: function(theData, msg)
				{
					if(theData != "<span style='color:#ffffff;font-family:arial;font-size:11px;'>Twitter API Temporarily Unavailable.</span>")
					{
						$("#"+target).html(theData);
						if(fader && fader != ""){
						$("#"+fader).fadeOut();
						}
					}
				},
				 error: function(errorData){

					fail(errorData);
           
				}
 			});
	}
	
	/********************************************************** FLICKR STUFF**************************************************************/
	
	/**
	 * Called via the timer to update the flickr div
	**/
	flickr.update_photos = function()
	{
		var data = "&rnum="+core.get_random_string();
		
		$("#p-flickr-check > span").fadeIn("fast", function(){
			core.run_ajax(flickr.ajax_page, data, flickr.place_holder, "p-flickr-check > span");
		});
	}
	
	/************************************************************** YOUTUBE STUFF *************************************************************/
	
	/**
	 * Called via the timer to update the flickr div
	**/
	youtube.update_vids = function()
	{
		var data = "&rnum="+core.get_random_string();
		
		$("#p-youtube-check > span").fadeIn("fast", function(){
			core.run_ajax(youtube.ajax_page, data, youtube.place_holder, "p-youtube-check > span");
		});
	}
	
	/************************************************************** Twitter STUFF *************************************************************/
	
	/**
	 * Returns the twitter page to load
	 **/
	twitter.get_page_from_rel = function(rel){
	
		var spl_array = rel.split("_");
		
		return spl_array[1];
	}
	
	/**
	 * Creates a timer for twitter
	 *
	 **/
	 twitter.init_timer = function(time)
	 {
		var theTime = (time*1000);
		$("#p-resume").fadeOut("fast", function(){
			$(document).everyTime(theTime, "twitter_timer", twitter.refresh_tweets, 0);
		});
	 }
	 

	
	/**
	 * loads a new twitter page html via the core ajax function
	 *
	 **/
	 twitter.update_tweets_page = function(page)
	 {
		var num = core.get_random_string();
		
		if(!page || page ==""){
			page = 1;
		}
		
		var data = "&page="+page+"&rnum="+num;
		
		$("#p-twitter-check > span").fadeIn("fast", function(){
			core.run_ajax(twitter.ajax_page, data, twitter.place_holder, "p-twitter-check > span");
		});
		
		twitter.stop_timer();
	 }
	 
	 /**
	 * refershes teh twitter stream w/ new.
	 *
	 **/
	 twitter.refresh_tweets = function(page)
	 {
		var num = core.get_random_string();
		var data = "&page=1&rnum="+num;
		$("#p-twitter-check > span").fadeIn("fast", function(){
			core.run_ajax(twitter.ajax_page, data, twitter.place_holder, "p-twitter-check > span");
		});
	 }
	 
	 /**
	  * Stops a twitter timer
	  *
	 **/
	 twitter.stop_timer = function(){
		$(document).stopTime("twitter_timer");
	 }

/**
  * ON LOAD
  *
**/  
$(function(){

	//load tweets
	//twitter.refresh_tweets (1);
	
	//add slider
	$("#twitter-slider").slider();
	$("#twitter-slider").slider('option', 'max', twitter.max_refresh);
	$("#twitter-slider").slider('option', 'min', twitter.min_refresh);
	$("#twitter-slider").slider('option', 'value', twitter.default_refresh);
	
	core.update_slider_label();
	
	//max length counter
	$("textarea[maxlength]").keyup(function()
	{ 
		var maxlength = parseInt($(this).attr("maxlength")); 
		if($(this).val().length > maxlength)
		{ 
			$(this).val($(this).val().substr(0, maxlength)); 
		}
		$("#charsRemaining").html(140 - $(this).val().length); 
	}); 
	
	//start timers for flickr and youtube
	$(document).everyTime(flickr.refresh, flickr.update_photos, 0);
	$(document).everyTime(youtube.refresh, youtube.update_vids, 0);
	
	
	//start timer for twitter
	twitter.init_timer(twitter.default_refresh);
	
	
	$(".a-twitter-pager").live("click", function(){
		var thePage = twitter.get_page_from_rel(this.rel);
		
		$("#p-resume").fadeIn("fast", function(){
			twitter.update_tweets_page(thePage);
		});
		
	});
	
	$("#p-resume > a").click(function(){
		twitter.init_timer($("#twitter-slider").slider('option', 'value'));
	});
	
	$("#twitter-slider").bind('slidechange', function(event, ui) {
		core.update_slider_label();
		twitter.stop_timer();
		twitter.init_timer($("#twitter-slider").slider('option', 'value'));
	});

});