/*ajax parameter settings (constants)*/
var handleAsJsonFormat = 'json'; //json-comment-filtered
var headerRequestKey = 'X-Requested-With';
var headerRequestVal = 'XMLHttpRequest';
var ajaxRequestTime = 40000;
var ajaxRequestTimeLong = 4800000;

//Utility functions
function selectlistSetSelected(selectList, selectedValue)
{
	var itemCount;
	var mediaCampaignList = selectList;
	var listOptions = mediaCampaignList.options;
	var listCount = listOptions.length;
	for(i=0;i<listCount;i++)
	{
		if (listOptions[i].value == selectedValue)
		{
			listOptions[i].selected = true;
		}
	}	
}

function refreshPage()
{
	//var sURL = unescape(window.location.pathname);
	//window.location.href = sURL;
	window.location.replace(window.location);
	
} 

//end of utility functions
 
//Decoration functions
function showBox(elementId)
{
	var wipeIn = dojo.fx.wipeIn({node: elementId,duration: 255});
	wipeIn.play();	
}
function hideBox(elementId)
{
	var wipeOut = dojo.fx.wipeOut({node: elementId,duration: 255});
	wipeOut.play();	
}


function highlightText(elementId, startColour, endColour, timeDuration)
{
	var highlight = dojo.animateProperty(
						    {
						      node: elementId,duration: timeDuration,
						      properties: {
						        color:         { start: startColour, end: endColour }
						      }
						    });
	highlight.play();
}

function highlightBg(elementId, startColour, endColour, timeDuration)
{
	var highlight = dojo.animateProperty(
						    {
						      node: elementId,duration: timeDuration,
						      properties: {
						       backgroundColor:{ start: startColour, end: endColour }
						      }
						    });
	highlight.play();
}

//end of decoration functions

function mediaListItem_OnMouseOver(widgetId)
{
	var mediaListItem;
	var mediaListItemTitle;
	
	mediaListItem = dojo.byId('media-list-item-'+widgetId);
	mediaListItemTitle = dojo.byId('media-list-item-title-'+widgetId);
	
	highlightBg(mediaListItem, '#f4f4f4', '#ffffff', 200);
	highlightText(mediaListItemTitle, '#474545', '#65b6e0', 200);
	
}

function mediaListItem_OnMouseOut(widgetId)
{
	var mediaListItem;
	var mediaListItemTitle;
	
	mediaListItem = dojo.byId('media-list-item-'+widgetId);
	mediaListItemTitle = dojo.byId('media-list-item-title-'+widgetId);
	
	
	highlightBg(mediaListItem, '#ffffff', '#f4f4f4', 200);
	highlightText(mediaListItemTitle, '#65b6e0', '#474545', 200);

}

   
function loadPlayer(playerUrl, xmlUrl, mediaId)
{
	var so;
	so = new SWFObject(playerUrl+'?video_id='+mediaId+'&homeURL='+xmlUrl, "flashvideo", "511", "384", "8", "#000000");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("wmode", "transparent");
	so.write('meme-server-player');
} 

function loadPlayerFeed(playerUrl, xmlUrl, mediaId, feedUrl, campaignId)
{
	var so;
	so = new SWFObject(playerUrl+'?ms_campaign_id='+campaignId+'&feed_url='+feedUrl+'&video_id='+mediaId+'&homeURL='+xmlUrl, "flashvideo", "511", "384", "8", "#000000");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("wmode", "transparent");
	//stretching=uniform,fit,fill
	//so.addParam("flashvars","stretching=uniform"); 
	//so.addParam("flashvars","stretching=fit&skin="+skinUrl+"&xmlFile="+xmlFile+"&homeURL="+contestUrl+"&mediaId="+mediaId+"&videoWidth=560&videoHeight=420")
	so.write('meme-server-player');
} 

function voteCreate(baseUrl, mediaId, widgetId, ratingValue)
{
	var ratingWidget;
	var params;
	var ratingValLabel;
	var ratingVotesLabel;
	
	ratingWidget = dijit.byId('ratingWidget-'+widgetId);
	params = { "media-id":mediaId, 
			   "rating-value": ratingValue };
	ratingValLabel = dojo.byId('ratingVal-'+widgetId);
	ratingVotesLabel = dojo.byId('ratingVotes-'+widgetId);
	
	var ajaxParams = { url: baseUrl+'/vote/create/',
		  			   content: params,	
					   handleAs: handleAsJsonFormat, 
					   load: function(responseObject, ioArgs) {
					   		var voteData = responseObject; 
							if (voteData.status == 1) 
							{ 
								ratingWidget.setAttribute('value',voteData.currRating);
								ratingValLabel.innerHTML = voteData.currRating;
								ratingVotesLabel.innerHTML = voteData.currNumRatings;
							
							}
							alert(voteData.message); 		   		
					   },
					   error: function(data) {
					   			console.debug("An error occurred: ", data);
					   },
					   timeout: 40000,
					   headers: { "X-Requested-With": "XMLHttpRequest" }
					};
	dojo.xhrPost(ajaxParams);

	
}

