// form validation
// settings
var errorColor = '#BC0302';
var errorBorder = '#BC0302';
var okColor = '#444';
var okBorder = '#999';
var hasError = false;

function validateRegistration(e)
{
    var elm = Event.element(e);
    if (elm.nodeName != 'FORM')
        elm = elm.form;

    // check mandatory elements
    var inputs = document.getElementsByClassName('mandatory', elm);
    inputs.each(function(i)
    {
        if (i.value.length == 0) {         
            Element.setStyle(i, {color: errorColor, borderColor: errorBorder});
            Element.show('registererror');
            hasError = true;
            Event.stop(e);
        }
        else {
            Element.setStyle(i, {color: okColor, borderColor: okBorder});
        }
    });
    if (!hasError) {
        if (elm.register.value)
            elm.user.value = elm.email1.value;
        Element.hide('registererror');
    }
}

// submit order form
function sendOrder(e)
{
    var lang = location.pathname.substr(0,3);
    var orderform = Event.element(e);
    while (orderform.nodeName != 'FORM')
        orderform = orderform.parentNode;
    var req = new Ajax.Request(lang + '/winkelwagen.php', 
    {
        method: 'get',
        parameters: orderform.serialize(),
        onComplete: function(r) 
        {
            j = eval(r.responseText);
            var update = document.getElementsByClassName('cartstatus');
            update.each(function(s)
            {
                if (parseInt(j.number) == 1)
                    Element.update(s, j.number + ' item &euro; ' + j.price);
                else
                    Element.update(s, j.number + ' items &euro; ' + j.price);
                new Effect.Highlight('winkelwagenstatus', {startcolor:'#797972', endcolor:'#BC0302'})
            });
        }
    });
    Event.stop(e);
}

// submit cart form
function recalculateCart(e)
{
    var elm = Event.element(e);
    while (elm.nodeName != 'FORM')
        elm = elm.parentNode;
    elm.recalc.value = 1;
    elm.submit();
}

// submit cart form with delete
function deleteFromCart(e)
{
    var elm = Event.element(e);
    while (elm.nodeName != 'A')
        elm = elm.parentNode;
    var orderid = elm.getAttribute('orderid');
    while (elm.nodeName != 'FORM')
        elm = elm.parentNode;
    elm.delorder.value = orderid;
    elm.recalc.value = 1;
    elm.submit();
}

// expand order overview
function expandOrder(e)
{
    var elm = Event.element(e);
    var expands = document.getElementsByClassName('expand');
    expands.each(function(e)
    {
        if (e.name != elm.name)
            $('orders' + e.name).hide();
    });
    $('orders' + elm.name).toggle();
}

// initialise page
function init()
{
    var registerForm = $('registerform');
    if (registerForm) {
        Event.observe(registerForm, 'submit', validateRegistration);
    }
    var orderbuttons = document.getElementsByClassName('addtocart');
    orderbuttons.each(function(b)
    {
        Event.observe(b, 'click', sendOrder);
    });
    var orderforms = document.getElementsByClassName('orderform');
    orderforms.each(function(b)
    {
        Event.observe(b, 'submit', sendOrder);
    });
    var recalc = document.getElementsByClassName('recalc');
    recalc.each(function(b)
    {
        Event.observe(b, 'click', recalculateCart);
    });
    var del = document.getElementsByClassName('delfromcart');
    del.each(function(b)
    {
        Event.observe(b, 'click', deleteFromCart);
    });
    // order list expand buttons
    var expands = document.getElementsByClassName('expand');
    expands.each(function(e)
    {
        Event.observe(e, 'click', expandOrder);
    });
    // make sure correct values are in status
    if ($('storednumber')) {
        var number = $('storednumber').innerHTML;
        var amount = $('storedamount').innerHTML;
        var update = document.getElementsByClassName('cartstatus');
        update.each(function(s)
        {
            if (parseInt(number) == 0)
                Element.update(s, 'uw winkelwagen is leeg');
            else if (parseInt(number) == 1)
                Element.update(s, number + ' item &euro; ' + amount);
            else
                Element.update(s, number + ' items &euro; ' + amount);
        });
    }
}

Event.observe(window, 'load', init);
