///////////////////////////////////////////////////////////

// Назначить цвет
function SetColor(strTextConteinerTD,strParamName,strNewColor)
{
	document.getElementById(strTextConteinerTD).style.backgroundColor=strNewColor;
	document.getElementById(strParamName).value=strNewColor;
}

// Выбор цвета с помощью диалога
function SetupSetColor(strTextConteinerTD,strParamName,strOldColor)
{
	strOldColor = strOldColor.replace('#','');
  s=window.showModalDialog('color_table.php?old_color='+strOldColor, null, 'dialogWidth:200px; dialogHeight:298px; status:no; help:no; center:Yes; scrollbar:no;');
  if(s) SetColor(strTextConteinerTD,strParamName,s);
}
///////////////////////////////////////////////////////////
	function ShowImage(id,width,height)
	{
		var intCurTop=(document.body.scrollTop)?document.body.scrollTop:document.documentElement.scrollTop;
		document.getElementById("zoom_frame").style.top=intCurTop+10+'px';
		document.getElementById("zoom_frame").src = '/img.php?id_image='+id;
		document.getElementById("zoom_frame").style.width = width+32+'px';
		document.getElementById("zoom_frame").style.height = height+92+'px';
		document.getElementById("zoom_frame").style.left = (document.body.clientWidth/2)-(width/2)+'px';
		document.getElementById("zoom_frame").style.visibility = '';
		//document.getElementById("imgTag").style.width = document.body.clientWidth;
		//document.getElementById("imgTag").style.height = document.body.clientHeight;
		// onresize="history.go(0)"
		//	width:633px;
		//	height:494px;

		return false;
	}
///////////////////////////////////////////////////////////

	$(document).ready(function() {
		$("img.z").click(function() {ImgZoom($(this));});
	});

	function ImgZoom(imgUrl){
		document.images.zoom.src=imgUrl;
		var intCurTop=(document.body.scrollTop)?document.body.scrollTop:document.documentElement.scrollTop;
		document.getElementById("img_zoom").style.posTop=intCurTop+10;
		document.getElementById("img_zoom").style.visibility='visible';
	}

	function CloseZoom(){
		document.getElementById("img_zoom").style.visibility='hidden';
	}
///////////////////////////////////////////////////////////

