


// -----------------------------------------------------------------------------------------
// Timeout - Logout
// -----------------------------------------------------------------------------------------

$( function () {
	
	if ($('a.logout').length) {
	
		_timer = false;
		
		$('body').mousedown( function () {
			reset_timer();
		});
		
		function reset_timer () {
			if (_timer) clearTimeout( _timer );
			_timer = setTimeout( function () {
				window.location.href = $('a.logout').attr('href');
				alert("Sie haben länger nicht gemacht und wurden aus Sicherheitsgründen ausgeloggt.");
			}, 15 * 60 * 1000);
		}
		
		reset_timer();

	}
	
});



// -----------------------------------------------------------------------------------------
// AJAX-Suche
// -----------------------------------------------------------------------------------------

$(function () {

	var _selProduct = false;
	

	$('input[name="keyword"]').keyup( get_search_results ).focus( clear_keyword );
	$('.search_box .insert_product').click( insert_selected_product );
	$('input.search').blur( function () {
		setTimeout( function () {
			$('.results').hide();
		}, 500);
	});
	
	clear_keyword();
	
	
	// 38 = Pfeil hoch, 40 = Pfeil runter
	$('.search').keydown( function (e) {
		switch (''+e.keyCode) {
			case '38':
				highlight_result(-1); return false;
			case '40':
				highlight_result(1); return false;
			case '13':
				search_result_selected.apply( $('.results li.selected'), []);
				return false;
		}
	});
	
	// 	https://www.bns-order.com/quickedit/index.php?action=search&searchString=sohle

	function clear_keyword () {
		$('input[name="keyword"]').val('').data({keyword:false});
		$('.search_box .variations').empty();
		$('.results').empty();
		$('.search_box .insert_product').hide();
		_selProduct = false;
	}
	
	function get_search_results () {

		var ref = $(this);
		clearTimeout( ref.data()._timer );

		//window.console.log($('.search').is(':focus'));
		if (!$('.search').is(':focus')) return;
				
		var _timer = setTimeout( function () {

			var keyword = ref.val();
			if (keyword.length > 3 && keyword != ref.data().keyword) {
				ref.data({keyword:keyword}).addClass('wait');
				$.getJSON('index.php?action=search&searchString='+keyword+'&cHash='+Math.random()*100000, function ( data ) {
						ref.removeClass('wait');				
						if (_selProduct) return;
						show_search_results( data );
					}
				);
			}
		}, 500);
		
		ref.data({_timer:_timer});
	}	
	
	function show_search_results ( data ) {
				
		var ref = $('.results');
		ref.empty();
		ref.data( {_cur:0, _none:false} );
		ref.show();

		var list = $('<ul></ul>');
		var cnt = 0;
		$.each( data, function (k,v) {
			if (cnt > 6) return;
			if (v.mediaContent_NAME && k.substring(0,1) == '4') {
				if (v.productVariations[0].articleReferenceNumber) {
					v.mediaContent_NAME = v.mediaContent_NAME.split("{HS}").join("<b>").split("{HE}").join("</b>");
					var item = $('<li>'+v.mediaContent_NAME+'</li>');
					list.append(item);
					cnt++;
					item.data(v).click( search_result_selected );
				}
			}
			if (v.naviNodeDescription_content && k.substring(0,1) == '1') {
				v.naviNodeDescription_content = v.naviNodeDescription_content.split("{HS}").join("<b>").split("{HE}").join("</b>");
				var item = $('<li>'+v.naviNodeDescription_content+'</li>');
				list.append(item);
				item.data(v).click( search_result_selected );
			}
		});
		
		if (!cnt) {
			list.append('<li>Keine Treffer bei Suche</li>');
			ref.data({_none:true});
		}
		
		ref.append( list );
		
		var pos = $('.search_box').offset();
		ref.css({top:pos.top + 25, left: Math.min(pos.left, $('.centerbox').offset().left + $('.centerbox').width() - $('.results').width() )});
		
		highlight_result(0);
	}
	
	function highlight_result ( n ) {
		var ref = $('.results');
		ref.data( {_cur:Math.max( 0, Math.min( ref.data()._cur + n, ref.find('li').length-1 ))} );
		var data = ref.data();
		if (data._none) return;
		$(ref.find('li').removeClass('selected')[data._cur]).addClass('selected');
	}
	
	function search_result_selected () {
	
		$('.search').blur();
		var obj = $(this).data();
		
		try {
			$('input[name="keyword"]').val( $('<div>'+obj.mediaContent_NAME+'</div>').text() );
			
			if (obj.productVariations.length == 1) {
				article_was_found( obj.productVariations[0] );
				insert_selected_product();
				clear_keyword();
			} else {
				build_product_option_box( obj );
			}
		} catch (e) {}
		
		$('.results').empty();
		
	}
	
	
	function build_product_option_box ( data ) {
		
		$('.results').hide();
		
		var ref = $('.search_box .variations');
		ref.empty();
		var first = false;
		
		var list = $('<select name="variation"></select>');
		$.each( data.productVariations, function (k,v) {
			if (v.description) {
				var item = $('<option value="'+v.articleReferenceNumber+'">'+v.description+'</option>');
				list.append(item);
				if (!first) first = v;
			}
		});
		list.change( function () {
			article_was_found( {articleReferenceNumber:$(this).val()} );
		});
		
		if (first) {
			ref.append( data.productVariationsColDescription + ': ').append( list );
			article_was_found( first ); 
		}
	}
	
	function article_was_found ( obj ) {
		_selProduct = obj;
		$('.search_box .insert_product').show();
	}
	
	function insert_selected_product () {
		var f = false;
		$('.insert_items .item').each( function () {
			var p = $(this).find('.refNum');
			if (p.val() == '' && !f) {
				f = p;
				p.val( _selProduct.articleReferenceNumber );
				p.change();
			}
		});
		return false;
	}


	
});

