var sessionCookie = null;
var page = 1;
var adjacentPages = 2;
var documentLocation = document.location.href.split('pagina.php');
var sessionMinPrijs = null;
var sessionMaxPrijs = null;
var currencySymbol = '\u20ac';
var homepageItemCounter = 0;
var showHideTimeout = 5000;
var checkedVarFound = false;
var useSorting = false;
var productData = false;


$(document).ready(function() {

	// get background image
	$.ajax({ url: "/javascript/ajaxRequests/getBackgroundImage.php", context: document.body, success: function(responseHtml){
        $(this).css("background", responseHtml);
      }});
	  
	  
	handleFromValidation();
	
	if ($("form.bijtellingForm").length == 1)	{
		fiscaleBijtellingFunctions();
	}
	
	if ($("form.co2Form").length == 1)	{
		co2Functions();
	}	
	
	if ($("form#intakeForm").length > 0)	{
		//handle the info click
		if ($("div.fieldInfoHolder").length > 0)	{		
			$("a.field_info").click(function()	{
				
				var infoDiv = 'field_info_' + $(this).attr("id");
				
				$("div." + infoDiv).dialog({
					height: 140,
					modal: true
				});
				
			});		
		}
	}
	
	if ($("div.extraCustInfo").length > 0)	{
		handleExtraTextCustomer();
	}
	

	//check form on submit
	$('form.satisfaction').submit(function() {

		var sForm = $(this);

		if ( $.checkForm(sForm ,'isReq') == true) {

			// verstuur met ajax
			var requestString = 'action=verstuurfaq';

			sForm.find('textarea, input, select').each(function(){

				if ( ( this.type != 'radio') || ( this.checked == true ) ) {

					requestString += '&' + this.name + '=' + this.value;
				}

			});

			var id = 'ajaxrespons_' + sForm[0].id.value;


 			//process ajaxrequest
			$.ajax({
				url: "/ajaxrequests.php",
				type: "GET",
				data: requestString,
				dataType: "html",
				cache: false,
				success: function(responseHtml) {

					if (responseHtml != 'false') {

						$("span#" + id + "").text(responseHtml);

					}
				}
			});


		}

		return false;

	});

	// add faq group functions
	$("div.faqGroup a" ).click(function() {

		var href = $(this).attr('href').split('_');
		var faqWrap = 'fw_' + href[1];

		$("div.faqWrap").not("div#" + faqWrap + "").slideUp(500);
		$("div#" + faqWrap + "").slideDown(500);

	});

	$("div.headFaq h3" ).click(function() {

		var id = $(this).attr('id').split('_');
		var faqWrap = 'fw_' + id[1];

		$("div.faqWrap").not("div#" + faqWrap + "").slideUp(500);
		$("div#" + faqWrap + "").slideDown(500);

	});


	if (typeof(cufon_enabled) !== 'undefined' && cufon_enabled == 1) {
		$.initiateCufon();
	}

	if ($.cookie) {
		$.cookie('previousPage', $.cookie('currentPage'));
		$.cookie('currentPage', document.location.href);
		if ($.cookie('previousPage') != $.cookie('currentPage')) {
			$.cookie('checkedBoxesCookie', null);
			$.cookie('selectedMinPrijsCookie', null);
			$.cookie('selectedMaxPrijsCookie', null);
		}
		if ($.cookie('resultsPerPageCookie') != null) {
			resultsPerPage = $.cookie('resultsPerPageCookie');
		}
	}

	//handle the table colering
	//table color rows
	$("table.relatedItemsOverview tr:nth-child(odd)").not('table.relatedItemsOverview tr:first').not('table.noGrey tr').addClass("grey");

	//forum
	forumFunctions();


	if ($("a[rel^='prettyPhoto']").length > 0) {
		$("a[rel^='prettyPhoto']").prettyPhoto({
			showTitle:false,
			//animationSpeed: 'normal', /* fast/slow/normal */
			//padding: 40, /* padding for each side of the picture */
			//opacity: 0.35, /* Value betwee 0 and 1 */
			//showTitle: true, /* true/false */
			allowresize: true, /* true/false */
			theme: 'light_rounded', /* light_rounded / dark_rounded / light_square / dark_square */
			counter_separator_label: '/' /* The separator for the gallery counter 1 "of" 2 */
		});
	}
	//tegen knipperen nog fixen
	//$('.itemOverview').css('display', 'none');

	//fade items on left side of screen
	homepageItemCounter = $('.homepageItem').length;
	if (homepageItemCounter > 1) {
		$('.homepageItem').hide();
		$('.homepageItem').first().show();
		setTimeout('showHideItems(\'.homepageItem\')',showHideTimeout);
	}


	//popeye zoomer with photo's
	if ($('.ppy').length > 0) {
		//only load this script when needed
		addScript('/javascript/jquery.popeye-2.0.4.min.js')
		$('.ppy').popeye({
				direction:  'left'
		});
	}

	if ($('#tabs').length > 0) {
	    $.featureList(
	        $("#tabs li a"),
	        $("#output li"), {
	            start_item    :    1
	        }
	    );
	}

	if ($('.letter').length != 0) {
		$('.letter').hide();
		$('.abc').click(function() {
			var abcLetter = $(this).attr('id').split('_');
			if ($('#abcLetter_'+abcLetter[1]).css('display') == 'none') {
				$('#abcLetter_'+abcLetter[1]).slideDown();
			} else {
				$('#abcLetter_'+abcLetter[1]).slideUp();
			}
		});
	}

	//back link from productdetail to searchresult
	if ($('a#bpLink').length != 0)	{
		var curLink = $('a#bpLink').attr('href');
		//check for real link
		var cLink = curLink.split('.');
		if (cLink[1].substring(0,4) == 'html' || cLink[1].substring(0,3) == 'php')	{
			//check if the p get var is incomming
			var getP = getVar('p');
			var getFb = getVar('fb');
			if(getP != '')	{
				//oke, generate the link
				if (cLink[1].substring(0,4) == 'html')	{
					var newLink = curLink + '?bp='+getP;
				}else	{
					var newLink = curLink + '&bp='+getP;
				}
				//replace
				$('a#bpLink').attr('href',newLink);
				//for the brand pages
			}else if (getFb != '' && getFb == 't')	{
				//oke, generate the link
				var newLink = 'Javascript:history.back()';
				//replace
				$('a#bpLink').attr('href',newLink);
			}
		}
	}
	if ($('#productdetail').length != 0)	{
		sessionCookie = JSON.parse($.cookie('checkedBoxesCookie'));
		//$.getScript('/handleFilterSession.php?action=loadSession&currentGroupID='+currentProductGroupID, function(data) {
			$.getJSON('/json/products_'+currentProductGroupID+'_' + flag + '.json', false, function(data, textStatus){
				productData = data;

				product = data.products[currentProductID];

				if (showActie ( product ) ) {

					// dit is een product als actie

					$("span.#nu_prijs").text( currencySymbol + removeCurrencySymbol( product.actie.prijs ) );

					// vervang alle productid's met actieid
					var productForm = $("#product_acc_form").html();
					//productForm = productForm.replace( currentProductID , product.actie.id );
					productForm = str_replace ( currentProductID, product.actie.id , productForm );
					$("#product_acc_form").html( productForm );

					var test = '<div class="prijs prijs_actie">Actie'
								+	'<span class="van" style="text-decoration: line-through;">' +  product.actie.prijs_van + '</span>'
								+	'<span class="voor">' + product.actie.prijs + '</span>'
								+ '</div>'
								+ '<div class="clear"> </div>';

					$("#productHoofdAfbeelding").prepend(test);


				}

			});//end getJSON

		//});//end getScript

	}

	if ($('#merkdetail').length != 0)	{
		//is uitgeschakeld omdat we het flitsen wilden voorkomen0
		//handleBrands( page );

	}	//productfilter
	if ($('#filter').length != 0) {

		sessionCookie = JSON.parse($.cookie('checkedBoxesCookie'));

		//$.getScript('/handleFilterSession.php?action=loadSession&currentGroupID='+currentProductGroupID, function(data) {
			$.getJSON('/json/products_'+currentProductGroupID+'_' + flag + '.json?time='+Math.random(), false, function(data, textStatus){
				productData = data;

				var tagsAdded = new Array();
				var taggroupsAdded = new Array();
				var sizesAdded = new Array();
				var productCount = 0;
				var minProductPrice = 0;
				var maxProductPrice = 0;
				$.each(data.products, function() {

					// breken max en min prijs voor slider
					if (this.in_actie == 1) {
						var productPrijs = this.actie.prijs_unformatted;
					} else {
						var productPrijs = this.prijs_unformatted;
					}
				 	productPrijs = Number(productPrijs.replace(',','.'));


					 if ( productPrijs) {
						 minProductPrice = Math.min( minProductPrice, productPrijs);
						 maxProductPrice = Math.max( maxProductPrice, productPrijs);
					 }

					//voorkomende tags toevoegen aan de style fieldset
					tagGroupCounter = 0;
					if (this.taggroups != undefined) {
						$.each(this.taggroups, function(tagGroupID, currentTagGroup) {
							if (!in_array(tagGroupID, taggroupsAdded)) {
								taggroupsAdded[taggroupsAdded.length] = tagGroupID;
								//taggroups
								taggroupHTML = '<div class="filter_head" id="tg_' + tagGroupID + 'Header"><h3>' + currentTagGroup.name + ':</h3><!--<a class="reset floatRight" href="#" title="#" onclick="uncheckFilter(\'tg_' + tagGroupID + '\');">Reset</a>--></div>';
								taggroupHTML += '<div class="scroller" id="tg_' + tagGroupID + 'Scroller">';
								taggroupHTML += '	<fieldset id="tg_' + tagGroupID + 'Fieldset" class="tagsFieldset">';
								taggroupHTML += '		<legend>&nbsp;</legend>';
								taggroupHTML += '	</fieldset>';
								taggroupHTML += '	<br>';
								taggroupHTML += '</div><div class="border" id="stylesBorder">&nbsp;</div>';
								$('#taggroups').append(taggroupHTML);
							}
							$.each(currentTagGroup.tags, function(i, val) {
								if (!in_array(i, tagsAdded)) {
									tagsAdded[tagsAdded.length] = i;
									$('#tg_' + tagGroupID + 'Fieldset').append('<input class="checkbox floatLeft" type="checkbox" name="tg_' + tagGroupID + '[]" id="tg_' + tagGroupID + '_' + i + '" value="' + i + '" onclick="handleSearch()"><label class="active" for="tg_' + tagGroupID + '_' + i + '">' + val.naam + '</label><br>');
									if (sessionCookie && sessionCookie.tags) {
										if (in_array(i, sessionCookie.tags)) {
											$('#tg_' + tagGroupID + '_'+i).attr('checked', true);
											checkedVarFound = true;
										}
									}
								}
							});
							tagGroupCounter++;
						});
					}

					//voorkomende maten toevoegen aan de size fieldset
					//if (this.artikelen != undefined) {
//						$.each(this.artikelen, function (i, val) {
//							if (!in_array(i, sizesAdded)) {
//								sizesAdded[sizesAdded.length] = i;
//								$('#sizesFieldset').append('<input class="checkbox floatLeft" type="checkbox" name="size[]" id="size_' + i + '" value="' + i + '" onclick="handleSearch()"><label class="active" for="size_' + i + '">' + val.artikelnaam + '</label><br>');
//								if (sessionSizes != undefined) {
//									if (in_array(i, sessionSizes)) {
//										$('#size_'+i).attr('checked', true);
//										checkedVarFound = true;
//									}
//								}
//							}
//						});
//					}

					//if (this.artikelen != undefined) {
//						$.each(this.artikelen, function (i, val) {
//							if (!in_array(val.artikelnaam, sizesAdded)) {
//								sizesAdded[sizesAdded.length] = val.artikelnaam;
//								$('#sizesFieldset').append('<input class="checkbox floatLeft" type="checkbox" name="size[]" id="size_' + val.artikelnaam + '" value="' + val.artikelnaam + '" onclick="handleSearch()"><label class="active" for="size_' + val.artikelnaam + '">' + val.artikelnaam + '</label><br>');
//								if (sessionSizes != undefined) {
//									if (in_array(val.artikelnaam, sessionSizes)) {
//										$('#size_'+val.artikelnaam).attr('checked', true);
//										checkedVarFound = true;
//									}
//								}
//							}
//						});
//					}

					productCount++;
				});


			// max position for slider based on max product price and saved user setting
			if ($.cookie('selectedMinPrijsCookie') == null) {
				sliderMinValue = minProductPrice;
			} else {
				sliderMinValue = Math.max ( $.cookie('selectedMinPrijsCookie'), minProductPrice);
				checkedVarFound = true;
			}


			// min position for slider based on min product price and saved user setting
			if ($.cookie('selectedMaxPrijsCookie') == null) {
				sliderMaxValue = maxProductPrice;
			} else {
				sliderMaxValue = Math.min ( $.cookie('selectedMaxPrijsCookie'), maxProductPrice);
				checkedVarFound = true;
			}

			// logical slider step based on price range
			sliderStep = calcSliderStep( maxProductPrice - minProductPrice );

			$("#prijsSlider").slider({
				range: true,
				min: minProductPrice,
				max: maxProductPrice,
				values: [ sliderMinValue, sliderMaxValue],
				step: sliderStep,
				slide: function(event, ui) {

					$("#prijsMin").html(currencySymbol + ui.values[0]);
					$("#prijsMax").html(currencySymbol + ui.values[1]);

					},
				change: function(event, ui) {
					if (event.originalEvent != undefined ) {
						handleSearch();
					}
				}


			});

			$("#prijsMin").html(currencySymbol + $("#prijsSlider").slider("values", 0));
			$("#prijsMax").html(currencySymbol + $("#prijsSlider").slider("values", 1));


				$.each(data.brands, function(i, val) {
					$('#brandsFieldset').append('<input class="checkbox floatLeft" type="checkbox" name="brand[]" id="brand_' + i + '" value="' + i + '" onclick="handleSearch()"><label class="active" for="brand_' + i + '">' + val + '</label><br>');
					if (sessionCookie && sessionCookie.brands) {
						if (in_array(i, sessionCookie.brands)) {
							$('#brand_'+i).attr('checked', true);
							checkedVarFound = true;
						}
					}
				});
				if (sessionCookie && sessionCookie.stock) {
					if (sessionCookie.stock[0] == 1) {
						$('#stock').attr('checked', true);
						checkedVarFound = true;
					}
				}

				if (sessionCookie && sessionCookie.nieuw) {
					if (sessionCookie.nieuw[0] == 1) {
						$('#new').attr('checked', true);
						checkedVarFound = true;
					}
				}

				//check for a diff page
				var difP = getVar('bp');
				if (difP != '')	{
					//number?
					var filter=/^[0-9]+$/i
					if (filter.test(difP)) 	{
						handleSearch(difP, true);
					}else	{
						//uitgezet tegen het flikkeren
						if (checkedVarFound) {
							handleSearch(1, true);
						}
					}
				}else	{
					//uitgezet tegen het flikkeren
//					if (checkedVarFound) {
//						handleSearch(1, true);
//					}
					if ($.cookie('previousPage') == null || $.cookie('previousPage') == '' || $.cookie('previousPage') == $.cookie('currentPage')) {
						//uitgezet tegen het flikkeren
						if (checkedVarFound || resultsPerPage > 15) {
							handleSearch(1, true);
						} else {
							$('.itemOverview').css('display', 'block');
						}

					} else {
						if (resultsPerPage > 15) {
							handleSearch(1, true);
						} else {
							$('.itemOverview').css('display', 'block');
						}
					}
				}
	        });//end getJSON
		//});//end getScript
	}

	addFormAction();

	//add todobar on addvision/aencweb/ccms/localhost/ccmsd sites
	$.configureTodoBar();


});

