/*--------------------------------------------------|

| dTree 2.05 | www.destroydrop.com/javascript/tree/ |

|---------------------------------------------------|

| Copyright (c) 2002-2003 Geir Landr???               |

|                                                   |

| This script can be used freely as long as all     |

| copyright messages are intact.                    |

|                                                   |

| Updated: 17.04.2003                               |

|--------------------------------------------------*/


// Node object
  function RealNumberMask(event) {
          var KeyTyped = String.fromCharCode(getKeyCode(event));
          var targ = getTarget(event);

          keyCount = targ.value.length;
          var i = 0;
          var one = true;

          for (i; i<keyCount; i++) {
              if(targ.value.substring(i,i+1) == '.') one = false;
          }

          if(KeyTyped == '-') 
            if (keyCount == 0) return true;
            else return false;
            
          if(KeyTyped == '.'){
            if(keyCount == 0) return false;
            if(one) return true;
              else return false;
          }

          if (isNumeric(KeyTyped))
             return true;
      return false;
  }
  //tst
  function IntNumberMask(event) {
          var KeyTyped = String.fromCharCode(getKeyCode(event));
          if (isNumeric(KeyTyped))
             return true;
      	return false;
  }

  function anyMask(event, sMask) {
          //var sMask = "**?##?####";
          var KeyTyped = String.fromCharCode(getKeyCode(event));
          var targ = getTarget(event);

          keyCount = targ.value.length;
          //alert(sMask.charAt(keyCount));

         if (sMask.charAt(keyCount) == '*')
                  return true;

          if (sMask.charAt(keyCount) == KeyTyped)
         {
                  return true;
          }

          if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
             return true;

          if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
           return true;

        if ((sMask.charAt(keyCount) == '?') && isPunct(KeyTyped))
          return true;
          if (KeyTyped.charCodeAt(0) < 32) return true;

      return false;
  }
  function maskedInputKeyDown(event,sMask) {
    var keyTyped = getKeyCode(event);
    var targ = getTarget(event);
   if (targ.createTextRange) {
    var textLength = targ.value.length;
    var selLength = getSelLength(targ); //gaunam pazymeto texto ilgi
    var seltxt = getSelectedText(targ); //gaunam pazymeta teksta
    var selStart = getCursorPos(targ); //gaunam kursoriaus pozicija
    var part1=targ.value.substring(0,selStart); //teksto dalis iki pazymetos dalies
    var part2=targ.value.substring(selStart+selLength,textLength); //teksto dalis po pazymetos dalies
    //8 - backspace
    //9 - tab
    //13 - enter
    //46 - delete
    if (keyTyped==8 || keyTyped==46) {
      if (selLength==targ.value.length) {
        return true;
      } else {
        if (selLength>0) { //(turim uztikrint kad neistrintu maskes simboliu)
          //jei pirmas pazymetas simbolis priklauso maskei, einam prie sekanciu kol randam ta kruris nepriklauso
          //kai randam kuris nepriklauso einam per nepriklausancius tol kol aptinkam maskes simboli
          //arba kol baigiasi pazymetas tekstas
          //jei baigesi pazymetas tekstas tai ji pazymim iki pirmo maskes simbolio
          //jei pazymetas tekstas kertasi su maskes simboliais ji sumazinam iki tu maskes simboliu
          for (var n=selStart;n<selStart+selLength;n++) {
            var maskSymbol=getMaskSymbolAt(n,sMask,targ.value);
            //alert("1:"+maskSymbol);
            if (maskSymbol!="#" && maskSymbol!="A") {
              if (selLength>0) {
                selStart++;
                selLength--;
              }
            } else {
              break;
            }
          }
          if (selLength>0) {
            for (var m=selStart+1;m<selStart+selLength;m++) {
              var maskSymbol=getMaskSymbolAt(m,sMask,targ.value);
              //alert("2:"+maskSymbol);
              if (maskSymbol!="#" && maskSymbol!="A") {
                selLength=m-selStart;
                break;
              }
            }
          }
          //selectRange(targ,selStart,selStart+selLength);
          part1=targ.value.substring(0,selStart); //teksto dalis iki pazymetos dalies
          part2=targ.value.substring(selStart+selLength,textLength); //teksto dalis po pazymetos dalies
          targ.value=part1+part2;
          selectRange(targ,selStart,selStart);
        } else {
          if (keyTyped==8) { //backspace (turim uztikrint kad neistrintu maskes simboliu)
            if (part1.length>0) {
              //alert(getMaskSymbolAt(selStart-1,sMask,targ.value));
              if (getMaskSymbolAt(selStart-1,sMask,targ.value)=="#" || getMaskSymbolAt(selStart-1,sMask,targ.value)=="A") {
                part1=part1.substring(0,part1.length-1);
                targ.value=part1+part2;
                selectRange(targ,selStart-1,selStart-1);
              }
            }
          } else if (keyTyped==46) { //delete (turim uztikrint kad neistrintu maskes simboliu)
            if (part2.length>0) {
              //alert(getMaskSymbolAt(selStart-1,sMask,targ.value));
              if (getMaskSymbolAt(selStart,sMask,targ.value)=="#" || getMaskSymbolAt(selStart,sMask,targ.value)=="A") {
                part2=part2.substring(1,part2.length);
                targ.value=part1+part2;
                selectRange(targ,selStart,selStart);
              }
            }
          }
        }
        return false;
      }
    } else {
      return true;
    }
   }
  }
  function findNextNotMaskedSymbolPos(from,sMask) {
     var rasta=false;
        for (var n=from;n<sMask.length;n++) {
          var maskChar=sMask.substring(n,n+1);
          //alert("ieskomasisM="+maskChar);
          if (maskChar!="#" && maskChar!="A") {
            rasta=true;
            return n;
          }
        }
    if (!rasta) {
      return -1;
    }
  }
  function getCusorPosInMask(index,sMask,text) {
    //einam per teksta ir ziurim kuri maskes vieta atitinka kuria teksto vieta
    if (index<=sMask.length) {
      var maskPos=0;
      var nPos=-1; //paskutinio maskes simbolio (ne # ir ne A) pozicija maskej
      var equal=0;
      for (var i=0;i<index+1;i++) {
        var textChar=text.substring(i,i+1);
        nPos=findNextNotMaskedSymbolPos(maskPos,sMask);
        var maskChar=sMask.substring(nPos,nPos+1);
        if (textChar==maskChar) {
          if (nPos<sMask.length) {
            maskPos=nPos+1;
          }
          equal=1;
        } else {
          equal=0;
        }
      }
      if (nPos>0) {
        if (equal==1) {
          return nPos;
        } else {
          return nPos-1;
        }
      } else {
        return 0;
      }
    } else {
      return 0;
    }
  }
  function getMaskSymbolAt(index,sMask,text) {
    var pos=getCusorPosInMask(index,sMask,text);
    //alert("maskAt="+index+" is="+sMask.substring(pos,pos+1));
    return sMask.substring(pos,pos+1);
  }
  function isValidKey(key,maskSymbol) {
    if (maskSymbol=="#") {
      return isNumeric(key);
    } else if (maskSymbol=="A") {
      return isAlpha(key);
    } else {
      return false;
    }
  }
  // --------------------------------------------------------------------
  // Neleidziama vartotojui ivesti kitu simboliu negu yra maskeje, keisti
  // lauko simbolius ne pagal maske. IE4 only.
  // --------------------------------------------------------------------
  function smartMask(event, sMask) {
    var keyTyped = getKeyCode(event);
    var targ = getTarget(event);
    if (targ.createTextRange) {
    var textLength = targ.value.length;
    var selLength = getSelLength(targ); //gaunam pazymeto texto ilgi
    var seltxt = getSelectedText(targ); //gaunam pazymeta teksta
    var selStart = getCursorPos(targ); //gaunam kursoriaus pozicija
    var part1=targ.value.substring(0,selStart); //teksto dalis iki pazymetos dalies
    var part2=targ.value.substring(selStart+selLength,textLength); //teksto dalis po pazymetos dalies
    var key=String.fromCharCode(keyTyped);
    if (selStart==targ.value.length) {
      if (targ.value.length<sMask.length) {
        if (getMaskSymbolAt(selStart,sMask,targ.value)=="#") {
          if (isNumeric(key)) {
            targ.value=targ.value+key;
            if (selStart<sMask.length) {
              var sstr=sMask.substring(selStart+1,selStart+2);
              if ((sstr!="#") && (sstr!="A")) {
                targ.value=targ.value+sstr;
              }
            }
            targ.focus();
            return false;
          }
        } else if (getMaskSymbolAt(selStart,sMask,targ.value)=="A") {
          if (isAlpha(key)) {
            targ.value=targ.value+key;
            if (selStart<sMask.length) {
              var sstr=sMask.substring(selStart+1,selStart+2);
              if ((sstr!="#") && (sstr!="A")) {
                targ.value=targ.value+sstr;
              }
            }
            targ.focus();
            return false;
          }
        }
      } else {
        return false;
      }
    } else {
      if (selLength>0) {
        for (var n=selStart;n<selStart+selLength;n++) {
          var maskSymbol=getMaskSymbolAt(n,sMask,targ.value);
          //alert("1:"+maskSymbol);
          if (maskSymbol!="#" && maskSymbol!="A") {
            if (selLength>0) {
              selStart++;
              selLength--;
            }
          } else {
            break;
          }
        }
        if (selLength>0) {
          for (var m=selStart+1;m<selStart+selLength;m++) {
            var maskSymbol=getMaskSymbolAt(m,sMask,targ.value);
            //alert("2:"+maskSymbol);
            if (maskSymbol!="#" && maskSymbol!="A") {
              selLength=m-selStart;
              break;
            }
          }
        }
        //selectRange(targ,selStart,selStart+selLength);
        part1=targ.value.substring(0,selStart); //teksto dalis iki pazymetos dalies
        part2=targ.value.substring(selStart+selLength,textLength); //teksto dalis po pazymetos dalies
        //alert(getMaskSymbolAt(selStart,sMask,targ.value));
        if (isValidKey(key,getMaskSymbolAt(selStart,sMask,targ.value))) {
          targ.value=part1+key+part2;
          selectRange(targ,selStart+1,selStart+1);
        } else {
          selectRange(targ,selStart,selStart+selLength);
        }
        return false;
      } else {
        part1=targ.value.substring(0,selStart); //teksto dalis iki pazymetos dalies
        part2=targ.value.substring(selStart+selLength,textLength); //teksto dalis po pazymetos dalies
        //alert(getMaskSymbolAt(selStart,sMask,targ.value));
        var maskTest=getMaskSymbolAt(selStart-1,sMask,targ.value);
        if (maskTest!="#" && maskTest!="A") {
          var pos=getCusorPosInMask(selStart-1,sMask,targ.value);
          maskTest=sMask.substring(pos+1,pos+2);
        }
        //alert(maskTest);
        if (isValidKey(key,maskTest)) {
          targ.value=part1+key+part2;
          selectRange(targ,selStart+1,selStart+1);
        } else {
          selectRange(targ,selStart,selStart+selLength);
        }
        return false;
      }
    }
    } else {
      return anyMask(event,sMask);
    }
  }
  // --------------------------------------------------------------------
  // The Numeric KeyPad returns keyCodes that ain't all that workable.
  // ie: KeyPad '1' returns keyCode 97 which String.fromCharCode converts to an 'a'.
  // This way allows the Numeric KeyPad to be used
  // --------------------------------------------------------------------
  function cleanKeyCode(key)
  {
    switch(key)
    {
      case 96: return "0"; break;
      case 97: return "1"; break;
      case 98: return "2"; break;
      case 99: return "3"; break;
      case 100: return "4"; break;
      case 101: return "5"; break;
      case 102: return "6"; break;
      case 103: return "7"; break;
      case 104: return "8"; break;
      case 105: return "9"; break;
      default: return String.fromCharCode(key); break;
    }
  }
  // --------------------------------------------------------------------
  // Gauna kurioje input texto vietoje yra kursorius arba pazymeto teksto
  // pradzia. IE4 only.
  // --------------------------------------------------------------------
  function getCursorPos(el){
    var sel, rng, r2, i=-1;
    if(document.selection && el.createTextRange) {
      sel=document.selection;
      if(sel){
        r2=sel.createRange();
        rng=el.createTextRange();
        rng.setEndPoint("EndToStart", r2);
        i=rng.text.length;
      }
    }
    return i;
  }
  // --------------------------------------------------------------------
  // Gauna pazymeto teksto ilgi. Compatible with: Explorer 5-6 Win, Explorer 5.2 Mac,
  // Mozilla 1.6, Firefox, Safari 1.2, Opera 7.50, Netscape 4, iCab 2.9.8
  // --------------------------------------------------------------------
  function getSelLength(el){
    return getSelectedText(el).length;
  }
  // --------------------------------------------------------------------
  // Gauna pazymeta teksta. Compatible with: Explorer 5-6 Win, Explorer 5.2 Mac,
  // Mozilla 1.6, Firefox, Safari 1.2, Opera 7.50, Netscape 4, iCab 2.9.8
  // --------------------------------------------------------------------
  function getSelectedText(el)
  {
	var txt = '';
	if (window.getSelection)
	{
		txt = window.getSelection();
	}
	else if (document.getSelection)
	{
		txt = document.getSelection();
	}
	else if (document.selection && el.createTextRange) {
          var sel, rng, r2;
          sel=document.selection;
          if(sel){
            r2=sel.createRange();
            rng=el.createTextRange();
            rng.setEndPoint("StartToStart", r2);
            rng.setEndPoint("EndToEnd", r2);
            return rng.text;
          } else {
            return "";
          }
        }
	else return "";
	return txt;
  }

  // --------------------------------------------------------------------
  // Pazymi dali teksto laukelio. IE4 only.
  // --------------------------------------------------------------------
  function selectRange(field,selStart,selEnd) {
    if (field.createTextRange) {
      var r = field.createTextRange();
      var i = r.text.length;
      r.moveStart('character', selStart);
      r.moveEnd('character', selEnd-field.value.length);
      r.select();
    } else if (field.setSelectionRange) {
      field.setSelectionRange(selStart, selEnd);
    }
    field.focus();
  }

  function getTarget(e) {
  // IE5
    if (e.srcElement) {
      return e.srcElement;
    }
    if (e.target) {
      return e.target;
    }
  }

  function getKeyCode(e) {
    //IE5
    if (e.srcElement) {
      return e.keyCode
    }
    // NC5
    if (e.target) {
      return e.which
    }
  }

  function isNumeric(c) {
    var sNumbers = "01234567890";
    if (sNumbers.indexOf(c) == -1)
      return false;
    else return true;
  }

  function isAlpha(c) {
    var lCode = c.charCodeAt(0);
    if (lCode >= 65 && lCode <= 122 ) {
      return true;
    } else return false;
  }

  function isPunct(c) {
    var lCode = c.charCodeAt(0);
      if (lCode == 45 || lCode == 46 ) {
        return true;
      } else return false;
  }

  function Node(id, pid, name, url, title, target, icon, iconOpen, open,insert,check,language,checkVal, checked) {
	this.id = id;
	this.pid = pid;
	this.name = name;
	this.url = url;
	this.title = title;
	this.target = target;
	this.icon = icon;
	this.iconOpen = iconOpen;
	this.insert = insert;
	this.check = check;
	this.checkId = check+"_"+id;
	this.checked = checked;
	this.checkVal = checkVal;
	this.language = language;
	this._io = open || false;
	this._is = false;
	this._ls = false;
	this._hc = false;
	this._ai = 0;
	this._p;
  };



  // Tree object
  function dTree(objName) {
    this.config = {
		target					: null,

		folderLinks			: true,

		useSelection		: true,

		useCookies			: true,

		useLines				: true,

		useIcons				: true,

		useStatusText		: false,

		closeSameLevel	: false,

		inOrder					: false

	}

	this.icon = {

		root				: 'images/base.gif',

		folder			: 'images/folder.gif',

		folderOpen	: 'images/folderopen.gif',

		node				: 'images/page.gif',

		empty				: 'images/empty.gif',

		line				: 'images/line_tree.gif',

		join				: 'images/join.gif',

		joinBottom	: 'images/joinbottom.gif',

		plus				: 'images/plus.gif',

		plusBottom	: 'images/plusbottom.gif',

		minus				: 'images/minus.gif',

		minusBottom	: 'images/minusbottom.gif',

		nlPlus			: 'images/nolines_plus.gif',

		nlMinus			: 'images/nolines_minus.gif'

	};

	this.obj = objName;

	this.aNodes = [];

	this.aIndent = [];

	this.root = new Node(-1);

	this.selectedNode = null;

	this.selectedFound = false;

	this.completed = false;

	this.recSel = true;
};



