// <script language="Javascript">
// <!--
function ClickWatcher() {
	var o = new AlxObj();
	o.oType = "ClickWatcher";
	et.register(EVT_CLICK,o); 
	et.register(EVT_DATALOAD_PREFIX+"DadDSN",o); 
	et.register(EVT_LOAD,o); 
	et.register(EVT_SECUREDOCUMENT,o);
	o.onDataLoaded_DadDSN = ClickWatcher_onDataLoaded_DadDSN;
	o.onSecureDocument = ClickWatcher_onSecureDocument;
	o.onclick = ClickWatcher_onclick;
	o.onLoad = ClickWatcher_onLoad;
	o.tag = ClickWatcher_tag;
	o.set = ClickWatcher_set;
	o.get = ClickWatcher_get;
	o.release = ClickWatcher_release;
	o.flags = new Array();
	o.flags[window_onload.oID] = 0;
	this.newFlags = new Array();
	o.wasSecure = false;
	o.justloaded = true;
	o.create();
	return o;
	function ClickWatcher_onDataLoaded_DadDSN(oDSN) { this.release(); }
	function ClickWatcher_onclick(aArgs) { actor = (aArgs[0].oType == "Button") ? aArgs[0].parent : aArgs[0]; sSubType = aArgs[1]; this.set(actor,true,sSubType); var debug = ''; }
	function ClickWatcher_onSecureDocument(aArgs) { this.wasSecure = true; }
	function ClickWatcher_onLoad() { this.set(window_onload, true); }
	function ClickWatcher_tag(oObject,nEntry) {
		if (!nEntry) { nEntry = ''; }
		if (this.flags[oObject.oID+nEntry]) { return this.flags[oObject.oID+nEntry]; }
		this.flags[oObject.oID+nEntry] = 0;
	}
	function ClickWatcher_set(oObject,bFlag, nEntry) {
		if (!nEntry) { nEntry = ''; }
		/* 
		if (oObject.sC) {
			var sc = oObject.sC;
			this.newFlags[sc] = "1";
		} 
		*/
		this.flags[oObject.oID+nEntry] = (bFlag) ? 1 : 0;
	}

	function ClickWatcher_get() {
		// ACS - 20030701 - Reimplemented
		var rVal =""; var aVal = new Array();
		//aVal = merge(newFlags);
		//rVal = escape(aVal.join("&"));
		
		var rVal = ''; var mychar = 0;
		var incr = 0;
		if (g_bLoading == true) {
			this.flags[window_onload.oID] = 1;
			g_bLoading = false;
		} else {
			this.flags[window_onload.oID] = 0;
		}
		try {
			this.flags[elmSecure.oID] = (this.wasSecure) ? 1 : 0; this.wasSecure = false;
		} catch(ex) { g_oLogger.out(this, "Report: " + ex.message); }
		for (var sIME in this.flags) {
			mychar = parseInt(mychar)+parseInt((Math.pow(2,incr++) * parseInt(this.flags[sIME])));
		}
		rVal = mychar.toString(16);
		while (rVal.length < 11) { rVal = "0" + rVal; } 
		return rVal;
	}
	function ClickWatcher_release() { for (var sItem in this.flags) { this.flags[sItem] = 0; } }
}
function SiteTimer() {
	var o = new AlxObj();
	o.oType = "SiteTimer";
	et.register(EVT_PAGETURN,o); et.register(EVT_BEFORENAVIGATE,o); et.register(EVT_DOCUMENTCOMPLETE,o);
	o.ct = new Array();
	o.onPageTurn = SiteTimer_onPageTurn;
	o.onBeforeNavigate = SiteTimer_onBeforeNavigate;
	o.onDocumentComplete = SiteTimer_onDocumentComplete;
	o.create();
	return o;
	function SiteTimer_onPageTurn(aArgs) {
		if (this.ct['url']!=aArgs[2]) { this.ct['url'] = aArgs[2]; this.ct['pt'] = new Date().getTime(); }
	}
	function SiteTimer_onBeforeNavigate(aArgs) { this.ct['bn'] = new Date().getTime(); }
	function SiteTimer_onDocumentComplete(aArgs) {
		if (aArgs[2] == this.ct['url']) {
			this.ct['dc'] = new Date().getTime();
			g_sTTL = (this.ct['dc']-this.ct['bn']);
		}
	}
}

