/*
 * Copyright 2008 Michelin North America, Inc. All Rights Reserved.
 * 
 * TSS Page Analytics Event Manager
*/

    function pageAnalyticsEventPayload() {
        this.type = "";
        this.payload = new Object();
        this.getType=function() { return this.type; }
        this.setType=function(x) { this.type=x; }
        this.getPayload=function() {
            alert("ERROR: pageAnalyticsEventPayload.getPayload() is unsupported");
        }
        this.setPayload=function(x) {
            alert("ERROR: pageAnalyticsEventPayload.setPayload() is unsupported");
        }
    }

    function pageAnalyticsEvent() {
    	this.name = "";
    	this.payload = new pageAnalyticsEventPayload();
    	this.getName=function() { return this.name;	}
    	this.setName=function(x) { this.name = x; }
    	this.getPayloadType=function() { return this.payload.getType();	}
    	this.setPayloadType=function(x) { this.payload.setType(x); }
    	this.getPayloadContent=function() { return this.payload.getPayload(); }
    	this.setPayloadContent=function(x) { this.payload.setPayload(x); }
    	this.emptyPayload=function() { this.payload.setType(""); }
    }

	function pageAnalytics() {
		this.listener = null;
		this.debugging = false;
		this.event = new pageAnalyticsEvent();
		this.isDebugOn=function() { return this.debugging; }
		this.debugOn=function() { this.debugging = true; }
		this.debugOff=function() { this.debugging = false; }
		this.isListenerRegistered=function() { return (null != this.listener); }
		this.registerListener=function(x) {
			if (this.isDebugOn()) alert("DEBUG: pageAnalytics.registerListener("+x+") called");
			this.listener = x;
		}
		this.unregisterListener=function(x) {
			if (x === this.listener) {
				this.listener = null;
			}
			else {
				alert("pageAnalytics.unregisterListener("+x+") called to unregister an invalid listener.");
			}
		}
		this.callListener=function() {
			if (this.isListenerRegistered()) {
				eval(this.listener);
			}
		}
		this.registerEvent=function(x) {
			if (this.isDebugOn()) alert("DEBUG: pageAnalytics.registerEvent("+x+") called");
			this.event.setName(x);
			this.event.emptyPayload();
			this.callListener();
		}
		this.getEvent=function() { return this.event; }
		this.registerEventWithPayload=function(x,y,z) {
			if (this.isDebugOn()) alert("DEBUG: pageAnalytics.registerEventWithPayload("+x+","+y+","+z+") called");
			this.event.setName(x);
			this.event.setPayloadType(y);
			this.event.setPayloadContent(z);
			this.callListener();
		}
		this.clearEvent=function() {
			if (this.isDebugOn()) alert("DEBUG: pageAnalytics.clearEvent() called");
			this.event.setName("");
			this.event.emptyPayload();
		}
	}

	//Page Analytics manager for the page
	var analytics = new pageAnalytics();
	
