//------------------------------------------------------------------------------
// (C) 2002-2004 ООО "Стандартные технологии"
// название файла: /admin/sys/jslib/lib.js
// назначение файла: общая библиотека
// разработчик: 
// версия: 1.0
//------------------------------------------------------------------------------


/**
 * Синоним для str.replace
 */
function str_replace(str, rexp, what) {
	r = str.replace (rexp, what);
	return (r)

}

// dont_understand
function ReMove (str) {

	var r = str;

	var rexp =/((<\/?div[^>]*>)|.)/gi;
	var what = "$2";
	r = str_replace(r, rexp, what);

	var rexp =/<(\/?div)[^>]*id=_([^> ]+)[^>]*>/gi;
	var what = "<$1 id=\"$2\">";
	r = str_replace(r, rexp, what);

	r = r.toLowerCase();

	return (r);

}

/**
 * Ф-я проверяет значение формы what
 * и в случае нахождения пустого поля text или
 * textarea выдает предупреждение warning
 */
function checkForm (what, warning) {
	var coll = what.elements;
	var flag = false;
	for (i=0; i<coll.length; i++) {
		if (coll[i].type == "text" || coll[i].type == "textarea") {
			if (coll[i].value == "") {
				flag = true;
			}
		}
	}
	if (flag) {
		alert (warning);
		return false;
	}
	else {
		return true;
	}
}

/**
 * Ф-я проверяет значение формы what
 * и в случае нахождения поля text или
 * textarea осуществляет их проверку по
 * флагу required и параметру checktype
 */
function richCheckForm(what) {
	var coll = what.elements;
	var flag = false;
	for (i=0; i<coll.length; i++) {
		if (coll[i].type == "text" || coll[i].type == "textarea") {
			if ( document.getElementById(coll[i].id+'_required').value == 'true' ) {
				if ( coll[i].value == '' )	{
					flag = true;
					alert('Внимание! Не заполнено обязательное поле '+document.getElementById(coll[i].id+'_title').value+'!');
					coll[i].focus();
					break;
				}
			}
			if ( document.getElementById(coll[i].id+'_checktype').value == 'email' ) {
				if ( !/^([a-zA-Z0-9._-])+@([a-zA-Z0-9._-])+\.([a-zA-Z0-9._-])([a-zA-Z0-9._-])+/.exec(coll[i].value) ) {
					flag = true;
					alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' не похоже на настоящий адрес EMail!');
					coll[i].focus();
					break;
				}
			}
			if ( document.getElementById(coll[i].id+'_checktype').value == 'phonenumber' ) {
				if ( !/^\+?(?:\d|\s|(?:\(\d+\))|-)+$/.exec(coll[i].value) ) {
					flag = true;
					alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' не похоже на настоящий телефонный номер!');
					coll[i].focus();
					break;
				}
			}
			if ( document.getElementById(coll[i].id+'_checktype').value == 'number' ) {
				re = /^(\d+)(\.|,){0,1}(\d+)$/;
				if ( re.exec(coll[i].value) ) {
					coll[i].value = coll[i].value.replace(re, "$1.$3");
				} else {
					flag = true;
					alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' не похоже на числовое значение!');
					coll[i].focus();
					break;
				}
			}
			if ( document.getElementById(coll[i].id+'_checktype').value == 'date' ) {
				re = /^([0-9]{4})(\.|-)([0-9]{1,2})(\.|-)([0-9]{1,2})/;
				if ( re.exec(coll[i].value) ) {
					coll[i].value = coll[i].value.replace(re, "$1-$3-$5");
					dateList = coll[i].value.split('-');
					if ((Number(dateList[1]) < 1) || (Number(dateList[1]) > 12)) {
						flag = true;
						alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' содержит неверный месяц! Формат даты ГГГГ-ММ-ДД!');
						coll[i].focus();
						break;
					}
					if ((Number(dateList[2]) < 1) || (Number(dateList[2]) > 31)) {
						flag = true;
						alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' содержит неверный день! Формат даты ГГГГ-ММ-ДД!');
						coll[i].focus();
						break;
					}
				} else {
					flag = true;
					alert('Внимание! Поле '+document.getElementById(coll[i].id+'_title').value+' не похоже на дату! Формат даты ГГГГ-ММ-ДД!');
					coll[i].focus();
					break;
				}
			}
		}
	}
	if (flag) {
		return false;
	}
	else {
		return true;
	}
}


/**
 * Скрывает объект по id
 */
function hideObjects (id) {
	var coll = document.getElementById(id).children.tags("div");
	for (i=0; i<coll.length; i++) {
		coll[i].style.display = "none";
	}
}
	
/**
 * Отображает все теги div со start по end объекта id
 */
function showObjects (id, start, end) {
	var coll = document.getElementById(id).children.tags("div");
	if (start =="") {start = 0 }
	if (end == "") {end = coll.length }
		for (i=start; i<end; i++) {
			coll[i].style.display = "block";
		}
}

/**
 * Скрывает строку по id
 */
function hideRows (id) {
	var ref = document.getElementById(id).children.tags("table");
	var r = ref[0].rows;
	var coll = new Array ();
	for (i=0; i<(r.length-1); i++) {
		coll[i] = r[i+1];
	}
	for (i=0; i<coll.length; i++) {
		coll[i].style.display = "none";
	}
}

/**
 * Показывает строки со start по end объекта id
 */
function showRows (id, start, end) {
	var ref = document.getElementById(id).children.tags("table");
	var r = ref[0].rows;
	var coll = new Array ();
	for (i=0; i<(r.length-1); i++) {
		coll[i] = r[i+1];
	}
	if (start == "") {start = 0 }
	if (end == "") {end = coll.length }
	for (i=start; i<end; i++) {
		coll[i].style.display = "block";
	}
}

/**
 * Ф-я возвращает текущий год
 */
function displayYear() {
	var d = new Date();
	return (d.getFullYear());
}

// функция для запуска всплывающих окон с описанием
shown='';
function openWindows(page,id) {
	url='/'+page+'/'+id+'?popup=true';
	if( shown=='' || shown.closed) {
		shown=window.open(url,'openWindows','scrollbars=yes,status=no, high,width=600,height=400');
	}
	else{ 
		shown.close();
		shown=window.open(url,'openWindows','scrollbars=yes,status=no, high,width=600,height=400');
	}
}

function dump_properties(elm, not_null)
{
	if(typeof not_null == 'undefined')
		not_null=false;
	var str = '';
	for(prop in elm)
	{
		if(!not_null || not_null && elm[prop])
			str += prop + ' = ' + elm[prop] + '\n';
	}
	return str
}