///////////////////////////////////////////////////////////////
// Adsense tracking



function hmi_adinfo(iframeObj, name) 
{
	var dc = iframeObj.src;
	var prefix = name + "=";
	var begin = dc.indexOf("&" + prefix);
	if (begin == -1) 
	{
		begin = dc.indexOf("?" + prefix);
		if (begin == -1) return null;
	} 
	else
		begin += 1;
		
	var end = dc.indexOf("&", begin);
	if (end == -1)
	end = dc.length;

	return unescape(dc.substring(begin + prefix.length, end));
}

function hmi_onMoveOverAd(e)
{
	hmi_inAdFrame = true;
	hmi_FFiframeObj = this;
}

function hmi_onMoveOutAd(e)
{
	hmi_inAdFrame = false;
}

function hmi_adsense_init() 
{
	var browservers = '';
	if (window.addEventListener)
		browservers = 'FF';
	else if (window.attachEvent)
		browservers = 'IE';
	else
	browservers = 'OTHER';

	var elements = document.getElementsByTagName("iframe");

	for (var i = 0; i < elements.length; i++) 
	{
		if(elements[i].src.indexOf('googlesyndication.com') > -1)
		{
			if (document.layers)
			{
				elements[i].captureEvents(Events.ONFOCUS);
			}
			if (browservers == 'IE')
			{ 
				elements[i].onfocus = hmi_IEgetclickinfo;
			}
			else if (browservers == 'FF')
			{
				elements[i].addEventListener('mouseover', hmi_onMoveOverAd, true);
				window.addEventListener('mouseover', hmi_onMoveOutAd, true);
				window.addEventListener('unload', hmi_FFgetclickinfo, false);
			}
			else
			{
				elements[i].onfocus = hmi_IEgetclickinfo;
			}
		}
	}
}

function hmi_IEgetclickinfo()
{
	if (window.status && (window.status!= hmi_lastStatus))
	{
		var channel= typeof(hmi_channel)!= "undefined" ? hmi_channel:0;	
		hmi_lastStatus = window.status;
		hmi_orpc("adclick.php?w="+hmi_ref+"&u="+hmi_id+"&ch="+channel+"&pu="+hmi_URLencode(document.URL)+"&lu="+hmi_URLencode(window.status.length > 6 ? window.status.substring(6):"unknown")+"&ak=4"+"&f=" + escape(hmi_adinfo(event.srcElement, 'format')) + "&ac=" + escape(hmi_adinfo(event.srcElement, 'channel'))+"&s="+hmi_sessionid); 	

	}
}

function hmi_FFgetclickinfo(e)
{
	if (hmi_inAdFrame)
	{
		var status="unknown";
		if (window.status && (window.status!= hmi_lastStatus))
		{
			hmi_lastStatus = window.status;
			status=window.status.substring(6);
		}
		
		var channel= typeof(hmi_channel)!= "undefined" ? hmi_channel:0;	
		hmi_orpc("adclick.php?w="+hmi_ref+"&u="+hmi_id+"&ch="+channel+"&pu="+hmi_URLencode(document.URL)+"&lu="+hmi_URLencode(status)+"&ak=4"+"&f=" + escape(hmi_adinfo(hmi_FFiframeObj, 'format')) + "&ac=" + escape(hmi_adinfo(hmi_FFiframeObj, 'channel'))+"&s="+hmi_sessionid); 
	}
}

function hmi_setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function hmi_getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function hmi_refreshCookie()
{
	var now = new Date();
	hmi_fixDate(now);
	now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);	
 	hmi_setCookie("tc", hmi_id+"|"+hmi_cc+"|"+hmi_timestamp, now,'/');
}

function hmi_fixDate(date) {
  var base = new Date(0);
  var skew = base.getTime();
  if (skew > 0)
    date.setTime(date.getTime() - skew);
}

function hmi_diffsecs( now, ts )
{
	var date2 = new Date(ts.substr(0,4), ts.substr(4,2)-1, ts.substr(6,2), ts.substr(8,2), ts.substr(10,2), ts.substr(12,2));
	hmi_fixDate(date2);
	var ms2now = now.getTime();
	var ms2date2 = date2.getTime();

	var difference = ms2now - ms2date2;
	return Math.ceil(difference/1000);
}

///////////////////////////////////////////////////////////////////////////
// Utilities

function hmi_URLencode(sStr) 
{
    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
}

function hmi_externalLink( href )
{
	return (href.indexOf('http://')!=-1 && href.indexOf(document.location.hostname)==-1);	
}

function hmi_checkLink( e )
{
	var me=hmi_getEl(e);
	if(me.tagName.toUpperCase()=="A")
	{
		if(hmi_externalLink(me.href))
		{
			hmi_reportOutLink(hmi_id,me);
		}
	}
	return true;
}

function hmi_pad(number,length) {
   var str = '' + number;
   while (str.length < length)
          str = '0' + str;
	return str;
}

function hmi_getTimeStamp(now)
{
	return ''+now.getFullYear()+hmi_pad((now.getMonth() + 1),2)+hmi_pad(now.getDate(),2)+hmi_pad(now.getHours(),2)+hmi_pad(now.getMinutes(),2)+hmi_pad(now.getSeconds(),2);
}

function hmi_getEl(v) 
{ 
	var tg = (v) ? v : event; 
	if (tg.target) { 
		var el = (tg.target.nodeType == 3) ? tg.target.parentNode : tg.target; 
	} else { 
		var el = tg.srcElement;
	 } 
	return el; 
}

