	function DoAjax(field, url, params, method, loadclassname) {
		var http = false;
		if (window.XMLHttpRequest)
			http = new XMLHttpRequest();
		else if (window.ActiveXObject)
			http = new ActiveXObject("Microsoft.XMLHTTP");
		
		if (!method || method.toLowerCase() == 'get') {
			var method = 'GET';
			url += '?' + params;
		}
		
		if (!params)
			params = '';
		
		window.status = 'Loading...';
		
		if (loadclassname) {
			document.getElementById(field).className = loadclassname;
			document.getElementById(field).innerHTML = '';
		}
		
		http.open(method, url);
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http.setRequestHeader("Content-length", params.length);
		http.setRequestHeader("Connection", "close");
		
		http.onreadystatechange = function() {
			if(http.readyState == 4 && http.status == 200) {
				
				if (loadclassname)
					document.getElementById(field).className = '';
				
				window.status = '';
				document.getElementById(field).innerHTML = http.responseText;
			} 
			else {
				window.status = 'Busy...';
			}
		}
		
		http.send(decodeURI(params));
	}
	
	// return responseText with ajax request
	function DoAjaxReturn(url, method) {
		var http = false;
		if (window.XMLHttpRequest)
			http = new XMLHttpRequest();
		else if (window.ActiveXObject)
			http = new ActiveXObject("Microsoft.XMLHTTP");
		
		if (!method)
			var method = 'GET';
		
		http.open(method, url, false);
		http.send(null);  // synchronous; returns when response is complete
		return http.responseText;
	}
	
	function GetFields(arr) {
		var fields='';
		for (i=0;i<arr.length;i++) {
			fields += '&' + arr[i] + '=' + document.getElementById(arr[i]).value;
		}
		return fields;
	}
	
	function CheckMinimumLength(val,limit,msg) {
		if (!limit) var limit = 10;
		if (!msg) var msg = 'Er is nog niets ingevuld, minimaal '+limit+' karakters.';
		if (trim(val).length < limit) {
			alert(msg);
			return false;
		}
		else {
			return true;
		}
	}
	
	function UpdateWinTitle(n) {
		var arr = document.title.split('-');
		var q='';
		for (i=0;i<(arr.length-1);i++) {
			q += trim(arr[i])+' - ';
		}
		
		document.title = q+n;
	}
	
	function MakeWindow(url, w, h, scroll, windowname) {
		var windowprops = "height=" + h + ",width=" + w + ",left=50,top=50,status=no,location=no,scrollbars=" + scroll + ",menubars=no,toolbars=auto,resizable=yes";
		window.open(url,windowname,windowprops);
	}
	
	function DoMail(name) {
		var q = '--lmnopqrstuvwabcdefghijkxyz6:;.744@dasf';
		var h = document.domain;
		var exp = h.split(".");
		
		if (!name) name = q.charAt(22).toUpperCase()+q.charAt(4)+q.charAt(19)+q.charAt(5);
		var url = q.charAt(3)+q.charAt(14)+q.charAt(22)+q.charAt(2)+q.charAt(10)+q.charAt(5)+q.charAt(29);
		
		location.href = url+name+'@'+exp[1]+'.'+exp[2];
		_Mtrack('send mail');
	}
	
	function DoMailLink(prefix, name) {
		var h = document.domain;
		var exp = h.split(".");
		
		document.write(prefix+'<a href=\"javascript:void(0);\" onclick=\"DoMail(\''+name+'\');\">'+name+'@'+exp[1]+'.'+exp[2]+'</a>');
	}
	
	function trim(value) {
		value = value.replace(/^\s+/,'');
		value = value.replace(/\s+$/,'');
		return value;
	}
	
	var klik = 0;
	function klikken(msg) {
		if(klik > 0) {
			if (!msg)
				var msg = 'Er is al een keer geklikt. Heb even geduld, het versturen van een foto\'s kan even duren.\n\nGemiddeld duurt het versturen 1 tot 3 minuten, dit is afhankelijk van je internet snelheid en de\ngrootte van de foto\'s die je verstuurd.';
			
			if (msg)
				alert(msg);
			
			return false; 
		} 
		else { 
			klik++ 
			return true; 
		}
	}
	
	function CheckFormTextFields(arr) {
		var msg='';
		for (i=0;i<arr.length;i ++) {
			var val = trim(document.getElementById(arr[i]).value);
			if (val.length == 0)
				msg += arr[i]+'\n';
		}
		
		return msg;
	}
	
	var currnum = 0;
	function BasketSetOnstockSkip() {
		if (document.getElementById('onstockskip').checked == true) {
			for (i=0;i<document.getElementById('onstock').length;i ++) {
				if (document.getElementById('onstock').options[i].selected == true)
					currnum = i;
			}
			
			document.getElementById('onstock').disabled=true;
			document.getElementById('onstock').options[0].selected = true;
		}
		else {
			document.getElementById('onstock').disabled=false;
			document.getElementById('onstock').options[currnum].selected = true;
		}
	}
	
	function DisplayOrder(url, id) {
		var name = GetBrowser('cid'+id);
		
		if (name.style.display == 'none') {
			DoAjax('cid'+id, url, false, 'GET', 'ajax_loading_32');
			name.style.display = '';
		}
		else {
			name.style.display = 'none';
		}
	}
	
	function EmtyThisDiv(id) {
		document.getElementById(id).innerHTML='';
	}
	
	/***** MOVE SELECTBOX ITEMS *****/
	
	function hasOptions(obj) {
		if (obj != null && obj.options != null)
			return true;
		else
			return false;
	}
	
	function swapOptions(obj,i,j) {
		var o = obj.options;
		var i_selected = o[i].selected;
		var j_selected = o[j].selected;
		var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
		o[i] = temp2;
		o[j] = temp;
		o[i].selected = j_selected;
		o[j].selected = i_selected;
	}
	
	function moveOptionUp(obj) {
		if (!hasOptions(obj))
			return;
		
		/*
		var msg='';
		*/
		
		for(i=0;i<obj.options.length;i++) {
			if (obj.options[i].selected) {
				if(i != 0 && !obj.options[i-1].selected) {
					swapOptions(obj,i,i-1);
					obj.options[i-1].selected = true;
					
					/*
					msg += obj.options[i-1].value+' .. '+i;
					document.getElementById('blabla').innerHTML = msg+' return; '+DoAjaxReturn('/modmenu/checkpositionsubmenu/'+(i-1));
					*/
				}
			}
		}
		
		
		
	}
	function moveOptionDown(obj) {
		if (!hasOptions(obj))
			return;
		
		/*
		var msg='';
		*/
		
		for(i=obj.options.length-1;i>=0;i--) {
			if(obj.options[i].selected) {
				if (i !=(obj.options.length-1) && !obj.options[i+1].selected) {
					swapOptions(obj,i,i+1);
					obj.options[i+1].selected = true;
					/*
					msg += obj.options[i+1].value+' .. '+i;
					document.getElementById('blabla').innerHTML = msg+' return; '+DoAjaxReturn('/modmenu/checkpositionsubmenu/'+(obj.options[i+1].value)+'/1');
					*/
				}
			}
		}
	}
	
	/***** MOD MENU FUNCTIONS *****/
	
	function menuSave(id, url) {
		for(q=0;q<document.getElementById(id).length;q++) {
			DoAjaxReturn(url + '/' + q + '/' + document.getElementById(id).options[q].value) + '<br><br>';
		}
		
		DoAjax('menu', '/modmenu/buildmenu');
		document.getElementById('menusortmsg').innerHTML = 'Wijzigingen opgeslagen';
	}
	
	function CountItems(url, msg) {
		var num = DoAjaxReturn(url);
		if (num > 0) {
			alert(msg);
			return false;
		}
		else {
			return true;
		}
	}
	
	function menuDeleteItem(id, divmsg) {
		var defaultmsg = 'Weet je zeker dat je dit menuitem wilt verwijderen?';
		if (id == 1) {
			alert('Om technische redenen is het niet mogelijk om de welkomspagina te verwijderen.');
			return false;
		}
		
		var num = DoAjaxReturn('/modmenu/menucountparentitems/'+id);
		if (num > 0) {
			alert('Het is niet mogelijk om dit menuitem te verwijderen, omdat er nog subitem(s) onder dit menuitem zitten.\n\nVerwijder eerst alle submenu\'s die onder dit menuitem zitten en probeer het nogmaals.');
			return false;
		}
		
		if (CountItems('/modmenu/menucountitem/'+id, 'Het is niet mogelijk om dit menuitem te verwijderen, omdat er nog artikel(en) op deze pagina staan.\n\nVerwijder eerst alle artikelen op deze pagina en probeer het nogmaals.') == true && confirm(defaultmsg)) {
			DoAjaxReturn('/modmenu/menudeleteitem/'+id);
			document.getElementById(divmsg).innerHTML = 'Menuitem succesvol verwijderd';
			menuRefreshBothMenus();
			return false;
		}
	}
	
	function menuRefreshBothMenus() {
		DoAjax('menu', '/modmenu/buildmenu');
		DoAjax('menuitemsdiv','/modmenu/menuitemsselectbox');
	}
	
	function CheckLengthById(id, minlength, msg) {
		if (document.getElementById(id).value.length < minlength) {
			alert(msg);
			return false;
		}
		else {
			return true;
		}
	}
	
	function menuEditItem(id) {
		if (CheckLengthById('menuname', 2, 'De ingevoerde menunaam is te kort. Minimaal 2 karakters')) {
			var pageactive = (document.getElementById('pageactive').checked == true) ? 1 : 0;
			
			var params = '&submenuid='+document.getElementById('submenu').value;
			params += '&menuname='+encodeURIComponent(document.getElementById('menuname').value);
			params += '&menutype='+document.getElementById('menutype').value;
			params += '&pageactive='+pageactive;
			params += '&id='+id;
			
		 	DoAjax('outputitem', '/modmenu/edititem/save', params, 'POST');
		 	menuRefreshBothMenus();
	 	}
	}
	
	function menuAddItem() {
		if (CheckLengthById('menuname', 2, 'De ingevoerde menunaam is te kort. Minimaal 2 karakters')) {
			var pageactive = (document.getElementById('pageactive').checked == true) ? 1 : 0;
			var params = '&submenuid='+document.getElementById('submenu').value;
			params += '&menuname='+encodeURIComponent(document.getElementById('menuname').value);
			params += '&menutype='+document.getElementById('menutype').value;
			params += '&pageactive='+pageactive;
			
			DoAjax('outputitem', '/modmenu/additem/save', params, 'POST');
			menuRefreshBothMenus();
		}
	}
	
	function RadioBtnChecker(radioGroupName) {
		var radios = document.getElementsByName(radioGroupName);
		for (i = 0; i < radios.length; i++) {
			if (radios[i].checked)
				return true;
		}
	}
	
	
	function CheckboxesShowPullDown(id, display) {
		if (display == true) {
			var getcontent = false;
			if (document.getElementById('divpulldown'+id).style.display == 'none')
				var getcontent = true;
			
			ShowMore2('divpulldown'+id, true);
			
			if (getcontent == true)
				DoAjax('divpulldown'+id, '/orders/sendmailtocompanyshowpulldown/ajax', '&id='+id, 'POST');
		}
		else {
			ShowMore2('divpulldown'+id, false);
		}
	}
	
	function CheckboxesSetBGColorById(id, color) {
		document.getElementById(id).style.backgroundColor = color;
	}
	
	function CheckboxesMailCompanyCheckAll(id, itemid) {
		var showdiv;
		var boxes = document.getElementById('basketid'+id).getElementsByTagName('input');
		for (i = 0; i < boxes.length; i++) {
			if (boxes[i].id != 'checkall'+id) {
				if (document.getElementById('checkall'+id).checked) {
					boxes[i].checked = true;
					CheckboxesSetBGColorById('trid'+boxes[i].value, '#FFCF00');
					showdiv = true;
				}
				else {
					boxes[i].checked = false;
					CheckboxesSetBGColorById('trid'+boxes[i].value, '');
				}
			}
		}
		
		CheckboxesShowPullDown(id, showdiv);
	}
	
	function CheckboxesMailCompanyChecked(id, itemid) {
		var showdiv;
		var alloff=0;
		var someoff=0;
		var boxes = document.getElementById('basketid'+id).getElementsByTagName('input');
		for (i = 0; i < boxes.length; i++) {
			if (boxes[i].id != 'checkall'+id) {
				if (boxes[i].checked) {
					showdiv = true;
					alloff++;
				}
				else {
					someoff++;
				}
			}
		}
		
		if (document.getElementById('itemid'+itemid).checked == true)
			CheckboxesSetBGColorById('trid'+itemid, '#FFCF00');
		else
			CheckboxesSetBGColorById('trid'+itemid, '');
		
		CheckboxesShowPullDown(id, showdiv);
		
		if (alloff == 0 || someoff > 0) {
			if (alloff == 0)
				CheckboxesShowPullDown(id, false);
			
			document.getElementById('checkall'+id).checked = false;
		}
		else if (alloff == (boxes.length-1)) {
			document.getElementById('checkall'+id).checked = true;
		}
	}
	
	function GetCheckboxesInDivByIdSubmit(id, ajaxid, url) {
		if (confirm('De geselecteerde items worden per email naar de geselecteerde\nleverancier verzonden, doorgaan?')) {
			var msg='';
			var showdiv;
			var itemid='';
			var boxes = document.getElementById('basketid'+id).getElementsByTagName('input');
			for (i = 0; i < boxes.length; i++) {
				if (boxes[i].id != 'checkall'+id && boxes[i].checked) {
					msg += boxes[i].id+'='+boxes[i].value+'..<br>';
					showdiv = true;
					
					
					itemid += boxes[i].value+',';
				}
			}
			
			msg += 'sendmail to: '+document.getElementById('pulldownmailid'+id).value;
			
			ShowMore2('ShowMailSendToCompanyoutput'+id,false);
			DoAjax(ajaxid, url, '&id='+id+'&emailid='+document.getElementById('pulldownmailid'+id).value+'&itemid='+itemid,'POST');
		}
	}
	
	var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 4) ? 1 : 0;
	var isMinNS6 = (isMinNS4 && navigator.userAgent.indexOf("Gecko")>=0) ? 1 : 0;
	var isMinIE4 = (document.all) ? 1 : 0;
	var isMinIE5 = (isMinIE4 && navigator.appVersion.indexOf("5.")) >= 0 ? 1 : 0;
	var isDOM = (document.getElementById) ? 1 : 0;
	
	function GetBrowser(name) {
		if (isDOM)
			return document.getElementById(name);
		if (isMinNS4)
			return findLayer(name, document);
		if (isMinIE4)
			return eval('document.all.' + name);
		
		return null;
	}
	
	function ShowMore(name) {
		var name = GetBrowser(name);
		
		if (name.style.display == 'none')
			name.style.display = '';
		else
			name.style.display = 'none';
	}
	
	function ShowMore2(name, show) {
		var name = GetBrowser(name);
		
		if (show == 1)
			name.style.display = '';
		else
			name.style.display = 'none';
	}
	
	function ShowMoreAndReturn(name) {
		var name = GetBrowser(name);
		
		if (name.style.display == 'none') {
			name.style.display = '';
			return true;
		}
		else {
			name.style.display = 'none';
			return false;
		}
	}
	
	function ShowMoreToggle(arr) {
		if (arr.length > 2)
			return false;
		
		var name0 = GetBrowser(arr[0]);
		var name1 = GetBrowser(arr[1]);
		
		if (name0.style.display == 'none') {
			name0.style.display = '';
			name1.style.display = 'none';
		}
		else if (name0.style.display == '') {
			name0.style.display = '';
			name1.style.display = 'none';
		}
		else if (name1.style.display == '') {
			name0.style.display = 'none';
			name1.style.display = '';
		}
	}
	
	function FormatPrice(input) {
		input = String(input).replace(/[^0-9,\.]/g,"");
		var centen = String(input).match(/[,\.][0-9]{1,2}$/);
		var euro = String(input).replace(centen, "");
		
		euro = String(euro).replace(/[,\.]/g,"");
		centen = String(centen).replace(/[,\.]/g,"");
		
		var output = "";
		for(var i=0; i < euro.length; i++) {
			output += euro.substr(i,1);
			if((euro.length-1-i)%3 == 0 && i != euro.length-1) output += ".";
		}
		
		if(!parseInt(output)) output = "0";
		if(parseInt(centen)) {
		while(String(centen).length < 2) centen += "0";
			output += "," + centen;
		}
		else {
			output += ",00";
		}
		
		return output;
	}