// Zoekmenu object
var zoekmenu	= null;
// Winkelwagen object
var winkelwagen	= null;
// lijsten van zoekmenu vullen zodra het document geladen is
window.addEvent('domready', function(){
	// Query string uitlezen
	var qs = query_string();
	
	// Voorraad check als de gebruiker op de pagina van een artikel is
	if($('artikel_id') && $('artikel_id').get('tag') == 'div') {
		voorraad_check(parseInt($('artikel_id').get('text')));
	}
	
	var toon_winkelwagen = true;
	if(document.location.pathname.match('^\/shop\/winkelwagen') || document.location.pathname.match('^\/shop\/kassa')) {
		toon_winkelwagen = false;
	}
	
	var isKassa = false;
	if(document.location.hostname == 'kassa.depoort.nl') {
		isKassa = true;
		if($('winkelwagen_afrekenen')) {
			var a = $('winkelwagen_afrekenen').getElement('a');
			if(a) {
				a.setProperty('href', '/shop/kassa');
			}
		}

		if($('topmenu')) {
			var div = $('topmenu').getElement('div.inline_right');
			if(div) {
				div.dispose();
			}
		}
		
		if(!toon_winkelwagen) {
			var title = new Element('div', {
				styles: {
					position: 'absolute',
					right: '-440px',
					top: (Browser.firefox ? '-10px' : '35px'),
					'text-align': 'right'
				}
			});
			title.set('html', '<h1 style="font-size:70px;color:#990000;">Kassa</h1>');
			title.inject($('header_click'));
		}
		
		// Overschrijf de add methode van WinkelWagenClass
		// om zo het gedrag van de toevoeg knop te beinvloeden
		WinkelWagenClass.implement({
			add: function(id) {
				var q = 'quantity_' + id;
				var quantity = 1;
				if($(q)) {
					quantity = $(q).getProperty('value');
				}

				var form = new Element('form', {
					action: '/shop/kassa',
					method: 'post',
					styles: {
						display: 'none'
					}
				});
				
				var actie = new Element('input', {
					type: 'hidden',
					name: 'artikel_id',
					value: id
				});
				actie.inject(form);
				
				var aantal = new Element('input', {
					type: 'hidden',
					name: 'aantal',
					value: quantity
				});
				aantal.inject(form);
				
				form.inject($(document.body));
				form.submit();
			}
		});
	}
	
	var velden = new Array();
	// De kolommen in de tabel van de winkelwagen
	velden.push(Array('aantal', null, 'x', false));
	velden.push(Array('omschrijving_kort', null, null, false));
	velden.push(Array('fnct_remove', 'x', null, false));
	
	// WinkelWagenClass object aanmaken
	winkelwagen = new WinkelWagenClass('winkelwagen_header','winkelwagen','winkelwagen_img','Inhoud winkelwagen: ','U heeft geen artikelen<br>in uw winkelwagen',velden, Array('toegevoegd','verwijderd'), toon_winkelwagen, false);

	// ZoekMenuClass object aanmaken
	zoekmenu = new ZoekMenuClass('form1','form1_submit','zoek_groep','zoek_categorie','zoek_merk', true);

	// Ajax url aanpassen. Zoeken wordt zowel in dp_shop als dp_content gebruikt
	zoekmenu.ajax_url = 'http://' + document.location.hostname + '/cms/dp_shop.php';

	// Reset zoekmenu op de hoofdpagina
	if(document.location.pathname == '/shop.html') {
		// First time resetten zodat het formulier niet wordt gesubmit
		zoekmenu.first_time = true;
		// Zoekterm resetten
		$('zoekwoord').setProperty('value', '');
		//var auto_submit = zoekmenu.auto_submit;
		//zoekmenu.auto_submit = false;
		// Data resetten
		zoekmenu.resetData();
	}
	
	new OverText($('zoekwoord'), {wrap: true, poll: true});

	// Uit te voeren actie als er op de reset knop gedrukt wordt
	$('form1_reset').addEvent('click', function() {
		// reset knop disablen
		$('form1_reset').setProperty('disabled', 'true');
		// Zoekveld legen
		$('zoekwoord').setProperty('value', '');
		// Data resetten en na afloop reset knop aan zetten
		var func = function() {
			$('form1_reset').setProperty('disabled', '');
		};

		// Overload de submitForm functie. Bij het resetten van het
		// formulier moeten we terug gestuurd worden naar de hoofdpagina
		ZoekMenuClass.implement({	// Deze functie wordt pas na zoekmenu.resetData() uitgevoerd
			submitForm:	function() {
				// Nieuw hidden element toevoegen die er voor zorgt dat we naar de juiste pagina worden doorverwezen
				new Element('input',{type: 'hidden',name: 'redirect_url',value: (isKassa ? '/shop/kassa' : '/shop.html')}).inject($('form1'));
				$(this.id_submit_button).click();
			}
		});
					
		// Data resetten
		zoekmenu.resetData(func);
	});
	
	// Maakt het linker gedeelte van de header klikbaar
	$('header_click').addEvent('click', function() {
		location.href = '/shop.html';
	});

	// Titel en totale kosten uit tabel en winkelwagen object halen en dat updaten in de titel
	var func_toon_winkelwagen = function() {
		$('winkelwagen_titel_text').set('text', winkelwagen.titel);
		if($('winkelwagen_div_prijs_span')) {
			$('winkelwagen_titel_prijs').set('text', $('winkelwagen_div_prijs_span').get('text'));
		}
	};
	func_toon_winkelwagen.periodical(250);
	func_toon_winkelwagen();
	
	artikel_omschrijving();

    kassa();

	if(qs['order_url'] && $('bestelling_voltooid_order_url')) {
		var url = decodeURIComponent(qs['order_url']);
		if(url.match(/^http:\/\/(www\.|kassa\.|test2\.)?depoort\.nl/)) {
			$('bestelling_voltooid_order_url').set('html', 'Indien gewenst kunt u uw <a href="'+url+'">bestelling</a> ook via onze website nakijken.');
		}
	}
	
	// Maak CMS link
	// Dit moet voor IE(8) eventjes gedelayed worden omdat deze domready niet correct in acht neemt...
	(function() {
		if($('cmslink')) {
			$('cmslink').setStyle('cursor', 'pointer');
			$('cmslink').addEvent('click',	function() {
				var extra = '';
				// Vanaf een artikel pagina direct naar de editor gaan
				if($('artikel_id')) {
					extra = '&extra[id]=434&extra[soort]=webwinkel&extra[url_main]=' + encodeURIComponent('/admin/webwinkel/artikelenedit_algemeen.php?id=434&record=' + $('artikel_id').get('text'));
				}
				window.open('http://cms.depoort.nl/index.php?id=12'+extra,'CMS','status=no,toolbar=no,width=300,height=120');
			});
		}
	}).delay(100);
});

