/*jslint browser: true, newcap: true, eqeqeq: true, onevar: false, undef: true, white: false */
/*global $, $$, Browser, Class, Hash, Hyphenator, window */

Hyphenator.config({
	selectorfunction : function () {
    return $$('.contentContainer p', '.contentContainer h1', '.contentContainer h2', '.contentContainer h3');
    },
	remoteloading : false
});
Hyphenator.run();

var FeeCalculator = new Class({
    Binds: ['calculate', 'getValue', 'setValue'],
    
    initialize: function(element, sumElement, visualSumElement) {
        this.element = $(element);
        this.sumElement = $(sumElement);
        this.visualSumElement = $(visualSumElement);
        this.fields = {};
        ['feePerYear', 'feePercent', 'feeAdd'].each(function(k) {
            this.fields[k] = this.element.getElement('.' + k).addEvent('keyup', this.calculate).addEvent('click', this.calculate).addEvent('change', this.formatField.bind(this, k));
            this.formatField(k);
        }.bind(this));
        ['feeVat', 'feeSum'].each(function(k) {
            this.fields[k] = this.element.getElement('.' + k);
        }.bind(this));

        this.values = JSON.decode(this.element.getElement('.settings').get('text'));
        this.calculate.delay(125);
    },
    
    calculate: function() {
        var g = this.getValue, v = function(k) {return this.values[k]}.bind(this);
        var sum = (
            g('feePerYear') * v('feePerYear')
        ) + (
            g('feePercent') * v('feePercent') / 100
        );
        
        sum += sum * (g('feeAdd') / 100) / 100;
        
        var vat = sum * 19 / 100;
        this.setValue('feeVat', vat.format());
        this.setValue('feeSum', (vat + sum).format());
        FeeCalculator.updateSum(this.element.uid, vat + sum, this.sumElement, this.visualSumElement);
    },
    
    isValid: function() {
        return (this.getValue('feePerYear') != 0 && this.getValue('feePercent') != 0)
    },
    
    getValue: function(field) {
        var v;
        if (this.fields[field].get('tag') === "select") {
            v = this.fields[field].getSelected().first().value;
        } else {
            v = this.fields[field].get('value');
        }
        v = v.replace(/\./g, '').replace(',', '.');
        v = v.toFloat();
        if (isNaN(v)) {
            v = 0;
        }
        return v;
    },
    
    setValue: function(field, value) {
        this.fields[field].set('text', value);
        return this;
    },
    
    formatField: function(field, value) {
        var v = value || this.getValue(field);
        if (field === 'feePerYear') {
            this.fields[field].set('value', v.format(0));
        } else {
            if (this.fields[field].get('tag') !== "select") {
                this.fields[field].set('value', v.format());
            }
        }
    }
});
FeeCalculator.sum = new Hash();
FeeCalculator.getSum = function () {
    var sum = 0;
    FeeCalculator.sum.each(function(v, k) {
        sum += v;
    });
    return sum;
};
FeeCalculator.updateSum = function(key, part, element, visualElement) {
    FeeCalculator.sum.set(key, part);
    var sum = FeeCalculator.getSum();
    element.set('value', sum);
    if (visualElement) {
        visualElement.set('text', sum.format());
    }
};


