/**********************************
 ****** Стандартные функции *******
 **********************************
 *
 * Public
 ** Показывает/скрывает элемент [ __toggle(string|object id) ]
 ** Показывает элемент          [ __show(string|object id) ]
 ** Скрывает элемент            [ __hide(string|object id) ]
 ** Открывает стандартное окно  [ __windowOpen( string url, string name, int width, int height, int top, int left ) ]
 ** Проверяет форму на правильность ввода  [ __validForm( string|form _form ) ]
 ** Выбирает элемент  [ $(string|object id) ]
 *
 * Private
 ** Определяет какой метод скрытия у объекта [ __getHideMethod( object id ) ]
 ** 
 *
 * Code By Parfyonov Dima (Berkut)
***********************************/

//Public Показывает элемент;
function __show( id ) {
	if ( !(id = $(id)) )
		return false;

	block = __getHideMethod(id);
	if ( block ) {
		id.style.display = 'block';
	}
	else {
		id.style.visibility = 'visible';
	}

	return true;
}

//Public Скрывает элемент;
function __hide( id ) {
	if ( !(id = $(id)) )
		return false;

	block = __getHideMethod(id);
	if ( block ) {
		id.style.display = 'none';
	}
	else {
		id.style.visibility = 'hidden';
	}

	return true;
}

//Public Показывает/скрывает элемент в зависимости от статуса;
function __toggle( id ) {
	if ( !(id = $(id)) )
		return false;

	if ( (id.style.display == 'block') || (id.style.visibility == 'visible') ) {
		__hide(id);
	}
	else {
		__show(id);
	}
	return true;
}

//Private Определяет какой метод скрытия у объекта;
function __getHideMethod( id ) {
	if ( id.className != '' ) {
		if ( typeof id.currentStyle != 'undefined' )
			return ( id.currentStyle.display != 'inline' ) ? 1 : 0;

		return ( document.defaultView.getComputedStyle(id, null).display != '' ) ? 1 : 0;
	}

	return ( id.style.display != '' ) ? 1 : 0;
}

//Public Открывает стандартное окно;
function __windowOpen( url, name, width, height, top, left ) {
	if ( !name )
		return false;

	if ( !width )
		width = 400;
	if ( !height )
		height = 300;

	param = 'location,width='+width+',height='+height+',toolbar=no,maximize=no,resizable=no,menubar=no,status=no';
	if ( top != '' )
		param += ',top='+top;
	if ( left != '' )
		param += ',left='+left;

	_window = window.open( url, name, param );
	_window.focus();

	return _window;
}

//Public Проверяет форму на правильность ввода;
function __validForm( _form, _errorColor, _validColor ) {
	if ( !(_form = $(_form)) )
		return false;

	if ( !_errorColor )
		_errorColor = 'F5CDCD';
	if ( !_validColor )
		_validColor = 'FFFFFF';

	pass = '';
	for ( i = 0; i < _form.length; i++ ) {
		if ( _form.elements[i].alt == "r" && _form.elements[i].value == "" ) {
			_form.elements[i].style.backgroundColor = _errorColor;
			alert('Пожалуйста, введите ' + _form.elements[i].title + '.');
			_form.elements[i].focus();
			return false;
		}
		else if ( _form.elements[i].alt == "r" ) {
			_form.elements[i].style.backgroundColor = _validColor;
		}

		if ( _form.elements[i].type == 'password' ) {
			if ( !pass ) {
				if ( _form.elements[i].value == '' ) {
					_form.elements[i].style.backgroundColor = _errorColor;
					alert('Вы не ввели пароль!');
					_form.elements[i].focus();
					return false;
				}
				else {
					_form.elements[i].style.backgroundColor = _validColor;
				}
				pass = _form.elements[i].value;
			}
			else {
				if ( pass != _form.elements[i].value ) {
					alert('Введённые пароли не совпадают!');
					_form.elements[i].focus();
					return false;
				}
			}
		}
	}

	return true;
}

//Public Выбирает элемент;
/*function $( id ) {
	if ( !id )
		return false;

	if ( typeof id == 'string' ) {
		if ( id = document.getElementById(id) ) 
			return id;
		return false;
	}

	return id;
}*/
