$(document).ready(function() {
	$('body').append('<div id="dialog-panier"></div>');
	$('div.add_panier').click(function() {
		addToPanier($(this).attr('idArticle'));
	});
	$('.vide_panier').click(function() {
		videPanier();
	});
	$('.delete_product').click(function() {
		removeFromPanier($(this).parents('tr').attr('idLigne'));
	});
	$('select.quantite').change(function() {
		changeQuantite($(this).parents('tr').attr('idLigne'));
	});
	$('.recalculer_panier').click(function() {
		if($('#codePromo').val() != '') {
			addCodePromo($('#codePromo').val());
			$('#codePromo').val('');
		}
	});
	$('#codePromo').keydown(function(event) {
		if (event.keyCode == '13') {
			event.preventDefault();
			if($('#codePromo').val() != '') {
				addCodePromo($('#codePromo').val());
				$('#codePromo').val('');
			}
		}
	});
	
	$('#dialog-panier').dialog({
		title: 'Article ajouté',
		modal: true,
		resizable: false,
		autoOpen: false,
		close: function() { hideObjectForDialog(false); },
		open: function() { hideObjectForDialog(true); },
		buttons: {
			'Mon panier': function() {
				goToPanier();
			},
			'Continuer ma visite': function() {
				$('#dialog-panier').dialog('close');
			}
		}
	});
});

var addToPanier = function(idArticle) {
	var PaId = $('.panier_client').attr('PaId');
	var UId = $('.acces_client').attr('UId');
	var url = DIR_HTTP+'scripts/interface.php';
	var params = {
		mode: 'ADD_TO_PANIER',
		PaId: PaId,
		UId: UId,
		idArticle: idArticle
	};
	
	$.getJSON(url, params, function(panier) {
		if(panier == 'KO') {
			openDialogMessage('Erreur', 'Erreur lors de l\'ajout au panier', dialBtnPanierAddedError);
		} else {
			// Stockage du panier en session et en cookie
			$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=SAVE_PANIER&PaId='+panier.PaId+'" style="display: none;"></iframe>');
			$.cookie("adp_panier_id", panier.PaId, { expires: 30, path: '/' });
			
			// Mise à jour du PaId et du nombre d'article dans le panier
			$('.panier_client').attr('PaId', panier.PaId);
			refreshPanierCount(panier.nbArticles);

			if(panier.extra.Error) {
				if(panier.extra.Error == 'QUANTITE_UNIQUE') {
					openDialogMessage('Erreur', 'Cet article est déjà présent dans votre panier et ne peut être ajouté une seconde fois', dialBtnPanierAddedError);
				} else if(panier.extra.Error == 'QUANTITE_MAX_DEPASSE') {
					openDialogMessage('Erreur', 'Vous ne pouvez pas commander plus de 10 fois le même article', dialBtnPanierAddedError);
				} else if(panier.extra.Error == 'ARTICLE_DEJA_ACHETE') {
					openDialogMessage('Erreur', 'Vous avez déjà acheté cet article, vous ne pouvez pas le commander une seconde fois', dialBtnPanierAddedError);
				} else if(panier.extra.Error == 'SUPPORT_ONLINE_UNIQUE') {
					var btn = {
						'Remplacer': function() {
							addToPanier(idArticle, true);
							$(this).dialog('close');
						},
						'Conserver': function() {
							$(this).dialog('close');
						}
					};
					openDialogMessage('Erreur', 'Cet article n\'est pas compatible avec un des articles déjà présent dans votre panier. Veuillez vous assurer que votre panier ne comporte pas d\'abonnements Devis et base de prix en ligne de métier et/ou de durée différents', btn);
				} else {
					openDialogMessage('Erreur', 'Erreur inconnue', dialBtnPanierAddedError);
				}
				
			} else if(window.location.href == DIR_HTTP+'boutique/panier.php') {
				refreshAllPanier(panier);
			} else {
				openDialogMessage('Article ajouté', 'L\'article a bien été ajouté à votre panier', dialBtnPanierAdded);
			}
		}
	});
};

