//**************************************************************************
function parseFloatGRZ(strVal){
// Like parseFloatGR() but returns ZERO if NaN found
	if(strVal.length){
		strVal = strVal.replace(".", "");
		strVal = strVal.replace(",", ".");
	}
	strVal = parseFloat(strVal);
	if(isNaN(strVal)) strVal = 0;
	return strVal;
}
//**************************************************************************
function parseFloatGR(strVal){

	if(strVal.length){
		strVal = strVal.replace(".", "");
		strVal = strVal.replace(",", ".");
	}
	return parseFloat(+strVal);
}
//**************************************************************************
//**************************************************************************
function formatNumberGR(expr, decimals, forced) {
         var str = "" + Math.round(eval(expr) * Math.pow(10,decimals));
         while (str.length <= decimals) { str = "0" + str } 	// maybe add some L
         var decpoint = str.length - decimals; 		// find location of decimal point
         var result = str.substring(0,decpoint);
         if (decimals) result += "." + str.substring(decpoint,str.length);
         if (!forced) {while (result.substr(result.length-1)=="0") { result = result.substr(0,result.length-1) } }
         result = result.replace(/\.$/, "");
         result = result.replace(".",",");
         return result;
}
//**************************************************************************
//**************************************************************************
function formatNumber(expr, decimals, forced) {
         var str = "" + Math.round(eval(expr) * Math.pow(10,decimals));
         while (str.length <= decimals) { str = "0" + str } 	// maybe add some L
         var decpoint = str.length - decimals; 		// find location of decimal point
         var result = str.substring(0,decpoint);
         if (decimals) result += "." + str.substring(decpoint,str.length);
         if (!forced) {while (result.substr(result.length-1)=="0") { result = result.substr(0,result.length-1) } }
         result = result.replace(/\.$/, "");
         return result;
}
//**************************************************************************
//**************************************************************************
function updateCostGR(fldObj, currency){
	if(fldObj && fldObj.form){
		var frm = fldObj.form;
		var itemID = fldObj.name;
		var quantity = parseFloatGR(fldObj.value);
		itemID = itemID.substr(itemID.indexOf("_")+1);			// Product ID
		var itemPrice = parseFloatGR(frm["price_"+itemID].value);
		var fldDiscount = frm["disc_"+itemID];
		var initDiscount = parseFloatGR(fldDiscount.value);
		var unitDiscount = parseFloatGR(frm["hd_disc_"+itemID].value);	// Discount per Item
		var fldVAT = frm["vat_"+itemID];
		var initVat = parseFloatGR(fldVAT.value);
		var unitVAT = parseFloatGR(frm["hd_vat_"+itemID].value);		// Vat per Item
		fldDiscount.value = formatNumberGR(unitDiscount*quantity, 2, true)+currency;
		var xDisc = (unitDiscount*quantity)-initDiscount;
		fldVAT.value = formatNumberGR(unitVAT*quantity, 2, true)+currency;
		var xVat = (unitVAT*quantity)-initVat;
		var itemTotal = frm["tot_"+itemID];
		var xOverall = parseFloatGR(itemTotal.value);			// Initial Item total cost
		var xTotal = xOverall-initVat;					// Initial Item total exc. vat
		itemTotal.value = formatNumberGR((itemPrice-unitDiscount+unitVAT)*quantity, 2, true)+currency;
		var totalVAT = parseFloatGR(frm["totalVAT"].value);
		frm["totalVAT"].value = formatNumberGR(totalVAT+xVat, 2, true)+currency;
		var total = parseFloatGR(frm["total"].value)-xTotal;
		frm["total"].value = formatNumberGR(total+(itemPrice-unitDiscount)*quantity, 2, true)+currency;
		var overall = parseFloatGR(frm["overall"].value)-xOverall;
		frm["overall"].value = formatNumberGR(overall+(itemPrice-unitDiscount+unitVAT)*quantity, 2, true)+currency;
	}
}
//**************************************************************************
//**************************************************************************
function updateCost(fldObj, currency){
	if(fldObj && fldObj.form){
		var frm = fldObj.form;
		var itemID = fldObj.name;
		var quantity = parseFloat(fldObj.value);
		itemID = itemID.substr(itemID.indexOf("_")+1);			// Product ID
		var itemPrice = parseFloat(frm["price_"+itemID].value);
		var fldDiscount = frm["disc_"+itemID];
		var initDiscount = parseFloat(fldDiscount.value);
		var unitDiscount = parseFloat(frm["hd_disc_"+itemID].value);	// Discount per Item
		var fldVAT = frm["vat_"+itemID];
		var initVat = parseFloat(fldVAT.value);
		var unitVAT = parseFloat(frm["hd_vat_"+itemID].value);		// Vat per Item
		fldDiscount.value = formatNumber(unitDiscount*quantity, 2, true)+currency;
		var xDisc = (unitDiscount*quantity)-initDiscount;
		fldVAT.value = formatNumber(unitVAT*quantity, 2, true)+currency;
		var xVat = (unitVAT*quantity)-initVat;
		var itemTotal = frm["tot_"+itemID];
		var xOverall = parseFloat(itemTotal.value);			// Initial Item total cost
		var xTotal = xOverall-initVat;					// Initial Item total exc. vat
		itemTotal.value = formatNumber((itemPrice-unitDiscount+unitVAT)*quantity, 2, true)+currency;
		var totalVAT = parseFloat(frm["totalVAT"].value);
		frm["totalVAT"].value = formatNumber(totalVAT+xVat, 2, true)+currency;
		var total = parseFloat(frm["total"].value)-xTotal;
		frm["total"].value = formatNumber(total+(itemPrice-unitDiscount)*quantity, 2, true)+currency;
		var overall = parseFloat(frm["overall"].value)-xOverall;
		frm["overall"].value = formatNumber(overall+(itemPrice-unitDiscount+unitVAT)*quantity, 2, true)+currency;
	}
}
//**************************************************************************
//**************************************************************************
function updateCart(frmObj){

	if(frmObj){
		var frm = frmObj;
		var elemsCount = frm.elements.length;
		var itemID, fldObj, arrQuants = new Array(), arrItems = new Array();

		for(var e=0; e<elemsCount;e++){
			fldObj = frm.elements[e];
			fldName = fldObj.name;
			if(fldName.substr(0, 6)=="quant_"){
				itemID = fldName.substr(6);
				arrItems[arrItems.length] = itemID;
			}
		}

		if(arrItems.length){
			var joiner;
			(frm.action.indexOf("?")==-1) ? joiner = "?" : joiner = "&"
			frm.action += joiner + "items=" + arrItems.join(";");
			return true;
		}
	}
	return false;
}
//**************************************************************************
//===================================================================================
function toggleState(imgObj){

	if(typeof(imgObj)=="string") imgObj = document.images[imgObj];

	if(imgObj){
		var newState, imgSource = imgObj.src, checked = false;
		if(imgSource.slice(-6)=="_y.gif") checked = true;
		(checked) ? imgObj.src = imgObj.src.replace(/_y.gif$/, "_n.gif") : imgObj.src = imgObj.src.replace(/_n.gif$/, "_y.gif")
		return true;
	}
	return false;
}
//===================================================================================
function vUpdateQ(img, fld, frm){
	// Update quantity from virtual checkbox

	if(typeof(img)=="string") img = document.images[img];
	if(typeof(frm)=="string") frm = document.forms[frm];

	if(frm && typeof(fld)=="string") fld = frm[fld];

	if(img && fld){
		// StringObject.substr(-N) does not work for IE (ver 5.0 tested)
		(img.src.substr(img.src.length-6)=="_y.gif") ? fld.value = 1 : fld.value = 0;
	}
}
//===================================================================================
