// - Send Form --------------------------------------------
function psSendForm(formId,postfix){
	postfix = (postfix)?postfix:'';
	currentWindow = formId.action;

	var	sdata = {};
	for (var i=0; i<formId.elements.length; i++)	{
		sdata[formId.elements[i].name] = formId.elements[i].value;
	}
	sdata['ajax'] = 1;
	var request = new Request.JSON({
		url: formId.action,
		onComplete: function(jsonObj) {
			if(this.response.json)	{
				psShowFormResult(this.response.json.js, postfix);
			}
		}
	}).post(sdata);	
	return false;
}

function psShowFormResult(data,postfix){
	psFormErrorsId = $('psFormErrors'+postfix);
	psFormMessegesId = $('psFormMesseges'+postfix);
	psFormFieldsId = $('psFormFields'+postfix);

	psFormMessegesId.style.display='none';
	psFormErrorsId.style.display='none';
	psFormErrorsId.innerHTML = '';

	if (data.Error){
		psFormErrorsId.style.display='';
		psFormErrorsId.innerHTML=data.Error;
		psReloadCaptcha(data,postfix);
	}else if (data.Messeges){
		psFormMessegesId.style.display='';
		psFormFieldsId.style.display='none';
		psFormMessegesId.innerHTML=data.Messeges;
	}else{
		psFormErrorsId.style.display='';
		psFormErrorsId.innerHTML='Ошибка при предаче данных';
	}
}

function psReloadCaptcha(data,postfix){
	psFormCaptchaId = $('psFormCaptcha'+postfix);
	psFormCaptchaId.src = currentWindow+'?cmd=get_captcha&'+data.sid+'&'+data.rand
}

function psCloseAndReload(postfix)
{
	if ($('psFormErrors'+postfix).style.display != '')
		return false;

	reloadForm = function()
	{
		var psFormMessegesId = $('psFormMesseges'+postfix);
		var psFormFieldsId = $('psFormFields'+postfix);
		psFormMessegesId.style.display='none';
		psFormFieldsId.style.display='';
	}

	setTimeout("psClosePopUp(); reloadForm(); ", 1300);

	return false;
}

//--------- Field Validator -------------------------------------------------------
var psValidator = {
	StatusWait:0,
	FieldValidate:function(obj){
		var Validator = this;
		this.StatusWait = 1;
		this.request = new Request.JSON({
			url: obj.form.action,
			onComplete: function(jsonObj) {
				if(this.response.json)	{
					Validator.SetFieldStatus(this.response.json, obj);
				}
			}
		}).post({cmd:'field_validate', ajax:1,field_name:obj.name,field_value:obj.value});
	},

	SetFieldStatus:function(data, obj){
		this.StatusWait = 0;
		d =	$(obj.name+'_state');
		if(data.js.cmd_errors && data.js.cmd_errors.length > 0)	{
			//obj.style.background = '#fff5f5';
			obj.className = 'item_invalid';
			d.innerHTML = data.js.cmd_errors.join(' ');
		}
		else	{
			//obj.style.background = '#f3fff1';
			obj.className = 'item_validated';
			d.innerHTML='';
		}
	}
}