var removeFromPanier = function(idLigne) {
	var btn = {
		Ok: function() {
			removeFromPanierConfirmed(idLigne);
			$(this).dialog('close');
		}
	};
	openDialogMessage('Suppression de l\'article du panier', 'Etes-vous sur de vouloir supprimer cet article de votre panier ?', $.extend(btn, dialBtnPanierRemove));
};

var removeFromPanierConfirmed = function(idLigne) {
	var PaId = $('.panier_client').attr('PaId');
	var UId = $('.acces_client').attr('UId');
	var url = DIR_HTTP+'scripts/interface.php';
	var params = {
		mode: 'REMOVE_FROM_PANIER',
		PaId: PaId,
		UId: UId,
		idLigne: idLigne
	};
	
	$.getJSON(url, params, function(panier) {
		if(panier == 'KO') {
			openDialogMessage('Erreur', 'Erreur lors de la suppression du panier', dialBtnRemoveFromPanierConfirm);
		} else {
			// Stockage du panier en session et en cookie
			$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=SAVE_PANIER&PaId='+panier.PaId+'" style="display: none;"></iframe>');
			$.cookie("adp_panier_id", panier.PaId, { expires: 30, path: '/' });
			
			// Mise à jour du PaId et du nombre d'article dans le panier
			$('.panier_client').attr('PaId', panier.PaId);
			refreshPanierCount(panier.nbArticles);
			refreshAllPanier(panier);
		}
	});
};

var videPanier = function() {
	openDialogMessage('Suppression du panier', 'Etes-vous sur de vouloir vider votre panier ?', dialBtnPanierVide);
};

var videPanierConfirm = function() {
	// Suppression du panier en session et en cookie
	var onload = 'window.location.href = \''+DIR_HTTP+'boutique/accueil_boutique.php\''; // Redirection vers l'accueil de la boutique
	$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=CLEAR_PANIER" style="display: none;" onLoad="'+onload+'"></iframe>');
	$.cookie("adp_panier_id", '', { expires: 30, path: '/' });
};

var goToPanier = function() {
	window.location.href = DIR_HTTP+'boutique/panier.php';
};

var changeQuantite = function(idLigne) {
	var newQuantite = $('#qte'+idLigne+' option:selected').val();
	/*if(isNaN(newQuantite) || newQuantite <= 0) {
		openDialogMessage('Erreur', 'La quantité saisie est incorrecte', dialBtnPanierQuantiteError);
		$('#qte'+idLigne).val($('#qte'+idLigne).attr('oldvalue'));
		$('#qte'+idLigne).focus();
		return false;
	}*/
	var PaId = $('.panier_client').attr('PaId');
	var UId = $('.acces_client').attr('UId');
	var url = DIR_HTTP+'scripts/interface.php';
	var params = {
		mode: 'CHANGE_QUANTITE_IN_PANIER',
		PaId: PaId,
		UId: UId,
		idLigne: idLigne,
		newQuantite: newQuantite
	};
	
	$.getJSON(url, params, function(panier) {
		if(panier == 'KO') {
			openDialogMessage('Erreur', 'Erreur lors de la modification de la quantité', dialBtnPanierQuantiteError);
		} else {
			// Stockage du panier en session et en cookie
			$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=SAVE_PANIER&PaId='+panier.PaId+'" style="display: none;"></iframe>');
			$.cookie("adp_panier_id", panier.PaId, { expires: 30, path: '/' });
			
			$('.panier_client').attr('PaId', panier.PaId);
			displayLine(panier, $('#qte'+idLigne).parents('tr').attr('iLigne'));
		}
	});
};

