$(function()
{
	Cufon.replace('.portal h2, #menu li a, .special .descr td, .block .title,.droparrow_filtertitle, .droparrow, .droparrow_large, #offers .text strong, .headtitle, #adje .title, #tabnav .tabs .tab, .footermenu .main, #add-title h2, .step-descr, #cart_popup #head, #cart_page #head, #oldprice .price_euro, #newprice .price_euro, .assort_block .title, #klantenservice .title, .grayblock .title, .whiteblock .title, .news_list .title', {fontFamily: 'Utility-Bold'});
	Cufon.replace('#offers .circle .maintext, .subtitle, .btn, .btn_small, .btn_small_back, .btn_small_header, .btn_cart, .btn_cart_back, .assort_block_outer.add .title', {fontFamily: 'Utility-Medi'});
	Cufon.replace('#offers .circle .newprice, .price_num', {fontFamily: 'Utility-Black'});
	Cufon.replace('.subtitle, .step-count, .price_txt, .assort_title', {fontFamily: 'Utility'});
	
	
	$('.tabs > a').click(function(){  
		if (!$(this).hasClass('selected')) {      
			$('.tabs > a').removeClass('selected');  
			$(this).addClass('selected');
			$('#tabs_content .tabcontent').removeClass('show');
			$('#tabs_content .tabcontent:eq(' + $('.tabs > a').index(this) + ')').addClass('show');
		}  
	});
	
	$("#tabnav .isaccof").one('click', function(){
		$(".tabcontent.is_accessoire_of").load("/cmsfiles/components/products/ajaxrequests/getaccmodels.php", {page : currentPage});
	});
	
	$("#product_imgs .product_img:nth-child(4n)").addClass("endrow");
	$("#related_products .related_product:nth-child(2n)").addClass("endrow");
	$(".comparable_products .comparable_product:nth-child(4n)").addClass("endrow");
	
	$(".print").click(function(){
		setTimeout(function(){
			printIframe("sb-content");
		},1500);
	});
	
	$(".add_to_order").live('click', function(){
		var $this	= $(this);
		var orderId = $this.parent().find(".order-id").html();

		$.ajax({
			type: 'POST',
			url: "/cmsfiles/components/products/ajaxrequests/add_to_cart.php",
			data: ({id : orderId}),
			success: function(html){ 
				$this.parent().append(html);
			}
		});
	});
	
	$(".remove_from_list").live('click', function(){
		var $this	= $(this);
		var orderId = $this.parent().find(".order-id").html();

		$.ajax({
			type: 'POST',
			url: "/cmsfiles/components/products/ajaxrequests/remove_from_list.php",
			data: ({id : orderId}),
			success: function(html){ 
				location.reload(true); 
			}
		});
	});
	
	var $stockIndicator = $("#stock-indicator");
	
	$(".stock").live('mousemove',function(e){
		
		var $indicatorX = (e.clientX + 10);
		var $indicatorW = $stockIndicator.width();
		var $windowW = $(window).width();
		
		if(($indicatorX + $indicatorW) >= $windowW) $indicatorX = ($windowW - $indicatorW - 10);
		$stockIndicator.css({'left': $indicatorX, 'top': e.clientY + $(window).scrollTop() + 10});
	});
	
	$(".stock").live('mouseenter', function(e){
		var $indicatorX = (e.clientX + 10);
		var $indicatorW = $stockIndicator.width();
		var $windowW = $(window).width();
		
		if(($indicatorX + $indicatorW) >= $windowW) $indicatorX = ($windowW - $indicatorW - 10);
		$stockIndicator.css({'left': $indicatorX, 'top': e.clientY + $(window).scrollTop() + 10});
		$stockIndicator.show();
	});
	
	$(".stock").live('mouseleave', function(e){
		$stockIndicator.hide();
	});
	
	// filters in en uit klappen
	$(".droparrow_title").toggle(
		function()
		{
			$(this).next(".filterblock:first").hide('fast', function() {
				//$(this).removeClass('down').addClass('right');				
			});
		},
		function()
		{
			$(this).next(".filterblock:first").show('fast', function() {
				//$(this).removeClass('right').addClass('down');
			});
			
		}
	)
	
	// Alleen extra filters dichtklappen
	$(".morefilters").parent().click();
	
	//$(".filterblock").addClass('down');
	//$(".filterblock").hide();
	//$(".filterblock").removeClass('down').addClass('right');
	
	$("#specials .special:nth-child(3n)").addClass("endrow");
	
	
});




