﻿/*                                                                  
* Copyright © 1999-2009 TeaLeaf Technology, Inc.  
* All rights reserved.
*
* THIS SOFTWARE IS PROVIDED BY TEALEAF ``AS IS'' 
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE DISCLAIMED.  
* IN NO EVENT SHALL TEALEAF BE LIABLE FOR ANY DIRECT, INDIRECT, 
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
* @fileoverview 
* This is the configuration for the main UI Client Event Capture JavaScript.
* It contains versioning information and the the flag thant turns 
* the JavaScript into a true SDK.  
*
* @version 2009.11.17.1
*                                                                   
*/
if (typeof TeaLeaf == "undefined") {
    var TeaLeaf = {};
    TeaLeaf.Private = {};
    TeaLeaf.tlStartLoad = new Date();

    if (typeof TeaLeaf.Configuration == "undefined") {
        TeaLeaf.Configuration = {
            "tlinit": false,
            "tlversion": "2009.11.17.1",
            "tlSDK": false
        };
    }

    if (TeaLeaf.$C == null) {

        TeaLeaf.$C = function(attr) {
            return attr;
        };
    }
}
/*                                                                  
* Copyright © 1999-2009 TeaLeaf Technology, Inc.  
* All rights reserved.
*
* THIS SOFTWARE IS PROVIDED BY TEALEAF ``AS IS'' 
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE DISCLAIMED.  
* IN NO EVENT SHALL TEALEAF BE LIABLE FOR ANY DIRECT, INDIRECT, 
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
* @fileoverview 
* Configuration file for TeaLeafEvent.js   
*
* @version 2009.11.17.1
*                                                                   
*/

