//------------------------------------------------------------------------------
// (C) 2002-2004 ООО "Стандартные технологии"
// название файла: /admin/system/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);

}

/* Функция выдаёт алерт с запросом e-mail */
var retrieve_pass_show = false;
function retrieve_pass() {
	if (!retrieve_pass_show)
		{
		document.getElementById('retrieve_pass').style.display='block';
		retrieve_pass_show = true;
		}
	else
		{
		document.getElementById('retrieve_pass').style.display='none';
		retrieve_pass_show = false;
		}	
}
function retrieve_pass_send(email) {
	if (email.length > 6)
		{ location.href = '/system/retrievepass.html?login=' + email; }
	else
		{ alert('Такого e-mail нет!'); }
}

/**
 * Ф-я проверяет значение формы 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;
	}
}

/* Функция проверяет правильность заполнения двух обязательных полей: имя и e-mail */
function checkUserRegistration(check_name,check_email) {
	var good = true;
	if (check_name.length < 4)
		{ alert('Вы не указали Ваше имя!'); good = false; }
	else if ( check_email.length < 5 )
		{ alert('Вы не указали Ваш e-mail адрес:\nпожалуйста, укажите правильный адрес,\nт.к. на него Вам будет выслано письмо!'); good = false; }
	else if ( !check_name.match(/^([a-zA-Z0-9а-яА-Я _-]*)$/) )
		{ alert('Вы указали неправильное имя:\nпожалуйста, используйте только русские или английские буквы!'); good = false; }
	else if ( !check_email.match(/^([a-zA-Z0-9]{1})([a-zA-Z0-9_.-]*)([a-zA-Z0-9]{1})@([a-zA-Z0-9.-]*)([a-zA-Z0-9]{1}).([a-zA-Z]{2,4})$/) )
		{ alert('Вы указали неправильный e-mail адрес:\nпожалуйста, укажите правильный адрес,\nт.к. на него Вам будет выслано письмо!'); good = false; }
	return good;
}
/* Функция проверяет правильность заполнения двух обязательных полей (имя и e-mail) для форм отправки заказа*/
function checkBuyForm(check_name,check_email,what) {
	/* *** */
	var coll = what.elements;
	var flag = false;
	for (i=0; i<coll.length; i++) {
		if (coll[i].type == "text" || coll[i].type == "textarea" || coll[i].type == "select-one" && document.getElementById(coll[i].id+'_required')) {
			if ( document.getElementById(coll[i].id+'_required') && 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();
					return false;
					break;
				}
			}
		}
	}
	/* *** */
	var good = true;
	if (check_name.length < 3)
		{ alert('Вы не указали Ваше имя!'); good = false; }
	else if ( check_email.length < 5 )
		{ alert('Вы не указали Ваш e-mail адрес:\nпожалуйста, укажите правильный адрес,\nт.к. на него Вам будет выслано письмо!'); good = false; }
	else if ( !check_name.match(/^([a-zA-Zа-яА-Я0-9 _-]*)$/) )
		{ alert('Вы указали неправильное имя:\nпожалуйста, используйте только английские буквы a-zA-Z и цифры!'); good = false; }
	else if ( !check_email.match(/^([a-zA-Z0-9]{1})([a-zA-Z0-9_.-]*)([a-zA-Z0-9]{1})@([a-zA-Z0-9.-]*)([a-zA-Z0-9]{1}).([a-zA-Z]{2,4})$/) )
		{ alert('Вы указали неправильный e-mail адрес:\nпожалуйста, укажите правильный адрес,\nт.к. на него Вам будет выслано письмо!'); good = false; }
	return good;
}


function richCheckRegForm(what) {
	var coll = what.elements;
	var flag = false;
	var cont = 'Содержимое формы:\n\n';
	for (i=0; i<coll.length; i++) {
		if (coll[i].type == "text" || coll[i].type == "textarea" || coll[i].type == "select-one" && document.getElementById(coll[i].id+'_required')) {
			if ( document.getElementById(coll[i].id+'_required') && 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') ) {
				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; }
}

/* AJAX: подгружает данные */
function loadPAGE(url,query,target) {
	var xmlHttp = null;
    if (window.XMLHttpRequest)
    	{ xmlHttp = new XMLHttpRequest(); }
    else {
		if (window.ActiveXObject)
			{ xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0'); }
	}
    xmlHttp.open("POST", url, false);
    xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlHttp.send(query);
    if (xmlHttp.readyState!=4 || xmlHttp.status!=200) { return false; }
    else {
    	if ( document.getElementById(target) )
    		{ document.getElementById(target).innerHTML = xmlHttp.responseText; }
    }
}

/**
 * Ф-я проверяет значение формы 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" || coll[i].type == "select-one" && document.getElementById(coll[i].id+'_required')) {
			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');
	}
}

/* Функция упрравляет показами баннеров на сайте | wh может быть adSite, adHeader и т.п. | id баннера должен быть вида: id="rbanner_ЧТО-УГОДНО" */
function siteRandomBanners (wh) {
//	var adSite = document.getElementById('adSite');
	var adSite = document.getElementById(wh);
	var banners = new Array();
	var priority = new Array();
	var j = 0;
	var priority_summ = 0;
	for (var i=0; i<adSite.childNodes.length; i++) {
//		if ( adSite.childNodes[i].name && adSite.childNodes[i].name == 'random_banner' ) { // не работает нигде, кроме как в IE
		if ( adSite.childNodes[i].id && adSite.childNodes[i].id.indexOf('rbanner_') > -1 ) { // работает везде
			banners[j] = adSite.childNodes[i].id;
			for (var k=0; k<document.getElementById(banners[j]).attributes.length; k++) {
				if ( document.getElementById(banners[j]).attributes[k].name == 'priority' ) {
					priority[j] = parseInt(document.getElementById(banners[j]).attributes[k].value);
					if (priority[j-1])
						{ priority[j] += priority[j-1]; }
					priority_summ += parseInt(document.getElementById(banners[j]).attributes[k].value);
				}
			}
			j++;
		}
	}
	var rnd = Math.random() * priority_summ;
	rnd = Math.ceil(rnd);
	var itog = banners[0];
	var debug = 'PrioritySumm: '+priority_summ+'\nRandom: '+rnd+'\n';
	for (i=0;i<banners.length;i++) {
		debug += banners[i]+' with priority='+priority[i]+'\n';
		if ( i == 0 ) {
			if ( rnd > 0 && rnd < priority[i]) { itog = banners[i]; break; }
		}
		else {
			if ( rnd > priority[i-1] && rnd < priority[i] ) { itog = banners[i]; break; }	
		}
	}
	debug += 'Result: '+itog;
	//alert( debug );
	if (document.getElementById(itog)) { document.getElementById(itog).style.display='block'; }
}
