function GetXmlHttpObject()
     {
          var xmlHttp;
          try
          {  
               // Firefox, Opera 8.0+, Safari  
               xmlHttp=new XMLHttpRequest();  
          }
          catch (e)
          {  
               // Internet Explorer  
               try
               {    
                    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    
               }
               catch (e)
               {    
                    try
                    {      
                         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      
                    }
                    catch (e)
                    {      
                         alert("Your browser does not support AJAX!");      
                         return false;      
                    }    
               }  
          }
          return xmlHttp;
     }

function randomizeURL(url)
{
     date=new Date();
     var found=url.indexOf("?");
     if(found==-1)
     {
          url=url+"?randomization="+date.getTime();
     }
     else
     {
          url=url+"&randomization="+date.getTime();
     }
     return url;
}

function ajaxGet(url, divid)
{
     var xmlHttp=GetXmlHttpObject();
     if (xmlHttp==null)
     {
          alert ("Your browser does not support AJAX!");
          return;
     }
     xmlHttp.onreadystatechange=function()
     {
          if (xmlHttp.readyState==4)
          {
               document.getElementById(divid).innerHTML=xmlHttp.responseText;
          }
     }
     xmlHttp.open("GET", randomizeURL(url), true);
     xmlHttp.send(null);
}

function ajaxGet2(url, divid)
// same as ajaxGet, except return is xml containing elements for html and javascript (to be run)
{
     var xmlHttp=GetXmlHttpObject();
     if (xmlHttp==null)
     {
          alert ("Your browser does not support AJAX!");
          return;
     }
     xmlHttp.onreadystatechange=function()
     {
          if (xmlHttp.readyState==4)
          {
               var xml=GetXMLObject(xmlHttp.responseText);
               if(xml==null || ("parseError" in xml && "errorCode" in xml.parseError && xml.parseError.errorCode!=0))
               {
                    alert ("Critical error parsing XML");
                    return;
               }
               document.getElementById(divid).innerHTML=xml.getElementsByTagName("html")[0].childNodes[0].nodeValue;
               if(xml.getElementsByTagName("javascript")[0].hasChildNodes())
               {
                    var javascript=xml.getElementsByTagName("javascript")[0].childNodes[0].nodeValue;
                    eval(javascript);
               }
          }
     }
     xmlHttp.open("GET", randomizeURL(url), true);
     xmlHttp.send(null);
}

function GetXMLObject(xmlText)
{
     var xmlDoc;
     try //Internet Explorer
     {
          xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async="false";
          xmlDoc.loadXML(xmlText);
     }  
     catch(e)
     {
          try // Firefox, Mozilla, Opera, etc.
          {
               parser=new DOMParser();
               xmlDoc=parser.parseFromString(xmlText,"text/xml");
          }
          catch(e)
          {
               alert(e.message);
               return;
          }
     }
     return xmlDoc;
}

function showTab(id, tab)
{
     for(i in tabs)
     {
          if(tabs[i]!=tab)
          {
               document.getElementById("Tab"+tabs[i]).className="TabOff";
          }
          else
          {
               document.getElementById("Tab"+tabs[i]).className="TabOn";
          }
     }
     ajaxGet("/productclass_ajax.php?id="+id+"&tab="+tab, "contents");
}

function highlightTab(tab)
{
     if(tab.src.indexOf("off.gif")!=-1)
     {
          tab.height=24;
     }
}

function unhighlightTab(tab)
{
     if(tab.src.indexOf("off.gif")!=-1)
     {
          tab.height=20;
     }
}

