//---------------------------------------------
function FocusFirst(oForm)
{
	
	
	if("" + oForm == "unknown" || oForm == null ) return;
	for(var i=0; i < oForm.elements.length; i++)
	{
		
		if(oForm.elements[i].type.toLowerCase()!="hidden" && !oForm.elements[i].disabled) 
			{oForm.elements[i].focus(); return;}
		
	}
	
}

//---------------------------------
function FormatNumber(val)
{

    val = "" + val;
	var num = parseFloat(val.replace(",", "."))
	var sign = "";
	if(isNaN(num) || num == 0)
		{
			num = "0,00"
		}
	else
		{
			
			num = Math.round(num * 100);
			if(num<0) sign = "-";
			num = "" + Math.abs(num)

			num = "000".substr(0, 3-num.length) + num;
			num = sign + num.substr(0, num.length-2) + "," + num.substr(num.length-2);
		}
	return num;
}
//---------------------------------
function CalcCol(obj)
{
var name = obj.id;
var objects = document.all(name);
var sum = 0;
var num;

var oSum = document.all(name + "_sum");
if(objects != null)
	{
	if(""+objects.length!="undefined")
		{
			for (var i=0; i<objects.length; i++)
			{
				num = parseFloat(objects[i].value.replace(',','.'));
				if (!isNaN(num)) sum += num;
			}
		}
			else
		{
				num = parseFloat(objects.value.replace(',','.'));
				if (!isNaN(num)) sum += num;
		}
	}


if(oSum != null ) oSum.innerText = FormatNumber(sum);

}

//-----------------------------------
function GetValue(name)
{
	var obj = document.all(name);
	if(obj==null) return 0;
	num = parseFloat(obj.innerText.replace(",", "."));
	if(isNaN(num)) num = 0;
	return num;
}
//-----------------------------------
function SetValue(name, value)
{
	var obj = document.all(name);
	if(obj==null) return;
	obj.innerText = "" + value;
}
//-----------------------------------

function CalcOverall(Sections, obj)
{
var overall = 0;

for(var i=0; i <Sections.length; i++)
	{
		CalcSection = Sections[i];
		var num;
		oSum = document.all(CalcSection);
		if (oSum != null)
		{
			num = parseFloat(oSum.innerText.replace(",", "."))
			if (!isNaN(num))	overall += num;
			
		}
	}

 if(obj != null ) obj.innerText = FormatNumber(overall);

}

//-------------------------------------------------------
function KeyCheck(obj)
{
	if(event.keyCode!=13) return true;
	var objs = document.all(obj.id);
	if (objs==null) return true;
	for(var i=0; i<objs.length; i++)
	{
		if(objs[i]==obj) if("" + objs[i+1] != "undefined") objs[i+1].focus();
	}
	
}


//-------------------------------------------------------
function isFloat(obj, format)
{

		if((event.keyCode==13 || event.keyCode == 9 || event.keyCode == 189) && obj.value=="") return true;
//	alert(event.keyCode)
		var chrCode = event.keyCode;
		if (chrCode==110) chrCode = 46;
		if (chrCode > 90) chrCode = chrCode - 48;
		
		if(val=="-") return true;
		var val = obj.value.replace(",", ".") + String.fromCharCode(chrCode);

		if(format=="int") val = parseInt(val); else val = parseFloat(val);
		if (isNaN(val))  return false;
		return true;
}

//-------------------------------------------------
function Repair(obj, format)
{
		if(obj.value=='') 
		{
			obj.value = '0,00';
			return;
		}
		if(format=="int") 
		{	
			var val = parseInt(obj.value);
			if(isNaN(val)) val = 0;
			obj.value = val;
		}
		else obj.value = FormatNumber(obj.value)
		
}
//-------------------------------------------------
function FormatDate(i, delKey,direction) {
if(i.value=="") return;
  if (i.value.length < 10) {
  	if (delKey!=9) { //tab
	  	if(delKey!=8 && delKey!=46 && delKey!=16 &&  !(delKey>36 && delKey<41)){ //if the delete, backspace, shift, are not the keys that caused the keyup event.
  			var fieldLen = i.value.length
   			if ((delKey >= 48 && delKey <= 57) || (delKey >= 96 && delKey <=105)) {
   				if (fieldLen == 2 || fieldLen == 5) {
      				i.value = i.value + ".";
		     	}
   			} else {
   				if (direction == "up") {
     				if (i.value.length == 0) {
      					i.value = ""
	     			} else {
		      			i.value = i.value.substring(0,i.value.length-1)
	   				}
    			}
	 		}
  			i.focus()
	  	}
 	} else {
 		if (direction == "down") {
	 		CheckDate(i)
  		}
  	}
 }
}
//-------------------------------------------------
function CheckDate(THISDATE, dontShowMessages) {
	var alert = dontShowMessages ? function() { } : self.alert;
	var err=false;
	a = THISDATE.value;
	if (a === undefined) a = THISDATE;
	if(!a || (/\s+/).test(a)) return;
	var m = a.match(/(\d+)[^\d]+(\d+)[^\d]+(\d+)/);
	if (m == null) err = true;
	else {
		var components = { day: +m[1], month: m[2]-1, year: +m[3] };
		var date = new Date(components.year, components.month, components.day);
		err = (date.getFullYear() < 1900 || date.getFullYear() != components.year ||
			date.getMonth() != components.month ||
			date.getDate() != components.day);
	}
	if (err) alert('Неверно указана дата');

	if(err && !dontShowMessages && THISDATE.focus && THISDATE.select)
	{
		THISDATE.focus();
		THISDATE.select();
	}
	return err;
}

function ValidateDate(sender, arg) {
	if (!arg.Value || (/\s+/).test(arg.Value)) { arg.IsValid = true; return; }
   	arg.IsValid = !CheckDate(arg.Value, true);
}