function mytrim(str) {
	while (str.charAt(0)==' ' || str.charAt(0)=='\n' || str.charAt(0)=='\r') str=str.substring(1,str.length);
	while (str.charAt(str.length-1)==' ' || str.charAt(str.length-1)=='\n' || str.charAt(str.length-1)=='\r') str=str.substring(0,str.length-1);
	return str
}

function isDomain(x)
{
	var dChars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._-';
	var retVal=(x.indexOf('.')>-1) && (x.charAt(0)!='.') && (x.charAt(x.length-1)!='.') && (x.indexOf('..')==-1);
	for (var i=0;i<x.length;i++) retVal=retVal && (dChars.indexOf(x.charAt(i))>-1);
	return retVal
}

function isEmail(x)
{
	var atPos=x.indexOf('@')
	var retVal=(atPos>-1);
	if (retVal) retVal=isDomain(x.substring(0,atPos)+x.substring(atPos+1,x.length));
	return retVal
}

function isPort(x)
{
	var decDigits='0123456789';
	var retVal=x.length<6
	for (i=0;i<x.length;i++) retVal=retVal && decDigits.indexOf(x.charAt(i))>-1;
	return (retVal)?parseInt(x)<65536:false;
}

function isURL(x)
{
	var uChars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._-/~%?=&#"
	var retVal=x.indexOf("http://")==0
	if (retVal) {
		var domportpath=x.substring(7,x.length);
		var dom=domportpath;
		var port='80';
		var path='';
		if (domportpath.indexOf('/')>-1) {
			var domport=domportpath.substring(0,domportpath.indexOf('/'));
			if (domport.indexOf(':')>-1) {
				dom=domport.substring(0,domport.indexOf(':'));
				port=domport.substring(domport.indexOf(':')+1,domport.length);
			}else dom=domport;
			path=domportpath.substring(domportpath.indexOf('/')+1,domportpath.length);
		}
		for (i=0;i<path.length;i++) retVal=retVal && uChars.indexOf(path.charAt(i))>-1;
		retVal=retVal && isDomain(dom) && isPort(port)
	}
	return retVal
}

function isLogin(x) {
	var lChars='abcdefghijklmnopqrstuvwxyz0123456789-_';
	var retVal=x.length>2;
	for (i=0;i<x.length;i++) retVal=retVal && lChars.indexOf(x.charAt(i))>-1;
	return retVal
}

function isPassword(x) {
	var pChars='!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
	var retVal=x.length>4 && x.length<17;
	for (i=0;i<x.length;i++) retVal=retVal && pChars.indexOf(x.charAt(i))>-1;
	return retVal
}

function checkSelect(obj,txt) {
	if (obj.selectedIndex==0) {
		alert('Вы не выбрали '+txt+'!');
		obj.focus();
		return true
	}
	if (obj.options[obj.selectedIndex].value=='add') {
		return checkTxt(eval('obj.form.'+obj.name+'_add'),txt)
	} else return false
}

function checkRadio(obj,txt) {
	var retVal=true
	for (i=0;i<obj.length;i++) retVal=retVal && !obj[i].checked;
	if (retVal) {
		alert('Вы не указали '+txt+'!');
	}
	return retVal
}

function checkTxt(obj,txt) {
	if (mytrim(obj.value)=='') {
		alert('Вы не ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function checkNum(obj,txt,need) {
	if (((need)?mytrim(obj.value)=='':false) || isNaN(obj.value.replace(/,/g,'.'))) {
		alert('Вы неправильно ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function checkEmail(obj,txt) {
	if (!isEmail(obj.value)) {
		alert('Вы неправильно ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function checkURL(obj,txt) {
	if (!isURL(obj.value)) {
		alert('Вы неправильно ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function checkLogin(obj,txt) {
	if (!isLogin(obj.value)) {
		alert('Вы неправильно ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function checkPassword(obj,txt) {
	if (!isPassword(obj.value)) {
		alert('Вы неправильно ввели '+txt+'!');
		obj.focus();
		obj.select();
		return true
	} else return false
}

function ChangeColor(id)
{
	if(event.srcElement && mode)
	{
		elem = event.srcElement;
		changed_elem = document.getElementById(id);
		
		if(elem.type == "text" || elem.tagName == "TEXTAREA")
		{
			if(elem.value == elem.defaultValue && changed_elem.className == "change_text")
			{
				changed_elem.className = "";
				change--;
			}
			else if(elem.value != elem.defaultValue && changed_elem.className != "change_text")
			{				
				changed_elem.className = "change_text";
				change++;
			}
		}
		else if(elem.type == "checkbox" || elem.type == "radio")
		{
			if(elem.checked == elem.defaultChecked)
			{
				changed_elem.className = "";
				change--;
			}
			else
			{
				changed_elem.className = "change_text";
				change++;
			}
		}
		else if(elem.tagName == "SELECT")
		{
			if(elem.options(elem.selectedIndex).defaultSelected && changed_elem.className == "change_text")
			{
				changed_elem.className = "";
				change--;
			}
			else if(!elem.options(elem.selectedIndex).defaultSelected && changed_elem.className == "")
			{
				changed_elem.className = "change_text";
				change++;
			}
		}
	}
	else if(!mode) change = 1;
}

var change = 0;

function ChangeBgcolor(obj, del)
{
	if(obj.parentElement && obj)
	{
		elem = obj.parentElement;
		
		if(del) style_name = "del";
		else style_name = "hidden";
		
		if(obj.type == "text")
		{
			if(obj.value == obj.defaultValue && elem.className == style_name)
			{
				elem.className = "";
				change--;
			}
			else if(obj.value != obj.defaultValue && elem.className != style_name)
			{
				elem.className = style_name;
				change++;
			}
		}
		else
		{
			if(obj.checked == obj.defaultChecked)
			{
				elem.className = "";
				change--;
			}
			else
			{
				elem.className = style_name;
				change++;
			}
		}
	}
}

function ChangeBgcolorHidden(id)
{
	if(document.getElementById && id)
	{
		elem = document.getElementById(id);
		if(elem.className == "hidden")
		{
			elem.className = "show";
		}
		else
		{
			elem.className = "hidden";
		}
		
		if(elem.className == elem.parentElement.className) change--;
		else change++;
	}
}

function ConfirmDel()
{
	if(change > 0)
	{
		if(confirm("Вы собираетесь внести изменения в базу данных.\nПри нажатии кнопки 'ОК' изменения будут сохранены")) return true;
		else return false;
	}
	else
	{
		alert("Вы не сделали никаких изменений");
		return false
	}
}

js = true;
