var Loader = {
    //request : null,
    method : 'GET',
    async : true,
    ccc : 0,

    init : function(method, async){
        this.method = method ? method : this.method;
        this.async = async ? async : this.async;
        this.ccc = 0
    },

    getRequest : function(){
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest()
        } else if (window.ActiveXObject) {
            try {
                return new ActiveXObject('Msxml2.XMLHTTP')
            } catch (e) {
                try {
                    return new ActiveXObject('Microsoft.XMLHTTP')
                } catch (e) {
                    alert(e)
                }
            }
        }
    },

    load : function(event, eventSource, clientParams, serverParams) {
        //var url = '/bitrix/components/custom/tv.setka/load.php'
        //var preURL  = '/bitrix/components/custom/tv.setka/'
        //var url = '/setka/load.jsp'
        var preURL  = '/tvsetka/'
        var viewFolder = 'channels'
        if (event == Mediator.LOAD_ANONS) viewFolder = 'anonses'
        else
        if (event == Mediator.LOAD_GENRE) viewFolder = 'genres'
//alert(serverParams.blockN + ';' + (serverParams.blockN/4))
    var day = Math.ceil((serverParams.blockN+1)/4)
    day = day ? day : serverParams.day
    var week = serverParams.week ? serverParams.week : Math.floor((day-1)/7) + Settings.week
//if (event == Mediator.LOAD_ANONS)    alert(day)
    day = (day ? day : serverParams.day) % 7
    day = (day == 0) ? 7 : day
	
//alert(Settings.week)

//alert(day+', '+week+', '+Settings.week)

        var url = preURL + week + '/' + viewFolder + '/' + day + '/' + serverParams.id + '-'
        if (event == Mediator.LOAD_ANONS) url += serverParams.telecast
        else url += serverParams.block
        if (event == Mediator.LOAD_ANONS || !serverParams.label) url += '.xml'
        else { url += '.' + serverParams.label + '.xml' }
        var request = this.getRequest()
        /*
        var params = '?event=' + event
        for (var name in serverParams) {
            params += '&' + name + '=' + encodeURI(serverParams[name])
        }
        params += '&' + Math.random()
        var request = this.getRequest()
        try {
            request.open(this.method, url + params, this.async)
        } catch (e) {
            alert('Loader: ' + e)
        }
        */

        try {
            request.open(this.method, url, this.async)
        } catch (e) {
            alert('Loader: ' + e)
        }

        //var loader = this
        request.onreadystatechange = function() {
            if (request.readyState == 4) {
                //$('print').value = request.responseText
                Mediator.notify(event, eventSource, clientParams, request)
            }
        }

        //this.request.setRequestHeader("Content-length", params.length);
        //this.request.setRequestHeader("Content-type", "multipart/form-data");
        //this.request.send(params)
        request.send(null)
    },

    serialize : function(element, self){
        var data = (window.XMLSerializer) ? new XMLSerializer().serializeToString(element) : element.xml
        var ind = data.indexOf('>')
        if (ind == data.lastIndexOf('>')) {
            return ''
        }
        if (!self) return data.substring(data.indexOf('>') + 1, data.lastIndexOf('<'))
        return data
    }
}

Loader.init()