// Adds a new node to the node array

dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open,insert,check,language, checkVal, checked) {

	this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open,insert,check,language, checkVal, checked);

};



// Open/close all nodes

dTree.prototype.openAll = function() {

	this.oAll(true);

};

dTree.prototype.closeAll = function() {

	this.oAll(false);

};
// Sakurad
dTree.prototype.openChecked = function() {
	for (var n=0; n<this.aNodes.length; n++) {
		if (this.aNodes[n].pid != this.root.id) { // this.aNodes[n]._hc && 
			var chBox = _gel(this.aNodes[n].checkId);
			if (chBox && chBox.checked) {
				this.openTo(n, false, true);
			}else{
				this.close(n);
			}
//			this.nodeStatus(status, n, this.aNodes[n]._ls)
//			this.aNodes[n]._io = status;
//			this.openTo(cn._p._ai, false, true);
		}
	}
	
//	alert(this.aNodes[3]._);
//	if (this.config.useCookies) this.updateCookie();
};

// Outputs the tree to the page

dTree.prototype.toString = function() {

	var str = '<div class="dtree">\n';

	if (document.getElementById) {

		if (this.config.useCookies) this.selectedNode = this.getSelected();

		str += this.addNode(this.root);

	} else str += 'Browser not supported.';

	str += '</div>';

	if (!this.selectedFound) this.selectedNode = null;

	this.completed = true;

	return str;

};