function hmi_pause(numberMillis) 
{
	hmi_async=false;
	var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (!hmi_async) {
    	now = new Date();
        if (now.getTime() > exitTime)
           return;
    }
}

function stripHTML(oldString) {

  return oldString.replace(/<&#91;^>&#93;*>/g, "");
}

function hmi_getRM()
{
	var rm='';
	var s=window.location.search;
	if(s.length > 6)
	{
		var pos=window.location.search.indexOf("hmirm=");
		if(pos!=-1)
		{
			pos+=6;
			var pend=s.indexOf("&",pos);
			if(pend==-1)
				rm=s.substr(pos);
			else
				rm=s.substr(pos,pend-pos);
		}
	}
	return rm;
}

////////////////////////////////////////////////////////////////////////////////////////////
// RPC Communications & tracking

function hmi_removeScript(id) { 
	var hd=document.getElementsByTagName('head')[0]; 
	hd.removeChild(document.getElementById(id)); 
} 

function hmi_reportOutLink(id,me)
{
	var channel= typeof(hmi_channel)!= "undefined" ? hmi_channel:0;	
	hmi_orpc("elink.php?w="+hmi_ref+"&u="+id+"&ch="+channel+"&pu="+hmi_URLencode(document.URL)+"&lu="+hmi_URLencode(me.href)+"&at="+hmi_URLencode(stripHTML(me.innerHTML))+"&s="+hmi_sessionid); 	
}

function hmi_rpc(url)
{
	var remoteScript=document.createElement('script'); 
	remoteScript.id = 'hmi_rs'; remoteScript.setAttribute('type','text/javascript'); 
	remoteScript.setAttribute('src',hmi_fileroot+url); 	
	var hd=document.getElementsByTagName('head')[0]; 
	hd.appendChild(remoteScript); 
}

function hmi_orpc(url)
{
	hmi_rpc_image = new Image();
	d=new Date();
	hmi_rpc_image.src = hmi_fileroot+url+"&rpcui="+d.getTime();
	hmi_pause(500);
}

function hmi_ctidLoad()
{
	// Get CTID
	var cookiedata=hmi_getCookie("tc");	
	var ctid=0;
	if(cookiedata)
	{
		var results = cookiedata.split("|");
		ctid=results[0];
	}
	
	var url=hmi_fileroot+"hmi/"+ctid+"/hmi.js";
	document.write("<script src='"+url+"' type='text/javascript'><\/script>\n");
}

function hmi_sessionLoad(ctid)
{
	var bNewSession=hmi_externalLink(document.referrer);
	var fd=0;
	
	var cookiedata=hmi_getCookie("sn");
	if(cookiedata)
	{
		if(bNewSession)
		{
			// special session re-entry scenario - signal force new session
			fd=4;
		}
		else
		{
			var results = cookiedata.split("|");
			hmi_sessionid=results[0];
			hmi_ip=results[1];
			hmi_updateDone();		
			return;
		}
	}
	else
		fd=hmi_updated < 3600 ? 1:0;

	hmi_refmark=hmi_getRM();
	var url=hmi_fileroot+"session.php?w="+hmi_ref+"&u="+ctid+"&ru="+hmi_URLencode(document.referrer)+"&rm="+hmi_refmark+"&fd="+fd+"&rpcui="+hmi_now.getTime();
	document.write("<script src='"+url+"' type='text/javascript'><\/script>\n");
}

function hmi_addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function hmi_scriptTiming()
{
	var d = new Date();
	return d.getTime()-hmi_now.getTime();	
}

function hmi_updateDone()
{
	var channel= typeof(hmi_channel)!= "undefined" ? hmi_channel:0;	
	var vevent= typeof(hmi_vevent)!= "undefined" ? hmi_vevent:0;
	hmi_st=hmi_scriptTiming();
	
	// Log the page view
	hmi_orpc("pageview.php?w="+hmi_ref+"&u="+hmi_id+"&ch="+channel+"&pu="+hmi_URLencode(document.URL)+"&s="+hmi_sessionid+"&rm="+hmi_refmark+"&ve="+vevent+"&l="+hmi_landing+"&st="+hmi_st); 	
}

function hmi_trackExternalLinks()
{
	var elements = document.getElementsByTagName("a");
	for (var i = 0; i < elements.length; i++) 
	{
		if(hmi_externalLink(elements[i].href))
		{
			elements[i].onclick=function() {
			hmi_reportOutLink(hmi_id,this);
			return true;}
		}
	}
}

function hmi_initTrackLinks()
{

	if(hmi_config!=undefined)
	{
		if((hmi_config & 1)==1)
			hmi_trackExternalLinks();

		if((hmi_config & 2)==2)
			hmi_adsense_init();
	}
}

var hmi_lastStatus = '';
var hmi_inAdFrame = false;
var hmi_FFiframeObj;
var hmi_rpc_image=null;


var hmi_sessionid=0;
var hmi_ip='';
var hmi_dt=null;
var hmi_landing=0;
var hmi_st=0;
var hmi_caps=null;
var hmi_elapsedtime=0;
var hmi_refmark='';
var hmi_searchstring='';
var hmi_now = new Date();
hmi_fixDate(hmi_now);

var hmi_tzo=hmi_now.getTimezoneOffset();
var hmi_timestamp=hmi_getTimeStamp(hmi_now);

hmi_addLoadEvent(hmi_initTrackLinks);
hmi_ctidLoad();


