
function manageError(e,error)
{
    console.debug(e);
    if(error)
    {
        e.addClass('error');
        e.next().show().html(e.attr("title"));
    }
    else
    {
        e.removeClass('error');
        e.next('span').hide().val('');
    }
}
function validateElement(e)
{
    var v;
    var errors = false;
    if((!e.val()) && (e.hasClass('required')))
    {
        manageError(e,true);
        errors = true;
    } else {
        manageError(e,false);
        errors = true;
    }
    if(e.hasClass('email'))
    {
        v = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test($(this).val());
        if(!v)
        {
            manageError(e,true);
            errors = true;
        } else {
            manageError(e,false);
            errors = true;
        }
    }
    return errors;
}

$(document).ready(function() {

    if($("#pickaddress"))
    {
        var oneChecked = false;
        $("#pickaddress").click(function() {
            var n = $('#address_list .pick_address:checked').length;
            if(n == 0)
            {
                alert('Please select an address to deliver to');
                return false;
            }
        });
    }
    if($("#click-add-address")) {
        $("#click-add-address").click(function() {
            $("#click-add-address").hide();
            $("#add_address").show();
        });
    }
    $(".address_action").click(function() {
        observeAddressAction(this);
    });
    $("#address_country").change(function() {
        if(this.value == '184') {
            $("#us_states").show();
            $("#nonus_state").hide();
        }
        else {
            $("#us_states").hide();
            $("#nonus_state").show();
        }
    });
    if($("#update_phone_submit")) {
        $("#update_phone_submit").click(function() {
            $.post("managers/account_manager.php", $(".updatephone").serialize(), function(data){
                alert('Phone numbers saved.')
            });
        });

    }
    if($("#add_address_submit"))
    {
        $("#add_address_submit").click(function() {
/*
            var errors = false
            var elm;
            $('.newaddress.validate').each(function() {
                elm = $(this);
                checkelm = validateElement(elm);
                if(checkelm) errors = true;
            });

            if(errors) return false;
            */

            var address = '';
            address += $('#address_line1').val();
            if($('#address_line2').val()) address += ', '+$('#address_line2').val();
            address += ', '+$('#address_town').val();
            address += ', '+$('#address_county').val();
            address += ', '+$('#address_postcode').val();
            //address += ', '+$('#address_country').val();
            address += ', '+$('#address_country :selected').text();

            
            var cont = confirm('Are you sure you wish to add/save the following address?\n\n'+address+'\n\nPress OK to confirm.');
            
            if(cont==true)
            {
                $('#address_spinner').show();
                $.post("managers/account_manager.php", $(".newaddress").serialize(), function(data){

                    if($("#noaddress")) {
                        $("#noaddress").remove();
                    }
                    if($('#giveitago').val() == 'editaddress') {
                        $('#address_'+$('#edit_address_id').val()).html(data);
                        $('#giveitago').val('addaddress');
                    }
                    else {
                        $('#pick_advice').show();
                        $('#pick_advice').before(data);
                    }
                    switch($('#address_country').val()) {
                        case '220':
                        case '221':
                        case '222':
                        case '183':
                            //none
                            break;
                        default:
                            $('#surcharge').show();
                    }
                    $(".data-reset").val('');
                    
                    $('#add_address').hide();
                    $('#address_list h3').show();
                    $('#addressform h3').html('Or Add a New Address...');

                    $('#address_spinner').hide();
                    $('#click-add-address').show();
                    if($('#address_same')) {
                        var n = $('#address_same:checked').length;
                        if(n == 1)
                        {
                            $('#address_pick_info').show();
                            $('#addressform').show();
                            $('#addressform_option').hide();
                            $('#address_same').remove();
                            $('label.checkbox').remove();

                            //$('#checkout_form').submit();
                        }
                        else
                        {
                            $('#address_pick_info').show();
                            $('#address_pick_info').addClass('highlight');
                        }
                    }
                });
                
            }
        });
    }

    $('.configChange').change( function () {
        window.location.href = 'config_update.php?action=updateconfig&type='+this.id+'&val='+$(this).val();
    });

    $('.banner-item').click( function () {
        var data = new Object();
        data.action = 'banner-click';
        data.banner = $(this).attr('title');
        var location = $(this).attr('href');
        $.ajax({
            url: 'includes/ajax/banner.php',
            data : data,
            type : 'post',
            success: function() {
                window.location.href = location;
            }
        });
        return false;
    });
});

function observeAddressAction(e) {
    var id;
    if($(e).hasClass('edit')) {
        id = e.id.replace("edit_address_", "");
        $('#addressform h3').html('Editing address...');
        $('#giveitago').val('editaddress');
        $('#edit_address_id').val(id);
        $('#click-add-address').hide();
        $('#add_address').show();
        var data = new Object();
        data.action = 'get_address';
        data.id = id;
        $.ajax({
            url: 'includes/ajax/updates.php',
            data : data,
            type : 'post',
            success: function(data) {
                var address = eval('(' + data + ')');
                //var address = JSON.parse(data);
                $('#address_line1').val(address.address_line1);
                $('#address_line2').val(address.address_line2);
                $('#address_town').val(address.address_town);
                $('#address_county').val(address.address_county);
                $('#address_postcode').val(address.address_postcode);
                $('#address_country').val(address.address_country_id);
            }
        });
    }
    if($(e).hasClass('remove')) {
        id = e.id.replace("remove_address_", "");
        var data = new Object();
        data.action = 'get_address';
        data.id = id;
        var address = '';
        $.ajax({
            url: 'includes/ajax/updates.php',
            data : data,
            type : 'post',
            success: function(data) {
                //var addressjson = JSON.parse(data);
                var addressjson = eval('(' + data + ')');
                address += addressjson.address_line1;
                if(addressjson.address_line2) address += ', '+addressjson.address_line2;
                address += ', '+addressjson.address_town;
                address += ', '+addressjson.address_county;
                address += ', '+addressjson.address_postcode;
                address += ', '+addressjson.address_country;

                var cont = confirm('Are you sure you wish to remove the following address?\n\n'+address+'\n\nPress OK to confirm.');

                if(cont==true)
                {
                    $('#address_'+id).remove();
                    var data = new Object();
                    data.action = 'remove_address';
                    data.id = id;
                    $.ajax({
                        url: 'includes/ajax/updates.php',
                        data : data,
                        type : 'post'
                    });
                }
            }
        });
        
    }
}
