function LoadImage(filename,sizex,sizey)
{
  window.open (filename,'','left=0,top=0,menubar=no,location=no,width='+sizex+',height='+sizey+',scrollbars=yes,resizable=no,status=no');
}

function showTip(which,MPY,MPX,parent) {
    var lyr = document.getElementById(which).style;
    //lyr.top = 0 + MPY;// + document.body.scrollTop;
    //lyr.left= 0 + MPX;// + document.body.scrollLeft;
    lyr.visibility = "visible";
    lyr.overflow = 'visible';
}

function hideTip(which) {

    obj = document.getElementById(which);
    obj.style.visibility = "hidden";
}

function my_onmouseover1(obj_td) {
        obj_td.style.backgroundColor= '#045FFF';//'#FF0F24';
        obj_td.style.color="#FDE505";
//        obj_td.style.width='190px';
//        obj_td.style.filter='alpha(opacity=99,FinishOpacity=20, style=1)';
//        obj_td.style.filter='glow(color=#000000,strength=5)';

//	obj_td.style.backgroundImage='index_03.jpg';
}
function my_onmouseout1(obj_td) {
        obj_td.style.backgroundColor= '';
        obj_td.style.color= '';
//        obj_td.style.filter='alpha(opacity=100, style=0)';
}
function my_onmouseover2(obj_td) {
//        obj_td.style.backgroundColor= '#045FFF';//'#FF0F24';
        obj_td.style.color="#000000";
}
function my_onmouseout2(obj_td) {
//        obj_td.style.backgroundColor= '';
        obj_td.style.color= '';
}

function hl_f( id )
{
	var obj = document.getElementById( "_hl_" + id );
	//obj.style.color = "#000000";
}
function newLink()
{
	document.form_help.action = document.activeElement.href;
	document.form_help.submit();
	return false;
}
function loadDoc()
{
	for(var i=0;i<document.links.length;i++)
	{
		if ( !document.links[i].search && !document.links[i].onclick )
			document.links[i].onclick="return newLink();";
	}
}
//<script>
function redir(p){
	if(isWWWurl(p)) window.location.href = p;
	else window.location.href = 'http://'+document.domain+p;
}
function redirbyval(str,element){
	redir(str+element.value);
}
function sendform(form,hash){
	if (typeof(hash) == "object") {
	  for (var i in hash) form[i].value=hash[i];
	}
	form.submit();
}
function sendformif(form,hash,msg){
	var m = msg || 'Вы подтверждаете данную операцию?';
  if (confirm(m)) sendform(form,hash);
}

function resetForm(form){
	var el;
	for (var i=0; i<form.length;i++){
		el=form.elements[i];
		if(typeof(el.attributes['default_value']) != 'undefined')
			el.value=el.attributes['default_value'].value;
		if(typeof(el.attributes['checked']) != 'undefined')
			el.checked=false;
	}
	form.submit();
}

function newImageSrc(elname,newSrc){
	var el=document.getElementById(elname);
	el.src=newSrc;
}

function toggleVisible(elname,captEl,textON,textOFF){
  var el=document.getElementById(elname);
  if (el.style.display=="none"){
  		el.style.display="block";
  		if(captEl!=null) captEl.innerHTML=textON;
  }
  else {
  	el.style.display="none";
  	if(captEl!=null) captEl.innerHTML=textOFF;
  }
  var el_field=document.getElementById(elname+'_field');
  if(el_field!=null) el_field.value=el.style.display;
}

function toggleDisabled(elname,captEl,textON,textOFF){
  var el=document.getElementById(elname);
  el.disabled=!el.disabled;
  if(captEl!=null){
  	if(el.disabled)
  		captEl.innerHTML=textOFF;
  	else
  		captEl.innerHTML=textON;
  }
  var el_field=document.getElementById(elname+'_field');
  if(el_field!=null) el_field.value=el.disabled;
}

function byValDisabled(elname,val,captEl,textON,textOFF){
  var el=document.getElementById(elname);
  el.disabled=val;
  if(captEl!=null){
  	if(el.disabled)
  		captEl.innerHTML=textOFF;
  	else
  		captEl.innerHTML=textON;
  }
  var el_field=document.getElementById(elname+'_field');
  if(el_field!=null) el_field.value=el.disabled;
}

function findParentByTagName(el,tagName){
 if(!el) return false;
 tagName=tagName.toLowerCase();
 while (el=el.parentNode)
	if(el.tagName&&el.tagName.toLowerCase()==tagName) return el;
 return false;
}

function selectKeyPress(sel,e){
  var key = window.event ? e.keyCode : e.which;
  var k = String.fromCharCode(key);
  k=k.toUpperCase();
  for (var i = 0; i < sel.options.length; i++) {
    var optText = sel.options[i].text.toUpperCase();
    if (optText.substr(0, 1) == k) {
       sel.selectedIndex = i;
       return false;
    }
  }
  return false;
}

function getAbsPos(p){
  var s = { x:0, y:0 };
  while (p.offsetParent){
    s.x += p.offsetLeft;
    s.y += p.offsetTop;
    p = p.offsetParent;
  }
  return s;
}

