ImageManager = function(imgLimit, selectedCategory)
{
	this.limit = imgLimit;
	this.selectedCategory = selectedCategory;
	this.categories = MochiKit.DOM.getElement("categories");
	this.imgTable = MochiKit.DOM.getElement("tblImages");
	if(this.categories) {
		MochiKit.Signal.connect(this.categories, "onclick", this, this.showImagesInCategory);
	}
	MochiKit.Signal.connect(this.imgTable, "onclick", this, this.updateVote);
};

ImageManager.prototype.updateVote= function(evt)
{
	var callbackFunc = function(response) {
        try {
            response = response.responseText.split(",");
            if (response.length === 1)
            {
                return;
            }
            document.getElementById('votesimg'+response[0]).innerHTML = parseInt(response[1]) + (document.getElementById('votesimg'+response[0]).innerHTML==="No" ? 0 : parseInt(document.getElementById('votesimg'+response[0]).innerHTML));
        } catch (e) {
            logger.error(e);
        }
	};

	var errCallback = function(response) {
            logger.info("Error while updating image votes");
	};

    var elem = evt.target();
    var id = MochiKit.DOM.getNodeAttribute(elem, "imageVoteId");
    if(id)
    {
        if ((elem.innerHTML === "[+]") || (elem.innerHTML === "[-]")) {
            if (!CookieManager.get('isloggedin')) {
                return GB_showCenter('Login', WEB_ROOT + "login.html", 200, 350);
            }
        }
        if(elem.innerHTML === "[+]") {
            var d = MochiKit.Async.doSimpleXMLHttpRequest("greetings/voteUp", {"id": id, "type": "image", "rand": (100000+999999*Math.random())});
            d.addCallbacks(callbackFunc, errCallback);
        } else if (elem.innerHTML === "[-]") {
            var d = MochiKit.Async.doSimpleXMLHttpRequest("greetings/voteDown", {"id": id, "type": "image", "rand": (100000+999999*Math.random())});
            d.addCallbacks(callbackFunc, errCallback);
        } else {
            logger.info("Control in update image votes. Code review needed?");
            return;
        }
        evt.stop();
    } else {
        return;
    }
};

ImageManager.prototype.showImagesInCategory = function(evt)
{
	if(evt) {
		evt.stop();
		try {
			this.selectedCategory = evt.target().innerHTML;
		}catch(e){
		}
	}
    var d1 = MochiKit.Async.doSimpleXMLHttpRequest("greetings/showImages",{"category":this.selectedCategory, "limit":this.limit});
    d1.addCallback(this.refreshImages);
};

ImageManager.prototype.refreshImages = function(response)
{
    var res = eval("(" + response.responseText + ")");
	MochiKit.DOM.getElement("tblImages").innerHTML = res.data;
};
