/**
 * Discover Account Center module
 * 
 * @namespace discover
 * @class     discover.accountCenter
 */

/* Silently create the discover namespace if it doesn't exist already */
if (typeof discover === 'undefined') {
	var discover = {};
}

discover.accountCenter = {

	/* Cookie settings */
	
	fontSizeSmall: 1,
	fontSizeMedium: 2,
	fontSizeLarge: 3,
	fontSizeCookie : "fontSize",
	sortFieldCookie : "sortField",
	sortDescendCookie : "sortDescend",
	cookieDuration: 365,
	defaultFontSize: 1,
	defaultSortField: "transDate",
	defaultSortDescend: false,

    getFontSizeCookieValue : function () {
        var out = +(this.readCookie(this.fontSizeCookie));
        return out || this.defaultFontSize;
    },

 	getFontSize : function () {
		 var size = this.readCookie(this.fontSizeCookie);
		 if (size == null) {
		 	size = this.defaultFontSize;
		 } else {
		 	size = Number(size);
		 }

		 return size;
	},
	
	setFontSize : function (size) {
		// allowable values for size: 1, 2, 3
		this.createCookie(this.fontSizeCookie, size, this.cookieDuration);
	},
	
	getSortField : function () {
		var sortField = this.readCookie(this.sortFieldCookie);
		if (sortField == null) {
			sortField = this.defaultSortField;
		}
		
		return sortField;
	},
	
	
	getSortDescend : function () {
		var sortDescend = this.readCookie(this.sortDescendCookie);
		if (sortDescend == null) {
			sortDescend = this.defaultSortDescend;
		} else {
			sortDescend = this.convertToBoolean(sortDescend);
		}
		
		return sortDescend;
	},
	
	setSortOrder : function (sortField, sortDescend) {
		// allowable values for sortField: transDate, postDate, fullDescription, amount, category
		// allowable values for sortDescend: true, false
		this.createCookie(this.sortFieldCookie, sortField, this.cookieDuration);
		this.createCookie(this.sortDescendCookie, sortDescend, this.cookieDuration);
	},
	
	/* Cookie utils */
	
	createCookie : function (name, value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		} else {
			var expires = "";
		}
		document.cookie = name + "=" + value + expires + "; path=/";
	},
	
	readCookie : function (name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	
	eraseCookie : function (name) {
		this.createCookie(name,"",-1);
	},
	
	/* Data util */
	
	convertToBoolean : function (value) {
		return value.toLowerCase() == "true";
	}
	
};