var Captcha = {

	form : false,
	captchaId : false,
	callBack : false,

	validate : function(elem, captchaId, callBack, errorCallBack) {
		try {
			if(callBack) Captcha.callBack = callBack;
			if(errorCallBack) Captcha.errorCallBack = errorCallBack;
			Captcha.form = $(elem);
			Captcha.captchaId = captchaId;
			params = {
				'captcha' : Captcha.form.captcha.value
			}

			jsonRequest('users.verifyCaptcha', params, Captcha.successHandler, Captcha.errorHandler);
		
		} catch(err) {
			alert(err);
		}	

	},

	successHandler : function(data) {
		try { 
			
			$(Captcha.captchaId).innerHTML = '<img src="/services/captcha?w=140&h=50&c=6&rand=' + (Math.round(Math.random()*1000000000) + "") + '" alt="captcha" />';
			
			if(data) {
				$('fmCaptchaBad').hide();
				if(Captcha.callBack) {
					var callBack = Captcha.callBack();
					callBack();
				} else {
					Captcha.form.submit();
				}
			} else {
				if(Captcha.errorCallBack) {
				    var callBack = Captcha.errorCallBack();
				    callBack();
				} else {
				    $('fmCaptchaBad').show();
				}
			}
		}catch(err) {
			console.log(err + ' with message : ' + Captcha.callBack);
		}
	},


	errorHandler : function(exception) {
		$('fmCaptchaBad').show();
		$(Captcha.captchaId).innerHTML = '<img src="/services/captcha?w=140&h=50&c=6&rand=' + (Math.round(Math.random()*1000000000) + "") + '" alt="captcha" />';
	}

}