window.addEvent('domready', function() {
    if (Browser.Engine.trident4) {
        $$('.tx-fcmevent-pi1 .csc-textpic-intext-left .csc-textpic-text .textWrap > *',
           '.tx-fcmnews-pi1 .csc-textpic-intext-left .csc-textpic-text .textWrap > *').each(function(e) {
            (new Element('br')).injectAfter(e);
        });
    }

    if (window.location.href.contains("resetPage=true")) {
        var el = $$('.tx-fcmnews-pi1 > form').first();
        if (el) {
            window.scrollTo(0, el.getPosition().y);
        }
    }

    var openPopup = function(url) {
        var size;
        if (Browser.Engine.trident) {
            size = 'height=750,width=688';
            var baseurl = $$('base').first().get('href');
            if (!baseurl.endswith('/')) {
                baseurl += '/';
            }
            url = baseurl + url;
        } else {
            size = 'innerHeight=710,innerWidth=681';
        }
        var popup = window.open(url, 'fcmPopup', size+',menubar=no,status=no,resizable=no,location=no,scrollbars=yes')
    }

    $(document.body).addClass(Browser.Engine.name + Browser.Engine.version);
    $(document.body).addClass(Browser.Platform.name);
    
    var height;
    if (Browser.Engine.trident) {
        height = document.documentElement.clientHeight;
    } else {
        height = window.innerHeight;
    }
    if ($('page').getSize().y < height) {
        $$('.totop').addClass('hidden');
    }
    
    if ($('close')) {
        $('close').addEvent('click', function(evt) {
            evt.stop();
            window.close();
        });
    }
    
    $$('a.popup').addEvent('click', function(evt) {
        evt.stop();
        openPopup(evt.target.get('href'));
    });
    
    var fc = $('feeCalculator');
    if (fc) {
        var fcs = [];
        fc.getElements('div.calculator').each(function(f) {
            fcs.push(new FeeCalculator(f, 'feeSum', 'sumTotal'));
        });
        if ($('registerForm')) {
            $('registerForm').addEvent('submit', function(evt) {
                if (!fcs.every(function(fc) {return fc.isValid();})) {
                    evt.stop();
                    alert("Bitte teilen Sie uns mit, welchen Betrag Sie investieren möchten.");
                }
            });
        }
    }
    
    if ($('page').hasClass('start')) {
        var images = [
            'fileadmin/webfiles/images/01.jpg',
            'fileadmin/webfiles/images/02.jpg',
            'fileadmin/webfiles/images/03.jpg',
            'fileadmin/webfiles/images/04.jpg',
            'fileadmin/webfiles/images/05.jpg',
            'fileadmin/webfiles/images/06.jpg',
            'fileadmin/webfiles/images/07.jpg',
            'fileadmin/webfiles/images/08.jpg'
        ];
        var durations = [
            3000,
            5000,
            3000,
            3000,
            3000,
            10000,
            3000,
            3000
        ];

   		var bg = $('bodyBg');
		var index = 1;
	
		var resize = function() {
			bg.setStyles({
				left: (window.getSize().x - bg.getSize().x) / 2
			});
		};
		window.addEvent('resize', resize);
		resize();

		var cycle = function() {
			var img = images[index];
			var old = bg.getElement('img');
			img.set('tween', {'duration': durations[index]});
			img.fade('hide').inject(bg);
			img.fade('in').retrieve('tween').chain(function() {
				old.dispose().removeClass('old');
				img.addClass('old');
				if (++index == images.length) {
					index = 0;
				}
				cycle.delay(10);
			});
		};
		images = Asset.images(images, {
			onProgress: function(num, index) {
				if (index == 1) {
					cycle();
				}
			}
		})

    }
    
});

/* T3 shit */
function decryptCharcode(n,start,end,offset){n=n+offset;if(offset>0&&n>end){n=start+(n-end-1);}else if(offset<0&&n<start){n=end-(start-n-1);}
return String.fromCharCode(n);}
function decryptString(enc,offset){var dec="";var len=enc.length;for(var i=0;i<len;i++){var n=enc.charCodeAt(i);if(n>=0x2B&&n<=0x3A){dec+=decryptCharcode(n,0x2B,0x3A,offset);}else if(n>=0x40&&n<=0x5A){dec+=decryptCharcode(n,0x40,0x5A,offset);}else if(n>=0x61&&n<=0x7A){dec+=decryptCharcode(n,0x61,0x7A,offset);}else{dec+=enc.charAt(i);}}
return dec;}
function linkTo_UnCryptMailto(s){location.href=decryptString(s,-3);}
/* /T3 shit */
