var Widgets = {};

/**
	Create a slideshow based on JSON feed of slideshare thumbnails
*/
Widgets.slideshow = function (containerId) {
	if (!Widgets.slideData || !Widgets.slideData.groups) { 
		return false;
	}
	var container = document.getElementById(containerId);
	var li, a, captionText, caption, captionLink, img, maxSlidesToShow = 10;
	var slideData = Widgets.slideData.groups.slideshow;
	
	var numToShow = Math.min(maxSlidesToShow, slideData.length);
	
	var slideWrapper = document.createElement('ul');
	slideWrapper.id = 'carousel_' + new Date().getTime();
	slideWrapper.className = 'carousel';
	// Add controls
	var prevBtn = document.createElement('a');
	prevBtn.className = 'slideshow_prev slideshow_button disabled';
	//prevBtn.className = 'slideshow_prev slideshow_button';
	prevBtn.appendChild(document.createTextNode('previous'));
	var nextBtn = document.createElement('a');
	nextBtn.appendChild(document.createTextNode('next'));
	nextBtn.className = 'slideshow_next slideshow_button';
	container.innerHTML = '';
	container.style.overflow = 'hidden';
	container.style.position = 'relative';
	container.appendChild(prevBtn);
	container.appendChild(nextBtn);
	
	// Add slides
	for (var i=0; i < numToShow; i++) {
		try {
			li = document.createElement('li');
			a = document.createElement('a');
			a.href = slideData[i].thumbnail[0].href;
			a.target = "_blank";
			captionLink = document.createElement('a');
			captionLink.href = slideData[i].thumbnail[0].href;
			captionLink.target = "_blank";
			caption = document.createElement('span');
			captionText = slideData[i].title[0].value.substr(0, 18) + '...'
			if (slideData[i].views) {
			  captionText += '(' + slideData[i].views[0].value + ' views)';
			} 
			captionLink.appendChild(document.createTextNode(captionText));
			caption.appendChild(captionLink);
			img = new Image();
			img.className = 'slide';
			img.src = slideData[i].thumbnail[0].src;
			img.alt = slideData[i].title[0].value;
			li.appendChild(a);
			a.appendChild(img);
			li.appendChild(caption);
			slideWrapper.appendChild(li);
		} catch (e) {
		}
	}
	document.getElementById(containerId).appendChild(slideWrapper);
	
	// Animation
	var imgWidth = 170; //$('#'+ containerId +' img.slide')[0].width;
	var imgMargin = 10;
	$('.slideshow_next').click(function() {
		if (Widgets.slideshow.inTransition == true) {
			return;
		} else {
			Widgets.slideshow.inTransition = true;
		}
		var offset = $('#'+slideWrapper.id)[0].style.left;
		offset = offset ? offset.match(/[\-0-9]+/)[0] : 0;
		var newOffset = (parseInt(offset) - imgWidth - imgMargin);
		var minOffset = Widgets.slideshow.minOffset = -1 * (numToShow - 1) * (imgWidth + imgMargin);
		
		if (newOffset <= minOffset) {
			newOffset = minOffset;
			Widgets.slideshow.endTransition();
		} else {
			$('#'+slideWrapper.id).animate({
				left: newOffset
			}, 500, null, Widgets.slideshow.endTransition);
		}
	});
	$('.slideshow_prev').click(function(evt) {
		if (Widgets.slideshow.inTransition == true) {
			return;
		} else {
			Widgets.slideshow.inTransition = true;
		}
		var offset = $('#'+slideWrapper.id)[0].style.left;
		offset = offset ? offset.match(/[\-0-9]+/)[0] : 0;
		if (offset >= 0) {
			offset = 0;
			Widgets.slideshow.endTransition();
		} else {
			$('#'+slideWrapper.id).animate({
				left: (parseInt(offset) + imgWidth + imgMargin)
			}, 500, null, Widgets.slideshow.endTransition);
		}
	});
	
}
Widgets.slideshow.inTransition = false;
Widgets.slideshow.minOffset = null;
Widgets.slideshow.endTransition = function () {														
	Widgets.slideshow.inTransition = false;	

	if (!this.style) { return; }
	var offset = this.style.left;
	offset = offset ? offset.match(/[\-0-9]+/)[0] : 0;
	
	if (offset >= 0) {
		$('#'+this.id).parent().children('.slideshow_prev').attr('className', 'slideshow_prev slideshow_button disabled');
	} else {
		$('#'+this.id).parent().children('.slideshow_prev').attr('className', 'slideshow_prev slideshow_button');
	}
	

	if (offset - 170 - 10 <= Widgets.slideshow.minOffset) {
		$('#'+this.id).parent().children('.slideshow_next').attr('className', 'slideshow_next slideshow_button disabled');
	} else {
		$('#'+this.id).parent().children('.slideshow_next').attr('className', 'slideshow_next slideshow_button');
	}	

}


Widgets.blogfeed = function (containerId) {
	if (!Widgets.blogData || !Widgets.blogData.groups) { 
		return false;
	}							
	var i, feedData = Widgets.blogData.groups.RSS_Item;
	var numToShow = Math.min(feedData.length, 4);
	var container = document.getElementById(containerId);
	var postTitle, postLink, postList = document.createElement('ul');
	postList.id = 'post_list_' + new Date().getTime();
	postList.className = 'post_list';
	var postPreview, previewArea = document.createElement('div');
	previewArea.className = 'preview_area';
	previewArea.id = 'preview_area_' + new Date().getTime();
	
	container.innerHTML = '';
	container.style.overflow = 'auto';
	container.style.height = '140px';
	
	for (i=0; i<numToShow; i++) {
		try {
			postTitle = document.createElement('li');
			postLink = document.createElement('a');
			if (i==0) {
				postLink.className = 'active post_link';
			} else {
				postLink.className = 'post_link';
			}
			postLink.id = 'post_link_'+i;
			postLink.href = (feedData[i].Title[0].href);
			postLink.target = "_blank";
			postLink.appendChild(document.createTextNode(feedData[i].Title[0].value));
			postTitle.appendChild(postLink);
			postList.appendChild(postTitle);
			
			// Previews
			postPreview = document.createElement('div');
			postPreview.className = 'post_preview';
			if (i==0) {
				postPreview.style.display = 'block';
			} else {
				postPreview.style.display = 'none';
			}
			postPreview.id = 'post_preview_'+i;
			postPreview.appendChild(document.createTextNode(feedData[i].Post[0].value));
			previewArea.appendChild(postPreview);
		} catch (e) {
		}
	};
	
	container.style.display = 'none';
	container.appendChild(previewArea);
	container.appendChild(postList);
	container.style.display = 'block';
	
	// Add preview handlers
	$('.post_list li a').mouseover(function (evt) {
		var htmlId = evt.target.id.match(/[0-9]+/);
		if (htmlId) {
			htmlId = htmlId[0];
			$('.post_preview').hide();
			$('#post_preview_'+htmlId).show();
			$('.post_link').attr('className', 'post_link');
			$('#post_link_'+htmlId).attr('className', 'active post_link');
		}
		return;
	});

};