function readMediaFeed(baseUrl, campaignId, feedUrl)
{
	var mediaListBody;
	var mediaListPagination;
	var pageFilter; 
	var params;
	var searchTerms;
	var searchOrder;
	var searchPage;
	
	mediaListBody = dojo.byId('media-list-body');
	mediaListPagination = dojo.byId('media-list-pagination');
	pageFilter = dojo.byId('media-list-pagination-page');

	searchTerms = dojo.byId('media-list-search-input');
	searchTerms = searchTerms.value;
	
	searchOrder = dojo.byId('media-list-order');
	searchOrder = searchOrder.value;
	
	searchPage = pageFilter.value;
	
	params = { 'campaign-id':campaignId,
			   'feed-url':feedUrl,
			   'search-terms':searchTerms,
			   'search-order':searchOrder,
			   'search-page': searchPage};
	
	var ajaxParams = { url: baseUrl+'/media/read-media-feed/',
			   content: params,	
			   handleAs: handleAsJsonFormat, 
			   load: function(responseObject, ioArgs) {
			   		var mediaListData = responseObject; 
					if (mediaListData.status == 1) 
					{ 
						var mediaList = mediaListData.mediaList;
						var mediaPagination = mediaListData.mediaPagination;
						var mediaCurrentPage = mediaListData.mediaCurrentPage;
						if (mediaListData.mediaCount > 0)
						{
							mediaListBody.innerHTML = mediaList;
							//dojo.parser.parse('media-list-body');
							mediaListPagination.innerHTML = mediaPagination;
							pageFilter.value = mediaCurrentPage;
						} else {
							mediaListBody.innerHTML = 'no media found';
							pageFilter.value = 1;
							
							mediaListPagination.innerHTML = '';
																
						}
						
					}
					mediaListOverlay_Hide();
					
			   },
			   error: function(data) {
			   			console.debug("An error occurred: ", data);
			   },
			   timeout: 40000,
			   headers: { "X-Requested-With": "XMLHttpRequest" }
			};

	mediaListOverlay_Show();	

	mediaListBody.innerHTML = '';
	dojo.xhrPost(ajaxParams);	
}

function readMediaList(baseUrl, campaignId)
{
	var mediaListBody;
	var mediaListPagination;
	var pageFilter; 
	var params;
	var searchTerms;
	var searchOrder;
	var searchPage;
	
	mediaListBody = dojo.byId('media-list-body');
	mediaListPagination = dojo.byId('media-list-pagination');
	pageFilter = dojo.byId('media-list-pagination-page');
	
	searchTerms = dojo.byId('media-list-search-input');
	searchTerms = searchTerms.value;
	
	searchOrder = dojo.byId('media-list-order');
	searchOrder = searchOrder.value;
	
	searchPage = pageFilter.value;
	
	params = { 'campaign-id':campaignId,
			   'search-terms':searchTerms,
			   'search-order':searchOrder,
			   'search-page': searchPage};
	
	var ajaxParams = { url: baseUrl+'/media/read-media-list/',
		  			   content: params,	
					   handleAs: handleAsJsonFormat, 
					   load: function(responseObject, ioArgs) {
					   		var mediaListData = responseObject; 
							if (mediaListData.status == 1) 
							{ 
								var mediaList = mediaListData.mediaList;
								var mediaPagination = mediaListData.mediaPagination;
								var mediaCurrentPage = mediaListData.mediaCurrentPage;
								if (mediaListData.mediaCount > 0)
								{
									mediaListBody.innerHTML = mediaList;
									dojo.parser.parse('media-list-body');
									mediaListPagination.innerHTML = mediaPagination;
									pageFilter.value = mediaCurrentPage;
								} else {
									mediaListBody.innerHTML = 'no media found';
									pageFilter.value = 1;
									
									mediaListPagination.innerHTML = '';
																		
								}
								mediaListOverlay_Hide();
							}
							
					   },
					   error: function(data) {
					   			console.debug("An error occurred: ", data);
					   },
					   timeout: 40000,
					   headers: { "X-Requested-With": "XMLHttpRequest" }
					};
	//mediaListBody.remove();
	mediaListOverlay_Show();
	
	//remove all registered widgets in mediaListBody
	var registeredWidgetIdsInput;
	var registeredWidgetIds
	var widgetIds;
	var currWidget;
	registeredWidgetIdsInput = dojo.byId('registered_widget_ids');
	if (registeredWidgetIdsInput != null)
	{
		registeredWidgetIds = registeredWidgetIdsInput.value; 
		widgetIds = registeredWidgetIds.split(',');
		widgetLength = widgetIds.length-1; //there's always an extra empty record on the array
		var currId;
		for(i=0;i<widgetLength;i++)
		{
			currId = 'ratingWidget-'+widgetIds[i];
			if (dijit.byId(currId)) { dijit.byId(currId).destroy(); }
		}
		
	}
	
	mediaListBody.innerHTML = '';
	dojo.xhrPost(ajaxParams);	

}
function mediaListOverlay_Show()
{
	dojo.block('media-list-body'); 
}

