	
	
	//XML & XSLT
	//xml IE en anderen
	var xmlHttp;
	var xmlString;
	var xml;
	var xsl;
	//IE			
		
	//xml IE
	
	//xsl
	//xslt processor	
	var xmlDocu,ObjXSLT,objCache,xslDocu;
	var mySort,myParameter,mySortDataType;
	
	//IE && !IE
	var xsltProcessor;
	
	//IE
	var objCache;
	
	//!IE
	var xmlDom;
	var xslDom;
		
	function isIE() {		
		return (document.all != null);
	}
		
	function getXSLTProcessor() {
		if(isIE()) {
			if(xsltProcessor == null) {								
				xsltProcessor = objCache.createProcessor();
			}
		}
		else {
			if(xsltProcessor == null) {
				xsltProcessor = new XSLTProcessor();
			}
		}
		return xsltProcessor;
	}
	
	function loadXslStyleSheet(objXsl) {
		if(isIE()) {
			objCache = new ActiveXObject("Msxml2.XSLTemplate.5.0");
			objCache.stylesheet = objXsl;
			getXSLTProcessor();			
		}
		else {					
			getXSLTProcessor().importStylesheet(objXsl);
			//alert(xsltProcessor+" "+objXsl);	
		}
	}
	
	function getDomObject() {
		var objDOM;	
		if (isIE()) {
			try {				
				var dom_objects = [
					"Msxml2.DOMDocument.6.0",
					"Msxml2.DOMDocument.5.0",
					"Msxml2.DOMDocument.4.0",
					"Msxml2.DOMDocument.3.0", 
					"MSXML2.DOMDocument"];
				for(var i=0; i <dom_objects.length; i++) {
					try {
						objDOM = new ActiveXObject(dom_objects[i]);						
					}
	  				catch (error) {
	  					//alert(error);
	  				}
				}
			}
			catch(e) {							
				//alert("Could not make a DOM object: "+e);
				objDOM = null;
			}		
		} 
		else {	
			objDOM = new XMLDocument();
		}
		
		if (objDOM) {
			objDOM.async = false;
		}
		return objDOM;
	}
	
	//create a new http request	
	function GetXmlHttpObject() {
		var xmlHttp = null;
		try {			
			xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari			
		}
		catch (e) { // Internet Explorer
			var ie_versions = 	[
				"MSXML2.XMLHttp.5.0",
				"MSXML2.XMLHttp.4.0",
				"MSXML2.XMLHttp.3.0",
				"MSXML2.XMLHttp",
				"Microsoft.XMLHttp"];			
			for(var i=0; i <ie_versions.length; i++) {
				try {
	    			xmlHttp = new ActiveXObject(ie_versions[i]);
	  			}
	  			catch (error) {
	  				//alert(error);
	  			}
			}
		}
		return xmlHttp;
	}
	
	//create a new dom document and load an xml file
	function loadXMLDocument(url) {
		var xmlDoc;
		
		try { 	//Internet Explorer
			xmlDoc = getDomObject();
			//xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		}
		catch(e) {	  		
		  	try { //Firefox, Mozilla, Opera, etc.
		    	xmlDoc = document.implementation.createDocument("","",null);
		    }
		  	catch(e) {
		   		//alert("error in loadXMLDocument="+e.message);
		   		return;
		   	}
	 	}
		xmlDoc.async = false;
		xmlDoc.load(url);		
		
		return xmlDoc;
	}
	
	//load xml as text 	
	function loadXMLString(txt) {
		var xmlDoc;
		try { //Internet Explorer
	  		xmlDoc = getDomObject();
	  		xmlDoc.async = true;	
			xmlDoc.loadXML(txt);
			  		
		  	//alert("error code "+xmlDoc.parseError.errorCode);// document.getElementById("error").innerHTML = "Error code: " + xmlDoc.parseError.errorCode;
			//alert("parse error code "+xmlDoc.parseError.reason);//document.getElementById("error").innerHTML = "<br />Error reason: " + xmlDoc.parseError.reason;
			//alert("error in line "+xmlDoc.parseError.line);//document.getElementById("error").innerHTML = "<br />Error line: " + xmlDoc.parseError.line + " txt="+txt;
		  	//alert(txt)		
		  	return(xmlDoc); 
		}
		catch(e) {
	  		try { //Firefox, Mozilla, Opera, etc.	   
	    		var parser = new DOMParser();
	    		xmlDoc = parser.parseFromString(txt,"text/xml");
	    		return(xmlDoc);
	    	}
	  		catch(e) {
	  			alert("error"+e.message);
	  		}
	  	}
		return(null);
	}
		
	function transformXMLbyXSL(xmlDoc,xslDoc,resultNode) {
		if(isIE()) {        
        	var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
			xslDocu = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
			var xslProc;
			xslDocu.async = false;
			xslDocu.load(xslDoc);
			if (xslDocu.parseError.errorCode != 0) {
				var myErr = xslDoc.parseError;
//				alert("Stylesheet error: " + myErr.reason);
			}
			else {
				xslt.stylesheet = xslDocu;
   				xmlDocu = new ActiveXObject("Msxml2.DOMDocument.5.0");
   				xmlDocu.async = false;
   				xmlDocu.load(xmlDoc);
				if (xmlDocu.parseError.errorCode != 0) {
					var myErr = xmlDocu.parseError;
//					alert("Document error: " + myErr.reason);
				} 
				else {      			
      				objXSLT = new ActiveXObject('MSXML2.FreeThreadedDOMDocument.5.0');
        			objXSLT.async = false;
        			objXSLT.load(xslDocu);
    		
        			if(xsltProcessor == null) {
						loadXslStyleSheet(objXSLT);
					}
		
    				xsltProcessor.input = xmlDocu;
        	
		        	if(mySort == null) {
						mySort = "ascending";
						xsltProcessor.addParameter("mySort",mySort, "");												
					}
					if(mySortDataType == null) {
						mySortDataType = "text";		
						xsltProcessor.addParameter("mySortDataType",mySortDataType,"");							
					}
		        	if(myParameter == null) {
						myParameter = "brand";										
						xsltProcessor.addParameter("myParameter",myParameter,"");	
					}
	
	     		 	xsltProcessor.transform();
	     		 	document.getElementById(resultNode).innerHTML = xsltProcessor.output;
				}
			}		
		}		
		else {			
			var resultDocument = null;
			//alert("xsltProcessor1="+xsltProcessor);
			if(xsltProcessor == null) {
				loadXslStyleSheet(xslDoc);
			}			
			//alert("xsltProcessor2="+xsltProcessor);

			if(mySort == null) {
				mySort = "ascending";
				xsltProcessor.setParameter(null,"mySort",mySort);				
			}
			if(myParameter == null) {
				myParameter = "brand";		
				xsltProcessor.setParameter(null,"myParameter",myParameter);					
			}
    		if(mySortDataType == null) {
				mySortDataType = "text";
				xsltProcessor.setParameter(null, "mySortDataType",mySortDataType);				
			}
			
			resultDocument = xsltProcessor.transformToFragment(xmlDoc,document);						
			//resultDocument = xsltProcessor.transformToDocument(xmlDoc,document);
			document.getElementById(resultNode).innerHTML = "";
			document.getElementById(resultNode).appendChild(resultDocument);
		}		
	}
	
	function sort(parameter,psortdatatype,pvalue) {		
		if(isIE()) {
      		loadXslStyleSheet(objXSLT);

      		if(myParameter==pvalue) {      	
		      	if(mySort == "ascending") {
		      		mySort = "descending";
		      		xsltProcessor.addParameter("mySort",mySort,"");      		
		      	}
		      	else {
		      		mySort = "ascending";
		      		xsltProcessor.addParameter("mySort",mySort,"");      		
		      	}
	      	}
			else {
				xsltProcessor.addParameter(parameter,pvalue,"");
				myParameter = pvalue;
				xsltProcessor.addParameter("mySortDataType",psortdatatype,"");
				mySortDataType = psortdatatype;
			}
			xsltProcessor.transform();
			document.getElementById("div_results").innerHTML = xsltProcessor.output; 
		}
		else {				
			if(myParameter==pvalue) {								
				if(mySort == "ascending") {
					mySort = "descending";
					xsltProcessor.setParameter(null, "mySort", mySort);					
				}
				else {
					mySort = "ascending";
					xsltProcessor.setParameter(null, "mySort", mySort);					
				}
			}
			else {
				xsltProcessor.setParameter(null, parameter, pvalue);
				myParameter = pvalue;
				xsltProcessor.setParameter(null, "mySortDataType", psortdatatype);
				mySortDataType = psortdatatype;				
			}							
			resultDocument = xsltProcessor.transformToFragment(xml,document);									
			document.getElementById("div_results").innerHTML = "";
			document.getElementById("div_results").appendChild(resultDocument);	
		}
	}

	function reloadPage() {
		window.location.reload();
	}

	function changeLanguage(lang) {
		xmlHttp = GetXmlHttpObject();		
		if(xmlHttp !=null) {
			var url = "/changeLanguage.php?languageChanged="+lang+"&sid="+Math.random();		
			xmlHttp.onreadystatechange=languageReady 
			xmlHttp.open("GET",url)
			xmlHttp.send(null);			
		}	
	}
	
	function languageReady() { 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
			reloadPage();
		} 
	}			
	
	function toonmenu(elmnt) {
		document.getElementById(elmnt).style.visibility="visible";
	}
	
	function verstopmenu(elmnt) {
		document.getElementById(elmnt).style.visibility="hidden";
	}
	
	function update(elmt) {
		document.getElementById(elmt).submit();
	}

	function update() {		
		document.form1.submit();	
	}
	
	function login() {
		document.form2.submit();	
	}
	
	function mySpeakerstore() {
		document.form3.submit();
	}
	
	function signout() {
		document.form4.submit();
	}
	
	function MM_preloadImages() { //v3.0
		var d=document; 
		if(d.images) { 
			if(!d.MM_p) {
				d.MM_p=new Array();
			}
			
			var i,j=d.MM_p.length, a=MM_preloadImages.arguments; 
			
			for(i=0; i<a.length; i++) {
				if (a[i].indexOf("#")!=0){ 
					d.MM_p[j]=new Image; 
					d.MM_p[j++].src=a[i];
				}
			}
		}
	}

	function displayInline(id) {
		document.getElementById(id).style.display="inline";
	}
				
	function updateDropDownList(node) {
		loading(true);
		xmlHttp = GetXmlHttpObject();
		if(xmlHttp !=null) {					
			var url = "/searchproductfunctions.php?id="+node.id+"&value="+node.value+"&sid="+Math.random();					
			xmlHttp.onreadystatechange=setOptions; 
			xmlHttp.open("GET",url,true)
			xmlHttp.send(null);	
		}		
	}

	function setOptions() {				
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") { 			
			xmlDocument = loadXMLString(xmlHttp.responseText);						
			var x = xmlDocument.getElementsByTagName("parameter");
						
			for(i = 0; i < x.length; i++) {
				p = x[i].getAttribute("id");
				var childNodesLength = x[i].childNodes.length;			
				clearDropDownBox(p);			 		
				var sel;
				for(j = 0; j < childNodesLength; j++) {
					sel = 0;
					var textContent;
					if(isIE()) {
						textContent = x[i].childNodes[j].text;					
					}
					else {
						textContent = x[i].childNodes[j].textContent;					
					}				
					if(x[i].childNodes[j].getAttribute("sel")) {
						if(x[i].childNodes[j].getAttribute("sel") == 1) {
							sel = 1;
						}
					}								
					insertOption(p, x[i].childNodes[j].getAttribute("value"), textContent,sel);								
				}
			}
			loading(false);						
		}
	}		

	function insertOption(selectNode,strValue,strText,strSel) {
		var dropdownlist = document.getElementById(selectNode);
		if(dropdownlist) {
			var opt = document.createElement("option");
			opt.text= strText;
			opt.value = strValue;		
			if(strSel==1) {
				opt.selected = true;
			}
			if(isIE()) {
				dropdownlist.add(opt); // IE only			
			}
			else {
				dropdownlist.add(opt,null); // standards compliant			
			}
		}
	}
	
	function clearDropDownBox(node) {
		dropdownlist = document.getElementById(node);
		if(dropdownlist) {
			while(dropdownlist.length > 0) {
				removeLastOption(node);
			}			
		}				
	}
	
	function removeOption(node,index) {
		var x = document.getElementById(node);
		x.remove(index);
	}
	
	function removeLastOption(element) {
		var x=document.getElementById(element);
		if (x.length > 0) {
  			x.remove(x.length-1);
  		}
	}
	
	function chkInit() {    				
		if (typeof init == 'function') {        
			init();    
		}
		loading(false);		
	}	
	
	function loading(bool) {
		var divL = document.getElementById('divLoad');
		var objIMG = document.getElementById('img_loading')
		if(bool) {
			document.body.style.cursor = "wait";
			objIMG.style.visibility="visible";
		}
		else {
			document.body.style.cursor = "auto";
			objIMG.style.visibility="hidden";
		}										
	}
		
	function showHand(node) {		
		document.getElementById(node).style.cursor= "pointer";
	}

	function showHelp(node) {
		document.getElementById(node).style.cursor= "help";
	}
	
	function retrieveSimpleProductList() {
	
	}