var addCodePromo = function(codePromo) {
	if(codePromo.toUpperCase() == 'REMILIE') {
		if ($('#div_mode_demo').length == 0) {
			$('body').append('<iframe src="' + DIR_HTTP + 'session.php?mode=MODE_DEMO" style="display: none;"></iframe>');
			$('div.recalculer_panier').after('<div style="text-align: center;" id="div_mode_demo">Mode d&eacute;mo</div>');
		}
		return;
	}
	
	var PaId = $('.panier_client').attr('PaId');
	var UId = $('.acces_client').attr('UId');
	var url = DIR_HTTP+'scripts/interface.php';
	var params = {
		mode: 'ADD_CODE_PROMO',
		PaId: PaId,
		UId: UId,
		codePromo: codePromo
	};
	
	$.getJSON(url, params, function(panier) {
		if(panier == 'KO') {
			openDialogMessage('Erreur', 'Erreur lors de l\'ajout du code promo '+codePromo, dialBtnPanierCodePromoError);
		} else {
			// Stockage du panier en session et en cookie
			$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=SAVE_PANIER&PaId='+panier.PaId+'" style="display: none;"></iframe>');
			$.cookie("adp_panier_id", panier.PaId, { expires: 30, path: '/' });
			
			$('.panier_client').attr('PaId', panier.PaId);
			
			if(panier.extra.Error != null) {
				if(panier.extra.Error == 'ERR_CODE_PROMO') {
					var msg = 'Ce code promo n\'est pas valide';
				} else if(panier.extra.Error == 'ERR_NO_ARTICLE') {
					var msg = 'Ce code promo n\'est applicable sur aucun des articles de votre panier';
				} else if(panier.extra.Error == 'ERR_ARTICLE_DEJA_AJOUTE') {
					var msg = 'Ce code promo est déjà utilisé sur votre panier';
				} else {
					var msg = 'Erreur inconnue';
				}
				openDialogMessage('Erreur', msg, dialBtnPanierCodePromoError);
			} else if (panier.extra.OK != null && panier.extra.OK == 'LOG_REVENDEUR') {
				validateLoginRevendeur(codePromo);
				refreshAllPanier(panier);
			} else {
				refreshAllPanier(panier);
			}
		}
	});
};

var recalculPanier = function () {
	var PaId = $('.panier_client').attr('PaId');
	if(PaId != '') {
		var UId = $('.acces_client').attr('UId');
		var url = DIR_HTTP+'scripts/interface.php';
		var params = {
			mode: 'RECALCUL_PANIER',
			PaId: PaId,
			UId: UId
		};
		
		$.getJSON(url, params, function(panier) {
			if(panier == 'KO') {
				openDialogMessage('Erreur', 'Erreur lors du recalcul du panier', dialBtnPanierRecalculError);
			} else {
				// Stockage du panier en session et en cookie
				$('body').append('<iframe src="'+DIR_HTTP+'session.php?mode=SAVE_PANIER&PaId='+panier.PaId+'" style="display: none;"></iframe>');
				$.cookie("adp_panier_id", panier.PaId, { expires: 30, path: '/' });
				
				$('.panier_client').attr('PaId', panier.PaId);
				if(window.location.href == DIR_HTTP+'boutique/panier.php') {
					refreshPanierContent(panier);
					refreshPromoLines(panier.code_promo, panier.promoht);
				}
				
				$('#dialog-message').dialog('close');
				//$('.msgPanier').html('Votre panier a été actualisé');
			}
		});
	}
};

/*
 * FONCTIONS D'AFFICHAGE
 */
var displayLine = function(panier, iLigne) {
	var ligne = panier.TLigne[iLigne];

	// Si le panier affiché actuellement est vide, on charge le panier complet dans le div panier
	// Sinon on charge uniquement la ligne concernée
	if($('#panier table.panier').length == 0) {
		refreshAllPanier(panier);
	} else {
		$('body').append('<div id="divload" style="display: none;"></div>');
		$('#divload').load(DIR_HTTP+'boutique/panier.php #lignepanier_'+ligne.id, function() {
			var line = $('#divload').html();
			$('#divload').remove();
			if($('#lignepanier_'+ligne.id).length > 0) {
				$('#lignepanier_'+ligne.id).replaceWith(line);
			} else {
				$('table.panier tr.lignetotalht').before(line);
			}
			
			refreshPanierContent(panier);
		});
	}
};