// -----------------------------------------------------------------------------------------
// Effekte
// -----------------------------------------------------------------------------------------


// -----------------------------------------------------------------------------------------
// checkout_form.inc.php
// -----------------------------------------------------------------------------------------

$(function () {

	// https://www.bns-order.com/quickedit/index.php?action=get_user_info&referenceNumber=111111&cHash=92314.74788393825	
	$('a.search').click( function () {
		
		$('.error.user_unknown').hide();
		var ref = $('input[name="referenceNumber_search"]');
		ref.removeClass('error').addClass('wait');
		var url = 'index.php?action=get_user_info&referenceNumber='+ref.val()+'&cHash='+Math.random()*100000;
		$.getJSON(url, function ( data ) {
		
			ref.removeClass('wait');
			if (!data.ID) {
				$('.error.user_unknown').show();
				ref.addClass('error');
				return;
			}
			
//			window.console.log(data);
			
			$.each( data, function (k,v) {
				var f = $('input[name="deliveryAddress_'+k+'"]');
				if (f.length) f.val(v);
			});
			
		});
		return false;
	});
	
	var _curFocus = false;
	
	$('input').focus( function () {
		_curFocus = $(this);
	}).blur(function () {
		_curFocus = false;
	});
	
	$('#delivery_form').submit( function () {
		if (_curFocus[0] == $('.referenceNumber_search')[0]) {
			$('.referenceNumber_search').blur();
			$('a.search').click();
			return false;
		}
	});


	$('input[name="alternativeAddress"]').change( function () {
		$('.alternative_address_form')[$(this).attr('checked') ? 'show' : 'hide']();
	});
	
	
	$('input[name="delivery_date"], input[name="delivery_month"], input[name="delivery_year"]').focus( update_asap ).blur( update_asap );
	$('input[name="asap"]').change( function () {
		if ($(this).attr('checked')) $('input[name="delivery_date"], input[name="delivery_month"], input[name="delivery_year"]').val('');
	});
	
	function update_asap () {
		var txt = $.trim($('input[name="delivery_date"]').val() + $('input[name="delivery_month"]').val() + $('input[name="delivery_year"]').val());
		var foc = $('input[name="delivery_date"]').is(':focus') || $('input[name="delivery_month"]').is(':focus') || $('input[name="delivery_year"]').is(':focus');
		$('input[name="asap"]').removeAttr('checked');
		if (!txt && !foc) $('input[name="asap"]').attr('checked', true);
	}
	
	$('.back_to_order_list').click( function () {
		$('#delivery_form').append('<input type="hidden" name="change_mode" value="order_items_form" />');
		$('#delivery_form').submit();
		return false;
	});
	
	update_asap();
	$('input[name="alternativeAddress"]').change();
	
	
	$('.place_purchase_order').click( place_purchase_order );

	function place_purchase_order () {
		$('#delivery_form').append('<input type="hidden" name="change_mode" value="place_purchase_order" />');
		$('#delivery_form').submit();
		return false;
	}


});

