function oBasketItem(psCaption,psRef,pnRef,pnQty,pfPpu,psSize,psExtras)
{
	this.sCaption=psCaption;
	this.sRef=psRef;
	this.nRef=pnRef;
	this.nQty=pnQty;
	this.fPpu=pfPpu;
	this.sSize=psSize;
	this.sExtras=psExtras;
	
	this.fPrice=pfPpu*pnQty;
}

function getBasketLineCount()
{
	return gvBasketItemList.length;	
}

function getBasketItemCount()
{
	lnCount=0;
	for(lnJ=0;lnJ<gvBasketItemList.length;lnJ++)
		lnCount+=gvBasketItemList[lnJ].nQty;
	
	return lnCount;
}

function getBasketAmount()
{
	var lfAmount=0;
	for(lnJ=0;lnJ<gvBasketItemList.length;lnJ++)
		lfAmount+=gvBasketItemList[lnJ].fPrice;
	
	return lfAmount;	
}

function getBasketPort()
{
	var lfPort=0;
	if(getBasketAmount()<gnLimiteFraisOfferts)
		lfPort=gnFraisPort;
	return lfPort;
}

function getBasketItemNoPrice()
{
	lnAmount=0;
	for(lnJ=0;lnJ<gvBasketItemList.length;lnJ++)
	{
		if(gvBasketItemList[lnJ].fPpu==0)
			lnAmount++;
	}
	
	return lnAmount;	
}

function removeBasketItem(pnIndex)
{
	if(confirm('Etes vous sûr de vouloir supprimer cet article de votre caddie ?'))
	{
		gvBasketItemList.splice(pnIndex,1);
		
		if(gvBasketItemList.length)
			copyToCookie();
		else
			deleteCookie(gsCookieName);
	}
}

function setCookie(name, value, expires, path, domain, secure) 
{
	var curCookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
      
	document.cookie = curCookie;
	
	if(getCookie(name).length==0)
		document.write("<script>alert('Vous devez activer les cookies dans votre navigateur pour pouvoir utiliser le caddie');history.go(-1);</script>");
}