var refreshPanierContent = function(panier) {
	var prixunitaire = 0;
	var prixtotal = 0;
	for(var i in panier.TLigne) {
		if($('#lignepanier_'+panier.TLigne[i].id).length > 0) {
			$('#lignepanier_'+panier.TLigne[i].id).attr('iLigne', i);
		}
		prixunitaire += parseFloat(panier.TLigne[i].prixht);
		prixtotal += parseFloat(panier.TLigne[i].totalht);
	}
	
	//$('#prixht').html(number_format(prixunitaire, 2, ',', ' ') + ' &euro; HT');
	$('#totalht').html(number_format(prixtotal, 2, ',', ' ') + ' &euro;');
//	$('#remise').html(number_format(panier.remiseht, 2, ',', ' ') + ' &euro; HT');
	$('#promo').html('- '+number_format(panier.promoht, 2, ',', ' ') + ' &euro;');
	var promo_percent = panier.code_promo != '' ? panier.code_promo : '&nbsp;';
//	promo_percent += (panier.type_promo == 'POURCENTAGE') ? ' ( - ' + number_format(panier.montant_promo, 0) + ' %)' : '';
//	promo_percent = promo_percent == '' ? '&nbsp;' : promo_percent;
	$('#promo_percent').html(promo_percent);
	$('#totalhtpromo').html(number_format(panier.totalht, 2, ',', ' ') + ' &euro;');
	var montant_tva = panier.totalttc - panier.totalht;
	montant_tva = montant_tva > 0 ? number_format(montant_tva, 2, ',', ' ') + ' &euro;' : 'Offerte';
	$('#tva').html(montant_tva);
	$('#totalttc').html(number_format(panier.totalttc, 2, ',', ' ') + ' &euro; TTC**');

	$('.delete_product').unbind('click');
	$('.delete_product').click(function() {
		removeFromPanier($(this).parents('tr').attr('idLigne'));
	});
	
	$('select.quantite').unbind('change');
	$('select.quantite').change(function() {
		changeQuantite($(this).parents('tr').attr('idLigne'));
	});
	
	$('.vide_panier').unbind('click');
	$('.vide_panier').click(function() {
		videPanier($('.panier_client').attr('PaId'));
	});

	$('.recalculer_panier').unbind('click');
	$('.recalculer_panier').click(function() {
		if($('#codePromo').val() != '') {
			addCodePromo($('#codePromo').val());
			$('#codePromo').val('');
		}
	});
	
	$('#codePromo').unbind('keydown');
	$('#codePromo').keydown(function(event) {
		if (event.keyCode == '13') {
			event.preventDefault();
			if($('#codePromo').val() != '') {
				addCodePromo($('#codePromo').val());
				$('#codePromo').val('');
			}
		}
	});
	
	$('body').append('<div id="divload2" style="display: none;"></div>');
	$('#divload2').load(DIR_HTTP+'boutique/panier.php #conditions', function() {
		var conditions = $('#divload2').html();
		$('#divload2').remove();
		$('#conditions').replaceWith(conditions);
	});
};

var refreshPanierCount = function (nbLines) {
	if(nbLines > 0) {
		$('#panier_lien').html('Mon Panier ('+nbLines+')');
	} else {
		$('#panier_lien').html('Mon Panier');
	}
};

var refreshPromoLines = function(code_promo, promoht) {
	if(code_promo != '' && promoht > 0) {
		$('tr.lignepromo').show();
		$('tr.lignetotalhtpromo').show();
	} else if(code_promo != '') {
		$('tr.lignepromo').show();
		$('td.promo_percent').attr('colspan', '4');
		$('td.promo').remove();
		$('tr.lignetotalhtpromo').hide();
	} else {
		$('tr.lignepromo').hide();
		$('tr.lignetotalhtpromo').hide();
	}
};

var refreshAllPanier = function (panier) {
	$('#bloc_contenu').load('../boutique/panier.php #panier', function() {
		refreshPanierContent(panier);
		refreshPromoLines(panier.code_promo, panier.promoht);
	});
};