// Creates the tree structure

dTree.prototype.addNode = function(pNode) {

	var str = '';

	var n=0;

	if (this.config.inOrder) n = pNode._ai;

	for (n; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == pNode.id) {

			var cn = this.aNodes[n];

			cn._p = pNode;

			cn._ai = n;

			this.setCS(cn);

			if (!cn.target && this.config.target) cn.target = this.config.target;

			if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);

			if (!this.config.folderLinks && cn._hc) cn.url = null;

			if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {

					cn._is = true;

					this.selectedNode = n;

					this.selectedFound = true;

			}

			str += this.node(cn, n);

			if (cn._ls) break;

		}

	}

	return str;

};



// Creates the node icon, url and text

dTree.prototype.node = function(node, nodeId) {

	var str = '<div class="dTreeNode">' + this.indent(node, nodeId);

	if (this.config.useIcons) {

		if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);

		if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;

		if (this.root.id == node.pid) {

			node.icon = this.icon.empty;

			node.iconOpen = this.icon.empty;

		}

		str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" />';

	}

	if (node.check){
          str +='<input class=chboxas type=checkbox name='+node.check;
          str += ' id=' + node.checkId;
          if (node.checked) {
          	str += ' checked=checked'
          } 
          if (node.checkVal) {
          	str += ' value=' + node.checkVal;
          	
          } else {
          	str += ' value=off'
          }
          str += ' onclick="' + this.obj + '.c(\''+node.id+'\',\''+ node.checkId + '\');">';
         }
	if (node.insert)
		str += ' <a href=\'#\' onclick="'+node.insert+'">'+node.language+'&nbsp&nbsp';

	if (node.url) {

		str += '<a href=\'#\' id="s' + this.obj + nodeId + '" class="' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '" ';

		if (node.title) str += ' title="' + node.title + '"';

		if (node.target) str += ' target="' + node.target + '"';

		if (this.config.useStatusText) str += ' onmouseover="window.status=\'' + node.name + '\';return true;" onmouseout="window.status=\'\';return true;" ';

		if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))

			str += ' onclick=\"' + this.obj + '.s(' + nodeId + ');'+node.url+';"';

		str += '>';

	}

	else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)

		str += '<a onmouseover=\"style.cursor=\'pointer\';\" onclick=\"' + this.obj + '.o(' + nodeId + ');" class="node">';

	str += node.name;

	if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';
	str += '</div>';

	if (node._hc) {

		str += '<div id="d' + this.obj + nodeId + '" class="clip" style="display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';">';

		str += this.addNode(node);

		str += '</div>';

	}

	this.aIndent.pop();

	return str;

};



// Adds the empty and line icons

dTree.prototype.indent = function(node, nodeId) {

	var str = '';

	if (this.root.id != node.pid) {

		for (var n=0; n<this.aIndent.length; n++)

			str += '<img src="' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '" alt="" />';

		(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);

		if (node._hc) {

			str += '<a onmouseover=\"style.cursor=\'pointer\';\" onclick="' + this.obj + '.o(' + nodeId + ');"><img id="j' + this.obj + nodeId + '" src="';

			if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;

			else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );

			str += '" alt="" /></a>';

		} else str += '<img src="' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '" alt="" />';

	}

	return str;

};



// Checks if a node has any children and if it is the last sibling

dTree.prototype.setCS = function(node) {

	var lastId;

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.id) node._hc = true;

		if (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;

	}

	if (lastId==node.id) node._ls = true;

};



// Returns the selected node

dTree.prototype.getSelected = function() {

	var sn = this.getCookie('cs' + this.obj);

	return (sn) ? sn : null;

};



// Highlights the selected node

dTree.prototype.s = function(id) {

	if (!this.config.useSelection) return;

	var cn = this.aNodes[id];

	if (cn._hc && !this.config.folderLinks) return;

	if (this.selectedNode != id) {

		if (this.selectedNode || this.selectedNode==0) {

			eOld = document.getElementById("s" + this.obj + this.selectedNode);

			eOld.className = "node";

		}

		eNew = document.getElementById("s" + this.obj + id);

		eNew.className = "nodeSel";

		this.selectedNode = id;

		if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);

	}

};



// Toggle Open or close

dTree.prototype.o = function(id) {

	var cn = this.aNodes[id];

	this.nodeStatus(!cn._io, id, cn._ls);

	cn._io = !cn._io;

	if (this.config.closeSameLevel) this.closeLevel(cn);

	if (this.config.useCookies) this.updateCookie();
};

//kran: 
dTree.prototype.close = function(id){
	var cn = this.aNodes[id];

	if (!cn._hc){
		return;
	}

	this.nodeStatus(false, id, cn._ls);

	cn._io = false;

	if (this.config.closeSameLevel) this.closeLevel(cn);

	if (this.config.useCookies) this.updateCookie();

};

// Toggle Check or uncheck
 dTree.prototype.c = function(id, checkId) {
   	if(this.recSel == true){
   		for (var n=0; n<this.aNodes.length; n++) { 
		    if (this.aNodes[n].pid == id){
	      		checkall(_gel(checkId),_gel(this.aNodes[n].checkId));
			    this.c(this.aNodes[n].id,this.aNodes[n].checkId);
	    	}
    	}
    }
 };
  dTree.prototype.cc = function(id,chekas) {
  		alert(id);
     for (var n=0; n<this.aNodes.length; n++)
        if (this.aNodes[n].pid == id){
        	//checkall(id,chekas);
        	this.c(this.aNodes[n].id);
    }
 };

// Open or close all nodes

dTree.prototype.oAll = function(status) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {

			this.nodeStatus(status, n, this.aNodes[n]._ls)

			this.aNodes[n]._io = status;

		}

	}

	if (this.config.useCookies) this.updateCookie();

};

// Opens the tree to a specific node

dTree.prototype.openTo = function(nId, bSelect, bFirst) {

	if (!bFirst) {

		for (var n=0; n<this.aNodes.length; n++) {

			if (this.aNodes[n].id == nId) {

				nId=n;

				break;

			}

		}

	}

	var cn=this.aNodes[nId];

	if (cn.pid==this.root.id || !cn._p) return;

	cn._io = true;

	cn._is = bSelect;

	if (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);

	if (this.completed && bSelect) this.s(cn._ai);

	else if (bSelect) this._sn=cn._ai;

	this.openTo(cn._p._ai, false, true);

};



// Closes all nodes on the same level as certain node

dTree.prototype.closeLevel = function(node) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {

			this.nodeStatus(false, n, this.aNodes[n]._ls);

			this.aNodes[n]._io = false;

			this.closeAllChildren(this.aNodes[n]);

		}

	}

}



// Closes all children of a node

dTree.prototype.closeAllChildren = function(node) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {

			if (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);

			this.aNodes[n]._io = false;

			this.closeAllChildren(this.aNodes[n]);

		}

	}

}



// Change the status of a node(open or closed)

dTree.prototype.nodeStatus = function(status, id, bottom) {

	eDiv	= document.getElementById('d' + this.obj + id);

	eJoin	= document.getElementById('j' + this.obj + id);

	if (this.config.useIcons) {

		eIcon	= document.getElementById('i' + this.obj + id);

		eIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;

	}

	eJoin.src = (this.config.useLines)?

	((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):

	((status)?this.icon.nlMinus:this.icon.nlPlus);

	eDiv.style.display = (status) ? 'block': 'none';

};





// [Cookie] Clears a cookie

dTree.prototype.clearCookie = function() {

	var now = new Date();

	var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);

	this.setCookie('co'+this.obj, 'cookieValue', yesterday);

	this.setCookie('cs'+this.obj, 'cookieValue', yesterday);

};



// [Cookie] Sets value in a cookie

dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {

	document.cookie =

		escape(cookieName) + '=' + escape(cookieValue)

		+ (expires ? '; expires=' + expires.toGMTString() : '')

		+ (path ? '; path=' + path : '')

		+ (domain ? '; domain=' + domain : '')

		+ (secure ? '; secure' : '');

};



// [Cookie] Gets a value from a cookie

dTree.prototype.getCookie = function(cookieName) {

	var cookieValue = '';

	var posName = document.cookie.indexOf(escape(cookieName) + '=');

	if (posName != -1) {

		var posValue = posName + (escape(cookieName) + '=').length;

		var endPos = document.cookie.indexOf(';', posValue);

		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));

		else cookieValue = unescape(document.cookie.substring(posValue));

	}

	return (cookieValue);

};



// [Cookie] Returns ids of open nodes as a string

