

//скрывает все теги селкт в документе
function hideSelect()
{
	var sel_ar=document.body.getElementsByTagName("SELECT");
	for(i=0;i<sel_ar.length;i++)
		sel_ar[i].style.display="none";
}
function showSelect()
{
	var sel_ar=document.body.getElementsByTagName("SELECT");
	for(i=0;i<sel_ar.length;i++)
		sel_ar[i].style.display="";
}

//ставить фокус на объект
//input - или объект или id объекта
//form - название формы
function focusThis(input,form)
{
	var d=eval("document."+form);
	if(typeof(d)=="object")
	{
		var i=eval("document."+form+"."+input);
		if(typeof(i)=="object")
			i.focus();
	}
	else if(typeof(input)=="object")
		input.focus();
}


//ниче не проверял
function getCaretPosition(el)
{
	if (document.selection)
	{
		// IE
		var range = document.selection.createRange();
		range.moveStart('textedit', -1);
		return range.text.length;
	}
	else if (el.selectionStart)
	{
		// Gecko
		return el.selectionStart;
	}
	return el.value.length-1;
}

function setCaretPosition(el, pos)
{
	if (el.createTextRange)
	{
		// IE
		var range = el.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
	else if (el.selectionEnd)
	{
		// Gecko
		el.selectionEnd = pos;
	}
}


// русские заглавные буквы со 1040 до 1071
// русские малые буквы со 1072 до 1103

// латиница заглавные буквы со 65 до 90
// латиница малые буквы со 97 до 122

// цифры от 48 до 57

	
	function isIskl(iskl,this_char_code)
	{
		if(iskl.length)
		{
			for(var ii=0;ii<iskl.length;ii++)
			{
				iskl_code=iskl.charCodeAt(ii);
				if(this_char_code==iskl_code)
					return 1;
			}
		}
		return 0;
	}

	//проверена
	//iskl - строка с символами которые надо оставить
	function cleanFromBadChars(str,iskl)
	{
		var right_str="";
		var code;
		var iskl_code;
		if(!str.length)
			return "";
		for(var i=0;i<str.length;i++)
		{
			code=str.charCodeAt(i);
			if((code>=48 && code<=57)||(code>=1040 && code<=1103)||(code>=65 && code<=90)||(code>=97 && code<=122))
			  	right_str+=str.charAt(i);
			else
				if(isIskl(iskl,code))
					right_str+=str.charAt(i);
		}
		return right_str;
	}
	
	//проверена
	function cleanFromRussian(str)
	{
		var code;
		var right_str="";
		if(!str.length)
			return "";
		for (var i=0; i<str.length; i++)
		{
			code=str.charCodeAt(i);
			if (code<1040 || code>1103)
				right_str+=str.charAt(i);
		}
		return right_str;
	}
	
	//проверена
	function cleanFromLatin(str)
	{
		var right_str="";
		if(!str.length)
			return "";
		for (var i=0; i<str.length; i++)
		{
			code=str.charCodeAt(i);
			if (code<65 || code>122 || (code>90 && code<97))
				right_str+=str.charAt(i);
		}
		return right_str;
	}
	
	//проверена
	function cleanFromNumber(str)
	{
		var right_str="";
		var code;
		if (str.length == 0)
			return "";
		for (var i=0; i<str.length; i++)
		{
			code = str.charCodeAt(i);
			if (code<48 || code>57)
				right_str+=str.charAt(i);
		}
		return right_str;
	}
	
	//проверенна
	function cleanFromChar(str,iskl)
	{
		var rightStr="";
		var code;
		if (str.length == 0)
			return "";
		for (var i=0; i<str.length; i++)
		{
			code = str.charCodeAt(i);
			if (code >= 48 && code <= 57)// || (code >= 65 && code <= 90) || (code >= 97 && code <= 122))
				rightStr+=str.charAt(i);
			else
				if(isIskl(iskl,code))
					rightStr+=str.charAt(i);
		}
		return rightStr;
	}
	
	//проверена
	//избавляемся только от данного (bad_char) символа
	function cleanFromThisChar(str,bad_char)
	{
		var rightStr="";
		var code;
		var bad_code=bad_char.charCodeAt(0);
		if (str.length == 0)
			return "";
		for (var i=0; i<str.length; i++)
		{
			code = str.charCodeAt(i);
			if (code!=bad_code)
				rightStr+=str.charAt(i);
		}
		return rightStr;
	}
	

	//проверена
	//только цифры
	function onlyNumber(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromChar(o.value,"");
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	function onlyFloat(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromChar(o.value,".,");
		rightStr='';
		for (var i=0,flag=0; i<o.value.length; i++)
		{
			code = o.value.charCodeAt(i);
			if (code==44 || code==46)
			{
				if(!flag)
				{
					flag++;
					rightStr+='.';
				}
			}
			else
				rightStr+=o.value.charAt(i);
		}
		o.value=rightStr;
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена
	//только русские буквы
	function onlyRusLetter(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"");
		o.value=cleanFromNumber(o.value);
		o.value=cleanFromLatin(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена
	//только латиница
	function onlyLatinLetter(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"");
		o.value=cleanFromNumber(o.value);
		o.value=cleanFromRussian(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена
	//для русских имен,фамилий,отчеств
	function onlyRusName(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"-");
		o.value=cleanFromNumber(o.value);
		o.value=cleanFromLatin(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	//проверена
	//для латинских имен,фамилий,отчеств
	function onlyLatinName(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"-");
		o.value=cleanFromNumber(o.value);
		o.value=cleanFromRussian(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	//проверена
	//для смешанных имен
	function onlyName(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"-");
		o.value=cleanFromNumber(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена
	//для названий компаний и тд
	//допускаются символы @&*()_[]-+
	function onlyCName(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"@&*()_[]-+ ");
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена, только проблема с обозначением добавочного
	//только телефоны, можно через запятую
	function onlyTel(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"()-, ");
		o.value=cleanFromRussian(o.value);
		o.value=cleanFromLatin(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	//проверена
	//только email
	function onlyEmail(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"@_-.");
		o.value=cleanFromRussian(o.value);
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
	
	function onlyGood(o)
	{
		var lcaret=getCaretPosition(o);
		var llen=o.value.length;
		o.value=cleanFromBadChars(o.value,"+-,.!?()'\" ");
		var vlen=o.value.length;
		setCaretPosition(o,lcaret-(llen-vlen));
	}
