// form validation

function validateRegistration(e)
{
    var elm = Event.element(e);
    // check mandatory elements
    var inputs = $$('.mandatory');
    var incomplete = false;
    inputs.each(function(i)
    {
        if (i.value.length == 0) {
            incomplete = true;
            i.up('tr').addClassName('incomplete');
        }
        else
            i.up('tr').removeClassName('incomplete');
    });

    if (incomplete) {
        Event.stop(e);
        return false;
    }
    else {
        if (elm.register.value)
            elm.user.value = elm.email1.value;
        Element.hide('registererror');
    }
}

// submit order form
function sendOrder(e)
{
    var orderform = Event.element(e);
    // make sure we have the form element
    if (orderform.nodeName != 'FORM')
        orderform = orderform.up('form');
    var req = new Ajax.Request('/winkelwagen.php', 
    {
        method: 'get',
        parameters: orderform.serialize(),
        onComplete: function(r) 
        {
            j = eval(r.responseText);
            $$('.cartstatus').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.Pulsate('winkelwagenstatus', {pulses: 2, from: 0.2, duration: 1.0})
            });
        }
    });
    Event.stop(e);
    return false;
}

// submit cart form
function recalculateCart(e)
{
    var elm = Event.element(e);
    if (elm.nodeName != 'FORM')
        elm = elm.up('form');
    elm.recalc.value = 1;
    elm.submit();
}

// submit cart form with delete
function deleteFromCart(e)
{
    var elm = Event.element(e);
    if (elm.nodeName != 'A')
        elm = elm.up('a');
    var orderid = elm.getAttribute('orderid');
    elm = elm.up('form');
    elm.delorder.value = orderid;
    elm.recalc.value = 1;
    elm.submit();
}

// expand order overview
function expandOrder(e)
{
    var elm = Event.element(e);
    $$('expand').each(function(e)
    {
        if (e.name != elm.name)
            $('orders' + e.name).hide();
    });
    $('orders' + elm.name).toggle();
}

// transfer address data
function transferAddress(e)
{
    var elm = Event.element(e);
    elm = elm.up('form');
    if (elm.compname)
        elm.deliverycompname.value = elm.compname.value;
    elm.deliveryfirstname.value = elm.firstname.value;
    elm.deliverylastname.value = elm.lastname.value;
    elm.deliveryaddress.value = elm.address.value;
    elm.deliverypcode.value = elm.pcode.value;
    elm.deliverycity.value = elm.city.value;
    elm.deliveryphone.value = elm.telwork.value;
    Event.stop(e);
    return false;
}

// switch delivery display
function switchDelivery(e)
{
    var elm = Event.element(e);
    if (elm.value == 'afhalen') {
        $$('.deliver').each(function(tr) {tr.hide();});
    }
    else {
        $$('.deliver').each(function(tr) {tr.show();});
    }
}

// validate recipe mailing
function validateMailing(e)
{
    var elm = Event.element(e);
    var stop = false;
    // check mandatory elements
    $$('#tafform .mandatory').each(function(i)
    {
        if ((i.type == 'checkbox' && !i.checked) || (i.value.length == 0)) {
            i.up('label').addClassName('missing');
            stop = true;
        }
        else {
            i.up('label').removeClassName('missing');
        }
    });
    if (stop) {
        $('validateerror').show();
        Event.stop(e);
        return false;
    }
    else {
        $('validateerror').hide();
        elm.to.name = 'recipient';
    }
}

// initialise page
function init()
{
    var registerForm = $('registerform');
    if (registerForm) {
        Event.observe(registerForm, 'submit', validateRegistration);
    }
    $$(".addtocart").each(function(b)
    {
        Event.observe(b, 'click', sendOrder);
    });
    $$(".orderform").each(function(b)
    {
        Event.observe(b, 'submit', sendOrder);
    });
    $$('.recalc').each(function(b)
    {
        Event.observe(b, 'click', recalculateCart);
    });
    $$('.delfromcart').each(function(b)
    {
        Event.observe(b, 'click', deleteFromCart);
    });
    // order list expand buttons
    $$(".expand").each(function(e)
    {
        Event.observe(e, 'click', expandOrder);
    });
    // switch delivery status
    $$('.deliveryswitch').each(function(e)
    {
        Event.observe(e, 'change', switchDelivery);
    });
    // transfer address data
    if ($('transfer')) {
        Event.observe($('transfer'), 'click', transferAddress);
    }
    // make sure correct values are in status
    if ($('storednumber')) {
        var number = $('storednumber').innerHTML;
        var amount = $('storedamount').innerHTML;
        $$('.cartstatus').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);
        });
    }
    $$('#tafform').each(function(f) {Event.observe(f, 'submit', validateMailing);});
    $$('.autosubmit').each(function(elm) {Event.observe(elm, 'change', function(e){Event.element(e).form.submit()})});
}

Event.observe(window, 'load', init);

