170 lines
4.8 KiB
JavaScript
170 lines
4.8 KiB
JavaScript
var selects = new Array;
|
|
var combinaisons = new Array;
|
|
var quantities = new Array;
|
|
var prices = new Array;
|
|
var ecotaxes = new Array;
|
|
var images = new Array;
|
|
var attr_price = new Number(0);
|
|
var product_price = new Number;
|
|
var attr_ecotax = new Number(0);
|
|
var img_prod_dir = new String;
|
|
var id_product = new Number;
|
|
var oosp = new Number;
|
|
var last_qties = new Number;
|
|
var total_qties = new Number;
|
|
|
|
function addSelect(id_attribute_group, group_name)
|
|
{
|
|
selects[id_attribute_group] = group_name;
|
|
}
|
|
|
|
function writeQuantity()
|
|
{
|
|
if (typeof(nbpiece) != 'undefined' && (nbpiece > 0 || oosp == 1))
|
|
{
|
|
getE('add_to_cart').style.display = 'block';
|
|
getE('last_qties').style.display = ((nbpiece < last_qties && (nbpiece > 0 && oosp != 1)) ? 'block' : 'none');
|
|
checkQty();
|
|
}
|
|
else
|
|
{
|
|
getE('add_to_cart').style.display = 'none';
|
|
}
|
|
}
|
|
|
|
function writeAvailability()
|
|
{
|
|
if (getE('qtyav'))
|
|
{
|
|
getE('qtyav').innerHTML = (typeof(availabilityMessage) != 'undefined' ? availabilityMessage : '');
|
|
if (typeof(nbpiece) != 'undefined' && (nbpiece > 0 || oosp == 1))
|
|
{
|
|
if (displayQties)
|
|
getE('qtyav').innerHTML += (getE('qtyav').innerHTML != '' ? '<br />' : '') + nbpiece + ' ' + (nbpiece > 1 ? pieces : piece);
|
|
}
|
|
else if (typeof(nbpiece) != 'undefined' && (nbpiece == 0 && oosp == 0))
|
|
{
|
|
getE('qtyav').innerHTML = (typeof(availabilityMessage) != 'undefined' ? availabilityMessage : outofstock);
|
|
}
|
|
else if (noAttribut == 0)
|
|
{
|
|
getE('qtyav').innerHTML = ' ' + doesntexist + (total_qties ? ' ' + doesntexist_but : '');
|
|
}
|
|
toggle(getE('divqtyav'), (getE('qtyav').innerHTML != ''));
|
|
}
|
|
writeQuantity();
|
|
}
|
|
|
|
function checkQty()
|
|
{
|
|
if (getE('qty').value != '' && getE('qty').value <= 0)
|
|
getE('qty').value = 1;
|
|
else if (getE('qty').value > nbpiece && oosp == 0)
|
|
getE('qty').value = nbpiece;
|
|
}
|
|
|
|
function updatePrice()
|
|
{
|
|
var tax = (taxRate / 100) + 1;
|
|
var attribut_price = attr_price;
|
|
if (no_tax > 0)
|
|
attribut_price /= tax;
|
|
var priceProductWR = (attribut_price + product_price_without_reduct) * currency_rate;
|
|
var priceReduct = priceProductWR / 100 * parseInt(reduction_percent) + reduction_price;
|
|
var priceProduct = priceProductWR - priceReduct;
|
|
var priceProductHT = (priceProductWR - priceReduct) / tax;
|
|
|
|
getE('price').innerHTML = (typeof(priceText) != 'undefined' ? priceText + ' ' : '') + (currency_format == 1 ? currency_sign + ' ' : '') + (priceProduct).toFixed(priceDisplayPrecision) + (currency_format == 2 ? ' ' + currency_sign : '');
|
|
if (getE('pretax-price'))
|
|
getE('pretax-price').innerHTML = (typeof(priceText) != 'undefined' ? priceText + ' ' : '') + (currency_format == 1 ? currency_sign + ' ' : '') + (priceProductHT).toFixed(priceDisplayPrecision) + (currency_format == 2 ? ' ' + currency_sign : '');
|
|
if (getE('price_without_reduct'))
|
|
getE('price_without_reduct').innerHTML = (currency_format == 1 ? currency_sign + ' ' : '') + (priceProductWR).toFixed(priceDisplayPrecision) + (currency_format == 2 ? ' ' + currency_sign : '');
|
|
}
|
|
|
|
function updateEcotax()
|
|
{
|
|
if (attr_ecotax != 0)
|
|
getE('ecotax').innerHTML = 'éco-participation : ' + (attr_ecotax * currency_rate) + ' ' + currency_sign;
|
|
else
|
|
getE('ecotax').innerHTML = '';
|
|
}
|
|
|
|
function addCombinaison(id_product_attribute, attributes, quantity, price, ecotax, id_image)
|
|
{
|
|
quantities[id_product_attribute] = quantity;
|
|
total_qties += quantity;
|
|
combinaisons[id_product_attribute] = attributes;
|
|
prices[id_product_attribute] = price;
|
|
ecotaxes[id_product_attribute] = ecotax;
|
|
images[id_product_attribute] = id_image;
|
|
}
|
|
|
|
function in_array(val, arr)
|
|
{
|
|
for (var i in arr)
|
|
if (arr[i] == val)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
function findCombinaison()
|
|
{
|
|
var currentComb;
|
|
var nbOk = new Number(0);
|
|
var choices = new Array;
|
|
var link = new String();
|
|
|
|
/* first is true when called for first time */
|
|
|
|
for (keyVar in selects)
|
|
{
|
|
current = selects[keyVar];
|
|
choices.push(eval(getE(current).value));
|
|
}
|
|
|
|
for (keyComb in combinaisons)
|
|
{
|
|
for (id_attribute in combinaisons[keyComb])
|
|
{
|
|
if (in_array(combinaisons[keyComb][id_attribute], choices))
|
|
nbOk++;
|
|
}
|
|
|
|
if (nbOk == combinaisons[keyComb].length)
|
|
{
|
|
getE('id_product_attribute').value = keyComb;
|
|
nbpiece = quantities[keyComb];
|
|
writeAvailability();
|
|
attr_price = prices[keyComb];
|
|
updatePrice();
|
|
attr_ecotax = ecotaxes[keyComb];
|
|
updateEcotax();
|
|
|
|
if (images[keyComb] && images[keyComb] != -1)
|
|
{
|
|
link = img_prod_dir + id_product + '-' + images[keyComb] + '-large.jpg';
|
|
getE('bigpic').src = link;
|
|
onClickImage(images[keyComb], '', link);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
nbOk = 0;
|
|
}
|
|
nbpiece = -1;
|
|
writeAvailability();
|
|
return;
|
|
}
|
|
|
|
function getE(name)
|
|
{
|
|
if (document.getElementById)
|
|
var elem = document.getElementById(name);
|
|
else if (document.all)
|
|
var elem = document.all[name];
|
|
else if (document.layers)
|
|
var elem = document.layers[name];
|
|
return elem;
|
|
}
|