// JavaScript Document
function SearchEngine()
{
	this.form;
	this.tf;
	this.interval;
	
	this.init       = function(obj, formid)
	{
		this.form  = document.getElementById(formid);
		this.tf    = obj;
		
		var lScope = this;
		
		// Make sure autocomplete is off
		this.form.setAttribute('autocomplete', 'off');
		
		tf.onkeyup = function()
		{
			clearTimeout(lScope.interval);
			lScope.interval = setTimeout('se.searchWord()', 200);
		}
	}
	
	this.searchWord = function()
	{
		clearTimeout(this.interval);
		
		var els  = this.form.elements;
		if(els['zoekterm'].value != '')
		{
			var ajax = new Ajax();
			ajax.init(this.responseHandler, this.errorHandler);
			
			var url  = '/wisexs/js/SearchForm.php?zoekterm=' + els['zoekterm'].value + '&zoekmap=' + els['zoekmap'].value + '&zoekdef=' + els['zoekdef'].value + '&respp=' + els['respp'].value + '&start=' + els['start'].value;
			ajax.call(url);
		} else
		{
			var list = document.getElementById('sp-results');
			list.style.display = 'none';
		}
	}
	
	this.responseHandler = function(xml)
	{
		if(null != xml)
		{
			var root  = xml.getElementsByTagName('ajax')[0];
			var rows  = root.getElementsByTagName('row');
			var list  = document.getElementById('sp-results');
			var ul    = list.getElementsByTagName('ul');
			
			if(ul.length == 0)
			{
				var ul = document.createElement('ul');	
			} else
			{
				var ul = ul[0];
				
				// Remove all children
				while(ul.hasChildNodes())
				{
					ul.removeChild(ul.lastChild);
				}
			}
			
			var count = rows.length > 5 ? 5 : rows.length;
			
			for(var i = 0; i < count; i++)
			{
				// Deze waardes aanpassen wanneer de indeling anders moet.
				var id           = rows[i].getElementsByTagName('id')[0];
				var def          = rows[i].getElementsByTagName('objecttype')[0];
				var title        = rows[i].getElementsByTagName('title')[0];
				var values       = rows[i].getElementsByTagName('values')[0];
				var picture      = values.getElementsByTagName('foto1')[0];
				var type         = rows[i].getElementsByTagName('type')[0];
				
				var link         = document.createElement('a');
				link.setAttribute('href', '/index/' + type.firstChild.data + '/' + def.firstChild.data + '/' + id.firstChild.data + '/Zoekresultaat.html');
				
				var li           = document.createElement('li');
				li.setAttribute('id', 'sp-results-' + i);
				
				var div          = document.createElement('li');
				div.setAttribute('style', 'clear: both; float: none;');
				/*
				if(!empty(picture))
				{
					var img = document.createElement('IMG');
					img.setAttribute('alt', title.firstChild.data)
					img.setAttribute('src', '/wisexs/GetImage.php?id=' + picture.firstChild.data + '&w=50');
				}
				*/
				
				var span         = document.createElement('span');
				if(document.all)
				{
					span.innerText   = title.firstChild.data;
				} else
				{
					span.textContent = title.firstChild.data;
				}
				
				/*
				if(!empty(picture) && !empty(picture.firstChild.data))
				{
					link.appendChild(img);
				}
				*/
				
				link.appendChild(span);
				link.appendChild(div);
				li.appendChild(link);
				ul.appendChild(li);
			}
			
			list.appendChild(ul);
			list.style.display = 'block';
		}
	}
	
	this.errorHandler   = function(msg)
	{
		alert("An error occured:\n\n" + msg);
	}
	
	this.closeResults   = function()
	{
		var list           = document.getElementById('sp-results');
		list.style.display = 'none';
	}
}

function empty(mixed_var)
{
	var key;
    
    if(mixed_var === ""
        || mixed_var === 0
        || mixed_var === "0"
        || mixed_var === null
        || mixed_var === false
        || mixed_var === undefined
    )
	{
        return true;
    }
	
    if(typeof mixed_var == 'object')
	{
        for(key in mixed_var)
		{
            if(typeof mixed_var[key] !== 'function' )
			{
              return false;
            }
        }
		
        return true;
    }
	
    return false;

}