function Change3state(element,eid)
{
  var e=document.getElementById(eid);
  var state=parseInt(e.value);  //element.getAttribute('c3state')
  state=state>1 ? 0 : state+1;
  element.src=element.src.replace(/\d\.gif$/, (state+1)+".gif");
  e.value=state;
}
function InitCombo()
{
  for(var i=0; i<arguments.length; ++i)
  {
    var e=document.getElementById(arguments[i]);
    var uenum=e.getAttribute('udate');
    var ulinks=e.getAttribute('udatl');
    var uimp=e.getAttribute('udati');
    var udef=e.getAttribute('udatd');

    if(uenum==null)
      uenum="";
    if(uimp==null)
      uimp="";
    var re=/'([^'\\]|\\.)*'/g;
    var ss=uenum.match(re);
    uenum=uenum.replace(/'([^'\\]|\\.)*'/g,'\\');
    uenum=uenum.replace(/\(/g,'new Array(');
    var v=uenum.split('\\');
    uenum="";
    var c;
    while((c=v.shift())!=undefined)
    {
      uenum+=c;
      if((c=ss.shift())!=undefined)
        uenum+=c;
    }
    uenum='uenum='+uenum;
    eval(uenum);

    if(ulinks!=null && ulinks!="")
    {
      ulinks=ulinks.split(',');
      var ee=new Array(ulinks.length);
      for(var j=0; j<ulinks.length; ++j)
      {
        var l=document.getElementById(ulinks[j]);
        var ind=l.selectedIndex;
        var s=l.options[ind];
        ee[j]=s.text;
      }
      var f=0;
      for(var j=0; j<uenum.length; ++j)
      {
        var k;
        for(k=0; k<ee.length; ++k)
          if(ee[k]!=uenum[j][0][k])
            break;
        if(k==ee.length)
        {
          uenum=uenum[j][1];
          f=1;
          break;
        }
      }
      if(f==0)
        uenum=new Array(0);
    }
    if(uimp!="")
      uenum.unshift(new Array(0,uimp));

    var col=e.options;
    while(col.length>0)
      e.remove(0);

    for(var j=0; j<uenum.length; ++j)
    {
      var oOption = document.createElement('OPTION');
      col.add(oOption);
      var it=uenum[j];
      if(it.charAt==undefined)
      {
        oOption.value = it[0];
        if(it[0]==udef || (j==0 && udef==''))
          oOption.selected=true;
        it=it[1];
      }
      else
      {
        oOption.value = it;
        if(it==udef)
          oOption.selected=true;
      }
      oOption.text = it;
    }
  }
}
function CheckFields(fields, re)
{
  for(var i=0; i<fields.length; ++i)
  {
    var e=document.getElementById(fields[i]);
    var uiname=e.getAttribute('uiname');
    var msg="";
    if(!re)
    {
      if(e.value=="")
        msg="Не заполнено поле '";
    }
    else if(e.value!="" && !re.test(e.value))
      msg="Неправильно заполнено поле '";
    if(msg!="")
    {
      alert(msg+uiname+"'");
      e.focus();
      return false;
    }
  }
  return true;
}

function ValidateForm(IntFields,FloatFields,EmailFields,MandatoryFields,DateFields)
{
  if(CheckFields(MandatoryFields) && CheckFields(IntFields, /^\d+$/) && CheckFields(FloatFields, /^\d+([.,])?(\d+)?$/) && CheckFields(EmailFields, /^[\w-.]+@[\w-]+\.[\w-.]+$/) && CheckFields(DateFields, /^(\d\d?)\.(\d\d?)\.(\d\d\d\d)$/))
    return true;

  return false;
}

function getDecendentByTagName(el, dTagName)
{
  var ndList;
  if(el.getElementsByTagName){
    ndList = el.getElementsByTagName(dTagName)
  }else if(el.all){
    ndList = el.all.tags(dTagName);
  }
  if(!ndList){
    ndList = [];
  }else if(typeof ndList.length == 'undefined'){
    ndList = [ndList];
  }
  return ndList;
}

function findPosX(obj){
  var curleft = 0;
  if (obj.offsetParent){
    while (obj.offsetParent){
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  return curleft;
}

function findPosY(obj){
  var curtop = 0;
  if (obj.offsetParent){
    while (obj.offsetParent){
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  return curtop;
}

function ValidateField(e)
{
  var re;
  var msg="";
  switch(e.getAttribute('utype'))
  {
    case 'int':
      re=/^\d+$/;
      break;
  }
  if(re && e.value!="" && !re.test(e.value))
    msg="Неправильно заполнено поле";
  if(msg!="")
  {
    alert(msg);
    e.focus();
    return false;
  }
  return true;
}
function ValidateForm2(form)
{
  var ilist=getDecendentByTagName(form, 'INPUT');
  if(ilist)
    for(var i=0; i<ilist.length; ++i)
    {
      var e=ilist[i];
      if(e.type=='text' && !ValidateField(e))
        return false;
    }
  return true;
}
function ChangeInpType(id)
{
  var type="text";
  if(id.type==type)
    type="file";

  if(id.outerHTML)
  {
    var re1=/type=["']?[^"' ]+["']?/i;
    var re2=/<INPUT /i;
    var s=id.outerHTML.replace(re1,"");
    s=s.replace(re2,'<INPUT type="'+type+'" ');
    id.outerHTML=s;
  }
  else
    id.type=type;
}

function cGetValue(s, Name)
{
  if(!s)
    return null;
  var re=new RegExp(Name+' *= *([^;]+);? *');
  var m=s.match(re);
  return m ? unescape(m[1]) : null;
}
function cDelValue(s, Name)
{
  if(!s)
    return null;
  var re=new RegExp(Name+' *= *[^;]+;? *');
  return s.replace(re,'');
}
function cSetValue(s, Name, Val)
{
  s=cDelValue(s, Name);
  return Name+"="+escape(Val)+";"+s;
}

function GetCookie(Name1, Name2)
{
  return cGetValue(cGetValue(document.cookie, Name1), Name2);
}
function SetCookie(Name1, Name2, Val)
{
  var s=cSetValue(cGetValue(document.cookie, Name1), Name2, Val)
  document.cookie=Name1+"="+escape(s);
}

