// 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')) {
		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.Engine.gecko ? '-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 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_add_row();

	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,
		onSuccess: function(data) {
			if(data.availability > 0) {
				$('voorraad').set('text', 'Voorraad: ' + parseInt(data.availability));
			} else {
				// "etadate":"01-01-1970"
				if(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);
			});
		}
	}
}

// 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();
			$('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
				}
			});

			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_' + $time());
							
							// 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]');
									$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);
										}
									});
								}
							}).get({method: 'btwtarieven'});

						}
					});
					content.load('/templates/shop_kassa_losse_regel.html?' + $time());
					
					dialog.getElement('button.dialog_btn_cancel').addEvent('click', function(e) {
						e.stop();
						$('content_div').unmask();
						dialog.dispose();
					});
					
					dialog.getElement('button.dialog_btn_ok').addEvent('click', function(e) {
						e.stop();
						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?' + $time());
			dialog.inject($('mask'), 'after');
		});
	}
}

// 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.Engine.trident) {
		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="http://www.depoort.nl/'+$('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({});
}
