var $j = jQuery;
jQuery(document).ready(function() {
    $j(".js-view-product").livequery('click', function(event) {
        container = '#' + $j(this).attr('rel');
        showProduct(this, container);
        return false;
    });

    $j(".js-view-product-parent").livequery('click', function(event) {
        container = '#' + $j(this).parents('div.product-information').attr('id');
        showProduct(this, container);
        return false;
    });

    $j('div.color-chooser a').livequery('click', function(event) {
        selectColor(this);
        return false;
    });

    $j('form.atc').livequery('submit', function(event) {
        var main_product_id = $j('#main-product-id').attr('value');
        var product_id = $j(this).attr('rel');

        $j.post(
            $j(this).attr('action'),
            $j(this).serialize(),
            function(data) {
                $j('#mini-shopping-cart-container').html(data);
                $j('#mini-shopping-cart-closed').hide();
                $j('#mini-shopping-cart-open').show().stickyfloat({ duration: 400, lockBottom:false, offsetY: 20});
                window.scrollBy(1,50);
            });
        return false;
    });

    $j('.remote-link').livequery('click', function(event) {
        var container = $j(this).attr('rel');
        $j.get($j(this).attr('href'), function(data) {
            $j('#' + container).html(data);
        });
        return false;
    });

    $j('.close-product').livequery('click', function(event) {
        $j('li.selected-item').animate({"opacity": "1.0"}, "slow").removeClass('selected-item').addClass('once-viewed');
        $j('#' + $j(this).attr('rel')).slideUp();
        return false;
    });

    $j('.go-back').livequery('click', function(event) {
        return false;
    });

    $j('.remote').livequery('click', function(event) {
        if($j(this).hasClass('remebered')) {
            addRemembered();
        }
        $j.get($j(this).attr('href'));
        $j(this).animate({"opacity": ".5"}, "slow");
        return false;
    });

    $j("a.toggle-mini-cart").livequery('click', function(event) {
        $j('#mini-shopping-cart-closed').toggle();
        $j('#mini-shopping-cart-open').toggle().stickyfloat({ duration: 400, lockBottom:false, offsetY: 20});
        $j.get($j(this).attr('href'));
        window.scrollBy(1,50);
        return false;
    });

    $j('div.color-chooser').ready( function() {
        selectColor($j(this).children('span.active > a:first'));
    });

    $j('select#color').multiSelect(COLOR_CHOOSER_OPTIONS);
    $j('#mini-shopping-cart-open').stickyfloat({ duration: 400, lockBottom:false, offsetY: 20});

    $j('ul.sitemap').makeacolumnlists();
    $j('span.epost').nospam();

    jQuery(document).ready(function($) {
      $('a[rel*=facebox]').facebox()
    });

    //Onepage checkout
    $j('.opc-toggle').livequery('click', function(event) {
        opcToggle($j(this).attr('rel'), null);
        return false;
    });

    $j('.opc-close').livequery('click', function(event) {
        opcToggle($j(this).attr('rel'), false);
        return false;
    });

    $j("input#organize_transport").livequery('change', function(event) {
        opcToggle('addresses', $j(this).attr('checked'));
    });

    $j("input#billing-company").livequery('change', function(event) {
        if (this.value != '') {
            opcToggle('addresses', true);
        }
    });

    $j("input#billing_use_for_shipping_no").livequery('change', function(event) {
        opcToggle('shipping-address-fields', $j(this).attr('checked'));
    });

    $j("input#shipping_same_as_billing").livequery('change', function(event) {
        opcSyncAddresses($j(this).attr('checked'));
    });

    $j('select.address-select').livequery('change', function(event){
        if (this.value == '') {
            $j('.' + this.id).show();
        } else {
            $j('.' + this.id).hide();
        }
    });

    $j('#opc-submit').livequery('click', function(event) {
        var form = $j('form#opc-data-form');
        var button = $j(this)
        button.hide().before( '<img src="' + LOADER_IMG + '" class="loader-gif" alt="Submitting query ..." />' );
        $j.post(
            form.attr('action'),
            form.serialize(),
            function(data) {
                $j('.validation-advice').remove();
                $j('.validation-failed').removeClass('validation-failed');
                if (data['error'] == true)
                {
                    if (data['customer-exists'] == true)
                    {
                        $j.get($j('span#opc-login-link').html()+ '?blank=1&user=' + $j('#billing-email').val(), function(d) {
                            jQuery.facebox(d);
                        });
                    }
                    if (data['field-errors']) {
                        applyFormErrors(data['field-errors']);
                        $j('img.loader-gif').remove();
                        hideLoader(button);
                        return;
                    }
                    hideLoader(button);
                    if (data['error_messages']) {
                        alert(data['error_messages']);
                    }
                    return;
                } else {
                    window.location.replace(data['redirect']);
                }
            },
            "json"
        );
        return false;
    });

    $j('li.hidden').find('input,select').attr("disabled","disabled");

    if ($j('input#organize_transport').is(':checked')) {
        opcToggle('addresses', true);
    }
});

