Number.implement({
    format: function(kSep, floatsep, decimals){
        decimals = $pick(decimals, 2);
        floatsep = $pick(floatsep, '.');
        kSep = $pick(kSep, ' ');
    
        var parts = this.round(decimals).toString().split('.');
        var integer = parts[0];
        while (integer != (integer = integer.replace(/([0-9])(...($|[^0-9]))/, '$1' + kSep + '$2')));
        if (decimals == 0) return integer;
        return integer + floatsep + ((parts[1] || '') + '0000000000').substr(0, decimals);
    }
});

//window.addEvent('domready',function(){

// falsche Eingabe
if($('optionen-fehler') !== null){
    (function(){
        new Fx.Scroll(window).toElement('optionen-fehler')
    }).delay(800);
    $('optionen-fehler').highlight('#f00');
}

/**
 * Änderungen beim den Optionen
 */

if( document.getElement('div.optionen' ) ){
    var container    = document.getElement('div.optionen');
    var selects      = container.getElements('select');
    var glasvariante = container.getElement('select.glasvariante');
    var submit       = container.getElement('input.in_warenkorb');

    /**
     * Preisänderung bei Optionsänderung
     */
    var preisfeld    = $('preis').getElements('span.price').getLast();
    var grundpreis   = preisfeld.get('text').replace(',','.').toFloat();
    var optionen     = [];
    var aufpreise    = [];
    selects.addEvent('change',function(select){

        // Keine Achse, kein Zylinder
        if( this.get('value') == 'ka') {
            switch( this.get('id') ) {
                case 'achse-links':
                    $('zylinder-links').set('value','ka');
                    break;
                case 'achse-rechts':
                    $('zylinder-rechts').set('value','ka');
                    break;
                case 'zylinder-links':
                    $('achse-links').set('value','ka');
                    break;
                case 'zylinder-rechts':
                    $('achse-rechts').set('value','ka');
                    break;
            }
        }

        /** 
         * Aufpreis bzw. Abpreis berechnen;
         * ["id[3]", "id[2]", "id[7]", "id[6]", "id[9]", "id[8]", "id[5]", "id[4]", "id[12]"]
         * [0, 0, 0, 0, 0, 0, 0, 0, 20]
         *  
         * Jede option wird in ein array gespeichert, und der zugehörige Preis mit gleichem index
         * in einem anderen array. die Preis zusammenzählen und gut ist.
         *  
         */
        var option_name = this.get('name');
        optionen.include( option_name );
        var option_index = optionen.indexOf(option_name);
        /*
        if( option_index === -1 ){
            optionen.include( option_name );
            option_index = optionen.indexOf(option_name);
        }
        */
        var option_aufpreis = 0.00;
        if( this.getSelected().get('text').getLast().contains('[')) {
            var option_aufpreis = this.getSelected().get('text').getLast().split('[')[1].replace(/\s|€|\]/g, '').toFloat();
        }
        aufpreise[option_index] = option_aufpreis;
        var aufpreis = 0.00;
        aufpreise.map(function(preis, index){
            aufpreis += preis;
        });
        endpreis = (grundpreis + aufpreis).format().toString().replace('.',',');
        preisfeld.empty().set('text', endpreis);
        if( grundpreis != endpreis && preisfeld.getPrevious() !== null ){
            preisfeld.getPrevious().set('text', '').setStyle('font-size','.6em');
        }
    }).fireEvent('change');


    // Augenwerte ausblenden wenn Demoscheiben gewählt
    if( glasvariante !== null ){
        glasvariante.addEvent('change',function(){
            if( this.get('value') == 498){
                document.getElement('table.produkt_optionen').fade(0);
                $('optionen-brillen-glaeser').tween('height',0).getPrevious().set('text','Keine Werte notwendig wenn Sie Demoscheiben möchten');
                $('optionen-brillen-glaeser').store('status','zu');
            }
            else if( $('optionen-brillen-glaeser').retrieve('status') == 'zu'){
                    $('optionen-brillen-glaeser').tween('height',170).getPrevious().set('text','Bitte wählen Sie Ihre Brillenwerte aus.');
                    document.getElement('table.produkt_optionen').fade(1);
            }
        });
        
    }
    // Felder leeren wenn Demoscheiben abgeschickt werden
    submit.addEvent('focus',function(){
        if( glasvariante !== null && glasvariante.get('value') == 498 ) {
            document.getElements('select.augenwert').set('value','empty').fade(0);
        } 
    });
}

/*
$('div.hinweis').hide();
$('select.hinweis').change(function(){
    var auswahl = $(this).find(':selected').text();
    var value = parseFloat( auswahl.split('|')[0].replace(',','.').replace(/\s+/g,'') );
    if( value > 2 || value < -2 ){
        $('div.hinweis').show('slow').effect('highlight',{color:'#A51313'}, 500);
    } else {
        $('div.hinweis').hide('fast');
    }
}).change();        
*/