function showSelectedText(sel){
  var XY=getAbsPos(sel);
  showHelp(XY.x+sel.clientWidth,XY.y-2,sel.options[sel.selectedIndex].text);
}
function showHelp(x,y,text,div_width){
  var hd=document.getElementById('helpdiv');
  if(!div_width)div_width=300;
  hd.innerHTML="<table style='width:"+div_width+"px'><tr><td>"+text+"</td></tr></table>";
  hd.style.left=x;
  hd.style.top=y;
  hd.style.visibility='visible';
  return true;
}
function hideDiv(divname){
  var el=document.getElementById(divname);
  el.style.visibility='hidden';
  return true;
}
// extract file name from path
function extrFileName(str){
  str=Trim(str);
  var li=str.lastIndexOf('/');
  if (li==-1) li=str.lastIndexOf('\\');
  return str.substr(li+1);
}
// Error message and focus on input
function alertInput (input, message)
{
	alert (message);
	input.focus ();
	if ((input.type == "text") || (input.type == "file") || (input.type == "password"))
		input.select ();
	return false;
}
//Left and Right String Trim
function Trim(str)
{
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

// Returns true if string s is empty
function isEmpty (s)
{
	return ((s == null) || (s.length == 0));
}

// Returns true if character c is a digit
function isDigit (c)
{
	return ((c >= "0") && (c <= "9"));
}

function isEmail (s)
{
	reEmail = /^(\w|-)+\@(\w|-)+(\.\w{2,4})+$/;
	if (!reEmail.test(s)) return false;
	return true;
}

// Returns true if string s is a valid WWW URL
function isWWWurl (s)
{
	reWWW = /^http:\/\/.+\..+$/;
	if (!reWWW.test(s)) return false;
	return true;
}

// Returns true if field.value is an float value
function numField(field)
{
    var s = field.value;
//	alert(s);
    if (!isNum(s) || isEmpty(s))
      return alertInput (field, 'Неправильное значение для поля! Введите число.');
}
// Returns true if string s is an float value
function isNum (s)
{
	var bDotPassed = false;

	for (var i=0; i<s.length; i++)
	{
		if (!(i==0 && s.charAt(i) == '-'))
		if (!isDigit(s.charAt(i)))
		{
			if (s.charAt(i) == '.' && !bDotPassed) bDotPassed = true;
			else return false;
		}
	}
	return true;
}

function isInteger (s)
{
	reNotInt = /[^0-9]/;
	if (reNotInt.test(s)) return false;
	return true;
}
// Returns whether the specified year is leap
function leapYear (yr)
{
	if (((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0) return true;
	else return false;
}

// Returns number of days in specified month & year
// month = [1,12]
function numDaysIn (mth, yr)
{
	if (mth==4 || mth==6 || mth==9 || mth==11) return 30;
	else if ((mth==2) && leapYear(yr)) return 29;
	else if (mth==2) return 28;
	else return 31;
}

// Check date (ISO format)
// field - form field
// yearbounds - {min, max} year values array
function isDate (field, minY, maxY, rus) {
	if(rus!=true) rus=false;
	CDate = Trim(field.value);
	if (CDate == '') return true;
	var DTParts = CDate.split(' ');
	if (DTParts.length == 2){
	   CDate=DTParts[0];
	   CTime=DTParts[1].split(':');
	   hours=CTime[0];
	   if (CTime.length>1) mins=CTime[1];
	   if (CTime.length>2) secs=CTime[2];
	}
	var DateParts = CDate.split('.');
	if (DateParts.length != 3){
	   DateParts = CDate.split('-');
	   if (DateParts.length != 3){
  		 if(rus) return alertInput (field, 'Некоректно указана дата! (ДД-ММ-ГГГГ или ДД.ММ.ГГГГ)');
  		 else return alertInput (field, 'Некоректно указана дата! (ГГГГ-ММ-ДД или ГГГГ.ММ.ДД)');
	   }
    }
	  month = DateParts[1];
  if(rus){
	  year = DateParts[2];
	  day = DateParts[0];
  } else {
	  year = DateParts[0];
	  day = DateParts[2];
  }
	if (!isInteger(year))
		return alertInput (field, 'Некоректно указана дата! (ГГГГ-ММ-ДД или ГГГГ.ММ.ДД)');
	if (year < minY || year > maxY)
		return alertInput (field, 'Год должен быть между: '+minY+' - '+maxY);
	if (month.length != 2 || !isInteger(month) || (month < 1) || (month > 12))
		return alertInput (field, 'Неправильно указан месяц: используйте значение от 01 до 12');
	maxdays = numDaysIn(month, year);
	if (day.length != 2 || !isInteger(day) || (day < 1) || (day > maxdays))
		return alertInput (field, 'Указанной даты не существует! День может быть от 01 до '+maxdays);
	if (hours!='' &&(hours<0 || hours>23 || !isInteger(hours)))
		return alertInput (field, 'Неверно указано время! (ЧЧ:ММ:СС) Час должен быть от 0 до 23.');
	if (mins!='' &&(!isInteger(mins) || mins<0 || mins>59))
		return alertInput (field, 'Неверно указано время! (ЧЧ:ММ:СС) Минуты от 0 до 59.');
	if (secs!='' &&(!isInteger(secs) || secs<0 || secs>59))
		return alertInput (field, 'Неверно указано время! (ЧЧ:ММ:СС) Секунды от 0 до 59.');
	return true;
}