//The browser detection function. 
//This function can be used for other purposes also.
var IFrameObj1;
var IFrameObj2;

function UserAgent() 
{
  var b=navigator.appName.toUpperCase();

  if (b=="NETSCAPE") this.b="ns";
  else if (b=="MICROSOFT INTERNET EXPLORER") this.b="ie";
  else if (b=="OPERA") this.b="op";
  else this.b=b;

  this.version=navigator.appVersion;
  this.v=parseInt(this.version);

  this.ns=(this.b=="ns" && this.v>=4);
  this.ns4=(this.b=="ns" && this.v==4);
  this.ns5=(this.b=="ns" && this.v==5);

  this.ie=(this.b=="ie" && this.v>=4);
  this.ie4=(this.version.indexOf('MSIE 4')>0);
  this.ie5=(this.version.indexOf('MSIE 5')>0);
  this.ie55=(this.version.indexOf('MSIE 5.5')>0);
  this.ie6=(this.version.indexOf('MSIE 6')>0);

  this.op = (this.b=="op");
  this.op4 = (this.b=="op" && this.v==4);
  this.op5 = (this.b=="op" && this.v==5);
}

at=new UserAgent();

//if you want to create the frame or layer dynamically, do not
//specify a name, do something like this, new exchanger();

function exchanger(name)
{
  //hold the dynamically created iframe or layer
  this.lyr = null;

  //to remember if the iframe or layer is created dynamically.
  this.isDynamic = false;
  this.name=name||"";
  this.fakeid=0;

  if (name == null || name=="")
  {
    this.isDynamic = true;
    this.create();
  }
  else
  {
    this.name=name;
    if (at.ns4)
    {
      this.lyr = window.document.layers[this.name];
    }
  }
}

//this function should not be called directly
exchanger.prototype.create=function()
{
  if (at.ns4) 
  {
    this.lyr=new Layer(0);
    this.visibility = "hide";
   }
  else if (at.ie || at.ns5||true) 
  {
    this.lyr=document.createElement("IFRAME");
    this.lyr.width=0;
    this.lyr.height=0;
    this.lyr.marginWidth=0;
    this.lyr.marginHeight=0;
    this.lyr.frameBorder=0;
    this.lyr.style.visibility="hidden";
    this.lyr.style.position="absolute";
    this.lyr.src="";
    this.name="tongIFrame"+window.frames.length;
    //this will make IE work.
    this.lyr.setAttribute("id",this.name);
    //this will make netscape work.
    this.lyr.setAttribute("name",this.name);
    IFrameObj1 = document.body.appendChild(this.lyr);
     this.lyr.src="blank.html";
     this.lyr.navSeqCheck=null;
   
  }
  
}

exchanger.prototype.sendData=function(url)
{
 
  var zeit = new Date();
  var ms = zeit.getMilliseconds();
  var fakeIt = ms*Math.random();
  fakeIt = (Math.round(fakeIt))^2;
  this.fakeid += 1;
  var newurl = "";
  if (url.indexOf("?") >= 0)
    newurl = url + "&fakeId" + this.fakeid+"&x"+fakeIt;
  else
    newurl = url + "?fakeId" + this.fakeid+"&x"+fakeIt;

  if (this.isDynamic||at.ns4)
  	{
    	
	this.lyr.src=newurl;
	this.lyr.navSeqCheck = null;
	//eval("this.lyr." + "isLoaded") 
	}
  else
  {
    if (at.ie || at.ns5 || at.op)
    {
    window.frames[this.name].navSeqCheck = null;
    window.frames[this.name].isLoaded = false;
    window.frames[this.name].document.location.replace(newurl);
    }
  }
}


exchanger.prototype.retrieveData=function(varName)
{
  if (at.ns4) 
  {
    data =  eval("this.lyr." + varName);
  }
  else if (at.ie || at.ns5 || at.op) 
  {
    data = eval("window.frames['" + this.name + "']." + varName);
  }
  return data;
}
exchanger.prototype.setStatusFalse=function()
	{
	if (this.isDynamic||at.ns4)
  		{
  		this.lyr.isLoaded = false;	
  		}
  	else
		{
		if (at.ie || at.ns5 || at.op)
		{
		window.frames[this.name].isLoaded = false;
		}
  }	
	}


exchanger.prototype.resetCheckQ=function()
	{
	if (this.isDynamic||at.ns4)
  		{
  		this.lyr.qChk = false;	
  		}
  	else
		{
		if (at.ie || at.ns5 || at.op)
		{
		window.frames[this.name].qChk = false;
		}
  }	
	}

exchanger.prototype.resetCheckN=function()
	{
	if (this.isDynamic||at.ns4)
  		{
  		this.lyr.navSeqCheck = "";	
  		}
  	else
		{
		if (at.ie || at.ns5 || at.op)
		{
		window.frames[this.name].navSeqCheck = "";
		}
  }	
	}

exchanger.prototype.returnDocument=function()
{
return this.document;	
}
