var ThisHost=GetDomainFO();
var OtherHost="http://www2.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();
    var filename = Target1.href;
    filename = filename.split('.').pop();

    if(filename != 'doc' && filename != 'pdf' && filename != 'xls' && filename != 'ppt' && filename != 'rtf'){
	Target1.href = Target1.href.replace(ThisHost,OtherHost);
    }

    if(Target1.oldOnClick)
    {
	Target1.oldOnClick();
    }
    else
    {
	if(filename != 'doc' && filename != 'pdf' && filename != 'xls' && filename != 'ppt' && filename != 'zip' && filename != 'rtf'){
	    window.location.href = Target1.href;
	}
    }
    //return(false);
}



function CheckHeartBeatFO(Target1,async)
{
    //return;
    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.target && ThisLink.target != "") { return(false); }
    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; 
    } 
}
