function createXMLDoc()
{
    var xmlDoc;
    // code for IE
    if (window.ActiveXObject){
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async=false;
    } else if (document.implementation && document.implementation.createDocument){
      // code for Mozilla, Firefox, Opera, etc.
      xmlDoc=document.implementation.createDocument("","",null);
    } else {
      alert('Your browser cannot handle this script');
    }
    return (xmlDoc);
}

// 
// Global vars.
// 
var url;
var debug = false;
var transform = createXMLDoc();
var source = createXMLDoc();


//Triggered once the XSLT document is loaded
function loadTransform() {
    if (window.ActiveXObject){
        source.onreadystatechange = function () {
            if (source.readyState == 4){
                try { 
                    runTransform(); 
                 } catch(e) {
                     alert('Error loading the transform file: ' + e.toString()); 
                 }
            }
       };
    } else {
        source.onload = runTransform;    
    }
   
    if (debug) {
        alert("Started loading the document: " + url);
    }   
    source.load(url);
}

function runTransform() {
    var frag;
    if (window.ActiveXObject){
        // Code for IE
        frag = source.transformNode(transform);
    } else {
        // Code for Mozilla, Firefox, Opera, etc.        
        var processor = new XSLTProcessor();
        processor.importStylesheet(transform);
        frag = processor.transformToFragment(source, document);
    }
    
     setResultChildFragment(frag);
}

function setResultChildFragment(frag) {
    try{
        if (window.ActiveXObject){      
            document.getElementById("div_result").innerHTML=frag;  
        } else {
            var resultNode = document.getElementById('div_result');
            while (resultNode.childNodes[0] != null) {
                resultNode.removeChild(resultNode.childNodes[0]);
            }
            resultNode.appendChild(frag);
        }        
    }catch(e){
        resultNode.innerHTML = e;
        //alert("Could not set the result.." + e);
        
    }
}

function showWaitMessage(){
  if (window.ActiveXObject){      
            document.getElementById("div_result").innerHTML="<div class='wait'>Loading, please wait..</div>";  
  } else{
        // Sets the waiting message while the transform is performed.
        var wait = document.createElement('div');
        wait.setAttribute('class', 'wait');
        wait.appendChild(document.createTextNode('Loading, please wait..'));
        setResultChildFragment(wait);
    }
}

function startTransformation(req, product) {
    url = '/site-commons/php/tunnel_search.php?product=' + product + req ;
    
    if (window.ActiveXObject){        
        transform.onreadystatechange = function () {
            if (transform.readyState == 4){
                try { 
                    loadTransform(); 
                 } catch(e) {
                     alert('Error loading the transform file: ' + e.toString()); 
                 }
            }
       };
    } else {
        transform.onload = loadTransform;    
    }

    showWaitMessage();
    transform.load("/site-commons/xsl/gs.xsl");    
    return false;
}

function onSubmitForm() {
    var browserName = whichBrs();
    var as_q = document.search_form.as_q.value;
    var q = document.search_form.q.value;
    
//    alert ("BROWSER: " + browserName);
      
    if (browserName == 'Safari') {
        if (product == 'SVN') {
            window.location = "/search.html?cx=004642928127942995072%3Ateb3l4fru5g&cof=FORID%3A9&q=" + escape(q) + "+"+as_q;
        }
        if (product == 'OXY') {
            window.location = "/search.html?cx=004642928127942995072%3Aqm0jpe24lpo&cof=FORID%3A11&q=" + escape(q) + "+"+as_q;
        }         
    } else {
        startTransformation('&q=' + escape(q) + '&as_q=' + escape(as_q), product);
    }
    return false;
}

// Browser Detection 
function whichBrs() {
    var agt=navigator.userAgent.toLowerCase();
    if (agt.indexOf("opera") != -1) return 'Opera';
    if (agt.indexOf("staroffice") != -1) return 'Star Office';
    if (agt.indexOf("webtv") != -1) return 'WebTV';
    if (agt.indexOf("beonex") != -1) return 'Beonex';
    if (agt.indexOf("chimera") != -1) return 'Chimera';
    if (agt.indexOf("netpositive") != -1) return 'NetPositive';
    if (agt.indexOf("phoenix") != -1) return 'Phoenix';
    if (agt.indexOf("firefox") != -1) return 'Firefox';
    if (agt.indexOf("safari") != -1) return 'Safari';
    if (agt.indexOf("skipstone") != -1) return 'SkipStone';
    if (agt.indexOf("msie") != -1) return 'Internet Explorer';
    if (agt.indexOf("netscape") != -1) return 'Netscape';
    if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
    if (agt.indexOf('\/') != -1) {
    if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
    return navigator.userAgent.substr(0,agt.indexOf('\/'));}
    else return 'Netscape';} else if (agt.indexOf(' ') != -1)
    return navigator.userAgent.substr(0,agt.indexOf(' '));
    else return navigator.userAgent;
}
