




function CmsFormOpenDialog(dialog_url, field_id)
{
	if (dialog_url.indexOf('?') == -1) dialog_url = dialog_url + '?value='+document.getElementById(field_id+'__hidden').value
	else dialog_url = dialog_url + '&value='+document.getElementById(field_id+'__hidden').value
	
	w = CmsFormOpenWindow(dialog_url, field_id, 540, 400);
}

function CmsFormClearDialog(field_id)
{
	var hidden_field = document.getElementById(field_id+'__hidden')
	var title_field = document.getElementById(field_id+'__title')
	
	if (hidden_field) hidden_field.value = ''
	if (title_field) title_field.value = ''
}

function CmsFormOpenWindow(window_url, window_name, w, h)
{
	return window.open(window_url,window_name,'left='+((screen.width/2)-(w/2))+','+'top='+((screen.height/2)-(h/2))+','+'height='+h+',width='+w+',modal=yes,resizable=no,status=no,scrollbars=yes');
}


/**/




var __cmsformcheck_fields = new Array()
var __cmsformcheck_checks = new Array()


function __cmsformcheck_ajaxcheck(_url)
{
	var __ajax_active_x = 0
	var __res = ""
	var __ajax_request = null	
	
	if (window.XMLHttpRequest)
	{
		__ajax_request = new XMLHttpRequest()
	}
	else
	{
		__ajax_request = new ActiveXObject("MSXML2.XMLHTTP.3.0")
		__ajax_active_x = 1
	}  
	
	__ajax_request.open("GET", _url, false)
	
	if (!__ajax_active_x) __ajax_request.send(null)
	else __ajax_request.send()
	
	if (__ajax_request.readyState == 4)
	{
		if (__ajax_request.status == 200) __res = __ajax_request.responseText
		else __res = ''
	}
	
	return __res
}


function __cmsformcheck_error(f, e)
{
	if (f.nextSibling && f.nextSibling.className == 'CmsFormError')
	{
		$(f.nextSibling).dispose();
	}
	
	var _n = $(f).get('name');
	if (e)
	{
		var err = new Element('div');
		err.set('class', 'CmsFormError');
		err.set('html', e);
		err.inject(f, 'after');
	}
}


