var ThisHost=GetDomainFO();
var OtherHost="http://www1.astm.org";
var gTarget;



function GetDomainFO()
{
  return("http://"+this.location.hostname);
} 


function GetHTTPFO()
{
    var httpRequest;
    if(document.all) {
      httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
      httpRequest = new XMLHttpRequest();
    }
     return(httpRequest);
}

var xhr = GetHTTPFO();


function GoOtherFO(Target1)
{
  xhr.abort();
  Target1.href = Target1.href.replace(ThisHost,OtherHost);
  if(Target1.oldOnClick)
	{
		Target1.oldOnClick();
	}
  //return(false);
}



function CheckHeartBeatFO(Target1,async)
{

  var SpecString;
  var Specs="";
  var Timer;

  //SpecString="http://"+HostToCheck+"/cgi-bin/HeartBeat.cgi";
  SpecString="/cgi-bin/HeartBeat.cgi";

  xhr.open('GET', SpecString, async);

  if(!async) { Timer = setTimeout("GoOtherFO(gTarget);",5000); }

  xhr.onreadystatechange=function(){

     if(xhr.readyState==4 && xhr.status == 200) {

	     clearTimeout(Timer);

	     Specs=xhr.responseText;
	     xhr.abort();
	     if(Specs.indexOf("Yep") >=0) {
		return(true);
	     }
	     else {
		  Target1.href = Target1.replace(ThisHost, OtherHost);
	     }
	}
  };

  try
  {
    xhr.send(null);
  }
  catch(e)
  {
    //for chrome......
  }

  if(!async) { clearTimeout(Timer); }
  else { Timer = setTimeout("GoOtherFO(gTarget);",5000); }

}

function GoToUpHostFO(ThisLink)
{
   gTarget = ThisLink;
   UpHost = CheckHeartBeatFO(ThisLink, true);
   return false;   
}

function GoToUpHostSyncFO(ThisLink)
{
   gTarget = ThisLink;
   UpHost = CheckHeartBeatFO(ThisLink, false);
   return false;   
}


function FixLinkFO(ThisLink)
{
    if(ThisLink.onclick && ThisLink.href && ThisLink.href != "")
	{
		ThisLink.oldOnClick = ThisLink.onclick;
		ThisLink.onclick = function() 
					{
						var origLoc = window.location; 
						GoToUpHostSyncFO(this); 
						return(ThisLink.oldOnClick()); 
					};
	}
    else
	{
		ThisLink.onclick = function() { GoToUpHostFO(this); };
	}
}

function FixAllLinksFO()
{
 var i;
  for(i=0;i<document.links.length;i++) {
 	if((document.links[i].href.indexOf("www.astm.org") > 0) || (document.links[i].href.indexOf("www1.astm.org")> 0) || (document.links[i].href.indexOf("www2.astm.org") > 0))
	{		
     FixLinkFO(document.links[i]);
	}
   }
}

function addEvent(obj, evType, fn)
{ 
	if (obj.addEventListener)
	{ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} 
	else if (obj.attachEvent)
	{ 
 		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	}
	else 
	{ 
		return false; 
	} 
}