dTree.prototype.updateCookie = function() {

	var str = '';

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {

			if (str) str += '.';

			str += this.aNodes[n].id;

		}

	}

	this.setCookie('co' + this.obj, str);

};



// [Cookie] Checks if a node id is in a cookie

dTree.prototype.isOpen = function(id) {

	var aOpen = this.getCookie('co' + this.obj).split('.');

	for (var n=0; n<aOpen.length; n++)

		if (aOpen[n] == id) return true;

	return false;

};



// If Push and pop is not implemented by the browser

if (!Array.prototype.push) {

	Array.prototype.push = function array_push() {

		for(var i=0;i<arguments.length;i++)

			this[this.length]=arguments[i];

		return this.length;

	}

};

if (!Array.prototype.pop) {

	Array.prototype.pop = function array_pop() {

		lastElement = this[this.length-1];

		this.length = Math.max(this.length-1,0);

		return lastElement;

	}

};

//funkcija neleidzia ivesti field lauke daugiau ne maxlimit simboliu,
//field TEXTAREA laukas
function textCounter(field, maxlimit) {
  if (field != null)
  if (field.value.length > (maxlimit-1))
          field.value = field.value.substring(0, maxlimit-1);
      }
//Prastinimas
function Round(value) {
	var rlength = 4; // The number of decimal places to round to
	var newnumber = Math.round(value*Math.pow(10,rlength))/Math.pow(10,rlength);
	value = newnumber;
	return Round1(value);


}
function Round1(value) {
value=Math.round(value*100)/100;
return value;
}
function ChangeCheckParam(checkbox,param) {
if (checkbox.checked == false)
param.value='';
else
if (checkbox.checked == true)
param.value='yes';
}
function replace(s, t, u) {
  /*
  **  Replace a token in a string
  **    s  string to be processed
  **    t  token to be found and removed
  **    u  token to be inserted
  **  returns new String
  */
  i = s.indexOf(t);
  r = "";
  if (i == -1) return s;
  r += s.substring(0,i) + u;
  if ( i + t.length < s.length)
    r += replace(s.substring(i + t.length, s.length), t, u);
  return r;
  }

  function submitLang(kalba) {
    document.main_form_page_header.kalbos.value=kalba;
    setLocale(kalba, null);
  }

  function setStatus(status){
    if(status) {
      defaultStatus = status;
    }
    else {
      defaultStatus = '';
    }
  }
function isValidNum(num, period) {
	if ((num.length > period.length) || (num.length < 1))
		return false;
        for (i = 0; i < num.length; i++)
	  if ('0123456789.,'.indexOf(num.charAt(i)) < 0)
		return false;
	if ((parseInt(num) < 0) || (parseInt(num) > parseInt(period-1)))
		return false;
	return true;
}

function isCorrectDate(date, allowNull){
  if (allowNull && ((date == "") || (date == null)))
       return true
  aData = date.split('.');
  daySelected = parseInt(aData[2], 10);
  monthSelected = parseInt(aData[1], 10);
  yearSelected = parseInt(aData[0], 10);
  after = null;
  if (aData.length > 3){//jei latviskas formatas
  	after = parseInt(aData[3], 10);
  }
  if (isNaN(daySelected)||isNaN(monthSelected)||isNaN(yearSelected))
  	return false;
  if ((aData[0].length != 4) || (!isValidNum(aData[0], 9999)))
  	return false;
  if ((aData[1].length == 0) || (monthSelected < 1) || (monthSelected > 12) || (!isValidNum(aData[1], 13)))
  	return false;
  if ((aData[2].length == 0) || (daySelected < 1) || (daySelected > 31) || (!isValidNum(aData[2], 32)))
    return false;
  if (after != null){
  	if (aData[3].length != 0)
  		return false;
  }
  return true;
}

function rotate(dif, period, edit) {
time = document.getElementById(edit);
if (time.value == null || time.value == "") {
   return;
   }
times = time.value.split(":");
(period == 24) ?
(times[0] = (parseInt(times[0]) + parseInt(dif) + 24) % 24) :
(times[1] = (parseInt(times[1]) + parseInt(dif) + 60) % 60);
time.value = times[0]+":"+times[1]++;
}

function rotateInt(edit, max, min, dif) {
edit = document.getElementById(edit);
if (edit.value == null || edit.value == "") {
   return;
   }
val = parseInt(edit.value);
val += dif;
if (val < min) { val = max; }
if (val > max) { val = min; }
edit.value = val;
}

function isValidTime(time) {
 t = document.getElementById(time);
 if (t.value == null || t.value == "") {
   return true;
   }
 times = t.value.split(":");
 if (isNaN(times[0]) || isNaN(times[1])) return false;
 if (parseInt(times[0]) < 0 || parseInt(times[0]) > 23) return false;
 if (parseInt(times[1]) < 0 || parseInt(times[1]) > 59) return false;
 return true;
 }

function isValidTimeString(time) {
 if (time == null || time == "") {
   return true;
   }
 times = time.split(":");
 if (isNaN(times[0]) || isNaN(times[1])) return false;
 if (parseInt(times[0]) < 0 || parseInt(times[0]) > 24) return false;
 if (parseInt(times[1]) < 0 || parseInt(times[1]) > 60) return false;
 return true;
 }

function isValidTimeFieldFormat(dateAndTime) {
	parseDateString(dateAndTime);
	
	if ((getYearSelected() == null) || isNaN(getYearSelected()))
		return false;
		
	if ((getMonthSelected() == null) || isNaN(getMonthSelected()))
		return false;

	if ((getDaySelected() == null) || isNaN(getDaySelected()))
		return false;

	if ((getHourSelected() == null) || isNaN(getHourSelected()))
		return false;

	if ((getMinuteSelected() == null) || isNaN(getMinuteSelected()))
		return false;
	
	return true;
}
function isCorrectIntervalDate(date, allowNull){
  if (allowNull && ((date == "") || (date == null)))
       return true
  aData = date.split('.');
  daySelected = parseInt(aData[2], 10);
  monthSelected = parseInt(aData[1], 10);
  yearSelected = parseInt(aData[0], 10);
  if (isNaN(daySelected)||isNaN(monthSelected)||isNaN(yearSelected))
  	return false;
  if ((aData[0].length != 4) || (!isValidNum(aData[0], 9999)))
  	return false;
  if ((aData[2].length < 1) || (aData[2].length > 2) || (monthSelected < 1) || (monthSelected > 12) || (!isValidNum(aData[1], 13)))
  	return false;
  if ((aData[2].length < 1) || (aData[2].length > 2) || (daySelected < 1) || (daySelected > 31) || (!isValidNum(aData[2], 32)))
        return false;
  return true;
}
function calcDuration(start, end, edit) {
	var formatOk = true;
	startTime = document.getElementById(start).value;
	endTime = document.getElementById(end).value;
	startD = new Date();
	endD = new Date();
	duration = 0;
	
	parseDateString(startTime);
	startD = new Date(getYearSelected(),getMonthSelected(),getDaySelected(),getHourSelected(),getMinuteSelected());
	parseDateString(endTime);
	endD = new Date(getYearSelected(),getMonthSelected(),getDaySelected(),getHourSelected(),getMinuteSelected());
	time = Math.round((endD.getTime() - startD.getTime())/(1000*60*60)*100)/100;
	
	if (time >= 0)
		return time;
	else 
		return -1;
}
 function showDuration(start, end, edit) {
  editElement = document.getElementById(edit);
  editElement.value = calcDuration(start,end,edit);
 }
 
 function checkRequired(formName,message) {
 var col = document.forms[formName].elements;
 for (i=0; i < col.length; i++)
 {
   if ((col[i].required || col[i].getAttribute('required'))&& !col[i].disabled && !col[i].readOnly) {
   if ((col[i].type.toUpperCase() == ("TEXTAREA")) && (col[i].value.length == 0)) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("TEXT")) && (col[i].value.length == 0)) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("COMBOBOX")) && ((col[i].value == "-1") || (col[i].value == ""))) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("SELECT-ONE")) && ((col[i].value == "-1") || (col[i].value == ""))) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("RADIO")) && !col[i].checked) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("RADIO")) && !col[i].checked) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("FILE")) && (col[i].value.length == 0)) {
    showErrorMessage(message,col[i]);
    return false;
   }
   if ((col[i].type.toUpperCase() == ("HIDDEN")) && ((col[i].value == "-1") || (col[i].value == ""))) {
    showErrorMessage(message,col[i]);
    return false;
   }
   setLabelClass(col[i],'label');
  }
 }
 return true;
}

function showErrorMessage(message, obj) {
	alert(message);
	setLabelClass(obj,'errorLabel');
}

function setLabelClass(obj, clazz) {
	if (obj && obj.id)
		if (_gel(obj.id + '_lb'))
			_gel(obj.id + '_lb').className = clazz;
}