function handleFromValidation()	
{
	//check all formfields on blur (leaving field)
	 if ($("form").length > 0 ) {
	 	 if (!$("form").hasClass("bijtellingForm") && !$("form").hasClass("co2Form"))	{
	 	 	 
			$("form input, form select").blur(function() {
				$.checkField($(this), 'isReq');
			});

			//check form on submit
			$('form').submit(function() {
				return $.checkForm($(this),'isReq');

			});
		 }

	}
}

function showHideItems(itemClass)
{
	var currentItem = false;
	var nextItem = false;
	var firstItem = 0;
	$(itemClass).each(function(i) {
		if (i == 0) {
			firstItem = $(this);
		}
		if ($(this).css('display') == 'block') {
			currentItem = $(this);
			if (i == homepageItemCounter-1) {
				nextItem = firstItem
			}
		} else if (currentItem !== false && nextItem === false) {
			nextItem = $(this);
		}
	});

	if (currentItem != undefined && nextItem != undefined) {
		currentItem.fadeOut(500, function() {
			nextItem.fadeIn(1500, function() {
				setTimeout('showHideItems(\'' + itemClass + '\')',showHideTimeout);
			});
		});
	}


}

function showResultsPerPage(results)
{
	$('#productsPerpage').val(results);
	$('#theFilterForm').submit();
}