function addOrder(id, amountInput)
{
	var amount = $("#"+amountInput).val();
	
	$.ajax({
		type: 'POST',
		url: "/cmsfiles/components/products/cart_popup.php",
		data: ({productId : id, amount : amount}),
		success: function($data) 
		{
			Shadowbox.open({
				content:    $data,
				player:     "html",
				height:     350,
				width:      450,			
				options: 
				{
					animate:	false,
					animateFade:false,
					scrolling: false ,
					onFinish: function () 
					{ 
						Cufon.refresh(); 
						
						$("#sb-content.html").css({height:'100%', 'overflow-x':'hidden !important'});
					},
					enableKeys: false
				}
			});
			
		}
	});
}

function printIframe(id)
{
	var iframe = document.frames ? document.frames[id] : document.getElementById(id);
	var ifWin = iframe.contentWindow || iframe;
	iframe.focus();
	ifWin.printPage();
	return false;
}

function initHome()
{
	var left = 0;
	
	setTimeout(function(){
		$.ajax({
			url: '/cmsfiles/components/home/getoffers.php',
			success: function(html){
				$("#offers").html(html);
				Cufon.replace('#offers .newprice', {fontFamily: 'Utility-Black'});
				Cufon.replace('#offers .text strong', {fontFamily: 'Utility-Bold'});
				$("#offers-white").fadeOut(750);
				
				setTimeout(function(){
					goLeft(left);
				},5000);
			}
		});
	},0);
}

function goLeft(left)
{
	var size = $("#offer_wrapper .offer").length;
	
	if(left == (size-2)){
		$("#offer_wrapper").animate({"margin-left" : "0px"}, "slow", function(){
			setTimeout(function(){
				goLeft(0);	
			},5000);
		});
	} else {
		$("#offer_wrapper").animate({"margin-left" : "-=323px"}, "slow", function(){
			setTimeout(function(){
				left++;
				goLeft(left);	
			},5000);
		});
	}
}

function setAdd(add)
{
	var speed		= 1500;
	var $current	= jQuery("#add-avatar .current");
	var $target		= jQuery("#add-avatar #add-"+add);

	if(!$target.hasClass("current")){
		$current.fadeOut(speed, function(){jQuery(this).removeClass("current");});
		$target.fadeIn(speed, function(){jQuery(this).addClass("current");});
	}
	
	var $current	= jQuery("#add-steps-txt .current");
	var $target		= jQuery("#add-steps-txt #addtxt-"+add);

	if(!$target.hasClass("current")){
		$current.fadeOut(speed, function(){jQuery(this).removeClass("current");});
		$target.fadeIn(speed, function(){jQuery(this).addClass("current");});
	}
}

function initAddje(onAddPage)
{
	var $addSelect1 	= $("#add-select-1 select");
	var $addSelect2 	= $("#add-select-2 select");
	var $addSelect3 	= $("#add-select-3 select");
	var $addArticles	= $("#add-articlegroup");
	var $result			= $("#p-square");
	
	$addSelect1.change(function(){
		$.ajax({
			url: '/cmsfiles/components/add/action.php',
			dataType: 'json',
			data: {
				category	: $(this).val(),
				action		: 'getsuppliers'
			},
			success: function(json){
				var selectHtml = "<option>kies leverancier &rsaquo;</option>";
				$.each(json, function(id, title){
					selectHtml += '<option value="'+id+'">'+title+'</option>';
				});
				
				$addSelect2.html(selectHtml);
				$addSelect2.removeAttr('disabled');
				$addSelect3.attr('disabled', 'disabled');
				$addArticles.attr('disabled', 'disabled');
				setAdd("step2");
			},
			type: 'post'
		});
	});
	
	$addSelect2.change(function(){
		$.ajax({
			url: '/cmsfiles/components/add/action.php',
			dataType: 'json',
			data: {
				action		: 'getmodels',
				category	: $addSelect1.val(),
				brand		: $(this).val()
			},
			success: function(json){
				var selectHtml = "<option>kies model &rsaquo;</option>";
				$.each(json, function(id, title){
					selectHtml += '<option value="'+id+'">'+title+'</option>';
				});
				$addSelect3.html(selectHtml);
				$addSelect3.removeAttr('disabled');
				$addArticles.attr('disabled', 'disabled');
				setAdd("step3");
			},
			type: 'post'
		});
	});
	
	var updateArticles = function(updateArticleGroupFilter){
		if(onAddPage){
			
			$result.html('<table cellpadding="0" cellspacing="0" width="100%" height="100%" class="add_loader">' +
							'<tr>' +
								'<td align="center" valign="middle" width="100%" height="150">' + 
									'<img src="/images/build/ajax-loader.gif">' +
								'</td>' + 
							'</tr>' +
						  '</table>'
						 );
			
			$.ajax({
				url: '/cmsfiles/components/add/action.php',
				dataType: 'json',
				data: {
					action		: 'getaccessoires',
					category	: $addSelect1.val(),
					brand		: $addSelect2.val(),
					model		: $addSelect3.val(),
					article		: $addArticles.val()
				},
				success: function(json){
					
					if(json.products != ''){
						var resultHtml = json.products;
						
						var agSelect = '<option value="">kies artikelgroep</option>';
						
						if(updateArticleGroupFilter){
							$.each(json.articleGroups, function(key, group){
								agSelect += 
									'<option value="'+key+'">'+group+'</option>';		
							});
							
							$addArticles.html(agSelect);
						}
						
						$addArticles.removeAttr('disabled');
						
						setAdd("success");
						$result.html(resultHtml + '<div class="clear"></div>');	
						$result.find(".p-square:nth-child(5n)").addClass("endrow");
						$result.effect("highlight", {}, 1000);
					} else {
						setAdd("fail");
					}
				},
				type: 'post'
			});
		} else {
			
			var categoryId	= $addSelect1.val();
			var brandId		= $addSelect2.val();
			var modelId		= $addSelect3.val();
			
			$("#adje").html(
				'<table cellpadding="0" cellspacing="0" width="100%" height="100%">' +
					'<tr>' +
						'<td align="center" valign="middle" width="100%" height="100%">' + 
							'<img src="/images/build/ajax-loader_blue.gif">' +
						'</td>' + 
					'</tr>' +
				'</table>'
			);
			 
			setTimeout(function(){
				location.href = "/"+categoryId+"/"+brandId+"/"+modelId+"/addje.html";	
			},250);
		}
	};
	
	$addSelect3.change(function(){ updateArticles(true); });
	$addArticles.change(function(){ updateArticles(false); });
}