function filter(comboId, filterId) {
        filt = document.getElementById(filterId);
	combo = document.getElementById(comboId);
	var filterValue = filt.value.toLowerCase();
	for (i=0; i< combo.options.length; i++)
	{
		index = combo.options[i].text.toLowerCase().indexOf(filterValue);
		if ((index == -1) && (combo.options[i].value != "-1"))
		{
			combo.options[i] = null;
			i--;
		}
	}
        if(combo.options.length > 0) {
          if(combo.options[0].value != "-1")
            combo.options[0].selected = true;
          else if(combo.options.length > 1)
            combo.options[1].selected = true;
        }
}

function toggleFilter(source,img, path) {
  try {
    if (source.style.display == 'none') {
      source.style.display = 'inline';
      source.style.width = '100px';
      img.title="Pasl\u0117pti filtr\u0105";
      img.src = path + "filtras_dis.gif";
      } else {
        source.style.display = 'none';
        source.style.width = '100px';
        img.title="Rodyti filtr\u0105";
        img.src = path + "filtras.gif";
        }
        } catch (e) {
        }
}
function toggleObjVisibility(objId) {
  var obj = document.getElementById(objId);
  try {
    if (obj.style.display == 'none') {
      obj.style.display = 'inline';
    } else {
      obj.style.display = 'none';
    }
  } catch (e) {
  }
}
//--- Combobox'u valdymui ir susiejimui
//grazina pazymetos reiksmes value is nurodyto combobox
function findSelectedNr(comboId) {
	combo = document.getElementById(comboId);
	var selectednr=-1;
	for (i = 0; i < combo.length; i++) {
		if (combo.options[i].selected) {
			selectednr=combo.options[i].value;
		}
	}
	return selectednr;
}
//pazymi cmbbox reiksme pagal value, o ne pagal eiles nr
function selectByValue(comboId,value) {
	combo = document.getElementById(comboId);
	for (i = 0; i < combo.length; i++) {
		if (combo.options[i].value==value) {
			combo.options[i].selected=true;
			return null;
		}
	}
}
//Funkcija kad sumazinti HTML kodo kieki reikalinga kad i ComboBox ikelti option
function nCmbOp(caption,value) {
	combo[combo.options.length] = new Option(caption,value);
}
function expandCellData(source) {
        source.children(0).style.visibility = 'hidden';
        source.children(0).style.position = 'absolute';
        source.children(1).style.visibility = 'visible';
        source.children(1).style.position = 'static';
}

function collapsCellData(source) {
        source.children(1).style.visibility = 'hidden';
        source.children(1).style.position = 'absolute';
	source.children(0).style.visibility = 'visible';
	source.children(0).style.position = 'static';
}

function gridOnCellClick(source) {
        source = source.children(0);
        if (source.style.overflow == 'hidden') {
              source.style.overflow = 'visible';
              expandCellData(source);
        } else {
              source.style.overflow = 'hidden';
              collapsCellData(source);
        }
}

  var checkedall = false;
  function checkall(node,chekas){
  	if (node.id){
      	if (node.checked == true)
        	chekas.checked = true;
      	else chekas.checked = false;
    }
    else {
    	if(checkedall==true){
      		for (i=0,n=document.all.length;i<n;i++)
        		if (document.all[i].className.indexOf('chboxas') !=-1)
          	document.all[i].checked = false;
	    }
    	if(checkedall==false){
      		for (i=0,n=document.all.length;i<n;i++)
        		if (document.all[i].className.indexOf('chboxas') !=-1)
          	document.all[i].checked = true;
    	}
    	checkedall = !checkedall;
  	}
  }

  /*
  	miaw
  	
  	Virshuje esanti procedura pazhymi/nuzhymi visus checkbox'us
  	shia reikejo sukurti, kai tik tam tikro prefixo checkbox'ai turetu buti pazhymimi/nuzhymimi
   */
  function checkallcust(node, chekas, prefix){
  	if (node.id){
      	if (node.checked == true)
        	chekas.checked = true;
      	else chekas.checked = false;
    }
    else {
    	if(checkedall==true){
      		for (i=0,n=document.all.length;i<n;i++)
        		if (document.all[i].className.indexOf('chboxas') !=-1 &&
        				document.all[i].name.indexOf(prefix) == 0)
		          	document.all[i].checked = false;
	    }
    	if(checkedall==false){
      		for (i=0,n=document.all.length;i<n;i++)
        		if (document.all[i].className.indexOf('chboxas') !=-1 && 
        				document.all[i].name.indexOf(prefix) == 0)
			       	document.all[i].checked = true;
    	}
    	checkedall = !checkedall;
  	}
  }
    
function deselectGridRow() {
			if(document.getElementById(selected)) {
				document.getElementById(selected).className = '';
			}
		}
function selectGridRow(rowId, selId) {
   deselectGridRow();
   row = document.getElementById(rowId);
   selected = rowId;
   row.className = 'selected';
   chb = document.getElementById(rowId+"_chb");
   sels = document.getElementsByName(selId);
   for(i = 0; i < sels.length; i++) {
        sels[i].value = chb.value;
   }
}
var selectedElID = "";
var selectedElIndex = -1;
function selectElement(elID,elIndex,selectedColor,normalColor) {
  if (selectedElID!="") {
    var obj=document.getElementById(selectedElID);
    obj.style.background=normalColor;
  }
  obj=document.getElementById(elID);
  obj.style.background=selectedColor;
  selectedElID=elID;
  selectedElIndex=parseInt(elIndex);
}
function getSelectedElIndex() {
  return selectedElIndex;
}
function swapSelectedGridOptionsRow(newIndex) {
  if (selectedElIndex>-1) {
    var objTR1=document.getElementById("oprow_"+selectedElIndex);
    if (objTR1!=null) {
      var objTR2=document.getElementById("oprow_"+newIndex);
      if (objTR2!=null) {
        var objTD0_1=document.getElementById("opcell_"+selectedElIndex+"_0");
        var objTD0_2=document.getElementById("opcell_"+newIndex+"_0");
        var tempText=objTD0_2.innerHTML;
        
        objTD0_2.innerHTML='';
        objTD0_2.innerHTML=objTD0_1.innerHTML;
        objTD0_1.innerHTML='';
        objTD0_1.innerHTML=tempText;

        var obj1=document.getElementById("op_chb"+selectedElIndex);
        var obj2=document.getElementById("op_chb"+newIndex);
        tempText=obj1.value;
        obj1.value=obj2.value;
        obj2.value=tempText;

        obj1=document.getElementById("op_chbi"+selectedElIndex);
        obj2=document.getElementById("op_chbi"+newIndex);
        tempText=obj1.checked;
        obj1.checked=obj2.checked;
        obj2.checked=tempText;
        var disabled1=obj1.disabled;
        obj1.disabled=obj2.disabled;
        obj2.disabled=disabled1;

        obj1=document.getElementById("col_data_"+selectedElIndex);
        obj2=document.getElementById("col_data_"+newIndex);
        tempText=obj1.value;
        obj1.value=obj2.value;
        obj2.value=tempText;

        selectElement("oprow_"+newIndex,parseInt(newIndex),"#A9B2CA","#E1E1E1");
        objTD0_2.focus();
      }
    }
  }
}
function moveSelectedGridOptionsRow(newIndex) {
  if (newIndex>selectedElIndex) {
    for (i=selectedElIndex;i<newIndex;i++) {
      swapSelectedGridOptionsRow(i+1);
    }
  } else if (newIndex<selectedElIndex) {
    for (i=selectedElIndex;i>newIndex;i--) {
      swapSelectedGridOptionsRow(i-1);
    }
  }
}
function checkAllGrid(rowId) {
		    i = 0;
			checkedAll = true;
			while (document.getElementById(rowId+"_"+i+"_chb")) {
				if(!document.getElementById(rowId+"_"+i+"_chb").checked) {
					checkedAll = false;
				}
				i++;
			}
			i=0
			while (document.getElementById(rowId+"_"+i+"_chb")) {
				document.getElementById(rowId+"_"+i+"_chb").checked  = !checkedAll;
				i++;
			}
}

function isSelectedGrid(rowId) {
	i = 0;
	checked = false;
	while (document.getElementById(rowId+"_"+i+"_chb")) {
		if(document.getElementById(rowId+"_"+i+"_chb").checked) {
			return true;
		}
		i++;
	}
	return checked;
}

function cancelSubmit(e) {
  if (!e) var e = window.event;
    e.cancelBubble = true;
  alert(e.cancelable);
  if (e.stopPropagation) e.stopPropagation();
}

function setElementByIdValue(id,value){
  el = document.getElementById(id);
  if(el)
    el.value = value;
}

function setSelectedItemText(id,text){
  el = document.getElementById(id);
  if(el){
    el.options[el.selectedIndex].text = text;
    el2 = document.getElementById(el.options[el.selectedIndex].value);
    if(el2)
      el2.value = text;
  }
}

function setElementTitle(el){
  msie = document.all && !window.opera ? true : false;
  if(el){
    if(msie)
      el.title = el.innerText;
    else
      el.title = el.innerHTML;
    setStatus(el.title);
  }
}