function merge(aArray, sDelim)
{
	var aVal = new Array();
	for (var i in aArray)
	{
		aVal[aVal.length] = i + sDelim + aArray[i];
	}
	return aVal;
}
function Condition() {
	var o = new AlxObj();

	o.onBeforeNavigate = Condition_onBeforeNavigate;
	o.firstLoad = Condition_firstLoad;
	o.rlConfig = Condition_rlConfig;
	o.create();
	et.register(EVT_BEFORENAVIGATE,o);
	return o;

	function Condition_onBeforeNavigate(aArgs) {
		if (String(BrowserProxy.Host.Location).indexOf("#tbrlcfg") > -1) {
			g_oLogger.out(this,"got onBeforeNavigate request to reload config.");
			// firstload
			this.firstLoad();
		}
		if (String(aArgs[2]).indexOf("CHTML/config.html") >= 0)
		{
			if ((g_bIsSecure == false) && (g_bIsOn == true))
			{
				g_sConfigUrl = BrowserProxy.Host.Location;
			} else {
				g_sConfigUrl = "";
			}
		}
		if (String(aArgs[2]).indexOf("CHTML/configupdate.html") >= 0) {
			this.rlConfig();
			if (g_sConfigUrl != "") {
				if ((g_sConfigUrl.indexOf("www.alexa.com") > -1) &&
					(g_sConfigUrl.indexOf("&update=true") == -1)) {
					g_sConfigUrl += "&update=true";
				}
				BrowserProxy.Host.Location = g_sConfigUrl;
				g_sConfigUrl = "";
			} else {
				BrowserProxy.Host.Location = RESOURCE_URI + "CHTML/config.html";
			}
		}
		CollectGarbage();
	}
	function Condition_firstLoad() {
		var sAmznID = g_oCookie.readPersist(REG_AMZNID);
		if (sAmznID != "") {
			elmAmazon.assoc_id = sAmznID;
			elmSearchForm.assoc_id = sAmznID;
		} else {
			elmAmazon.assoc_id = "alexashopping-3-20";
			elmSearchForm.assoc_id = "alexa65-tb-20";
		}
		this.rlConfig();
	}
	
	function Condition_rlConfig() {
		// reload search size, reload labels
		et.exec(EVT_LABELCHANGE,this);
		if (g_oCookie.readPersist(REG_WIDESEARCH) != '') {		// 0 = narrow, 1 = normal, 2 = wide
			elmSearchForm.resize(g_oCookie.readPersist(REG_WIDESEARCH));
		}
		if ((g_oCookie.readPersist(REG_FILLSEARCH) == "true") && (g_sbFill==false)) {
			et.register(EVT_DATALOAD_PREFIX+"DadDSN",elmSearchForm);
		}
		if ((g_oCookie.readPersist(REG_FILLSEARCH) == "false") && (g_sbFill==true)) {
			et.unregister(EVT_DATALOAD_PREFIX+"DadDSN",elmSearchForm);
		}
		if (g_oCookie.readPersist(REG_ENABLEPOPUP) == "true") {
			BrowserProxy.Host.IEEventSink.KillPopups = true; 
			if (g_oCookie.readPersist(REG_ENABLEPOPUPBUTTON) != "false") {
				if (elmPManager.bVisible == false) {
					elmPManager.insert();
				}
			} else {
				elmPManager.deactivate(true);
			}
		} else {
			BrowserProxy.Host.IEEventSink.KillPopups = false;
			elmPManager.deactivate(true);
		}
		if (g_oCookie.read("twym65_disabled") == "true") {
			g_oCookie.write('twym65','', "long");
		}
		BP_onNavigateComplete(null, BrowserProxy.Host.Browser, BrowserProxy.Host.Location);
	}
}

function PopupWatcher() {
	var o = new AlxObj();
	o.onPopup = PopupWatcher_onPopup;
	o.getCount = PopupWatcher_getCount;
	o.sessionpopupcount = 0;
	o.create();
	et.register("onPopup",o);
	g_oLogger.out(o,"registered PopWatcher");
	return o;
	function PopupWatcher_getCount() {
		return this.sessionpopupcount;
	}
	function PopupWatcher_onPopup(aArgs) {
		this.sUrl = aArgs[1];
		this.method = aArgs[0];
		var sDate = new Date().valueOf();
		var sRegKey = "";
		switch (this.method) {
			case "autoallow":
			case "promptallow":
				sRegKey = "lastpopupallowed";
				break;
			case "autokilled":
			case "promptkilled":
				sRegKey = "lastpopupblocked";
				var nCount = g_oCookie.read("sessionpopupcount"); nCount++;
				this.sessionpopupcount++;
				var nCount = g_oCookie.read("totalpopupcount"); nCount++;
				g_oCookie.write("totalpopupcount",nCount,"long");
				
				break;
		}
		g_oLogger.out(this, "Writing reg key : " + sRegKey + ", value: " + this.sUrl + "##" + sDate + ", Count: "+nCount);
		g_oCookie.write(sRegKey,wyrmdsn.charencode(this.sUrl+"##"+sDate),"long");
		this.wid = dsndad.windowID;
		this.rq = dsndad.rq;
		this.ref = "http://log.alexa.com/popup.gif?method="+this.method+"&wid="+this.wid+"&rq="+this.rq+"&aid="+ g_oCookie.readPersist(REG_AID) +"&url="+escape(this.sUrl);
		g_oLogger.out(this,"reporting: "+this.sUrl+", method: "+this.method+", wid: "+this.wid+", rq: "+this.rq);
		this.oImage = new Image();
		this.oImage.src = this.ref;
		this.oImage = null;
		return true;
	}
}

if ( typeof(oScriptReport) == 'object' )
	oScriptReport.load('wch.class.js');
