var isIE = false, isNotIE = false;
var trackingStr = '', keysPressed = '';

var IE  = navigator.appName.indexOf("Microsoft");
var Version = navigator.appVersion.charAt(0);
if( IE == -1 && Version >= 5 ) isNotIE = true;
if( IE > -1 && Version >= 4 ) isIE = true;
  

function Time()
{
  var now = new Date();
  lastTime = now;
  return now.getTime();
}

function OnLoad( Event )
{
  if ( window.originalOnLoad )
  {
    window.onload = window.originalOnLoad;
    retVal = window.originalOnLoad( Event );
  }

  for ( var i = 0; i < document.links.length; i++ )
  {
    if ( document.links[i].onclick && document.links[i].onclick.toString() != OnClick.toString() )
      document.links[i].originalOnClick = document.links[i].onclick;
    document.links[i].onclick = OnClick;
  }

  for ( var f = 0; f < document.forms.length; f++)
  {
//    if ( document.forms[f].onsubmit && document.forms[f].onsubmit.toString() != OnClick.toString() )
//      document.forms[f].originalOnClick = document.forms[f].onsubmit;
//    document.forms[f].onsubmit = OnClick;

    for ( var i = 0; i < document.forms[f].elements.length; i++)
    {
      if ( document.forms[f].elements[i].onfocus && document.forms[f].elements[i].onfocus.toString() != OnFocus.toString() )
        document.forms[f].elements[i].originalOnFocus = document.forms[f].elements[i].onfocus;
      document.forms[f].elements[i].onfocus = OnFocus;

      if ( document.forms[f].elements[i].onclick && document.forms[f].elements[i].onclick.toString() != OnClick.toString() )
        document.forms[f].elements[i].originalOnClick = document.forms[f].elements[i].onclick;
      document.forms[f].elements[i].onclick = OnClick;

      if ( document.forms[f].elements[i].onchange && document.forms[f].elements[i].onchange.toString() != OnChange.toString() )
        document.forms[f].elements[i].originalOnChange = document.forms[f].elements[i].onchange;
      document.forms[f].elements[i].onchange = OnChange;
    }
  }
}

function OnKeyDown( Event )
{
  var key = window.event ? event.keyCode : Event.which;

  if ( key == 8 ) keysPressed += '[Del]';
  else if ( key == 9 ) keysPressed += '[Tab]';
  else if ( key == 10 ) keysPressed += '\n';
  else if ( key == 13 ) keysPressed += '\r';
//  else if ( key == 16 ) keysPressed += '[Shift]';
  else if ( key == 17 ) keysPressed += '[Ctrl]';
  else if ( key == 18 ) keysPressed += '[Alt]';
  else if ( key == 20 ) keysPressed += '[CapsLock]';
  else if ( key == 27 ) keysPressed += '[Esc]';
  else if ( key == 33 ) keysPressed += '[PageUp]';
  else if ( key == 34 ) keysPressed += '[PageDown]';
  else if ( key == 35 ) keysPressed += '[End]';
  else if ( key == 36 ) keysPressed += '[Home]';
  else if ( key == 37 ) keysPressed += '[Left]';
  else if ( key == 38 ) keysPressed += '[Up]';
  else if ( key == 39 ) keysPressed += '[Right]';
  else if ( key == 40 ) keysPressed += '[Down]';
  else if ( key == 45 ) keysPressed += '[Ins]';
  else if ( key == 46 ) keysPressed += '[DEL]';
  else if ( key == 91 ) keysPressed += '[WindowsKey]';
  else if ( key >= 48 && key <= 122 ) keysPressed += String.fromCharCode(key);
  else if ( key == 144 ) keysPressed += '[NumLock]';
  else if ( key == 191 ) keysPressed += '/';
  else keysPressed += '['+key+']';
  
  if ( document.originalOnKeyDown ) return document.originalOnKeyDown( Event );
}

