﻿/************************************************

Optavis Ecommerce 


//Chaque resume doit s'ajouter à un objet
document.body.lBasketResume

************************************************/

document.body.lBasketResume = new Array();

/* Objects */
function basketResume(aIdObjectQte, aIdObjectPrice) {

	this.idObjectQte = aIdObjectQte;
	this.idObjectPrice = aIdObjectPrice;

	this.maj = function (qte, price) {
		if (document.getElementById(aIdObjectQte))
			document.getElementById(aIdObjectQte).innerHTML = qte;
		if (document.getElementById(aIdObjectPrice))
			document.getElementById(aIdObjectPrice).innerHTML = price.toFixed(2).replace(".", ",");
	}
}



/****************************/

function basketLoadingState() {
	//    gId('optaEcomBasket').innerHTML = '... Chargement';
}

// *****************
//      Resume
// *****************
function basketAddAndGetResume(id, Qte, append) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketAddAndGetResume(id, Qte, true, on_Succes, on_Failed, 'resume');
}

function basketRemoveAndGetResume(id) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketRemoveAndGetResume(id, on_Succes, on_Failed, 'resume');
}

function basketSubstractAndGetResume(id, Qte) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketSubstractAndGetResume(id, Qte, true, on_Succes, on_Failed, 'resume');
}

function majBasketResume(totalQte, totalPrice) {
	if (document.body.lBasketResume) {
		for (var i = 0; i < document.body.lBasketResume.length; i++) {
			document.body.lBasketResume[i].maj(totalQte, totalPrice);
		}
	}
}

// *****************
//      Status
// *****************
function basketMAJStatus() {
	optavis.eCom.wsOptavisEcom.basketGetStatus(on_Succes, on_Failed, 'status');
}
function basketAddAndGetStatus(id, Qte, append) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketAddAndGetStatus(id, Qte, true, on_Succes, on_Failed, 'status');
}
function basketRemoveAndGetStatus(id) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketRemoveAndGetStatus(id, on_Succes, on_Failed, 'status');
}
function basketSubstractAndGetStatus(id, Qte) {
	basketLoadingState();
	optavis.eCom.wsOptavisEcom.basketSubstractAndGetStatus(id, Qte, true, on_Succes, on_Failed, 'status');
}


// *****************
//      Recap
// *****************

//Ajout d'une quantité à un produit
function basketAddRecap(id) {
	optavis.eCom.wsOptavisEcom.basketAdd(id, 1, true, on_Succes, on_Failed, 'recap');
}
//Suppression d'une quantité à un produit
function basketSubstractRecap(id) {

	var isOk = true;
	if (gId('optaEcomBasketRecapQte' + id).innerHTML == '1')
		isOk = confirm('Etes-vous sûr de vouloir supprimer ce produit ?');
	if (isOk)
		optavis.eCom.wsOptavisEcom.basketSubstract(id, 1, true, on_Succes, on_Failed, 'recap');
}
//Suppression d'un produit
function basketRemoveRecap(id) {
	if (confirm('Etes-vous sûr de vouloir supprimer ce produit ?'))
		optavis.eCom.wsOptavisEcom.basketRemove(id, on_Succes, on_Failed, 'recap');
}
//Suppression du Panier complet
function basketClear() {
	if (confirm('Etes-vous sûr de vouloir supprimer l\'ensemble du panier?'))
		optavis.eCom.wsOptavisEcom.basketClear(on_Succes, on_Failed, 'recap');
}


//Sauvegarde du Panier
function newSaveBasket(libelle) {
	optavis.eCom.wsOptavisEcom.saveBasket(null, libelle, true, on_Succes, on_Failed, 'saveBasket');
}

function saveBasketInExisting(idSavedBasket, append) {
	optavis.eCom.wsOptavisEcom.saveBasket(idSavedBasket, null, append, on_Succes, on_Failed, 'saveBasketInExisting');
}
function loadFromSavedBasket(idSavedBasket, clearBefore, append) {
	optavis.eCom.wsOptavisEcom.loadFromSavedBasket(idSavedBasket, clearBefore, append, on_Succes, on_Failed, 'loadBasketFromRecord');
}
function deleteSavedBasket(idSavedBasket, customOnSuccesFct) {
		if (customOnSuccesFct)
			onSuccessRtn = customOnSuccesFct;
		else
			onSuccessRtn = on_Succes
	optavis.eCom.wsOptavisEcom.deleteSavedBasket(idSavedBasket, on_Succes, on_Failed, 'deleteSavedBasket');
}





// *****************
//      Results
// *****************
function on_Succes(result, context, methodName) {
	switch (context) {
		//Status       
		case 'status':
			$('.btnAddCart' + result.idProduitArticleModified).fadeTo(150, 1);
			majBasketResume(result.totalQte, result.totalPrice);
			break;

		//Sauvegarde du Panier  
		case 'saveBasket':
		case 'saveBasketInExisting':
			if (result != null)
				alert('Le panier a bien été sauvegardé');
			else
				alert('Un erreur est survenue.');
			break;

		case 'loadBasketFromRecord':
			if (result)
				alert('Le panier a bien été chargé');
			break;

		case 'deleteSavedBasket':
			if (result)
				alert('Cette sauvegarde a bien été supprimée.');
			break;

		//Resume                      
		case 'resume':
			if (gId('optaEcomBasketResume'))
				gId('optaEcomBasketResume').innerHTML = result;
			break;
		//Recap       

		case 'recap':

			$('.oeBasketResumeQte').text(result.totalQte);
			$('.oeBasketResumeTotal').text(result.totalPrice.toFixed(2).replace(".", ","));

			gId('optaEcomBasketRecapQte' + result.idProduitArticleModified).innerHTML = result.qteArticleModified;
			gId('optaEcomBasketNbreArticle').innerHTML = result.totalQte;
			gId('optaEcomBasketTotalPrix').innerHTML = result.totalPrice.toFixed(2).replace(".", ",");

			if (result.qteArticleModified == 0)
				gId('optaEcomBasketArticle' + result.idProduitArticleModified).style.display = 'none';

			majBasketResume(result.totalQte, result.totalPrice);

			//            str = 'idProduitArticleModified: ' + result.idProduitArticleModified + '\n';
			//            str += 'qteArticleModified: ' + result.qteArticleModified + '\n';
			//            str += 'totalQte: ' + result.totalQte + '\n';
			//            str += 'totalPrice: ' + result.totalPrice + '\n';

			//            gId('optaEcomBasketResume').innerHTML = str;

			break;

		default:
			gId('optaEcomBasket').innerHTML = result;
			break;
	}
}

function on_Failed(error) {
    if (document.isOptaEcomDebug) {
        //alert(FailedCallback(error));
    }
}

function setOptaEcomModeDebug(isDebug) {
    document.isOptaEcomDebug = isDebug;
}

