var URL = "http://crm.edgecampaign.co.uk/";
var _CRMT = function() {
	this._init();
}
_CRMT.prototype = {
	_init : function() {
		this._loggedIn = this._getLoginName() != "anonymous" ? true : false;
	},
	
	_loggedIn : false,
	_setLoggedIn : function() {
		var crmHolder = document.getElementById("crmInnerHolder");
		crmHolder.innerHTML = this._html.loggedIn.replace("{loginName}", this._getLoginName());
		
		// Set the actions
			var parent = this;
			// logout
			var logOut = document.getElementById("crmLogout");
			
			logOut.onclick = function() {
				parent._deleteCookie();
				parent._setLoggedOut();
			}
	},
	_setLoggedOut : function() {
		var crmHolder = document.getElementById("crmInnerHolder");
		crmHolder.innerHTML = this._html.loggedOut;
		
		// Set the actions of the form		
			var parent = this;
			
			// Login field
			var loginName = document.getElementById("crmLoginName");
			loginName.onfocus = function() {
				if (this.value == "Email") { this.value = ""; }
			}
			loginName.onblur = function() {
				if (this.value == "") { this.value = "Email"; }
			}
			
			// Login form
			var loginForm = document.getElementById("crmTrackingForm");
			loginForm.onsubmit = function() {
				var loginError = false;
				var loginButton = this.crmLogin;
				var loginName = this.crmLoginName;
				
				loginButton.disabled = "disabled";
				var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
				if (!emailPattern.test(loginName.value)) {
					loginName.className = "crmError";
					loginError = true;
				} else {
					loginName.className = "";
				}
				if (loginError) { loginButton.disabled = ""; }
				else { parent._setCookie("crmLoginName", loginName.value, parent.cookieLife); parent._setLoggedIn(); }
				return false;
			}
	},
	_loginDOM : null,
	
	_cookieLife : 5,
	_setCookie : 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=/";
	},
	_deleteCookie : function() {
		var name = "crmLoginName";
		this._setCookie(name, "", -1);
	},
	_getLoginName : function() {
		var name = "crmLoginName";
		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 "anonymous";
	},
	_html : {
		holder : '\
			<div id="crmTrackingHolder">\
				<div id="crmInnerHolder">\
				</div>\
			</div>\
		',
		loggedOut : '\
			<form name="crmTrackingForm" action="" method="post" id="crmTrackingForm">\
				<input type="text" name="crmLoginName" id="crmLoginName" value="Email" maxlength="50" />\
				<input type="submit" id="crmLogin" name="crmLogin" value="Login" />\
			</form>\
		',
		loggedIn : '<p><span id="crmTrackingEmail">{loginName}</span> | <span id="crmLogout">logout</span></p>'
	},
	appendLogin : function(holder) {
		// If the image is already on the page (hard coded) add the login name to it
		if (document.getElementById("crmTrackingImage")) {
			var img = document.getElementById("crmTrackingImage");
			img.src = img.src.replace("/image.gif", "") +"/"+ this._getLoginName() +"/image.gif?loc="+ document.location;
		}
		
		if (typeof(holder) == "object" && holder.nodeType == 1) { holder = holder; }
		else if (typeof(holder) == "string" && document.getElementById(holder)) { holder = document.getElementById(holder); }
		else { holder = document.body; }
		holder.innerHTML = this._html.holder;
		if (this._loggedIn == true) { this._setLoggedIn(); }
		else { this._setLoggedOut(); }
	},
	update : function(audiences, topic, engagement) {
		if (audiences && topic && engagement) {
			var img = null;
			var email = this._getLoginName();
			if (!document.getElementById("crmTrackingImage")) {
				var img = document.createElement("img");
				img.height = 1;
				img.width = 1;
				img.id = "crmTrackingImage";
				img.alt = "";
				document.body.appendChild(img);
			} else {
				img = document.getElementById("crmTrackingImage");
			}
			url = URL;
			img.src = url + audiences +"/"+ topic +"/"+ engagement +"/"+ email +"/image.gif?loc="+ document.location;
		}
	},
	setImage : function() {
		if (document.getElementById("crmTrackingImage")) {
			var img = document.getElementById("crmTrackingImage");
			img.src = img.src.replace("/image.gif", "") +"/"+ this._getLoginName() +"/image.gif?loc="+ document.location;
		}
	},
	login : function(email) {
		this._setCookie("crmLoginName", email, this.cookieLife);
	},
	logout : function() {
		this._deleteCookie();
	}
}

var _crmTracking = new _CRMT();

