//START DIMWIDGET
function forumPost(forum, title,author,date,link) {
	this.forum = forum;
	this.title = title;
	this.author = author;
	this.date = date;
	this.link = link;
}
function DIYWidget(Id, Name, Username, Url, Date, Img){
	this.Id = Id;
	this.Name = Name;
	this.Username = Username;
	this.Url = Url;
	this.Date = Date;
	this.Img = Img;
	this.Prev = -1;
	this.Next = -1;
}
function gen_DimWidget(jData,elm){
	Widget = new Array();
	TotalResults = jData.length;
	numCPage = 0;
	for (i in jData) {
		Page = new DIYWidget(jData[i].Id, jData[i].Name, jData[i].Username, jData[i].Url, jData[i].Date, jData[i].Photo);
		if (jData[i].Id > 0) {
			Page.Prev = Page.Id - 1; 
		}
		if (jData[i].Id < (TotalResults -1 )) {
			Page.Next = Page.Id + 1;
		}
		Widget.push(Page);
	}
	$(elm+' .wNavPrev').live('click',function() {
		if (Widget[numCPage].Prev != -1) {
			numCPage = Widget[numCPage].Prev;
			updateDimWidget(Widget[numCPage], elm, numCPage);
		}
		return false;
	});
	$(elm+' .wNavNext').live('click',function() {
		if (Widget[numCPage].Next != -1) {
			numCPage = Widget[numCPage].Next;
			updateDimWidget(Widget[numCPage], elm, numCPage);
		}
		return false;
	});
	
	MU = '<h3 class="ico-myself"><span>&nbsp;</span>did it myself</h3>';
	MU += '<div class="wImgConainer">';
	MU += '<a href="'+Widget[numCPage].Url+'" class="wLink">';
	MU += '<img  class="wImg" src="'+Widget[numCPage].Img+'" alt="'+Widget[numCPage].Name+'">';
	MU +='</a>';
	MU += '</div>';
	MU += '<strong class="heading heading2 wName">'+'<a href="'+Widget[numCPage].Url+'" class="wLink">' +Widget[numCPage].Name+'</a></strong>';
	MU += '<p>by <span class="wUsername">'+Widget[numCPage].Username+'</span><span>, </span>';
	MU += '<span class="wDate">'+Widget[numCPage].Date + '</span></p>';
	MU += '<ul class="btns"><li class="btn-prev wNavPrev" style="display:none;"><a href="#">&lt; previous</a></li><li class="btn-next wNavNext"><a href="#">next &gt;</a></li></ul>';
	MU += '<div class="center wBtn"><div class="center-holder"><div class="center-frame"><a href="#" class="more"><span>submit a project</span></a></div></div></div>';
	return MU;
}
function updateDimWidget(WidgetPage, elm, pgnum) {
	$(elm+' .wImg').attr('src',WidgetPage.Img);
	$(elm+' .wName').text(WidgetPage.Name);
	$(elm+' .wUsername').text(WidgetPage.Username)
	$(elm+' .wDate').text(WidgetPage.Date);
	$(elm+' .wLink').attr('href',WidgetPage.Url);
	switch(pgnum) {
	case 2: $('#DimWidget .btn-next').hide(); break;
	case 0: $('#DimWidget .btn-prev').hide(); break;
	default:
		$('#DimWidget .btn-prev').show();
		$('#DimWidget .btn-next').show();
	}
}
function call_func (func) {
   return this[func].apply(this, Array.prototype.slice.call(arguments, 1));
}


function loadInView(loadIn, svc, elmId, elmClass, callback) {
	$(loadIn).ready(function() {
		$(loadIn).bind('inview', function(e, isInView, visiblePartX, visiblePartY) {
			var elem = $(this);
			if (elem.data('inviewtimer')) {
				clearTimeout(elem.data('inviewtimer'));
				elem.removeData('inviewtimer');
			}
			if (isInView) {
				elem.data('inviewtimer', setTimeout(function() {
					if (visiblePartY == 'top') {
						elem.data('seenTop', true);
					} else if (visiblePartY == 'bottom') {
						elem.data('seenBottom', true);
					} else {
						elem.data('seenTop', true);
						elem.data('seenBottom', true);
					}
					if (elem.data('seenTop')) {
						elem.unbind('inview');
						$.getJSON(svc, function(data) {
							$(loadIn).html('');
							$('<div/>', {
								'id': elmId,
								'class': elmClass,
								html: call_func(callback, data, loadIn)
							}).appendTo(loadIn);
						});
					}
				}, 150));
			}
		});
	});
}
function regJsWidget(elmId, svc, elmClass, loadIn, inView, callback) {
	selector = '#'+elmId;
	if ($(loadIn).is('*')) {
		$(loadIn).ready(function() {
			if (inView) {
				loadInView(loadIn, svc, elmId, elmClass, callback);
			}else{
				$.getJSON(svc, function(data) {
					$(loadIn).html('');
					$('<div/>', {
						'id': elmId,
						'class': elmClass,
						html: call_func(callback, data, selector)
					}).appendTo(loadIn);
				});
			}
		});
	}
}


// END dim widget js