function initCart()
{
	var delay = (function(){
	  var timer = 0;
	  return function(callback, ms){
		clearTimeout (timer);
		timer = setTimeout(callback, ms);
	  };
	})();
	
	$("#feature_table tr:odd").addClass("odd");
	
	/********************************** Winkelwagen ***********************************/
	var requestDir		= "/cmsfiles/components/products/ajaxrequests/";
	var $amountInput	= $(".cart-product .amount input");
	var $deleteButton	= $(".cart-product .trashcan img");
	var $payMentSelect	= $("#cart-paymethod select");
	var $orderButton	= $("#order-button");
	var $orderForm		= $("#order-form");
	var values			= {};
	
	updatePayType($payMentSelect.val());
	
	$orderButton.click(function(){
		$orderForm.submit();
	});
	
	$payMentSelect.change(function(){
		var $this		= $(this);
			
		$.ajax({
			url		: requestDir+"changepayment.php",
			data 	: {payment:$this.val()},
			success : function(json){ 
				updatePayType(json.paytype);
				updatePrices(json.updates);
			},
			dataType: "json",
			type	: "post"
		});
	});
	
	$amountInput.each(function(){
		var $this = $(this);
		values[$this.attr("id")] = $this.val();
	});
	
	$amountInput.keydown(function(e){
		if(
			!(e.shiftKey || e.ctrlKey || e.altKey || (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105) || 
			e.keyCode == 8 || e.keyCode == 37 || e.keyCode == 39)
		){
			e.preventDefault();
		}
	});
	
	$amountInput.keyup(function(e)
	{
		var $this	= $(this);
		
		delay(function(){
			
			var value 	= $this.val();
			var id		= $this.attr("id");
			
			if(value != '' && value != values[id]){
				values[id]		= value;
				var productId 	= $this.parent().find(".cart-product-id").html();
				
				if(value == 0){
					var $block		= $this.parent().parent();
					var productId 	= $block.find(".cart-product-id").html();
					var $line		= $block.next();
					
					$.ajax({
						url		: requestDir+"delete.php",
						data 	: {product_id:productId},
						success : function(updates){
							$block.find("td").fadeOut();
							$line.find("td").fadeOut();
							updatePrices(updates);
						},
						dataType: "json",
						type	: "post"
					});
				} else {
					$.ajax({
						url		: requestDir+"updateamount.php",
						data 	: {amount:value, product_id:productId},
						success : function(updates){
							$.each(updates, function(key, value){
								var $span  = $("#"+key+" span");
								$span.html(value);
								$span.effect("highlight", {}, 3000);
							});
							
							if(updates['amount'] != undefined && updates['amount'] != value)
							{
								var $input = $("#product-input-"+productId);
								$input.val(updates['amount']);
								$(".veelvoud-message span").html(updates['veelvoud']);
								$(".veelvoud-message").show();
								$(".veelvoud-message").css({left:$input.offset().left, top:$input.offset().top + 20});
								setTimeout(function(){ $(".veelvoud-message").fadeOut('slow'); }, 2000);
							}
						},
						dataType: "json",
						type	: "post"
					});
				}
			}
		},250);
	});
	
	$deleteButton.click(function(e){
		var $this		= $(this);
		var $block		= $this.parent().parent();
		var productId 	= $block.find(".cart-product-id").html();
		var $line		= $block.next();

		if(confirm("Weet u zeker dat u dit product wilt verwijderen?"))
		{
			$.ajax({
				url		: requestDir+"delete.php",
				data 	: {product_id:productId},
				success : function(updates){
					$block.find("td").fadeOut();
					$line.find("td").fadeOut();
					updatePrices(updates);
				},
				dataType: "json",
				type	: "post"
			});
		}
	});
}

