var ctrl=new Object();
ctrl.READY_STATE_UNINITIALIZED = 0;
ctrl.READY_STATE_LOADING = 1;
ctrl.READY_STATE_LOADED = 2;
ctrl.READY_STATE_INTERACTIVE = 3;
ctrl.READY_STATE_COMPLETE = 4;

ctrl.ContentLoader = function(component, url, method, requestParams) {
    this.component = component;
    this.url = url;
    this.requestParams = requestParams;
    this.method = method;
}

ctrl.ContentLoader.prototype = {
    getTransport: function() {
        var transport;
        if (window.XMLHttpRequest) {
            transport = new XMLHttpRequest(); 
        } else if (window.ActiveXObject) {
            try {
                transport = new ActiveXObject('Msxml2.XMLHTTP');
            } catch(err) {
                transport = new ActiveXObject('Microsoft.XMLHTTP');
            }
        }
        return transport;
    },
    sendRequest: function() {
        var requestParams = [];
        for (var i=0; i<arguments.length; i++) {
            requestParams.push(arguments[i]);
        }
        var request = this.getTransport();
        request.open(this.method, this.url, true);
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        var oThis = this;
        request.onreadystatechange = function() {
            oThis.handleAjaxResponse(request);
        }
        request.send(this.queryString(requestParams));
    },
    queryString: function(args) {
        var requestParams = [];
        for (var i=0; i<this.requestParams.length; i++) { 
            requestParams.push(this.requestParams[i]);
        }
        for (var i=0; i<args.length; i++)
        {
            requestParams.push(args[i]);
        }
        var queryString = "";
        if (requestParams && requestParams.length > 0) {
            for (var i=0; i<requestParams.length; i++)
            {
                queryString += requestParams[i] + '&';
            }
            queryString = queryString.substring(0, queryString.length-1);
        }
        return queryString;
    },
    handleAjaxResponse: function(request) {
        if (request.readyState ==ctrl.READY_STATE_COMPLETE) {
            if (this.isSuccess(request)) {
                this.component.ajaxUpdate(request);
            } else {
                this.component.handleError(request);
            }
        }
        if (request.readyState == ctrl.READY_STATE_LOADING) {
            if (typeof(this.component.ajaxLoading)=='function') { 
                this.component.ajaxLoading(request);
            }
        }
    },
    isSuccess: function(request) {
        return request.status == 0 || (request.status >= 200 && request.status < 300);
    }
};

ctrl.ParamsSet = function(xmlElement) {
    var len = xmlElement.childNodes.length;
    for (var i=0; i<len; i++) {
        var attrName = xmlElement.childNodes[i].tagName;
        var attrValue = (xmlElement.childNodes[i].text !=undefined) ? xmlElement.childNodes[i].text : xmlElement.childNodes[i].textContent;
        this[attrName] = attrValue;
    }
}

var loader = new ctrl.ContentLoader(this, "/xData/", "POST", ["object=picture"]);

window.ajaxLoading = function(request) {
    var iContent = document.getElementById('imgPlace');
    iContent.innerHTML = "<br/><br/><br/><center>Загрузка...</center>";
}
window.ajaxUpdate = function(request) {
    var iContent = document.getElementById('imgPlace');
    var response = request.responseXML;
    var content = response.getElementsByTagName('content')[0];
    var params = new ctrl.ParamsSet(content);

    var newImg = document.createElement('img');
    newImg.src = params['image'];
    newImg.setAttribute('title', params['name']);
    newImg.setAttribute('alt', params['name']);
    iContent.innerHTML = "<h6>"+params['name']+"</h6><div class='comment'>"+params['comment']+"</div>";
    var newDiv = document.createElement('div');
    newDiv.className = 'img';
    newDiv.appendChild(newImg);
    iContent.appendChild(newDiv);
}

window.handleError = function(request) {
    var iContent = document.getElementById('imgPlace');
    iContent.innerHTML = "Ошибка загрузки";
}

function interfaceLoad() {
    var tPlace = document.getElementById('thumbPlace');
    if (tPlace) {
        var links = tPlace.getElementsByTagName('a');
        for (var i=0; i<links.length; i++) {
            links[i].href="javascript:showPicture("+links[i].parentNode.getAttribute('full_size')+")";
        }
    }
}

function showPicture(id) {
   loader.sendRequest(["id="+id]);
}


