﻿// JScript File

/*

// Settings

//var showDateTime = false;
//var showSource = false;
//var openFirstArticle = false;
//var nrOfColumns = 1;

//function SetSettings(ShowDateTime, ShowSource, OpenFirstArticle, NrOfColumns)
//{
//	showDateTime = ShowDateTime;
//	showSource = ShowSource;
//	openFirstArticle = OpenFirstArticle;
//	nrOfColumns = NrOfColumns;
//}

// Dynamic news dialog
//var targetid = '';
var keywords = new Array();
var targets = new Array();

var theme = '';
var culture = '';

var ActionKeywordId = '';
var ActionAddId = '';
var ActionRemoveId = '';

var TextLoading = '';
var TextPersonalNewsError = '';

function SetActions(KeywordId, RemoveId)
{
	ActionKeywordId = KeywordId;
	//ActionAddId = AddId;
	ActionRemoveId = RemoveId;
}

function SetText(Loading, PersonalNewsError)
{
	TextLoading = Loading;
	TextPersonalNewsError = PersonalNewsError;
}

function ShowLoading(container)
{
	$(container).html("<table width='100%' height='400px'><tr>" +
										"<td align='right' valign='middle' width='50%'>" +
										"<img src='images/y-searchprogress.gif'>" +
										"</td><td align='left' valign='middle' width='50%'>" + 
										TextLoading + "..." +
										"</td></tr></table>");
}
function ShowError(container, error)
{
	$(container).html("<table width='100%' height='400px'><tr>" +
										"<td align='center' valign='middle' width='50%'>" +
										error +
										"</td></tr></table>");
}

function UpdateAllNews()
{
	if (keywords.length > 0)
	{
		var query = keywords.pop();

		PageMethods.GetNews(query, '', theme, NewsOK, NewsFailed);
	}
}

function UpdateNews(id, keyword)
{
	//alert('UpdateNews()');
	//targetid = id;
	keywords.push(keyword);
	targets[keyword] = id;
	UpdateAllNews();
}

function NewsOK(result, userContext, methodName)
{
	if (result != null)
	{
		var index = result.indexOf('|');
		var target = result.substring(0, index);
		result = result.substring(index+1);
		var targetid = targets[target];
		
		if (targetid != '')
		{
			//alert('targetid: ' + targetid);
			var e = $('#' + targetid);
			if (e != null)
			{
				//alert('target found: ' + targetid);
				e.html(result);
			}
		}
	}
	
	UpdateAllNews();
}

function NewsFailed(error, userContext, methodName)
{
	//alert('Failed');
//
//	var index = result.indexOf('|');
//	var target = result.substring(0, index);
//	result = result.substring(index+1);
//	var targetid = targets[target];
//	
//	if (targetid != '')
//	{
//		var e = GetById(targets[target]);
//		if (e != null)
//			e.innerHTML = 'News failed!';
//	}
	UpdateAllNews();
}

var columns = new Array();
var nr_of_columns = 0;
var containerId = '';
var container = null;

var actionResetButtonId = '';

var i = 0;
var queries = new Array();

function SetActionResetButtonId(id)
{
	alert('SetActionResetButtonId: ' + id);
	categoryRootButtonId = id;
}

function RefreshNews()
{
	alert('RefreshNews()');
	var q = queries;
	//alert($('#' + containerId).html());
	InitNews(containerId, nr_of_columns, theme);
	//alert($('#' + containerId).html());
	// reset news
	for(var i=0; i<q.length; i++)
		AddNewsDialog(q[i]);
	//alert($('#' + containerId).html());
}

function InitNews(ContainerId, Columns, Theme, Language)
{
	keywords = new Array();
	targets = new Array();

	nr_of_columns = Columns;
	containerId = ContainerId;
	theme = Theme;
	culture = Language;
	
	container = $('#' + containerId);

//	if (container != null)
//	{
//		var content = '';
//		content += "<table width='100%' class='NewsItemsTable'><tr>";
//		var percent = 100;
//		if (Columns > 0)
//			percent = Math.round(100/Columns);

//		for(var i=0; i<Columns; i++)
//		{
//			content += "<td width='" + percent + "%' valign='top'><div id='" + containerId + i + "' class='NewsItemsColumn'><div id='" + ContainerId + i + "_insert'></div></div></td>";
//			columns[i] = new Array();
//		}
//		content += "</tr></table>";
//		
//		container.html(content);
//	}
	
	queries = new Array();
}

function AddKeyword(keyword)
{
	$('#' + ActionKeywordId).val(keyword);
	$('#' + ActionAddId).click();
}
function RemoveKeyword(keyword)
{
	$('#' + ActionKeywordId).val(keyword);
	$('#' + ActionRemoveId).click();
	
	RemoveQuery(keyword);
}

function QueryColumn(keyword)
{
	for(var i = 0; i<nr_of_columns; i++)
	{
		for(var j = 0; j<columns[i].length; j++)
		{
			if (columns[i][j] == keyword)
				return i;
		}	
	}
	return -1;
}

function RemoveQuery(keyword)
{
	var columnId = QueryColumn(keyword);
	if (columnId > -1)
	{
		var column = new Array();
		for(var i = 0; i<columns[columnId].length; i++)
		{
			if (columns[columnId][i] != keyword)
				column[column.length] = columns[columnId][i];
		}
		columns[columnId] = column;
	}
	ViewColumns();
}

function QueryExists(keyword)
{
	return (QueryIndex(keyword) != -1);
}
function QueryIndex(keyword)
{
	for(var i=0; i<queries.length; i++)
	{
		if (queries[i] == keyword)
			return i;
	}
	return -1;
}

function Strip(keyword)
{
	var split = keyword.split('\'');
	for(var i=0; i<split.length; i++)
	{
		if (split[i] != '')
		{
			var split2 = split[0].split('"');
			for(var j=0; j<split2.length; j++)
			{
				if (split2[j] != '')
					return split2[j];
			}
		}
	}
	return '';
}

function AddNewsDialog(keyword, addToCookie)
{
	// strip query
	var strippedKeyword = Strip(keyword);

	if (!QueryExists(strippedKeyword)) // && (container.html() != null))
	{
		queries[queries.length] = strippedKeyword;
		PageMethods.GetNewsDialog(strippedKeyword, addToCookie, theme, culture, 
															NewsDialogOK, NewsDialogFailed);
	}
}

//function AddNewsDialog(keyword)
//{
//	AddNewsDialog(keyword, false);
//}

function AddNewNewsDialog(keyword)
{
	if (keyword != '')
	{
		//AddKeyword(keyword);
		AddNewsDialog(keyword, true);
	}
}

function NewsDialogOK(result, userContext, methodName)
{
	if (result != null)
	{
		$('#PN_Example').hide();
		
		var index = result.indexOf('|');
		var target = result.substring(0, index);
		result = result.substring(index+1);
		//alert('target: ' + target);
		
		index = result.indexOf('|');
		var query = result.substring(0, index);
		result = result.substring(index+1);
		//alert('query: ' + query);
		
		var column = GetColumn(query);
		
		$('#' + containerId + column + ' > div:last').append(result);
		
		// load news
		UpdateNews(target, query);
		
		ViewColumns();
		
		//alert('Click actionResetButtonId: ' + $('#' + actionResetButtonId));
		//$('#' + actionResetButtonId).click();
	}	
}

function ViewColumns()
{
	if ($('#Test').html() != null)
	{
		var content = '';
		content += '<table border=1>';
		
		var row = 0;
		var stop = false;
		while(!stop)
		{
			stop = true;
			content += '<tr>';
			for(var i=0; i<columns.length; i++)
			{
				if (columns[i].length > row)
				{
					content += '<td>' + columns[i][row] + '</td>';
					stop = false;
				}
				else
					content += '<td>&nbsp;</td>';
			}
			content += '</tr>';
			row++;
		}
		content += '</table>';
		$('#Test').html(content);
	}	
}

function ParseColumnsString(columnsString)
{
	columns = new Array();
	//alert(columnsString);
	
	var aKeywords = columnsString.split('|');
	if (aKeywords.length > 0)
	{
		for(var i=0; i<aKeywords[0]; i++)
			columns[i] = new Array();
	}
	
	var aKeyword = '';
	var iColumn = 0;
	var iRow = 0;
	for(var i=1; i<aKeywords.length; i++)
	{
		var aKeyword = aKeywords[i].split(':');
		if (aKeyword.length == 2)
		{
			var aLocation = aKeyword[0].split(',');
			iColumn = aLocation[0];
			iRow = aLocation[1];
			//alert(aKeyword[0] + ': ' + iColumn + ',' + iRow);
			columns[iColumn][iRow] = aKeyword[1];
		}
	}
	
	ViewColumns();
}

function GetColumn(query)
{
	var result = 0;
	if (columns.length == 0)
		columns[0] = new Array();
	var i = 0;
	for(i = 0; i<columns.length; i++) //columns.length; i++)
	{
		if (columns[i] == null)
			columns[i] = new Array();
			
		if (columns[i].length < columns[result].length)
			result = i;
	}
	
	columns[result][columns[result].length] = query;
	return result;
}

function NewsDialogFailed(error, userContext, methodName)
{
	//alert('Dialog failed');
}

function LoadPersonalNews()
{
	//alert('LoadPersonalNews');
	if ($('#PN_NewsItems').html() != null)
	{
		ShowLoading('#PN_NewsItems');
		
		PageMethods.GetPersonalNews(containerId, theme, culture,
																PersonalNewsOK, PersonalNewsFailed);
								
		PageMethods.GetPersonalNewsColumns(PersonalNewsColumnsOK, PersonalNewsColumnsFailed);
	}
}

function PersonalNewsOK(result, userContext, methodName)
{
	if (result != '')
		$('#PN_NewsItems').html(result);
}

function PersonalNewsFailed(error, userContext, methodName)
{
	ShowError('#PN_NewsItems', TextPersonalNewsError);
}

function PersonalNewsColumnsOK(result, userContext, methodName)
{
	ParseColumnsString(result);
}

function PersonalNewsColumnsFailed(error, userContext, methodName)
{ }

// Cookie save
var cookieKeywords = new Array();

function CookieClear()
{
	cookieKeywords = new Array();
}
function CookieAddKeyword(keyword)
{
	//alert('CookieAddKeyword(' + keyword + ')');
	cookieKeywords[cookieKeywords.length] = keyword;
}
function CookieSave(name)
{
	//alert('CookieSave(' + name + ')');
	// save keywords
	var value = '';
	for(var i=0; i<cookieKeywords.length; i++)
	{
		if (i > 0)
			value += '&';
		value += 'keyword' + i + '=' + cookieKeywords[i];
	}
	var expires = new Date();
	expires.setDate(expires.getDate() + 60);
	
	document.cookie = name + '=' + value + '; expires=' + expires.toTimeString();
}
function CookieSettingsSave(name, showDateTime, showIcon, openFirstArticle, nrOfColumns)
{
	//alert('CookieSettingsSave(' + name + ')');
	// save keywords
	var value = 
		'Columns=' + nrOfColumns +
		'&OpenFirstArticle=' + openFirstArticle + 
		'&EnableTime=' + showDateTime + 
		'&EnablePublisherIcon=' + showIcon;
		
	var expires = new Date();
	expires.setDate(expires.getDate() + 60);
	
	document.cookie = name + '=' + value + '; expires=' + expires.toTimeString();
}
*/
