﻿var Sim = {};
Sim.Track = {};

Sim.Track.ActivityTrack = function() {
	this._startDate = null;
	this._duration = null;
	this._pixelRoot = "http://content.sweetim.com/bi/";
	this._pixelTypeMap = { 1: "track.gif", 2: "trackday.gif", 3: "trackweek.gif" };
}

function Sim$Core$ActivityTrack$init(startDate, duration) {
	this._startDate = startDate;
	this._duration = duration * 86400000;
}

function Sim$Core$ActivityTrack$trackInstance(prodID, compID, actID, cargo) {
	this._track(1, prodID, compID, actID, cargo);
}

function Sim$Core$ActivityTrack$trackDaily(prodID, compID, actID, cargo) {
	this._track(2, prodID, compID, actID, cargo);
}

function Sim$Core$ActivityTrack$trackWeekly(prodID, compID, actID, cargo) {
	this._track(3, prodID, compID, actID, cargo);
}

function Sim$Track$ActivityTrack$isEnabled() {
	var result = false;
	var now = Number(new Date());
	var startD = Number(this._startDate);
	if(startD <= now && (now - startD) <= this._duration) {
		result = true;
	}
	return result;
}

function Sim$Core$ActivityTrack$createPixelURL(trackType, prodID, compID, actID, cargo) {
	var result = this._pixelRoot + this._pixelTypeMap[trackType] + "?";
	result += "prodid=" + prodID;
	result += "&compid=" + compID;
	result += "&actid=" + actID;
	if(cargo != null && cargo != undefined && cargo instanceof Array) {
		var dataStr = "";
		for(var i = 0, count = cargo.length; i < count; i++) {
			if(i > 0) {
				dataStr += ";";
			}
			dataStr += cargo[i];
		}
		if(dataStr.length > 0) { 
			result += "&cargo=" + dataStr;
		}
	}
	return result;
}

function Sim$Core$ActivityTrack$track(trackType, prodID, compID, actID, cargo) {
	try {
		if(this.isEnabled()) {
			var url = this._createPixelURL(trackType, prodID, compID, actID, cargo);
			var imgStr = "<img src='" + url + "'/>";
			var sender = this._createTrackSender();
			if(sender) {
				sender.innerHTML = imgStr;
			}
		}
	} catch(ex) { }
}

function Sim$Core$ActivityTrack$createTrackSender() {
	var result = null;
	result = document.getElementById("trackSender");
	if(!result){
		try {
			result = document.createElement('div');
			document.body.appendChild(result);
			result.id = "trackSender";
		}
		catch(ex) {
			result = null;
		}
	}
	return result;
}

function Sim$Core$ActivityTrack$getRequestObject() {
	var result = null;
	if(this._requestFrame) {
		result = this._requestFrame.contentWindow.createXMLHttpRequest();
	}
	return result;
}

Sim.Track.ActivityTrack.prototype = {
	init: Sim$Core$ActivityTrack$init,
	trackInstance: Sim$Core$ActivityTrack$trackInstance,
	trackDaily: Sim$Core$ActivityTrack$trackDaily,
	trackWeekly: Sim$Core$ActivityTrack$trackWeekly,
	isEnabled: Sim$Track$ActivityTrack$isEnabled,
	_track: Sim$Core$ActivityTrack$track,
	_createPixelURL: Sim$Core$ActivityTrack$createPixelURL,
	_createTrackSender: Sim$Core$ActivityTrack$createTrackSender,
	_getRequestObject: Sim$Core$ActivityTrack$getRequestObject
}


/*
if(!window.XMLHttpRequest) {
	window.XMLHttpRequest = function window$XMLHttpRequest() {
		var pIDs = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
		for(var i = 0, cnt = pIDs.length; i < cnt; i++) {
			try {
				xmlHttp = new ActiveXObject(pIDs[i]);
				break;
			}
			catch(ex) { }
		}
		return xmlHttp;
	}
}
*/

if(!window.SIMTracking) {
	window.SIMTracking = new Sim.Track.ActivityTrack();
}