function mediaListOverlay_Hide()
{
	dojo.unblock('media-list-body');
}

function mediaFeedOrder_OnClick(baseUrl, campaignId, orderValue, callingFilter, feedUrl)
{
	//set search filter
	var searchFilter;
	var mediaListOrderNewest;
	var mediaListOrderViews;
	//var mediaListOrderVotes;
	
	mediaListOrderNewest = dojo.byId('media-list-order-newest');
	mediaListOrderViews = dojo.byId('media-list-order-views');
	//mediaListOrderVotes = dojo.byId('media-list-order-votes');	
	
	//clear all filters
	unHighlightLink(mediaListOrderNewest);
	unHighlightLink(mediaListOrderViews);
	//unHighlightLink(mediaListOrderVotes);
	
	highlightLink(callingFilter.id);
	
	searchFilter = dojo.byId('media-list-order');
	searchFilter.value = orderValue;
	readMediaFeed(baseUrl, campaignId, feedUrl);
	
}

function mediaListOrder_OnClick(baseUrl, campaignId, orderValue, callingFilter)
{
	//set search filter
	var searchFilter;
	var mediaListOrderNewest;
	var mediaListOrderViews;
	var mediaListOrderVotes;
	
	mediaListOrderNewest = dojo.byId('media-list-order-newest');
	mediaListOrderViews = dojo.byId('media-list-order-views');
	mediaListOrderVotes = dojo.byId('media-list-order-votes');	
	
	//clear all filters
	unHighlightLink(mediaListOrderNewest);
	unHighlightLink(mediaListOrderViews);
	unHighlightLink(mediaListOrderVotes);
	
	highlightLink(callingFilter.id);
	
	searchFilter = dojo.byId('media-list-order');
	searchFilter.value = orderValue;
	readMediaList(baseUrl, campaignId);
	
}
function unHighlightLink(elementId)
{
	
	dojo.style(elementId, 'textDecoration', 'none');
	dojo.style(elementId, 'fontWeight', 'normal');
	//dojo.byId(elementId).style.textDecorationUnderline = "none";
	//dojo.byId(elementId).style.fontWeight = "normal";		
}
function highlightLink(elementId)
{
	dojo.style(elementId, 'textDecoration', 'underline');
	dojo.style(elementId, 'fontWeight', 'bold');
	//dojo.byId(elementId).setAttribute('textDecoration', "underline");
	//dojo.byId(elementId).style.fontWeight = "bold";	
}

function mediaListPagination_OnClick(baseUrl, campaignId, pageValue)
{
	var pageFilter;
	var currPage;
	//clear all current selected 
	
	pageFilter = dojo.byId('media-list-pagination-page');
	
	currPage = dojo.byId('media-list-page-'+pageFilter.value);
	currPage.setAttribute('class','');
	//unHighlightLink(currPage.id);
	//alert(currPage.id);
	
	pageFilter.value = pageValue;
	currPage = dojo.byId('media-list-page-'+pageValue);
	//highlightLink(currPage.id);
	//alert(currPage.id);
	currPage.setAttribute('class','selected');
	
	readMediaList(baseUrl, campaignId);
}

function mediaFeedPagination_OnClick(baseUrl, campaignId, pageValue, feedUrl)
{
	var pageFilter;
	var currPage;
	//clear all current selected 
	
	pageFilter = dojo.byId('media-list-pagination-page');
	
	currPage = dojo.byId('media-list-page-'+pageFilter.value);
	currPage.setAttribute('class','');
	//unHighlightLink(currPage.id);
	//alert(currPage.id);
	
	pageFilter.value = pageValue;
	currPage = dojo.byId('media-list-page-'+pageValue);
	//highlightLink(currPage.id);
	//alert(currPage.id);
	currPage.setAttribute('class','selected');
	
	readMediaFeed(baseUrl, campaignId, feedUrl);
}