// Doe een voorraad check bij een artikel en toon de status
function voorraad_check(artikel_id) {
	var request = new Request.JSON({
		url: '/cms/voorraad.php?id=' + artikel_id, method: 'get',
		autocancel: true,
        noCache: true,
		onSuccess: function(data) {
			if(data.availability && data.availability > 0) {
				$('voorraad').set('text', 'Voorraad: ' + parseInt(data.availability));
                if(data.plantid != 'NL01') {
                    $('voorraad').set('text', $('voorraad').get('text') + ' (levertijd 3-5 werkdagen)');
                }
                else {
                    $('voorraad').set('text', $('voorraad').get('text') + ' (levertijd 24-uur)');
                }
			}
            else if(data.etadate && data.etadate != '01-01-1970') {
                $('voorraad').set('text', 'Voorraad: 0, wordt ' + data.etadate + ' verwacht');
            }
            else {
                $('voorraad').set('text', 'Voorraad: 0');
            }
		}
	}).send();
}

// Formateer artikel omschrijving
function artikel_omschrijving() {
	// Indien omschrijving_lang aanwezig dan de tekst formateren
	if($('omschrijving_lang')) {
		// Haal text uit DIV element.
		var txt = $('omschrijving_lang').get('text');
		// De regels in het DIV element zijn met een <br>\n gescheiden
		// dit formaat moet omdat IE \n|\r|\r\n niet ziet en FireFox
		// alleen <br> weer negeert
		var strs = txt.split(/\r\n|\n/i);
		var br = new Element('br');
		
		// Maximaal aantal regels
		var max_aantal_regels = 5;
		var aantal_regels = 0;
		// Maximaal aantal_regels met 60 tekens per regel
		var maxchars = max_aantal_regels * 50;
		
		// Bereken hoeveel regels getoond kunnen worden
		var afkorten = false;
		var afkort_teller = 0;
		var i = 0;

		// Lengte van de regels controleren
		while(afkort_teller < maxchars && i < strs.length && aantal_regels <= max_aantal_regels) {
			afkort_teller += strs[i].length;
			// Aantal regels optellen zolang limiet nog niet is berijkt
			aantal_regels += 1;
			i++;
		}

		// Afkorten indien er meer dan 1 regel is
		if(aantal_regels > 0) {
			afkorten = true;
		}
		
		// Verwijder oorspronkelijke tekst
		$('omschrijving_lang').set('text', '');

		if(afkorten) {
			var teller  = 0;
			// blok waar de rest van de omschrijving in komt
			var meer = new Element('div', {
				id: 'omschrijving_lang_meer',
				styles: {
					display: 'none'
				}
			});

			// Elke regel bij langs gaan
			strs.each(	function(str) {
				// Indien teller onder het minimum dan tekst in eerste blok toevoegen
				if(teller < aantal_regels) {
					$('omschrijving_lang').set('html', $('omschrijving_lang').innerHTML + str);
					$(br).inject($('omschrijving_lang'));
				}
				
				// Indien teller gelijk aan minimum dan de "meer" link toevoegen
				// Als dit de laatste regel is dan niet toevoegen
				if(teller == aantal_regels) {
					// De "meer" link maken.
					var meer_link = new Element('a', {
						id: 'omschrijving_lang_link_meer',
						// Toon bij klikken de overige content
						events: {
						click: function() {
							$(meer).setStyle('display','inline');
							this.setStyle('display','none');
							}
						},
						styles: {
						  cursor: 'pointer',
						  float: 'right'
						}
					});
					$(meer_link).set('text', ' >>> Meer');
					$(meer_link).inject($('omschrijving_lang'));
				}

				// Indien teller over het minimum dan tekst in 2e blok plaatsen
				if(teller >= aantal_regels) {
					$(br).inject($(meer));
					$(meer).set('html',  $(meer).innerHTML + str);
				}
				teller++;
			});

			// Maak een "minder" link
			var minder_link = new Element('a', {
				id: 'omschrijving_lang_link_minder',
				events: {
					// Verberg de overige content
					click:	function() {
						$(meer).setStyle('display','none');
						$('omschrijving_lang_link_meer').setStyle('display','inline');
					}
				},
				styles:	{
					cursor: 'pointer',
					float: 'right'
				}
			});

			// Stel text in voor minder link
			$(minder_link).set('text', ' <<< Minder');
			// Plaats minder link in blok
			$(minder_link).inject($(meer));
			// Plaats meer tekst in blok
			$(meer).inject($('omschrijving_lang'));
		} else {
			strs.each(function(str) {
				$(br).inject($('omschrijving_lang'));
				$('omschrijving_lang').set('html',  $('omschrijving_lang').innerHTML + str);
			});
		}
	}
}

