var dispatcher = {
    referer: '',
    params: [ 
        'rt_developer_key',
        'rt_redirect_ok',
        'rt_redirect_error',
        'rt_category',
        'rt_playlist_id',
        'rt_hide_abused',
        'rt_tag',
        'rt_date',
        'rt_sort_by',
        'rt_page',
        'rt_per_page',
        'rt_count',
        'rt_pager_width',
        'rt_movie_link',
        'rt_movies_link',
        'rt_movie_id',
        'rt_min_font',
        'rt_max_font',
        'rt_mode',
        'rt_term',
        'rt_auto_publish',
        'rt_fullscreen',
        'rt_autoplay',
        'rt_playlists_as_categories',
        'rt_moderated',
        'rt_contest',
        'rt_enc'
    ],
    query: { },
    parseQueryString: function() {
        separator = ',';
        var query = '' + document.location;
        //this.referer = query.substring(0,query.indexOf('/',7));
        this.referer = query;
        query = query.substring((query.indexOf('?')) + 1);
        if (query.length < 1) { return false; }  // Perhaps we got some bad data?
        keypairs = new Object();
        numKP = 1;
        while (query.indexOf('&') > -1) {
            keypairs[numKP] = query.substring(0,query.indexOf('&'));
            query = query.substring((query.indexOf('&')) + 1);
            numKP++;
        }
        keypairs[numKP] = query;
        for (i in keypairs) {
            keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
            keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
            while (keyValue.indexOf('+') > -1) {
                keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
            }
            // We have to escape # character ! fix for Cyxapb
            while (keyValue.indexOf('#') > -1) {
                keyValue = keyValue.substring(0,keyValue.indexOf('#')) + '%23' + keyValue.substring(keyValue.indexOf('#') + 1);
            }
            
            if (this.query[keyName]) {
                this.query[keyName] = this.query[keyName] + separator + keyValue;
                // Object already exists, it is probably a multi-select input,
                // and we need to generate a separator-delimited string
                // by appending to what we already have stored.
            } else {
                this.query[keyName] = keyValue;
                // Normal case: name gets value.
            }
        }
        return this.query;
    },
    
    mixParameters: function() {
        this.parseQueryString();
        for (i in this.params) {
            p = this.params[i];
            if (! this.query[p]) {
                this.query[p] = eval("(typeof "+ p +"== 'undefined') ? '' : " + encodeURIComponent(p));
            }
        }
        if (typeof rt_hide_abused != 'undefined') 
            this.query['rt_hide_abused'] = rt_hide_abused;
    },

    finalURL: function() {
        this.mixParameters();
        
        var queryComponents = new Array();
        for (k in this.query) {
            if (this.query[k] != '') {
                var queryComponent = k + "=" + this.query[k];
                if (queryComponent)
                    queryComponents.push(queryComponent);
            }
        }
        queryComponents.push('referer=' + encodeURIComponent(this.referer));

        return 'http://rutube.ru/cgi-bin/jsapi.cgi?' + queryComponents.join('&');
    }
}

var url = dispatcher.finalURL();
if (rt_mode == "record") {
    document.write('<scri' + 'pt src="http://rutube.ru/js/apirecord.js" language="javascript" encoding="koi8-r"  ></script>');
}
document.write('<script src="js/mootools1.2.js"></script>');
document.write('<script encoding="koi8-r" charset="koi8-r" src="' + url + '"></script>');