// Проверить корректность ввода телефонного номера
function IsPhoneCorrect(item){
	if(item.value.length<7){
		alert("Номер телефона не может состоять менее, чем из 10 знаков.");
		item.focus();
		return false;
	}
	var NumStr="0123456789-+ ()";
	for(var i=0;i<item.value.length;i++){
		if(NumStr.indexOf(item.value.substring(i,i+1))==-1){
			alert("Номер телефона может состоять только из следующих символов: "+NumStr);
			item.focus();
			return false;
		}
	}
	if(item.value.charAt(0)=='-'){
		alert("Номер телефона должен начинаться с цифры или скобки.");
		item.focus();
		return false;
	}
	if(item.value.charAt(item.value.length-1)=='-'){
		alert("Номер телефона должен заканчиваться цифрой.");
		item.focus();
		return false;
	}
	if(item.value.indexOf("  ")!=-1){
		alert("Номер телефона не может содержать два пробела подряд.");
		item.focus();
		return false;
	}
	if(item.value.indexOf("--")!=-1){
		alert("Номер телефона не может содержать два тире подряд.");
		item.focus();
		return false;
	}
	return true;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

// Проверить, что почтовый адрес
function IsEmail(item){
  if(item.value.indexOf('@', 0) > 0 && item.value.indexOf('.', 0) >0) return true;
//	if (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(item.value) return true;
  alert("Неверно введен адрес E-mail.");
  item.focus();
  return false;
}

// Проверка на дублирование имени файла для этого уровня
function CheckDouble(field,names){
	for(var i=0;i<names.length;i++){
		if(field.value==names[i]){
			alert("Ошибка!\nИмя файла \""+field.value+"\" на этом уровне уже используется!\nНеобходимо выбрать другое имя.");
			field.value="";
			field.focus();
			return true;
		}
	}
	return false;
}

// Проверка на дублирование имени Категории
function CheckDouble2(field,names){
	for(var i=0;i<names.length;i++){
		if(field.value==names[i]){
			alert("Ошибка!\nКатегория \""+field.value+"\" уже существует!\nНеобходимо выбрать другое имя.");
			field.value="";
			field.focus();
			return true;
		}
	}
	return false;
}

// Открытие нового окна
function NewWindow(url,width,height,left,top,win_name)
{
  myWin= open(url, win_name, "width="+width+", height="+height+", left="+left+", top="+top+",toolbar=no,scrollbars=yes,menubar=no,resizable=no");
  myWin.focus();  
}

// Создание окна с увеличенной картинкой
function Resize(strFileName, intWidth, intHeight, strCaption)
{
	intWidth+=2;
	intHeight+=2;

	// Закрыли окно, если оно уже было открыто
	try{myWin.close();}	catch(err){}

  myWin= open("", 'WinName', "width="+intWidth+",height="+intHeight+",left=0, top=0,status=no,toolbar=no,menubar=no,resizable=no");

  // открыть объект document для последующей печати
  myWin.document.open();

  if(strCaption=='') strCaption='';

  // генерировать новый документ
  myWin.document.write('<html><head><title>'+strCaption+'</title></head><BODY TITLE="Закрыть" style="cursor:hand" onmouseup="javascript: window.close()" TOPMARGIN="0" LEFTMARGIN="0"><TABLE WIDTH="100%" HEIGHT="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" VALIGN="MIDDLE"><TR><TD ALIGN="CENTER"><img title="Закрыть" BORDER="1" STYLE="border-color:#3862A9; cursor:pointer;" src="'+strFileName+'"></TD></TR></TABLE></body></html>');

  // закрыть документ - (но не окно!)
  myWin.document.close();  
  myWin.focus();  
}

	// Проверить, что все - цифры
	function IsNumber(item, msg){
	  var NumStr="0123456789,.";
	  for(var i=0;i<item.value.length;i++){
	    if(NumStr.indexOf(item.value.substring(i,i+1))==-1){
				if(msg)alert(msg);
		  	else alert("В это поле можно вводить только цифры!");
	      item.value='0';
	      item.focus();
	      return false;}}
	  return true;
	}

	// Проверить, что все - цифры
	function IsNumber2(item){
	  var NumStr="0123456789";
	  for(var i=0;i<item.value.length;i++){
	    if(NumStr.indexOf(item.value.substring(i,i+1))==-1){
	      alert("В это поле можно вводить только цифры!");
	      item.value='0';
	      item.focus();
	      return false;}}
	  return true;
	}

// Проверить, что все введённые символы корректны
function IsSybmols(item,symbols){
  for(var i=0;i<item.value.length;i++){
    if(symbols.indexOf(item.value.substring(i,i+1))==-1){
      alert("В это поле можно вводить только следующие символы:\n"+symbols);
			if(UNDO[item.id]) item.value=UNDO[item.id];
			else item.value='';
      item.focus();
      return false;}}
	  return true;
}

	// Проверить, что все введённые символы корректны
	function IsSybmols2(item,symbols){
	  for(var i=0;i<item.value.length;i++){
	    if(symbols.indexOf(item.value.substring(i,i+1))==-1){
	      alert("В это поле можно вводить только следующие символы:\n"+symbols);
	      item.value='';
	      item.focus();
	      return false;}}
	  return true;
	}

	// Проверить, что не пустой
	function IsEmpty(item, msg){
	  if(item.value.length>0){
	    if(item.value.substring(0,1)!=" "){
	      return false;}}
		if(msg)alert(msg);
	  else alert("Это поле заполняется обязательно.");
	  item.focus(); 
	  return true;
	}

	// Проверить, что не пустой и что все - цифры
	function CheckAll2(item){
	  if(!IsEmpty(item)) return false;
	  return IsNumber(item);
	}

	// Проверить, что не пустой и что все - цифры
	function CheckAll(item,pole){
	  if(pole){
	  	if(IsEmpty(item, "Поле \""+pole+"\" заполняется обязательно.")) return false;
	  	return IsNumber(item,"В поле \""+pole+"\" можно вводить только число!");
	  }else{
	  	if(IsEmpty(item)) return false;
		  return IsNumber(item);
		}
	}

	// Проверить, что в пределах
	function IsRange(item,pole,min,max){
	  if((item.value>=min)&&(item.value<=max))return true;
	  alert("Значение поля \""+pole+"\" должно быть в пределах: "+min+"-"+max+".");
	  item.focus(); 
	  return false;
	}

	// onSubmit="return EditMessage(\'\')"
	function EditMessage(msg)
	{
		return(confirm(msg));
	}

// Массив для UNDO
var UNDO = Array();

// Создать "откат"
function CreateUndo(item){
	if(!item.id)item.id='id'+Math.random();
	UNDO[item.id]=item.value;
}

	// Поставить\Снять ВСЕ галки с массива (имя_формы, имя_массива[], true|false)
	function setCheckboxes(the_form, name_check, do_check)
	{
	    var elts      = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined')
	                  ? document.forms[the_form].elements['selected_db[]']
	                  : document.forms[the_form].elements[name_check];
	    var elts_cnt  = (typeof(elts.length) != 'undefined')
	                  ? elts.length
	                  : 0;

	    if (elts_cnt) {
	        for (var i = 0; i < elts_cnt; i++) {
	            elts[i].checked = do_check;
	        } // end for
	    } else {
	        elts.checked        = do_check;
	    } // end if... else

	    return true;
	} // end of the 'setCheckboxes()' function

// Скрыть/показать выбранные элементы(ID - через запятую без пробелов!)
function ShowHideElements(strID,show){
//	if(!strID) return;
	var arID = Array();
	arID = strID.split(',');
  for(i=0;i<arID.length;i++){
		document.getElementById(arID[i]).style.display=(show)?'':'none';
	}
}

// Скрыть/показать выбранные элементы(ID - через запятую без пробелов!)
function CounterChange(id,step,min){
	// Взяли элемент
	var element = document.getElementById(id);
	if(!element) return 0;
	step = step * 1;
	min = min * 1;
	if(isNaN(element.value)) element.value = 0;
	var value = element.value * 1 + step;
	if(value >= min) element.value = value;
	return element.value;
}

// Показать/Скрыть блок
function ShowHideMoreText(objLink,id)
{
	objLink.blur();
	var objDiv = document.getElementById(id);

	// Если class "правильный"
	if(objDiv.className.indexOf('moretext', 0))
	//if(objDiv.className == 'moretext')
	{
		if(objDiv.style.display == 'block')
		{
			objDiv.style.display = 'none';
			objLink.innerHTML = '<NODR>показать все - &gt;</NODR>';
		}
		else
		{
			objDiv.style.display = 'block';
			objLink.innerHTML = '<NODR>&lt; - скрыть</NODR>';
		}
	}
	return false;
}

// Изменить высоту визуального редактора
function ResizeEditorFrame(id,num,id_show)
{
	document.getElementById(id).style.height=document.getElementById(id).style.height.replace('px','')*1+num+'px';
	document.getElementById(id_show).innerHTML = 'Высота окна редактора: '+document.getElementById(id).style.height;
}

// Показать в формате 0,00
function ToRubli(val, N)
{
	if(!N) N = 2;
  var tmpNumStr = '1';
  for(i=0;i<N;i++) tmpNumStr += '0';
  return number_format(val/parseInt(tmpNumStr), N, ',', ' ');
}

// Показать в формате 0,00
function ToRubli2(val)
{
	val = val/100;
	val = val+'';
	val = val.replace('.',',');
	// Ищем запятую
	n = val.indexOf(',');
	// Если нет, тогда пишем в конец ",00"
	if(n==-1) return val+',00';
	// Если предпоследний, тогда пишем в конец "0"
	if(n==val.length-2) return val+'0';
	// Если всё хорошо, возвращаем, что есть
	return val;
}

// Аналог  PHP-функции number_format()
function number_format( number, decimals, dec_point, thousands_sep )
{	// Format a number with grouped thousands
	// 
	// +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +	 bugfix by: Michael White (http://crestidg.com)

	var i, j, kw, kd, km, minus = "";

	if(number < 0)
	{
		minus = "-";
		number = number*-1;
	}

	// input sanitation &amp; defaults
	if( isNaN(decimals = Math.abs(decimals)) )
	{
		decimals = 2;
	}
	if( dec_point == undefined )
	{
		dec_point = ",";
	}
	if( thousands_sep == undefined )
	{
		thousands_sep = ".";
	}

	i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

	if( (j = i.length) > 3 )
	{
		j = j % 3;
	}
	else
	{
		j = 0;
	}

	km = (j ? i.substr(0, j) + thousands_sep : "");
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
	//kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");

	return minus + km + kw + kd;
}
/* Функция isValidEmail принимает один или 2 аргумента:
email - электронный адрес для проверки;
strict - необязательный логический параметр (true/false), который 
определяет строгую проверку при которой пробелы до и после адреса 
считаются ошибкой

В качестве результата функция возвращает либо true, либо false
*/

function isValidEmail(email, strict)
{
	if ( !strict ) email = email.replace(/^\s+|\s+$/g, '');
	return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

// Определить координаты Элемента на странице
function GetElementPosition(id)
{
	var elem = document.getElementById(id);
	var w = elem.offsetWidth;
	var h = elem.offsetHeight;
	var l = 0;
	var t = 0;
	while (elem)
	{
		l += elem.offsetLeft;
		t += elem.offsetTop;
		elem = elem.offsetParent;
	}
	return {"left":l, "top":t, "width": w, "height":h};
}

function stripslashes(html)
{
	// Возвращаем полученное значение
	return html.replace('/\0/g', '0').replace('/\(.)/g', '$1');;
}

function htmlspecialchars(html)
{
	// Сначала необходимо заменить &
	html = html.replace(/&/g, "&amp;");
	// А затем всё остальное в любой последовательности
	html = html.replace(/</g, "&lt;");
	html = html.replace(/>/g, "&gt;");
	html = html.replace(/"/g, "&quot;");
	html = html.replace(/'/g, "&#039;");
	// Возвращаем полученное значение
	return html;
}

// Перевод из RGB в HEX
function getHexRGBColor(color)  
{
	color = color.replace(/\s/g,"");
	var aRGB = color.match(/^rgb\((\d{1,3}[%]?),(\d{1,3}[%]?),(\d{1,3}[%]?)\)$/i);
	if(aRGB)
	{
		color = '';
		for (var i=1;  i<=3; i++) color += Math.round((aRGB[i][aRGB[i].length-1]=="%"?2.55:1)*parseInt(aRGB[i])).toString(16).replace(/^(.)$/,'0$1');
	}
	else color = color.replace(/^#?([\da-f])([\da-f])([\da-f])$/i, '$1$1$2$2$3$3');
	return color;
}

