if(s2n(getCookie(document, 'IsReload'))==1){
	document.cookie = 'IsReload=0;path=/';
	document.location.reload();
}
function getCookie(docL, sCookie){
	var aCookie = docL.cookie.split(';');
	for (var i=0; i < aCookie.length; i++){
		var aCrumb = aCookie[i].split('=');
		if(String(sCookie).toLowerCase().replace(' ','') == String(aCrumb[0]).toLowerCase().replace(' ','')) 
			if(typeof(aCrumb[1])!='undefined')
				return aCrumb[1];
	}
	return '';
}
function getPlatformName(){
	var ver=navigator.appVersion.toLowerCase();
	if(ver.indexOf('win')!=-1){
		if(ver.indexOf('win16')!=-1) return 'Win3.1';
		else if(ver.indexOf('95')!=-1) return 'Win95';
		else if(ver.indexOf('98')!=-1) return 'Win98';
		else if(ver.indexOf('nt')!=-1) return 'WinNT';
	}
	else if(ver.indexOf('macintosh')!=-1) return 'Mac';
	else if(ver.indexOf('x11')!=-1) return 'X-Win';
	else if(ver.indexOf('linux')!=-1) return 'Linux';
	return 'Others';
}
function getScreenCenter(sMetric){
	switch(sMetric){
		case 'width':
			return (document.layers ? window.innerWidth : document.body.clientWidth)/2;
			break;
		case 'height':
			return (document.layers ? window.innerHeight : document.body.clientHeight)/2;
			break;
	}
}
function window_open(wnd_name,src,width,height){    
	if ((getPlatformName()!='Mac' || document.layers) && 
		top[wnd_name]!=null && 
		typeof(top[wnd_name])=='object' && 
		!top[wnd_name].closed && 
		top[wnd_name].load_flag==1) {
		top[wnd_name].focus();
	}
	else{
		var winparam='location=no,directories=no,menubar=no,resizable=no,status=no,scrollbars=no,left='+((screen.width-width)/2>0 ? (screen.width-width)/2 : 0)+',top='+((screen.height-height)/2>0 ? (screen.height-height)/2 : 0)+',width='+width+',height='+height;
		var url=src + '?now='+Math.random();
		top[wnd_name]=window.open(url,wnd_name,winparam);
	}
}    
function commonvalidate(r,frm,errorArray){
	//r[x][0] -field name
	//r[x][1] -field form name
	//r[x][2] -length
	//r[x][3] -datatype
	//r[x][4] -nullable
	//r[x][5] -diapason min (for int,float)
	//r[x][6] -diapason max (for int,float)

	var elt=frm.elements
	var i
	for(i=0;i<r.length;i++){
		if(typeof(elt[r[i][0]])!='undefined' || typeof(elt['mm_' + r[i][0]])!='undefined'){
			switch(r[i][3]){
				case 'radio_string':
				case 'text_string':
				case 'text_email':
				case 'text_filename':
					val = '';
					if(r[i][3]=='radio_string')
					{
						if(elt[r[i][0]].length>0)
						{
							for(var j=0; j<elt[r[i][0]].length; ++j)
							{
								if(elt[r[i][0]][j].checked)
								{
									val = elt[r[i][0]][j].value;
									break;
								}
							}
						}
						else if(elt[r[i][0]].checked) val = elt[r[i][0]].value;
					} else val = atrim(elt[r[i][0]].value);
					if(val.length==0 && r[i][4]==1){
						alert(r[i][1] + ' cannot be empty');
						if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						//errorArray[errorArray.length] = new Array(r[i][0],r[i][1] + ' cannot be empty')
						return false;
					}
					if(val.length>r[i][2]){
						alert(r[i][1] + ' cannot be more than ' + r[i][2] + ' characters');
						if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						return false;
					}
					if(r[i][5]!=0 && val.length < r[i][5])
					{
						alert(r[i][1] + ' cannot be less than ' + r[i][5] + ' characters');
						return false;
					}
					if(r[i][3]=='text_email' && val.length && !validEmail(val)){
						alert('Please enter a valid ' + r[i][1]);
						if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						return false;
					}
					if(r[i][3]=='text_filename' && val.length && (val.indexOf(':',2)!=-1 || val.indexOf('*')!=-1 || val.indexOf('?')!=-1 || val.indexOf('"')!=-1 || val.indexOf('<')!=-1 || val.indexOf('>')!=-1 || val.indexOf('|')!=-1)){
						alert('Please enter a valid ' + r[i][1] + '\nA имя файла не может содержать символы: \\ / : * ? " < > | ');
						if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						return false;
					}					
					break;
				case 'select_string':
					val = '';
					switch(elt[r[i][0]].type){
						case 'select-multiple':
							for(var j=0; j<elt[r[i][0]].options.length; ++j){
								if(elt[r[i][0]].options[j].selected){
									val = elt[r[i][0]].options[j].value;
									if(val=='') val = elt[r[i][0]].options[j].text;
									break;
								}	
							}
							break;
						case 'select-one':
							if(elt[r[i][0]].options.selectedIndex!=-1) val = elt[r[i][0]].options[elt[r[i][0]].options.selectedIndex].value;
							break;
					}					
					if(r[i][4]==1 && val==''){
						alert(r[i][1] + ' cannot be empty');
						elt[r[i][0]].focus();
						return false;
					}
					break;
				case 'text_float':
				case 'select_int':
				case 'text_int':
				case 'radio_int':
					val = '';
					if(r[i][3]=='select_int'){
						switch(elt[r[i][0]].type){
							case 'select-multiple':
								for(var j=0; j<elt[r[i][0]].options.length; ++j){
									if(elt[r[i][0]].options[j].selected){
										val = elt[r[i][0]].options[j].value;
										if(val=='') val = elt[r[i][0]].options[j].text;
										break;
									}	
								}
								break;
							case 'select-one':
								if(elt[r[i][0]].options.selectedIndex!=-1) val = elt[r[i][0]].options[elt[r[i][0]].options.selectedIndex].value;
								break;
						}					
					} 
					else if(r[i][3]=='text_float') val = elt[r[i][0]].value.replace(/,/g,'.');
					else if(r[i][3]=='text_int') val = elt[r[i][0]].value;
					else if(r[i][3]=='radio_int'){
						if(elt[r[i][0]].length>0){
							for(var j=0; j<elt[r[i][0]].length; ++j){
								if(elt[r[i][0]][j].checked){
									val = elt[r[i][0]][j].value;
									break;
								}
							}
						}
						else if(elt[r[i][0]].checked) val = elt[r[i][0]].value;
					}
					if(r[i][4]==1 && val==''){
						alert(r[i][1] + ' cannot be empty');
						if(r[i][3]!='radio_int' && !elt[r[i][0]].disabled) elt[r[i][0]].focus();
						return false;
					}else if(val=='') break;
					
					/*start parse string to float*/
					var digval=0;
					if(parseFloat(val)!=parseInt(val))	digval = parseFloat(val);
					else digval = parseInt(val);
					/*end parse string to float*/
					if(isNaN(digval)) {
						 digval=0;
//					if(String(digval)!=val){/*not a number*/
						alert(r[i][1] + ' must be a number. \nValue was corrected, please check.');
						elt[r[i][0]].value = digval;
						if(r[i][3]!='radio_int') elt[r[i][0]].focus();
						return false;
					}else{
						if(r[i][5]!=null && r[i][6]!=null && r[i][5]!=r[i][6]){
							if(digval<r[i][5] || digval>r[i][6]){//not in period
								alert(r[i][1] + ' must be between ' + r[i][5] + ' and ' + r[i][6]);
								if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								return false;
							}
						}else if(r[i][5]!=null){
							if(digval<r[i][5]){
								alert(r[i][1] + ' must be >= ' + r[i][5]);
								if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								return false;
							}
						}else if(r[i][6]!=null){
							if(digval>r[i][5]){
								alert(r[i][1] + ' must be <= ' + r[i][6]);
								if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								return false;
							}
						}
					}
					break;
				case 'date':
					if(typeof(elt[r[i][0]])!='undefined'){
						var sDate = trim(elt[r[i][0]].value);
						if (sDate != '') {
							var dt;
							var isValid = 0;
							var sSep = '/';
							if (sDate.indexOf('.') != -1) sSep = '.';
							if (sDate.indexOf('-') != -1) sSep = '-';
							var a_dt = sDate.split(sSep);
							if (a_dt.length == 3 &&
								(trim(a_dt[2]).length == 2 ||
								 trim(a_dt[2]).length == 4)) {
								var mm		= parseInt(a_dt[0]);
								var dd		= parseInt(a_dt[1]);
								var yyyy	= parseInt(a_dt[2]);
								if (!isNaN(mm) && 
									!isNaN(dd) && 
									!isNaN(yyyy)){
									if(!yyyy) yyyy = 2000;
									var dt = new Date(yyyy,mm-1,dd);
									if(!isNaN(dt)){
										if (mm==(dt.getMonth()+1) &&
											dd==dt.getDate() &&
											yyyy==dt.getYear()){
											isValid = 1;
										}
									}	
								}	
							}
							if(!isValid){
								alert('Please enter a valid ' + r[i][1]);
								elt[r[i][0]].focus();
								return false;
							}
							if(dt.getYear()<=50) dt.setFullYear(2000+dt.getYear());
							else if(dt.getYear()<100) dt.setFullYear(1900+dt.getYear());
							elt[r[i][0]].value = (String(dt.getMonth() + 1)) + '/' + String(dt.getDate()) + '/' + (String(dt.getFullYear()).length == 4 ? String(dt.getFullYear()).substr(2,2) : String(dt.getFullYear()));
						}else if(r[i][4]==1){
							alert(r[i][1] + ' cannot be empty');
							elt[r[i][0]].focus();
							return false;
						}
					}else{ //date separated to three field mm_ dd_ yyyy_
						var mm		= elt['mm_' + r[i][0]].options[elt['mm_' + r[i][0]].options.selectedIndex].value;
						var dd		= elt['dd_' + r[i][0]].value;
						var yyyy	= elt['yyyy_' + r[i][0]].options[elt['yyyy_' + r[i][0]].options.selectedIndex].value;
						if(r[i][4]==1){
							if(mm==''){
								alert('Please choose month for ' + r[i][1]);
								elt['mm_' + r[i][0]].focus();
								return false;
							}else if(dd==''){
								alert('Please choose day for ' + r[i][1]);
								elt['dd_' + r[i][0]].focus();
								return false;
							}else if(yyyy==''){
								alert('Please choose year for ' + r[i][1]);
								elt['yyyy_' + r[i][0]].focus();
								return false;
							}else{}
						}else if((mm=='' && ' '+dd+yyyy!=' ') || (dd=='' && ' '+mm+yyyy!=' ') || (yyyy=='' && ' '+mm+dd!=' ') ){
							alert('Please complete ' + r[i][1]);
							elt['mm_' + r[i][0]].focus();
							return false;
						}
					}
					break;
				case 'datetime':
					if(typeof(elt[r[i][0]])!='undefined'){ //datetime in one field
					/* must be done	*/
					}else{ //date separated to three field mm_ dd_ yyyy_
						var mm		= elt['mm_' + r[i][0]].options[elt['mm_' + r[i][0]].options.selectedIndex].value;
						var dd		= elt['dd_' + r[i][0]].value;
						var yyyy	= elt['yyyy_' + r[i][0]].options[elt['yyyy_' + r[i][0]].options.selectedIndex].value;
						var h		= elt['h_' + r[i][0]].value;
						var m		= elt['m_' + r[i][0]].value;
						if(r[i][4]==1){
							if(mm==''){
								alert('Please choose month for ' + r[i][1]);
								elt['mm_' + r[i][0]].focus();
								return false;
							}else if(dd==''){
								alert('Please choose day for ' + r[i][1]);
								elt['dd_' + r[i][0]].focus();
								return false;
							}else if(yyyy==''){
								alert('Please choose year for ' + r[i][1]);
								elt['yyyy_' + r[i][0]].focus();
								return false;
							}else if(h==''){
								alert('Please choose hour for ' + r[i][1]);
								elt['h_' + r[i][0]].focus();
								return false;
							}else if(m==''){
								alert('Please choose minute for ' + r[i][1]);
								elt['m_' + r[i][0]].focus();
								return false;
							}else{}
						}else if((mm=='' && ' '+dd+yyyy!=' ') || 
								(dd=='' && ' '+mm+yyyy!=' ') || 
								(yyyy=='' && ' '+mm+dd!=' ') ){
							alert('Please complete ' + r[i][1]);
							elt['mm_' + r[i][0]].focus();
							return false;
						}
					}
					break;
			}
		}
	}
	return true;
}
function d2s(oDt){
	var s='';
	if(oDt){
		var dt = new Date(oDt);
		if(!isNaN(dt)) s=String(dt.getMonth()+1)+'/'+String(dt.getDate())+'/'+String(dt.getFullYear());
	}	
	return s;
}
function assembleDateControl(pForm, sValueName){
	var dt=null;
	var mm, dd, yyyy;
			
	var sSep = '/';

	if(typeof(pForm[sValueName])!='undefined'){
		if (pForm[sValueName].value.indexOf('.') != -1) sSep = '.';
		if (pForm[sValueName].value.indexOf('-') != -1) sSep = '-';
		var a_dt=pForm[sValueName].value.split(sSep);
		mm		= parseInt(a_dt[0],10);
		dd		= parseInt(a_dt[1],10);
		yyyy	= parseInt(a_dt[2],10);
		if(mm!='' && dd!='' && yyyy!='') dt = new Date(yyyy,mm-1,dd);
	}else{
		mm		= pForm['mm_' + sValueName].value;
		dd		= pForm['dd_' + sValueName].value;
		yyyy	= pForm['yyyy_' + sValueName].value;
		if(mm!='' && dd!='' && yyyy!='') dt = new Date(yyyy,mm-1,dd);
	}	
	if(dt && atrim(yyyy).length < 3){
		if(dt.getYear()<=50) dt.setFullYear(2000+dt.getYear());
		else if(dt.getYear()<100) dt.setFullYear(1900+dt.getYear());
	}	
	return dt;
}
function CompareValues(sDateType, pForm, sValueName1, sValueName2){
	var iReturnCode = 0;
	switch(sDateType){
		case 'date':
			var dt1, dt2;
			var mm, dd, yyyy;
			
			var sSep = '/';

			if(typeof(pForm[sValueName1])!='undefined'){
				if (pForm[sValueName1].value.indexOf('.') != -1) sSep = '.';
				if (pForm[sValueName1].value.indexOf('-') != -1) sSep = '-';
				var a_dt=pForm[sValueName1].value.split(sSep);
				mm		= parseInt(a_dt[0]);
				dd		= parseInt(a_dt[1]);
				yyyy	= parseInt(a_dt[2]);
			}else{
				mm		= pForm['mm_' + sValueName1].options[pForm['mm_' + sValueName1].options.selectedIndex].value;
				dd		= pForm['dd_' + sValueName1].value;
				yyyy	= pForm['yyyy_' + sValueName1].options[pForm['yyyy_' + sValueName1].options.selectedIndex].value;
			}	
			dt1 = new Date(yyyy,mm-1,dd);			
			if(dt1.getYear()<=50) dt1.setFullYear(2000+dt1.getYear());
			else if(dt1.getYear()<100) dt1.setFullYear(1900+dt1.getYear());

			if(typeof(pForm[sValueName2])!='undefined'){
				if (pForm[sValueName2].value.indexOf('.') != -1) sSep = '.';
				if (pForm[sValueName2].value.indexOf('-') != -1) sSep = '-';
				var a_dt=pForm[sValueName2].value.split(sSep);
				mm		= parseInt(a_dt[0]);
				dd		= parseInt(a_dt[1]);
				yyyy	= parseInt(a_dt[2]);
			}else{
				mm		= pForm['mm_' + sValueName2].options[pForm['mm_' + sValueName2].options.selectedIndex].value;
				dd		= pForm['dd_' + sValueName2].value;
				yyyy	= pForm['yyyy_' + sValueName2].options[pForm['yyyy_' + sValueName2].options.selectedIndex].value;
			}	
			dt2 = new Date(yyyy,mm-1,dd);
			if(dt2.getYear()<=50) dt2.setFullYear(2000+dt2.getYear());
			else if(dt2.getYear()<100) dt2.setFullYear(1900+dt2.getYear());

			if(dt1 > dt2) iReturnCode = 1;
			else if(dt1 < dt2) iReturnCode = -1;
			break;
	}
	return iReturnCode;
}
function validEmail(sEmail){  
	return sEmail.match(/^[0-9A-Za-z._,-]+.*@([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)+)$/);
}
function openModalWnd(iH, iW, sSRC, sQS, vParameters, bCallback){
	if(typeof(vParameters)=='undefined') vParameters = null;
	if(typeof(bCallback)=='undefined') bCallback = 0;
	var s_features ='dialogHeight:'+iH+'px;'+
					'dialogWidth:'+iW+'px;'+
					'center: yes;'+
					'resizable: no;'+
					'scroll: no;'+
					'status: no;'+
					'help: no;';
	var i_result = window.showModalDialog(sSRC+'?SetFrm=1'+(sQS ? '&'+sQS : ''), vParameters, s_features);
	if(!bCallback && i_result!=null) document.location.href = document.location.href;
//	if(i_result!=null) document.forms[0].submit();
	return i_result;
}
function atrim(s){
	if(!s) return '';
	s=String(s);
	s = s.replace(/^\s*/g,'');
	s = s.replace(/\s*$/g,'');
	return s;
}
function s2n(val){
	var digval=0;
	if (typeof(val) == 'string') val = val.replace(',','.');
	if(parseFloat(val)!=parseInt(val))	digval = parseFloat(val);
	else digval = parseInt(val);
	if(isNaN(digval)) digval=0;
	return digval;
}
function formatCurrency(v){
  if (typeof(v) == 'undefined') return arguments.length > 1 ? '$0.00' : '0';
  if (typeof(v) == 'string') v.replace(/\$/,'');
  if (typeof(v) != 'string') v = String(v);
  if (v == '') v='0';
  if (arguments.length == 1) {
	  v = v.replace(/,/g,'.');
  }	  
  v=parseFloat(v);
  var ts = String(Math.round(v*100)/100);
  if (ts.indexOf('.') == -1) ts+='.';
  while (ts.length-ts.indexOf('.') < 3) ts+='0';
  ts=ts.substr(0,ts.indexOf('.')+3);
  if (arguments.length > 1) {
    ts='$'+ts;
    if (ts.length > 7) {
		var le = ts.length-6;
		var c = 0;
		for (var i=le;i>1;i--) {
			if (!c) ts = ts.substring(0,i)+','+ts.substr(i);
			if (++c == 3) c=0;
		}	
	}
  }
  else {
	ts = ts.replace(/\./,',');
  }
  return ts;  
}
function dimAll(oForm) {
	for (var i=0; i<oForm.elements.length;i++) {
		with (oForm.elements[i]) {
			if (typeof(type) != 'undefined' &&
				(type == 'text' ||
				type == 'select-one' || 
				type == 'select-multiple' ||
				type == 'checkbox' ||
				type == 'button' ||
				type == 'reset' ||
				type == 'submit' ||
				type == 'file')) {
				disabled = true;			
			}
		}
	}
}	
function unDimAll(oForm) {
	for (var i=0; i<oForm.elements.length;i++) {
		with (oForm.elements[i]) {
			if (typeof(type) != 'undefined' &&
				(type == 'text' ||
				type == 'select-one' || 
				type == 'select-multiple' ||
				type == 'checkbox' ||
				type == 'button' ||
				type == 'reset' ||
				type == 'submit' ||
				type == 'file')) {
				disabled = false;			
			}
		}
	}
}
function vbsString(chr,count){
	var s='';
	for(var i=0;i<count;++i) s+=chr;
	return s;
}
function getFormToArray(pForm){
	var aForm = new Array();
	with(pForm){
		for(var i=0; i<elements.length; ++i){
			switch(elements[i].type){
				case 'checkbox':
					if(elements[i].checked){
						aForm[elements[i].name] = elements[i].value;
					}else{
						aForm[elements[i].name] = '';
					}
					break;
				case 'textarea':
				case 'text':
					aForm[elements[i].name] = elements[i].value;
					break;
				case 'select-one':	
					aForm[elements[i].name] = elements[i].options[elements[i].selectedIndex].value;
					break;
				case 'select-multiple':	
					sSep = '';
					aForm[elements[i].name] = ''
					for(var j=0; j<elements[i].options.length; ++j){
						if(elements[i].options[j].selected){
							aForm[elements[i].name] += sSep + elements[i].options[j].value;
							sSep = ',';
						}	
					}	
					break;
			}	
		}
	}
	return aForm;
}
function setFormFromArray(pForm, aForm){
	with(pForm){
		for(var i=0; i<elements.length; ++i){
			if(typeof(aForm[elements[i].name])!='undefined'){
				switch(elements[i].type){
					case 'checkbox':
						if(s2n(aForm[elements[i].name])){
							elements[i].checked = 1;
						}	
						break;
					case 'textarea':
					case 'text':
						elements[i].value = aForm[elements[i].name];
						break;
					case 'select-one':
						for(var j=0; j<elements[i].options.length; ++j){
							if(elements[i].options[j].value==aForm[elements[i].name]){
								elements[i].options[j].selected = 1;
								break;
							}	
						}
						break;
					case 'select-multiple':	
						var aTmp = aForm[elements[i].name].split(',');
						for(var j=0; j<elements[i].options.length; ++j){
							for(var k=0; k<aTmp.length; ++k){
								if(atrim(aTmp[k])==atrim(elements[i].options[j].value)){
									elements[i].options[j].selected = 1;
									break;
								}
							}
						}	
						break;
				}	
			}	
		}
	}	
}
function commonvalidateNew(r,frm,errorArray){
	//r[x][0] -field name
	//r[x][1] -field form name
	//r[x][2] -length
	//r[x][3] -datatype
	//r[x][4] -nullable
	//r[x][5] -diapason min (for int,float)
	//r[x][6] -diapason max (for int,float)

	var elt=frm.elements
	var i
	var isError;
	for(i=0;i<r.length;i++){
		isError = 0;
		if(typeof(elt[r[i][0]])!='undefined' || typeof(elt['mm_' + r[i][0]])!='undefined'){
			switch(r[i][3]){
				case 'radio_string':
				case 'text_string':
				case 'text_email':
				case 'text_filename':
					val = '';
					if(r[i][3]=='radio_string')
					{
						if(elt[r[i][0]].length>0)
						{
							for(var j=0; j<elt[r[i][0]].length; ++j)
							{
								if(elt[r[i][0]][j].checked)
								{
									val = elt[r[i][0]][j].value;
									break;
								}
							}
						}
						else if(elt[r[i][0]].checked) val = elt[r[i][0]].value;
					} else val = atrim(elt[r[i][0]].value);
					if(val.length==0 && r[i][4]==1){
						//alert(r[i][1] + ' cannot be empty');
						//if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be empty')
							isError = 1;
						}
						//return false;
					}
					if(val.length>r[i][2]){
						//alert(r[i][1] + ' cannot be more than ' + r[i][2] + ' characters');
						//if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be more than ' + r[i][2] + ' characters')
							isError = 1;
						}
						//return false;
					}
					if(r[i][5]!=0 && val.length < r[i][5])
					{
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be less than ' + r[i][5] + ' characters')
							isError =1;
						}
						//alert(r[i][1] + ' cannot be less than ' + r[i][5] + ' characters');
						//return false;
					}
					if(r[i][3]=='text_email' && val.length && !validEmail(val)){
						//alert('Please enter a valid ' + r[i][1]);
						//if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],'Please enter a valid ' + r[i][1])
							isError =1;
						}
						//return false;
					}
					if(r[i][3]=='text_filename' && val.length && (val.indexOf(':',2)!=-1 || val.indexOf('*')!=-1 || val.indexOf('?')!=-1 || val.indexOf('"')!=-1 || val.indexOf('<')!=-1 || val.indexOf('>')!=-1 || val.indexOf('|')!=-1)){
						//alert('Please enter a valid ' + r[i][1] + '\nA имя файла не может содержать символы: \\ / : * ? " < > | ');
						//if(r[i][3]!='radio_string') elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],'Please enter a valid ' + r[i][1] + '\nA имя файла не может содержать символы: \\ / : * ? " < > | ')
							isError =1;
						}
						//return false;
					}					
					break;
				case 'select_string':
					val = '';
					switch(elt[r[i][0]].type){
						case 'select-multiple':
							for(var j=0; j<elt[r[i][0]].options.length; ++j){
								if(elt[r[i][0]].options[j].selected){
									val = elt[r[i][0]].options[j].value;
									if(val=='') val = elt[r[i][0]].options[j].text;
									break;
								}	
							}
							break;
						case 'select-one':
							if(elt[r[i][0]].options.selectedIndex!=-1) val = elt[r[i][0]].options[elt[r[i][0]].options.selectedIndex].value;
							break;
					}					
					if(r[i][4]==1 && val==''){
						//alert(r[i][1] + ' cannot be empty');
						//elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be empty')
							isError = 1;
						}
						//return false;
					}
					break;
				case 'text_float':
				case 'select_int':
				case 'text_int':
				case 'radio_int':
					val = '';
					if(r[i][3]=='select_int'){
						switch(elt[r[i][0]].type){
							case 'select-multiple':
								for(var j=0; j<elt[r[i][0]].options.length; ++j){
									if(elt[r[i][0]].options[j].selected){
										val = elt[r[i][0]].options[j].value;
										if(val=='') val = elt[r[i][0]].options[j].text;
										break;
									}	
								}
								break;
							case 'select-one':
								if(elt[r[i][0]].options.selectedIndex!=-1) val = elt[r[i][0]].options[elt[r[i][0]].options.selectedIndex].value;
								break;
						}					
					} 
					else if(r[i][3]=='text_float') val = elt[r[i][0]].value.replace(/,/g,'.');
					else if(r[i][3]=='text_int') val = elt[r[i][0]].value;
					else if(r[i][3]=='radio_int'){
						if(elt[r[i][0]].length>0){
							for(var j=0; j<elt[r[i][0]].length; ++j){
								if(elt[r[i][0]][j].checked){
									val = elt[r[i][0]][j].value;
									break;
								}
							}
						}
						else if(elt[r[i][0]].checked) val = elt[r[i][0]].value;
					}
					if((r[i][4]==1 && val=='') || (r[i][4]==1 && val==0)){
						//alert(r[i][1] + ' cannot be empty');
						//if(r[i][3]!='radio_int' && !elt[r[i][0]].disabled) elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be empty')
							isError = 1;
						}
						//return false;
					}else if(val=='') break;
					
					/*start parse string to float*/
					var digval=0;
					if(parseFloat(val)!=parseInt(val))	digval = parseFloat(val);
					else digval = parseInt(val);
					/*end parse string to float*/
					if(isNaN(digval)) {
						 digval=0;
//					if(String(digval)!=val){/*not a number*/
						//alert(r[i][1] + ' must be a number. \nValue was corrected, please check.');
						//elt[r[i][0]].value = digval;
						//if(r[i][3]!='radio_int') elt[r[i][0]].focus();
						if(typeof(errorArray[r[i][0]])=='undefined')
						{
							errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' must be a number. \nValue was corrected, please check.')
							isError = 1;
						}
						//return false;
					}else{
						if(r[i][5]!=null && r[i][6]!=null && r[i][5]!=r[i][6]){
							if(digval<r[i][5] || digval>r[i][6]){//not in period
								//alert(r[i][1] + ' must be between ' + r[i][5] + ' and ' + r[i][6]);
								if(typeof(errorArray[r[i][0]])=='undefined')
								{
									errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' must be between ' + r[i][5] + ' and ' + r[i][6])
									isError = 1;
								}
								//if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								//return false;
							}
						}else if(r[i][5]!=null){
							if(digval<r[i][5]){
								//alert(r[i][1] + ' must be >= ' + r[i][5]);
								if(typeof(errorArray[r[i][0]])=='undefined')
								{
									errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' must be >= ' + r[i][5])
									isError = 1;
								}
								//if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								//return false;
							}
						}else if(r[i][6]!=null){
							if(digval>r[i][5]){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{
									errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' must be <= ' + r[i][6])
									isError = 1;
								}
								//alert(r[i][1] + ' must be <= ' + r[i][6]);
								//if(r[i][3]!='radio_int') elt[r[i][0]].focus();
								//return false;
							}
						}
					}
					break;
				case 'date':
					if(typeof(elt[r[i][0]])!='undefined'){
						var sDate = trim(elt[r[i][0]].value);
						if (sDate != '') {
							var dt;
							var isValid = 0;
							var sSep = '/';
							if (sDate.indexOf('.') != -1) sSep = '.';
							if (sDate.indexOf('-') != -1) sSep = '-';
							var a_dt = sDate.split(sSep);
							if (a_dt.length == 3 &&
								(trim(a_dt[2]).length == 2 ||
								 trim(a_dt[2]).length == 4)) {
								var mm		= parseInt(a_dt[0]);
								var dd		= parseInt(a_dt[1]);
								var yyyy	= parseInt(a_dt[2]);
								if (!isNaN(mm) && 
									!isNaN(dd) && 
									!isNaN(yyyy)){
									if(!yyyy) yyyy = 2000;
									var dt = new Date(yyyy,mm-1,dd);
									if(!isNaN(dt)){
										if (mm==(dt.getMonth()+1) &&
											dd==dt.getDate() &&
											yyyy==dt.getYear()){
											isValid = 1;
										}
									}	
								}	
							}
							if(!isValid){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{							
									errorArray[r[i][0]] = new Array(r[i][0],'Please enter a valid ' + r[i][1])
									isError = 1;
								}
								//alert('Please enter a valid ' + r[i][1]);
								//elt[r[i][0]].focus();
								//return false;
							}
							if(dt.getYear()<=50) dt.setFullYear(2000+dt.getYear());
							else if(dt.getYear()<100) dt.setFullYear(1900+dt.getYear());
							elt[r[i][0]].value = (String(dt.getMonth() + 1)) + '/' + String(dt.getDate()) + '/' + (String(dt.getFullYear()).length == 4 ? String(dt.getFullYear()).substr(2,2) : String(dt.getFullYear()));
						}else if(r[i][4]==1){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{							
									errorArray[r[i][0]] = new Array(r[i][0],r[i][1] + ' cannot be empty')
									isError = 1;
								}
							//alert(r[i][1] + ' cannot be empty');
							//elt[r[i][0]].focus();
							//return false;
						}
					}else{ //date separated to three field mm_ dd_ yyyy_
						var mm		= elt['mm_' + r[i][0]].options[elt['mm_' + r[i][0]].options.selectedIndex].value;
						var dd		= elt['dd_' + r[i][0]].value;
						var yyyy	= elt['yyyy_' + r[i][0]].options[elt['yyyy_' + r[i][0]].options.selectedIndex].value;
						if(r[i][4]==1){
							if(mm==''){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{								
									errorArray[r[i][0]] = new Array(r[i][0],'Please choose month for ' + r[i][1])
									isError = 1
								}
								//alert('Please choose month for ' + r[i][1]);
								//elt['mm_' + r[i][0]].focus();
								//return false;
							}else if(dd==''){
								//alert('Please choose day for ' + r[i][1]);
								if(typeof(errorArray[r[i][0]])=='undefined')
								{								
									errorArray[r[i][0]] = new Array(r[i][0],'Please choose day for ' + r[i][1])
									isError=1;
								}
								//elt['dd_' + r[i][0]].focus();
								//return false;
							}else if(yyyy==''){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{								
									errorArray[r[i][0]] = new Array(r[i][0],'Please choose year for ' + r[i][1])
									isError = 1;
								}
								//alert('Please choose year for ' + r[i][1]);
								//elt['yyyy_' + r[i][0]].focus();
								//return false;
							}else{}
						}else if((mm=='' && ' '+dd+yyyy!=' ') || (dd=='' && ' '+mm+yyyy!=' ') || (yyyy=='' && ' '+mm+dd!=' ') ){
								if(typeof(errorArray[r[i][0]])=='undefined')
								{								
									errorArray[r[i][0]] = new Array(r[i][0],'Please complete ' + r[i][1])
									isError=1;
								}
							//alert('Please complete ' + r[i][1]);
							//elt['mm_' + r[i][0]].focus();
							//return false;
						}
					}
					break;
				case 'datetime':
					if(typeof(elt[r[i][0]])!='undefined'){ //datetime in one field
					/* must be done	*/
					}else{ //date separated to three field mm_ dd_ yyyy_
						var mm		= elt['mm_' + r[i][0]].options[elt['mm_' + r[i][0]].options.selectedIndex].value;
						var dd		= elt['dd_' + r[i][0]].value;
						var yyyy	= elt['yyyy_' + r[i][0]].options[elt['yyyy_' + r[i][0]].options.selectedIndex].value;
						var h		= elt['h_' + r[i][0]].value;
						var m		= elt['m_' + r[i][0]].value;
						if(r[i][4]==1){
							if(mm==''){
								alert('Please choose month for ' + r[i][1]);
								elt['mm_' + r[i][0]].focus();
								return false;
							}else if(dd==''){
								alert('Please choose day for ' + r[i][1]);
								elt['dd_' + r[i][0]].focus();
								return false;
							}else if(yyyy==''){
								alert('Please choose year for ' + r[i][1]);
								elt['yyyy_' + r[i][0]].focus();
								return false;
							}else if(h==''){
								alert('Please choose hour for ' + r[i][1]);
								elt['h_' + r[i][0]].focus();
								return false;
							}else if(m==''){
								alert('Please choose minute for ' + r[i][1]);
								elt['m_' + r[i][0]].focus();
								return false;
							}else{}
						}else if((mm=='' && ' '+dd+yyyy!=' ') || 
								(dd=='' && ' '+mm+yyyy!=' ') || 
								(yyyy=='' && ' '+mm+dd!=' ') ){
							alert('Please complete ' + r[i][1]);
							elt['mm_' + r[i][0]].focus();
							return false;
						}
					}
					break;
			}
		}
	}
	if(errorArray.length!=0)
	{
		return false;
	}
	return true;
}