﻿var xml = null;

function makeXmlDoc()
{
    var xmlDoc = null;            
    
    if (browser == 'IE')
        try
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.loadXML('<Ord></Ord>');
        }
        catch (err)
        {}
    else if (browser == 'Mozilla')
        xmlDoc = document.implementation.createDocument('', 'Ord', null);
        
    return xmlDoc;        
}
function loadXslDoc(filename)
{
    var xslDoc = null; 
    
    if (browser == 'IE')
        try
        {
            xslDoc = new ActiveXObject('Msxml2.FreeThreadedDOMDocument.3.0');
	    }
        catch (err)
        {}
    else if (browser == 'Mozilla')
        xslDoc = document.implementation.createDocument('', '', null);
	
	
	if (xslDoc != null)
    {
        xslDoc.async = false;
        xslDoc.load(filename);
        return xslDoc;
    }
    else
        return null;
}
function loadXmlDoc(filename)
{
    var xmlDoc = null;            
    
    if (browser == 'IE')
        try
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
        }
        catch (err)
        {}
    else if (browser == 'Mozilla')
        xmlDoc = document.implementation.createDocument('', '', null);
                   
    
    if (xmlDoc != null)
    {
        xmlDoc.async = false;
        xmlDoc.load(filename);
        return xmlDoc;
    }
    else
        return null;
}
function findElementByNodeValue(node,value)
{
    if (node.hasChildNodes())
        for (var i = 0; i < node.childNodes.length; i++)
            if (node.childNodes[i].attributes[0].nodeValue == value)
                return true;
            
    return false;
}
function setup()
{  
    if (browser == 'IE')
        document.getElementById('Sokeord').onmousewheel = doScroll;
    else
        document.getElementById('Sokeord').addEventListener('DOMMouseScroll', doScroll, false);

    // make search words
    xml = loadXmlDoc('Lenker/Lenker.xml');
    var newXml = makeXmlDoc();
     
    var searchnodes = xml.getElementsByTagName('Søk');
    
    document.getElementById('antall').innerHTML = searchnodes.length;
               
    for (var i = 0; i < searchnodes.length; i++)
    {             
        var searchwords = searchnodes.item(i).attributes; 
                      
        for (var j = 0; j < searchwords.length; j++)
        {
            if (!findElementByNodeValue(newXml.childNodes[0], searchwords[j].nodeValue))
            {        
                var newChild = newXml.createElement('Item');
                newChild.setAttribute('text', searchwords[j].nodeValue);                
                newXml.childNodes[0].appendChild(newChild);
            }
        }
    }
    
    // make search word list
    var xsl = loadXslDoc('Lenker/Sokeord.xsl');
    
    if ((newXml != null) && (xsl != null))
    {
        if (browser == 'IE')
        {
            var ex = newXml.transformNode(xsl);
            document.getElementById('Sokeord').innerHTML = ex;
        }
        else if (browser == 'Mozilla')
        {
            xsltProcessor = new XSLTProcessor();
            xsltProcessor.importStylesheet(xsl);
            resultDocument = xsltProcessor.transformToFragment(newXml, document);
            document.getElementById('Sokeord').innerHTML = '';
            document.getElementById('Sokeord').appendChild(resultDocument);
        }
    }   
}
function clearCheck()
{
    var sokeord = document.getElementById('Sokeord').getElementsByTagName('input');
    
    for (var i = 0; i < sokeord.length; i++)
        if (sokeord[i].checked)
            sokeord[i].checked = false;
}
function search()
{      
    var xsl = loadXslDoc('Lenker/Sok.xsl');
    var sokeord = document.getElementById('Sokeord').getElementsByTagName('input');    
    
    if (browser == 'IE')
    {
        var xslt = new ActiveXObject('Msxml2.XSLTemplate.3.0');
        xslt.stylesheet = xsl;
        var xslProcessor = xslt.createProcessor();
        xslProcessor.input = xml;
        for (var i = 0; i < sokeord.length; i++)
            if (sokeord[i].checked)
                {
                    xslProcessor.addParameter('Key', sokeord[i].value);
                    document.getElementById('overskrift').innerText = 
                        sokeord[i].value.substring(0,1).toUpperCase() + sokeord[i].value.substring(1);
                }
        xslProcessor.transform();
        document.getElementById('results').innerHTML = xslProcessor.output;
    }
    else if (browser == 'Mozilla')
    {
        var processor = new XSLTProcessor();
        processor.importStylesheet(xsl);
        for (var i = 0; i < sokeord.length; i++)
            if (sokeord[i].checked)
                {
                    processor.setParameter(null, 'Key', sokeord[i].value);
                    document.getElementById('overskrift').innerHTML = 
                        sokeord[i].value.substring(0,1).toUpperCase() + sokeord[i].value.substring(1);
                }        
        var result = processor.transformToFragment(xml, document);
        document.getElementById('results').innerHTML = '';
        document.getElementById('results').appendChild(result);
    } 
}
function doScroll(event)
{
    var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta)
  	{
    	// IE & Opera
   		delta = event.wheelDelta / 120;
  	}
  	else if (event.detail) // W3C
  	{
    	delta = -event.detail / 3;
  	}
	
	document.getElementById('Sokeord').scrollTop -= (delta)*15;
	
	return false;
}