/* 
 *	Grido parametrizuotas JS. Linas.
 */

    function initGrid(ID, pav, Name, gridID){
		if (gridID != null && document.getElementById(ID) != null){ 
			document.getElementById('select'+gridID).value = ID; 
			if (ID) selectrow(ID, unescape(pav), Name, gridID);
		}
    }

	var bgColor; 
    function selectrow(ID, pav, Name, gridID){
    	deselect(gridID,ID);
    	bgColor = document.getElementById(ID).style.backgroundColor;
    	if(document.getElementById(ID)){
      	document.getElementById(ID).className = 'selected';
      		document.getElementById(ID).style.backgroundColor ='#A9B2CA';
			document.getElementById('select'+gridID).value = ID; 
     		document.getElementById(document.getElementById('active'+gridID+'IDvar').value).value = document.getElementById(ID).getAttribute('rowid');
	    	document.getElementById(document.getElementById('active'+gridID+'IDvar').value).pavadinimas = pav;
     		var el = document.getElementById(ID);
     		returnvalues(el, Name, gridID);
			}
    }

    function deselect(gridID, ID){
		selected = document.getElementById('select'+gridID).value;		//new
		if(selected){
	    	if(document.getElementById(selected)){
    	  		document.getElementById(selected).className = '';
    	  		document.getElementById(selected).style.backgroundColor = bgColor;//Senos reiksmes reik bagroundui
    	}
    }
    }

    function initOrderBy(gridID){
		clicked = document.getElementById('clicked'+gridID).value;		//new
    	if(document.getElementById(clicked))
      		document.getElementById(clicked).ascending = document.getElementById('asc'+gridID).value;
    }

    function returnvalues(e, Name, gridID){
		var items = document.getElementById('FReturn_Names'+gridID).value.split(';');
     	var cols = e.getElementsByTagName('SPAN');

     	for(var j = 0; j < cols.length; j++){
      		var el = cols[j];
      		for(var i = 0; i < items.length; i++){
          		if(el.id)
            			if(el.id == items[i]){
             				document.getElementById(Name + items[i]).value = el.innerHTML;
				}
      		}
     	}
    }

    function selectchb(i, gridID){
    	document.getElementById('grid_chb' + gridID + 'id'+i).checked=true;
    }

	initScroll = false;
	headerDivHolder = null;
	mainDivHolder = null;
	mainTableHolder = null;
	scrollStaticColumns = 0;

	function scroll(id, gridID){
		mainid = document.getElementById('mainid'+gridID).value;
		headid = document.getElementById('headid'+gridID).value;
    	var main = document.getElementById(mainid);
		var head = document.getElementById(headid);
		head.scrollLeft = main.scrollLeft;
	}

    function scrollstatic(id, gridID, count){
		scrollStaticColumns = count;
		mainid = document.getElementById('mainid'+gridID).value;
		headid = document.getElementById('headid'+gridID).value;
    	var main = document.getElementById(mainid);
		var head = document.getElementById(headid);
		if (!initScroll)
		{
			if (headerDivHolder)
			{
				head.removeChild(headerDivHolder);
			}
			if (mainDivHolder)
			{
				_gel("pagr").removeChild(mainDivHolder);
			}
			var header = _gel("headertable");
			var newDiv = document.createElement("div");
			var newTable = header.cloneNode(true);
			var children = newTable.childNodes;
			if (children && children.length > 0)
			{
				while(children[0].tagName.toUpperCase() != "TH") {
					children = children[0].childNodes;
				}
				for (var i = 0; i < children.length; i++) 
				{	
					children[i].className = "EdrGridMainHeaderTableTableTh";
					children[i].firstChild.className = "EdrGridMainHeaderTableTableThSpan";
					if (i > scrollStaticColumns)
					{
						children[i].style.display = 'none';
					}
				}
			}
			newDiv.className = 'EdrGridMainHeader';
			newDiv.appendChild(newTable);
			newDiv.style.zIndex = head.style.zIndex + 10;
			newDiv.style.position = 'absolute';
			newDiv.style.width = newTable.style.width;
			newDiv.style.height = newTable.style.height;
			newDiv.style.top = 0;
			newDiv.style.left = 0;
			newDiv.style.border = 0;
			newDiv.style.marginLeft = newTable.style.marginLeft;
			newDiv.style.marginTop = newTable.style.marginTop;
			//newDiv.style.borderWidth = "0px";
			newDiv.style.borderStyle = "solid";
			newDiv.style.borderColor = "threedhighlight threedshadow threedshadow threedhighlight";
			newDiv.style.borderCollapse = "collapse";

			var data = _gel("datatable");
			var newDivData = document.createElement("div");
			var newTableData = data.cloneNode(false);
			newTableData.id = newTableData.id + "_";
			
			oldDiv = _gel("duomGridasID");
			newTableData.style.border = 0;
			newDivData.appendChild(newTableData);
			newTableData.style.width = data.style.width;
			newTableData.style.borderWidth = "0px 1px 0px 1px";
			newDivData.className = 'EdrGridTable';
			newDivData.style.zIndex = main.style.zIndex + 5;
			newDivData.style.position = 'absolute';
			newDivData.style.overflow = "hidden";
			newDivData.style.padding = "0px 0px 0px 0px";
			newDivData.style.background = 'threedhighlight';
			//---
			if (parseInt(oldDiv.style.height) - 37 > data.style.height)
			{
				newDivData.style.height = parseInt(main.style.height) - 37;
			} else {
				newDivData.style.height = parseInt(oldDiv.style.height)
			}
			newDivData.style.top = parseInt(oldDiv.offsetTop) + 20;
			newDivData.style.left = 0;
			newDivData.style.border = 0;
			newDivData.style.marginLeft = oldDiv.style.marginLeft;
			newDivData.style.marginTop = oldDiv.style.marginTop;
			newDivData.style.borderWidth = "1px 0px 0px 1px";
			newDivData.style.borderStyle = "solid";
			newDivData.style.borderColor = "threedshadow threedshadow threedshadow threedhighlight";
			newDivData.style.borderCollapse = "collapse";
			newDivData.style.background ="buttonface";			
			var childrenData = data.childNodes;
			var totalheight = 0;
			if (childrenData && childrenData.length > 0)
			{
				var newColgroup = childrenData[0].cloneNode(false);
				newTableData.appendChild(newColgroup);
				colgroupCols = childrenData[0].childNodes;
				for (var i = 0; i < colgroupCols.length; i++)
				{
					if (i <= scrollStaticColumns)
					{
						var col = colgroupCols[i].cloneNode(true);
						col.style.width = parseInt(colgroupCols[i].style.width) + 1;
						newColgroup.appendChild(col);
					}
				}
				var tbody = childrenData[1].cloneNode(false);
				newTableData.appendChild(tbody);
				childrenData = childrenData[1].childNodes;
				for (var i = 0; i < childrenData.length; i++) 
				{
					var tds = childrenData[i].childNodes;
					var tr = childrenData[i].cloneNode(false);
					tr.style.borderWidth = "1px 1px 0px 1px";
					totalheight += childrenData[i].style.height;
					tr.id = childrenData[i].id + "st";
					var innerCount = scrollStaticColumns;
					for (var j = 0; j < tds.length; j++)
					{
						if (j <= innerCount)
						{
							if (tds[j].tagName.toUpperCase() != "TD")
							{
								innerCount++;
							}
							var td = tds[j].cloneNode(true);
							tr.appendChild(td);
							spans = td.childNodes;
						}
					}
					tbody.appendChild(tr);
				}
			}
			_gel("pagr").appendChild(newDivData);
			head.appendChild(newDiv);
			initScroll = true;
			headerDivHolder = newDiv;
			mainDivHolder = newDivData;
			mainTableHolder = newTableData;
			if (parseInt(oldDiv.style.width) -18 < newTableData.offsetWidth)
			{
				newDivData.style.width = _gel("pagr").offsetWidth - 20;
			} else {
				newDivData.style.width = newTableData.offsetWidth + 1;
			}
		}
		headerDivHolder.style.left = main.scrollLeft;
		mainDivHolder.scrollTop = main.scrollTop;
    	head.scrollLeft = main.scrollLeft;
    }

    function headUp(gridID){
//		mainid = document.getElementById('mainid'+gridID).value;
//		headid = document.getElementById('headid'+gridID).value;
//    	var h = document.getElementById(headid).childNodes[0].childNodes(0).childNodes[0].childNodes;
//		var tableCols = document.getElementById(mainid).childNodes[0].childNodes[0].childNodes;
//    	for (var i = 0; i < h.length; i ++) {
//    		tableCols[i].style.width = h[i].offsetWidth;
//    	}
    }

    function clickHeader(id, col, Name, gridID){
		clicked = document.getElementById('clicked'+gridID).value;		
      	
    	if(clicked != (Name+'img'+id)){
    		var obj=document.getElementById(clicked);
			if(obj!=null) {
				obj.className = 'sort-arrow';
	   			obj.ascending = '';
			}
		}
	
		isNullObj=(document.getElementById(Name + 'img'+id))==null;

		if(!isNullObj && document.getElementById(Name+'img'+id).ascending == 'a'){ 
			asc = 'd'; 
			cn = 'sort-arrowdescending';
		} else if(!isNullObj && document.getElementById(Name + 'img'+id).ascending == 'd'){ 
			asc = ''; 
			cn = 'sort-arrow';
		} else{ 
			asc = 'a'; 
			cn = 'sort-arrowascending';
		}
   	 	
    	clicked = Name + 'img' + id;
    	
    	document.getElementById(Name + 'img'+id).ascending = asc;
    	document.getElementById(Name + 'img'+id).className = cn;
    	document.getElementById(Name + 'orderby' + gridID).value = col;
    	document.getElementById(Name + 'asc' + gridID).value = asc;
    	document.getElementById(Name + 'obid').value = clicked;
   	
    }

    function checkall_gridhb(gridID){
		checkedall = document.getElementById('checkedall'+gridID).value;	//new

	   	if(checkedall.indexOf('true') != -1){
	    	for (i=0,n=document.all.length; i<n; i++)
    			if (document.all[i].className.indexOf('grid_chboxai') != -1){
					if(document.all[i].name.indexOf('grid' + gridID + '_chb') != -1)
	    				document.all[i].checked = false;
			}
    		document.getElementById('checkedall'+gridID).value = 'false';
    	} 
    	if(checkedall.indexOf('false') != -1){
     		for (i=0,n=document.all.length; i<n; i++)
    			if (document.all[i].className.indexOf('grid_chboxai') != -1){
	    			if(document.all[i].name.indexOf('grid' + gridID + '_chb') != -1)
						document.all[i].checked = true;
			}
	    	document.getElementById('checkedall'+gridID).value = 'true';
    	} 
    }

    function checkPageValue(cv,viso, Name){
    	if((cv <= viso) && (cv > 0)) {
			document.getElementById(Name + 'beginfrom').value = cv; 
			return true;
		}
    	else {
			alert('Neteisingas puslapio numeris!');
    		return false;
		}
    }

    function checkRecordsValue(cv,viso, Name, Err){
    	if((cv <= viso) && (cv > 0)) {
			document.getElementById(Name + 'irasu_sk_puslapyje_tiksl').value = cv; 
			return true;
		}
    	else {
			alert(Err);
	   		return false;
		}
    }

    function resize(id){}
