function initValidation(){
	var areas = document.body.getElementsByTagName("textarea");
	for(var i=0;i<areas.length; i++){
		var maxlength = (areas[i].getAttribute("maxlength")) ? areas[i].getAttribute("maxlength") : areas[i].getAttribute("tabindex");
		if(areas[i].id && maxlength){
			areas[i].onkeypress=checklength;
			areas[i].onkeydown = checklength;
			areas[i].onkeyup = checklength;
			areas[i].onfocus = checklength;
			areas[i].onblur = hidebaloon;
			areas[i].oncontextmenu = function(){return false};
			areas[i].onmousedown = preventcontextmenu;
			areas[i].onmouseup = preventcontextmenu;
			areas[i].onclick = preventcontextmenu;
			var infobox = document.createElement("div");
			infobox.id = areas[i].id+"_infobox";
			infobox.style.padding="1px";
			infobox.style.cursor="default";
			infobox.style.display="none";
			infobox.style.textAlign="left";
			areas[i].parentNode.insertBefore(infobox, areas[i].nextSibling);
		}
	}
}

function checklength(event){
	var control = null;
	var maxlength = null;
	if(event){	// Not IE
		control = event.target;
	}
	else{	// IE
		event = window.event;
		control = event.srcElement
	}
	maxlength = (control.maxlength) ? control.maxlength : control.tabIndex;
	if(control && maxlength){
		if(control.value.length >= maxlength){
			if(control.value.length > maxlength)
				control.value = control.value.substring(0,maxlength);
			showbaloon(null, control);
			if(event.keyCode!= 8 && event.keyCode != 46 && (event.keyCode<34 || event.keyCode>40)){
				try{
					event.returnValue=false;
					event.cancelBuble = true;
					event.preventDefault();
				}catch(error){}
				return false;
			}
		}
		showbaloon(null, control);
	}
}

function preventcontextmenu(event){
	if(event){	// Not IE
		control = event.target;
	}
	else{	// IE
		event = window.event;
		control = event.srcElement
	}
	if(event.button == 2){
		try{
			event.returnValue=false;
			event.cancelBuble = true;
			event.preventDefault()
		}catch(error){}
		return false;
	}
}

function showbaloon(event, control){
/*
var maxlength = null;
	if(event){	// Not IE
		control = event.target;
	}
	else if(window.event){	// IE
		event = window.event;
		control = event.srcElement
	}
	if(control){
		maxlength = (control.maxlength) ? control.maxlength : control.tabIndex;
		if(maxlength){
			var infobox = document.getElementById(control.id+"_infobox");
			infobox.style.display = "block";
			infobox.innerHTML= "осталось символов:" + (maxlength - control.value.length);
		}
	}
	*/
}

function hidebaloon(event){
/*
var control = null;
	var maxlength = null;
	if(event){	// Not IE
		control = event.target;
	}
	else{	// IE
		event = window.event;
		control = event.srcElement
	}
	if(control){
		maxlength = (control.maxlength) ? control.maxlength : control.tabIndex;
		if(control.value.length > maxlength)
			control.value = control.value.substring(0,maxlength);
		var infobox = document.getElementById(control.id+"_infobox");
		if(infobox)
			infobox.style.display = "none";
	}
	*/
}

function changeDelegatesNumber(controlName){
	var control = document.getElementById(controlName);
	if(control){
		var number = parseInt(control.options[control.selectedIndex].value);
		for(i=1; i<=number; i++)
			document.getElementById("delegate"+i).style.display = "block";
		for(i=number+1; i<6; i++)
			document.getElementById("delegate"+i).style.display = "none";
	}
}

function EmptyValidator(control, errmsg){
	if(control.value == ""){
		control.className = "errorField";
		try{
			var infobox = document.getElementById(control.name+"Error");
			if(!infobox){
				infobox = document.createElement("div");
				control.parentNode.insertBefore(infobox, control.nextSibling);
			}
			infobox.id = control.name+"Error";
			infobox.className = "errorText";
			infobox.style.display="block";
			infobox.innerHTML=errmsg;
		}
		catch(e){}
	}
	else{
		control.className = "";
		var infobox = document.getElementById(control.name+"Error");
		if(infobox){
			infobox.style.display="none";
			infobox.innerHTML="";
		}
	}
}

function RegexValidator(control, pattern, errmsg){
	if(pattern.length>0){
		try{
			var regex=new RegExp(pattern, "i")
			result = regex.test(control.value);
		}
		catch(error){
			result = error.description;
		}
		if(!result){
			control.className = "errorField";
			var infobox = document.getElementById(control.name+"Error");
			if(!infobox){
				infobox = document.createElement("div");
				control.parentNode.insertBefore(infobox, control.nextSibling);
			}
			infobox.id = control.name+"Error";
			infobox.className = "errorText";
			infobox.style.display="block";
			infobox.innerHTML=errmsg;
		}
		else{
			control.className = "";
			var infobox = document.getElementById(control.name+"Error");
			if(infobox){
				infobox.style.display="none";
				infobox.innerHTML="";
			}
		}
	}
}

function EmptyCheckboxGroupValidator(control, errmsg){
	var elements = control.form.elements;
	for(var i =0; i< elements.length;i++){
		if(elements[i].type=="checkbox" && elements[i].name==control.name && elements[i].checked){
			try{document.getElementById(control.name+"Group").className = ""}catch(e){}
			var infobox = document.getElementById(control.name+"Error");
			if(infobox){
				infobox.style.display="none";
				infobox.innerHTML="";
			}
			return;
		}
	}
	try{document.getElementById(control.name+"Group").className = "errorField"}catch(e){}
	try{
		var infobox = document.getElementById(control.name+"Error");
		if(infobox){
			infobox.id = control.name+"Error";
			infobox.className = "errorText";
			infobox.style.display="block";
			infobox.innerHTML=errmsg;
		}
	}
	catch(e){}
}


