$(window).load(function(){
	$(".seasonToggle").tooltip(
		{
		position: "bottom center",
		relative: true,
		offset: [3, 0]
		}
	);
	$("#tbEmail").focus( function() {
		$("#boxNewsletterSignup").animate({
			opacity: 1
		}, 500);
		if ($(this).val() == 'Enter eMail for E-Newsletter') {
			$(this).val('');
		}		
	});
	$("#tbEmail").blur( function() {
		$("#boxNewsletterSignup").animate({
			opacity: .8
		}, 500);
		if ($(this).val().length == 0) $(this).val('Enter eMail for E-Newsletter');
	});	
	
	
	$('#homepageAnnouncementscolumn1 .total').html( $('#homepageAnnouncementscolumn1 ul.homepageAnnoucements > li').size() );
	$('#homepageAnnouncementscolumn1 .homepageAnnoucementsNav a').click(function() {
		var iClickedIndex = $(this).index();
		var current = ($('#homepageAnnouncementscolumn1 ul.homepageAnnoucements li.On'));
		var next = $('#homepageAnnouncementscolumn1 ul.homepageAnnoucements li:eq(' + iClickedIndex + ')')
		showAnnouncement(1, current,next);
	});		
	$('#homepageAnnouncementscolumn1 .homepageAnnoucementsNav a:first').click();

	$('#homepageAnnouncementscolumn2 .total').html( $('#homepageAnnouncementscolumn2 ul.homepageAnnoucements > li').size() );
	$('#homepageAnnouncementscolumn2 .homepageAnnoucementsNav a').click(function() {
		var iClickedIndex = $(this).index();
		var current = ($('#homepageAnnouncementscolumn2 ul.homepageAnnoucements li.On'));
		var next = $('#homepageAnnouncementscolumn2 ul.homepageAnnoucements li:eq(' + iClickedIndex + ')')
		showAnnouncement(2, current,next);
	});	
	$('#homepageAnnouncementscolumn2 .homepageAnnoucementsNav a:first').click();		
	
	
	$('#facebookTabButton').click( function() {
		$('#twitterTab').hide();
		$('#twitterTabButton').removeClass('on');
		showFacebook();
		$('#facebookTabButton').addClass('on');
	});
		
	$('#twitterTabButton').click( function() {
		$('#facebookTab').hide();
		$('#facebookTabButton').removeClass('on');
		showTwitter();
		$('#twitterTabButton').addClass('on');
	});
	$('#facebookTabButton').click();
	
});
var isFacebookLoaded = false;
function showFacebook() {
	if (!isFacebookLoaded) {
		(function(d, s, id) {
					var js, fjs = d.getElementsByTagName(s)[0];
					if (d.getElementById(id)) {return;}
					js = d.createElement(s); js.id = id;
					js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
					fjs.parentNode.insertBefore(js, fjs);
					}(document, 'script', 'facebook-jssdk'));
		isFacebookLoaded = true;
	}
	$('#facebookTab').show();
}


function showAnnouncement(col, current, next){
		$(current).hide();
		$(current).removeClass('On')
		$(next).addClass('On');
		$(next).show('On');

		$('#homepageAnnouncementscolumn' + col + ' .showing').html( $('#homepageAnnouncementscolumn' + col + ' ul.homepageAnnoucements li').index($(next))+1 );	
		
		var iIndexCurrent = $('#homepageAnnouncementscolumn' + col + ' ul.homepageAnnoucements li').index($(current));
		$('#homepageAnnouncementscolumn' + col + ' .homepageAnnoucementsNav a:eq(' + iIndexCurrent + ')').removeClass('active');
		var iIndexNext = $('#homepageAnnouncementscolumn' + col + ' ul.homepageAnnoucements li').index($(next));
		$('#homepageAnnouncementscolumn' + col + ' .homepageAnnoucementsNav a:eq(' + iIndexNext + ')').addClass('active');		
}

var isTwitterLoaded = false;
function showTwitter() {
	if (!isTwitterLoaded) {
		$.ajax({
			url: '/skiblue/httpHandlers/feedHandler.ashx?feedUrl=http://twitter.com/statuses/user_timeline/skibluemountain.json',
			dataType: 'json',
			success: function(data) {
				createTWArray(data);
			},
			error: function(request, status, errorMsg) {
				alert("error retrieving twitter feed: " + errorMsg);
			}
		});
		isTwitterLoaded = true;
	}
	$('#twitterTab').show();
}

/* twitter */
var twitterAccountName = 'skibluemountain';
var tweetsPerPage = 3;
var twArray = new Array();
var twIdx = 0;
var twHeightContainerInterval;
var twCount = 0;

