function ShowWin(url,x,y,name,isscrollbars)
{
	cx = screen.width/2 - x/2;
	cy = screen.height/2 - y/2;

	isscrollbars=(isscrollbars=="no")?"no":"yes";
	window.open(url,name,"toolbar=no,status=no,directories=no,menubar=no,resizable=no,width="+x+",height="+y+",scrollbars="+isscrollbars+",top="+cy+",left="+cx);
}

function ShowImg(ImgPath, x, y)
{
	cx = screen.width/2 - x/2;
	cy = screen.height/2 - y/2;

	var w = window.open("","pirz_guestbook","toolbar=no,status=no,directories=no,menubar=no,resizable=no,width="+x+",height="+y+",scrollbars=no,top="+cy+",left="+cx);
	var d = w.document;
	d.open();
	d.write('<html><head><link rel="stylesheet" type="text/css" href="/admin/css/style.css"></head>');
	d.write('<body><img src = "' + ImgPath + '"</body></html>');
	d.close();
}

function autofocus(field, limit, next, evt)
{
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ?
	evt.keyCode : ((evt.which) ? evt.which : 0));
	if (charCode > 31 && field.value.length == limit)
	{
		field.form.elements[next].focus();
	}
}

function close_alert()
{
	document.getElementById('alert_shadow').style.visibility = "hidden";
	document.getElementById('alert_message').style.visibility = "hidden";
}

function close_div(div_id)
{
	document.getElementById(div_id).style.visibility = "hidden";
}

function editcomment(textarea) {
	textarea.className += ' active';
	return false;
}
function savecomment(textarea, id) {
	textarea.className = textarea.className.replace(' active', '');
	textarea.title = textarea.value;
	if (xajax_changecomment(textarea.value, id)) return false;
	else alert('ошибка!');
}

