function initTwitterFeeds(username)
{
	var tfw = $('#TweeterInnerFeedWrapper');
	if(tfw.size() > 0)
	{
		tfw.append('<div class="loading">loading...</div>');
		jQuery('head').append('<script id="twFeed" src="http://search.twitter.com/search.json?q=' + username + '&show_user=true&rpp=100&result_type=recent&callback=loadTwitterFeeds"></script>');
	}
}

function initHomeTwitterFeeds()
{
	var thfw = $('#HomeTweeterFeedWrapper');
	if(thfw.size() > 0)
	{
		thfw.append('<div class="loading">loading...</div>');
		jQuery('head').append('<script id="twHomeFeed" src="http://search.twitter.com/search.json?q=' + 'twestival' + '&show_user=true&rpp=100&result_type=recent&callback=loadHomeTwitterFeeds"></script>');
	}
}

function loadTwitterFeeds(JSON)
{
	var tfw = jQuery('#TweeterInnerFeedWrapper');
	if(tfw.size() > 0)
	{
		var feeds = JSON;
		if(!feeds.results)
		{
			tfw.html('<div class="no-tweets">no tweets...</div>');
			return;
		}
		
	
		var feedList = jQuery('#TweeterFeed');
		feedList.css('visibility', 'hidden');
		
		twScrollerCount = feeds.results.length;
		if(twScrollerCount == 0)
			tfw.append('<div class="no-tweets">no tweets...</div>');
		
		var itemsPerPage = 5;
		
		var rItems = twScrollerCount % itemsPerPage;
		
		var groupedItems = twScrollerCount - rItems;
		
		var itemHTML = '';
		
		for (var j=0; j< groupedItems; j=j+itemsPerPage)
		{
			var feedPageHTML = '<div class="FeedPage">';
			for (var i=j; i<j+itemsPerPage; i++)
			{					   

			var twre = /\@([a-z]+)/ig ;
			var tweet = feeds.results[i]['text'];
			tweet = tweet.replace( twre, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');
			tweet = '<a href="http://twitter.com/' + feeds.results[i]['from_user']  + '" target="_blank">@' + feeds.results[i]['from_user'] + ":</a> " + tweet;


					var itemHTML = '<div class="Feed">' + 
										'<div class="Photo">' +
											'<img src="' + feeds.results[i]['profile_image_url'] + '" />' +
										'</div>' +
										'<div class="Fd">' +
											'<p>' + tweet + '</p>' +
										'</div>' +
										'<div class="Data">' +
											'<p>' + formatTimeSince(feeds.results[i]['created_at']) + '</p>' +
										'</div>' +
									'</div>';
								
					feedPageHTML += itemHTML;
			}
			feedPageHTML += '</div>';
			feedList.append(feedPageHTML);
		}
		
		if (rItems > 0)
		{
			var feedPageHTML = '<div class="FeedPage">';
			for (var i = groupedItems; i < groupedItems+rItems; i++)
			{					   

			var twre = /\@([a-z]+)/ig ;
			var tweet = feeds.results[i]['text'];
			tweet = tweet.replace( twre, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');
			tweet = '<a href="http://twitter.com/' + feeds.results[i]['from_user']  + '" target="_blank">@' + feeds.results[i]['from_user'] + ":</a> " + tweet;

					var itemHTML = '<div class="Feed">' + 
									'<div class="Photo">' +
										'<img src="' + feeds.results[i]['profile_image_url'] + '" />' +
									'</div>' +
									'<div class="Fd">' +
										'<p>' + tweet + '</p>' +
									'</div>' +
									'<div class="Data">' +
										'<p>' + formatTimeSince(feeds.results[i]['created_at']) + '</p>' +
									'</div>' +
								'</div>';
								
					feedPageHTML += itemHTML;
			}
			feedPageHTML += '</div>';
			feedList.append(feedPageHTML);
		}
		
		tfw.find('.loading').remove();
		feedList.find('.FeedPage')
			.each(function(){$(this).find('.Feed:last').addClass('last')});
		feedList.css('visibility', 'visible');
		if(twScrollerCount > itemsPerPage)
		{
			var tfw = $('#TweeterInnerFeedWrapper, .FeedPage').css('height', '565px');
			initFeedRotation();
		}else{
			$('#TweeterFeed').css('position', 'static');
		}
	}
}

function loadHomeTwitterFeeds(JSON)
{
	var thfw = jQuery('#TweeterHomeInnerFeedWrapper');
	if(thfw.size() > 0)
	{
		var feeds = JSON;
		if(!feeds.results)
		{
			thfw.html('<div class="no-tweets">no tweets...</div>');
			return;
		}
		
	
		var feedList = jQuery('#HomeTweeterFeed');
		feedList.css('visibility', 'hidden');
		
		twScrollerCount = feeds.results.length;
		if(twScrollerCount == 0)
			thfw.append('<div class="no-tweets">no tweets...</div>');
		
		var itemsPerPage = 3;
		
		var rItems = twScrollerCount % itemsPerPage;
		
		var groupedItems = twScrollerCount - rItems;
		
		var itemHTML = '';
		
		for (var j=0; j< groupedItems; j=j+itemsPerPage)
		{
			var feedPageHTML = '<div class="FeedPage">';
			for (var i=j; i<j+itemsPerPage; i++)
			{					   
			
			var twre = /\@([a-z]+)/ig ;
			var tweet = feeds.results[i]['text'];
			var tweet = tweet.replace( twre, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');
			
					var itemHTML = '<div class="Feed">' + 
										'<div class="Photo">' +
											'<img src="' + feeds.results[i]['profile_image_url'] + '" />' +
										'</div>' +
										'<div class="Fd">' +
										 	'<p>' + tweet +'</p>' +

										'</div>' +
										'<div class="Data">' +
											'<p>' + formatTimeSince(feeds.results[i]['created_at']) + '</p>' +
										'</div>' +
									'</div>';
								
					feedPageHTML += itemHTML;
			}
			feedPageHTML += '</div>';
			feedList.append(feedPageHTML);
		}
		
		if (rItems > 0)
		{
			var feedPageHTML = '<div class="FeedPage">';
			for (var i = groupedItems; i < groupedItems+rItems; i++)
			{					   
			var twre = /\@([a-z]+)/ig ;
			var tweet = feeds.results[i]['text'];
			var tweet = tweet.replace( twre, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');

					var itemHTML = '<div class="Feed">' + 
									'<div class="Photo">' +
										'<img src="' + feeds.results[i]['profile_image_url'] + '" />' +
									'</div>' +
									'<div class="Fd">' +
										'<p>' + tweet + '</p>' +
									'</div>' +
									'<div class="Data">' +
										'<p>' + formatTimeSince(feeds.results[i]['created_at']) + '</p>' +
									'</div>' +
								'</div>';
								
					feedPageHTML += itemHTML;
			}
			feedPageHTML += '</div>';
			feedList.append(feedPageHTML);
		}
		
		thfw.parent().find('.loading').remove();
		feedList.find('.FeedPage')
			.each(function(){$(this).find('.Feed:last').addClass('last')});
		feedList.css('visibility', 'visible');
		if(twScrollerCount > itemsPerPage)
		{
			initHomeFeedRotation();
		}else{
			$('#HomeTweeterFeed').css('position', 'static');
		}
	}
}

function initFeedRotation()
{
	$("#TweeterInnerFeedWrapper")
		.scrollable({
						steps: 1, 
						easing: 'easeInOutSine',
						speed: 1000,
						circular: false,
						vertical: true
					})
		.autoscroll({
						autoplay: true,
						interval: 8000
					});
}

function initHomeFeedRotation()
{
	c('initHomeFeedRotation');
	$("#TweeterHomeInnerFeedWrapper")
		.scrollable({
						steps: 1, 
						easing: 'easeInOutSine',
						speed: 2000,
						circular: false,
						vertical: false
					})
		.autoscroll({
						autoplay: true,
						interval: 8000
					});
}

function getTwitterPic(username)
{
	jQuery('head').append('<script src="http://search.twitter.com/search.json?from=' + username + '&rpp=1&result_type=recent&callback=loadTwitterPic"></script>');
}

function loadTwitterPic(JSON)
{
		var feeds = JSON;
		c(feeds);
		if(feeds.results.length == 0)
			return;
		
		$('#tm_' + feeds.results[0]['from_user'].toLowerCase()).attr('src', feeds.results[0]['profile_image_url']);
}


function formatTimeSince(date) { // 
	var refTime = new Date(date);
	var refTime = refTime.getTime();
	var d = new Date();
	refTime = refTime / 1000;
	var timeNow = Math.round(d.getTime()/1000); // d.getTime() returns UNIX timestamp in miliseconds
	var timeSince = Math.round(timeNow - refTime);
	if (timeSince < 60) {
		return 'about ' + timeSince + " sec ago";
	} else if (timeSince < 3600) {
		return  'about ' + Math.round(timeSince / 60) + " min ago";
	} else if (timeSince < 86400) {
		var hh = Math.floor(timeSince / 3600);
		var mm = Math.round((timeSince - (hh * 3600)) / 60);
		return 'about ' + hh + " hours " + mm + " minutes ago";
	} else {
		return 'about ' + Math.round(timeSince / 86400) + " days ago";
	}
}


function showRegistrationForm() {
	$('#RegistrationWrapper').css('display', 'block');
	$('#HomeContent').css('display', 'none');
	return false;
}


function initAjaxForms()
{
	var registerAjaxFrm = new AJAXFormSubmit({
											 	jqSection: $('#RegistrationFormWrapper'),
												jqForm: $('#RegistrationFormWrapper form'),
												fSuccess: function(jqSection, frm, AJAXresponse)
															{
																jqSection.html(AJAXresponse);
																initFormSubmitBtns(jqSection);
																initAjaxForms();
															},
												fPending: function(jqSection, frm)
															{
																frm.css('visibility', 'hidden');
																jqSection.append('<div class="loading">loading...</div>');
															}
											 });
}

function initMainNav()
{
	var mainNav = $('#MainNav');
	if(mainNav.find('ul').size() > 0)
	{
		$('#MainNav ul li:last').addClass('last');
		$('#MainNav')
			.superfish({
						   autoArrows: false,
							onBeforeShow:  function(){
												$(this).parents('li:first').addClass('subNavOn');
											}, 
							onHide: function(){
										$(this).parents('li:first').removeClass('subNavOn');
									}
				   }); 	
	}
}

function pageNav()
{
}

function initFormSubmitBtns(wrapper)
{
	if(!wrapper)
		var wrapper = $('body');
		
	var submitBtns = wrapper.find('input[type=submit]');
	submitBtns.each(function()
					{
						var btn = $(this);
						var lnkBtn = $('<a href="#" class="BtnGreenWBg"></a>');
						lnkBtn.click(function()
										{
											var lnk = $(this);
											var frm = lnk.parents('form:first');
											frm.submit();
											return false;
										})
							.html('<span>' + btn.val() + '</span>');
							
						btn.replaceWith(lnkBtn);
					})
}

// controls the information displayed inside the search results box
function displayLocationSearchResultsItem(itemData) {
	return '<a href="' + itemData['EventURL'] + '" target="_blank">' + itemData["City"] + '</a>';
}

function initQuickSearch()
{
	var searchControlWrapper = $('#LocationSearchControl');
	if(searchControlWrapper.size() > 0)
	{
		var quickSearch = new ajaxSearch({
						searchControlsWrapper: '#LocationSearchControl',
						searchField: 'input[name=Location]',
						searchPage: 'search-events',
						searchPageParamName: '', 
						fDisplaySearchResultItem: 'displayLocationSearchResultsItem'
					});
	}
	$('a#BtnSearch')	
		.click(function()
				{
					$('#LocationSearchControl input[name=Location]').keyup();
					return false;
				})
}


function c(p)
{
	try{console.log(p)}catch(err){}
}

function initDatePickers(wrapper)
{
	if(!wrapper)
		var wrapper = jQuery('body');
		
	wrapper.find('input.hasDatePicker')
				.datepicker({
								showOn: 'both', 
								buttonImage: 'assets/common/images/ico-calendar.png', 
								buttonImageOnly: true,
								dateFormat: 'mm/dd/yy',
								changeMonth: true,
								changeYear: true,
								speed:0, 
								closeAtTop:true
							});
				
	wrapper.find('input.hasDatePicker')
			.each(function()
				{
					var dp = jQuery(this);
					var dpTrigger = dp.next('.ui-datepicker-trigger');
					if (dp.attr('allow-clear') == 'true')
					{
						var clearBtn = jQuery('<button type="button" class="ui-datepicker-clear-trigger" title="Clear Date"><img src="assets/common/images/ico-calendar-clear.png" alt="..." title="..."/></button>');
						dpTrigger.after(clearBtn);
						clearBtn.click(function()
								{
									jQuery(this).prev('.ui-datepicker-trigger').prev('input.hasDatepicker').val('').change();
									return false;
								});
					}
				})
	
}

jQuery(function(){
	initAjaxForms();
	initMainNav();
	initFormSubmitBtns();
	initQuickSearch();
	initHomeTwitterFeeds();
	initDatePickers();
})
