/**
 *	Default javascript document for BS Shop
 *	
 *	@author Direct-effect <info@direct-effect.nl>
 *	@version 1.0
 *	@package backsite_shop
 */	
 var $cartdetail_container = "#cart_dialog";
 var $cart_container = "";
  
$(function(){
	initShop();
	//updateCartInfo();
});

/**
 *	Inititaliseer de shop, voeg funcitonaliteit toe aan de knoppen	
 *	@void
 */
function initShop(){
	
	$(".add-to-cart").unbind("click");
	$(".add-to-cart").click(function(){
		var aantal = $('input#aantal').val();
		
		if($('input[name=prijs_type]').attr('type') == 'radio'){
			var prijs_type = $('input[name=prijs_type]:checked').val();
		}else{
			var prijs_type = $('input[name=prijs_type]').val();
		}
		
		if($('select#artikel_keuze').length == 0){
			var artikel_id = $(this).val();
		}else{
			if($('select#artikel_keuze.'+prijs_type).length == 0){
				var artikel_id = $('select#artikel_keuze').val();
			}else{
				var artikel_id = $('select#artikel_keuze.'+prijs_type).val();
			}
		}
		
		// voeg het aantal artikelen toe aan het mandje
		addToCart(artikel_id, aantal, prijs_type);
		
	});
	
	$('a#view_cart').click(function(){
		showCart();
	});
	
	initCartDetail();
}

/**
 *	Winkelwagen initialiseren
 *	@param String $
 *	@void
 *	@return
 */
function initCartDetail(){
//	uiButton(".quick-clear-cart");
	$(".quick-clear-cart").click(function(){
		clearCart(false);
	});
	
	$(".update-item.disabled .ui-icon").addClass("ui-state-disabled");
	
	// handlers toevoegen aan de knopjes in het winkelmandje
	$(".update-item").unbind("click");
	$(".update-item").click(function(){

		var cart_item = $(this).attr("rel");
		
		if($(this).hasClass("plus")){			
			updateItem(cart_item, $(this).attr("aantal"));			
		}else if($(this).hasClass("min") && !$(this).hasClass("disabled")){
			updateItem(cart_item, $(this).attr("aantal"));
		}else if($(this).hasClass("delete")){
			removeItem(cart_item);	
		}
	});
	
	$('input.cart_row-aantal').change(function(){
		var cart_item = $(this).attr("id");
		var aantal = $(this).val();
		if(IsNumeric(aantal)){
			updateItem(cart_item, aantal);	
		}else{
			updateItem(cart_item, 0);	
		}
	});
	
	$("#cart_dialog").dialog({
		autoOpen: false,
		width:480,
		height:450,
		buttons: { "Sluiten": function(){ $(this).dialog("close"); } }, 
		close: function(event, ui){
			$("#cart_dialog").html(""); // winkelwagen dialog leeg maken
			window.location=window.location; // pagina herladen
		}
	});
	
	$("#artikle_added_dialog").dialog({
		autoOpen: false,
		width:340,
		buttons: { 
			"Verder winkelen": function(){ $(this).dialog("close"); } ,
			"Naar winkelwagen": function(){ $(this).dialog("close"); showCart(); } 
		}
	});
	
}

//  check for valid numeric strings	
function IsNumeric(strString){
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++){
		strChar = strString.charAt(i);
		if(strValidChars.indexOf(strChar) == -1){
			blnResult = false;
		}
	}
	
	return blnResult;
}



/**
 *	Voeg het artikel toe aan het winkelmandje
 *	@param String artikel
 *	@param int aantal
 *	@void
 *	@return
 */
function addToCart(artikel, aantal, prijs_type){
	
	$url = BASE_URL+"shop/handleactions.php?action=add&ajax=1&artikel="+artikel+"&aantal="+aantal+"&prijs_type="+prijs_type+"&shop_type="+SHOP_TYPE;
	
	$.get($url, function($data){
		if($data == "OK"){
			// cart details bijwerken
			//updateCartInfo();
			//showMessage("Het artikel is aan uw mandje toegevoegd", "info");
			parent.updateCartInfo(); // 20110426 Jeroen: updateCartInfo() moet op de parent worden gedaan om deze actie in de fancybox gebeurt
			parent.$("#artikle_added_dialog").dialog('open');
			parent.$.fancybox.close();
		}else{
			showMessage($data, "error");	
		}
		
	});
}