/**
 * Mit den Tips stimmt was nicht.
 * element ist hier zweimal vorhanden, einmal als objekt und einmal das Element.
 * Wenn als Objekt, wird ein Fehler geworfen. 
 * 
 * log:
 * <img class="thumbnail" alt="Fertiglesebrille FlexSee" src="images/product_images/info_images/1514_0.jpg">
 * Object $extended=true event=Event mouseout type=mouseout
 * 
 * @param {Object} event
 * @param {Object} element
 */
Tips.implement({
  
}); 

// Standard
    //new Tips( $$('.tooltip') );
// Thumbnails
    var ThumbTip = new Tips( $$('img.thumbnail'), {
        showDelay : 0,
        hideDelay : 0,
        className :'thumbtip',
        title     : 'alt',
        offsets   : {x: 10, y: 10},
        fixed     : false,
        onShow: function() {
            var tip_text = this.tip.getElement('.tip-text');
            tip_text.set('html', '<img src="'+tip_text.get('html')+'" />');
            this.tip.setStyle('display', 'block');
        } 
    });

    $$('img.thumbnail').each(function( thumb ) {
        var img_src = thumb.get('src').replace('thumbnail_','info_');
        thumb.store('tip:text', img_src);
        ThumbTip.attach( thumb );
    });


// Hilfe Tips
    var hilfeTip = new Tips( 'img.hilfetip', {
        className:'tooltip_hilfe',
        offsets: {x: 20, y: 20}
    });
    
    $$('.hilfetip').each(function( hilfetip ) {
        var tiptext = hilfetip.getNext().get('html');
        hilfetip.store('tip:title', 'Hilfe');
        hilfetip.store('tip:text', tiptext);
        hilfeTip.attach( hilfetip );
    });

// Info Tips
    var infoTip = new Tips( '.infotip', {
        className:'tooltip_info',
        offsets: {x: 20, y: 20}
    });
    
    $$('.infotip').each(function( infotip ) {
        var info_title = 'Information';
        var info_title_element = infotip.getElement('span.info_titel');
        if( info_title_element !== null ){
            info_title = info_title_element.get('text');  
        }

        var tiptext = infotip.getNext().get('html');
        infotip.store('tip:title', info_title );
        infotip.store('tip:text', tiptext);
        infoTip.attach( infotip );
    });

// Vergrößerung
    ReMooz.assign('.remooz', {
        'origin': 'img',
        'shadow': 'onOpen', 
        'resizeFactor': 0.8, 
        'cutOut': false, 
        'opacityResize': 0.4,
        'dragging': true, 
        'centered': true 
    });
/**
 * Shipping_link auf popuplink ändern 
 */   
    var shipping_link = $$('a[class=shipping]');
    if( shipping_link.length > 0 ) {
        shipping_link.each(function(link){
            link.set('href', link.get('href').replace('shop','popup') );
        });
        SqueezeBox.assign($$('a[class=shipping]'), {
            size: {x: 700, y: 500},
            ajaxOptions: {
                method: 'get'
            }
        });
    }
/**
 * Popup- Links
 */     
    var popup_link = $$('a[class~=popup]');
    if( popup_link.length > 0 ) {
        popup_link.each(function(link){
            link.set('href', link.get('href').replace('shop','popup') );
        });
        SqueezeBox.assign( popup_link, {
            size: {x: 700, y: 500},
            ajaxOptions: {
                method: 'get'
            }
        });
    }
    
/**
 * Externe Links
 */
    $$('a.extern').each(function(link){
        link.set('target','_blank');    
    });


/**
 *  Accordion
 */
/*
    new Accordion( 'dt', 'dd', {
        display:999,
        alwaysHide: true,
        show: false,
        delay:500
    }, $('produktbilder') );
*/

/**
 * Produktbilder
 */
    var container           = $('produktbilder');
    if (container !== null) {
        var slide_container = container.getElement('.slide');
        // blende den Container ein.
        slide_container.show();
        
        var mySlide = new Fx.Slide(slide_container, {
            duration: 500
        }).hide();
        var togglers = container.getElements('a.toggle');
        var toggler_container = container.getElement('p.anzeigen span');
        var toggler_button = toggler_container.getElement('a.toggle');
        
        mySlide.addEvent('complete', function(e){
            if (mySlide.open === false) {
                toggler_button.set('text', 'anzeigen').removeClass('minus');
                container.setStyles({
                    //'position' : 'relative',
                    'width': '250px'
                });
                toggler_container.removeClass('aktiv');
                //container.getPrevious().setStyle('margin-bottom', '0')
            }
            if (mySlide.open === true) {
                toggler_button.set('text', 'schließen').addClass('minus');
            }
        });
        
        togglers.addEvent('click', function(e){
            new Event(e).stop();
            mySlide.toggle();
            toggler_container.addClass('aktiv');
            container.setStyles({
                //'position' : 'absolute',
                'width': '760px'
            });
        });
    }