function submitenter(myfield,e,name)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
 
if (keycode == 13)
   {
   document.main_form.action.value=name;
   myfield.form.submit();   
   return false;
   }
else
   return true;
}


/*				Used by ZinComponents FormFilter			*/

function makeVisibleByNr(nr) {
        obj = document.getElementById(nr+"_formrow");
		var next = obj.nextSibling;
		while (next)
		{
		var children = next.childNodes;
		for (var i=0;i<children.length;i++) {
			var chlds = children[i].childNodes;
			if (children[i].childNodes && children[i].childNodes[0] && children[i].childNodes[0].tagName && children[i].childNodes[0].tagName.toUpperCase() == "TABLE")
			{
				var table = children[i].childNodes[0];
				table.style.padding = "0px";
			}
		}
		next = next.nextSibling;
		}
        obj.style.display="inline";
        obj2 = document.getElementById(nr+"_hid");
        obj2.value="yes";
}

function hideByNr(nr,caption,comboId) {
        obj = document.getElementById(nr+"_formrow");
        obj.style.display="none";
		var next = obj.nextSibling;
		while (next)
		{
		var children = next.childNodes;
		for (var i=0;i<children.length;i++) {
			var chlds = children[i].childNodes;
			if (children[i].childNodes && children[i].childNodes[0] && children[i].childNodes[0].tagName && children[i].childNodes[0].tagName.toUpperCase() == "TABLE")
			{
				var table = children[i].childNodes[0];
				table.style.padding = "0px";
			}
		}
		next = next.nextSibling;
		}
        obj2 = document.getElementById(nr+"_hid");
        obj2.value="";
        combo = document.getElementById(comboId);
        combo[combo.options.length] = new Option(caption,nr);
        obj3 = document.getElementById("filterChoose");
        obj3.disabled="";
}

function findSelectedNr(comboId) {
        combo = document.getElementById(comboId);
        var selectednr=-1;
        for (i = 0; i < combo.length; i++) {
                if (combo.options[i].selected) {
                        selectednr=combo.options[i].value;
                }
        }
        return selectednr;
}

function removeOption(comboId,optionnr) {
        combo = document.getElementById(comboId);
        for (i = 0; i < combo.length; i++) {
                if (combo.options[i].value==optionnr) {
                        combo.options[i]=null;
                }
        }
        combo.options[0].selected=true;
        if (combo.options.length < 2) {
                obj = document.getElementById("filterChoose");
                obj.disabled="disabled";
        }
}

function setOptionValues(id, values, text){
	var list = document.getElementById(id);
	if (list != null){
		for(var i=0; i<values.length; i++){
			option=document.createElement('OPTION');
			option.setAttribute('value', values[i]);
			comboText=document.createTextNode(text[i]);
			option.appendChild(comboText);
			list.appendChild(option);
		}
	}
}

//reikalinga del Progress Bar
function manageElements(value){
	/*var selects = document.getElementsByTagName('select');
	manageElement(selects, value, 'false');*/
	var inputs = document.getElementsByTagName('input');
	manageElement(inputs, value, 'true');
}

function manageClick(value){
	onclick = function (e){
		return value;
	}
}

function manageDblClick(value){
	ondblclick = function (e){
		return value;
	}
}

function managePopUpButtons(id, style, value){
	var btn = document.getElementById(id);
	if (btn != null){
		btn.className=style;
		if (window.addEventListener){
			btn.mouseover=style;
			btn.mouseout=style;
		}
		else{
			btn.onmouseover=style;
			btn.onmouseout=style;
			btn.onclick=value;
		}
	}
}

function manageElement(objElem, value, type){
	if (objElem != null){
		if (type == 'false'){//select
			for(var i=0;i<objElem.length;i++){
				if (objElem[i].type){
		 			objElem[i].disabled = value;
		 		}
	 		}
	  }
	  else{//input
	  	for(var i=0;i<objElem.length;i++){
	  		if (objElem[i].type){
			 		if (objElem[i].type == 'button'){
	  				objElem[i].disabled = value;
	  			}
	  			if (objElem[i].type == 'submit'){
	  				objElem[i].disabled = value;
	  			}
	  			if (objElem[i].type == 'image'){
	  				objElem[i].disabled = value;
	  			}
	  		}
	  	}
		}
	}
}

function makeMark(id){
	var inp = document.getElementById(id);
	if (inp == null){
		var inp = document.createElement("input");
		inp.type = "hidden";
		inp.setAttribute("id", id);
		inp.setAttribute("name", id);
		inp.setAttribute("value", "true");
		document.body.appendChild(inp);
	}
	else{
		inp.value="true";
	}
}

function canRestore(id){
	var inp = document.getElementById(id);
	if (inp == null){
		return true;
	}
	else{
		if (inp.value == "true"){
			inp.value="false"; 
			return false;
		}
		else{
			return true;
		}
	}
}

function restore(id, maskId){
	closeSimpleWindow(id);
	var msk = document.getElementById(maskId);
	if (msk != null){
		document.body.removeChild(msk);
	}
	manageElements(false);
}

function disableContent(id, style, popUpId, popUpStyle){
	var mask=document.createElement('div');
	mask.setAttribute("id", id);
	mask.className=style;
	document.body.appendChild(mask);
	manageElements(true);
	managePopUpButtons(popUpId, popUpStyle, null);
	manageClick(false);
	manageDblClick(false);
}

function makeGlobalMark(id, value){
	var inpMsk = document.createElement("input");
	inpMsk.type = "hidden";
	inpMsk.setAttribute("id", id);
	inpMsk.setAttribute("name", id);
	inpMsk.setAttribute("value", value);
	var bod = document.getElementsByTagName('body');
	if (bod != null){
		if (bod.length > 0){
			bod[0].appendChild(inpMsk);
		}
	}
}
var	allIds = new Array();
function selectAll(id) {
	var sel = true;
	var firstTime = true;
	for (i = 0; i < allIds.length ; i++ ) {
		var o = allIds[i];
		if (allIds[i] == (id + '_true')) {
			allIds[i] = id + '_false';
			sel = false;
			firstTime = false;
			break;
		}
		else if (allIds[i] == (id + '_false')) {
			allIds[i] = id + '_true';
			sel = true;
			firstTime = false;
			break;
		}
	}
	if (firstTime)
		allIds[allIds.length] = id + '_true';

	for (i = 0; true; i++ ){
		var o = document.getElementById(id+'_'+i);
		if (o) {
			o.checked = sel;
		} else 
			break;
		
	}
}

function _gel(id) {
	return document.getElementById(id);
}