function getCookie(name) 
{
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) 
	{
		begin = dc.indexOf(prefix);
		if (begin != 0) 
			return '';
	}
	else
		begin += 2;
	
	var end = document.cookie.indexOf("#", begin);
	if (end == -1)
		end = dc.length;

	return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) 
{
	if (getCookie(name)) 
	{
		document.cookie = name + "=" +
    		((path) ? "; path=" + path : "") +
    		((domain) ? "; domain=" + domain : "") +
    		"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function fixDate(date) {
	var base = new Date(0);
	var skew = base.getTime();
	if (skew > 0)
		date.setTime(date.getTime() - skew);
}

function copyToCookie()
{
	lsData=gvBasketItemList.length.toString()+'#';
	for(lnI=0;lnI<gvBasketItemList.length;lnI++)
	{
		lsData+=gvBasketItemList[lnI].sCaption+'#';
		lsData+=gvBasketItemList[lnI].sRef+'#';
		lsData+=gvBasketItemList[lnI].nRef+'#';
		lsData+=gvBasketItemList[lnI].nQty+'#';
		lsData+=gvBasketItemList[lnI].fPpu+'#';
		lsData+=gvBasketItemList[lnI].sSize+'#';
		lsData+=gvBasketItemList[lnI].sExtras+'#';
	}
	var lvTime = new Date();
	fixDate(lvTime);
	lvTime.setTime(lvTime.getTime() + 24 * 60 * 60 * 1000);//24hrs
	setCookie(gsCookieName,lsData,lvTime);
}

function getNextData(psData)
{
	if(psData=='')
		return '';
	else
		return psData.substring(0,psData.indexOf('#'));
}

function cropData(psData)
{
	if(psData=='')
		return '';
	else
		return psData.substring(psData.indexOf('#')+1,psData.length);	
}

function copyFromCookie()
{
	copyFromString(getCookie(gsCookieName));
}

function copyFromString(psData)
{
	gvBasketItemList=new Array();
	var lsData=psData;
	if(lsData=='')
		return;
		
	var lnItemCount=parseFloat(getNextData(lsData));
	lsData=cropData(lsData);

	for(lnU=0;lnU<lnItemCount;lnU++)
	{
		lsCaption=getNextData(lsData);
		lsData=cropData(lsData);
		lsRef=getNextData(lsData);
		lsData=cropData(lsData);
		lnRef=parseFloat(getNextData(lsData));
		lsData=cropData(lsData);
		lnQty=parseFloat(getNextData(lsData));
		lsData=cropData(lsData);
		lfPpu=parseFloat(getNextData(lsData));
		lsData=cropData(lsData);
		lsSize=getNextData(lsData);
		lsData=cropData(lsData);
		lsExtras=getNextData(lsData);
		lsData=cropData(lsData);
		gvBasketItemList.push(new oBasketItem(lsCaption,lsRef,lnRef,lnQty,lfPpu,lsSize,lsExtras));	
	}
}

function loadBasketItemList()
{
	copyFromCookie();	
}

function addBasketItem(psCaption,psRef,pnRef,pnQty,pfPpu,psSize,psExtras)
{
	if(!isNumeric(pnQty))
	{
		alert("Veuillez entrer un nombre");
		return;	
	}
	if(parseFloat(pnQty)<1)
	{
		alert("Veuillez entrer un nombre supérieur à 0");
		return;	
	}
	gvBasketItemList.splice(0,gvBasketItemList.length);
	copyFromCookie();
	
	var lnItemFound=-1;
	for(lnK=0;lnK<gvBasketItemList.length;lnK++)
	{
		if(gvBasketItemList[lnK].nRef==pnRef)
			lnItemFound=lnK;
	}
	if(lnItemFound<0)
	{
		gvBasketItemList.push(new oBasketItem(psCaption,psRef,pnRef,pnQty,pfPpu,psSize,psExtras));	
	}
	else
	{
		gvBasketItemList[lnItemFound].nQty=parseFloat(gvBasketItemList[lnItemFound].nQty)+parseFloat(pnQty);
		if(gvBasketItemList[lnItemFound].nQty<1)
		{
				removeBasketItem(lnItemFound);
		}
		else
		{
				gvBasketItemList[lnItemFound].fPrice=gvBasketItemList[lnItemFound].nQty*gvBasketItemList[lnItemFound].fPpu;
		}
	}	
	
	copyToCookie();
	location.href='panier.php';
}

function changeBasketItem(pnRef,pnQty)
{
	var lnItemFound=-1;
	for(lnK=0;lnK<gvBasketItemList.length;lnK++)
	{
		if(gvBasketItemList[lnK].nRef==pnRef)
			lnItemFound=lnK;
	}
	if(lnItemFound>=0)
	{
		if((parseFloat(gvBasketItemList[lnItemFound].nQty)+parseFloat(pnQty)<1)||(pnQty==0))
		{
			removeBasketItem(lnItemFound);
		}
		else
		{
			gvBasketItemList[lnItemFound].nQty=parseFloat(gvBasketItemList[lnItemFound].nQty)+parseFloat(pnQty);
			gvBasketItemList[lnItemFound].fPrice=gvBasketItemList[lnItemFound].nQty*gvBasketItemList[lnItemFound].fPpu;
		}
	}
	copyToCookie();
	document.getElementById('basketcontent').parentNode.innerHTML=getBasketDisplay("current");
	document.getElementById('basketsummary').parentNode.innerHTML=getBasketSummary();
}
/*
function addPort()
{
	var	lnPos=-1;
	for(lnJ=0;lnJ<gvBasketItemList.length;lnJ++)
	{
		if(gvBasketItemList[lnJ].nRef==0)
			lnPos=lnJ;
	}
	if(lnPos>=0)
	{
		removeBasketItem(lnPos);
	}
	if(getbasketAmount()<gnlimiteFraisOfferts)
	{
		addBasketItem("Frais de port","PORT",0,1,gnFraisPort);
	}
}
*/

function getBasketDisplay(psValue)
{
	var lbCurrent=true;
	if(psValue!="current")
	{
		lbCurrent=false;
		copyFromString(psValue)
	}
	if(gvBasketItemList.length<1)
	{
		return('<p><b>Votre caddie est vide.</b></p>'); 
	}
	var lsResult="";
	var lsAltrow="";
	lsResult+='<div id="basketcontent"><table cellpadding="2"><tr><th>Référence</th><th>Modèle</th><th>Taille</th><th>P.U.</th><th>Quantité</th><th>Montant</th>';
	if(lbCurrent)
	{
		lsResult+='<th>Actions</th>';
	}
	lsResult+='</tr>';
	for(lnK=0;lnK<gvBasketItemList.length;lnK++)
	{
		if(gvBasketItemList[lnK].fPpu==0)
		{
			lsPriceCaption="<i>sur devis</i>";
			lsPpuCaption="<i>sur devis</i>";
		}
		else
		{
			lsPriceCaption=convertValue(gvBasketItemList[lnK].fPrice,"num")+'&nbsp;&euro;';		
			lsPpuCaption=convertValue(gvBasketItemList[lnK].fPpu,"num")+'&nbsp;&euro;';		
		}
		if(lnK%2)
		{
			lsAltrow=' class="altrow"';
		}
		else
		{
			lsAltrow="";
		}
		lsResult+='<tr'+lsAltrow+'><td><a href="catalogue.php?prod='+gvBasketItemList[lnK].nRef+'" alt="voir les détails" title="voir les détails">'+gvBasketItemList[lnK].sRef+'</a></td><td><a href="catalogue.php?prod='+gvBasketItemList[lnK].nRef+'" alt="voir les détails" title="voir les détails">'+gvBasketItemList[lnK].sCaption+'</a></td>';
		lsResult+='<td align="center">'+gvBasketItemList[lnK].sSize+'</td><td align="right">'+lsPpuCaption+'</td><td align="center">&nbsp;x&nbsp;'+gvBasketItemList[lnK].nQty+'&nbsp;</td><td align="right">'+lsPriceCaption+'</td>';
		if(lbCurrent)
		{
			lsResult+='<td><a href="javascript:changeBasketItem('+gvBasketItemList[lnK].nRef+',1);" alt="augmenter la quantité" title="augmenter la quantité"><img src="res/icons/plus.gif" width="16" height="16"></a>&nbsp;<a href="javascript:changeBasketItem('+gvBasketItemList[lnK].nRef+',-1);" alt="diminuer la quantité" title="diminuer la quantité"><img src="res/icons/minus.gif" width="16" height="16"></a>&nbsp;<a href="javascript:changeBasketItem('+gvBasketItemList[lnK].nRef+',0);" alt="supprimer" title="supprimer"><img src="res/icons/delete.gif" width="16" height="16"></a></td>';
		}
		lsResult+='</tr>';
	}
	lsResult+='</table>';
	if(lbCurrent)
	{
		var lsS="s";
		if(getBasketItemCount()<2)
			lsS="";
		
		if(getBasketItemNoPrice())
		{
			lsResult+='<p align="right"><b>Total : '+getBasketItemCount()+' article'+lsS+'</b></p>';
			lsResult+='<p class="comment">Votre caddie contient des articles qui ne sont pas vendus en ligne.<br>Vous pouvez cependant effectuer une demande de devis en cliquant sur le bouton ci-dessous.</p>';
			lsResult+='<center><form action="javascript:goToRequest();"><input type="submit" value="Demander un devis >>>" class="bigbtnhi"></form></center>';	
		}
		else
		{
			lsResult+='<p align="right"><b>Total T.T.C. : '+convertValue(getBasketAmount(),"num")+'&nbsp;&euro; </b>('+getBasketItemCount()+' article'+lsS+')</p>';
			if(getBasketAmount() < gnLimiteFraisOfferts)
				lsResult+="<p align='right'>+ Frais de port : "+convertValue(gnFraisPort,"num")+" &euro;<br>(offerts à partir de "+gnLimiteFraisOfferts+" &euro;)</p>";
			else
				lsResult+="<p align='right'>Frais de port offerts</p>";
			if(lbCurrent)
				lsResult+='<center><form action="commande.php" align="center"><input type="submit" value="Commander >>>" class="btnhi"></form></center></div>';	
		}
	}
	return lsResult;
}

function showBasket()
{
	sendStr(getBasketDisplay("current")); 
}

function showBasketRecord(psValue)
{
	sendStr(getBasketDisplay(psValue)); 
}

function showBasketSummary()
{
	sendStr(getBasketSummary());
}

function getBasketSummary()
{
	if(gvBasketItemList.length>0)
	{
		var lsS="s";
		if(getBasketItemCount() < 2)
			lsS="";
		var lfAmount=getBasketAmount();
		if(lfAmount < gnLimiteFraisOfferts)
		{
			lfAmount+=gnFraisPort;	
		}
		return("<div id='basketsummary'><p class='basketsummary'>Votre caddie contient : <img src='res/icons/void.gif' width='60' height='1'><a href='panier.php'>"+getBasketItemCount()+" article"+lsS+"</a> &middot; "+convertValue(lfAmount,"num")+" &euro;</p></div>");		
	}
	return("<div id='basketsummary'><p class='basketsummary'>Votre caddie contient : <img src='res/icons/void.gif' width='60' height='1'><a href='panier.php'>0 articles</a></p></div>");
}

function getOrderSummary()
{
	if(gvBasketItemList.length<1)
	{
		return ("");
	}
	var lsS="s";
	if(getBasketItemCount()<2)
		lsS="";
	
	if(getBasketItemNoPrice())
	{
		var lsRet='Total : '+getBasketItemCount()+' article'+lsS+'\r\n\r\n';
	}
	else
	{
		var lsRet='Total : '+convertValue(getBasketAmount(),"num")+' euros ('+getBasketItemCount()+' article'+lsS+')\r\n\r\n';
	}
	
	for(lnK=0;lnK<gvBasketItemList.length;lnK++)
	{
		if(gvBasketItemList[lnK].fPpu==0)
		{
			lsPriceCaption="sur devis";
			lsPpuCaption="";
		}
		else
		{
			lsPriceCaption=gvBasketItemList[lnK].fPrice+' euros';		
			lsPpuCaption=gvBasketItemList[lnK].fPpu+' euros';		
		}
		lsRet=lsRet+gvBasketItemList[lnK].sRef+' - '+gvBasketItemList[lnK].sCaption+' : '+lsPpuCaption+'\r\nx '+gvBasketItemList[lnK].nQty+' = '+lsPriceCaption+'\r\n';
	}
	return lsRet;
}

function goToRequest()
{
	location.href="contact.php?message="+escape(getOrderSummary());	
}

function showOrderForm()
{
	var lsS="s";
	if(getBasketItemCount()<2)
		lsS="";

	var lfAmount=getBasketAmount();
	if(lfAmount==0)
	{
			sendStr('<p>Votre caddie ne contient aucun article.<br>Vous pouvez en ajouter à l\'aide du bouton "Ajouter au caddie" en bas de chaque fiche article du <a href="catalogue.php">catalogue</a>.</p>');
	}
	else
	{
		if(lfAmount < gnLimiteFraisOfferts)
		{
			lfAmount+=gnFraisPort;	
		}
		sendStr('<p><b>Contenu de votre caddie : '+lfAmount+'&nbsp;&euro; T.T.C. </b>('+getBasketItemCount()+' article'+lsS+') <a href="panier.php">voir votre caddie</a></p>');
		sendStr('<p>Vous êtes connecté(e) en tant que <b>'+gsAccount+'</b>. <a href="espaceclients.php?action=show&num='+gsNum+'">voir / modifier vos coordonnées</a></p>');
		sendStr('<form name="order" method="post" action="iaSubmitOrder.php"><input type="hidden" name="amount" value="'+getBasketAmount()+'">');
		sendStr('<input type="hidden" name="port" value="'+getBasketPort()+'"><input type="hidden" name="items" value="'+getBasketItemCount()+'"></form>');
		sendStr('<center><p><button class="btnhi" onClick="javascript:document.forms[\'order\'].submit();">Accéder au paiement >>></button></p></center>');
		sendStr('<p class="comment">Votre commande sera validée dès acceptation du paiement par notre serveur bancaire.</p>');
	}
}

loadBasketItemList();