/**
 *	Wijzig het aantal van het artikel
 *	@param String $cart_item
 *	@param int $aantal
 *	@void
 */
function updateItem(cart_item, aantal){
	var url = BASE_URL+"shop/handleactions.php?action=update&ajax=1&cart_item="+cart_item+"&aantal="+aantal+"&shop_type="+SHOP_TYPE;
	
	$.get(url, function(data){
		if(data == "OK"){
			// cart details bijwerken
			updateCartInfo();
		}else{
			showMessage(data, "error");	
		}
	});	
}

/**
 *	Verwijder het artikel uit het mandje
 *	@param String $cart_item
 *	@param int $aantal
 *	@void
 */
function removeItem(cart_item){
	$url = BASE_URL+"shop/handleactions.php?action=delete&ajax=1&cart_item="+cart_item+"&shop_type="+SHOP_TYPE;
	icon = "ui-icon-info";
	main_class = "info";
	$("body").append('<div class="message ui-state-highlight " id="display_message"><span class="ui-icon ui-icon-info"></span> Weet u zeker dat u dit artikel wilt verwijderen?</div>');

	$("#display_message").dialog({ 
		dialogClass: main_class,  
		buttons: { 
			"Annuleren": function() { $(this).dialog("close"); },
			"OK, verwijderen": function(){
				$("#display_message").dialog("close");
				// Wanneer het verwijderen bevestigd is, dan het artikel verwijderen										
				$.get($url, function($data){
					if($data == "OK"){
						// cart details bijwerken
						updateCartInfo();												
					}else{
						showMessage($data, "error");	
					}
				});	
			}
		},
		close: function(event, ui){
			// verwijder de boodschap na sluiten, zodat geen conflict kan optreden met een volgende boodschap
			$("#display_message").remove();
		}
	});	
}

/**
 *	Laad de inhoud van het winkelmandje opnieuw
 *	@void
 */
function updateCartInfo(){
	$('.cart-widget-holder').load(BASE_URL+"shop/shop.cartinfo.php?shop_type="+SHOP_TYPE);
		
	$($cartdetail_container).load(BASE_URL+"shop/shop.cartdetails.php?shop_type="+SHOP_TYPE, function(){
		initCartDetail();	// functies aan de cart detail items vernieuwen	
	});	
}

/**
 *	Maak het mandje leeg: verwijder alle gekoppelde items
 *	@param String $
 *	@void
 *	@return
 */
function clearCart(full){
	showSpinner($($cart_container));
	
	$url = BASE_URL+"shop/handleactions.php?action=clear&ajax=1&shop_type="+SHOP_TYPE;
	var full = full;
	$.get($url, function($data){
		if($data == "OK"){
			if(full){
				// doorsturen naar de shop openingspagina??
			}else{
				// cart details bijwerken
				updateCartInfo();
			}
		}else{
			showMessage($data, "error");	
		} 
	});
}

function showSpinner($container){
	$container.html('<div class="loader"><img src="shop/images/loader.gif" /> loading... </div>');
}

/**
 *	Maak een message aan en toon deze	
 *	@param String message  	De te tonen (html)inhoud van de message
 *	@param String type  	Het type van de message, info of error
 */
function showMessage(message, type){
	
	if(type == "error"){
		state = "ui-state-error";
		icon = "ui-icon-alert";
		main_class = "alert";
	}else{
		state = "";//ui-state-default"
		icon = "ui-icon-info";
		main_class = "info";
	}
	
	$("body").append('<div class="message '+state+'" id="display_message"><span class="ui-icon '+icon+'"></span> '+message+'</div>');
	$("#display_message").dialog({ dialogClass: main_class,  buttons: { "Sluiten": function() { $(this).dialog("close"); } }, close: function(event, ui){
		// verwijder de boodschap na sluiten, zodat geen conflict kan optreden met een volgende boodschap
		$("#display_message").remove();							  
	}});
}

function showCart(){
	//alert(SHOP_TYPE);
	$("#cart_dialog").load(BASE_URL+"shop/shop.cartdetails.php?shop_type="+SHOP_TYPE);
	$("#cart_dialog").dialog('open');
}

function showAjaxMessage(message_code, type){
		
}

function addIcon($container, $icon_type){
	$contianer.prepend('<span class="ui-icon ui-icon'+$icon_type+' "></span>' );
}
