// (c) 2007-2009 GramCast, LLC -- All Rights Reserved


var	GCAuserInfoCookieName = 'GCSuserInfo';


function GCAuserInfo() {

	// private properties
	var	userName = '';
	var	dispName = '';
	var	fullName = '';
	var	loginCount = 0;
	var	ndaTS = 0;				//time-stamp of when the NDA was agreed to
	var	pAbout = '';			//presentaion About

	// these private properties are situational
	var	hasLoggedIn = false;
	
	// private methods
	function serialize () {
		var e = new Array();
		var s;
		var t;
		
		//userName
		s = "userName='" + userName + "'";
		e.push(s);

		//dispName
		s = "dispName='" + dispName + "'";
		e.push(s);
		
		//fullName
		s = "fullName='" + fullName + "'";
		e.push(s);
		
		//loginCount
		s = "loginCount=" + loginCount;			//numeric
		e.push(s);

		//ndaTS
		s = "ndaTS=" + ndaTS;					//numeric
		e.push(s);

		//pAbout
		s = "pAbout=" + pAbout;					// 0 or 1
		e.push(s);

		//hasLoggedIn
		t = (hasLoggedIn) ? 'true' : 'false';
		s = "hasLoggedIn=" + t;
		e.push(s);
		
		
		s = e.join('|');
		return s;
	}
	
	function deserialize (source) {
		if (! source) {return}
		var e = source.split('|');				//array of elements
		var s;
		var name;
		var value;
		var	p;
		
		//loop through all entries
		for(var i=0;i < e.length; i++) {
			s = e[i];
			eval(s);
		}
}
	
	// privileged methods
	
	this.resetAll = function () {
		hasLoggedIn = hasAgreedNDA = false;
		loginCount = 0;
		ndaTS = 0;
		userName = dispName = fullName = '';
	}
	
	this.canAccessResource = function(name) {
		switch (name) {
			case 'pAbout':
				return (pAbout != 0) ? true : false;
				break;
			default:
				return false;
		}
	}
	
	this.setCanAccessResource = function (name, val) {
		var s = name + "=" + val;
		eval(s);
	}
	
	this.hasAgreedNDA = function() {
		return (ndaTS > 0) ? true : false;
	}
	
	this.ndaTS = function() {
		return ndaTS;
	}
	
	this.setNdaTS = function(val){
		if (typeof val == 'number') {
			ndaTS = val;
		} else {
			ndaTS = parseInt(val);
		}
	}

	this.userName = function() {
		return userName;
	}
	
	this.setUserName = function(name) {
		userName = name;
	}

	this.dispName = function() {
		return dispName;
	}
	
	this.setDispName = function(name) {
		dispName = name;
	}

	this.fullName = function() {
		return fullName;
	}
	
	this.setFullName = function(name) {
		fullName = name;
	}
	
	this.loginCount = function() {
		return loginCount;
	}

	this.setLoginCount = function(val) {
		if (typeof val == 'number') {
			loginCount = val;
		} else {
			loginCount = parseInt(val);
		}
	}

	this.hasLoggedIn = function() {
		return hasLoggedIn;
	}
	
	this.setHasLoggedIn = function(val) {
		hasLoggedIn = (val) ? true : false;
	}
	
	this.setCookie = function () {
		GCCcreateCookie(GCAuserInfoCookieName, serialize());
	}
	
	this.loadFromCookie = function () {
		deserialize(GCCreadCookie(GCAuserInfoCookieName));
	}
	
	this.removeCookie = function () {
		GCCeraseCookie(GCAuserInfoCookieName);
	}
}


		