function updatePrices(updates)
{
	jQuery.each(updates, function(key, value){
		var $span  = jQuery("#"+key+" span");
		$span.html(value);
		$span.effect("highlight", {}, 3000);
	});
}

function updatePayType(typeId)
{	
	jQuery(".cart-bottom.discount").hide();
	jQuery("#cart-discount-"+typeId).show();
	
	if(typeId == 3){
		jQuery("#cart-btw").show();
	} else {
		jQuery("#cart-btw").hide();
	}
	/*if(typeId == 3){
		jQuery(".order-direct").hide();
		jQuery(".order-ideal").show();
	} else {
		jQuery(".order-direct").show();
		jQuery(".order-ideal").hide();
	}*/
}

function displayProducts(productId, special, extravars)
{
	var amount 	= $("#pagecount select").val();
	var sort 	= $("#sort select").val();
	var type 	= getDisplayType();

	var filters	= getFilters();
	
	$(".loader").show();
	
	jQuery.ajax({
		url: '/cmsfiles/components/products/display_products_table.php',
		data: {
			product		: productId,
			special		: special,
			template	: type,
			amount		: amount,
			extravars	: extravars,
			sort		: sort,
			filters		: filters
		},
		success: function(html){
			$("#product-content").html(html);	
		},
		type: 'post'
	});
}

function getFilters()
{	
	var filters = {};

	$(".filterblock").each(function()
	{
		var $this 			= $(this);
		var filterTitle 	= $this.find(".filter-title").html();
		var $checkedBoxes	= $this.find("input[type=checkbox]:checked");

		if($checkedBoxes.size() >= 1){
			var f = [];
			$checkedBoxes.each(function(){
				f.push($(this).val());
			});
			
			filters[filterTitle] = f;
		}	
	});
	
	return filters;
}

function initProductViewer(productId, special, extra)
{
	var $viewTypeButtons = $(".viewtypes a");
	
	$("#pagecount select").change(function(){
		displayProducts(productId, special, extra);
	});
	
	$("#sort select").change(function(){
		displayProducts(productId, special, extra);
	});
	
	$(".filterblock ul li input[type=checkbox]").click(function(){	
		displayProducts(productId, special, extra);
	});
	
	$viewTypeButtons.click(function(){
		var $this 	= jQuery(this);
		var type	= null;
		$viewTypeButtons.removeClass("selected");
		$this.addClass("selected");

		displayProducts(productId, special, extra);
	});
	
	displayProducts(productId, special, extra);
}

function getDisplayType()
{
	var $viewType = jQuery(".viewtypes a.selected");
	
	switch(true)
	{
		case $viewType.hasClass("view1"): var type = 'products_list'; 		break;
		case $viewType.hasClass("view2"): var type = 'products_details'; 	break;
		case $viewType.hasClass("view3"): var type = 'products_blocks';		break;
		default							: var type = 'products'; 			break;
	}
	
	return type;
}

function strstr(haystack, needle, bool) 
{
	var pos = 0;
	
	haystack += '';
	pos = haystack.toLowerCase().indexOf( needle.toLowerCase() );
	if (pos == -1) {
		return false;
	} else{
		if (bool){
			return haystack.substr( 0, pos );
		} else{
			return haystack.slice( pos );
		}
	}
}

Shadowbox.init({
	handleOversize:     'drag',
	resizeDuration:		0.10,
	fadeDuration:		0.10,
	overlayOpacity:		0.6,
	viewportPadding:    20,
	language:  	 		"nl",
	players:			["img", "swf", "html", "iframe"]
});