function is_numeric (mixed_var) {

    return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var);
}


//Sorting by a field, reverse (true or false) and type of the field (int, string)
function sort_by(field, reverse, primer){

   reverse = (reverse) ? -1 : 1;

   return function(a,b){

       a = a[field];
       b = b[field];

       if (typeof(primer) != 'undefined'){
           a = primer(a);
           b = primer(b);
       }

       if (a<b) return reverse * -1;
       if (a>b) return reverse * 1;
       return 0;

   }
}

//Handles the filtering of the arg data(json) and orders it by the sortfield and given sortorder (false / true)
function handleFilterSorting(data,sortField,sortOrder)
{
	/*
	* Sorting order
	*/

	var x = data; //the main object with the data
	var yA = [data]; //the main object as an array
	var yAA = yA[0]; //the main object with direct key access
	var sortedData = new Object(); //the new sorted object


	var ini = new Array(); //array with the sortitems and the stuctuurid
	var def = new Array(); //array with only the correct sorted structuurids

	var eC = 0;
	$.each(x, function(count, c)	{

		//fill the ini array with the needed field
		ini[eC] = new Array(1);
		ini[eC][0] = this[sortField];
	    ini[eC][1] = this.structuurID;
	    eC = eC+1;

	});

	//print_r(ini,true);

	//check for result
	if (eC > 0)	{

		//decide the kindof data
		if (is_numeric(ini[0][0]))	{
			//sort the array on the sortedkey item (number)
			ini.sort(sort_by(0, sortOrder, parseInt));
		}else	{
			//sort the array on the sortedkey item (tekst)
			ini.sort(sort_by(0, sortOrder, function(a){return a.toUpperCase()}));
		}

		//push the structuurid in the def array
		$.each(ini, function(id, da)	{
			def.push(da[1]);
		});

		//chrome sorting object bugfix
		var ch = 0;
		//set the new order in the sortedData object
		$.each(def, function(ab, cd)	{
			sortedData[ch] = new Object();
			sortedData[ch] = yAA[cd];
			ch = ch+1;
		});

		return sortedData;

	}else	{
		return data;
	}


	/*
	* End sorting order
	*/
}


function getCompleteHtml(currentPage, isFirst, productsData)
{
	if (isFirst == undefined) {
		$('#loadingFilter').css('opacity', '0.6');
		$('#loadingFilter').fadeIn(100);
		$('#loadingProducts').css('opacity', '0.6');
		$('#loadingProducts').fadeIn(100);
	}
	if (currentPage == undefined) {
		page = 1;
	} else {
		page = currentPage;
	}

	if ($('#productGroepID').length > 0) {
		var productGroepID = $('#productGroepID')[0].value;
	} else {
		var productGroepID = false;
	}

	var checkedBoxes = '';
	var checkedBoxesForCookie = new Object();
	checkedBoxesForCookie.brands = new Array();
	checkedBoxesForCookie.stock = new Array();
	checkedBoxesForCookie.nieuw = new Array();
	checkedBoxesForCookie.tags = new Array();
	var checkedBrands = $('#brandsFieldset > input:checked');
	checkedBrandIDs = new Array();
	$.each(checkedBrands, function (i, val) {
		checkedBrandIDs[checkedBrandIDs.length] = val.value;
		checkedBoxes += '&brands[]=' + val.value;
		checkedBoxesForCookie.brands[checkedBoxesForCookie.brands.length] = val.value;
	});

	var checkedStock = $('#stockFieldset > input:checked');
	checkedStockIDs = new Array();
	$.each(checkedStock, function (i, val) {
		checkedStockIDs[checkedStockIDs.length] = val.value;
		checkedBoxes += '&stock[]=' + val.value;
		checkedBoxesForCookie.stock[checkedBoxesForCookie.stock.length] = val.value;
	});
	var checkedNew = $('#newFieldset > input:checked');
	checkedNewIDs = new Array();
	$.each(checkedNew, function (i, val) {
		checkedNewIDs[checkedNewIDs.length] = val.value;
		checkedBoxes += '&new[]=' + val.value;
		checkedBoxesForCookie.nieuw[checkedBoxesForCookie.nieuw.length] = val.value;
	});

	var checkedTags = $('.tagsFieldset > input:checked');
	checkedTagIDs = new Array();
	$.each(checkedTags, function (i, val) {
		var currentTagInputID = val.id;
		var splitted = currentTagInputID.split('_');
//		if (checkedTagIDs[splitted[1]] == undefined) {
//			checkedTagIDs[splitted[1]] = new Array();
//		}
		//checkedTagIDs[splitted[1]][checkedTagIDs[splitted[1]].length] = val.value;
		var tmp = new Array();
		tmp[tmp.length] = splitted[1];
		tmp[tmp.length] = val.value;
		checkedTagIDs[checkedTagIDs.length] = tmp;
		checkedBoxes += '&tags[]=' + val.value;
		checkedBoxesForCookie.tags[checkedBoxesForCookie.tags.length] = val.value;
	});
	var selectedMinPrijs = $("#prijsSlider").slider("values", 0);
	var selectedMaxPrijs = $("#prijsSlider").slider("values", 1);

	var productHTML = headerHTML = '';
	var productCountTotal = productCountFound = 0;
	var teller = 1;
	var countMe = 0;



	$.each(productsData, function(i, currentProduct) {
		//bepaap met welke prijs er gefilterd moet worden
		if ( showActie (this )  ) {
			var productPrijsVoorFilter = this.actie.prijs_unformatted;
		}	else {
			var productPrijsVoorFilter = this.prijs_unformatted;
		}

		//prijs hoger dan min slider
		if ( selectedMinPrijs <= productPrijsVoorFilter) {
			minPrijsFound = true;
		} else {
			minPrijsFound = false;
		}

		//prijs lager dan max slider
		if ( selectedMaxPrijs >= productPrijsVoorFilter ) {
			maxPrijsFound = true;
		} else {
			maxPrijsFound = false;
		}

		// product valt binnen prijs range
		if ( minPrijsFound && maxPrijsFound ) {

			//merk gevonden in aangevinkte brands
			if (checkedBrandIDs.length == 0 || in_array(this.merk, checkedBrandIDs)) {

				//product doorzoeken op tags
				tagsFound = 1;
				//$.each(checkedTagIDs, function (tagGroupID,tagGroupTagsChecked) {
					$.each(checkedTagIDs, function (x,xTag) {
						tagGroupID = xTag[0];
						tagGroupTagsChecked = new Array();
						tagGroupTagsChecked[0] = xTag[1];
						if (tagsFound > 0 && tagGroupTagsChecked != undefined) {
							tagsFound = 0;
							if (tagGroupTagsChecked != undefined) {
								if (currentProduct.taggroups != undefined) {
									$.each(currentProduct.taggroups, function (productTagGroupID, productTagGroupTags) {
										$.each(productTagGroupTags.tags, function (productTagID, val) {
											if (in_array(productTagID, tagGroupTagsChecked)) {
												tagsFound++;
											}
										});
									});
								}
							}
						}
					});
				//});

				//stijl gevonden in aangevinkte stijlen
				if (checkedTagIDs.length == 0 || tagsFound > 0 ) {

					//doorzoeken van producten op voorraad
					stockFound = 0;
					if (checkedStockIDs.length > 0) {
						if (this.artikelen != undefined) {
							$.each(this.artikelen, function (i, val) {
								if (val.voorraad > 0) {
									stockFound++;
								}
							});
						}
					}

					//doorzoeken van producten op new
					newFound = 0;
					if (checkedNewIDs.length > 0) {
						if (this.isNew > 0) {
							newFound++;
						}
					}

					//@TODO voorraad telling fout

					//alle maten die zijn aangevinkt zijn op voorraad
					//if (checkedStockIDs.length == 0 || stockFound > 0) {
					if (checkedNewIDs.length == 0 || newFound > 0) {
						//if (productCountTotal == 0) {
							if ( (productCountFound >= ( (page-1) * resultsPerPage) )
								&& (productCountFound < (page * resultsPerPage) )
							)
							{

								productHTML += getProductHTML(currentProduct, page, teller);


								if (teller == 3) teller = 0;

								teller++;
							}
						//}
						productCountFound++;
					}

				}
			}
		}

		productCountTotal++;
	});

	if (productHTML == '' || productCountFound == 0) {
		productHTML = 'Er zijn geen resultaten gevonden.';
	}


	pagingHTML = $.getPaging(page, productCountFound, resultsPerPage);
	$('.pageNr').html(pagingHTML);
	$('.content_bb').html('<div class="pageNr">'  + pagingHTML + '</div>' + productHTML + '<div class="clear">&nbsp;</div><div class="pageNr">'  + pagingHTML + '</div>');
	$('#loadingFilter').fadeOut(200);
	$('#loadingProducts').fadeOut(200);

//save checked items to session through ajax
//	if (skipSave == undefined || skipSave != true) {
//		$.ajax({
//			url: "/handleFilterSession.php",
//			type: "POST",
//			data: 'action=saveSession&productGroepID=' + productGroepID + checkedBoxes + '&min_prijs=' + selectedMinPrijs  + '&max_prijs=' + selectedMaxPrijs,
//			dataType: "html",
//			cache: false
//		});
		$.cookie('productGroepIDCookie', productGroepID);
		$.cookie('selectedMinPrijsCookie', selectedMinPrijs);
		$.cookie('selectedMaxPrijsCookie', selectedMaxPrijs);
		$.cookie('checkedBoxesCookie', JSON.stringify(checkedBoxesForCookie));
//	}

	/**
	* Process sortering clicks
	*/

	//decide the sorting use
	if (useSorting && $(".sortering").length > 0)	{

		//check the current sorting
		$.getScript('/handleFilterSession.php?action=loadSorting&currentGroupID='+currentProductGroupID, function(dataSorting) {

			//check the vars
			if (currentSortingField != '')	{

				//get the classtype
				if (currentSortingOrder)	{
					var curClass = 'sort_down';
				}else	{
					var curClass = 'sort_up';
				}

				//set the classes
				$("a.sortering[rel="+currentSortingField+"]").addClass(curClass);

			}
		});


		//handle the clicks
		$("a.sortering").click(function()	{

			//sorting info
			var sortField = $(this).attr("rel");
			var sortOrder = 1;

			if ($(this).hasClass("sort_down"))	{
				$(this).removeClass("sort_down").addClass("sort_up");
				var sortOrder = 0;
			}else if ($(this).hasClass("sort_up"))	{
				$(this).removeClass("sort_up").addClass("sort_down");
				var sortOrder = 1;
			}else 	{
				//no class atall
				$(this).addClass("sort_down");
			}
			//remove the existing sorting
			$("a.sortering").not($(this)).removeClass("sort_up").removeClass("sort_down");

			//save the new sorting order to the session
			$.ajax({
				url: "/handleFilterSession.php",
				type: "POST",
				data: 'action=saveSorting&productGroepID=' + productGroepID + '&sortingField=' + sortField + '&sortingOrder=' + sortOrder,
				dataType: "html",
				cache: false,
				complete: function(XMLHttpRequest, textStatus) {
					handleSearch(1, true);
				}
			});

		})

	}

	/**
	* End process sortering clicks
	*/

}