function filterSelect(select) {
	if(select.selectedIndex == 0) {
		return;
	}
	option = select.options[select.selectedIndex];
	value = option.getAttribute('value');
	filter = document.getElementById('f' + value);
	filterHid = document.getElementById('filt' + value);
	if (filter && filterHid) {
		buttons = document.getElementById('filterButtons');
		filter.style.display = '';
		unhideFilterChildren(filter);
		buttons.style.display = '';
		filterHid.value = 'true';
		select.options[select.selectedIndex] = null;
		f_c = _gel('filt' + value + 'v_c');
		if (f_c)
			f_c.style.display = '';
	}
}

function hideFilter(filter) {
	filter = _gel(filter);
	select = _gel('filterChoose');
	filter.style.display = 'none';
	hideFilterChildren(filter);
	name = filter.childNodes[1].childNodes[0].nodeValue;
	index = filter.childNodes[1].getAttribute('index');
	select.options[select.options.length] = new Option(name, index);
	//count = _gel('filterCount').value;
	filterHid = _gel('filt' + index);
	filterHid.value = '';
	f_c = _gel('filt' + index + 'v_c');
	if (f_c)
		f_c.style.display = 'none';
	//if (count == select.options.length-1) {
		//_gel('filterButtons').style.display = 'none';
	//}
	}

function resetFilters() {
	count = parseInt(_gel('trueCount').value);
	for (i = 0; i < count; i++) {
		if (_gel('filt' + i)) {
			_gel('filt' + i).value = 'false';
		}
	}
}

function hideFilterChildren(el) {
	if (el && el.childNodes[2] && el.childNodes[2].childNodes[0]) {
		el.childNodes[2].style.display = 'none';
		el.childNodes[2].childNodes[0].style.display = 'none';
	}
}

function unhideFilterChildren(el) {
	if (el && el.childNodes[2] && el.childNodes[2].childNodes[0]) {
	    el.childNodes[2].style.display = '';
		el.childNodes[2].childNodes[0].style.display = '';
	}
}

function isValidTimeHours(time) {
	t = document.getElementById(time);
	
	if (t.value == null || t.value == "")
		return true;

	times = t.value.split(":");

	t.value = times[0] + ':' + '00';
		
	if (isNaN(times[0]) || isNaN(times[1])) return false;
	
	if (parseInt(times[0]) < 0 || parseInt(times[0]) > 23) return false;
	
	return true;
}

function setActiveElement(source,id) {
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;

	if ((key==null) || (key==0) || (key==8) ||
    	(key==9) || (key==13) || (key==27) ) {
		ob = _gel(id);
		if (ob) {
			ob.focus();
			end = ob.value.split(":")[0].length;
			if (window.event) {
				var o = ob.createTextRange();
				o.moveStart("character", 0);
   		        o.moveEnd("character",end-ob.value.length);
   	    	    o.select();
   	    	} else {
				ob.setSelectionRange(0,end);
   	    	}
		}
	}
}

function setCurrentTime(id) {
	var ob = _gel(id);
	if (ob) {
		var date = new Date();
		var min = date.getMinutes();
		var hour = date.getHours();
		if (min < 10) {
			min = '0' + min;
		}
		if (hour < 10) {
			hour = '0' + hour;
		}
		ob.value = convertToDateString(date) + ' ' + hour + ':' + min;
	}
}

function showTree(objectId, treeId) {	
	var object = _gel(objectId);
	var tree = _gel(treeId);
	if (object) {
		if (object.style.display == 'none') {
			object.style.display = '';
			tree.value = '1';
		} else {
			object.style.display = 'none';
			tree.value = '';
		}
	}
}

function selectrowstatic(ID, pav, Name, gridID){
    	deselectstatic(gridID,ID);
    	if(document.getElementById(ID)){	
      		document.getElementById(ID).className = 'selected';
      		document.getElementById(ID).style.backgroundColor ='#A9B2CA';
			if (document.getElementById(ID + "st"))
			{
				document.getElementById(ID+"st").className = 'selected';
				document.getElementById(ID+"st").style.backgroundColor ='#A9B2CA';
			}
			document.getElementById('select'+gridID).value = ID; 
     		document.getElementById(document.getElementById('active'+gridID+'IDvar').value).value = document.getElementById(ID).getAttribute('rowid');
	    	document.getElementById(document.getElementById('active'+gridID+'IDvar').value).pavadinimas = pav;
     		var el = document.getElementById(ID);
     		returnvalues(el, Name, gridID);
			}
}

function deselectstatic(gridID, ID){
		selected = document.getElementById('select'+gridID).value;
		if(selected){
	    	if(document.getElementById(selected)){
    	  		document.getElementById(selected).className = '';
    	  		document.getElementById(selected).style.backgroundColor = document.getElementById(ID).style.backgroundColor;
				if (document.getElementById(selected + "st"))
				{
					document.getElementById(selected + "st").className = '';
    	  			document.getElementById(selected + "st").style.backgroundColor = document.getElementById(ID).style.backgroundColor;
				}
    	}
    }
}

function enableElements(){	
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		for (var k = 0, l = elements.length; k < l; k++)
			elements[k].disabled = false;
	}
}

function disableElements(){
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		for (var k = 0, l = elements.length; k < l; k++)
			elements[k].disabled = true;
	}
}

function setElementsStateByCheckBox(){
	if (arguments.length < 2) return;
	var elements = document.getElementsByName(arguments[0]);
	if (elements.length < 1) return;
	var checkBox = elements[0];
	for (var i = 1, j = arguments.length; i < j; i++){
		if (checkBox.checked == true)
			enableElements(arguments[i]);
		else disableElements(arguments[i]);
	}
}

function setElementsStateByCheckBoxInv(){
	if (arguments.length < 2) return;
	var elements = document.getElementsByName(arguments[0]);
	if (elements.length < 1) return;
	var checkBox = elements[0];
	for (var i = 1, j = arguments.length; i < j; i++){
		if (checkBox.checked == true)
			disableElements(arguments[i]);
		else enableElements(arguments[i]);
	}
}

function setElementsReadonly(){	
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		for (var k = 0, l = elements.length; k < l; k++){
			elements[k].readOnly = true;
		}
	}
}

function setElementsReadWrite(){
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		for (var k = 0, l = elements.length; k < l; k++){
			elements[k].readOnly = false;
		}
	}
}

function setElementsVisible(){	
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		var obj = document.getElementById(arguments[i]);
		obj.style.visibility = "visible";
	}
}

function setElementsInvisible(){
	for (var i = 0, j = arguments.length; i < j; i++){
		var elements = document.getElementsByName(arguments[i]);
		var obj = document.getElementById(arguments[i]);
		obj.style.visibility = "hidden";
	}
}

function checkForHolidays(years, startDate, holidaysName, calendarDays, endDate) {
	if (years.value == "" || startDate.value == "" || holidaysName.selectedIndex == 0){
		return 1;
	}
	if ((calendarDays.value == "" || calendarDays.value == 0) && endDate.value == "") {
		return 2;
	}
	return 0;
}

/*@author magazz, disable/enable comboBox by name*/
function disableCombo(comboName, type) {
	var elem = document.getElementsByName(comboName);
	for(i=0; i<elem.length; i++) {
		if((elem[i].type.toLowerCase())==("select-one")){
			elem[i].disabled=type;
		}
	}
}

function checkInputLength(object, min, max) {
	if (object) {
		var currentSize = object.value.length;
		if (currentSize > max || currentSize < min) {
			object.value = '';
			object.focus();
			return false;
		}
	}
	return true;
}

function downloadNotifier(){
	makeGlobalMark("needsBar", "false");
	_gel("main_form").action.value="downloadNotifier";
	_gel("main_form").submit();
}

function enterModule(id) {
	document.navigator.inter_alga.value = id;
	document.navigator.action.value = 'inter_alga';
	createCookie('module', id, '365');
	document.navigator.submit();
}

function changeModule(module) {
	document.location.href = 'changeModule.pwb?module=' + module;
}

function setLocale(locale, action) {
	if (!action) {
		action = 'changeLocale.pwb'
	}
	
	document.location.href = action + '?locale=' + locale;
}

function showReport(action, method, reportName) {
	document.main_form.action.value=action;
	document.main_form.method.value=method;
	window.open("ShowReport?repname="+reportName+"","reportwindow");
	document.main_form.submit();
}
function disableElement(element) {
	_gel(element).disabled = true;
}

function makeReadOnlyElement(element) {
	_gel(element).readOnly = true;
}

function doLogin(waitLabel) {
	makeReadOnlyElement('userName');
	makeReadOnlyElement('password');
	disableElement('submitButton');
	disableElement('resetButton');
	_gel('wait').innerHTML = waitLabel;
	bar.showBar();
}

function enableObjects(check, objects) {
	if (check && objects) {
		var checked = check.checked;
		for (i = 0; i < objects.length; i++) {
			objects[i].disabled = !checked;
		}
	}
}

function redirect(url) {
	document.location.href=url;
}