function createTWArray(data) {
	$.each(
		$(data),
		function(tIndex, tItem) {
			var created = parseDate(tItem.created_at);
			var t = {
				"created": created,
				"description": ify.clean(tItem.text).replace(/<a href/gi, '<a target="_blank" href'),
				"postId": tItem.id_str,
				"tweet": tItem.text,
				"tweeter": tItem.user.name,
				"relativeTime": created.toRelativeTime(),
				"img": tItem.user.profile_image_url
			};
			t.acctNm = tItem.user.screen_name;
			twArray.push(t);
		}
	);
	
	$("div.boxPaginateTw .total").html( parseInt(twArray.length / tweetsPerPage) );
	buildTWPosts();
}
function buildTWPosts() {
	
	var template = $('div.tweetContainer.template');
	var twSubContainer = $('div.twSubContainer');
	twCount = twArray.length;
	var subTwArray = twArray.slice(twIdx, twIdx + tweetsPerPage);

	$(twSubContainer).fadeOut('fast', function() {
		$(twSubContainer).children().remove();
		$.each(
			subTwArray,
			function(idx, item) {
				var newContainer = $(template).clone();
				$(newContainer).removeClass('template');

				$(newContainer).find('.tweeter').html(item.tweeter);
				$(newContainer).find('.tweet').html(item.description);
				$(newContainer).find('.relativeTime').text(item.relativeTime);
				$(newContainer).find('.relativeTime').attr('href', 'http://twitter.com/#!/' + item.acctNm + '/status/' + item.postId);
				$(newContainer).find('.twReply').attr('href', 'http://twitter.com/?status=@' + item.acctNm + '%20&in_reply_to_status_id=' + item.postId + '&in_reply_to=' + item.acctNm);
				$(newContainer).find('.twRetweet').attr('href', 'http://twitter.com/?status=RT%20@' + item.acctNm + '%20' + escape(item.tweet) + '&in_reply_to_status_id=' + item.postId + '&in_reply_to=' + item.acctNm);

				if ( item.img != null ) {
					$(newContainer).find('div.twAvatar').show();
					$(newContainer).find('div.twAvatar img').attr('src', item.img);
				}
				else {
					$(newContainer).find('div.twAvatar').hide();
				}

				$(newContainer).show();
				$(twSubContainer).append($(newContainer));
			}
		);
		$('#twLoading').fadeOut('fast', function() {
			setContainerHeight($(twSubContainer), $('div.containerTweets'));
			$('div.twSubContainer').fadeIn('fast');
		});
	});
	$("div.boxPaginateTw .showing").html( (twIdx / tweetsPerPage) + 1 );
	

}


function setContainerHeight(container, parent) {
		var newHeight = $(container).height();
		$(parent).animate({
			height: newHeight
		}, 'fast');
}

function changeTwPage(dir) {
	if (dir == 'prev') {
		twIdx -= tweetsPerPage;
		if (twIdx < 0) {
			if (twCount % tweetsPerPage == 0) {
				twIdx = twCount - tweetsPerPage;
			}
			else {
				twIdx = twCount - (twCount % tweetsPerPage);
			}
		}
	}
	else {
		twIdx += tweetsPerPage;
		if (twIdx >= twCount) {
			twIdx = 0;
		}
	}
	buildTWPosts();
}



$(function() {

	$('div.boxPaginateTw div.prev').click(function() {
		changeTwPage('prev');
	});
	$('div.boxPaginateTw div.next').click(function() {
		changeTwPage('next');
	});
});

function parseDate(str) {
	var v = str.split(' ');
	return new Date(Date.parse(v[1] + " " + v[2] + ", " + v[5] + " " + v[3] + " UTC"));
}
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) {
			if (tweet != undefined && tweet != '') {
				return this.hash(this.at(this.link(tweet))).replace('\n', '<br />');
			}
			else {
				return "";
			}
		}
	};
} ();

function relative_time(time_value) {
	// Tue Feb 01 12:44:15 +0000 2011
	var values = time_value.split(" ");
	var parsed_date = Date.parse(values[1] + " " + values[2] + ", " + values[5] + " " + values[3]);
	var date = new Date(parsed_date);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	var 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 = months[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);
		}
	}

	return r;
}
Date.prototype.toRelativeTime = function(now_threshold) {
	var delta = new Date() - this;

	now_threshold = parseInt(now_threshold, 10);

	if (isNaN(now_threshold)) {
		now_threshold = 0;
	}

	if (delta <= now_threshold) {
		return 'Just now';
	}

	var units = null;
	var conversions = {
		millisecond: 1, // ms    -> ms
		second: 1000,   // ms    -> sec
		minute: 60,     // sec   -> min
		hour: 60,     // min   -> hour
		day: 24,     // hour  -> day
		month: 30,     // day   -> month (roughly)
		year: 12      // month -> year
	};
	var conversions = { millisecond: 1 }

	delta = delta / 1000;
	var r = "";

	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 = dateFormat(this, "h:MM TT") + ' yesterday';
		} else {
			r = dateFormat(this, "h:MM TT") + ' ' + dateFormat(this, "mmm d");
		}
	}

	return r;
};

Date.fromString = function(str) {
	return new Date(Date.parse(str));
};



