/*	BMO: store articles for users to be retrieved later on
*/
function Notepad(){}

Notepad.prototype =
{
	cookieName: "notepad",
	cookieDuration: 365,
	savedArticleListId: "savedArticleList",
	notepadSelectAllId: "notepadSelectAll",
	notepadArticleId: "notepadArticle",
	maxArticles: 100,
	sectionSelect: "",
	sortType: 1,
	sortOrder: "false",
	page: 0,
	articleMessageId: "articleMessage",
	textNoteSaved: "Article added.",
	textNoteAlreadySaved: "Already on notepad.",
	textMaxArticles: "Notepad full.",
	textCookiesDisabled: "Cookies are disabled.",

	// store article ID in cookie
	// return: false - if the article was not added (already exists) or true, if the article was added
	_addArticle:function( articleId )
	{
		var cookieSavedArticles = this._getArticles();
		var savedArticles = cookieSavedArticles.split(",");
		var alreadyExists = false;
		
		// check if the article already exists
		for( i=0; i < savedArticles.length; i++ )
        {
            savedArticleData = savedArticles[i].split("@");
            savedArticleId = savedArticleData[0];
			if( savedArticleId == articleId )
			{
                alreadyExists = true;
				break;
			}
		}
		
		if( alreadyExists == false )
		{
			if( savedArticles.length >= this.maxArticles )
			{
				return 2;
			}
			var date = new Date;
			articleId = articleId + "@" + date.getTime();
			cookieSavedArticles = cookieSavedArticles.length == 0 ? articleId : cookieSavedArticles + ',' + articleId;
			setCookie( this.cookieName, cookieSavedArticles, this.cookieDuration );
			cookieSavedArticles = this._getArticles();
			if( cookieSavedArticles == null || cookieSavedArticles.length == 0 )
				return 3;
			return 1;
		}
		else
		{
			return 0;
		}

		return 0;
	},
	
	// delete a stored article from cookie
	_removeArticle:function( articleId )
	{
        var cookieSavedArticles = this._getArticles();
		var savedArticles = cookieSavedArticles.split(",");
		var newCookie = "";
		var isArray = articleId.constructor == Array;
		
		// iterate through array to find the id
		for( i = 0; i < savedArticles.length; i++ )
		{
            savedArticleData = savedArticles[i].split("@");
            savedArticleId = savedArticleData[0];
            var keep = true;
            if( isArray )
            {
            	for( var aid in articleId )
            	{
            		if( savedArticleId == articleId[aid] )
            		{
            			keep = false;
            			break;
            		}
            	}
            }
            else
            {
            	keep = savedArticleId != articleId;
            }
			if( keep )
			{
                newCookie = newCookie.length == 0 ? savedArticles[i] : newCookie + ',' + savedArticles[i];
			}
		}
		setCookie( this.cookieName, newCookie, this.cookieDuration );
	},
	
	_getArticles:function()
	{
		return getCookie( this.cookieName, "" );
	},
	
	saveArticle:function( articleId )
	{
		var error = this._addArticle( articleId );
		if( error == 0 )
		{
			this.showMessage( this.textNoteAlreadySaved );
		}
		else
		if( error == 1 )
		{
			this.showMessage( this.textNoteSaved );
		}
		else
		if( error == 2 )
		{
			this.showMessage( this.textMaxArticles );
		}
		else
		if( error == 3 )
		{
			this.showMessage( this.textCookiesDisabled );
		}
		return false;
	},

	update:function()
	{
		var parameterList = "";
		var articleIdList = this._getArticles();
		parameterList = appendUrlParameter( parameterList, "ajax", "notepad" );
		parameterList = appendUrlParameter( parameterList, "sectionSelect", this.sectionSelect );
		parameterList = appendUrlParameter( parameterList, "sortType", this.sortType );
		parameterList = appendUrlParameter( parameterList, "sortOrder", this.sortOrder );
		parameterList = appendUrlParameter( parameterList, "page", this.page );
		parameterList = appendUrlParameter( parameterList, "articleIdList", articleIdList );

		runRequest( this.savedArticleListId, parameterList );
	},
	
	// select all articles
	selectAll:function()
	{
		var selected = document.getElementById(this.notepadSelectAllId).checked;
	    var listEl = document.getElementsByName(this.notepadArticleId);
		for( var childElNo = 0; childElNo < listEl.length; childElNo++ )
		{
			listEl[childElNo].checked = selected;
		}
	},
	
	deleteArticle:function( articleId )
	{
		this._removeArticle( articleId );
		this.update();
	},
	
	// delete all selected articles
	deleteAll:function()
	{
		var articleIdList = new Array();
	    var listEl = document.getElementsByName(this.notepadArticleId);
		for( var childElNo = 0; childElNo < listEl.length; childElNo++ )
		{
			if( listEl[childElNo].checked )
			{
				var articleId = listEl[childElNo].id.substr(14);
				articleIdList[articleIdList.length] = articleId;
			}
		}
		if( articleIdList.length > 0 )
		{
			this.deleteArticle( articleIdList );
		}
	},
	
	// select a section to display
	selectSection:function( sectionId )
	{
		this.sectionSelect = sectionId;
		this.update();
	},
	
	setSortMethod:function( type, order )
	{
		this.sortType = type;
		this.sortOrder = order;
		this.update();
	},
	
	setPage:function( page )
	{
		this.page = page;
		this.update();
	},
	
	showMessage:function( message )
	{
		showArticleMessage( this.articleMessageId, message );
	}
	
};