// Basis dialoog verkrijgen met masker over content
function get_masked_dialog_base() {
	if($('mask')) {
		$('mask').dispose();
	}
	
	$('content_div').mask({
		id: 'mask',
		// IE8 fix
		style: {
			height: '100%',
			width: '100%'
		}
	});
	var dialog = new Element('div', {
		styles: {
			position: 'relative',
			top: 0,
			left: 0,
			'z-index': 1000
		}
	});
	return dialog;
}

function kassa() {
	kassa_add_row();
    kassa_scanner();
	kassa_debiteur_keuze();

    if($('kassa_table')) {
        $$('input[name^=txtAantal]').addEvent('change', function(e) {
            $('Update').send();
        });
    }
}

// Mogelijkheid om eigen artikel regels aan kassa toe te voegen
function kassa_add_row() {
	if($('kassa_add_row')) {
		$('kassa_add_row').addEvent('click', function(e) {
			e.stop();
			var dialog = get_masked_dialog_base();
			dialog.set('load', {
				onComplete: function() {
					dialog.getElement('strong.dialog_titel').set('text', 'Artikel regel toevoegen');

					var content = dialog.getElement('td.dialog_content');
					content.set('load', {
						onComplete: function() {
							content.getElements('input').addEvent('focus', function(e) {
								this.select();
							});
							// onChange event gebruiken i.v.m. IE - Deze behoud on onKeyup de selectie niet
							// wanneer er met tab gewisseld wordt.
							content.getElement('input[name=artikel_aantal]').addEvent('change', function(e) {
								this.set('value', this.get('value').replace(/[^\d]/g, ''));
							});
							content.getElement('input[name=artikel_prijs]').addEvent('change', function(e) {
								this.set('value', this.get('value').replace(/[^\d|\.|,]/g, ''));
							});
							content.getElement('input[name=artikel_id]').set('value', 'custom_' + Date.now());
							
							// BTW Tarieven opvragen en in de lijst plaatsen
							var jsonRequest = new Request.JSON({
								url: "/cms/dp_shop.php?rest=1&fmt=json",
								onSuccess: function(btwtarieven){
									var sel = content.getElement('select[name=artikel_btw]');
									Object.each(btwtarieven.btwtarieven, function(item, index, object) {
										if(index.match(/^key_\d+/)) {
											var option = new Element('option', {
												value: item.tarief,
												text: item.tarief + ' (' + item.titel + ')'
											});
											option.inject(sel);
										}
									});
									if(sel.options.length > 1) {
										sel.getParent('tr').setStyle('display', '');
									}
								}
							}).get({method: 'btwtarieven'});

						}
					});
					content.load('/templates/shop_kassa_losse_regel.html?' + Date.now());
					
					dialog.getElement('img.dialog_btn_cancel').addEvent('click', function(e) {
						$('content_div').unmask();
						dialog.dispose();
					});
					
					dialog.getElement('img.dialog_btn_ok').addEvent('click', function(e) {
						var inputs = content.getElements('input');
						var isOK = true;
						content.getElements('input').each(function(item, index) {
							if(item.get('value').length == 0) {
								isOK = false;
							}
						});
						
						if(isOK) {
							// formulier verzenden. Bij onComplete/onSuccess doorverwijzen!
							content.getElement('#frm_losse_regel').submit();
						}
						else {
							alert('Er ontbreken gegevens. Vul alle velden in.');
						}
					});
				}
			});
			dialog.load('/templates/shop_dialog.html?' + Date.now());
			dialog.inject($('mask'), 'after');
		});
	}
}