function checkForm(form) {
	// Заранее объявим необходимые переменные
	var el, // Сам элемент
	elName, // Имя элемента формы
	value, // Значение
	type,
	oneuser,
	oneuser2; // Атрибут type для input-ов
	// Массив списка ошибок, по дефолту пустой
	var errorList = [];
	// Хэш с текстом ошибок (ключ - ID ошибки)
	var errorText = {
		1 : "Не указано время начала полиса",
		2 : "Не указана дата рождения",
		3 : "Не указана cтраховая сумма по основному риску",
		4 : "Не указана cтраховая сумма по риску 'Смерть от несчастного случая'",
		5 : "Не указана cтраховая сумма по риску 'Инвалидность 1-ой группы'",
		6 : "Не указана cтраховая сумма по риску 'Инвалидность 2-ой группы'",
		7 : "Не указана cтраховая сумма по риску 'Критические заболевания'",
		8 : "Не указана cтраховая сумма по риску 'Частичная нетрудоспособность'",
		9 : "Не указана cраховая сумма по риску 'Временная нетрудоспособность'",
		10 : "Не указана фамилия Страхователя",
		11 : "Не указано имя Страхователя",
		12 : "Не указано отчество Страхователя",
		13 : "Не указан пол Страхователя",
		14 : "Не указано семейное положение Страхователя",
		15 : "Не указана дата рождения Страхователя",
		16 : "Не указан адрес регистрации Страхователя",
		17 : "Не указан адрес фактического проживания Страхователя",
		18 : "Не указана серия паспорта Страхователя",
		19 : "Не указан номер паспорта Страхователя",
		20 : "Не указано кем выдан паспорт Страхователя",
		21 : "Не указана дата выдачи паспорта Страхователя",
		22 : "Не указано место работы Страхователя",
		23 : "Не указана должность Страхователя",
		24 : "Не указан фактический адрес организации Страхователя",
		25 : "Не указаны контактные телефоны Страхователя",
		26 : "Не указан контактный e-mail Страхователя",
		27 : "Не указана фамилия застрахованного",
		28 : "Не указано имя застрахованного",
		29 : "Не указано отчество застрахованного",
		30 : "Не указан пол застрахованного",
		31 : "Не указано семейное положение застрахованного",
		32 : "Не указана дата рождения застрахованного",
		33 : "Не указан адрес регистрации застрахованного",
		34 : "Не указан адрес фактического проживания застрахованного",
		35 : "Не указана серия паспорта застрахованного",
		36 : "Не указан номер паспорта застрахованного",
		37 : "Не указано кем выдан паспорт застрахованного",
		38 : "Не указана дата выдачи паспорта застрахованного",
		39 : "Не указано место работы застрахованного",
		40 : "Не указана должность застрахованного",
		41 : "Не указан фактический адрес организации застрахованного",
		42 : "Не указаны контактные телефоны застрахованного",
		43 : "Не указан контактный e-mail застрахованного",
		44 : "Не указана фамилия Выгодоприобретателя",
		45 : "Не указано имя Выгодоприобретателя",
		46 : "Не указано отчество Выгодоприобретателя",
		47 : "Не указан пол Выгодоприобретателя",
		48 : "Не указано семейное положение Выгодоприобретателя",
		49 : "Не указана дата рождения Выгодоприобретателя",
		50 : "Не указан адрес регистрации Выгодоприобретателя",
		51 : "Не указан адрес фактического проживания Выгодоприобретателя",
		52 : "Не указана серия паспорта Выгодоприобретателя",
		53 : "Не указан номер паспорта Выгодоприобретателя",
		54 : "Не указано кем выдан паспорт Выгодоприобретателя",
		55 : "Не указана дата выдачи паспорта Выгодоприобретателя",
		56 : "Не указано место работы Выгодоприобретателя",
		57 : "Не указана должность Выгодоприобретателя",
		58 : "Не указан фактический адрес организации Выгодоприобретателя",
		59 : "Не указаны контактные телефоны Выгодоприобретателя",
		60 : "Не указан контактный e-mail Выгодоприобретателя",
		61 : "Необходимо согласиться со всеми условиями"
	};
	// Получаем семейство всех элементов формы
	// Проходимся по ним в цикле
	for (var i = 0; i < form.elements.length; i++) {
		el = form.elements[i];
		elName = el.nodeName.toLowerCase();
		value = el.value;
		if (elName == "input") { // INPUT
			type = el.type.toLowerCase();
			switch (type) {
				case "checkbox" :
				switch (el.name) {
					case "oneuser": if (el.checked) oneuser = true;
					case "oneuser2": if (el.checked) oneuser2 = true;
				}
				break;
			}
		}
	}
	for (var i = 0; i < form.elements.length; i++) {
		el = form.elements[i];
		elName = el.nodeName.toLowerCase();
		value = el.value;
		if (elName == "input") { // INPUT
			// Определяем тип input-а
			type = el.type.toLowerCase();
			// Разбираем все инпуты по типам и обрабатываем содержимое
			switch (type) {
				case "text" :

				if (!el.disabled && (isEmpty(value) || value == "0" )) {
					switch (el.name) {
						case "step1_date_begin": errorList.push(1);break;
						case "step1_date_birth": errorList.push(2);break;
						case "step1_sum": errorList.push(3);break;
						case "ad": errorList.push(4);break;
						case "dis1_value": errorList.push(5);break;
						case "dis2_value": errorList.push(6);break;
						case "crit_illness_value": errorList.push(7);break;
						case "dismemberment_value": errorList.push(8);break;
						case "temp_disability_value": errorList.push(9);break;
						case "step2_user_f": errorList.push(10);break;
						case "step2_user_i": errorList.push(11);break;
						case "step2_user_o": errorList.push(12);break;
						case "step2_sex": errorList.push(13);break;
						case "step2_family": errorList.push(14);break;
						case "step2_date_birth": errorList.push(15);break;
						case "step2_user_address": errorList.push(16);break;
						case "step2_user_faddress": errorList.push(17);break;
						case "step2_user_passport_s": errorList.push(18);break;
						case "step2_user_passport_n": errorList.push(19);break;
						case "step2_user_passport_pl": errorList.push(20);break;
						case "step2_passport_date": errorList.push(21);break;
						case "step2_user_work_pl": errorList.push(22);break;
						case "step2_user_work_pos": errorList.push(23);break;
						case "step2_user_work_address": errorList.push(24);break;
						case "step2_user_phones": errorList.push(25);break;
						case "step2_user_email": errorList.push(26);break;
						case "step2_user2_f": if (!oneuser) errorList.push(27);break;
						case "step2_user2_i": if (!oneuser) errorList.push(28);break;
						case "step2_user2_o": if (!oneuser) errorList.push(29);break;
						case "step2_sex2": if (!oneuser) errorList.push(30);break;
						case "step2_family2": if (!oneuser) errorList.push(31);break;
						case "step2_date_birth2": if (!oneuser) errorList.push(32);break;
						case "step2_user_address2": if (!oneuser) errorList.push(33);break;
						case "step2_user_faddress2": if (!oneuser) errorList.push(34);break;
						case "step2_user_passport_s2": if (!oneuser) errorList.push(35);break;
						case "step2_user_passport_n2": if (!oneuser) errorList.push(36);break;
						case "step2_user_passport_pl2": if (!oneuser) errorList.push(37);break;
						case "step2_passport_date2": if (!oneuser) errorList.push(38);break;
						case "step2_user_work_pl2": if (!oneuser) errorList.push(39);break;
						case "step2_user_work_pos2": if (!oneuser) errorList.push(40);break;
						case "step2_user_work_address2": if (!oneuser) errorList.push(41);break;
						case "step2_user_phones2": if (!oneuser) errorList.push(42);break;
						case "step2_user_email2": if (!oneuser) errorList.push(43);break;
						case "step2_user3_f": if (!oneuser2) errorList.push(44);break;
						case "step2_user3_i": if (!oneuser2) errorList.push(45);break;
						case "step2_user3_o": if (!oneuser2) errorList.push(46);break;
						case "step2_sex3": if (!oneuser2) errorList.push(47);break;
						case "step2_family3": if (!oneuser2) errorList.push(48);break;
						case "step2_date_birth3": if (!oneuser2) errorList.push(49);break;
						case "step2_user_address3": if (!oneuser2) errorList.push(50);break;
						case "step2_user_faddress3": if (!oneuser2) errorList.push(51);break;
						case "step2_user_passport_s3": if (!oneuser2) errorList.push(52);break;
						case "step2_user_passport_n3": if (!oneuser2) errorList.push(53);break;
						case "step2_user_passport_pl3": if (!oneuser2) errorList.push(54);break;
						case "step2_passport_date3": if (!oneuser2) errorList.push(55);break;
						case "step2_user_work_pl3": if (!oneuser2) errorList.push(56);break;
						case "step2_user_work_pos3": if (!oneuser2) errorList.push(57);break;
						case "step2_user_work_address3": if (!oneuser2) errorList.push(58);break;
						case "step2_user_phones3": if (!oneuser2) errorList.push(59);break;
						case "step2_user_email3": if (!oneuser2) errorList.push(60);break;
					}
				}
				break;
				case "file" :
				break;
				case "checkbox" :
				if (!el.checked)
				switch (el.name) {
					case "nosuffer":;
					case "nopsychoneurologic":;
					case "notreatment":;
					case "nohivoraids":;
					case "nodependence":;
					case "noinvalid": errorList.push(61);break;
				}

				// Ничего не делаем, хотя можем
				break;
				case "radio" :
				// Ничего не делаем, хотя можем
				break;
				default :
				// Сюда попадают input-ы, которые не требуют обработки
				// type = hidden, submit, button, image
				break;
			}
		} else if (elName == "textarea") { // TEXTAREA
		} else if (elName == "select") { // SELECT
		} else {
			// Обнаружен неизвестный элемент ;)
		}
	}
	// Финальная стадия
	// Если массив ошибок пуст - возвращаем true
	if (!errorList.length) return true;
	// Если есть ошибки - формируем сообщение, выовдим alert
	// и возвращаем false
	var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
	for (i = 0; i < errorList.length; i++) {
		errorMsg += errorText[errorList[i]] + "\n";
	}
	alert(errorMsg);
	return false;
}

// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
	dFilterMask = replace(dFilterMask,'#','');
	for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
	{
		dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	}
	return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
	dFilterTemp = dFilterMask;
	for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
	{
		if (dFilterMask.charAt(dFilterStep)!='#')
		{
			dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
		}
	}
	return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{
	dFilterNum = dFilterStrip(textbox.value, dFilterMask);

	if (key==9)
	{
		return true;
	}
	else if (key==8&&dFilterNum.length!=0)
	{
		dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
	}
	else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
	{
		dFilterNum=dFilterNum+String.fromCharCode(key);
	}

	var dFilterFinal='';
	for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
	{
		if (dFilterMask.charAt(dFilterStep)=='#')
		{
			if (dFilterNum.length!=0)
			{
				dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
				dFilterNum = dFilterNum.substring(1,dFilterNum.length);
			}
			else
			{
				dFilterFinal = dFilterFinal + "";
			}
		}
		else if (dFilterMask.charAt(dFilterStep)!='#')
		{
			dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);
		}
		//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	}


	textbox.value = dFilterFinal;
	return false;
}

function replace(fullString,text,by) {
	// Replaces text with by in string
	var strLength = fullString.length, txtLength = text.length;
	if ((strLength == 0) || (txtLength == 0)) return fullString;

	var i = fullString.indexOf(text);
	if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
	if (i == -1) return fullString;

	var newstr = fullString.substring(0,i) + by;

	if (i+txtLength < strLength)
	newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

	return newstr;
}

function isEmpty(str) {
	for (var i = 0; i < str.length; i++)
	if (" " != str.charAt(i))
	return false;
	return true;
}
