var CaptchaRefresh = {};

CaptchaRefresh._PREVENT_CACHE_PARAM_NAME = "captchaPreventCache";


CaptchaRefresh.init = function(argsHash) {
	var triggerElementId = argsHash.triggerElementId;
	var imageElementId = argsHash.imageElementId;
	this._imageUrl = argsHash.imageUrl;

	this._triggerElement = $("#" + triggerElementId);
	this._imageElement = $("#" + imageElementId);

	var _this = this;
	var refreshImageWrapper = function(evt) {
		_this._refreshImage(evt);
	};

	this._triggerElement.bind("click", refreshImageWrapper);
};

CaptchaRefresh._refreshImage = function(evt) {
	evt.preventDefault();
	evt.returnValue = false;
	var preventCacheParamValue = ((new Date()).valueOf()).toString() + Math.floor(Math.random()*1000).toString();
	var preventCacheParam = CaptchaRefresh._PREVENT_CACHE_PARAM_NAME + "=" + preventCacheParamValue;
	var imageUrl = CaptchaRefresh._setQueryStringOnUrl(this._imageUrl, preventCacheParam);
	this._imageElement.attr("src", imageUrl);
	return false;
};

CaptchaRefresh._setQueryStringOnUrl = function(url, queryString) {
	var /* String */ newURL = null;

	if (url) {
		newURL = url.toString();
		if (queryString) {
			if (newURL.indexOf("?") > -1) {
				newURL += "&";
			} else {
				newURL += "?";
			}
			newURL += queryString;
		}
	}

	return newURL;
};