function fiscaleBijtellingFunctions()
{	
	
	//handle captha show
	//handleCapchaView();
	//handle mail from
	handleMailCalculation('calcBijtelling');
		
	//handle the info click
	if ($("div.fieldInfoHolder").length > 0)	{		
		$("a.field_info").click(function()	{
			
			var infoDiv = 'field_info_' + $(this).attr("id");
			
			$("div." + infoDiv).dialog({
				height: 140,
				modal: true
			});
			
		});		
	}
	
	//set the numeric fields
	$("input#catalogusprijs, input#eigen_bijdrage").keyup(function()	{
		this.value=this.value.replace(/[^0-9]/g, '');
	});
	
	
	//handle the calculation on every blur of a field
	$("form.bijtellingForm input[type=text]:not([name=email],[name=capcha]), form.bijtellingForm select").blur(function()	{
		
		$(".calculateLoad").show();
		
		//get all the fields		
		postData = $("form.bijtellingForm input[type=text]:not(.disabled), form.bijtellingForm select").serializeArray();
		
		//send the request
		$.ajax({
			url: "/javascript/ajaxRequests/calculateBijtelling.php",
			type: "POST",
			data: postData,			
			dataType: "json",			
			success: function(jsonData) {								
				$("input#fiscale_bijtelling").val(jsonData.fiscale_bijtelling);
				$("input#prive_kosten").val(jsonData.prive_kosten);
			},complete: function()	{
				$(".calculateLoad").hide();
			}
		});		
		
	});	
}

function co2Functions()
{
	
	//handle captha show
	//handleCapchaView();
	//handle mail from
	handleMailCalculation('calcCO2');
	
	//set the numeric fields
	$("input#uitstoot, input#jaarkilometrage_self").keyup(function()	{
		this.value=this.value.replace(/[^0-9]/g, '');
	});
	
	//handle the select boxen
	$("form.co2Form select").change(function()	{
		
		var nextIndex = $("form.co2Form select").index(this) + 1;
		var currentVal = 
		
		//reset the next form items
		$(this).nextAll("select, input[type=text]:not([name=email])").val('').attr("disabled","disabled").each(function()	{
			if ($(this).attr("name") != 'jaarkilometrage')	{
				$(this).children("option:not(:first)").remove();
			}
		});
		$("form.co2Form input[name=totale_uitstoot]").val('');
		
		//activate the next select
		$("form.co2Form select").eq(nextIndex).removeAttr("disabled");
		
		//check for diff kilometrage
		if ($(this).attr("name") == 'jaarkilometrage' && $(this).val() == 'a')	{
			
			//show the input
			$("div.diffKm").show();
			$("input[name=jaarkilometrage_self]").blur(function()	{
				$("form.co2Form input[name=uitstoot]").trigger("blur");
			})
		}else	{
			$("input[name=jaarkilometrage_self]").val('');
			$("div.diffKm").hide();
		}
		
		//check for the end of the selectors
		if ($("form.co2Form select").eq(nextIndex).attr("name") == undefined)	{
			//activate the input field
			$("form.co2Form input[name=uitstoot]").removeAttr("disabled");
			
			//get the co2grKm
			var typeIDIndex = $("form.co2Form select").index(this) - 1;
			$(".calculateLoadCO2").show();
		
			//get the next value or dropdown
			$.ajax({
				url: "/javascript/ajaxRequests/calculateCO2.php",
				type: "POST",
				data: "need=co2grKm&typeID="+$("form.co2Form select").eq(typeIDIndex).val(),			
				dataType: "html",			
				success: function(data) {
									
					$("form.co2Form input[name=uitstoot]").val(data);
					$("form.co2Form input[name=uitstoot]").trigger("blur");
					
				},complete: function()	{
					$(".calculateLoadCO2").hide();
				}
			});		
			
		}
		
		$(".calculateLoadCO2").show();
		
		//get the next value or dropdown
		$.ajax({
			url: "/javascript/ajaxRequests/calculateCO2.php",
			type: "POST",
			data: "need=selectRow&curSelect="+$(this).attr("name")+"&curVal="+$(this).val()+"&nextSelect="+$("form.co2Form select").eq(nextIndex).attr("name"),			
			dataType: "html",			
			success: function(data) {
								
				$(data).appendTo($("form.co2Form select:eq("+nextIndex+")"));
				
			},complete: function()	{
				$(".calculateLoadCO2").hide();
			}
		});
		
	});
	
	$("form.co2Form input[name=uitstoot]").blur(function()	{
		
		//get the kilomatrage
		var kmjaar = $("form.co2Form select[name=jaarkilometrage]").val();
		if (kmjaar == 'a')	{
			kmjaar = $("form.co2Form input[name=jaarkilometrage_self]").val();
		}
		if (kmjaar != undefined && kmjaar > 0 && $(this).val() != undefined && $(this).val() > 0)	{
			
			var totalGrJr = $(this).val() * kmjaar;
			var totalKgJr = totalGrJr / 1000;
			
			var total = totalKgJr / 1000;
			
			total = number_format (total, 2, ',', '.')
			
			$("form.co2Form input[name=totale_uitstoot]").val(total);
		}
		
	});
}