// -----------------------------------------------------------------------------------------
// order_items_form.inc.php
// -----------------------------------------------------------------------------------------

$(function () {
	
	if ($('#shopping_cart').length == 0) return;
	
	
	$('.trash').click( click_trash );
	$('.checkout').click( go_to_checkout );
	show_tab('.current_order');
	
	$('a.tab_current_order').click( function () {
		$('ul.tab_navi li').removeClass('selected');
		$(this).parent().addClass('selected');
		show_tab('.current_order');
		return false;
	});

	$('a.tab_availability').click( function () {
		$('ul.tab_navi li').removeClass('selected');
		$(this).parent().addClass('selected');
		show_tab('.availabilty_table');
		return false;
	});
	
	$('a.tab_order_history').click( function () {
		$('ul.tab_navi li').removeClass('selected');
		$(this).parent().addClass('selected');
		show_tab('.order_history');
		return false;
	});

	$('ul.order_history a').click( function () {
		show_order_history_details( $(this).attr('href') );
		return false;
	});
	
	$('.lb .close, .lb_bg').click( function () {
		$('.lb').hide();
	});

	$('.lb .print').click( function () {
	    window.frames['lb_iframe'].focus();
	    window.frames['lb_iframe'].print(); 
		return false;
	});
	
	$('#shopping_cart').submit( function () {
		if ($('.search').is(':focus')) return false;
	});
	
	function show_tab ( div ) {
		$('.single_tab').hide();
		$('.single_tab'+div).show();
		
	}
	
	function go_to_checkout () {
		$('#shopping_cart').append('<input type="hidden" name="change_mode" value="checkout_form" />');
		$('#shopping_cart').submit();
		return false;
	}
	

	function show_order_history_details ( href ) {
		$('.lb').show();
		$('.lb_content .inner').empty();
		$('.lb_content .inner').append('<iframe name="lb_iframe" src="'+href+'" class="lb_iframe" frameborder="0"></iframe>');
	}
	
	function click_trash () {
	
		$(this).parent().find('input.amount').val('0');
		
		$(this).parent().fadeOut( function () {
			var me = $(this);
			if (me.find('.new_item').length > 0) {
				me.remove();
			}
		});
		
		update_total_amounts();
		return false;
	}

	$('.refNum').each( function () {
		var p = $(this).parent();
		p.data({
			quantity: parseInt(keep_digits(p.find('.quantity').text()), 10),
			price: parseFloat(keep_digits(p.find('.price').text()))				
		});
		var price = format_price(p.data().price);
		p.find('.price').text( price == false ? '' : price );
	});

	function keep_digits ( num ) {
		return num.replace(/[^0-9.,]/g, '');
	}
	
	build_buttons();
	update_total_amounts();

	function on_change_item () {
	
		var ref = $('.item .new_item');
		var cnt = 0;
		$.each( ref, function (k,v) { 
			if ($(v).val() == '') cnt++;
		});

		for (var i = 0; i < 2-cnt; i++) {
			$('.insert_items').append( item_insert_code );
		}
		
		build_buttons();
		
	}
	
	function update_total_amounts () {
	
		var sum = 0;
		
		$('input.refNum').each( function () {
		
			var p = $(this).parent();
			var amount = parseInt(keep_digits(p.find('.amount').val()), 10);
			if (!amount) amount = 0;
			
			var data = p.data();
			var total = amount * data.quantity;
			var price_total = format_price( total * data.price );
			
			if (price_total !== false && p.is(':visible')) sum += total * data.price;
			
			var nix = data.price == 0 && data.quantity == 0;
			
			p.find('.amount_total').text( isNaN(total) || nix ? '' : '= ' + total );
			p.find('.price_total').text( price_total == false || nix ? '' : '= ' + price_total );
			p.find('.trash, .result')[ !$(this).val() ? 'hide' : 'show']();
		});
		
		$('.total_box .total, .total_box .total_price').text( format_price(sum) );
		$.update_checkout_button();
		check_availability();
	
	}
	
	function format_price ( num ) {
		if (isNaN(num)) return false;
		num = Math.round( num*100, 2 )/100;
		var str = (''+num).split('.');
		if (!str[1]) str[1] = '00';
		if (str[1].length == 1) str[1] += '0';
		return str.join(',') + ' €';
	}
	
	function build_buttons () {
		$('.item .new_item').unbind().change( on_change_item ).change( on_keyup_item );
		$('.item .new_item').keydown( on_keyup_item );
		$('.trash').unbind().click( click_trash );	
		$('.amount').unbind().keyup( update_total_amounts );
	}
	
	
	
	function on_keyup_item () {
		var ref = $(this);
		clearTimeout( ref.data()._timer );
		
		var _timer = setTimeout( function () {

			ref.removeClass('error');
			var article_num = ref.val();
			if (article_num.length > 4 && article_num != ref.data().article_num) {
				ref.data({article_num:article_num}).addClass('wait');
				$.getJSON('index.php?action=get_article_info&ID='+article_num+'&cHash='+Math.random()*100000, function ( data ) {
						//window.console.log( data );
						var p = ref.parent();

						var txt = {quantity:'', amount_total:'', price:'' };
						if (data.ID) {
							txt = {	result: cut_str('<b>'+data.brand+'</b> ' + data.articleFeatures.join(' / ') + ' (' +data.matrix_HEAD + ')', 65),
									quantity: 'x '+data.media_QUANTITY.content,
									price: 'x '+format_price( data.articlePrice.price )
								};
								
							p.data( {
								quantity:parseInt(keep_digits(data.media_QUANTITY.content), 10),
								price: data.articlePrice.price
							});

							if (p.find('.amount').val() == '' && !p.find('.amount').is(':focus')) p.find('.amount').val(1);
							$.update_checkout_button();
							
						} else {
							txt.result = '<span class="error">Artikel-Nr. ungültig</span>';
							ref.addClass('error');
							p.data( {quantity:0, price:0} );
						}
						$.each( txt, function ( k, v ) {
							p.find('.'+k).html(v);
						});
						
						ref.removeClass('wait');
						update_total_amounts();
					}
				);
			}
		}, 500);
		
		ref.data({_timer:_timer});
		
	}
	
	
	function cut_str ( str, len ) {
		return str.substr(0,len)+(str.length > len ? '...' : '');
	}
	

	function check_availability () {
		var data = get_availability_data();
		$('input.refNum').each( function () {
			var f = $(this);
			f.removeClass('not-available').unbind('mouseenter mouseleave');	
			if (data[f.val()]) {
				f.addClass('not-available').mouseenter( function () {
					var o = $(this).offset();
					$('#avbubble .text').text(data[f.val()]);
					$('#avbubble').stop(true,true).css( {left:o.left+45, top:o.top-$('#avbubble').height()+2} ).show();
				}).mouseleave( function () {
					$('#avbubble').hide();
				});
				if (f.is(':focus')) f.mouseenter();
			}
		});
	}	
	
});

(function($){
	$.extend({
		'update_checkout_button': function () {
			var total = 0;
			$('.insert_items .item').each( function () {
				if ($(this).find('.amount').val() * 1 > 0 && $(this).find('.amount').val()) total++;
			});
			
			$('.item.in_cart .amount').each( function () {
				if ($(this).val()*1 > 0 && $(this).val()) total++;
			});
			
			$('input.checkout')[total > 0 ? 'removeClass' : 'addClass']('inactive');
		}
	});
	
	
})(jQuery);

