// Donberg Shopping basket based on "NOP Design JavaScript Shopping Cart"
//
// For more information on SmartSystems, or how NOPDesign can help you
// Please visit us on the WWW at http://www.dondesign.com/
//
// Javascript portions of this shopping cart software are available as
// freeware from NOP Design. You must keep this comment unchanged in
// your code. For more information contact FreeCart@NopDesign.com.
// Major code updates and error fixes in Summer 2008 by Harald Weinreich


MonetarySymbol 	= '&euro; ';
lDisplayNotice	= true;
DisplayPackingColumn = true;
TaxRate		= 0.23; // $vat_rate 23%
vat_rate		= '23'; // String with VAT rate.
MinimumOrder		= 10.00;
MaxItems		= 40; // Maximum number of items in Cart - Limited by number of Cookies allowed in Browser, usually 50.
if (is_ie)	MaxItems = 14; // Max 20 Cookies
if (is_opera)	MaxItems = 24; // Max 30 Cookies

// Check if quantity is represented as a number
function CKquantity(checkString) {
	var strNewQuantity = "";
	for ( i = 0; i < checkString.length; i++ ) {
		ch = checkString.substring(i, i+1);
		if ( (ch >= "0" && ch <= "9") )	strNewQuantity += ch;
	}
	if ( strNewQuantity.length < 1 ) strNewQuantity = "1";
	return(strNewQuantity);
}


// Adds a product to the user's shopping cart
function AddToCart(thisForm) {
	var iPos = 0;
	var bAlreadyInCart = false;
	var notice = "";
	iPos = getCookie("Items");

	if ( iPos == null )	iPos = 0;

	if ( thisForm.ID_NUM == null )	cID_NUM	 = "";
	else	cID_NUM	 = thisForm.ID_NUM.value;

	if ( thisForm.QUANTITY == null ) nQUANTITY = "1";
	else	nQUANTITY = thisForm.QUANTITY.value;

	if ( thisForm.PRICE == null )	nPRICE	 = "0.00";
	else	nPRICE	 = thisForm.PRICE.value;

	if ( thisForm.NAME == null ) cNAME		= "";
	else	cNAME		= thisForm.NAME.value;

	if ( thisForm.PACKING == null )	nPACKING = "1";
	else	nPACKING = thisForm.PACKING.value;

	// At least "1" entered?
	if (nQUANTITY<1) return;

	//Is this product already in the cart? If so, increment quantity instead of adding another.
	for ( i = 1; i <= iPos; i++ ) {
		NewOrder = "Order." + i;
		database = getCookie(NewOrder);

		f = database.split("|");

		if ( f[0] == cID_NUM && f[2] == nPRICE && f[3] == cNAME ) {
			bAlreadyInCart = true;
			dbUpdatedOrder = cID_NUM + "|" + (parseInt(nQUANTITY)+parseInt(f[1])) + "|" +
							nPRICE + "|" + cNAME + "|" + nPACKING;
			cNewOrder = "Order." + i;
			deleteCookie(cNewOrder, "/");
			setCookie(cNewOrder, dbUpdatedOrder, null, "/");
			notice = getCardAddedNotice(nQUANTITY, cID_NUM, cNAME, nPACKING);
			break;
		}
	}
	// If product not found, create new entry.
	if ( !bAlreadyInCart ) {
		iPos++;
		// Limit order to X items!
		if ( iPos > MaxItems ) alert( strSorry );
		else {
			dbUpdatedOrder = cID_NUM  + "|" + nQUANTITY + "|" +
							 nPRICE + "|" + cNAME	+ "|" + nPACKING;
			setCookie("Order." + iPos, dbUpdatedOrder, null, "/");
			setCookie("Items", iPos, null, "/");
			notice = getCardAddedNotice(nQUANTITY, cID_NUM, cNAME, nPACKING);
			// Update items in basket...
			if (document.getElementById('basket_items_1'))
				document.getElementById('basket_items_1').innerHTML=" ("+iPos+")";
			if (document.getElementById('basket_items_2'))
				document.getElementById('basket_items_2').innerHTML=" ("+iPos+")";
			if (document.getElementById('basket_items_3'))
				document.getElementById('basket_items_3').innerHTML=" ("+iPos+")";
		}
	}

	if ( lDisplayNotice && notice!="") alert(notice);
}

// Get alertbox message when an item was added to the cart...
function getCardAddedNotice(quantity, id, name, packing) {
	nItemsInCart = getCookie("Items");
	return strAdded1 + "\n\n" + quantity + strPacksOf + "\n" + id + "\n" + name + "\n\n" + strItems1 + nItemsInCart + strItems2;
}


// Reformats Amount to #.## or similar format
function moneyFormat(input) {
	var dollars = Math.floor(input);
	var tmp = new String(input);

	for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) {
		if ( tmp.charAt(decimalAt)=="." )
			break;
	}

	var cents = "" + Math.round(input * 100);
	cents = cents.substring(cents.length-2, cents.length)
	 dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

	if ( cents == "0" )
		cents = "00";

	return(dollars + DecimalPoint + cents);
}


// Show "Add to shopping basket" form elements...
function showAddCart(id, name, price, packing) {
	var out="";
	if (!testCookiesEnabled()) {
		out += "<h4>"+strCookies+"</h4>";
	} else {
		out ="<FORM NAME=order onSubmit='return false;'>";
		out += strAddPack1;
		out += "<input type='text' size='4' maxlength='6' class='qty' name='QUANTITY' id='order_quantity' onChange='this.value=CKquantity(this.value);' value=1>";
		out += strAddPack2;
		out += packing;
		out += strAddPack3;
		out += "<input type=hidden name='ID_NUM' value='"+id+"'>";
		out += "<input type=hidden name='NAME' value='"+name+"'>";
		out += "<input type=hidden name='PRICE' value='"+price+"'>";
		out += "<input type=hidden name='PACKING' value='"+packing+"'>";
		out += "<input type=button class='such_button' value='"+strAddCart+"' onClick='AddToCart(this.form)'>";
		out += "</FORM><br>";
	}
	document.write(out);
}


// Test if cookies are enabled
function testCookiesEnabled() {
 var tmp = new Date();
 tmp = (tmp.getTime() + '');
 document.cookie = "testcookie=" + tmp + "; path=/";
 if (document.cookie.indexOf("testcookie",0) < 0) return false;
 deleteCookie("testcookie","/");
 return true;
}

function addFade(element) {
	elements = getCookie('fade');
	if (elements==null)
		elements=new Array();
	else
		elements=elements.split('|')
	elements.push(element);
	setCookie('fade',elements.join('|'));
}
function doFade() {
	elements = getCookie('fade');
	if (elements==null) return false;
	deleteCookie('fade');
	a = elements.split('|');
	for (var i = 0; i < a.length; i++) {
		fadeIn(a[i],255,255,64);
	}
}

// Some effect to show what has changed...
function fadeIn(elementId,red,green,blue) {
	if (!document.getElementById(elementId)) return false;
	if (red ==255 && green == 255 && blue==255) {
		//document.getElementById(elementId).style.backgroundColor = "transparent";
		document.getElementById(elementId).style.backgroundColor = "#fff";
		return true;
	}
	document.getElementById(elementId).style.backgroundColor = "rgb("+red+","+green+","+blue+")";
	red = red + Math.ceil((255 - red)/20);
	green = green + Math.ceil((255-green)/20);
	blue = blue + Math.ceil((255-blue)/20);
	setTimeout("fadeIn('"+elementId+"',"+red+","+green+","+blue+")", 50);
}
