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

    // mediapool
    if($$('.mediapool-list').length > 0) {
        new mediapool({
            itemsVisible:5,
            thumbsContainer: '.mediapool-list ul.scrolled li',
            elementScrolled: '.mediapool-list ul.scrolled',
            overallContainer: '.mediapool-list',
            controlsContainer: '.mediapool-list div.paginationControl',
            arrowLeft: '.mediapool-list div.paginationControl a.previous',
            arrowRight: '.mediapool-list div.paginationControl a.next',
            pagesContainer: '.mediapool-list div.paginationControl ul.pages'
        });
    }

    new inputSaver({elements: $$('input[type=text]')});

    if($('new-comment') != null ) {
        new comment_form();
    }


    if($$('div.mostread.box').length > 0) {
        new tabs({
            toggler: $$('div.mostread.box div.head ul li'),
            boxes: $$('div.mostread.box div.items ul')
        });
    }

});

SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = '/lib/syntax/2.0.320/scripts/clipboard.swf';
SyntaxHighlighter.all();var inputSaver = new Class({
    Implements: Options,
    options: {
        elements: $empty
    },
    initialize: function(options)
    {
        this.setOptions(options);
        this.options.elements.each(function(item){
            this.go(item);
        }.bind(this));
    },
    go: function(element)
    {
        element.store('intValue',
            element.getProperty('value')
        );

        element.addEvents({
            'focus': function(){
                if(element.getProperty('value') == element.retrieve('intValue')) {
                    element.setProperty('value', '');
                }
            },
            'blur': function(){
                if(element.getProperty('value').replace(' ', '')== '') {
                    element.setProperty('value', element.retrieve('intValue'));
                }
            }
        });
    }
});