function kassa_scanner_input_event(barcode_input) {            
    if(Browser.ie) {
        barcode_input.addEvent('keydown', function(e) {
            if(e.key == 'enter') {
                try {
                    this.blur(); // Resulteert in een waarschuwing in IE8
                    this.focus();
                }
                catch(e) { }
            }
        });
    }
}

function kassa_scanner() {
	if($('formScanner')) {
		var barcode = $('formScanner').getElement('input[name=barcode]');
		var artikel_id = $('formScanner').getElement('input[name=artikel_id]');

		if(barcode && artikel_id) {
			barcode.focus();
			
			// Voorkom dat de scanner het formulier al submit als de JSON Request
			// nog geen artikelnummer heeft kunnen verkrijgen. Voorkomt tevens
			// dat niet bestaande artikelen worden toegevoegd
			$('formScanner').addEvent('submit', function(e) {
				if(artikel_id.get('value').length == 0) {
					e.stop();
				}
			});
			
			var jsonRequest = new Request.JSON({
				url: "/cms/dp_shop.php?rest=1&fmt=json",
                noCache: true,
                link: 'cancel',
                onCancel: function() {
                    $('barcodeMessage').setStyle('display', 'none');
                    barcode.set('value', '');
                    barcode.focus(); 
                },
                onRequest: function() {
                    $('kassa_artikel_zoekresultaat').empty();
                },
				onSuccess: function(r){
                    $('barcodeMessage').setStyle('display', '');
                    if(r && r.artikelBarcodeSearchExtended.response) {
                        if(r.artikelBarcodeSearchExtended.response == -1) {
                            $('barcodeMessage').set('text', 'Er is een onbekende fout opgetreden!');
                        }
                        else if(r.artikelBarcodeSearchExtended.response == 0) {
                            $('barcodeMessage').set('text', 'Artikel "' + barcode.get('value') + '" niet gevonden!');
                            barcode.set('value', '');
                        }
                        else {
                            artikel_id.set('value', r.artikelBarcodeSearchExtended.response);
                            $('formScanner').submit();
                        }             
                    }
                    else if(r && r.artikelBarcodeSearchExtended) {
                        var table = new HtmlTable({
                            headers: ['', 'Artikel.nr.', 'Omschrijving', 'Prijs incl.'],
                            zebra: true,
                            selectable: true,
                            useKeyboard: false,
                            allowMultiSelect: false,
                            properties: {
                                border: 1,
                                cellpadding: 3,
                                width: '99%',
                                'class': 'commontable htmltable'
                            },
                            onRowFocus: function(tr) {
                                artikel_id.set('value', tr.retrieve('artikel-data').artikel_id);
                                $('formScanner').submit();
                            }
                        });
                        Object.each(r.artikelBarcodeSearchExtended, function(item, index) {
                            if(index != 'status') {
                                var row = table.push([
                                    {content:item.barcode.length > 0 ? '<img src="/layout/shop/images/barcode.gif" width="26" height="18" alt="[barcode]" title="'+item.barcode+'" />' : '<img src="/layout/shop/images/barcode-scanner.gif" width="25" height="18" alt="[barcode scanner]" title="Barcode nog niet aanwezig" />', properties: {align: 'center'}},
                                    item.artikelnummer,
                                    item.merknaam.concat(' ', item.omschrijving_kort),
                                    new Number(item.artikelprijs.key_0).toFixed(2).toString().replace('.', ',')
                                ]);
                                row.tr.store('artikel-data', item);
                                row.tr.set('title', item.merknaam.concat(' ', item.typenummer));
                                row.tds[3].setStyle('text-align', 'right');

                                if(item.barcode.length == 0) {
                                    row.tds[0].addEvent('click', function(e) {
                                        e.stop();
                                        kassa_artikel_barcode_koppelen({
                                            artikel_id: item.artikel_id,
                                            mark: 0,
                                            successCallback: function(response) {
                                                switch(response) {
                                                    case 1:
                                                        artikel_id.set('value', item.artikel_id);
                                                        $('formScanner').submit();
                                                    break;
                                                }
                                            }   
                                        });
                                    });
                                }
                            }
                        });
                        table.inject($('kassa_artikel_zoekresultaat'));
                        $('barcodeMessage').setStyle('display', 'none');
                    }
				}
			});
			barcode.addEvent('change', function(e) {
				if(e) e.stop();
                $('barcodeMessage').setStyle('display', '');
                $('barcodeMessage').set('text', 'Bezig met zoeken...');
                new Element('img', {
                    src: '/layout/shop/images/annulerenknop.gif',
                    width: 85,
                    height: 23,
                    alt: 'annuleren',
                    title: 'zoekopdracht annuleren',
                    events: {
                        click: function(e) {
                            e.stop();
                            jsonRequest.cancel();
                        }
                    },
                    styles: {
                        cursor: 'pointer',
                        'vertical-align': 'middle',
                        'margin-left': '5px'
                    }
                }).inject($('barcodeMessage'));
				jsonRequest.get({method: 'artikelBarcodeSearchExtended', zoekterm: this.get('value'), zoekveld: 'omschrijving_extra'});
			});
            kassa_scanner_input_event(barcode);
		}
	}
}

