//============================================================================
// Визначення типу браузера і ОС
// Базується на:
// http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
//============================================================================
var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_opera  = (uagent.indexOf('opera') != -1);
var is_kon    = (uagent.indexOf('konqueror') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);

var is_win    = ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var ua_vers   = parseInt(navigator.appVersion);

if (is_ns4 || is_ie4)
{
	window.alert('У вас старе покоління браузера. Розмітка і дизайн на сайті може відображатись некоректно. Обновіть браузер. Рекомендуєм Firefox.');
}

//============================================================================
// Повертає елемент по його ідентифікатору
//============================================================================
function DevGetById(Id)
{
	if (document.getElementById)
	{
		return document.getElementById(Id);
	}
	else if (document.all)
	{
		return document.all[Id];
	}
	else if (document.layers)
	{
		return document.layers[Id];
	}
	else
	{
		return null;
	}
}

//============================================================================
// Повертає елемент по його ідентифікатору для певного документу
//============================================================================
function DevGetByIdDoc(Id, Doc)
{
	if (Doc.getElementById)
	{
		return Doc.getElementById(Id);
	}
	else if (Doc.all)
	{
		return Doc.all[Id];
	}
	else if (Doc.layers)
	{
		return Doc.layers[Id];
	}
	else
	{
		return null;
	}
}

//============================================================================
// Змінює видимість елемента на протилежну по ідентифікатору
//============================================================================
function DevToggleView(ElementId)
{
	if (!ElementId)
	{
		return;
	}

	if (FindElement = DevGetById(ElementId))
	{
		if (FindElement.style.display == 'none')
		{
			DevShowElement(FindElement);
		}
		else
		{
			DevHideElement(FindElement);
		}
	}
}

//============================================================================
// Показує елемент по його ідентифікатору
//============================================================================
function DevShow(ElementId)
{
	if (!ElementId)
	{
		return;
	}

	if (FindElement = DevGetById(ElementId))
	{
		DevShowElement(FindElement);
	}
}

//============================================================================
// Ховає елемент по його ідентифікатору
//============================================================================
function DevHide(ElementId)
{
	if (!ElementId)
	{
		return;
	}

	if (FindElement = DevGetById(ElementId))
	{
		DevHideElement(FindElement);
	}
}

//============================================================================
// Ховає елемент
//============================================================================
function DevHideElement(HideElement)
{
	if (!HideElement)
	{
		return;
	}

	HideElement.style.display = 'none';
	HideElement.style.visibility = 'hidden';
}

//============================================================================
// Показує елемент
//============================================================================
function DevShowElement(ShowElement)
{
	if (!ShowElement)
	{
		return;
	}

	ShowElement.style.display = '';
	ShowElement.style.visibility = 'visible';
}

//============================================================================
// Провіряє елементи форми
//============================================================================
// Параметри функції:
//   objName     - ім'я об'єкта
//   objDispName - ім'я поля (для відображення в алерті)
//   objCheck    - що провіряєм
// Формат objCheck:
//   Це стрічка, яка складається з таких підстрічок:
//     [R|isEmail|isNum|inRange<from>:<to>|inLen<min>^<max>]
//   Де:
//     R                  - Поле повинне бути заповнене 
//     isEmail            - Поле повинно містити ардресу емейл
//     isNum              - Поле повинно бути числом
//     isInt              - Поле повинно бути цілим числом
//     inRange<from>:<to> - Поле повинно числом в межах між <from> і <to>
//     inLen<min>^<max>   - Поле повинно мати довжину між <min> і <max>, якщо
//                          <min> чи <max> є 0, то не провіряються
// Функція може одночасно провіряти багато об'єктів.
// В основному, використовується в тезі <form> наступним чином
// (як приклад форма пошуку):
// <form action="search.php" onsubmit="return ValidateForm('SearchTerm', 'Що шукаєм', 'RinLen4^0', 'MaxResultPerPage', 'Кількість результатів на сторінку', 'RisIntinRange1:0');">
//
function ValidateForm()
{
	var DisplayName, Counter, Position, CheckString, ParseNum, Value, Min, Max, Errors='', Args = ValidateForm.arguments;
	
	for (Counter = 0; Counter < (Args.length - 2); Counter += 3)
	{
		CheckString = Args[Counter + 2];
		DisplayName = Args[Counter + 1];
		Value = DevGetById(Args[Counter]);
		if (Value)
		{
			Value = Value.value;
			if (Value != "")
			{
				if (CheckString.indexOf('inLen') != -1)
				{
					Position = CheckString.indexOf('^');
					Min = CheckString.substring(CheckString.indexOf('inLen') + 5, Position);
					Max = CheckString.substring(Position + 1);
					if (Value.length < Min && Min != 0)
					{
						Errors += '- Поле "' + DisplayName + '" мусить складатись не меньше ніж з ' + Min + ' символів(а).\n';
					}
					if (Max < Value.length && Max != 0)
					{
						Errors += '- Поле "' + DisplayName + '" мусить складатись не більше ніж з ' + Max + ' символів(а).\n';
					}
				}
				if (CheckString.indexOf('isEmail') != -1)
				{
					Position = Value.indexOf('@');
					if (Position < 1 || Position == (Value.length - 1))
					{
						Errors += '- Поле "' + DisplayName + '" мусить містити емейл адрес.\n';
					}
				}
				else if (CheckString != 'R' && (CheckString.indexOf('isNum') != -1 || CheckString.indexOf('inRange') != -1 || CheckString.indexOf('isInt') != -1))
				{
					ParseNum = parseFloat(Value);
					if (isNaN(Value))
					{
						Errors += '- Поле "' + DisplayName + '" мусить містити число.\n';
					}
					else
					{
						if (CheckString.indexOf('isInt') != -1 && (Value.indexOf('.') != -1 || Value.indexOf(',') != -1))
						{
							Errors += '- Поле "' + DisplayName + '" мусить містити ціле число.\n';
						}
						if (CheckString.indexOf('inRange') != -1)
						{
							Position = CheckString.indexOf(':');
							Min = CheckString.substring(CheckString.indexOf('inRange') + 7, Position);
							Max = CheckString.substring(Position + 1);
							if (ParseNum < Min || Max < ParseNum)
							{
								Errors += '- Поле "' + DisplayName + '" мусить містити число між ' + Min + ' і ' + Max + '.\n';
							}
						}
					}
				}
			}
			else if (CheckString.charAt(0) == 'R')
			{
				Errors += '- Поле "' + DisplayName + '" мусить бути заповнене.\n';
			}
		}
	}
	if (Errors)
	{
		alert('При провірці заповнення форми виявлені такі помилки:\n'+Errors+'Будьте уважніші при заповненні!');
		return false;
	}
	return true;
}

function PopUpWindow(name, width, height, url)
{
	window.open(url, name, 'width='+width+',height='+height+', status=no, resizable=yes, scrollbars=yes, dependent=yes');
}

function PopUpImage(url)
{
	window.open(url, null, 'width=550,height=400,status=no,resizable=yes,scrollbars=yes,dependent=yes,help=no');
	return false;
}