function handleExtraTextCustomer()
{
	//check the hash
	var wHash = window.location.hash;
	if (wHash != "") {
		$.ajax({
			url: "/javascript/ajaxRequests/extraCustText.php",
			type: "POST",
			data: "wHash="+wHash,
			dataType: "html",			
			success: function(data) {								
				$("div.extraCustInfo").html(data);				
			}
		});
	}
		
}

function handleCapchaView()
{
	if ($("input.capInput").length > 0)	{
		$.getScript('/javascript/jcap.js', function() {
			var capHtml = sjcap();
			$("input.capInput").attr({
				name : capHtml[0],
				id : capHtml[0]
			});
			$("img.capImg").attr("src", capHtml[1]+'.jpg');
			$.cookie('secMail','string' + capHtml[2]);
		})

		//handle new img click
		$("a.newCap").click(function()	{
			$.getScript('/javascript/jcap.js', function() {
				var NewCapHtml = sjcap();
				$("input.capInput").attr({
					name : NewCapHtml[0],
					id : NewCapHtml[0]
				});
				$("img.capImg").attr("src", NewCapHtml[1]+'.jpg');		
				$.cookie('secMail','string' + NewCapHtml[2]);		
			});
		})
	}
}

function handleMailCalculation(mailField)
{
	if (mailField != undefined)	{

		//handle the show and hide from the capthaform
		$("input." + mailField).focus(function()	{
			leegmaken(this.id, lbl_fb_email_value);
			$("div.capthaHolder").show();
			$("div.sendInfo").html('');
			handleCapchaView();
		}).blur(function()	{
			if ($(this).val() == '')	{
				$("div.capthaHolder").hide();
				vullen(this.id, lbl_fb_email_value);
			}			
		});
		
		if (mailField == 'calcBijtelling')	{
			
			//bijtellingsform
			$("input[type=submit].emailSubmit").click(function()	{
								
				//check the email and captha on validation
				var capcha = true;
				if ($("input.capInput").length > 0)	{
					capcha = jcap();
				}
				
				var emailFill = false;
				if ($("input.calcBijtelling").val() != '')	{
					emailFill = true;
				}
				
				if (capcha == false)	{
					$("input.capInput").css('border','1px solid red');
				}else	{
					$("input.capInput").css('border','1px solid #DADADA');
				}
				
				if (capcha == true && emailFill == true)	{
					
					//send the form
									
					$(".calculateLoad").show();
					//un disable the fields
					//$("input#fiscale_bijtelling, input#prive_kosten").removeAttr("disabled");
					//get all the fields		
					postData = $("form.bijtellingForm input[type=text], form.bijtellingForm select").serializeArray();
					
					//$("input#fiscale_bijtelling, input#prive_kosten").attr("disabled","disabled");
					
					
					//send the request
					$.ajax({
						url: "/javascript/ajaxRequests/sCalculation.php?f=cb",
						type: "POST",
						data: postData,			
						dataType: "html",			
						complete: function(XMLHttpRequest, textStatus) {
							var resHtml = XMLHttpRequest.responseText;
							if (resHtml == '1')	{
								$("div.sendInfo").html(lbl_mail_success).css("color","#0F9EFF");
								$("input.capInput").val('');
								$("input.calcBijtelling").val('').trigger('blur');
							}else	{
								$("div.sendInfo").html(lbl_mail_error).css("color","red");
								$("input.capInput").val('');
								$("input.calcBijtelling").val('').trigger('blur');							
							}
							$(".calculateLoad").hide();
						}
					});
				}
			});
			
			
		}else if (mailField == 'calcCO2')	{
			
			//co2from
			$("input[type=submit].emailSubmit").click(function()	{
								
				//check the email and captha on validation
				var capcha = true;
				if ($("input.capInput").length > 0)	{
					capcha = jcap();
				}
				
				var emailFill = false;
				if ($("input.calcCO2").val() != '')	{
					emailFill = true;
				}
				
				if (capcha == false)	{
					$("input.capInput").css('border','1px solid red');
				}else	{
					$("input.capInput").css('border','1px solid #DADADA');
				}
				
				if (capcha == true && emailFill == true)	{
					
					//check for complete calculation
					if ($("select:disabled").length == 0 && $("input#uitstoot:disabled").length == 0)	{
					
						//send the form
										
						$(".calculateLoadCO2").show();
						
						//un disable the fields
						$("input#totale_uitstoot").removeAttr("disabled");
						//get all the fields		
						//postData = $("form.co2Form input[type=text], form.co2Form select").serializeArray();
						postData = 'merk='+$('select[name=merk] option[value='+$('select[name=merk]').val()+']').html() + '&model='+$('select[name=model] option[value='+$('select[name=model]').val()+']').html() + '&type='+$('select[name=type] option[value='+$('select[name=type]').val()+']').html() + '&jaarkilometrage='+$('select[name=jaarkilometrage]').val()+'&uitstoot='+$('input[name=uitstoot]').val()+'&totale_uitstoot='+$('input[name=totale_uitstoot]').val()+'&email='+$('input[name=email]').val()+'&uword='+$('input[name=uword]').val();
						
						$("input#totale_uitstoot").attr("disabled","disabled");
						
						//send the request
						$.ajax({
							url: "/javascript/ajaxRequests/sCalculation.php?f=co2",
							type: "POST",
							data: postData,			
							dataType: "html",			
							complete: function(XMLHttpRequest, textStatus) {
								var resHtml = XMLHttpRequest.responseText;
								if (resHtml == '1')	{
									$("div.sendInfo").html(lbl_mail_success).css("color","#0F9EFF");
									$("input.capInput").val('');
									$("input.calcCO2").val('').trigger('blur');
								}else	{
									$("div.sendInfo").html(lbl_mail_error).css("color","red");
									$("input.capInput").val('');
									$("input.calcCO2").val('').trigger('blur');
								}
								$(".calculateLoadCO2").hide();
							}
						});
					}else	{
						$("div.sendInfo").html(lbl_co2_form_incomplete).css("color","red");
						$("input.capInput").val('');
						$("input.calcCO2").val('').trigger('blur');
					}
				}
			});
			
		}		
	}
	return false;
}


function handleSearch(currentPage, isFirst)
{

	//load products in this productgroup
	//$.getJSON('/json/products_'+currentProductGroupID+'_' + flag + '.json', false, function(data, textStatus){
		data = productData;

		//check sorting enabled
		if (useSorting)	{

			//get the current sorting
		   	$.getScript('/handleFilterSession.php?action=loadSorting&currentGroupID='+currentProductGroupID, function(dataSorting) {

				//check the vars
				if (currentSortingField != '')	{
					newSortedData = handleFilterSorting(data.products,currentSortingField,currentSortingOrder);
				}else	{
					//use the basic
					newSortedData = data.products;
				}

				getCompleteHtml(currentPage, isFirst, newSortedData);

			});
		}else	{
			newSortedData = data.products;
			getCompleteHtml(currentPage, isFirst, newSortedData);
		}


	//});
}