function kassa_artikel_barcode_scanner_knop(artikel_id, barcode) {
    if(barcode.length > 0) return;
    document.write('<img src="/layout/shop/images/barcode-scanner.gif" id="barcode_scanner_'+artikel_id+'">');
    var img = $('barcode_scanner_' + artikel_id);
    img.setStyles({
        cursor: 'pointer',
        margin: '6px 6px'
    });
    img.addEvent('click', function() {
        kassa_artikel_barcode_koppelen({
            artikel_id: artikel_id,
            mark: 0,
            successCallback: function(response) {
                if(response == 1) {
                    winkelwagen.add(artikel_id);
                }
            }
        });
    });
}

function kassa_artikel_barcode_wijzig_knop(artikel_id, barcode) {
    if(barcode.length == 0) return;
    document.write('<img src="/layout/shop/images/barcode.gif" id="barcode_wijzig_'+artikel_id+'">');
    var img = $('barcode_wijzig_' + artikel_id);
    img.setStyles({
        cursor: 'pointer',
        margin: '6px 6px'
    });
    img.addEvent('click', function() {
        kassa_artikel_barcode_koppelen({
            artikel_id: artikel_id,
            mark: 1,
            successCallback: function(response) {
                if(response == 1) {
                    winkelwagen.add(artikel_id);
                }
            }
        });
    });
}

