var bHaveErrors = false;

function doShowHideSecondProfile( sShow, eForm ) {
	if( sShow == 'yes' )
		$( '.form_second_col', eForm ).css( 'display', '' );
	else
		$( '.form_second_col', eForm ).css( 'display', 'none' );
}

function validateForm( eForm ) {
	if( !eForm ){
		return false;
	}
	hideJoinFormErrors( eForm );
	$(eForm).ajaxSubmit(function(sResponce) {
		try {
			var aErrors = eval(sResponce);
		} catch(e) {
			return false;
		}
		doShowJoinErrors( aErrors, eForm );
	} );
	return false;
}

function hideJoinFormErrors( eForm ) {
	$( 'img.form_warn_icon', eForm ).css('display', 'none');
	$( '.input_erroneus', eForm ).removeClass( 'input_erroneus' );
}

function doShowJoinErrors( aErrors, eForm ) {
	if( !aErrors || !eForm )
		return false;
	bHaveErrors = false;
	for( var iInd = 0; iInd < aErrors.length; iInd ++ ) {
		var aErrorsInd = aErrors[iInd];

		for( var sField in aErrorsInd ) {
			var sError = aErrorsInd[ sField ];
			bHaveErrors = true;
			doShowError( eForm, sField, iInd, sError );
		}
	}
	if( !bHaveErrors ){
		eForm.submit();
	}
}

function doShowError( eForm, sField, iInd, sError ){
	var $Field = $( "[name='" + sField + "']", eForm ); // single (system) field
	if( !$Field.length ) // couple field
		$Field = $( "[name='" + sField + '[' + iInd + ']' + "']", eForm );
	if( !$Field.length ) // couple multi-select
		$Field = $( "[name='" + sField + '[' + iInd + '][]' + "']", eForm );
	if( !$Field.length ) // couple range (two fields)
		$Field = $( "[name='" + sField + '[' + iInd + '][0]' + "'],[name='" + sField + '[' + iInd + '][1]' + "']", eForm );

	$Field.addClass( 'input_erroneus' );
	$Icon = $Field.siblings( 'img.form_warn_icon' );
	$Icon.css( 'display', '' );
	$Icon.mouseover( function(){ showFloatDesc(sError) } );
}

function findImageWarnIcon(arrayObject)
{
	var result = null;
	arrayObject.each(function(s)
	{
		if(s.hasClassName('form_warn_icon'))
		{
			result = s;
			return;
		}
	});
	return result;
}

function showFloatDesc( text )
{
	descDiv = document.getElementById( 'FloatDesc' );
	if ( descDiv )
	{
		descDiv.innerHTML = text;
		descDiv.style.display = 'block';
	}
}

function hideFloatDesc()
{
	descDiv = document.getElementById( 'FloatDesc' );
	if ( descDiv )
		descDiv.style.display = 'none';
}

function moveFloatDesc( ev )
{
	descDiv = document.getElementById( 'FloatDesc' );
	if ( descDiv )
	{
		showPos = getPositionData( descDiv, ev );
		descDiv.style.left = showPos['posX'] + 'px';
		descDiv.style.top = showPos['posY'] + 'px';
	}
}

function getPositionData(obj, showEvent)
{
	if ( !showEvent )
		showEvent = window.event;

	var pos_X = 0, pos_Y = 0;
	if ( showEvent )
	{
		if ( typeof(showEvent.pageX) == 'number' )
		{
			pos_X = showEvent.pageX;
			pos_Y = showEvent.pageY;
		}
		else if ( typeof(showEvent.clientX) == 'number' )
		{
			pos_X = showEvent.clientX; pos_Y = showEvent.clientY;
			if ( document.body &&
				( document.body.scrollTop || document.body.scrollLeft ) &&
				!( window.opera || window.debug || navigator.vendor == 'KDE' ) )
			{
				pos_X += document.body.scrollLeft;
				pos_Y += document.body.scrollTop;
			}
			else if ( document.documentElement &&
				( document.documentElement.scrollTop ||
				document.documentElement.scrollLeft ) &&
				!( window.opera || window.debug || navigator.vendor == 'KDE' ) )
			{
				pos_X += document.documentElement.scrollLeft;
				pos_Y += document.documentElement.scrollTop;
			}
		}
	}

	var scroll_X = 0, scroll_Y = 0;
	if ( document.body &&
		( document.body.scrollTop || document.body.scrollLeft ) &&
		!( window.debug || navigator.vendor == 'KDE' ) )
	{
		scroll_X = document.body.scrollLeft;
		scroll_Y = document.body.scrollTop;
	}
	else if ( document.documentElement &&
		( document.documentElement.scrollTop ||
		document.documentElement.scrollLeft ) &&
		!( window.debug || navigator.vendor == 'KDE' ) )
	{
		scroll_X = document.documentElement.scrollLeft;
		scroll_Y = document.documentElement.scrollTop;
	}

	var win_size_X = 0, win_size_Y = 0;
	if (window.innerWidth && window.innerHeight)
	{
		win_size_X = window.innerWidth;
		win_size_Y = window.innerHeight;
	}
	else if ( document.documentElement &&
		document.documentElement.clientWidth &&
		document.documentElement.clientHeight )
	{
		win_size_X = document.documentElement.clientWidth;
		win_size_Y = document.documentElement.clientHeight;
	}
	else if (document.body && document.body.clientWidth && document.body.clientHeight)
	{
		win_size_X = document.body.clientWidth;
		win_size_Y = document.body.clientHeight;
	}

	pos_X += 15;
	pos_Y += 20;

	if (obj.offsetWidth && obj.offsetHeight)
	{
		if (pos_X - scroll_X + obj.offsetWidth + 5 > win_size_X)
			pos_X -= (obj.offsetWidth + 25);
		if (pos_Y - scroll_Y + obj.offsetHeight + 5 > win_size_Y)
			pos_Y -= (obj.offsetHeight + 20);
	}

	var res = new Array;
	res['posX'] = pos_X;
	res['posY'] = pos_Y;
	res['scrollX'] = scroll_X;
	res['scrollY'] = scroll_Y;
	res['winSizeX'] = win_size_X;
	res['winSizeY'] = win_size_Y;

	return res;
}