/**
 * Ajax Suche
 */
var form         = $('schnellsuche');
var input        = $('suchbegriff');
var log          = $('ergebnisse');
var search_keys  = ['backspace','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0'];
var command_keys = ['enter','left','right','up','down'];
var current_li   = false;
var li_index     = 0;
var lis          = [];
var _key         = '';
input.set('autocomplete','off').addEvent('keyup',function(e){
    if (e && e.key && !e.shift && search_keys.contains(e.key) ) {                 
        //this.focus();
        if (  this.get('value').length > 2) {
            var url = 'ajax_search.php';
            var q = this.get('value');
            new Request({
                url: url,
                method: 'get',
                onRequest: function(){
                    log.show();
                    log.addClass('loading');
                },
                onSuccess: function(responseText){
                    log.removeClass('loading');
                    log.set('html', responseText);
                    lis = log.getElement('ul').getChildren();
                    current_li = lis[0];
                    log.getElement('ul').addEvent('mouseenter', function(){
                        lis.removeClass('focus')
                    });
                    lis.addEvents({
                        'mouseenter': function(){
                            current_li = this;
                            this.set('class','focus');
                        },
                        'mouseleave': function(){
                            current_li = false
                            this.removeClass('focus');
                        }
                    });
                }
            }).send('q=' + q);
        }
        else {
            current_li = false;
            li_index = 0;
            lis.empty();
            log.empty();
            log.hide();
        }
    } else {
        if( current_li !== false ){
             lis.removeClass('focus');
             //input.focus();
             switch (e.key) {
                 case 'up':
                    if( current_li.getPrevious() ) {
                        current_li = current_li.getPrevious();
                        this.set('value', current_li.get('text') );
                    }
                    break;
                 case 'down':
                    if( current_li.getNext() ) {
                        current_li = current_li.getNext();
                        this.set('value', current_li.get('text') );
                    }
                    break;
                /*
                case 'enter':
                    if (current_li !== false) {
                        this.set('value', current_li.get('text') );
                        //document.location.href = current_li.getElement('a').get('href');
                        return false;
                    }
                    break;
                */
            }
            current_li.set('class', 'focus');
        }
    }    
});
/*
input.set('autocomplete','off').addEvent('keyup',function(e){
    if (e && e.key && !e.shift && search_keys.contains(e.key) ) {                 
        this.focus();
        if (  this.get('value').length > 1) {
            var url = 'ajax_search.php';
            var q = this.get('value');
            new Request({
                url: url,
                method: 'get',
                onRequest: function(){
                    log.show();
                    log.addClass('loading');
                },
                onSuccess: function(responseText){
                    log.removeClass('loading');
                    log.set('html', responseText);
                    if ($('list')) {
                        var optionen = $('list').getChildren()
                        $('list').set('size', $('list').optionen.length);
                    }
                }
            }).send('q=' + q);
        }
        else {
            log.hide();
        }
});
*/

/**
 * Löschen aus Warenkorb
 */
$$('table#warenkorb td a.delete').each(function(a){
   a.addEvents({
       'mouseenter': function(){
           this.getParent().getParent().toggleClass('loeschen');
           this.set('title','Diesen Artikel aus dem Warenkorb löschen');
       },
       'mouseleave': function(){
           this.getParent().getParent().toggleClass('loeschen');
       },
       'click': function(){
           this.getParent().getParent().getParent().getParent().getParent().getParent().fade('out');
       }
   });
});

/**
 * Zeilen markieren z.B. Versandart
 * Radiobuttons per klick setzen
 */
var checkout_accordion = new Fx.Accordion($$('div#checkout-auswahlliste div.block label'), $$('div#checkout-auswahlliste div.block div.accordion'), {
    display:false,
    alwaysHide: true
});
var checkout_blocks = [];
//$$('div#checkout-auswahlliste div.block').each(function(block){
$$('div.checkout_auswahl div.block').each(function(block){
    
    checkout_blocks.include(block);
    
    var label = block.getElement('h3');
    var radio = label.getElement('input[type=radio]'); 

    if( !window.ie6 ) {
        //radio.setStyle('visibility', 'hidden');
    }
    label.addEvent('click', function() {
        checkout_blocks.each(function(block) {
            block.removeClass('checked');
        });
        if( radio.get('checked') === true ) {
            block.addClass('checked');
        }
    });
});


/**
 * Zeile mit Checkbox
 */
$$('.zeile_check_checkbox').each(function(zeile){
    var input = zeile.getElement('input[type=checkbox]'); 
    zeile.addEvent('click', function() {
        if( input.get('checked') === true ) {
            zeile.addClass('checked');
        }
        else{
            zeile.removeClass('checked');
        }
    });
});


//});