function __cmsformcheck(formres)
{
	var i;
	
	r = true;
	
	for (i=0; i<__cmsformcheck_fields.length; i++)
	{
		var fielderr = 0;
		var fieldres = formres[__cmsformcheck_fields[i]];
		var fieldval = $(fieldres).get('value');
		var fieldcheck_arr = __cmsformcheck_checks[i].split(";")
		
		for (ii=0; ii<fieldcheck_arr.length; ii++)
		{
			var fieldcheck = fieldcheck_arr[ii]

			if (fieldcheck.toLowerCase() == 'blank' && fieldval == '') fielderr = 'Поле не может быть пустым'
			
			if (fieldcheck.toLowerCase() == 'email' && fieldval != '') if (!(fieldval.indexOf('@') > 0 && fieldval.indexOf('.') > 0)) fielderr = 'Неверный E-mail'

			if (fieldcheck.toLowerCase() == 'latnum' && fieldval != '')
			{
				var _ok = true
				for (iii=0;iii<fieldval.length;iii++)
				{
					if ( (fieldval.charCodeAt(iii) >=97 && fieldval.charCodeAt(iii) <= 122) || (fieldval.charCodeAt(iii) >=65 && fieldval.charCodeAt(iii) <= 90) || fieldval.substr(iii,1) == "_" || isNaN(parseInt(fieldval.substr(iii,1))) != true )
					{
						_ok = true
					}
					else
					{
						_ok = false
						break
					}
				}
			
				if (_ok != true) fielderr = 'Поле содержит недопустимый символ, разрешенные символы: литанские буквы, цифры, знак _'
			}	

			if (fieldcheck.toLowerCase() == 'num' && fieldval != '')
			{
				var _ok = true
				for (iii=0;iii<fieldval.length;iii++)
				{
					if ( isNaN(parseInt(fieldval.substr(iii,1))) != true )
					{
						_ok = true
					}
					else
					{
						_ok = false
						break
					}
				}
			
				if (_ok != true) fielderr = 'Неверное число'
			}	

			if (fieldcheck.toLowerCase() == 'dec' && fieldval != '')
			{
				var _ok = true
				var _dot = 0
				for (iii=0;iii<fieldval.length;iii++)
				{
					if ( isNaN(parseInt(fieldval.substr(iii,1))) != true )
					{
						_ok = true
					}
					else if (fieldval.substr(iii,1) == '.')
					{
						_dot++
						
						if (_dot > 1)
						{
							_ok = false
							break
						}
						else
						{
							_ok = true
						}
					}
					else
					{
						_ok = false
						break
					}
				}
			
				if (_ok != true) fielderr = 'Поле должно содержать положительное целое/дробное число. Дробная часть отделяется точкой'
			}	
			
			if (fieldcheck.toLowerCase().indexOf('length') == 0 && fieldval != '')
			{
				var _i1 = fieldcheck.indexOf("(")
				var _i2 = fieldcheck.indexOf(")")
				var _n = fieldcheck.substr(_i1+1, _i2-_i1-1)
				
				if (_n.indexOf(',') == -1)
				{
					_n = parseInt(_n)
					if (fieldval.length != _n) fielderr = 'Поле содержит недопустимое количество символов'
				}
				else
				{
					var _nn = _n.split(",")
					if (_nn[0] == '') _nn[0] = 0
					if (_nn[1] == '') _nn[1] = 0
					
					if (_nn[0] > 0 && fieldval.length < _nn[0]) fielderr = 'Поле содержит недопустимое количество символов'
					if (_nn[1] > 0 && fieldval.length > _nn[1]) fielderr = 'Поле содержит недопустимое количество символов'
				}
			}

			if (fieldcheck.toLowerCase().indexOf('compare') == 0)
			{
				var _i1 = fieldcheck.indexOf("(")
				var _i2 = fieldcheck.indexOf(")")
				var _f = fieldcheck.substr(_i1+1, _i2-_i1-1)
				
				var _comp_fieldres = formres[_f]
				var _comp_fieldval = _comp_fieldres.value
				
				if (fieldval != _comp_fieldval) fielderr = 'Поле содержит неверное значение'
			}


			if (fieldcheck.toLowerCase().indexOf("ajax") == 0)
			{
				var _i1 = fieldcheck.indexOf("(")
				var _i2 = fieldcheck.indexOf(")")
				var _url = fieldcheck.substr(_i1+1, _i2-_i1-1)

				if (_url.indexOf(',') != -1)
				{
					var _nn = _url.split(",")
					if (_nn[0] == '') continue
					
					_url = _nn[0]
					
					if (_nn[1] != '' && formres[_nn[1]])
					{
						var _add_fieldres = formres[_nn[1]]
						
						if (_add_fieldres.tagName.toLowerCase() == "input" || _add_fieldres.tagName.toLowerCase() == "select") var _add_fieldval = _add_fieldres.value
						else if (_add_fieldres.tagName.toLowerCase() == "textarea") var _add_fieldval = _add_fieldres.innerHTML
					}
				}
				
				var _domain = window.location.host

				fieldval = escape(fieldval);
				
				if (_url.indexOf("?") > 0) _url = 'http://'+_domain+'/module/cmsform/validate/'+_url + "&"+fieldres.name+"="+fieldval
				else _url = 'http://'+_domain+'/module/cmsform/validate/'+_url + "?"+fieldres.name+"="+fieldval
				
				if (_add_fieldres)
				{
					_add_fieldval = escape(_add_fieldval);
					_url = _url + "&"+_add_fieldres.name+"="+_add_fieldval
				}

				var d = new Date()
				
				_url = _url + "&__t="+d.getTime()
				
				var _r = __cmsformcheck_ajaxcheck(_url)
			
				if (_r != '') fielderr = _r
			}

		
			if (fielderr != '') break
			
		}
		

		__cmsformcheck_error(fieldres, fielderr)
		
		if (fielderr != '') r = false
		
	}
	
	return r
}