function OnUnLoad( Event )
{
  if ( keysPressed && trackingStr.length <= 1950 ) trackingStr += '&Event_Keys=' + escape( keysPressed );
  trackingStr += '&Action=End&Time=' + Time();

  var URL = '';
  if ( typeof( Host_Domain ) != 'undefined' ) var URL = Host_Domain;
  if ( typeof( Host_Domain ) == 'undefined' && typeof( mbWebsiteURL ) != 'undefined' ) var URL = mbWebsiteURL;

  var img = new Image();
  if ( !URL || URL == '' )
  {
    URL = document.location.hostname;
    URL = URL.replace( '.com', '' ).replace( '.net', '' ).replace( '.org', '' );
    if ( URL.indexOf( '.' ) > -1 ) URL = URL.substring( URL.indexOf( '.' ) + 1 );
    if ( URL == 'marketbright' ) URL = 'application';
    URL = 'http://' + URL + '.marketbright.com';
  }
  URL = URL + '/services/web/!Tracker.Log' + trackingStr;
  img.src = URL;

  if ( window.originalOnUnLoad ) return window.originalOnUnLoad( Event );
}

function addEventDetails( Obj, Event )
{
  if ( keysPressed )
  {
    trackingStr += '&Event_Keys=' + escape( keysPressed );
    keysPressed = '';
  }

  if ( !Event ) Event = window.event;
  trackingStr += '&Action='+Event.type+'&Time=' + Time();

  if ( Event.type == 'focus' &&
     ( Obj.tagName == 'BUTTON' || ( Obj.tagName == 'INPUT' && ( Obj.type == 'submit' || Obj.type == 'reset' ) ) ) )
     return;

  if ( Obj.tagName == 'INPUT' || Obj.tagName == 'TEXTAREA' || Obj.tagName == 'SELECT' )
    trackingStr += '&Event_Obj=' + Obj.type.toUpperCase();
  else 
    trackingStr += '&Event_Obj=' + Obj.tagName;
	
  if( Obj.tagName == 'A' )	
    trackingStr += '&Event_Title=' + escape( Obj.innerHTML );

  if ( Obj.tagName == 'BUTTON' || ( Obj.tagName == 'INPUT' && ( Obj.type == 'submit' || Obj.type == 'reset' ) ) )
    trackingStr += '&Event_Title=' + escape( Obj.value );

//  if ( Obj.form && Obj.form.name ) trackingStr += '&Event_Form='+ Obj.form.name;
  if ( Obj.name ) trackingStr += '&Event_Name=' + Obj.name;
  if ( Obj.id ) trackingStr += '&Event_Id=' + Obj.id;
}

function OnFocus( Event )
{
	if ( trackingStr.length <= 1950 )
    addEventDetails( this, Event );

  if ( isIE && this.originalOnFocus ) return this.originalOnFocus();
  if ( isNotIE && this.originalOnFocus ) return this.originalOnFocus( Event );
  if ( isNotIE && Event.target.originalOnFocus ) return Event.target.originalOnFocus( Event );
  return true;
}

function OnChange( Event )
{
	if ( trackingStr.length <= 1950 )
  {
    addEventDetails( this, Event );
  
    if ( this.tagName == 'TEXTAREA' || ( this.tagName == 'INPUT' && this.type == 'text' ) )
    {
      var Str = this.value.substring( 0, 100 );
      if ( Str.length > 100 ) Str = Str.substring( 0, 97 ) + '...';
      trackingStr += '&Event_Obj_Value=' + escape( Str );
    }
    else if ( this.tagName == 'SELECT' )
      trackingStr += '&Event_Obj_Value=' + escape( this[this.selectedIndex].value );
    else if ( this.tagName == 'INPUT' && ( this.type == 'checkbox' || this.type == 'radio' ) && this.checked )
      trackingStr += '&Event_Obj_Value=' + escape( this.value );
  }
  
  if ( isIE && this.originalOnChange ) return this.originalOnChange();
  if ( isNotIE && this.originalOnChange ) return this.originalOnChange( Event );
  if ( isNotIE && Event.target.originalOnChange ) return Event.target.originalOnChange( Event );
  return true;
}