// Koppelen van barcode aan artikel
function kassa_artikel_barcode_koppelen(options) {
    var dialog = get_masked_dialog_base();
    dialog.set('load', {
        onComplete: function() {
            var destroy_dialog = function() {
                $('content_div').unmask();
                dialog.dispose();
            };
            
            dialog.getElement('strong.dialog_titel').set('text', 'Barcode aan artikel koppelen');
            dialog.getElement('td.dialog_content').set('html', '<strong>Barcode:</strong> <input type="text" name="barcode" size="50">');
            var dialog_btn_ok = dialog.getElement('img.dialog_btn_ok');
            var barcode_input = dialog.getElement('input[name=barcode]');
            barcode_input.focus();
            barcode_input.addEvent('change', function() {
                dialog_btn_ok.fireEvent('click');
            });
            dialog.getElements('img.dialog_btn_cancel').addEvent('click', function(e) {
                destroy_dialog();
            });
            kassa_scanner_input_event(barcode_input);
            dialog_btn_ok.addEvent('click', function(e) {
                if(confirm('Weet je zeker dat je de barcode "' + barcode_input.get('value') + '" wilt koppelen?')) {
                    new Request.JSON({
                        url: '/cms/dp_shop.php?rest=1&fmt=json&apikey=' + rest_api_key,
                        onSuccess: function(data) {
                            var response = parseInt(data.artikelBarcodeUpdate.response);
                            options.successCallback(response);
                            if(response != 1) destroy_dialog();
                        }
                    }).post({
                        method: 'artikelBarcodeUpdate',
                        artikel_id: options.artikel_id,
                        barcode: barcode_input.get('value'),
                        mark: options.mark
                    });
                }
                else {
                    barcode_input.focus();
                    barcode_input.select();
                }
            });
        }
    });
    dialog.load('/templates/shop_dialog.html?' + Date.now());
    dialog.inject($('mask'), 'after');
}

