/* (c) The Competence Group */

/* QueryString */
function QueryString()
{
	var _s = new String(document.location.search);
	if (_s.charAt(0) == '?')
	{
		_s = _s.substring(1, _s.length);
	}

	var keyValuePairs = _s.split("&");
	var _array = new Array();
	var pair, pos, key, value;
	for (var i = 0; i < keyValuePairs.length; i++)
	{
		pair = new String(keyValuePairs[i]);
		pos = pair.indexOf("=");
		if(pos == -1)
		{
			key = pair;
			value = null;
		}
		else
		{
			key = pair.substring(0, pos);
			value = pair.substring(pos + 1, pair.length);
		}
		_array[key] = value;
	}
	
	this.toString = function()
	{
		return new String(unescape(_s));
	};
	
	this.get = function(key)
	{
		var value = _array[key];
		return (value != null) ? new String(unescape(_array[key])) : null;
	};
}
	
/* Render Cop */
function renderCop(code)
{
    document.write(code);
}

/* XmlTransform */
function transform(xmlUri, xslUri)
{
	var result = "";

	try
	{
	    if (window.ActiveXObject) // IE
	    {
			// Load XML
			var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
			xmlDoc.async = false;
			var success = xmlDoc.load(xmlUri);
			if (!success)
			{
				result += "XML Failed to load : " + xmlUri + "<br />";
			}
			// Load the XSL
			var xslDoc = new ActiveXObject("MSXML.DOMDocument");
			xslDoc.async = false;
			var success = xslDoc.load(xslUri);
			if (!success)
			{
				result += "XSL Failed to load : " + xslUri + "<br />";
			}
		
			// Transform
			result += xmlDoc.transformNode(xslDoc);
	    }
	    else // Mozilla, Firefox, Opera, etc.
	    {
			var processor = new XSLTProcessor();
			
			var xmlHttp = new XMLHttpRequest();
			xmlHttp.open("GET", xslUri, false);
			xmlHttp.send(null);
			
			var xsl = xmlHttp.responseXML;
			processor.importStylesheet(xsl);

			xmlHttp = new XMLHttpRequest();
			xmlHttp.open("GET", xmlUri, false);
			xmlHttp.send(null);
			
			var xml = xmlHttp.responseXML;
			
            var resultDocument = processor.transformToDocument(xml);
            result += resultDocument.documentElement.innerHTML;
    	}
	}
	catch (e)
	{
		result += "error: " + e + "<br />";
		result += "number: " +  (e.number & 0xFFFF) + "<br />";
		result += "description: " + e.description + "<br />";
	}
	
	return result;
}

function createXmlDocument(xmlString)
{
    var doc = null;

    // code for IE
    if (window.ActiveXObject)
    {
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.async = "false";
        doc.loadXML(xmlString);
    }
    // code for Mozilla, Firefox, Opera, etc.
    else
    {
        var parser = new DOMParser();
        doc = parser.parseFromString(xmlString, "text/xml");
    }

    return (doc != null) ? doc.documentElement : null;
}

// Path

function getRootUri()
{
	var s = new String(document.location);
	if (s.indexOf('?') > -1)
		s = s.substring(0, s.lastIndexOf('?'));
	return s.substring(0, s.lastIndexOf('/')) + '/';
}


/* Userlanguage */
function getUserLanguage(lang)
{
    if (lang != null && lang != '')
        if (lang == "en" || lang == "nl" || lang =="fr")
            return lang;
                
    return getBrowserLanguage();
}

function getBrowserLanguage()
{    
    var language = 'en';
    if (navigator.userLanguage)
        language = navigator.userLanguage.toLowerCase();
    else if (navigator.language)
        language = navigator.language.toLowerCase();
        
    return language.substring(0, 2);
}

/* Cookies */
function expireDate(numDays) 
{       
	// numDays                          
	var oneSecond = 1000;
	var oneHour = 3600 * oneSecond;
	var oneDay = 24 * oneHour;
	var expire = new Date((new Date()).getTime() + numDays * oneDay);
	
	return expire.toGMTString();
}

function extractSubstring(myString, delim1, delim2) 
{
    // Extracts 1st substring in 'myString' bounded by 'delim1' and 'delim2'
	var substr1 = myString.split(delim1);
	if ( substr1 == myString ) 
	    return -1;
	
	var substr2 = substr1[1].split(delim2);
	var len1 = substr1[0].length + delim1.length;
	var len2 = substr2[0].length;
	
	return myString.substring( len1, len1 + len2 );
}

function storeCookie(name, value, time) 
{
	var cookie = name + "=" + value + "; expires=" + expireDate(time);
	document.cookie = cookie;
}

function setCookie(name, value, time)
{
	storeCookie(name, value, time);
}

function getCookie(name)
{
	return extractSubstring(document.cookie, name + "=", ";")
}

function destroyCookie(name)
{
	var value = "";
	storeCookie(name, value, -100);
}

function compareCookie(name, compareValue)
{
    var value = getCookie(name);
    return (value == compareValue);
}