/*
#---------------------------------------------------------------------------
# Copyright   : rexx systems GmbH, 20097 Hamburg, Heidenkampsweg 101
#               Veränderung oder Nutzung der Scripte/Anwendung ist nur mit
#               schriftlicher Genehmigung der rexx systems GmbH gestattet.
#---------------------------------------------------------------------------
*/

/**
 * wegen Konflikten mit anderen js-libaries 
 * @todo wo könnten diese Zeilen zu problemen führen?
 */
$ = jQuery.noConflict();
j$ = $;

shopBasicJs = (function() {

    return {

        /*
         * Intialisierung von Event-Handlern, etc.
         * wird am Ende dieser Datei per $(document).ready() aufgerufen
         */
        init: function() {

            /**
             * Rahmen um Boxen erstellen
             */
            this.addBox('box-content', 'box');

            /**
             * Rahmen um Teaser erstellen
             */
            this.addBox('teaser-content', 'teaser');

            /**
             * das selbe für jqmodal
             */
            this.addBox('jqmContent', 'jqm');

            /**
             * selectbox für die Sortierung nach dem Preis initialisieren
             */
            this.priceOrderInit();

            /**
             * bei klick auf das icon für die catinfo diese voll anzeigen
             */
            this.catInfoInit();

            /**
             * artikel zur merkliste hinzufügen erlauben
             */
            this.basketInit();

            /**
             * elemente einblenden die nur mit javascrip angezeigt werden sollen
             */
            this.displayJs();

            /*
             * Überflüssige sids abschneiden
             */
            this.cutUrlSid();
        },

        cutUrlSid: function() {

            if($('a[href*="sid="]').length > 0 && document.cookie) {

                $('a[href*="sid="]').each(function() {

                    $(this).attr('href',
                        $(this).attr('href')
                            .replace(/&sid=[a-z0-9]*&/i, '&')
                            .replace(/\?sid=[a-z0-9]*&/i, '?')
                            .replace(/[&?]sid=[a-z0-9]*$/i, '')
                    );
                });
            }
        },

        /*
         * Divs um den Boxcontainer erstellen
         */
        addBox: function(className, classPrefix) {

            if(classPrefix == 'teaser') {
                $("."+className).wrap(
                    '<div class="'+classPrefix+'"><div class="'+classPrefix+'-top-middle"><div class="'+classPrefix+'-middle-left">'
                    + '<div class="'+classPrefix+'-middle-right"><div class="'+classPrefix+'-top-left">'
                    + '<div class="'+classPrefix+'-top-right"><div class="'+classPrefix+'-bottom-middle">'
                    + '<div class="'+classPrefix+'-bottom-left"><div class="'+classPrefix+'-bottom-right">'
                    + '</div></div></div></div></div></div></div></div></div>'
                );

            } else {

                $("."+className).wrap(
                    '<div class="'+classPrefix+'"><div class="'+classPrefix+'-top-left">'
                    + '<div class="'+classPrefix+'-top-right"><div class="'+classPrefix+'-middle-left">'
                    + '<div class="'+classPrefix+'-middle-right"><div class="'+classPrefix+'-bottom-middle">'
                    + '<div class="'+classPrefix+'-bottom-left"><div class="'+classPrefix+'-bottom-right"><div class="'+classPrefix+'-top-middle">'
                    + '</div></div></div></div></div></div></div></div></div>'
                );
            }
        },

        priceOrderInit: function() {

            $(".priceSelect").change(function() {

                var value = $(".priceSelect").val();
                var url = document.URL;
                var func = "article_list_sort";

                var data = {func: func, value: value, url: url};

                $.ajax({
                    type: "POST",
                    url: "/xml_http_requests.php",
                    data: data,
                    dataType: "html",
                    beforeSend: function() {
                        $(".ajaxLoading").css('display', 'block');
                    },
                    success: function(data, textStatus) {
                        $(".articleList").html(data);
                    },
                    complete: function(XMLHttpRequest, textStatus) {
                        $(".ajaxLoading").css('display', 'none');
                    },
                    error: function(xhr, type, exception) {alert("Error: " + type);}
                });

            });
        },

        catInfoInit: function() {

            $('#catInfoIcon').click(function () {

                if($('#catInfo').css('display') == 'block') {
                    $('#catInfo').hide();
                } else {
                    $('#catInfo').show();
                }
            });

            $('#catInfoClose').click(function () {

                if($('#catInfo').css('display') == 'block') {
                    $('#catInfo').hide();
                } else {
                    $('#catInfo').show();
                }
            });
        },

        basketInit: function() {

            shopBasicJs.loadMyBasket();

            $('.addToBasket').click(function(event) {

                event.preventDefault();

                value = $(this).attr('artno');
                func = "add_to_basket_form";

                data = {func: func, value: value};

                $.ajax({
                    type: "POST",
                    url: "/xml_http_requests.php",
                    data: data,
                    dataType: "html",
                    beforeSend: function() {
                        $('body').css('cursor', 'wait');
                    },
                    success: function(data, textStatus) {
                        $("#adToBasketForm").html(data);
                        $("#adToBasketBox").width('600px');
                        if($('form[name=add_to_basket]').length) {
                            $("#basketSubmit").click(function(event) {event.preventDefault();shopBasicJs.addToBasket();});
                            $("form[name=add_to_basket]").submit(function(event) {event.preventDefault();shopBasicJs.addToBasket();});
                        } else {
                            $("#adToBasketBox").width('400px');
                        }
                        $("#adToBasketBox").jqm().jqDrag('.jqm-head-text').jqmShow();
                        $('body').css('cursor', 'auto');
                        if($('#basket_name_field').val().length == 0) {
                            $('#basket_name_field').focus();
                        } else {
                            $('#description_field').focus();
                        }
                    },
                    complete: function() {
                        $('body').css('cursor', 'auto');
                    },
                    error: function(xhr, type, exception) {alert("Error: " + type);}
                });
            });

            $('.removeFromBasket').click(function(event) {

                event.preventDefault();

                var value = $(this).attr('artno');
                var func = "remove_from_basket";

                var data = {func: func, value: value}

                $.ajax({
                    type: "POST",
                    url: "/xml_http_requests.php",
                    data: data,
                    dataType: "json",
                    beforeSend: function() {
                        $('body').css('cursor', 'wait');
                    },
                    success: function(data, textStatus) {
                        $('#a'+value).hide();
                        $('#basket_title').text(data.name);
                        $('#basket_count').text(data.count);
                        $('#my_merkliste a').attr('href', data.url);
                        $('body').css('cursor', 'auto');
                    },
                    complete: function() {
                        $('body').css('cursor', 'auto');
                    },
                    error: function(xhr, type, exception) {alert("Error: " + type);}
                });
            });
        },

        addToBasket: function() {

            var value = $('#basketSubmit').attr('artno');

            var basket_name = $('[name=basket_name]').val();
            var description = $('form [name=description]').val();
            var func = "add_to_basket";

            var data = {func: func, value: value, description: description, basket_name: basket_name};

            $.ajax({
                type: "POST",
                url: "/xml_http_requests.php",
                data: data,
                dataType: "json",
                beforeSend: function() {
                    $('body').css('cursor', 'wait');
                },
                success: function(data, textStatus) {

                    if(data.error == 'FALSE_NAME') {
                        $("#adToBasketForm").find('#error')
                            .show()
                            .text('Der Name ist bereits vergeben. Bitte wählen Sie einen Anderen Namen.');
                        return;
                    } else if(data.error == 'EMPTY_NAME') {
                        $("#adToBasketForm").find('#error')
                            .show()
                            .text('Bitte geben Sie einen Namen an.');
                        return;
                    }
                    $('body').css('cursor', 'auto');
                    $("#adToBasketForm").html('');
                    $("#adToBasketBox").jqmHide();

                    $('#my_merkliste a').attr('href', data.url);
                    $('#my_merkliste #basket_count').html(data.count);
                    $('#my_merkliste #basket_title').html(data.name);
                },
                complete: function() {
                    $('body').css('cursor', 'auto');
                },
                error: function(xhr, type, exception) {alert("Error: " + type);}
            });
        },

        refreshBasketValues: function(data) {
            values = data.split('::');

        },

        loadMyBasket: function() {

            if($('#my_merkliste').html().length > 0) {
                return;
            }

            data = {func: 'load_my_basket'};

            $.ajax({
                type: "POST",
                url: "/xml_http_requests.php",
                data: data,
                dataType: "html",
                beforeSend: function() {
                },
                success: function(data, textStatus) {
                    $('#my_merkliste').replaceWith(data);
                    var script = 'http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4bdab4c663305586';
                    if (window.addthis){
                        window.addthis = null;
                    }
                    $.getScript( script );
                },
                complete: function() {
                },
                error: function(xhr, type, exception) {alert("Error: " + type);}
            });
        },

        displayJs: function() {
            $('.jsDisplay').show();
        }
    };
})();

/*
 * Initialisierung, wenn Dokument geladen
 */
$(document).ready(function(){
    shopBasicJs.init();
    addthis.init();
});