var comment_form = new Class({

	initialize: function(options){
		this.options = $extend({
                        form: '.comments form',
			mailaddressfield: '#mailaddress-element input',
                        gravatar: '.comments.form .user img',
                        namefield: '#name-element input',
                        name: '.comments.form .user .name',
                        messagefield: '#message-element textarea',
                        twitterpwfield: '#twitterpassword-element input',
                        twitternamefield: '#twittername-element input',
                        twittersubmission: '#twittersubmission-element input',
                        replybuttonclass: '.comments.list .content a.reply'
		},options || {});

                this.form = new Object();
                this.fields = new Object();
                this.regex = new Object();
                this.targets = new Object();
                this.buttons = new Object();

                this.form = $$(this.options.form)[0];
                this.fields.twittersubmission = $$(this.options.twittersubmission)[1];
		this.fields.mail = $$(this.options.mailaddressfield);
                this.targets.gravatar = $$(this.options.gravatar);
                this.fields.name = $$(this.options.namefield);
                this.targets.name = $$(this.options.name)[0];
                this.fields.message = $$(this.options.messagefield)[0];
                this.fields.twitterpw = $$(this.options.twitterpwfield);
                this.fields.twittername = $$(this.options.twitternamefield);
                this.buttons.reply = $$(this.options.replybuttonclass);


                // check whether twitterdata is stored
                var twittername = Cookie.read('twittername');
                var twitterpw   = Cookie.read('twitterpassword');

                if(twitterpw != null && twittername != null) {
                    this.fields.twitterpw.set('value', twitterpw);
                    this.fields.twittername.set('value', twittername);
                } else {
                    this.fields.twitterpw.set('value', 'password');
                }

                this.regex.mail = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;

                this.fields.mail.addEvent('keyup', function(e) {
                    if( this.regex.mail.test(e.target.value) ) {
                        var hash = this.md5(e.target.value);
                        this.targets.gravatar.set('src', 'http://www.gravatar.com/avatar/' + hash + '?s=40&d=http%3A%2F%2Fjaxenter.com%2Fimages%2Fportal%2Fthemes%2Fit-republik%2Fcomments%2Fgravatar-empty.jpg');
                    }
                }.bind(this));
 
                this.fields.mail.addEvent('focus', function(e) {
                    if( this.regex.mail.test(e.target.value) ) {
                        var hash = this.md5(e.target.value);
                        this.targets.gravatar.set('src', 'http://www.gravatar.com/avatar/' + hash + '?s=40&d=http%3A%2F%2Fjaxenter.com%2Fimages%2Fportal%2Fthemes%2Fit-republik%2Fcomments%2Fgravatar-empty.jpg');
                    }
                }.bind(this));

                this.fields.name.addEvent('keyup', function(e) {
                    this.targets.name.innerHTML = e.target.value;
                }.bind(this));

                this.form.addEvent('submit', function() {
                    var twittername = Cookie.write('twittername', this.fields.twittername.get('value'));
                    var twitterpw = Cookie.write('twitterpassword', this.fields.twitterpw.get('value'));
                }.bind(this));

                this.buttons.reply.addEvent('click', function(e) {

                    if(!this.form.replyto) {
                        var input = new Element('input', {
                            'name': 'replyto',
                            'value': e.target.get('rel'),
                            'type': 'hidden'
                        });
                        input.inject(this.form, 'top');
                    } else {
                        var input = this.form.replyto;
                        input.value = e.target.get('rel');
                    }

                    var title = e.target.parentNode.getElement('h4').innerHTML;
                    this.form.title.value = "Re: " + title;

                }.bind(this));

                this.fields.twittersubmission.addEvent('click', function(e) {
                    if(e.target.checked == true) {
                        
                        this.fields.message.hint = new Element('p', {
                            'html': '110 characters will be shown at twitter followed by URL',
                            'class': 'hint'
                        });

                        this.fields.message.hint.inject(this.fields.message.parentNode, 'top');
                        
                    } else {
                        this.fields.message.hint.destroy();
                    }
                }.bind(this));

	},
        
        checkEmail: function(value) {

            email = value;
            AtPos = email.indexOf("@");
            StopPos = email.lastIndexOf(".");

            if (AtPos == -1 || StopPos == -1) {
                return false;
            }

            return true;
        },

        md5: function(string) {

            function RotateLeft(lValue, iShiftBits) {
                    return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
            }

            function AddUnsigned(lX,lY) {
                    var lX4,lY4,lX8,lY8,lResult;
                    lX8 = (lX & 0x80000000);
                    lY8 = (lY & 0x80000000);
                    lX4 = (lX & 0x40000000);
                    lY4 = (lY & 0x40000000);
                    lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
                    if (lX4 & lY4) {
                            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
                    }
                    if (lX4 | lY4) {
                            if (lResult & 0x40000000) {
                                    return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
                            } else {
                                    return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
                            }
                    } else {
                            return (lResult ^ lX8 ^ lY8);
                    }
            }

            function F(x,y,z) { return (x & y) | ((~x) & z); }
            function G(x,y,z) { return (x & z) | (y & (~z)); }
            function H(x,y,z) { return (x ^ y ^ z); }
            function I(x,y,z) { return (y ^ (x | (~z))); }

            function FF(a,b,c,d,x,s,ac) {
                    a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
                    return AddUnsigned(RotateLeft(a, s), b);
            }

            function GG(a,b,c,d,x,s,ac) {
                    a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
                    return AddUnsigned(RotateLeft(a, s), b);
            }

            function HH(a,b,c,d,x,s,ac) {
                    a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
                    return AddUnsigned(RotateLeft(a, s), b);
            }

            function II(a,b,c,d,x,s,ac) {
                    a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
                    return AddUnsigned(RotateLeft(a, s), b);
            }

            function ConvertToWordArray(string) {
                    var lWordCount;
                    var lMessageLength = string.length;
                    var lNumberOfWords_temp1=lMessageLength + 8;
                    var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
                    var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
                    var lWordArray=Array(lNumberOfWords-1);
                    var lBytePosition = 0;
                    var lByteCount = 0;
                    while ( lByteCount < lMessageLength ) {
                            lWordCount = (lByteCount-(lByteCount % 4))/4;
                            lBytePosition = (lByteCount % 4)*8;
                            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
                            lByteCount++;
                    }
                    lWordCount = (lByteCount-(lByteCount % 4))/4;
                    lBytePosition = (lByteCount % 4)*8;
                    lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
                    lWordArray[lNumberOfWords-2] = lMessageLength<<3;
                    lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
                    return lWordArray;
            }

            function WordToHex(lValue) {
                    var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
                    for (lCount = 0;lCount<=3;lCount++) {
                            lByte = (lValue>>>(lCount*8)) & 255;
                            WordToHexValue_temp = "0" + lByte.toString(16);
                            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
                    }
                    return WordToHexValue;
            }

            function Utf8Encode(string) {
                    string = string.replace(/\r\n/g,"\n");
                    var utftext = "";

                    for (var n = 0; n < string.length; n++) {

                            var c = string.charCodeAt(n);

                            if (c < 128) {
                                    utftext += String.fromCharCode(c);
                            }
                            else if((c > 127) && (c < 2048)) {
                                    utftext += String.fromCharCode((c >> 6) | 192);
                                    utftext += String.fromCharCode((c & 63) | 128);
                            }
                            else {
                                    utftext += String.fromCharCode((c >> 12) | 224);
                                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                                    utftext += String.fromCharCode((c & 63) | 128);
                            }

                    }

                    return utftext;
            }

            var x=Array();
            var k,AA,BB,CC,DD,a,b,c,d;
            var S11=7, S12=12, S13=17, S14=22;
            var S21=5, S22=9 , S23=14, S24=20;
            var S31=4, S32=11, S33=16, S34=23;
            var S41=6, S42=10, S43=15, S44=21;

            string = Utf8Encode(string);

            x = ConvertToWordArray(string);

            a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

            for (k=0;k<x.length;k+=16) {
                    AA=a; BB=b; CC=c; DD=d;
                    a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
                    d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
                    c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
                    b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
                    a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
                    d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
                    c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
                    b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
                    a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
                    d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
                    c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
                    b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
                    a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
                    d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
                    c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
                    b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
                    a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
                    d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
                    c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
                    b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
                    a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
                    d=GG(d,a,b,c,x[k+10],S22,0x2441453);
                    c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
                    b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
                    a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
                    d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
                    c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
                    b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
                    a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
                    d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
                    c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
                    b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
                    a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
                    d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
                    c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
                    b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
                    a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
                    d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
                    c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
                    b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
                    a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
                    d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
                    c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
                    b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
                    a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
                    d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
                    c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
                    b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
                    a=II(a,b,c,d,x[k+0], S41,0xF4292244);
                    d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
                    c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
                    b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
                    a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
                    d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
                    c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
                    b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
                    a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
                    d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
                    c=II(c,d,a,b,x[k+6], S43,0xA3014314);
                    b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
                    a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
                    d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
                    c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
                    b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
                    a=AddUnsigned(a,AA);
                    b=AddUnsigned(b,BB);
                    c=AddUnsigned(c,CC);
                    d=AddUnsigned(d,DD);
            }

            var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);

            return temp.toLowerCase();
    }


});



var tabs = new Class({

    Implements: Options,
    
    options: {
        toggler: $empty,
        boxes: $empty
    },

    initialize: function(options) {
        this.setOptions(options);
        this._setEvents();
        this._show(0);
    },

    _hideAll: function()
    {
        this.options.toggler.each(function(el) {
            el.removeClass('active');
        });
        this.options.boxes.each(function(el) {
            el.setStyle('display', 'none');
        });
    },

    _setEvents: function()
    {
        this.options.toggler.each(function(el, idx) {
            el.store('idx', idx);
            el.addEvent('click', function(event) {
                this._show(el.retrieve('idx'));
            }.bind(this));
        }.bind(this));
    },

    _show: function(idx)
    {
        this._hideAll();
        this.options.toggler[idx].addClass('active');
        this.options.boxes[idx].setStyle('display', 'block');
    }

});