if (typeof TeaLeaf.Event == "undefined") {
    //	Constructor for the Event
    TeaLeaf.Event = function(type, subtype, source) {
        this.date = new Date();
        if (subtype) {
            this.EventType = type;
            this.EventSubType = subtype;
            if (source) {
                this.EventSource = source;
            }
            else {
                //default is empty string
                this.EventSource = "";
            }
        }
        else {
            this.EventType = "CUSTOM";
            this.EventSubType = type;
        }
    }

    if (typeof TeaLeaf.Event.Configuration == "undefined") {
        TeaLeaf.Event.Configuration = {
            "tlinit": false,
            "tlqueueevents": true,
            "tlqueueeventstimer": 30000,
            "tlqueueeventsmaxsz": 8192,
            "tlshowexceptions": false,
            "tlurl": TEALEAF_URL,
            "tlsecureurl": TEALEAF_SECURE_URL,
            "tleventcount": 0,
            "tlexceptioncount": 0,
            "tlpageid": "",
            "tlinitflag": false,
            "tlbeforeunloadflag": false,
            "tlusetopqueue": false,
            "tllastdwelltime": "",
            "tlidoflastvisitedcontrol": "",
            "tleventunloadflag": true,
            "tleventbeforeunloadflag": true,
            "tlcatcherrors": true,
            /* tlcatchpopups
            * Set this to 'true' if you want the SDK to report on window.open() status.
            * Used to determine if popup windows were blocked on the client.
            */
            "tlcatchpopups": false,
            "tlignoresendfailure": true,
            "tlasync": true,
            "tlvisitorder": "",
            "t1970": 0,
            "tlXP": "",
            "tlXPCount": 0,
            "tlXPTable": "",
            "tlmaxeventcount": 100,
            "tlmaxeventexception": 10,


            tlResolution: [
                { "width": 799, "height": 599, "type": 0, "displayText": "small" },
                { "width": 800, "height": 600, "type": 1, "displayText": "800x600" },
                { "width": 1024, "height": 760, "type": 2, "displayText": "1024x760" },
                { "width": 1280, "height": 1024, "type": 3, "displayText": "1280x1024" },
                { "width": 1000000, "height": 1000000, "type": 4, "displayText": "large" }
            ],
            //This is the list of HTTP headers that are static and are
            tlHTTPRequestHeadersSet: [
		        { "tlreqhttpheadername": "Content-Type", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetContentType()" },
			    { "tlreqhttpheadername": "X-TeaLeaf", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetTeaLeafXEvent()" },
			    { "tlreqhttpheadername": "X-TeaLeafType", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlEventType()" },
			    { "tlreqhttpheadername": "X-TeaLeafSubType", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlEventSubType()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Url", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetUrlPath()" },
                { "tlreqhttpheadername": "X-TeaLeaf-UIEventCapture-Version", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetJSVersion()" }
		    ],
            //This is the list of HTTP headers that have the eval value at the time of POST
            tlHTTPRequestHeadersEvalInit: [
			    { "tlreqhttpheadername": "X-TeaLeaf-Screen-Res", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlResolutionType(screen.width ,screen.height)" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Browser-Res", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlResolutionTypeBrowser()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Render", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetRenderTime()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Objects", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetElementCount(\"object\")" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Img-Fail", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlBadImageCount()" }
		    ],
            tlHTTPRequestHeadersEvalBeforeUnload: [
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Cui-Events", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetEventCount()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Cui-Bytes", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetSendStringBytes(sendStr)" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Cui-Exceptions", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetExceptionCount()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Dwell", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetDwellTime()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Page-Last-Field", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetLastVisitedElementID()" },
			    { "tlreqhttpheadername": "X-TeaLeaf-Visit-Order", "tlsethttpheader": true, "tlreqhttpheadervalue": "TeaLeaf.Event.tlGetVisitOrder()" }
		    ]
        };
    }
}

/*                                                                  
* Copyright © 1999-2009 TeaLeaf Technology, Inc.  
* All rights reserved.
*
* THIS SOFTWARE IS PROVIDED BY TEALEAF ``AS IS'' 
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE DISCLAIMED.  
* IN NO EVENT SHALL TEALEAF BE LIABLE FOR ANY DIRECT, INDIRECT, 
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
* @fileoverview 
* This is the configuration for TeaLeafEnv.js  
*
* @version 2009.11.17.1
*                                                                   
*/
if (typeof TeaLeaf.Env == "undefined") {
    TeaLeaf.Env = {};

    if (typeof TeaLeaf.Env.Configuration == "undefined") {
        TeaLeaf.Env.Configuration = {
            "tlinit": false,
            "tlinitpost": true,

            tlPlugins: [
		        { "tlIEplugin": "ShockwaveFlash.ShockwaveFlash.1", "tlpluginname": "Shockwave Flash", "tlversion": "1.0", "tlenable": false },
		        { "tlIEplugin": "MediaPlayer.MediaPlayer.1", "tlpluginname": "Windows Media Player", "tlversion": "", "tlenable": false },
		        { "tlIEplugin": "PDF.PdfCtrl.1", "tlpluginname": "Adobe Acrobat", "tlversion": "", "tlenable": false },
		        { "tlIEplugin": "QuickTimeCheckObject.QuickTimeCheck.1", "tlpluginname": "QuickTime", "tlversion": "", "tlenable": false }
			]
        };
    }
}
/*                                                                  
* Copyright © 1999-2009 TeaLeaf Technology, Inc.  
* All rights reserved.
*
* THIS SOFTWARE IS PROVIDED BY TEALEAF ``AS IS'' 
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, 
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE DISCLAIMED.  
* IN NO EVENT SHALL TEALEAF BE LIABLE FOR ANY DIRECT, INDIRECT, 
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
* @fileoverview 
* This is the configuration file for capturing Client Events that 
* happen on the rendered DOM. It proviedes the capabilty to block fields
* and turn off an on events on the Window and Document object. 
*
* @version 2009.11.17.1
*                                                                   
*/
if (typeof TeaLeaf.Client == "undefined") {
    TeaLeaf.Client = {};

    if (typeof TeaLeaf.Client.Configuration == "undefined") {
        TeaLeaf.Client.Configuration = {
            "tlinit": false,
            "tlpassword": 1, 	// 1 no capture, 2 don't send value
            "tlsendfocus": false,
            "tlsendblur": true,
            "tlunloadflag": true,
            "tlactiontype": "No Submit",
            "tlbeforeunloadflag": true,
            "tlcontrolsattached": false,
            "tlassignTLID": false,
            "tlscanupdate": 0,
            "tlIEhref": false,


            //	tlScheduledScan controls whether or not to periodically scan the DOM
            //	for changes (and tag the appropriate nodes) at the interval defined by
            //	tlscanupdate
            tlScheduledScan: false,

            //  tlExcludeTags controls whether to explicitly exclude or include the
            //  tags listed in tlNodeTags when attaching to descendent elements using
            //  TeaLeaf.Client.tlProcessNode(). See TeaLeaf.Client.tlTagNameAllowed()
            tlExcludeTags: true,

            //	If events are being cancelled, the document object will not catch events
            //	since they are not being bubbled up. In order to combat this, we can attach
            //	to every relevant item (see tlExcludeTags and tlNodeTags), except this may
            //	result in duplicate events being captured.
            tlUniversalAttach: false,

            //  Option to store the xml of queued events on a page unload in a cookie, so
            //  that it may be sent up with the next page's events. Since this may interfere
            //  with the existing cookies on the site, this is disabled by default.
            tlStoreQueueInCookie: false,

            //	This is where input fields can be globally blocked.  Four examples are shown
            //	below.  Add or remove fields as appropriate.  The parameters are:
            //		tlfieldname     : the id of the field
            //		caseinsensitive : check for the field name in using case
            //			insensitive check
            //		eventnovalue : if true, send event but without value.  If 
            //			false do not send event
            tlFieldBlock: [
			    { "tlfieldname": "TLCREDITCARD", "caseinsensitive": true, "eventvaluereplace": "", "eventnovalue": true },
			    { "tlfieldname": "tlpassword", "caseinsensitive": true, "eventvaluereplace": "", "eventnovalue": true },
			    { "tlfieldname": "tlpwd", "caseinsensitive": true, "eventvaluereplace": "", "eventnovalue": true },
			    { "tlfieldname": "tlqty", "caseinsensitive": true, "eventvaluereplace": "333", "eventnovalue": false }
		    ],

            tlFieldBlockMap: null,

            //	This is the list of events we catch off of the window object
            tlWindowHandlers: [
			    { "domevent": "resize", "load": false, "tlhandler": "TeaLeaf.Client.tlQueueResize" },
			    { "domevent": "focus", "load": true, "tlhandler": "TeaLeaf.Client.tlSetFocusTime" },
			    { "domevent": "help", "load": true, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "scroll", "load": false, "tlhandler": "TeaLeaf.Client.tlQueueScroll" },
			    { "domevent": "beforeprint", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "afterprint", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" }
		    ],

            //	This is the list of events we catch off of the document object
            tlDocumentHandlers: [
			    { "domevent": "click", "load": true, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "dblclick", "load": true, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "keyup", "load": true, "tlhandler": "TeaLeaf.Client.tlQueueKey" },
			    { "domevent": "mousedown", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "mouseup", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "mouseover", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domevent": "mouseout", "load": false, "tlhandler": "TeaLeaf.Client.tlAddEvent" },
            //	This event is only caught once and turned off.  This is used to 
            //	detect robots, since a robot will never have mouse movement.
			    {"domevent": "mousemove", "load": false, "tlhandler": "TeaLeaf.Client.tlUserMovement" }
		    ],

            tlSingleAttach: [
			    { "domelementID": "", "domevent": "mousedown", "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domelementID": "", "domevent": "mouseup", "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domelementID": "", "domevent": "mouseover", "tlhandler": "TeaLeaf.Client.tlAddEvent" },
			    { "domelementID": "", "domevent": "mouseout", "tlhandler": "TeaLeaf.Client.tlAddEvent" }
		    ],

            /*  tlNodeTags by default includes a list of tag names that are "unimportant"
            *  or not rendered. The associated true/false value is used in conjunction with
            *  tlExcludeTags - e.g. if tlExcludeTags is true and a node tag is true, it will
            *  be excluded; if tlExcludeTags is true and a node tag is false, the tag will be
            *  included. Similarly if tlExcludeTags is false (meaning to explicitly include the
            *  listed node tags, those with "true" with be excluded.
            */
            tlNodeTags: {
                "APPLET": true,
                "ATTRIBUTE": true,
                "B": true,
                "BASE": true,
                "BODY": true,
                "BR": true,
                "CENTER": true,
                "COL": true,
                "COLGROUP": true,
                "COMMENT": true,
                "DIV": true,
                "DEFAULT": true,
                "DEL": true,
                "EVENT": true,
                "FONT": true,
                "FORM": true,
                "HEAD": true,
                "HISTORY": true,
                "HR": true,
                "HTML": true,
                "I": true,
                "INS": true,
                "LINK": true,
                "MAP": true,
                "META": true,
                "NAMESPACE": true,
                "NAVIGGATOR": true,
                "NOBR": true,
                "OPTION": true,
                "P": true,
                "PARAM": true,
                "S": true,
                "SCRIPT": true,
                "SMALL": true,
                "STRIKE": true,
                "STRONG": true,
                "STYLE": true,
                "SUB": true,
                "SUP": true,
                "TH": true,
                "TITLE": true,
                "THEAD": true,
                "TFOOT": true,
                "TR": true,
                "U": true
            },

            /*  tlSpecialChildNodeTags represents tags with a special
            *  situation where the event that fires is attached to a
            *  non-visual item that is inside the actual UI element.
            *  Example would be a menu with a <nobr> tag inside to
            *  keep the visual text of the menu on one line. The <nobr>
            *  fires the event when we really want the parent menu.
            */

            tlSpecialChildNodeTags: {
                "NOBR": true,
                "P": true
            }
        };

        TeaLeaf.Client.Configuration.tlIdCounter = [];
    }
}

if (TeaLeaf && TeaLeaf.Configuration && TeaLeaf.Configuration.tlinit == false) { TeaLeaf.Configuration.tlinit = true; if (!Array.prototype.push) { Array.prototype.stackEnd = 0; Array.prototype.push = function(a) { this[this.stackEnd] = a; this.stackEnd++ } } if (!Array.prototype.pop) { Array.prototype.pop = function(a) { this.stackEnd--; return this[this.stackEnd] } } TeaLeaf.settlSDK = function() { TeaLeaf.Configuration.tlSDK = true }; TeaLeaf.resettlSDK = function() { TeaLeaf.Configuration.tlSDK = false }; TeaLeaf.tlIsIE = function() { if (navigator.appName.indexOf("Microsoft") >= 0 && parseInt(navigator.appVersion) >= 4) { return true } return false }; TeaLeaf.makeRandomString = function(d) { var c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^*()_+|=-][}{;,./?"; var f = ""; for (var b = 0; b < d; b++) { var a = Math.floor(Math.random() * c.length); f += c.charAt(a) } return f }; TeaLeaf.tLoadObjs = []; TeaLeaf.addOnLoad = function(b, a) { if (arguments.length == 1) { TeaLeaf.tLoadObjs.push(b) } else { if (arguments.length > 1) { TeaLeaf.tLoadObjs.push(b[a]) } } }; TeaLeaf.PageSetup = function() { if (TeaLeaf.Configuration.tlSDK == false) { for (var a = 0; a < TeaLeaf.tLoadObjs.length; a++) { TeaLeaf.tLoadObjs[a]() } } TeaLeaf.EndLoad = new Date() }; if (document.addEventListener) { document.addEventListener("DOMContentLoaded", TeaLeaf.PageSetup, null) } else { if (typeof (document.readyState) != "undefined") { if (typeof document.onreadystatechange == "function") { TeaLeaf.ReadyStateChange = document.onreadystatechange } else { TeaLeaf.ReadyStateChange = null } document.onreadystatechange = function() { if (document.readyState == "complete") { TeaLeaf.PageSetup() } if (TeaLeaf.ReadyStateChange) { TeaLeaf.ReadyStateChange() } } } else { if (typeof window.onload == "function") { TeaLeaf.OnLoad = window.onload } else { TeaLeaf.OnLoad = null } window.onload = function() { TeaLeaf.PageSetup(); if (TeaLeaf.OnLoad) { TeaLeaf.OnLoad() } } } } } if (TeaLeaf.Event && TeaLeaf.Event.Configuration) { try { if (typeof TeaLeaf_PageID == "undefined") { TeaLeaf_PageID = null } } catch (e) { TeaLeaf_PageID = null } TeaLeaf.Event.tlQueuedXML = ""; TeaLeaf.Event.tlQueuedXPXML = ""; TeaLeaf.Event.tlGetContentType = function() { var a = "text/xml"; return a }; TeaLeaf.Event.tlGetTeaLeafXEvent = function() { var a = TeaLeaf.$C("ClientEvent"); return a }; TeaLeaf.Event.tlEventType = function() { return TeaLeaf.Event.SetType }; TeaLeaf.Event.tlEventSubType = function() { return TeaLeaf.Event.SetSubType }; TeaLeaf.Event.tlGetUrlPath = function() { var a = window.location.pathname; return a }; TeaLeaf.Event.tlGetJSVersion = function() { return TeaLeaf.Configuration.tlversion }; TeaLeaf.Event.tlResolutionType = function(d, a) { var c = TeaLeaf.Event.Configuration.tlResolution; for (var b = 0; b < c.length; b++) { if (d <= c[b].width || a <= c[b].height) { return c[b].type } } return c[c.length - 1].type }; TeaLeaf.Event.tlResolutionTypeBrowser = function() { var b = 0; var a = 0; if (window.innerWidth) { b = window.innerWidth; a = window.innerHeight } else { if (document.documentElement && document.documentElement.clientWidth) { b = document.documentElement.clientWidth; a = document.documentElement.clientHeight } else { if (document.body && document.body.clientWidth) { b = document.body.clientWidth; a = document.body.clientHeight } else { var c = document.getElementsByTagName("body"); if (c.length > 0) { b = c[0].clientWidth; a = c[0].clientHeight } } } } var d = TeaLeaf.Event.tlResolutionType(b, a); return d }; TeaLeaf.Event.tlGetRenderTime = function() { return TeaLeaf.Event.PageLoadMilliSecs }; TeaLeaf.Event.tlGetElementCount = function(a) { return document.getElementsByName(a).length }; TeaLeaf.Event.tlBadImageCount = function() { var b = 0; var c; for (c = 0; c < document.images.length; c++) { var a = document.images[c]; if (!a.complete) { b++; continue } if (typeof a.naturalWidth != "undefined" && a.naturalWidth == 0) { b++ } } return b }; TeaLeaf.Event.tlGetEventCount = function() { return TeaLeaf.Event.Configuration.tleventcount }; TeaLeaf.Event.tlGetSendStringBytes = function(a) { return a.length }; TeaLeaf.Event.tlGetExceptionCount = function() { return (TeaLeaf.Event.Configuration.tlcatcherrors ? TeaLeaf.Event.Configuration.tlexceptioncount : null) }; TeaLeaf.Event.tlGetDwellTime = function() { return TeaLeaf.Event.tlDateDiff(TeaLeaf.tlStartLoad, TeaLeaf.Event.Configuration.tllastdwelltime) }; TeaLeaf.Event.tlGetLastVisitedElementID = function() { return TeaLeaf.Event.Configuration.tlidoflastvisitedcontrol }; TeaLeaf.Event.tlDateDiff = function(b, a) { return Math.abs(b - a) }; TeaLeaf.Event.tlGetVisitOrder = function() { return TeaLeaf.Event.Configuration.tlvisitorder }; TeaLeaf.Event.tlFormatXML = function(a) { if (a) { if (a.replace) { return a.replace(/&/g, "&amp;").replace(/\"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;") } return a } return "" }; TeaLeaf.Event.tlGetCookie = function(c) { var b = document.cookie; var f = c + "="; var d = b.indexOf("; " + f); if (d == -1) { d = b.indexOf(f); if (d != 0) { return "" } } else { d += 2 } var a = document.cookie.indexOf(";", d); if (a == -1) { a = b.length } return unescape(b.substring(d + f.length, a)) }; TeaLeaf.Event.tlSetHTTPHeaders = function(tlreq, tlheaderconfig) { for (var i = 0; i < tlheaderconfig.length; i++) { if (tlheaderconfig[i].tlsethttpheader == true) { var headerValue = eval(tlheaderconfig[i].tlreqhttpheadervalue); if (headerValue != null) { tlreq.setRequestHeader(tlheaderconfig[i].tlreqhttpheadername, headerValue) } } } }; TeaLeaf.Event.tlGetPageId = function() { if (TeaLeaf.Event.Configuration.tlpageid) { return TeaLeaf.Event.Configuration.tlpageid } if (TeaLeaf_PageID) { TeaLeaf.Event.Configuration.tlpageid = TeaLeaf_PageID; return TeaLeaf.Event.Configuration.tlpageid } TeaLeaf.Event.Configuration.tlpageid = "ID" + TeaLeaf.tlStartLoad.getHours() + "H" + TeaLeaf.tlStartLoad.getMinutes() + "M" + TeaLeaf.tlStartLoad.getSeconds() + "S" + TeaLeaf.tlStartLoad.getMilliseconds() + "R" + Math.random(); return TeaLeaf.Event.Configuration.tlpageid }; TeaLeaf.Event.tlSendFailure = function(c, d, h) { var b = new Date(); var i = Date.UTC(b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate(), b.getUTCHours(), b.getUTCMinutes(), b.getUTCSeconds(), b.getUTCMilliseconds()); var g; if (TeaLeaf.tlStartLoad) { g = TeaLeaf.Event.tlDateDiff(b, TeaLeaf.tlStartLoad) } TeaLeaf.Event.Configuration.tleventcount++; TeaLeaf.Event.Configuration.tlexceptioncount++; tlsendStr = "<" + TeaLeaf.$C("ClientEvent") + " " + TeaLeaf.$C("Count") + '="' + TeaLeaf.Event.Configuration.tleventcount + '" ' + TeaLeaf.$C("Type") + '="' + TeaLeaf.$C("INFO") + '" ' + TeaLeaf.$C("SubType") + '="' + TeaLeaf.$C("EXCEPTION") + '" ' + TeaLeaf.$C("PageId") + '="' + TeaLeaf.Event.tlGetPageId() + '" ' + TeaLeaf.$C("FailedUrl") + '="' + TeaLeaf.Event.tlFormatXML(d) + '" ' + TeaLeaf.$C("Message") + '="' + TeaLeaf.Event.tlFormatXML(h) + '" ' + TeaLeaf.$C("TimeDuration") + '="' + g + '" ' + TeaLeaf.$C("DateSince1970") + '="' + i + '" />\r\n'; try { TeaLeaf.Event.Configuration.tlasync = true; var f = new TeaLeaf.Event(TeaLeaf.$C("INFO"), TeaLeaf.$C("EXCEPTION")); f.tlSendXML(tlsendStr, true) } catch (a) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { alert(a.name + ": " + a.message + "\r\n\r\nPos 4") } } }; TeaLeaf.Event.tlGetTransport = function() { var a; if (window.XMLHttpRequest) { try { a = new XMLHttpRequest() } catch (b) { a = null } } else { if (window.ActiveXObject) { try { a = new ActiveXObject("Msxml2.XMLHTTP") } catch (b) { try { a = new ActiveXObject("Microsoft.XMLHTTP") } catch (b) { a = null } } } } return a }; TeaLeaf.Event.TransportArray = []; TeaLeaf.Event.tlXMLHTTPObj = function() { var a = 0; for (; a < TeaLeaf.Event.TransportArray.length; a++) { if (TeaLeaf.Event.TransportArray[a] && TeaLeaf.Event.TransportArray[a].readyState > 0) { if (TeaLeaf.Event.TransportArray[a].readyState == 4) { TeaLeaf.Event.TransportArray[a].abort(); TeaLeaf.Event.TransportArray[a].onreadystatechange = new function() { }; return TeaLeaf.Event.TransportArray[a] } } else { TeaLeaf.Event.TransportArray[a] = TeaLeaf.Event.tlGetTransport(); return TeaLeaf.Event.TransportArray[a] } } TeaLeaf.Event.TransportArray[a] = TeaLeaf.Event.tlGetTransport(); return TeaLeaf.Event.TransportArray[a] }; TeaLeaf.Event.tlCleanXMLHTTPObj = function(b) { var a = 0; for (; a < TeaLeaf.Event.TransportArray.length; a++) { if (b == TeaLeaf.Event.TransportArray[a]) { TeaLeaf.Event.TransportArray[a] = null } } }; TeaLeaf.Event.tlAddHandler = function(b, f, d, c) { try { if (!b) { return } if (b.addEventListener) { b.addEventListener(f, d, c) } else { if (b.attachEvent) { b.attachEvent("on" + f, d) } else { } } } catch (a) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { alert(a.name + ": " + a.message + "\r\n\r\nPos 4") } } }; TeaLeaf.Event.tlRemoveHandler = function(b, f, d, c) { try { if (!b) { return } if (b.removeEventListener) { b.removeEventListener(f, d, c) } else { if (b.detachEvent) { b.detachEvent("on" + f, d) } } } catch (a) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { alert(a.name + ": " + a.message + "\r\n\r\nPos 5") } } }; TeaLeaf.Event.tlFlushQueue = function(f) { var h = null; var b = TeaLeaf.Event.Configuration.tlqueueeventstimer; var d = b * 3; if (TeaLeaf.Event.Configuration.tlusetopqueue) { var c = new Date(); var g = (c - top.TeaLeaf.Event.TimeSent); if (top.TeaLeaf.Event.tlQueuedXML) { if (f || g >= b) { h = top.TeaLeaf.Event.tlQueuedXML; top.TeaLeaf.Event.tlQueuedXML = ""; top.TeaLeaf.Event.TimeSent = c } } if (!h) { if (!f && g < (b / 2)) { if (b >= d) { b = d } else { b = (b * 3) / 2 } } return b } } else { if (!TeaLeaf.Event.tlQueuedXML) { return b } h = TeaLeaf.Event.tlQueuedXML; TeaLeaf.Event.tlQueuedXML = "" } var a = new TeaLeaf.Event(TeaLeaf.$C("GUI"), TeaLeaf.$C("QUEUED")); a.tlSendXML(h); return b }; TeaLeaf.Event.prototype.tlPushXML = function(a, c) { if (!this.XMLStack) { this.XMLStack = [] } if (c) { } else { var b = "  <" + a + " "; if (this.XMLData) { this.XMLData += b } else { this.XMLData = b } } }; TeaLeaf.Event.prototype.tlPopXML = function() { if (this.XMLData) { this.XMLData += "/>\r\n" } else { return false } }; TeaLeaf.Event.prototype.tlAddData = function(a) { var g = ""; if (this.XMLStack) { for (var d = 0; d < this.XMLStack.length; d++) { g += "  " } } var f = []; for (var d = 0; d < a.length; d += 2) { var c = a[d]; var b = TeaLeaf.Event.tlFormatXML(a[d + 1]); if (c && b) { f[f.length] = g + c + '="' + b + '" ' } } if (!this.XMLData) { this.XMLData = "" } this.XMLData += f.join(""); a = null }; TeaLeaf.Event.prototype.tlSendXML = function(i, g) { var f = TeaLeaf.Event.tlXMLHTTPObj(); if (!f) { return } try { var b = this.theUrl; f.onreadystatechange = function(j) { if (f.readyState == 2 && typeof TeaLeaf.Cookie != "undefined") { var m = new Date(); m.setTime(m.getTime() - 86400000); TeaLeaf.Cookie.tlSetCookieValue("tlQueuedXML", "", m, "/") } if (f.readyState == 4) { try { if (f.status != 200 && f.status != 304) { if (TeaLeaf.Event.Configuration.tlignoresendfailure == true) { TeaLeaf.Event.Configuration.tlignoresendfailure = false; TeaLeaf.Event.tlSendFailure(b, b, "Status " + f.status + ": " + f.statusText) } } } catch (l) { } } }; f.open("POST", b, TeaLeaf.Event.Configuration.tlasync); TeaLeaf.Event.tlSetHTTPHeaders(f, TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet); if (TeaLeaf.Event.Configuration.tlinitflag == true) { TeaLeaf.Event.tlSetHTTPHeaders(f, TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit) } if (TeaLeaf.Event.Configuration.tlbeforeunloadflag == true) { TeaLeaf.Event.tlSetHTTPHeaders(f, TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload) } var c = new Date(); var h = Date.UTC(c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate(), c.getUTCHours(), c.getUTCMinutes(), c.getUTCSeconds(), c.getUTCMilliseconds()); var d = "<" + TeaLeaf.$C("ClientEventSet") + " " + TeaLeaf.$C("PostTimeStamp") + '="' + h + '" >'; i = d + i + "</" + TeaLeaf.$C("ClientEventSet") + ">"; f.send(i) } catch (a) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { if (a.name) { alert(a.name + ": " + a.message + "\r\n\r\nURL: " + this.theUrl + "\r\n\r\nPos 3 ") } else { alert(a + "\r\n\r\nURL: " + this.theUrl + "\r\n\r\nPos 3 ") } } if (TeaLeaf.Event.Configuration.tlignoresendfailure == true) { TeaLeaf.Event.Configuration.tlignoresendfailure = false; TeaLeaf.Event.tlSendFailure(this.theUrl, this.theUrl, a) } TeaLeaf.Event.tlCleanXMLHTTPObj(f) } }; TeaLeaf.Event.prototype.tlSend = function(a) { TeaLeaf.Event.Configuration.tleventcount++; if (this.XMLStack) { while (this.XMLStack.length > 0) { this.tlPopXML() } } if (TeaLeaf.Event.Configuration.tleventcount > TeaLeaf.Event.Configuration.tlmaxeventcount) { TeaLeaf.Event.tlFlushQueue(); return } var b = Date.UTC(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate(), this.date.getUTCHours(), this.date.getUTCMinutes(), this.date.getUTCSeconds(), this.date.getUTCMilliseconds()); sendStr = "<" + TeaLeaf.$C("ClientEvent") + " " + TeaLeaf.$C("Count") + '="' + TeaLeaf.Event.Configuration.tleventcount + '" ' + TeaLeaf.$C("Type") + '="' + this.EventType + '" ' + TeaLeaf.$C("SubType") + '="' + this.EventSubType + '" '; if (this.EventSource) { sendStr += TeaLeaf.$C("Source") + '="' + this.EventSource + '" ' } sendStr += TeaLeaf.$C("PageId") + '="' + TeaLeaf.Event.tlGetPageId() + '" '; if (!a) { sendStr += this.XMLData } if (TeaLeaf.tlStartLoad) { sendStr += TeaLeaf.$C("TimeDuration") + '="' + TeaLeaf.Event.tlDateDiff(this.date, TeaLeaf.tlStartLoad) + '" ' } sendStr += TeaLeaf.$C("DateSince1970") + '="' + b + '" '; if (a) { sendStr += ">\r\n" + this.XMLData + "</" + TeaLeaf.$C("ClientEvent") + ">\r\n" } else { sendStr += "/>\r\n" } if (TeaLeaf.Event.Configuration.tlqueueevents) { if (TeaLeaf.Event.Configuration.tlusetopqueue) { if (top.TeaLeaf.Event.tlQueuedXML) { top.TeaLeaf.Event.tlQueuedXML += sendStr } else { top.TeaLeaf.Event.tlQueuedXML = sendStr } } else { if (TeaLeaf.Event.tlQueuedXML) { TeaLeaf.Event.tlQueuedXML += sendStr } else { TeaLeaf.Event.tlQueuedXML = sendStr } } if (TeaLeaf.Event.Configuration.tlqueueeventsmaxsz < TeaLeaf.Event.tlQueuedXML.length) { TeaLeaf.Event.tlFlushQueue() } return } try { this.tlSendXML(sendStr); this.XMLData = "" } catch (c) { } this.XMLData = "" }; TeaLeaf.Event.tlXMLEncode = function(a) { if (a == null) { return a } a = a.replace(/&/g, "&#38;"); a = a.replace(/"/g, "&#34;"); a = a.replace(/'/g, "&#39;"); a = a.replace(/:/g, "&#58;"); return a }; TeaLeaf.Event.tlXMLDecode = function(a) { if (a == null) { return a } a = a.replace(/&#58;/g, ":"); a = a.replace(/&#39;/g, "'"); a = a.replace(/&#34;/g, '"'); a = a.replace(/&#38;/g, "&"); return a }; TeaLeaf.Event.tlEnableAllHTTPHeaders = function(a) { if (a) { if (a == "info") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet, true, "all") } else { if (a == "init") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit, true, "all") } else { if (a == "beforeunload") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload, true, "all") } } } } else { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet, true, "all"); TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit, true, "all"); TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload, true, "all") } }; TeaLeaf.Event.tlEnableHTTPHeader = function(a, b) { if (a == "info") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet, true, b) } else { if (a == "init") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit, true, b) } else { if (a == "beforeunload") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload, true, b) } } } }; TeaLeaf.Event.tlDisableAllHTTPHeaders = function(a) { if (a) { if (a == "info") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet, false, "all") } else { if (a == "init") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit, false, "all") } else { if (a == "beforeunload") { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload, false, "all") } } } } else { TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersSet, false, "all"); TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalInit, false, "all"); TeaLeaf.Event.tlEventJSONCfgUtil(TeaLeaf.Event.Configuration.tlHTTPRequestHeadersEvalBeforeUnload, false, "all") } }; TeaLeaf.Event.tlEnableQueueEvents = function() { TeaLeaf.Event.Configuration.tlqueueevents = true }; TeaLeaf.Event.tlDisableQueueEvents = function() { TeaLeaf.Event.Configuration.tlqueueevents = false }; TeaLeaf.Event.tlEnableShowExceptions = function() { TeaLeaf.Event.Configuration.tlshowexceptions = true }; TeaLeaf.Event.tlDisableShowExceptions = function() { TeaLeaf.Event.Configuration.tlshowexceptions = false }; TeaLeaf.Event.tlSetQueueEventTime = function(a) { TeaLeaf.Event.Configuration.tlqueueeventstimer = a }; TeaLeaf.Event.tlGetQueueEventTime = function() { return TeaLeaf.Event.Configuration.tlqueueeventstimer }; TeaLeaf.Event.tlSetQueueEventMaxSize = function(a) { TeaLeaf.Event.Configuration.tlqueueeventsmaxsz = a }; TeaLeaf.Event.tlGetQueueEventMaxSize = function() { return TeaLeaf.Event.Configuration.tlqueueeventsmaxsz }; TeaLeaf.Event.tlSetPostURL = function(a) { TeaLeaf.Event.Configuration.tlurl = a }; TeaLeaf.Event.tlGetPostURL = function() { return TeaLeaf.Event.Configuration.tlurl }; TeaLeaf.Event.tlEventJSONCfgUtil = function(d, c, a) { for (var b = 0; b < d.length; b++) { if (a == "all") { d[b].load = c } else { if (a == d[b].domevent) { d[b].load = c } } } }; TeaLeaf.Event.tlErrorHandler = function(d, c, a) { TeaLeaf.Event.Configuration.tlexceptioncount++; if (TeaLeaf.Event.Configuration.tlexceptioncount > TeaLeaf.Event.Configuration.tlmaxeventexception) { return } if ((typeof d !== "string") && !c) { return false } var b = new Date(); if (!a) { a = "-" } var g = new TeaLeaf.Event(TeaLeaf.$C("INFO"), TeaLeaf.$C("EXCEPTION")); var f = [TeaLeaf.$C("Message"), d, TeaLeaf.$C("URL"), escape(c), TeaLeaf.$C("Line"), a]; g.tlAddData(f); TeaLeaf.Event.Configuration.tlasync = true; g.tlSend(); TeaLeaf.Event.tlFlushQueue(); return false }; TeaLeaf.Event.tlBeforeUnload = function() { if (TeaLeaf.Event.Configuration.tleventbeforeunloadflag == true) { TeaLeaf.Event.Configuration.tleventunloadflag = false; var tlevt = new TeaLeaf.Event(TeaLeaf.$C("PERFORMANCE"), TeaLeaf.$C("BeforeUnload")); TeaLeaf.Event.SetType = tlevt.EventType; if (TeaLeaf.Event.SetSubType == "") { TeaLeaf.Event.SetSubType = tlevt.EventSubType } else { TeaLeaf.Event.SetSubType += "; " + tlevt.EventSubType } TeaLeaf.Event.Configuration.tlbeforeunloadflag = true; TeaLeaf.Event.Configuration.tlignoresendfailure = true; TeaLeaf.Event.Configuration.tlasync = false; tlevt.tlSend(); TeaLeaf.Event.tlFlushQueue(true) } TeaLeaf.Event.tlRemoveHandler(window, "beforeunload", eval(TeaLeaf.Event.tlBeforeUnload), false); TeaLeaf.Event.tlRemoveHandler(window, "unload", eval(TeaLeaf.Event.tlUnload), false) }; TeaLeaf.Event.tlUnload = function() { if (TeaLeaf.Event.Configuration.tleventunloadflag) { TeaLeaf.Event.Configuration.tllastdwelltime = new Date(); TeaLeaf.Event.Configuration.tleventbeforeunloadflag = false; var tlevt = new TeaLeaf.Event(TeaLeaf.$C("PERFORMANCE"), TeaLeaf.$C("Unload")); TeaLeaf.Event.SetType = tlevt.EventType; if (TeaLeaf.Event.SetSubType == "") { TeaLeaf.Event.SetSubType = tlevt.EventSubType } else { TeaLeaf.Event.SetSubType += "; " + tlevt.EventSubType } TeaLeaf.Event.Configuration.tlignoresendfailure = true; TeaLeaf.Event.Configuration.tlasync = false; tlevt.tlSend(); TeaLeaf.Event.tlFlushQueue(true) } TeaLeaf.Event.tlRemoveHandler(window, "beforeunload", eval(TeaLeaf.Event.tlBeforeUnload), false); TeaLeaf.Event.tlRemoveHandler(window, "unload", eval(TeaLeaf.Event.tlUnload), false) }; TeaLeaf.Event.EventSetup = function() { if (TeaLeaf.Event.Configuration.tlcatcherrors) { if (typeof window.onerror !== "function") { window.onerror = TeaLeaf.Event.tlErrorHandler } } if (!TeaLeaf.Client) { TeaLeaf.Event.tlAddHandler(window, "beforeunload", eval(TeaLeaf.Event.tlBeforeUnload), false); TeaLeaf.Event.tlAddHandler(window, "unload", eval(TeaLeaf.Event.tlUnload), false) } if (TeaLeaf.Event.Configuration.tlqueueevents) { TeaLeaf.Event.tlTimerRoutine = function() { var timeAmount = TeaLeaf.Event.Configuration.tlqueueeventstimer; try { timeAmount = TeaLeaf.Event.tlFlushQueue() } catch (exc) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { alert(exc.name + ": " + exc.message + "\r\n\r\nPos 7") } } setTimeout("TeaLeaf.Event.tlTimerRoutine()", timeAmount) }; setTimeout("TeaLeaf.Event.tlTimerRoutine()", TeaLeaf.Event.Configuration.tlqueueeventstimer) } var tlnow = new Date(); var t1970 = Date.UTC(tlnow.getUTCFullYear(), tlnow.getUTCMonth(), tlnow.getUTCDate(), tlnow.getUTCHours(), tlnow.getUTCMinutes(), tlnow.getUTCSeconds(), tlnow.getUTCMilliseconds()); TeaLeaf.Event.Configuration.t1970 = t1970; TeaLeaf.Event.Loaded = true }; var tmpUrl; if (window.location.protocol == "http:") { tmpUrl = TeaLeaf.Event.Configuration.tlurl } else { tmpUrl = TeaLeaf.Event.Configuration.tlsecureurl } if (tmpUrl.substr(0, 1) == "/") { TeaLeaf.Event.prototype.theUrl = window.location.protocol + "//" + window.location.host + tmpUrl } else { TeaLeaf.Event.prototype.theUrl = window.location.href.substr(0, window.location.href.lastIndexOf("/") + 1) + tmpUrl } if (TeaLeaf.Event.Configuration.tlinit == false) { TeaLeaf.Event.Configuration.tlinit = true; TeaLeaf.Event.prototype.XMLData = ""; TeaLeaf.addOnLoad(TeaLeaf.Event.EventSetup) } } if (TeaLeaf.Env && TeaLeaf.Env.Configuration) { TeaLeaf.Env.tlSendPageSummary = function() { if (TeaLeaf.Configuration.tlSDK || TeaLeaf.Env.Configuration.tlinitpost != true) { return } TeaLeaf.Env.Configuration.tlinitpost = false; var a = new TeaLeaf.Event(TeaLeaf.$C("PERFORMANCE"), TeaLeaf.$C("INIT")); TeaLeaf.Event.PageLoadMilliSecs = TeaLeaf.Event.tlDateDiff(TeaLeaf.tlStartLoad, a.date); TeaLeaf.Event.SetType = a.EventType; if (TeaLeaf.Event.SetSubType == "") { TeaLeaf.Event.SetSubType = a.EventSubType } else { TeaLeaf.Event.SetSubType += "; " + a.EventSubType } TeaLeaf.Event.Configuration.tlinitflag = true; TeaLeaf.Env.tlInfo(a); TeaLeaf.Env.tlDOMDocumentInfo(a); TeaLeaf.Env.tlDOMWindowInfo(a); TeaLeaf.Env.tlDOMScreenInfo(a); TeaLeaf.Env.tlPluginInfo(a); a.tlSend(true) }; TeaLeaf.Env.tlInfo = function(b) { b.tlPushXML(TeaLeaf.$C("Info")); var a = [TeaLeaf.$C("PageLoadMilliSecs"), TeaLeaf.Event.tlGetRenderTime(), TeaLeaf.$C("Version"), TeaLeaf.Event.tlGetJSVersion(), TeaLeaf.$C("TimezoneOffset"), b.date.getTimezoneOffset()]; b.tlAddData(a); b.tlPopXML() }; TeaLeaf.Env.tlDOMDocumentInfo = function(c) { c.tlPushXML(TeaLeaf.$C("Document")); var b = [TeaLeaf.$C("Title"), document.title, TeaLeaf.$C("Referer"), document.referer, TeaLeaf.$C("ContentType"), document.contentType, TeaLeaf.$C("LastModified"), document.lastModified, TeaLeaf.$C("CharacterSet"), document.characterSet, TeaLeaf.$C("Height"), document.height, TeaLeaf.$C("Width"), document.width]; c.tlAddData(b); var a = [TeaLeaf.$C("Anchors"), document.anchors.length, TeaLeaf.$C("Applets"), document.applets.length, TeaLeaf.$C("Embeds"), document.embeds.length, TeaLeaf.$C("Forms"), document.forms.length, TeaLeaf.$C("Images"), document.images.length, TeaLeaf.$C("BadImages"), TeaLeaf.Event.tlBadImageCount(), TeaLeaf.$C("Links"), document.links.length, TeaLeaf.$C("Plugins"), document.plugins.length]; c.tlAddData(a); c.tlPopXML() }; TeaLeaf.Env.tlDOMWindowInfo = function(d) { d.tlPushXML(TeaLeaf.$C("Window")); var c = [TeaLeaf.$C("WindowHref"), escape(window.location.href), TeaLeaf.$C("WindowProtocol"), window.location.protocol, TeaLeaf.$C("WindowHost"), window.location.host, TeaLeaf.$C("WindowHostName"), window.location.hostname, TeaLeaf.$C("WindowPort"), window.location.port, TeaLeaf.$C("WindowPathName"), window.location.pathname]; d.tlAddData(c); if (window.innerHeight && window.innerWidth) { d.tlAddData([TeaLeaf.$C("ClientSize"), (window.innerHeight + "x" + window.innerWidth)]) } else { if (document.body) { if (document.body.clientWidth && document.body.clientHeight) { d.tlAddData([TeaLeaf.$C("ClientSize"), (document.body.clientHeight + "x" + document.body.clientWidth)]) } } } var b = [TeaLeaf.$C("FullScreen"), navigator.fullScreen, TeaLeaf.$C("Frames"), window.frames.length]; if (typeof window.sessionStorage === "object") { var a = window.sessionStorage.TLTWID; if (a == null) { a = TeaLeaf.makeRandomString(6); window.sessionStorage.TLTWID = a } d.tlAddData([TeaLeaf.$C("WindowId"), a]) } d.tlAddData(b); d.tlPopXML() }; TeaLeaf.Env.tlDOMNavigatorInfo = function(b) { b.tlPushXML(TeaLeaf.$C("Navigator")); var a = [TeaLeaf.$C("AppCodeName"), navigator.appCodeName, TeaLeaf.$C("AppName"), navigator.appName, TeaLeaf.$C("AppVersion"), navigator.appVersion, TeaLeaf.$C("BrowserLanguage"), navigator.browserLanguage, TeaLeaf.$C("CookieEnabled"), navigator.cookieEnabled, TeaLeaf.$C("CPUClass"), navigator.cpuClass, TeaLeaf.$C("Language"), navigator.language, TeaLeaf.$C("OSCPU"), navigator.oscpu, TeaLeaf.$C("Platform"), navigator.platform, TeaLeaf.$C("Product"), navigator.product, TeaLeaf.$C("SystemLanguage"), navigator.systemLanguage, TeaLeaf.$C("UserAgent"), navigator.userAgent, TeaLeaf.$C("UserLanguage"), navigator.userLanguage, TeaLeaf.$C("Vendor"), navigator.vendor, TeaLeaf.$C("VendorSub"), navigator.vendorSub]; b.tlAddData(a); b.tlPopXML() }; TeaLeaf.Env.tlDOMScreenInfo = function(b) { b.tlPushXML(TeaLeaf.$C("Screen")); var a = [TeaLeaf.$C("AvailHeight"), screen.availHeight, TeaLeaf.$C("AvailLeft"), screen.availLeft, TeaLeaf.$C("AvailTop"), screen.availTop, TeaLeaf.$C("AvailWidth"), screen.availWidth, TeaLeaf.$C("BufferDepth"), screen.bufferDepth, TeaLeaf.$C("ColorDepth"), screen.colorDepth, TeaLeaf.$C("DeviceXDPI"), screen.deviceXDPI, TeaLeaf.$C("DeviceYDPI"), screen.deviceYDPI, TeaLeaf.$C("FontSmoothingEnabled"), screen.fontSmoothingEnabled, TeaLeaf.$C("Height"), screen.height, TeaLeaf.$C("Left"), screen.left, TeaLeaf.$C("LogicalXDPI"), screen.logicalXDPI, TeaLeaf.$C("LogicalYDPI"), screen.logicalYDPI, TeaLeaf.$C("Top"), screen.top, TeaLeaf.$C("UpdateInterval"), screen.updateInterval, TeaLeaf.$C("Width"), screen.width]; b.tlAddData(a); b.tlPopXML() }; TeaLeaf.Env.tlPluginInfo = function(l) { if (window.ActiveXObject) { for (var d = 0; d < TeaLeaf.Env.Configuration.tlPlugins.length; d++) { if (!TeaLeaf.Env.Configuration.tlPlugins[d].tlenable) { continue } var b = TeaLeaf.Env.Configuration.tlPlugins[d].tlIEplugin; try { var a = new ActiveXObject(b); if (a) { l.tlPushXML(TeaLeaf.$C("Plugin")); var h = [TeaLeaf.$C("Pluginname"), TeaLeaf.Env.Configuration.tlPlugins[d].tlpluginname, TeaLeaf.$C("Version"), TeaLeaf.Env.Configuration.tlPlugins[d].tlversion]; l.tlAddData(h); l.tlPopXML() } } catch (g) { } } } else { for (var d = 0; d < navigator.plugins.length; d++) { for (var c = 0; c < TeaLeaf.Env.Configuration.tlPlugins.length; c++) { if (!TeaLeaf.Env.Configuration.tlPlugins[c].tlenable) { continue } var f = navigator.plugins[d].name.substr(0, TeaLeaf.Env.Configuration.tlPlugins[c].tlpluginname.length); if (f == TeaLeaf.Env.Configuration.tlPlugins[c].tlpluginname) { TeaLeaf.Env.Configuration.tlPlugins[c].tlenable = false; l.tlPushXML(TeaLeaf.$C("Plugin")); var h = [TeaLeaf.$C("Pluginname"), TeaLeaf.Env.Configuration.tlPlugins[c].tlpluginname, TeaLeaf.$C("Version"), TeaLeaf.Env.Configuration.tlPlugins[c].tlversion]; l.tlAddData(h); l.tlPopXML() } } } } }; TeaLeaf.Env.CallInit = function() { TeaLeaf.addOnLoad(TeaLeaf.Env.tlSendPageSummary) }; if (TeaLeaf.Env.Configuration.tlinit == false) { TeaLeaf.Env.Configuration.tlinit = true; TeaLeaf.Env.CallInit() } } if (TeaLeaf.Client && TeaLeaf.Client.Configuration) { TeaLeaf.Client.tlTimeoutID = -1; TeaLeaf.Client.tlEnableAllEventHandlers = function(a) { if (a) { if (a == window) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, true, "all") } else { if (a == document) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, true, "all") } } } else { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, true, "all"); TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, true, "all") } }; TeaLeaf.Client.tlEnableEventHandler = function(b, a) { if (b == window) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, true, a) } else { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, true, a) } }; TeaLeaf.Client.tlDisableAllEventHandlers = function(a) { if (a) { if (a == window) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, false, "all") } else { if (a == document) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, false, "all") } } } else { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, false, "all"); TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, false, "all") } }; TeaLeaf.Client.tlDisableEventHandlers = function(b, a) { if (b == window) { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlWindowHandlers, false, a) } else { TeaLeaf.Client.tlClientJSONCfgUtil(TeaLeaf.Client.Configuration.tlDocumentHandlers, false, a) } }; TeaLeaf.Client.tlClientJSONCfgUtil = function(d, c, a) { for (var b = 0; b < d.length; b++) { if (a == "all") { d[b].load = c } else { if (a == d[b].domevent) { d[b].load = c } } } }; TeaLeaf.Client.tlHasUserMovement = false; TeaLeaf.Client.tlUserMovement = function() { TeaLeaf.Client.tlHasUserMovement = true; TeaLeaf.Event.tlRemoveHandler(document, "mousemove", TeaLeaf.Client.tlUserMovement, false) }; TeaLeaf.Client.tlAddIdToControl = function(d) { if ((d.id && d.id != "") || (d.name && d.name != "")) { return } var f = d.tagName; var g = TeaLeaf.Client.Configuration.tlIdCounter[f]; if (g == undefined) { TeaLeaf.Client.Configuration.tlIdCounter[f] = 0 } var a = "_TL_" + f + "_" + TeaLeaf.Client.Configuration.tlIdCounter[f]; var c = document.getElementById(a); var b = a; if (c) { while (document.getElementById("_TL_" + f + "_" + TeaLeaf.Client.Configuration.tlIdCounter[f]++)) { } } d.id = b; TeaLeaf.Client.Configuration.tlIdCounter[f]++ }; TeaLeaf.Client.tlFindinJSON = function(a, c) { var d = TeaLeaf.Client.tlGetName(a); if (d) { for (var b = 0; b < c.length; b++) { if (d == c[b].tlfieldname) { return c[b] } } } }; TeaLeaf.Client.tlIsReplace = function(b) { if (!b) { return false } if (typeof b == "object") { if (b.TeaLeafReplace) { return true } } else { var a = document.getElementById(b); if (a && a.TeaLeafReplace == true) { return true } if (!a) { a = document.getElementsByName(b); if (a) { for (var c = 0; c < a.length; c++) { if (a[c].TeaLeafReplace == true) { return true } } } } } if (b.type == "password") { return TeaLeaf.Client.Configuration.tlpassword == 2 } return false }; TeaLeaf.Client.tlReplaceValue = function(b) { var a = TeaLeaf.Client.tlGetName(b); TeaLeaf.Client.tlMakeFieldBlockMap(); var c = TeaLeaf.Client.Configuration.tlFieldBlockMap[a.toLowerCase()]; if (c == null) { return "" } if (c.eventvaluereplace.length > 0) { return c.eventvaluereplace } else { return "" } }; TeaLeaf.Client.tlIsExcluded = function(b) { if (!b) { return false } if (typeof b == "object") { if (b.TeaLeafExclude) { return true } } else { var a = document.getElementById(b); if (a) { if (a.TeaLeafExclude) { return true } } else { a = document.getElementsByName(b); if (a) { for (var c = 0; c < a.length; c++) { if (a[c].TeaLeafExclude) { return true } } } } return false } if (b.type == "password") { return TeaLeaf.Client.Configuration.tlpassword == 2 } return false }; TeaLeaf.Client.tlGetName = function(c) { if (c == null) { return null } var b = c.id; if (b && b != "") { return b } var a = c.name; if (a && a != "") { return a } return null }; TeaLeaf.Client.tlGetEventSource = function(b) { var a = null; if (b) { if (b.srcElement) { a = b.srcElement } else { a = b.target; if (a == null) { a = b.explicitOriginalTarget; if (a == null) { a = b.originalTarget } } } if (a && (a.name == null || a.name == "")) { if (a.parentNode && a.parentNode.tagName) { if (a.parentNode.tagName == "A" || a.parentNode.tagName == "LINK") { a = a.parentNode } } } } return a }; TeaLeaf.Client.tlGetAnchor = function(c, b) { if (c == null) { return null } if (c.name && c.name != "") { return null } var a; for (a = 0; a < document.anchors.length; a++) { if (document.anchors[a] == c) { if (b) { return "<AnchorElement>" + a + "</AnchorElement>\r\n" } else { return "Anchor-" + a } } } for (a = 0; a < document.links.length; a++) { if (document.links[a] == c) { if (b) { return "<LinkElement>" + a + "</LinkElement>\r\n" } else { return "Link-" + a } } } return null }; TeaLeaf.Client.checkIsInput = function(a) { if (typeof (a) == "string") { a = document.getElementById(a) } switch (a.tagName) { case "INPUT": case "SELECT": case "TEXTAREA": return true } return false }; TeaLeaf.Event.tlFormatXMLName = function(d) { if (!d || d.length <= 0) { return null } var b = ""; if (!TeaLeaf.Event.tlNameStartChar(d.charCodeAt(0))) { b = "_" } var a = d.length; var c; for (c = 0; c < a; c++) { if (TeaLeaf.Event.tlNameChar(d.charCodeAt(c))) { b = b + d.charAt(c) } else { b = b + "_" } } return b }; TeaLeaf.Event.tlNameStartChar = function(a) { return (a >= 65 && a <= 90) || a == 95 || (a >= 97 && a <= 122) || (a >= 192 && a <= 214) || (a >= 216 && a <= 246) || (a >= 248 && a <= 767) || (a >= 880 && a <= 893) || (a >= 895 && a <= 8191) || (a >= 8204 && a <= 8205) || (a >= 8304 && a <= 8591) || (a >= 11264 && a <= 12271) || (a >= 12289 && a <= 55295) || (a >= 63744 && a <= 64975) || (a >= 65008 && a <= 65533) }; TeaLeaf.Event.tlNameChar = function(a) { return TeaLeaf.Event.tlNameStartChar(a) || a == 45 || a == 46 || (a >= 48 && a <= 57) || a == 183 || (a >= 768 && a <= 879) || (a >= 8255 && a <= 8256) }; TeaLeaf.Client.tlQueuedKeys = ""; TeaLeaf.Client.tlQueueKey = function(d) { TeaLeaf.Client.tlSendResize(); TeaLeaf.Client.tlSendScroll(); if (!d) { d = window.event } if (d.keyCode < 32) { return } var c = TeaLeaf.Client.tlGetEventSource(d); if (!c) { return } if (!c.TeaLeafFocusTime) { c.TeaLeafFocusTime = new Date() } if (TeaLeaf.Client.tlQueuedKeySource) { if (TeaLeaf.Client.tlQueuedKeySource != c) { if (TeaLeaf.Client.tlQueuedKeys && TeaLeaf.Client.tlQueuedKeys.length > 0) { TeaLeaf.Client.tlSendKeys() } TeaLeaf.Client.tlQueuedKeySource = c } } else { TeaLeaf.Client.tlQueuedKeySource = c } var b = TeaLeaf.Client.tlGetName(c); var a = null; if (!b) { b = TeaLeaf.Client.tlGetXPathFromNode(c); if (!b) { a = TeaLeaf.Client.tlGetAnchor(c, false); if (!a) { TeaLeaf.Client.tlQueuedKeySource = null; return } } else { TeaLeaf.Client.tlQueuedKeySource = c } } else { if (TeaLeaf.Client.tlIsReplace(c)) { TeaLeaf.Client.tlQueuedKeysCount++; return } if (TeaLeaf.Client.tlIsExcluded(c)) { TeaLeaf.Client.tlQueuedKeys = null; TeaLeaf.Client.tlQueuedKeysCount++; return } } if (TeaLeaf.Client.tlQueuedKeys) { if (TeaLeaf.Client.tlQueuedKeys.length > 0) { TeaLeaf.Client.tlQueuedKeys = TeaLeaf.Client.tlQueuedKeys + ";" } } if (d.ctrlKey) { if (TeaLeaf.Client.tlQueuedKeys) { TeaLeaf.Client.tlQueuedKeys = TeaLeaf.Client.tlQueuedKeys + "ctrl-" } else { TeaLeaf.Client.tlQueuedKeys = "ctrl-" } } if (d.altKey) { if (TeaLeaf.Client.tlQueuedKeys) { TeaLeaf.Client.tlQueuedKeys = TeaLeaf.Client.tlQueuedKeys + "alt-" } else { TeaLeaf.Client.tlQueuedKeys = "alt-" } } if (d.shiftKey) { if (TeaLeaf.Client.tlQueuedKeys) { TeaLeaf.Client.tlQueuedKeys = TeaLeaf.Client.tlQueuedKeys + "shift-" } else { TeaLeaf.Client.tlQueuedKeys = "shift-" } } TeaLeaf.Client.tlQueuedKeys = TeaLeaf.Client.tlQueuedKeys + d.keyCode }; TeaLeaf.Client.tlSendKeys = function() { if (!TeaLeaf.Client.tlQueuedKeySource || (!TeaLeaf.Client.tlQueuedKeys && !TeaLeaf.Client.tlQueuedKeysCount)) { return } var d = TeaLeaf.Client.tlQueuedKeySource; var h = TeaLeaf.Client.tlQueuedKeys; var o = TeaLeaf.Client.tlQueuedKeysCount; TeaLeaf.Client.tlQueuedKeySource = null; TeaLeaf.Client.tlQueuedKeys = ""; TeaLeaf.Client.tlQueuedKeysCount = 0; var m = false; if (TeaLeaf.Client.tlIsReplace(d)) { m = true; return } var j = false; if (TeaLeaf.Client.tlIsExcluded(d)) { j = true; h = null } var a = TeaLeaf.Client.tlGetName(d); var b = null; if (a && TeaLeaf.Client.tlIsExcluded(a)) { return null } var l = new TeaLeaf.Event(TeaLeaf.$C("GUI"), TeaLeaf.$C("KeyUp")); var i = [TeaLeaf.$C("Name"), d.name, TeaLeaf.$C("Id"), d.id, TeaLeaf.$C("Lev"), b, TeaLeaf.$C("ElementType"), d.type, TeaLeaf.$C("TagName"), d.tagName, TeaLeaf.$C("XPath"), TeaLeaf.Client.tlGetXPathFromNode(d), TeaLeaf.$C("KeyCount"), o]; l.tlAddData(i); if (j) { l.tlAddData([TeaLeaf.$C("Excluded"), TeaLeaf.$C("True")]) } else { if (m) { var g = TeaLeaf.Client.tlGetReplaceValue(d); var n = [TeaLeaf.$C("ValueIn"), a, a, g, TeaLeaf.$C("KeyCode"), h]; l.tlAddData(n) } else { var c = TeaLeaf.Event.tlFormatXMLName(a); if (c == null) { c = TeaLeaf.Client.tlGetXPathFromNode(d); c = TeaLeaf.Event.tlFormatXMLName(c) } var f = [TeaLeaf.$C("ValueIn"), c, c, d.value, TeaLeaf.$C("KeyCode"), h]; l.tlAddData(f) } } l.tlSend() }; TeaLeaf.Client.tlSendResize = function() { if (!TeaLeaf.Client.ResizeClientX && !TeaLeaf.Client.ResizeClientY) { return } var b = new TeaLeaf.Event(TeaLeaf.$C("GUI"), TeaLeaf.$C("Resize")); var a = [TeaLeaf.$C("ClientX"), TeaLeaf.Client.ResizeClientX, TeaLeaf.$C("ClientY"), TeaLeaf.Client.ResizeClientY, TeaLeaf.$C("ScreenX"), TeaLeaf.Client.ResizeScreenX, TeaLeaf.$C("ScreenY"), TeaLeaf.Client.ResizeScreenY]; b.tlAddData(a); TeaLeaf.Client.ResizeClientX = null; TeaLeaf.Client.ResizeClientY = null; TeaLeaf.Client.ResizeScreenX = null; TeaLeaf.Client.ResizeScreenY = null; b.tlSend() }; TeaLeaf.Client.tlQueueScroll = function(a) { TeaLeaf.Client.tlSendKeys(); TeaLeaf.Client.tlSendResize(); if (!a) { a = window.event } if (a.clientX) { TeaLeaf.Client.ScrollClientX = a.clientX; TeaLeaf.Client.ScrollClientY = a.clientY; TeaLeaf.Client.ScrollScreenX = a.screenX; TeaLeaf.Client.ScrollScreenY = a.screenY } else { TeaLeaf.Client.ScrollHeight = a.target.scrollHeight; TeaLeaf.Client.ScrollWidth = a.target.scrollWidth; TeaLeaf.Client.ScrollTop = a.target.scrollTop; TeaLeaf.Client.ScrollLeft = a.target.scrollLeft } }; TeaLeaf.Client.tlSendScroll = function() { if (!TeaLeaf.Client.ScrollClientX && !TeaLeaf.Client.ScrollHeight) { return } var b = new TeaLeaf.Event(TeaLeaf.$C("GUI"), TeaLeaf.$C("Scroll")); var a = [TeaLeaf.$C("ClientX"), TeaLeaf.Client.ScrollClientX, TeaLeaf.$C("ClientY"), TeaLeaf.Client.ScrollClientY, TeaLeaf.$C("ScreenX"), TeaLeaf.Client.ScrollScreenX, TeaLeaf.$C("ScreenY"), TeaLeaf.Client.ScrollScreenY, TeaLeaf.$C("ScrollHeight"), TeaLeaf.Client.ScrollHeight, TeaLeaf.$C("ScrollWidth"), TeaLeaf.Client.ScrollWidth, TeaLeaf.$C("ScrollTop"), TeaLeaf.Client.ScrollTop, TeaLeaf.$C("ScrollLeft"), TeaLeaf.Client.ScrollLeft]; b.tlAddData(a); TeaLeaf.Client.ScrollClientX = TeaLeaf.Client.ScrollClientY = null; TeaLeaf.Client.ScrollScreenX = TeaLeaf.Client.ScrollScreenY = null; TeaLeaf.Client.ScrollHeight = TeaLeaf.Client.ScrollWidth = null; TeaLeaf.Client.ScrollTop = TeaLeaf.Client.ScrollLeft = null; b.tlSend() }; TeaLeaf.Client.tlFindAncestorByTag = function(b, a) { var c = b.parentNode; while (c && c != window.document) { if (c.nodeType != 1) { continue } if (c.tagName == a) { break } else { c = c.parentNode } } return c }; TeaLeaf.Client.tlGetXPathFromNode = function(a) { if (a == null) { return null } var g = []; var l = a; var h = null; var m = null; for (var f in TeaLeaf.Client.Configuration.tlSpecialChildNodeTags) { if (l.tagName.toString() == f) { l = l.parentNode } } var d = false; for (d = TeaLeaf.Client.CheckIfIdValid(l); l != window.document && (!d); d = TeaLeaf.Client.CheckIfIdValid(l)) { h = null; m = null; switch (l.tagName) { case "TD": if (m = TeaLeaf.Client.tlFindAncestorByTag(l, "TR")) { h = m.cells } break; case "TR": if (m = TeaLeaf.Client.tlFindAncestorByTag(l, "TABLE")) { h = m.rows } break; case "OPTION": if (m = TeaLeaf.Client.tlFindAncestorByTag(l, "SELECT")) { h = m.options } break; default: m = l.parentNode; if (!m) { m = window.document } h = m.childNodes; break } if (h == null) { return null } var c = 0; for (var f = 0; f < h.length; f++) { if (h[f].nodeType == 1 && h[f].tagName == l.tagName) { if (h[f] == l) { g[g.length] = [l.tagName.toUpperCase(), c]; break } c++ } } l = m } if (d) { g[g.length] = [l.id] } var b = []; for (var f = g.length - 1; f >= 0; f--) { if (g[f].length > 1) { b[b.length] = "['" + g[f][0] + "'," + g[f][1] + "]" } else { b[b.length] = "['" + g[f][0].toString().replace(/'/g, "\\'") + "']" } } return "[" + b.join(",") + "]" }; TeaLeaf.Client.CheckIfIdValid = function(a) { if (a.id == null || typeof (a.id) != "string" || a.id == "") { return false } var c = a.id; a.id = (new Date()).getTime() + "TeaLeaf_unique"; try { if (!document.getElementById(c)) { a.id = c; return true } a.id = c; return false } catch (b) { return false } finally { a.id = c } }; TeaLeaf.Client.tlGetNodeFromXPath = function(path, decode) { if (path == null) { return null } if (decode) { path = TeaLeaf.Event.tlXMLDecode(path) } var xpath = eval(path); if (xpath == null) { return null } var cur_node = window.document; for (var i = 0; i < xpath.length; i++) { found = false; if (xpath[i].length == 1) { cur_node = document.getElementById(xpath[i]); if (cur_node == null) { return null } } else { k = 0; switch (cur_node.tagName) { case "TABLE": children = cur_node.rows; break; case "TR": children = cur_node.cells; break; case "SELECT": children = cur_node.options; break; default: children = cur_node.childNodes; break } for (var j = 0; j < children.length; j++) { if (children[j].nodeType != 1) { continue } if (children[j].tagName.toUpperCase() == xpath[i][0]) { if (k == xpath[i][1]) { cur_node = children[j]; found = true; break } k++ } } if (!found) { return null } } } return cur_node }; window.TeaLeaf_Client_tlGetNodeFromXPath = TeaLeaf.Client.tlGetNodeFromXPath; TeaLeaf.Private.tlPrevEvent; TeaLeaf.Private.setLastProcessedEvent = function(a) { var b = TeaLeaf.Private; if (!b.tlPrevEvent) { b.tlPrevEvent = {} } b.tlPrevEvent.type = a.type; b.tlPrevEvent.button = a.button; b.tlPrevEvent.clientX = a.clientX; b.tlPrevEvent.clientY = a.clientY; if (typeof a.keyCode !== "undefined") { b.tlPrevEvent.keyCode = a.keyCode } if (typeof a.charCode !== "undefined") { b.tlPrevEvent.charCode = a.charCode } if (typeof a.timeStamp !== "undefined") { if (a.timeStamp.getTime) { b.tlPrevEvent.timeStamp = a.timeStamp.getTime() } else { b.tlPrevEvent.timeStamp = a.timeStamp } } else { b.tlPrevEvent.timeStamp = new Date().getTime() } if (typeof a.target !== "undefined") { b.tlPrevEvent.target = a.target } if (typeof a.srcElement !== "undefined") { b.tlPrevEvent.srcElement = a.srcElement } }; TeaLeaf.Private.getLastProcessedEvent = function() { return TeaLeaf.Private.tlPrevEvent }; TeaLeaf.Client.isDuplicateEvent = function(a) { var d = TeaLeaf.Private, c = d.getLastProcessedEvent(); if (!c || !a) { d.setLastProcessedEvent(a); return false } if (c.type !== a.type) { d.setLastProcessedEvent(a); return false } if (c.target !== a.target) { d.setLastProcessedEvent(a); return false } if (c.srcElement !== a.srcElement) { d.setLastProcessedEvent(a); return false } if (c.button !== a.button) { d.setLastProcessedEvent(a); return false } if (c.clientX !== a.clientX || c.clientY !== a.clientY) { d.setLastProcessedEvent(a); return false } if (c.keyCode !== a.keyCode) { d.setLastProcessedEvent(a); return false } if (c.charCode !== a.charCode) { d.setLastProcessedEvent(a); return false } if (typeof a.timeStamp !== "undefined") { var b = a.timeStamp.getTime ? a.timeStamp.getTime() : a.timeStamp; if (c.timeStamp !== b) { d.setLastProcessedEvent(a); return false } } else { a.timeStamp = new Date().getTime(); if (Math.abs(a.timeStamp - c.timeStamp) > 300) { d.setLastProcessedEvent(a); return false } } d.setLastProcessedEvent(a); return true }; TeaLeaf.Client.tlAddEvent = function(d) { if (!d) { d = window.event } var f = TeaLeaf.Client.tlGetEventSource(d); if (!f) { return } TeaLeaf.Client.tlSendKeys(); TeaLeaf.Client.tlSendResize(); TeaLeaf.Client.tlSendScroll(); if (!f.TeaLeafFocusTime) { switch (d.type) { case "keyup": case "change": case "click": case "dblclick": case "mousedown": f.TeaLeafFocusTime = new Date(); break } } if (d.type == "blur" && f.type == "application/x-shockwave-flash") { return } if (d.type == "click" && TeaLeaf.Client.checkIsInput(f)) { TeaLeaf.Event.Configuration.tlidoflastvisitedcontrol = TeaLeaf.Client.tlGetName(f) } if (d.type == "click" && (f.tagName == "a" || f.tagName == "A") && TeaLeaf.tlIsIE()) { TeaLeaf.Client.Configuration.tlIEhref = false; var i = f.href; if (i == "#") { TeaLeaf.Client.Configuration.tlIEhref = true } else { var l = "javascript:"; var b = i.substr(0, l.length); if (b == l) { TeaLeaf.Client.Configuration.tlIEhref = true } } } var m = new TeaLeaf.Event(TeaLeaf.$C("GUI"), d.type); var j = [TeaLeaf.$C("Name"), f.name, TeaLeaf.$C("Id"), f.id, TeaLeaf.$C("ElementType"), f.type, TeaLeaf.$C("TagName"), f.tagName, TeaLeaf.$C("AltKey"), d.altKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("CtrlKey"), d.ctrlKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("ShiftKey"), d.shiftKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("NodeName"), d.nodeName, TeaLeaf.$C("NodeValue"), d.nodeValue, TeaLeaf.$C("XPath"), TeaLeaf.Client.tlGetXPathFromNode(f)]; m.tlAddData(j); var n = TeaLeaf.Client.tlGetName(f); if (d.type == "blur" && f.TeaLeafFocusTime) { var a = new Date(); m.tlAddData([TeaLeaf.$C("TimeInControl"), TeaLeaf.Event.tlDateDiff(a, f.TeaLeafFocusTime)]); f.TeaLeafFocusTime = null } if (f.TeaLeafExclude) { m.tlAddData([TeaLeaf.$C("Excluded"), TeaLeaf.$C("True")]) } else { var c = TeaLeaf.Event.tlFormatXMLName(n); var h = f.TeaLeafReplace ? TeaLeaf.Client.tlReplaceValue(f) : f.value; var g = [TeaLeaf.$C("ValueIn"), c, c, h]; if (f.type === "checkbox" || f.type === "radio") { g.push(TeaLeaf.$C("Checked"), f.checked ? TeaLeaf.$C("True") : TeaLeaf.$C("False")) } m.tlAddData(g) } m.tlSend() }; TeaLeaf.Client.tlHandleFormSubmit = function(h) { TeaLeaf.Client.Configuration.tlactiontype = "Submit"; TeaLeaf.Client.tlSendKeys(); TeaLeaf.Client.tlSendResize(); TeaLeaf.Client.tlSendScroll(); if (!h) { h = window.event } var j = TeaLeaf.Client.tlGetEventSource(h); if (!j) { return } var l; if (!j.name) { var a = document.forms; for (l = 0; l < a.length; l++) { if (a[l] == j) { j.name = "Ordinal-" + l; break } } } if (!j.name) { return } if (TeaLeaf.Client.tlIsReplace(j)) { var n = TeaLeaf.Client.tlGetReplaceValue(j); var b = TeaLeaf.Client.tlGetName(j); var q = [TeaLeaf.$C("ValueIn"), b, b, n]; p.tlAddData(q) } var p = new TeaLeaf.Event(TeaLeaf.$C("GUI"), h.type); var o = [TeaLeaf.$C("Name"), j.name, TeaLeaf.$C("Id"), j.id, TeaLeaf.$C("ElementType"), j.type, TeaLeaf.$C("TagName"), j.tagName, TeaLeaf.$C("AltKey"), h.altKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("CtrlKey"), h.ctrlKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("ShiftKey"), h.shiftKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("NodeName"), h.nodeName, TeaLeaf.$C("NodeValue"), h.nodeValue, TeaLeaf.$C("VisitOrder"), TeaLeaf.Event.Configuration.tlvisitorder]; p.tlAddData(o); var f = j.getElementsByTagName("INPUT"); p.tlAddData([TeaLeaf.$C("InputFieldCount"), f.length]); p.tlPushXML(TeaLeaf.$C("InputFields")); for (l = 0; l < f.length; l++) { var d = f[l]; if (!d.name) { continue } p.tlPushXML(TeaLeaf.$C("Field") + l); var c = [TeaLeaf.$C("Name"), d.name, TeaLeaf.$C("Id"), d.id, TeaLeaf.$C("ElementType"), d.type, TeaLeaf.$C("TagName"), d.tagName]; p.tlAddData(c); if (TeaLeaf.Client.tlIsExcluded(b)) { p.tlAddData([TeaLeaf.$C("Excluded"), TeaLeaf.$C("True")]) } else { if (TeaLeaf.Client.tlIsReplace(d.name)) { var n = TeaLeaf.Client.tlGetReplaceValue(d); var b = TeaLeaf.Client.tlGetName(d); var q = [TeaLeaf.$C("ValueIn"), b, b, n]; p.tlAddData(q) } else { var g = TeaLeaf.Event.tlFormatXMLName(d.name); var m = [TeaLeaf.$C("ValueIn"), g, g, d.value]; p.tlAddData(m) } } p.tlPopXML() } p.tlPopXML(); p.tlSend(); TeaLeaf.Event.Configuration.tlvisitorder = "" }; TeaLeaf.Client.tlQueueResize = function(a) { TeaLeaf.Client.tlSendKeys(); TeaLeaf.Client.tlSendScroll(); if (!a) { a = window.event } if (a.clientX) { TeaLeaf.ResizeClientX = a.clientX; TeaLeaf.ResizeClientY = a.clientY; TeaLeaf.ResizeScreenX = a.screenX; TeaLeaf.ResizeScreenY = a.screenY } else { TeaLeaf.ResizeClientX = a.target.width; TeaLeaf.ResizeClientY = a.target.height } }; TeaLeaf.Client.tlHandleFormReset = function(c) { TeaLeaf.Client.tlSendKeys(); TeaLeaf.Client.tlSendResize(); TeaLeaf.Client.tlSendScroll(); if (!c) { c = window.event } var d = TeaLeaf.Client.tlGetEventSource(c); if (!d) { return } var f; if (!d.name) { var a = document.forms; for (f = 0; f < a.length; f++) { if (a[f] == d) { d.name = "Ordinal-" + f; break } } } if (!d.name) { return } if (TeaLeaf.Client.tlIsReplace(d)) { var g = TeaLeaf.Client.tlGetReplaceValue(d); var b = TeaLeaf.Client.tlGetName(d); var l = [TeaLeaf.$C("ValueIn"), b, b, g]; j.tlAddData(l) } var j = new TeaLeaf.Event(TeaLeaf.$C("GUI"), c.type); var h = [TeaLeaf.$C("Name"), d.name, TeaLeaf.$C("Id"), d.id, TeaLeaf.$C("ElementType"), d.type, TeaLeaf.$C("TagName"), d.tagName, TeaLeaf.$C("AltKey"), c.altKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("CtrlKey"), c.ctrlKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("ShiftKey"), c.shiftKey ? TeaLeaf.$C("True") : null, TeaLeaf.$C("NodeName"), c.nodeName, TeaLeaf.$C("NodeValue"), c.nodeValue, TeaLeaf.$C("VisitOrder"), TeaLeaf.Event.Configuration.tlvisitorder]; j.tlAddData(h); j.tlSend(); TeaLeaf.tlVisitOrder = "" }; TeaLeaf.Client.tlBeforeUnload = function() { if (TeaLeaf.Client.tlBeforeUnloadFired) { return } TeaLeaf.Client.tlBeforeUnloadFired = true; if (TeaLeaf.Client.Configuration.tlIEhref) { TeaLeaf.Client.Configuration.tlIEhref = false; return } if (typeof TeaLeaf.Cookie != "undefined" && TeaLeaf.Client.Configuration.tlStoreQueueInCookie) { var c = new Date(); c.setTime(c.getTime() + 300000); var b = TeaLeaf.Event.tlQueuedXML.replace(/(\r|\n)/g, "").replace(/;/g, "%3B"); TeaLeaf.Cookie.tlSetCookieValue("tlQueuedXML", b, c, "/") } if (TeaLeaf.Client.Configuration.tlbeforeunloadflag == true) { TeaLeaf.Event.Configuration.tllastdwelltime = new Date(); TeaLeaf.Client.Configuration.tlunloadflag = false; var f = new TeaLeaf.Event(TeaLeaf.$C("PERFORMANCE"), TeaLeaf.$C("BeforeUnload")); TeaLeaf.Event.SetType = f.EventType; if (TeaLeaf.Event.SetSubType == "") { TeaLeaf.Event.SetSubType = f.EventSubType } else { TeaLeaf.Event.SetSubType += "; " + f.EventSubType } TeaLeaf.Event.Configuration.tlbeforeunloadflag = true; var a = [TeaLeaf.$C("MouseMove"), TeaLeaf.Client.tlHasUserMovement ? TeaLeaf.$C("True") : TeaLeaf.$C("False"), TeaLeaf.$C("Action"), TeaLeaf.Client.Configuration.tlactiontype, TeaLeaf.$C("VisitOrder"), TeaLeaf.Event.Configuration.tlvisitorder]; f.tlAddData(a); TeaLeaf.Event.Configuration.tlasync = false; f.tlSend(); TeaLeaf.Event.tlFlushQueue(true); TeaLeaf.Event.Configuration.tlvisitorder = ""; TeaLeaf.Client.tlDetachFromAllControls() } }; TeaLeaf.Client.tlUnload = function() { if (TeaLeaf.Client.Configuration.tlunloadflag) { TeaLeaf.Event.Configuration.tllastdwelltime = new Date(); TeaLeaf.Client.Configuration.tlbeforeunloadflag = false; var b = new TeaLeaf.Event(TeaLeaf.$C("PERFORMANCE"), TeaLeaf.$C("Unload")); TeaLeaf.Event.SetType = b.EventType; if (TeaLeaf.Event.SetSubType == "") { TeaLeaf.Event.SetSubType = b.EventSubType } else { TeaLeaf.Event.SetSubType += "; " + b.EventSubType } var a = [TeaLeaf.$C("MouseMove"), TeaLeaf.Client.tlHasUserMovement ? TeaLeaf.$C("True") : TeaLeaf.$C("False"), TeaLeaf.$C("Action"), TeaLeaf.Client.Configuration.tlactiontype, TeaLeaf.$C("VisitOrder"), TeaLeaf.Event.Configuration.tlvisitorder]; b.tlAddData(a); TeaLeaf.Event.Configuration.tlasync = false; b.tlSend(); TeaLeaf.Event.tlFlushQueue(true); TeaLeaf.Event.Configuration.tlvisitorder = ""; TeaLeaf.Client.tlDetachFromAllControls() } }; TeaLeaf.Client.tlAttachToAllControls = function() { TeaLeaf.Client.Configuration.tlcontrolsattached = true; TeaLeaf.Event.tlAddHandler(window, "beforeunload", eval(TeaLeaf.Client.tlBeforeUnload), false); TeaLeaf.Event.tlAddHandler(window, "unload", eval(TeaLeaf.Client.tlUnload), false); TeaLeaf.Client.tlAttachToControls(window); try { var ind; for (ind = 0; ind < window.frames.length; ind++) { if (window == window.frames[ind]) { continue } TeaLeaf.Client.tlAttachToControls(window.frames[ind]) } } catch (e) { } }; TeaLeaf.Client.tlSingleAttach = function() { var tldomsingleelements = TeaLeaf.Client.Configuration.tlSingleAttach; for (var i = 0; i < tldomsingleelements.length; i++) { if (tldomsingleelements[i].domelementID && tldomsingleelements[i].domelementID != "") { var tlelement = document.getElementById(tldomsingleelements[i].domelementID); if (tlelement) { var func = eval(tldomsingleelements[i].tlhandler); TeaLeaf.Event.tlAddHandler(tlelement, tldomsingleelements[i].domevent, func, false) } } } }; TeaLeaf.Client.tlAttachToControls = function(win) { try { var handlers = TeaLeaf.Client.Configuration.tlWindowHandlers; for (var i = 0; i < handlers.length; i++) { if (handlers[i].load) { var func = eval(handlers[i].tlhandler); TeaLeaf.Event.tlAddHandler(win, handlers[i].domevent, func, false) } } handlers = TeaLeaf.Client.Configuration.tlDocumentHandlers; for (var i = 0; i < handlers.length; i++) { if (handlers[i].load) { var func = eval(handlers[i].tlhandler); TeaLeaf.Event.tlAddHandler(win.document, handlers[i].domevent, func, false) } } TeaLeaf.Client.tlProcessNode(win.document.body) } catch (e) { } }; TeaLeaf.Client.tlCheckAttach = function(control) { var i, handlers, item_name, lower_item_name, map_item; if (control.TeaLeaf || control.TeaLeafExclude) { return } control.TeaLeaf = true; if (TeaLeaf.Client.Configuration.tlassignTLID) { TeaLeaf.Client.tlAddIdToControl(control) } TeaLeaf.Client.tlMakeFieldBlockMap(); switch (control.tagName) { case "INPUT": case "SELECT": case "TEXTAREA": if (TeaLeaf.Client.Configuration.tlsendfocus) { TeaLeaf.Event.tlAddHandler(control, "focus", TeaLeaf.Client.tlSetFocusTime, false) } if (TeaLeaf.Client.Configuration.tlsendblur) { TeaLeaf.Event.tlAddHandler(control, "blur", TeaLeaf.Client.tlHandleBlur, false) } TeaLeaf.Event.tlAddHandler(control, "change", TeaLeaf.Client.tlAddEvent, false); item_name = TeaLeaf.Client.tlGetName(control); if (!item_name) { break } lower_item_name = item_name.toLowerCase(); map_item = TeaLeaf.Client.Configuration.tlFieldBlockMap[lower_item_name]; if (!map_item) { break } if (map_item.tlfieldname === item_name || (map_item.caseinsensitive && map_item.tlfieldname === lower_item_name)) { control.TeaLeafExclude = map_item.eventnovalue; control.TeaLeafReplace = (map_item.eventvaluereplace.length > 0) } break } if (TeaLeaf.Client.Configuration.tlUniversalAttach) { handlers = TeaLeaf.Client.Configuration.tlDocumentHandlers; for (i = 0; i < handlers.length; i++) { if (handlers[i].load) { TeaLeaf.Event.tlAddHandler(control, handlers[i].domevent, eval(handlers[i].tlhandler), false) } } } }; TeaLeaf.Client.tlCheckIndControls = function(d) { try { if (d.document) { var a = d.document.getElementsByTagName("INPUT"); for (var b = 0; b < a.length; b++) { TeaLeaf.Client.tlCheckAttach(a[b]) } a = d.document.getElementsByTagName("SELECT"); for (var b = 0; b < a.length; b++) { TeaLeaf.Client.tlCheckAttach(a[b]) } a = d.document.getElementsByTagName("BODY"); if (a.length > 0) { a = a[0].getElementsByTagName("*"); for (var b = 0; b < a.length; b++) { TeaLeaf.Client.tlCheckAttach(a[b]) } } } } catch (c) { } }; TeaLeaf.Client.tlProcessNode = function(h, c) { var f, b, d, a; if (typeof (h) === "string") { h = document.getElementById(h) } if (!h) { return } try { switch (h.tagName) { case "INPUT": case "SELECT": case "TEXTAREA": TeaLeaf.Client.tlCheckAttach(h); break; default: if (TeaLeaf.Client.Configuration.tlUniversalAttach && TeaLeaf.Client.tlTagNameAllowed(h.tagName)) { TeaLeaf.Client.tlCheckAttach(h) } break } if (!c) { d = ["INPUT", "SELECT", "TEXTAREA"]; for (f = 0; f < d.length; f++) { a = h.getElementsByTagName(d[f]); for (b = 0; b < a.length; b++) { TeaLeaf.Client.tlCheckAttach(a[b]) } } if (TeaLeaf.Client.Configuration.tlUniversalAttach) { if (TeaLeaf.Client.Configuration.tlExcludeTags) { a = h.getElementsByTagName("*"); for (f = 0; f < a.length; f++) { if (TeaLeaf.Client.tlTagNameAllowed(a[f].tagName)) { TeaLeaf.Client.tlCheckAttach(a[f]) } } } else { for (f in TeaLeaf.Client.Configuration.tlNodeTags) { a = h.getElementsByTagName(f); for (b = 0; b < a.length; b++) { TeaLeaf.Client.tlCheckAttach(a[b]) } } } } } } catch (g) { } }; TeaLeaf.Client.tlSetFocusTime = function(b) { if (!b) { b = window.event } var a = TeaLeaf.Client.tlGetEventSource(b); if (!a || a.type == "application/x-shockwave-flash") { return } var a = TeaLeaf.Client.tlGetEventSource(b); if (!a) { return } if (!a.TeaLeafFocusTime) { a.TeaLeafFocusTime = new Date() } if (TeaLeaf.Client.Configuration.tlsendfocus) { TeaLeaf.Client.tlAddEvent(b) } }; TeaLeaf.Client.tlHandleBlur = function(b) { if (!b) { b = window.event } var a = TeaLeaf.Client.tlGetEventSource(b); if (!a || a.type == "application/x-shockwave-flash") { return } TeaLeaf.Client.tlEndVisit(a); if (TeaLeaf.Client.checkIsInput(a)) { TeaLeaf.Event.Configuration.tlidoflastvisitedcontrol = TeaLeaf.Client.tlGetName(a) } if (TeaLeaf.Client.Configuration.tlsendblur) { TeaLeaf.Client.tlAddEvent(b) } }; TeaLeaf.Client.tlEndVisit = function(c) { if (c.TeaLeafFocusTime) { var a = TeaLeaf.Client.tlGetName(c); if (!a) { a = TeaLeaf.Client.tlGetAnchor(c, false); if (a) { a = "LEVEL" + a } else { a = "unnamed" } } var d = TeaLeaf.Event.tlDateDiff(c.TeaLeafFocusTime, new Date()); var b = a + ":" + d; if (TeaLeaf.Event.Configuration.tlvisitorder != "") { TeaLeaf.Event.Configuration.tlvisitorder = TeaLeaf.Event.Configuration.tlvisitorder + ";" + b } else { TeaLeaf.Event.Configuration.tlvisitorder = b } } }; TeaLeaf.Client.tlDetachFromAllControls = function() { TeaLeaf.Client.Configuration.tlcontrolsattached = false; TeaLeaf.Client.tlDetachFromControls(window); try { var b; for (b = 0; b < window.frames.length; b++) { var a = window.frames[b]; TeaLeaf.Client.tlDetachFromControls(a) } } catch (c) { } }; TeaLeaf.Client.tlDetachFromControls = function(win) { try { var handlers = TeaLeaf.Client.Configuration.tlWindowHandlers; for (var i = 0; i < handlers.length; i++) { var func = eval(handlers[i].tlhandler); TeaLeaf.Event.tlRemoveHandler(win, handlers[i].domevent, func, false) } handlers = TeaLeaf.Client.Configuration.tlDocumentHandlers; for (var i = 0; i < handlers.length; i++) { var func = eval(handlers[i].tlhandler); TeaLeaf.Event.tlRemoveHandler(win.document, handlers[i].domevent, func, false) } var items = win.document.getElementsByTagName("INPUT"); var i; for (i = 0; i < items.length; i++) { TeaLeaf.Event.tlRemoveHandler(items[i], "change", TeaLeaf.Client.tlAddEvent, false); TeaLeaf.Event.tlRemoveHandler(items[i], "blur", TeaLeaf.Client.tlHandleBlur, false); items[i].TeaLeaf = false } items = win.document.getElementsByTagName("SELECT"); for (i = 0; i < items.length; i++) { TeaLeaf.Event.tlRemoveHandler(items[i], "change", TeaLeaf.Client.tlAddEvent, false); TeaLeaf.Event.tlRemoveHandler(items[i], "blur", TeaLeaf.Client.tlHandleBlur, false); items[i].TeaLeaf = false } } catch (e) { } }; TeaLeaf.Client.tlAttachToControl = function(domelement, eventtype, eventHandler) { if (eventHandler) { TeaLeaf.Event.tlAddHandler(domelement, eventtype, eventHandler, false) } else { TeaLeaf.Event.tlAddHandler(domelement, eventtype, eval(TeaLeaf.Client.tlAddEvent), false) } }; TeaLeaf.Client.tlDetachFromControl = function(domelement, eventtype, eventHandler) { if (eventHandler) { TeaLeaf.Event.tlRemoveHandler(domelement, eventtype, eventHandler, false) } else { TeaLeaf.Event.tlRemoveHandler(domelement, eventtype, eval(TeaLeaf.Client.tlAddEvent), false) } }; TeaLeaf.Client.tlMarkBlocked = function(a) { var b, f, d, c; TeaLeaf.Client.tlMakeFieldBlockMap(); if (!a) { a = document.getElementsByTagName("INPUT") } if (!a) { return } for (b = 0; b < a.length; b++) { f = TeaLeaf.Client.tlGetName(a[b]); if (!f) { continue } d = f.toLowerCase(); c = TeaLeaf.Client.Configuration.tlFieldBlockMap[d]; if (!c) { continue } if (c.tlfieldname === f || (c.caseinsensitive && c.tlfieldname === d)) { a[b].TeaLeafExclude = c.eventnovalue; a[b].TeaLeafReplace = (c.eventvaluereplace.length > 0) } } }; TeaLeaf.Client.tlScanForAdditions = function() { if (!TeaLeaf.Client.Configuration.tlScheduledScan) { return } TeaLeaf.Client.tlProcessNode(document.body); try { for (var b = 0; b < window.frames.length; b++) { var a = window.frames[b]; TeaLeaf.Client.tlProcessNode(a.document.body) } } catch (c) { } window.clearTimeout(TeaLeaf.Client.tlTimeoutID); TeaLeaf.Client.tlTimeoutID = window.setTimeout(TeaLeaf.Client.tlScanForAdditions, TeaLeaf.Client.Configuration.tlscanupdate) }; TeaLeaf.Client.tlTagNameAllowed = function(a) { if (a == null) { return false } var b = TeaLeaf.Client.Configuration.tlNodeTags[a]; if (b == null) { b = false } if (TeaLeaf.Client.Configuration.tlExcludeTags) { return !b } else { return b } }; TeaLeaf.Client.tlMakeFieldBlockMap = function() { var c, a, b; if (TeaLeaf.Client.Configuration.tlFieldBlockMap) { return } TeaLeaf.Client.Configuration.tlFieldBlockMap = {}; a = TeaLeaf.Client.Configuration.tlFieldBlock; for (c = 0; c < a.length; c++) { b = a[c].tlfieldname; if (!b) { continue } else { b = b.toLowerCase() } if (a[c].caseinsensitive) { a[c].tlfieldname = b } TeaLeaf.Client.Configuration.tlFieldBlockMap[b] = a[c] } }; TeaLeaf.Client.tlStartListeners = function() { TeaLeaf.Client.tlAttachToAllControls(); TeaLeaf.Client.tlSingleAttach() }; TeaLeaf.Client.tlEndListeners = function() { TeaLeaf.Event.tlFlushQueue(true); TeaLeaf.Client.tlDetachFromAllControls() }; TeaLeaf.Client.tlSendValueChange = function(c, d) { var i = new TeaLeaf.Event(TeaLeaf.$C("GUI"), d); var h = [TeaLeaf.$C("Name"), c.name, TeaLeaf.$C("Id"), c.id, TeaLeaf.$C("ElementType"), c.type]; i.tlAddData(h); var f = TeaLeaf.Client.tlGetName(c); var b = TeaLeaf.Event.tlFormatXMLName(f); var a = c.TeaLeafReplace ? TeaLeaf.Client.tlReplaceValue(c) : c.value; var g = [TeaLeaf.$C("ValueIn"), b, b, a]; i.tlAddData(g); i.tlSend() }; TeaLeaf.Client.tlSetup = function() { if (typeof TeaLeaf.Cookie != "undefined") { var a = TeaLeaf.Cookie.tlGetCookieValue("tlQueuedXML"); if (a != null && a != "") { TeaLeaf.Event.tlQueuedXML += a.replace(/%3B/g, ";") } } TeaLeaf.Client.tlAttachToAllControls(); TeaLeaf.Client.tlSingleAttach(); if (TeaLeaf.Event.Configuration.tlcatchpopups) { TeaLeaf.SavedWindowOpen = window.open; window.open = function(b, c, f, g) { var h = "blocked"; var d; if (typeof TeaLeaf.SavedWindowOpen == "function") { d = TeaLeaf.SavedWindowOpen.apply(this, arguments) } else { b = b ? b : ""; c = c ? c : ""; f = f ? f : ""; d = TeaLeaf.SavedWindowOpen(b, c, f, g) } try { if (!d.closed) { h = "visible" } } catch (l) { if (TeaLeaf.Event.Configuration.tlshowexceptions) { alert(l.name + ": " + l.message + "\r\n\r\nPos 8") } } var j = new TeaLeaf.Event(TeaLeaf.$C("GUI"), TeaLeaf.$C("WindowOpen")); var i = [TeaLeaf.$C("Status"), h, TeaLeaf.$C("URL"), escape(b), TeaLeaf.$C("Name"), c, TeaLeaf.$C("Features"), f, TeaLeaf.$C("Replace"), g]; j.tlAddData(i); j.tlSend(); return d } } window.clearTimeout(TeaLeaf.Client.tlTimeoutID); if (TeaLeaf.Client.Configuration.tlscanupdate > 0) { TeaLeaf.Client.tlTimeoutID = window.setTimeout(TeaLeaf.Client.tlScanForAdditions, TeaLeaf.Client.Configuration.tlscanupdate) } }; TeaLeaf.Client.CallInit = function() { TeaLeaf.Event.tlRemoveHandler(window, "beforeunload", eval(TeaLeaf.Client.tlBeforeUnload), false); TeaLeaf.Event.tlRemoveHandler(window, "unload", eval(TeaLeaf.Client.tlUnload), false); TeaLeaf.addOnLoad(TeaLeaf.Client.tlSetup) }; if (TeaLeaf.Client.Configuration.tlinit == false) { TeaLeaf.Client.Configuration.tlinit = true; TeaLeaf.Client.CallInit() } };