function OnClick( Event )
{
	if ( trackingStr.length <= 1950 )
  {
    addEventDetails( this, Event );
  
    if ( isIE && window.event )
    {
      trackingStr += '&Event_X=' + window.event.x;
      trackingStr += '&Event_Y=' + window.event.y;
    }
    else if ( isNotIE )
    {
      trackingStr += '&Event_X=' + Event.clientX;
      trackingStr += '&Event_Y=' + Event.clientY;
    }
  }

  if ( isIE && this.originalOnClick ) return this.originalOnClick();
  if ( isNotIE && this.originalOnClick ) return this.originalOnClick( Event );
  if ( isNotIE && Event.target.originalOnClick ) return Event.target.originalOnClick( Event );
  return true;
}

function Init()
{
  trackingStr = '?Action=Start&Time=' + Time();
  trackingStr += '&URL=' + escape( document.location.href );
  trackingStr += '&Referrer=' + escape( document.referrer );

  if ( isIE )
  {
    trackingStr += '&ColorDepth=' + screen.colorDepth;  
    document.body.addBehavior("#default#clientCaps" ) ;
    trackingStr += '&Connection_Type=' + document.body.connectionType;
    trackingStr += '&BrowserWidth=' + document.body.clientWidth;
    trackingStr += '&BrowserHeight=' + document.body.clientHeight;
  }
  if ( isNotIE )
  {
    trackingStr += '&ColorDepth=' + screen.pixelDepth;
  	trackingStr += '&BrowserWidth=' + document.documentElement.clientWidth;
    trackingStr += '&BrowserHeight=' + document.documentElement.clientHeight;
  }

  trackingStr += '&ScreenWidth=' + screen.width;  
  trackingStr += '&ScreenHeight=' + screen.height;  

  var URL = '';
  if ( typeof( Host_Domain ) != 'undefined' ) var URL = Host_Domain;
  if ( typeof( Host_Domain ) == 'undefined' && typeof( mbWebsiteURL ) != 'undefined' ) var URL = mbWebsiteURL;

  var img = new Image();
  if ( !URL || URL == '' )
  {
    URL = document.location.hostname;
    URL = URL.replace( '.com', '' ).replace( '.net', '' ).replace( '.org', '' );
    if ( URL.indexOf( '.' ) > -1 ) URL = URL.substring( URL.indexOf( '.' ) + 1 );
    if ( URL == 'marketbright' ) URL = 'application';
    URL = 'http://' + URL + '.marketbright.com';
  }
  URL = URL + '/services/web/!Tracker.Log' + trackingStr;

  document.write( '<img src="'+URL+'" width=1 height=1 alt="" border=0>' );
//  img.src = URL;
}

Init();

if ( window.addEventListener )
  window.addEventListener( 'load', OnLoad, false );
else if ( window.attachEvent )
  window.attachEvent( 'onload', OnLoad );
else if ( document.getElementById )
{
  if ( window.onload && window.onload.toString() != OnLoad.toString() ) window.originalOnLoad = window.onload;
  window.onload = OnLoad;
}

if ( window.addEventListener )
  window.addEventListener( 'unload', OnUnLoad, false );
else if ( window.attachEvent )
  window.attachEvent( 'onunload', OnUnLoad );
else if ( document.getElementById )
{
  if ( window.onunload && window.onunload.toString() != OnUnLoad.toString()) window.originalOnUnLoad = window.onunload;
  window.onunload = OnUnLoad;
}

if ( window.addEventListener )
  window.addEventListener( 'onkeydown', OnKeyDown, false );
else if ( window.attachEvent )
  window.attachEvent( 'onkeydown', OnKeyDown );
else if ( document.getElementById )
{
  if ( document.onkeydown && document.onkeydown.toString() != OnKeyDown.toString() ) document.originalOnKeyDown = document.onkeydown;
  document.onkeydown = OnKeyDown;
}