$.getPaging = function(page, productCountFound, resultsPerPage, functionCall)
{
	var prev = parseInt(page) - 1;                            					//previous page is page - 1
	var next= parseInt(page) + 1;                            						//next page is page + 1
	var lastpage = Math.ceil(productCountFound / resultsPerPage);       //lastpage is = total pages / items per page, rounded up.
	var lpm1 = lastpage - 1;                      						//last page minus 1

	if (functionCall == undefined) {
		functionCall = 'handleSearch';
	}

	var pagingHTML = '';
	if (lastpage > 1) {
		//previous button
		if (page > 1) {
			pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + prev + ');" class="page_next">Vorige</a>';
		} else {
			pagingHTML += '<span class="disabled">Vorige</span>';
		}

		//don't break up
		if (lastpage < 7 + (adjacentPages * 2)) {
			for (i = 1; i <= lastpage; i++) {
				if (i == page)	{
		            pagingHTML += '<span class="current">' + i + '</span>';
				} else {
		            pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + i + ');">' + i + '</a>';
				}
			}
		} else if (lastpage > 5 + (adjacentPages * 2) ) {//enough pages to hide some
		    //close to beginning; only hide later pages
		    if(page < 1 + (adjacentPages * 2)) {
		        for (i = 1; i < 4 + (adjacentPages * 2); i++) {
		            if (i == page)	{
		                pagingHTML += '<span class="current">' + i + '</span>';
					}else	{
		                pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + i + ');">' + i + '</a>';
					}
		        }
		        pagingHTML += '<strong>...</strong>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + lpm1 + ');">' + lpm1 + '</a>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + lastpage + ');">' + lastpage + '</a>';
		    } else if(lastpage - (adjacentPages * 2) > page && page > (adjacentPages * 2)) {

	    		//in middle; hide some front and some back
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(1)">1</a>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(2)">2</a>';
		        pagingHTML += '<strong>...</strong>';
		        for (i = page - adjacentPages; i <= page + adjacentPages; i++)
		        {
		            if (i == page)	{
		                pagingHTML += '<span class="current">' + i + '</span>';
					}else	{
		                pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + i + ')">' + i + '</a>';
					}
		        }
		        pagingHTML += '<strong>...</strong>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' +  lpm1 + ')">' + lpm1 + '</a>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + lastpage + ')">' + lastpage + '</a>';
		    } else {
	    		//close to end; only hide early pages
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(1)">1</a>';
		        pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(2)">2</a>';
		        pagingHTML += '<strong>...</strong>';
		        for (i = lastpage - (2 + (adjacentPages * 2)); i <= lastpage; i++)
		        {
		            if (i == page)	{
		                pagingHTML += '<span class="current">' + i + '</span>';
					}else	{
		                pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + i + ')">' + i + '</a>';
					}
		        }
		    }
		}

		//next button
		if ( next <= lastpage) {
			pagingHTML += '<a href="#cartoverview" onclick="' + functionCall + '(' + next + ');" class="page_next">Volgende</a>';
		} else {
			pagingHTML += '<span class="disabled">Volgende</span>';
		}
	}
	return pagingHTML;
}

function getVar( name )
{
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null ) {
		return "";
	} else {
		return results[1];
	}
}

function checkStock(number, articleID)
{
	if (articleID > 0) {
		$.getJSON('/json/products_'+currentProductGroupID+'_' + flag + '.json', false, function(data, textStatus){
			var validStock = false;
			var stockFound = 0;
			$.each(data.products, function() {
				if (this.artikelen != undefined) {
					$.each(this.artikelen, function (i, val) {
						if (i == articleID) {
							if (number <= val.voorraad) {
								validStock = true;
							} else {
								stockFound = val.voorraad;
							}
						}
					});
				}
			});
			if (!validStock) {
				if (stockFound == 0) {
					alert('Er zijn helaas geen artikelen op voorraad!');
				} else if (stockFound == 1) {
					alert('Er is helaas nog maar ' + stockFound + ' artikel op voorraad!');
				} else {
					alert('Er zijn helaas nog maar ' + stockFound + ' artikelen op voorraad!');
				}
				$('#quantity').val(stockFound);
			}
		});
	}
}

$.preloadImages = function()
{
  for(var i = 0; i<arguments.length; i++)
  {
	$("<img>").attr("src", arguments[i]);
  }
}

function showResultsPerPage(results)
{
	$('#productsPerpage').val(results);
	$('#theFilterForm').submit();
}

function submitFilterForm()
{
	$('#page').val('1');
	$('#theFilterForm').submit();
}

//add action to filterform
function addFormAction()
{
	$('#theFilterForm').submit(function() {
		//display loadingdiv
		$("#loadingFilter").css('opacity', '0.5');
		$("#loadingFilter").css('display','block');
		$("#loadingProducts").css('opacity', '0.5');
		$("#loadingProducts").css('display','block');
		var inputs = $("#theFilterForm :input");
		var filterUrl = '';
		//create filterAjaxurl
		inputs.each(function(i){
			if ($(this).attr('type') == 'checkbox' && $(this).attr('checked') == true) {
				if (filterUrl == '') {
					filterUrl =  $(this).attr('name') + '=' + $(this).val()
				} else {
					filterUrl =  filterUrl + '&' + $(this).attr('name') + '=' + $(this).val()
				}
			} else if ($(this).attr('type') == 'text' || $(this).attr('type') == 'hidden') {
				if (filterUrl == '') {
					filterUrl =  $(this).attr('name') + '=' + $(this).val()
				} else {
					filterUrl =  filterUrl + '&' + $(this).attr('name') + '=' + $(this).val()
				}
			}
 		});

 		//process ajaxrequest
		$.ajax({
			url: "/filterProducts.php",
			type: "POST",
			data: filterUrl,
			dataType: "html",
			//cache: false,
			success: function(responseHtml) {
				var $holder = $('<div/>').html(responseHtml);
				//update filterDiv
				$('#productFilter').html($('#productFilter', $holder).html());
				//update productresultdiv
				$('.content_bb').html($('#productsFound', $holder).html());

				$("#loadingFilter").css('display','none');
				$("#loadingProducts").css('display','none');
				addFormAction();
			}
		});
		return false;
	});
}

function showLoginError(elementName){

	var element = document.getElementById(elementName);

	$.modal($(element),{

    	minHeight:17,
		containerCss:{backgroundColor:"#fff",height:120,padding:0,width:322},

		onOpen: function(dialog)
		{
			dialog.overlay.fadeIn('fast', function () {
				dialog.container.slideDown('normal', function () {
					dialog.data.fadeIn('normal');

					element.style.visibility = 'visible';


				});
			});
		},
		onClose: function(dialog)
		{
			dialog.overlay.fadeOut('fast', function () {
				dialog.container.fadeOut('fast', function () {
					dialog.data.fadeOut('fast', function () {

						$.modal.close(); // must call this!
						$("#klantLoginFoutMeldingen").remove(); // and this too!

					});
				});
			});
		}

	});
}


function showHideFilter()
{
	if ($("#filter").css('display') == 'block') {
		$("#filter").slideUp('slow', function() {
			$("#headFilter").css('margin-bottom', '10px');
		});

		$("#headFilter").removeClass('head_filter_active');
	} else {
		$("#filter").slideDown('slow');
		$("#headFilter").addClass('head_filter_active');
		$("#headFilter").css('margin-bottom', '0px');

	}
}

function showResultPage(number)
{
	$('#page').val(number);
	$('#theFilterForm').submit();
}

function uncheckFilter(id)
{
	$('#' + id + 'Fieldset > input').attr('checked', false);
	$('#theFilterForm').submit();
}

// check whether fieldvalue is unique or not
function checkFieldValue( structuurid, eigenschapnaam, element ){

		// error span verwijderen
		var id = $(element).attr('id') + '_error';
		var value = element.value;

		if (value.length > 0) {

			filterUrl =  'action=checkduplicate&id='+ structuurid + '&esnaam=' + eigenschapnaam + '&value=' + value;

 			//process ajaxrequest
			$.ajax({
				url: "/ajaxrequests.php",
				type: "POST",
				data: filterUrl,
				dataType: "html",
				cache: false,
				success: function(responseHtml) {


					if (responseHtml != 'false') {

						$("#"+id+"").remove();
						// add span
						$(element).after('<span id="' + id +'" class="error">' + responseHtml + '</span>');
						//for (var x in element ) alert(x);

					}
				}
			});

		}
}