// Zoeken en selecteren van debiteur in kassa
function kassa_debiteur_keuze() {
	var kassa_bon = function(type_bon) {
	    $('Update').set('send', {async:false});
	    $('Update').get('send').send();
        Cookie.write('type_bon', type_bon);
        window.open('/shop/kassa?bon','kassabon','width=800,height=600');
	};
	var random = Date.now();

    var klant_info_content = $('klant_info_content');
    if(klant_info_content) {
        klant_info_content.set('load', {
            onSuccess: function() {
                var query_val = new Element('input', {
                    type: 'text',
                    title: 'kies een letter of begin te typen',
                    events: {
                        keyup: function(e) {
                            this.set('value', this.get('value').replace(/[^\d|^\w]/g, ''));
                            this.fireEvent('update_result');
                        },
                        update_result: function(e) {
                            this.focus();
                            if(this.get('value').length == 0) {
                                $('shop_kassa_zoek_debiteur_resultaat').empty();
                                return;
                            }
                            
                            var input = this;
                            var req = new Request.JSON({
                                url: '/shop/avws.php',
                                onComplete: function() {
                                    $('shop_kassa_zoek_debiteur_resultaat').empty();
                                },
                                onSuccess: function(data) {
                                    var input_value = input.get('value');
                                    if(data != null && data.length > 0) {
                                        var myTable = new HtmlTable({
                                            properties: {
                                                border: 1,
                                                cellpadding: 3,
                                                width: '99%',
                                                'class': 'commontable'
                                            },
                                            selectable: true,
                                            allowMultiSelect: false,
                                            sortable: true,
                                            sortIndex: 1,
                                            headers: ['Deb.nr.', 'Zoekcode', 'Bedrijfsnaam', 'Woonplaats']
                                        });

                                        myTable.addEvents({
                                            rowFocus: function(tr) {
                                                var item = tr.retrieve('avws-item');
                                                if(item.blk_sp == 'false' && item.rec_blk == 'false') {
                                                    Object.each(item, function(value, index) {
                                                        var el = $('avws_' + index);
                                                        if(el) {
                                                            el.addEvent('change', function(e) {
                                                                Cookie.write('avws:' + el.get('name'), this.get('value'));
                                                            });
                                                            el.set('value', value);
                                                            el.fireEvent('change');
                                                        }
                                                    });
                                                    kassa_bon('rekening');
                                                }
                                                else {
                                                    myTable.selectNone();
                                                    var dialog = get_masked_dialog_base();
                                                    dialog.set('load', {
                                                        onComplete: function() {
                                                            var destroy_dialog = function() {
                                                                $('content_div').unmask();
                                                                dialog.dispose();
                                                            };
                                                            
                                                            dialog.getElement('strong.dialog_titel').set('text', 'Debiteur geblokkeerd voor orders');
                                                            dialog.getElement('td.dialog_content').set('html', 'De gekozen debiteur is <strong style="color:#D21A1A;">geblokkeerd voor orders</strong> en kan alleen in overleg op rekening bestellen. Contant afrekenen is wel mogelijk.');
                                                            dialog.getElement('img.dialog_btn_cancel').addEvent('click', function(e) {
                                                                destroy_dialog();
                                                            });
                                                            
                                                            var btn_ok = dialog.getElement('img.dialog_btn_ok');
                                                            btn_ok.set('src', '/layout/shop/images/contantknop.gif');
                                                            btn_ok.set('width', 65);
                                                            btn_ok.addEvent('click', function(e) {
                                                                destroy_dialog();
                                                                kassa_bon('contant');
                                                            });
                                                        }
                                                    });
                                                    dialog.load('/templates/shop_dialog.html?' + random);
                                                    dialog.inject($('mask'), 'after');
                                                }
                                            }
                                        });

                                        data.each(function(item) {
                                            var row = myTable.push([item.sub_nr, item.src_code, item.acct_name, item.city]);
                                            row.tds[1].set('html', '<strong>'+item.src_code.substr(0, input_value.length)+'</strong>'+item.src_code.substr(input_value.length));
                                            if(item.blk_sp == 'true' || item.rec_blk == 'true') {
                                                row.tds[2].setStyle('color', '#D21A1A');
                                            }
                                            row.tr.store('avws-item', item);

                                            // NAW gegevens maken voor Tooltip
                                            var text = new String;
                                            var data = [
                                                item.admin_name, item.address1,
                                                item.post_code.concat("&nbsp;", item.city), item.tel_bus ];
                                            data.each(function(item) {
                                                if(item != undefined) {
                                                    text += item + '<br/>';
                                                }
                                            });
                                            // Tooltip gegevens
                                            row.tr.store('tip:title', item.acct_name);
                                            row.tr.store('tip:text', text);
                                            var tips = new Tips(row.tr);
                                            // Bij weergave tooltip de volledige debiteur gegevens opvragen
                                            // om zo de opmerkingen te kunnen weergeven
                                            tips.addEvent('show', function(tip, el) {
                                                if(!el.retrieve('has-avws-comment')) {
                                                    var req = new Request.JSON({
                                                        url: '/shop/avws.php',
                                                        autocancel: true,
                                                        noCache: true,
                                                        onRequest: function() {
                                                            var text = tip.getElement('.tip-text');
                                                            new Element('pre', {text: 'Opmerking wordt opgevraagd...'}).inject(text);
                                                        },
                                                        onSuccess: function(data) {
                                                            var text = tip.getElement('.tip-text');
                                                            var opmerking = 'Geen opmerking aanwezig';
                                                            if(data && data[0] && data[0].comment1 != undefined) {
                                                                opmerking = data[0].comment1.trim();
                                                            }
                                                            text.getElement('pre').set('text', opmerking);
                                                            var html = text.get('html');
                                                            tips.setText(html);
                                                            el.store('tip:text', html);
                                                            // Voorkom meerdere opvragen
                                                            el.store('has-avws-comment', true);
                                                        }
                                                    }).get({
                                                        query: 'sub_nr',
                                                        query_val: item.sub_nr,
                                                        view: 'full'
                                                    });
                                                }
                                            });
                                        });
                                    
                                        myTable.inject($('shop_kassa_zoek_debiteur_resultaat'));
                                    }
                                    // Voorkom doortypen van ongeldige zoekcode
                                    else if(input_value.length > 0) {
                                        input.set('value', input_value.substr(0, input_value.length - 1));
                                        input.fireEvent('update_result');
                                    }
                                },
                                onError: function() {
                                    alert('er is een onbekende fout opgetreden');
                                }
                            });

                            req.get({
                                query: 'src_code',
                                query_val: this.get('value') + '%',
                                view: 'basic',
                                t: random
                            });
                        }
                    }
                });
                
                for(var i = 97; i <= 122; i++) {
                    var button = new Element('button', {
                        id: 'btnZoek' + String.fromCharCode(i),
                        text: String.fromCharCode(i),
                        'class': 'zoek_debiteur'
                    });
                    
                    button.addEvent('click', function(e) {
                        e.stop();
                        query_val.set('value', query_val.get('value') + this.get('text'));
                        query_val.fireEvent('update_result');
                    });
                    
                    button.inject($('shop_kassa_zoek_debiteur'));
                }

                var reset_button = new Element('button', {
                    'class': 'zoek_debiteur zoek_debiteur_reset',
                    text: 'reset',
                    events: {
                        click: function(e) {
                            e.stop();
                            query_val.set('value', '');
                            query_val.fireEvent('update_result');
                        }
                    }
                });
                reset_button.inject($('shop_kassa_zoek_debiteur'));
                
                var search = new Element('div', {
                    styles: {
                        position: 'relative',
                        clear: 'both',
                        display: 'block',
                        margin: '10px auto -10px auto',
                        left: '-33px'
                    },
                    html: '<strong>Zoekcode:</strong>&nbsp;'
                });
                
                query_val.inject(search);
                search.inject($('shop_kassa_zoek_debiteur'));
                query_val.fireEvent('update_result');
                query_val.focus(); // Focus door update_result wordt niet altijd opgevangen
                
                // prefill
                $('shop_klant_info_table').getElements('input[id^=avws_]').each(function(el) {
                    el.set('value', Cookie.read( 'avws:' + el.get('name')) );
                });
                
                var y_diff = Browser.ie ? 180 : 160;
                $('shop_kassa_zoek_debiteur_resultaat').setStyles({
                    height: ($('content').getSize().y - y_diff) + 'px',
                    overflow: 'visible'
                });

                $('content_div').scrollTo(0, $('kassa_betalingsmethode').getPosition($('content_div')).y - 20);
            }						
        });
    }

	var bon_knoppen = $$('input[name=type_bon]');
	bon_knoppen.each(function(el) {
		el.addEvent('click', function(e) {
			e.stop();
			var type_bon = this.get('id').substr(9);
			switch(type_bon) {
				case 'rekening':
					$('klant_info_content').load('/templates/shop_kassa_klant_info.html?' + Date.now());
				break;
				default:
					$('klant_info_content').empty();
                    kassa_bon('contant');
				break;
			}
		});
	});

	if(bon_knoppen) {
		if($$('input[name^=txtAantal]').length == 0) {
			bon_knoppen.setStyle('opacity', 0.4);
			bon_knoppen.removeEvents('click');
			bon_knoppen.addEvent('click', function(e) {
				e.stop();
				alert('Het is niet mogelijk een bon af te drukken wanneer er geen artikelen zijn.');
			});
		}
	}
	
	if($('wis_formulier')) {
		$('wis_formulier').addEvent('click', function(e) {
			Cookie.dispose('type_bon');
			var parent = $('shop_klant_info_table');
			if(parent) {
				parent.getElements('input[id^=avws_]').each(function(el) {
					Cookie.dispose( 'avws:' + el.get('name') );
				});
			}
		});
	}
}

