function AlphaBlock()
{
    /**
    * @var String
    */
    var _languageDivIdPrefix = 'alpha-form-';
    
    /**
    * @var String
    */
    var _contentTypeDivIdPrefix = 'alpha-form-';
    
    /**
    * @var Array
    */
    var _avalibleLanguages = ['en', 'ru'];
    
    /**
    * @var Array
    */
    var _avalibleContentType = ['track', 'artist', 'album'];
    
    /**
    * @var string
    */
    var _language = 'ru';
    
    /**
    * @var string
    */
    var _contentType = 'track';
    
    // console.log.log('Avalible languages:');
    // console.log.log(_avalibleLanguages);
    
    // console.log.log('Avalible content type:');
    // console.log.log(_avalibleContentType);
    
    /*
    var getCookie = function(value)
    {
        return false;
    }
    
    var setCookie = function(value)
    {
        return this;
    }
    */
    
    /**
    * @param Array a
    * @return Object
    */
    var oc = function(a)
    {
        var o = {};
        for(var i=0;i<a.length;i++) {
            o[a[i]]='';
        }
        return o;
    }
    
    /**
    * @param string language
    * @return AlphaBlock
    */
    this.setLanguage = function(language)
    {
        if (language in oc(_avalibleLanguages)) {
            setCookie('language', language);
            _language = language;
        }
        
        this.init();
        
        return this;
    }
    
    /**
    * @return string
    */
    this.getLanguage = function()
    {
        _language = (getCookie('language')) ? getCookie('language') : _language;
        return _language;
    }
    
    /**
    * @param string contentType
    * @return AlphaBlock
    */
    this.setContentType = function(contentType)
    {
        if (contentType in oc(_avalibleContentType)) {
            setCookie('contentType', contentType);
            _contentType = contentType;
        }
        
        this.init();
        
        return this;      
    }
    
    /**
    * @return string
    */
    this.getContentType = function()
    {
        _contentType = (getCookie('contentType')) ? getCookie('contentType') : _contentType; 
        return _contentType;   
    }
    
    /**
    * @return void
    */
    this.init = function(language, contentType)
    {
        if (language == null) {
            language = this.getLanguage();
        }
        
        if (contentType == null) {
            contentType = this.getContentType();
        }
        
        // console.log.log('Current language: '  + language);
        // console.log.log('Current contentType: '  + contentType);
        
        for (i=0; i<_avalibleLanguages.length; i++) {
            if (_avalibleLanguages[i] != language) {
                // console.log.log('deactivate: ' + _languageDivIdPrefix + _avalibleLanguages[i]);   
                document.getElementById(_languageDivIdPrefix + _avalibleLanguages[i]).style.display = 'none';
            } else {
                // console.log.log('activate: ' + _languageDivIdPrefix + _avalibleLanguages[i]); 
                document.getElementById(_languageDivIdPrefix + _avalibleLanguages[i]).style.display = 'block';
            }
        }
        
        for (i=0; i<_avalibleContentType.length; i++) {
            if (_avalibleContentType[i] != contentType) {
                // console.log.log('deactivate: ' + _contentTypeDivIdPrefix  
                //    + language + '-' + _avalibleContentType[i]);
                document.getElementById(_contentTypeDivIdPrefix   
                    + language + '-' + _avalibleContentType[i]).style.display = 'none';
            } else {
                // console.log.log('activate: ' + _contentTypeDivIdPrefix 
                //    + language + '-' + _avalibleContentType[i]);   
                document.getElementById(_contentTypeDivIdPrefix 
                    + language + '-' + _avalibleContentType[i]).style.display = 'block';
            }
        }
        
        // XXX: И тут всякие костыльные плюхи пошли ...
        // TODO: Вероятно нада вынести в отдельный объект
        
        for (i=0; i<_avalibleLanguages.length; i++) {
            if (_avalibleLanguages[i] != language) {
                document.getElementById(_avalibleLanguages[i] + '-swith').style.cursor='pointer';
            } else {
                document.getElementById(_avalibleLanguages[i] + '-swith').style.cursor='';
            }
        }
    }
}

window.alphaBlock = new AlphaBlock(); 