// check length of field value
function checkFieldLength( element, min, max ){

		// error span verwijderen
		var id = $(element).attr('id') + '_error';
		var value = element.value;

		$("#"+id+"").remove();

		if ((value.length < min) || (value.length > max)){
			// add span
			$(element).after('<span id="' + id +'" class="error">Aanbevolen lengte is tussen ' + min + ' en ' + max + '.</span>');
			//for (var x in element ) alert(x);

		}
}


//laden van netto prijzen, in structuurIDPrices zitten 1 of meerdere structuren met hun prijs structuurID:prijs;structuurID2;prijs2
function loadDiscountPrices(structuurIDPrices)
{
	$.ajax({
		url: "/ajaxrequests.php",
		type: "POST",
		data: 'action=loadDiscountPrices&structuurIDPrices='+structuurIDPrices,
		dataType: "html",
		success: function(responseHtml) {
			var $holder = $('<div/>').html(responseHtml);
			var $children = $holder.children('div');
			$.each($children, function(val, i) {
				$('#' + i.id).html(i.innerHTML);
			});
		}
	});

}

function calcSliderStep( priceDiff )
{
	if (priceDiff > 50000)
		return 1000;
	else if (priceDiff > 20000)
		return 500;
	else if (priceDiff > 5000)
		return 100;
	else if (priceDiff > 2000)
		return 50;
	else if (priceDiff > 500)
		return 10;
	else if (priceDiff > 200)
		return 5;
	else return 1;
}

function showActie( product )
{
	if (product.in_actie == 1) {

		// check of datum tussen publicatiedatum en archiveringsdatum ligt
		var tsNow = Math.round(new Date().getTime() / 1000);
		var tsVan = product.actie.publicatiedatum;
		var tsTot = product.actie.archiveringsdatum;

		if (( tsNow > tsVan ) && ( tsNow <  tsTot ))
				return true;
		else 	return false;

	}
}

function resetProductFilter( )
{

	var minVal = $("#prijsSlider").slider( "option", "min");
	var maxVal = $("#prijsSlider").slider( "option", "max");

	$("#prijsSlider").slider({	values: [ minVal, maxVal ]	});
	$("#prijsMin").html(currencySymbol + minVal);
	$("#prijsMax").html(currencySymbol + maxVal);

	$('#brandsFieldset > input:checked').each( function (i) {
		$(this).attr("checked", false);
	});


	$('#taggroups > .scroller > .tagsFieldset > input:checked').each( function (i) {
		$(this).attr("checked", false);
	});


	$('#stylesFieldset > input:checked').each( function (i) {
		$(this).attr("checked", false);
	});

	$('#newFieldset > input:checked').each( function (i) {
		$(this).attr("checked", false);
	});

    if (useSorting)	{
		$.ajax({
			url: "/handleFilterSession.php",
			type: "POST",
			data: 'action=resetSorting',
			dataType: "html",
			cache: false
		});
	}

}

var actions = new Array();
var numberOfActions = 0;
var currentAction = 0;
function loadActions()
{
	$.ajax({
		url: "/ajaxrequests.php",
		type: "POST",
		data: 'action=loadActions',
		dataType: "html",
		cache: false,
		success: function(responseHtml) {
			var $holder = $('<div/>').html(responseHtml);
			numberOfActions = $('#numberOfActions', $holder).html();
			if (numberOfActions > 0) {
				$('#actieBalk').show();
				for (i = 1; i <= numberOfActions; i++) {
					actions[actions.length] = $('#actie_' + i, $holder).html();
				}
				showAction(true);
			}
		}
	});
}

function showAction(first)
{
	currentAction++;
	if (first == undefined) {
		$('#actionContainer').fadeOut(1000, function() {
			$('#actionContainer').html(actions[currentAction]);
			$('#actionContainer').fadeIn(1000);
		});
	} else {
		currentAction = 0;
		$('#actionContainer').html(actions[currentAction]);
	}

	if (currentAction == numberOfActions) {
		currentAction = 0;
	}
	if (numberOfActions > 1) {
		setTimeout('showAction();', 8000);
	}
}


function getProductHTML(product, page, teller)
{
	var productHTML='';

	if (teller == 3) {
		productLastClass = ' ';
	} else {
		productLastClass = '';
	}
	if (documentLocation.length == 1) {
		currentLink = product.link_static + '?p='+page;
	} else {
		currentLink = product.link_dynamic + '&p='+page;
	}


	productHTML += '<div class="productWrap' + productLastClass + '">';
	productHTML += '<div class="head">';
	productHTML += '<a href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">';
	if (product.productNewSale != '' ) {
		productHTML += '<span class="new">' + product.productNewSale + '</span> ';
	}

	productHTML += product.merknaam + ' ' + product.productnaam + '</a>';
	productHTML += '</div>';
	productHTML += '<div class="box">';
	productHTML += '<table width="224" style="height: 126px; text-align: center;"><tr><td>';
	productHTML += '<div class="spaceFix img">';
	productHTML += '<a class="img" href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">';
	productHTML += '<img src="/media/224x126/' + product.voorzijde + '" alt="' + product.merknaam + ' ' + product.productnaam + '"  id="img_front_' + product.structuurID + '"></a>';// onmouseover="showBack(\'img_front_' + product.structuurID + '\',\'img_back_' + product.structuurID + '\');"
	productHTML += '</div>';
	productHTML += '</td></tr></table>';
	productHTML += '<div class="PaddingText text">';
	productHTML += product.korte_omschrijving;

	productHTML += '</div>';




	if ( showActie( product ) == true) {
		productHTML += '<div class="prijs prijs_actie">Actie!';
		productHTML += '<span class="van" style="text-decoration: line-through;">' + product.actie.prijs_van + '</span>';
		productHTML += '<div class="clear"></div>';
		productHTML += '<span class="voor">' + product.actie.prijs + '</span></div>';
	} else {
		productHTML += '<div class="price">';

		if (product.prijs_van != '' && product.prijs_van != undefined) {
			//productHTML += '<span class="oldPrice"><strong>Van: </strong><span class="floatLeft" style="text-decoration: line-through;"> ' + product.prijs_van + '</span></span>';
			productHTML += '<div class="floatLeft"><strong>' + lbl_voor + ': </strong><span style="text-decoration: line-through;">' + product.prijs_van + '</span></div>';
			productHTML += '<div class="clear">&nbsp;</div>';
		}
			productHTML += '<span class="userPrice floatLeft">' + lbl_voor + ': ' + product.prijs + '</span>';
			productHTML += '<a class="more"  href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">&nbsp;</a>';
	}

	productHTML += '</div>';

	if (product.achterzijde != undefined && product.achterzijde != '') {
		productHTML += '<img src="/media/224x126/' + product.achterzijde + '" alt="' + product.merknaam + ' ' + product.productnaam + '" style="display: none;" id="img_back_' + product.structuurID + '" onmouseout="hideBack(\'img_front_' + product.structuurID + '\',\'img_back_' + product.structuurID + '\');">';
	}
	productHTML += '</a>';

	productHTML += '</div>';
//	productHTML += '<div class="clear">&nbsp;</div>';

	productHTML += '</div>';


// new
/*
	productHTML += '<div  class="box box_product' + productLastClass + '">';
	productHTML += '	<div class="img">';

	if ( showActie( product ) == true) {
		productHTML += '<div class="prijs prijs_actie">Actie!';
	} else {
		productHTML += '		<div class="prijs">';
	}

	if (product.prijs_van != '' && product.prijs_van != undefined) {
		productHTML += '			<span class="van" style="text-decoration: line-through;">' + product.prijs_van + '</span>';
	}

	if ( showActie( product ) == true) {
	productHTML += '			<span class="voor">' + product.actie.prijs + '</span>';
	} else {
	productHTML += '			<span class="voor">' + product.prijs + '</span>';
	}
	productHTML += '		</div>';
	productHTML += '		<a href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">';
	productHTML += '		<img id="img_front_' + product.structuurID + '" src="/media/393x110/' + product.voorzijde + '" alt="' + product.merknaam + ' ' + product.productnaam + '" onmouseover="showBack(\'img_front_' + product.structuurID + '\',\'img_back_' + product.structuurID + '\');">';

	if (product.achterzijde != '') {
		productHTML += '<img src="/media/393x110/' + product.achterzijde + '" alt="' + product.merknaam + ' ' + product.productnaam + '" id="img_back_' + product.structuurID + '" style="display: none;" onmouseout="hideBack(\'img_front_' + product.structuurID + '\',\'img_back_' + product.structuurID + '\');">';
	}
	productHTML += '		</a>';
	productHTML += '		<div class="wrap">';
	productHTML += '			<strong>Type:</strong>&nbsp;' + product.type + '<br>';
	productHTML += '			<strong>Merk:</strong>&nbsp;' + product.merknaam;
	productHTML += '		</div>';
	productHTML += '	</div>';
	productHTML += '	<div class="box_info_footer">';
	productHTML += '		<a class="product_link floatLeft" href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">' + product.productnaam + '</a>';
	productHTML += '		<a class="more" href="' + currentLink + '" title="' + product.merknaam + ' ' + product.productnaam + '">&nbsp;</a>';
	productHTML += '		<div class="clear">&nbsp;</div>';
	productHTML += '	</div>';
	productHTML += '	<div class="box_bottom">&nbsp;</div>';
	productHTML += '	<div class="clear">&nbsp;</div>';
	productHTML += '	<div class="clear">&nbsp;</div>';
	productHTML += '</div>';
*/
//alert(productHTML);
	return productHTML;

}

