function initialise_products_script()
{
if (!$('AJAX_CHILD_ELEMENT_APPENDER'))
return;
var body = $$('body')[0];
var back = Builder.node('div', {id: 'products_cart_background', className: 'products_cart_background'});
var curtain = Builder.node('div', {id: 'products_cart_curtain', className: 'products_cart_curtain'});
var div = Builder.node('div', {id: 'products_cart_div', className: 'products_cart_div'},
[
Builder.node('div', {id: 'products_cart_close_link', className: 'products_cart_content_small'},
[
Builder.node('strong', 'X'),
Builder.node('span', ' close cart')
]),
Builder.node('div', {id: 'products_cart_div_content'})
]);
//body.appendChild(curtain);
//body.appendChild(back);
//body.appendChild(div);
// update, IE bug...
$('AJAX_CHILD_ELEMENT_APPENDER').appendChild(curtain);
$('AJAX_CHILD_ELEMENT_APPENDER').appendChild(back);
$('AJAX_CHILD_ELEMENT_APPENDER').appendChild(div);
$('products_cart_curtain').hide();
$('products_cart_background').hide();
$('products_cart_div').hide();
$('products_cart_background').setStyle({
backgroundImage:"url(http://www.luxy.co.za/admin/modules/products/cart_top_tile.gif)",
backgroundRepeat:"repeat-x"
});
$('products_cart_background').observe('click', products_cart_minimise);
$('products_cart_curtain').observe('click', products_cart_minimise);
$('products_cart_close_link').observe('click', products_cart_minimise);
}
function products_cart_minimise()
{
new Effect.Fade('products_cart_curtain', {duration:0.3});
new Effect.Fade('products_cart_background', {duration:0.3});
$('products_cart_div').hide();
}
function products_cart_maximise()
{
if ($('products_cart_background').style.display == "none")
{
$('products_cart_curtain').style.position = 'fixed';
new Effect.Appear('products_cart_curtain', {duration:0.3, from:0.0, to:0.90});
new Effect.Appear('products_cart_background', {duration:0.3, from:0.0, to:0.80});
}
if ($('products_cart_div').style.display == "none")
$('products_cart_div').show();
location.href = '#top_of_page';
}
function products_cart_add_product(id)
{
// process parameters...
var i=0;
var allowed = true;
var params = "";
while ($(id + '_parameter_group_' + i))
{
var group = $(id + '_parameter_group_' + i);
var elem = $(id + '_parameter_' + group.value);
if (elem.value == "")
{
if ($(id + '_parameter_label_' + i))
show_error_message_box("Please select a value for '"+ $(id + '_parameter_label_' + i).value +"'");
else
show_error_message_box("Please ensure all product parameter options have been selected");
allowed = false;
break;
}
else if ($(id + '_parameter_group_' + i))
{
var grp_id = parseInt($(id + '_parameter_group_' + i).value);
params += "&grp" + grp_id + "=" + elem.value;
}
i++;
}
if (allowed)
{
products_cart_maximise();
products_cart_show_loader();
new Ajax.Request("http://www.luxy.co.za/admin/modules/products/ajax/add_to_cart.php?id=" + id + "&quantity=1" + params, {method: 'get', onComplete: function()
{
products_cart_show_products();
}});
}
}
function products_cart_increase_quantity(id)
{
products_cart_maximise();
products_cart_show_loader();
new Ajax.Request("http://www.luxy.co.za/admin/modules/products/ajax/increase_quantity.php?id=" + id, {method: 'get', onComplete: function()
{
products_cart_show_products();
}});
}
function products_cart_decrease_quantity(id)
{
products_cart_maximise();
products_cart_show_loader();
new Ajax.Request("http://www.luxy.co.za/admin/modules/products/ajax/decrease_quantity.php?id=" + id, {method: 'get', onComplete: function()
{
products_cart_show_products();
}});
}
function products_cart_show_loader()
{
var h = parseInt($$('body')[0].clientHeight);
if(parseInt($$('body')[0].scrollHeight) > h)
h = parseInt($$('body')[0].scrollHeight);
h -= parseInt($('products_cart_div_content').offsetTop);
h -= 10;
//$('products_cart_div').setStyle({height: h + 'px'});
var HTML = "";
HTML += "
";
HTML += "
Your Cart";
HTML += "
Loading...
";
HTML += "
";
$('products_cart_div_content').innerHTML = HTML;
}
function products_cart_show_products()
{
setTimeout(function()
{
new Ajax.Updater('products_cart_div_content', 'http://www.luxy.co.za/admin/modules/products/ajax/get_cart_info.php', {method: 'get', evalScripts:true, onComplete: function()
{
//$('products_cart_div').setStyle({height: 'auto'});
//var h = parseInt($$('body')[0].clientHeight);
//if(parseInt($$('body')[0].scrollHeight) > h)
// h = parseInt($$('body')[0].scrollHeight);
//$('products_cart_background').setStyle({height: h});
}});
}, 500);
}
function products_cart_show_your_cart()
{
products_cart_maximise();
products_cart_show_loader();
products_cart_show_products();
}
function products_cart_remove_item(item_id)
{
products_cart_show_loader();
new Ajax.Request('http://www.luxy.co.za/admin/modules/products/ajax/remove_item.php', {method:'get', parameters:{id:item_id}, onComplete:function()
{
products_cart_show_products();
}});
}
function product_frontend_switch_thumbnail(id, image_id)
{
jQuery('#td_product_main_thumbnail').fadeTo(350, 0, function()
{
jQuery(this)
.html('Loading...')
.fadeTo(350, 1, function()
{
var img = new Image();
img.onLoad = product_frontend_switch_thumbnail_ajax(id, image_id);
img.src = 'http://www.luxy.co.za/admin/modules/products/get_product_thumbnail.php?id='+ id +'&image_id='+ image_id;
});
});
}
function product_frontend_switch_thumbnail_ajax(id, image_id)
{
jQuery('#td_product_main_thumbnail').fadeTo(350, 0, function()
{
jQuery(this).load('./admin/modules/products/ajax/get_product_main_thumbnail.php?id='+id+'&image_id='+image_id, function()
{
jQuery(this).fadeTo(350, 1);
});
});
}
function products_calculate_has_stock(id, select_element)
{
elem = jQuery(select_element);
var row = elem.parent().parent();
var table = row.parent();
row.nextAll().remove();
var params = {};
params.id = id;
params.current = elem.attr('id');
table.find("select").each(function()
{
var local_elem = jQuery(this);
params[local_elem.attr('id')] = local_elem.val();
});
jQuery.get
(
"./admin/modules/products/ajax/frontend_get_dropdown.php",
params,
function(data)
{
if (data && data !== null && data !== undefined)
{
var new_html = jQuery(data);
new_html.hide().appendTo(table);
new_html.fadeIn(350);
}
}
);
/*
// process parameters...
var i=0;
var allowed = true;
var params = "";
while ($(id + '_parameter_' + i))
{
var elem = $(id + '_parameter_' + i);
if ($(id + '_parameter_group_' + i))
{
if (elem == select_element)
products_load_parameter_colour(i, elem.value);
var grp_id = parseInt($(id + '_parameter_group_' + i).value);
params += "&grp" + grp_id + "=" + elem.value;
}
i++;
}
//jQuery('#div_product_in_stock').html('Calculating stock...');
jQuery('#product_addtocart_button_' + id).fadeOut(200);
jQuery.ajax(
{
type: 'GET',
url: 'http://www.luxy.co.za/admin/modules/products/ajax/has_stock.php?id=' + id + params,
dataType: 'text',
success: function(data)
{
if (data.toLowerCase().indexOf('green') >= 0)
{
jQuery('#product_nostock_div').fadeOut(200, function()
{
if (!jQuery('#product_addtocart_button_' + id).is(':visible'))
jQuery('#product_addtocart_button_' + id).fadeIn(200);
});
}
else
{
if (jQuery('#product_nostock_div').length < 1)
{
var nostockdiv = jQuery('');
nostockdiv.attr('id', 'product_nostock_div');
nostockdiv.css('padding', '10px');
nostockdiv.html('No Stock Available');
jQuery('#product_addtocart_button_' + id).parent().prepend(nostockdiv);
nostockdiv.hide();
}
jQuery('#product_addtocart_button_' + id).fadeOut(200, function(){jQuery('#product_nostock_div').fadeIn(200);});
}
}
});
/*
new Ajax.Updater('div_product_in_stock', 'http://www.luxy.co.za/admin/modules/products/ajax/has_stock.php?id=' + id + params, {method: 'get', onSuccess:function()
{
var result = $('div_product_in_stock').innerHTML;
if (id == 155)
alert(result);
if (result.toLowerCase().indexOf('green') >= 0)
jQuery('#product_addtocart_button_' + id).fadeIn(200);
//else
//$('product_addtocart_button_' + id).style.visibility = 'hidden';
}});
*/
}
function products_load_parameter_colour(counter, option)
{
var span = jQuery('#div_colour_preview_'+counter);
span
.html('loading...')
.fadeIn(350, function()
{
jQuery.get('./admin/modules/products/ajax/get_option_colour.php?number='+ option, '', function(response)
{
span.fadeOut(350, function()
{
jQuery(this)
.html(response)
.fadeIn(350);
});
});
});
}
document.observe('dom:loaded', initialise_products_script);