function getPosition(offsetTrail, iTop, iLeft){
    var offsetLeft = (typeof(iLeft) != 'undefined' && iLeft != null) ? iLeft : 0;
    var offsetTop = (typeof(iTop) != 'undefined' && iTop != null) ? iTop : -11;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    return {
        left: offsetLeft,
        top: offsetTop
    }
}
var Captcha = (function(){
    var _cform = function(id) {
		return '<div style="background-image: url(http://my.mail.ru/cgi-bin/my/get_image?id=' + id + ');" class="capchaNewLeft"><i class="mf_spIco" onclick="return Captcha.hide();"></i>Ваша запись была удалена как спам. Если вы считаете, что это произошло ошибочно, сообщите нам. Введите число, изображенное на картинке:<div class="mt5"><form onsubmit="return Captcha.submit(this);"><input name="captcha_value" type="text" class="capchaNewInp"/><input type="submit" value="ОК" name="btn_ok"/></div></div>';
    };
    return {
		show: function (el, handler, vars) {
			if(!vars) vars = {};
			if(vars.left == undefined || vars.top == undefined) {
				p = getPosition(el);
				vars.left = p.left;
				vars.top = p.top;
			}
			if(vars.leftEx) vars.left += vars.leftEx;
			if(vars.topEx) vars.top += vars.topEx;
        	var d = new Element('div');
        	$($('boosterCanvas') || document.body).appendChild(d);
        	d.innerHTML = _cform(vars.ID);
        	this.captcha = $(d.firstChild);
			this.captcha.style.left = vars.left + "px";
			this.captcha.style.top = vars.top + "px";
			this.captcha.style.position = 'absolute';
			if(vars.position) this.captcha.style.position = vars.position;
			this.handler = handler;
			this.el = el;
			this.ID = vars.ID;
			this.captcha.show();
			this.hide_callback = (typeof vars.callback === 'function') ? vars.callback : false;
			return false;
		},
		submit: function(form) {
			if(!form.captcha_value.value) {
				alert('Введите число, изображенное на картинке.');
			} else {
				//$(this.captcha.parentNode).remove();
				this.handler(this.ID, form.captcha_value.value, this.el);
			}
			return false;
		},
		hide: function() {
			if(this.captcha) {this.captcha.hide();if (this.hide_callback) {this.hide_callback()}};
			return false;
		}
    };
})();

Common = {};
Common.ClientServer = {
	get: function(func_name, data, callback, url) {
		this.sendCommand(func_name, data, callback, url, 'get');
	},
	post: function(func_name, data, callback, url) {
		this.sendCommand(func_name, data, callback, url, 'post');
	},
	sendCommand: function(func_name, data, callback, url, method) {
		url = url || '/my/ajax';
		var success = false, error = false;
		if (typeof callback === 'function') {
			callback = {
				success: callback
			}
		} else if (!callback) {
			callback = {};
		}
		new Ajax.Request(url, {
			method: method,
			parameters: {
				ajax_call: 1,
				func_name: func_name,
				data: data.toJSON()
			},
			onSuccess: callback.success ? function(response){
				var data = response.responseText.evalJSON(true);
				if (data[1] === 'OK') {
					data.splice(0, 2);
					callback.success(data, response);
				} else if (callback.error) {
					callback.error(); 
				}
			} : null,
			onError: callback.error ? callback.error : null
		});
	}
};
function notSpam(post_id, captcha_id, captcha_user_value) {
	Captcha.hide();
	Common.ClientServer.post('mras.not_spam',
		[ActiveEmail, $(window.captchaEl).hasClassName('micro') ? 7 : 3, post_id, '', captcha_id, captcha_user_value],
		function(data, response) {
			var status = data[0];
			var el = $(window.captchaEl),
				p = getPosition(el);
			if (status === 'captcha') {
				Captcha.show(el, function(id, value) {
				    notSpam(post_id, id, value);
				}.bind(this), {"ID": data[1], "top": p.top + 30, "left": p.left});
				return;
			} else {
				var div = document.createElement('div');
				document.body.appendChild(div);
				div.innerHTML = 'Ваш запрос принят, спасибо.';
				div.style.cssText = 'background: #fff; position: absolute; border: 1px solid #CCCCCC; color: #999999 !important; font-size: 11px; top: ' + p.top + 'px; left: ' + p.left + 'px; padding: 5px; font-family: Tahoma;';
				div = $(div);
				div.observe('click', function(e) {
					e.findElement('div').remove();
				});
				setTimeout(function(el) {
					return function() {
						div.remove();
					};
				}(div), 4000);
				$(el).remove();
			}
		}.bind(this),
		'/cgi-bin/my/ajax'
	);
}