function handleBrands(currentPage) {

		var productCountFound = productCountTotal = 0;
		var productHTML = '';
		var teller = 1;

		if (currentPage == undefined) {
			page = 1;
		} else {
			page = currentPage;
		}


		$.getScript('/handleFilterSession.php?action=loadSession&currentGroupID='+currentBrandID, function(data) {
			$.getJSON('/json/brands_'+currentBrandID+'_' + flag + '.json', false, function(data, textStatus){

				$.each(data.products, function() {
					if ( this.merk == currentBrandID) {
						if ( (productCountFound >= ( (page-1) * resultsPerPage) )
							&& (productCountFound < (page * resultsPerPage) )
						) {

							productHTML += getProductHTML(this, page, teller);

							if (teller == 3) {
								teller = 0;
							}

							teller++;
						}
						productCountFound++;
					}

					productCountTotal++;

				});

				pagingHTML = $.getPaging(page, productCountFound, resultsPerPage, 'handleBrands');
				$('.pageNr').html(pagingHTML);
				$('#concent_bb_search').html('<div class="pageNr">'  + pagingHTML + '</div><div class="clear"></div>' + productHTML + '<div class="clear"></div><div class="pageNr">'  + pagingHTML + '</div>');

			});//end getJSON

		});//end getScript

}

function addScript(url)
{
	var script=document.createElement('script');
	script.type='text/javascript';
	script.src=url;

	$("body").append(script);
}


function removeCurrencySymbol( price) {

	price = str_replace ('&#8364;', '', price, 1)

	return price;
}

function loginUserInProcess()
{
	tjek();
	clearBoxCookies();

	$.ajax({
		url: "/modules/klanten/login.php",
		type: "POST",
		data: 'ajax=true&emailLogin='+$('#emailLoginCustomer').val()+ '&passwordLogin=' +$('#passwordLoginCustomer').val(),
		cache: false,
		success: function(responseHtml) {

			var $holder = $('<div/>').html(responseHtml);
			if ($('#klantLoginFoutMeldingen', $holder).length > 0) {
				var klantLoginFoutMeldingen = $('#klantLoginFoutMeldingen', $holder).html();
				if ($('div.inhoud > #klantLoginFoutMeldingen').length > 1) {
					$('div.inhoud > #klantLoginFoutMeldingen').html(klantLoginFoutMeldingen);
				} else {
					$('div.inhoud').append(responseHtml);
				}
				showLoginError('klantLoginFoutMeldingen');
			} else {
				//box hiden en gegevens updaten
				eval($('#java', $holder).html());
				$('#div_account').html('');
				$('#div_account').css('display','none');
				$('#customerLogin').css('display','none');
			}
		}
	});
	return false;
}
function showAnswer(id)
{
	if ($('#'+id).css('display') == 'none') {
		$('.opened_answer').removeClass('opened_answer').slideUp(500);
		$('#'+id).slideDown(500).addClass('opened_answer');
	} else {
		$('#'+id).removeClass('opened_answer').slideUp(500);
	}
}


$.initiateCufon = function() {
	Cufon.replace('h1,h2,h3,ul#hoofdmenu li a,ul#kruimelspoorul li a, ul#kruimelspoorul li, div.irritationTop10_titel, ul#submenu2 li a,h3.registrationForm', { });

}



$.checkField = function(field, reqClass){

	if (field.hasClass( reqClass ) ) {

		if (field.val() == '') {
			field.css("border","1px solid red");
			$('#lb_'+field.attr('id')).css('color','red');
			return false;
		} else if ((field.hasClass('email') || field.attr('name') == 'email') && !$.emailValidation(field.val())) {
			field.css("border","1px solid red");
			$('#lb_'+field.attr('id')).css('color','red');
			return false;
		} else if ( field.attr('type') == 'radio' ){

			if ($("input[name='" + field.attr('name') +"']:checked").val() == undefined) {
				$("label[for='"+ field.attr('name') +"']").css('color','red');
				return false;
			} else {
				$("label[for='"+ field.attr('name') +"']").css('color','#404040');

			}
		}
	}

	field.css("border","1px solid #E6E6E6");
	$('#lb_'+field.attr('id')).css('color','#404040');
	return true;


}

$.captchaCheck = function(currentForm, process) {

	var field = $("input[name=captchaCode]");

	$.ajax({
		url: "/javascript/ajaxRequests/checkCaptcha.php",
		type: "POST",
		data: "captchaCode=" + field.val(),
		dataType: "html",
		cache: false,
		success: function(responseHtml){

			$("#captchaError").html(responseHtml).css('color','red');

			if ( responseHtml== '&nbsp;') {

				// captch not valid
				field.css("border","1px solid #E6E6E6");
				$('#lb_'+field.attr('id')).css('color','#404040');

				if ( process == true) {
					currentForm.unbind('submit');
					currentForm.submit();
				}

			} else {

				// captch not valid
				field.css("border","1px solid red");
				$('#lb_'+field.attr('id')).css('color','red');
			}

  		}
	});

}

$.emailValidation = function(value) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(value) == false) {
		return false;
	}
	return true;
}


$.checkForm = function(currentForm, reqClass)
{
	var errorFree = true;

	currentForm.find('textarea, input, select').each(function()	{

		if ( $(this).attr('name') != 'captchaCode') {

			if (!$.checkField($(this), reqClass)) {

				errorFree = false;
			}
		}

	});

	if (reqClass == 'isReq') {

		if ($("input#captchaCode").length > 0 ) {
			$.captchaCheck( currentForm, errorFree );
			return false;
		} else {
			return errorFree;
		}

	} else {

		return errorFree;

	}
}


function clearBoxCookies(){

	if ( $.cookie ) {
		$.cookie('loginboxContents', null, { path: '/' });
		$.cookie('viewCartContents', null, { path: '/' });
	}
}

function showOpsomming(id)
{
	if ($('#'+id).css('display') == 'none') {
		$('.opened_opsomming').removeClass('opened_opsomming').slideUp(500);
		$('#'+id).slideDown(500).addClass('opened_opsomming');
	} else {
		$('#'+id).removeClass('opened_opsomming').slideUp(500);
	}
}

function checkStep(currentForm ,reqClass)
{
	var allowNextStep = $.checkForm($("#" + currentForm), reqClass);

	if (allowNextStep == true ){

	  showOpsomming('moduleOpsomming_3')

	}

}

$.configureTodoBar = function() {
	if (typeof(showTodoBarOnWebsite) != 'number') { showTodoBarOnWebsite = 0; }
	//check wether bar needs to be included
	if (showTodoBarOnWebsite == 1) {
		//todobar reachable?
		$.getScript(todoSystemLocationUrl + '/lib/jquery/jqueryTodoBar/jquery.todobar.js', function() {
			$.todoIframe(showTodoBarOnWebsite);
		});
	}
}

function number_format (number, decimals, dec_point, thousands_sep) {
   
    number = (number + '').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