function hideLoader(el) {
    $j('img.loader-gif').remove();
    el.show();
    return;
}

function applyFormErrors(fields) {
    jQuery.each(fields, function (i, item) {
        jQuery('#' + i).addClass('validation-failed').after('<div class="validation-advice">' + item + '</div>');
    });
}

function opcToggle(target, action) {
    var section = $j('#opc-' + target);
    var visible = section.is(':visible');

    if (action === visible) {
        return;
    }

    visible = (action === true || (action === null && !visible));
    inputs = section.find('input,select');

    if (visible) {
        inputs.removeAttr('disabled');
    } else {
        inputs.attr('disabled','disabled');
    }

    section.toggle(visible);
    $j('a.opc-toggle[rel=' + target +']').toggle(!visible);

    if (!visible && target == 'addresses') {
        $j('input#organize_transport').removeAttr('checked');
        return;
    }
};

function opcSyncAddresses(addValues) {
    var targets = $j('#opc-shipping-address-fields').find('input[id^=shipping-]');
    if (addValues) {
        targets.each(function() {
            if ($j(this).val() == '')
            {
                $j(this).attr('value', function() {
                    return $j('#' + this.id.replace(/shipping-/,'billing-')).val();
                });
            }
        });
    } else {
        targets.each(function() {
            if ( this.value != '' && ( this.value == $j('#' + this.id.replace(/shipping-/,'billing-')).val() ) ) {
                $j(this).attr('value','');
            }

        });
    }
};

function showProduct(el, target) {
    product_id = $j(el).parents('li').attr('id');

    $j('li.selected-item').animate({"opacity": "1.0"}, "slow").removeClass('selected-item').addClass('once-viewed');
    $j('a.js-view-product').show();

    $j('a.' + product_id).hide().after( '<img src="' + LOADER_IMG + '" class="loader-gif" alt="Loading product ..." />' );
    $j(el).parents('li').animate({"opacity": "0.4"}, "slow").addClass('selected-item');

    $j('div.product-information:not(' + target + ')').slideUp().empty();
    var href = $j(el).attr('href');
    $j.get(href + '?blank=1', function(data) {
        $j(target).empty().append(data).slideDown();
        selectColor( $j(target).children('div.color-chooser > span.active > a:first') );
        $j('img.loader-gif').remove();
        $j('a.' + product_id).show();
        pageTracker._trackPageview(href);
    });
};

function addRemembered() {
    $j('#remembered_cnt').html( parseInt($j('#remembered_cnt').html()) + 1);
};

function selectColor(el) {
    $j('div.color-chooser a').css("border", "1px solid #fff");
    $j(el).css("border", "1px solid #B8B8B8");

    var product_id = $j(el).parents('div.color-chooser').attr('title');
    $j('form#atc-' + product_id).attr('action', $j(el).parents('span').attr('title'));
    $j('#color-code-' + product_id).attr('value', $j(el).attr('class'));
    $j('#sku-' + product_id).empty().append($j(el).parent('span').attr('rel'));
    $j('#pimage-' + product_id).attr('src', $j(el).attr('href'));
};