// Lees query string uit en plaats deze in een array
function query_string() {
	var qsParm = new Array();
	var query = window.location.search.substring(1);
	//alert(query);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			qsParm[key] = val;
		}
	}
	return qsParm;
}

// In internet explorer een textrange kopieren naar het klembord
function copyRangToClipboard(el) {
	if(Browser.ie) {
		var Copied = $(el).createTextRange();
		Copied.execCommand("SelectAll");
		Copied.execCommand("Copy");
	}
};

// Maakt een artikel rij die in een e-mail geplakt kan worden
function createArticleRow(el) {
	var myAjax = new Request.HTML({
		url: '/templates/articlerow.html',
		method: 'get',
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var _body = new Element('body', {});
			var html = responseHTML;
			
			if(!$('productPhoto').getProperty('src').match('standaard.gif')) {
				html = html.replace('productPhoto=""', 'src="'+$('productPhoto').getProperty('src').replace(/\/artikelen\//,'/artikelen/thumbnails/')+'"');
			} else {
				html = html.replace('productPhoto=""', 'src="http://www.depoort.nl/artikelen/standaard.gif"');
			}
			
			html = html.replace('{productDesc1}', $('productDesc1').get('text'));
			html = html.replace('{productDesc2}', $('productDesc3').get('text'));
			html = html.replace('{productDesc3}', $('productDesc2').get('text'));
			html = html.replace(/\[artikelnummer\]/g, $('artikelnummer').getProperty('value'));
			
			html = html.replace('{productPrice}', $('productPrice').get('text').replace(String.fromCharCode(8364),''));
			html = html.replace('{productPriceExcl}', $('productPriceExcl').get('text').replace(String.fromCharCode(8364),''));
			_body.set('html', html);
			copyRangToClipboard(_body);
		}
	}).get({});
}

