function MediaGallery(elem) {
	
   this.parentElem = $(elem);
   this.maxItems = 6;
   this.startItem = 0;
   this.refreshTimeOut = 0;
   this.sortField = 'upload DESC';
   this.timeoutEvent;
   this.collectionId = 0;
   this.channelId = 0;
   this.moderationStatus = 0;
   this.mediaUrl = '/entry';


   this.loadMedia = function(startItem) {

		if (typeof startItem == 'number') this.startItem = startItem;

		clearTimeout(this.timeoutEvent);

		var myself = this;

		var params = {
			'vhost' : selectedVHost,
			'limit'     : this.maxItems,
			'start' : this.startItem,
			'filters' : {
				filetype : [1,2],
				channel : this.channelId,
				moderationStatus : this.moderationStatus
			},
			fields : [ 'user_firstname', 'user_lastname', 'user_name', 'title', 'upload' ], 
			sort   : this.sortField
		};

	    console.log(params['filters']);

        if (this.collectionId>0) params.filters.collection = this.collectionId; 


		jsonRequest('media.getFiles',params,
		 	function(result) { myself.loadMediaResult(result); },
			function(result) { myself.handleJSonError(result); },
			true
		);

   }

   this.loadMediaResult = function(result) {

		var output = '';
		try {

			for(var i=0; i < result.data.length; i++ ) {

				var template = new Template(
					'<div class="mediaItem"><a href="'+this.mediaUrl+'/#{id}/?channel=' + this.channelId + '&amp;offset=' + i + '&moderationstatus='+this.moderationStatus+'&collection=' + this.collectionId +'&sort=' + this.sortField + '">' + 
					'  <img src="#{publicUrl}/11" alt="#{title}" />' +
					'  <span class="title">#{title}</span>'+ 
					'  <b>#{user_name}</b><br/>' +
					'  <em>#{upload}</em>'+
					'</a></div>'
				);
				output+=template.evaluate(result.data[i]);

			}

			this.parentElem.innerHTML = output;

			if (this.refreshTimeOut > 0 && result.totalCount > this.maxItems) {

				// we'll skip to the next page
				this.startItem+=this.maxItems;
				if (this.startItem > result.totalCount) this.startItem = 0;
				var myself = this;
				this.timeoutEvent = setTimeout(function() { myself.loadMedia(); },this.refreshTimeOut);

			}

		} catch (ex) { 
			console.log(ex); 
			this.parentElem.innerHTML = ex;
		}

   }

   this.handleJSonError = function(result) { 

		console.log('API Error: ' + result.result);

   }

}

