Event.observe(window, 'load', function() {
    new InitSWFobjects();
    new Newsletter();
    new GameAutocomplete();
    new SubmitFormByLink();
    if ($('middle_bg')) transparentbg('main_bg');
});

Event.observe(document, 'click', function() {
	if ($('middle_bg')) transparentbg('main_bg');
});

function getElementsByName_iefix(tag, name) {
    var elem = document.getElementsByTagName(tag);
    var arr = new Array();
    for(i = 0, iarr = 0; i < elem.length; i++) {
         att = elem[i].getAttribute("name");
         if(att == name) {
              arr[iarr] = elem[i];
              iarr++;
         }
    }
    return arr;
}

function transparentbg(tbg_id) {
    var bak = getElementsByName_iefix("div", tbg_id);
    for(i = 0; i < bak.length; i++) {
         bak[i].style.height = bak[i].parentNode.clientHeight + 10 + "px";
    }
}

Newsletter = Class.create({
    initialize: function() {
        $$('.formnews').each(function(fm) {
            this.initElements(fm);
            fm.observe('submit', function(event) {
                this.showDialog(Event.element(event).down('img'));
                Event.stop(event);
            }.bind(this));
        }.bind(this));
        this.modal = null;
    },
    initElements: function(fm) {
        fm.down('input').observe('focus', function(event) {
            var elInput = Event.element(event);
            if (elInput.hasClassName('defaultText')) {
                elInput.value = '';
                elInput.removeClassName('defaultText');
            }
        }.bind(this));
        fm.down('label').observe('click', function(event) {
            this.showDialog(Event.element(event));
        }.bind(this));
    },
    showDialog: function(elImg) {
        var email = elImg.up('.formnews').down('input').getValue();
        var err = new ErrorManager();
        err.checkEmail(email);
        if (err.getErrors()) {
            return false;
        }
        var url = new UrlConstructor('Newsletter/Dialog');
        url.addVar('email', email);
        this.modal = new Control.Modal(false, {
            contents: function() {
                new Ajax.Request(url.construct(), {
                    onComplete: function(request){
                        this.modal.update(request.responseText);
                        this.initDialogAction();
                        Event.observe('modalClose', 'click', function() {
                            this.modal.close();
                        }.bind(this));
                    }.bind(this)
                });
                return i18n('loadingDialog');
            }.bind(this),
            fade: true,
            fadeDuration: 0.4,
            opacity: 0.8,
            width: 500,
            containerClassName: 'mfmodal'
        });
        this.modal.open();
    },
    initDialogAction: function() {
        $('saveemailok').observe('click', function() {
            var url = new UrlConstructor('newsletter/subscribe');
            url.setAction(true);
            $('saveemail').getElements().each(function(el) {
                url.addVar(el.readAttribute('name'), $F(el));
            });
            new Ajax.Request(url.construct(), {
                onSuccess: function(transport) {
                    var obj = transport.responseText.evalJSON();
                    var er = new ErrorManager(obj);
                    if (er.haveErrors()) {
                        this.modal.update(er.getHtmlContent());
                        Event.observe('errorsClose', 'click', function() {
                            this.modal.close();
                        }.bind(this));                       
                    } else {
                        alert(i18n('newsletter_alert_part1') + obj.email + i18n('newsletter_alert_part2'));
                        $$('.formnews').each(function(fm) {
                            var elInput = fm.down('input');
                            if (!elInput.hasClassName('defaultText')) {
                                elInput.value = '';
                            }
                        });
                        this.modal.close();
                    }
                }.bind(this)
            });
        }.bind(this));
    }
});