dom = (document.getElementById)?(true):(false);
ie = document.all;
ie4 = ie && !dom;
nn4 = document.layers;

visible = (nn4)?('show'):('visible');
hidden = (nn4)?('hide'):('hidden');

var elem = 0, timer = 0;

function mouseOver(id,a)
{
	var open;
	if(!id) return;
	if(dom) open = document.getElementById(id);
	else if(ie4) open = document.all[id];
	else if(nn4) open = document.layers[id];

	if(!open)return;
	if(!nn4)open = open.style;

	if(timer){
		clearTimeout(timer);
		timer=0;
	}

	if(elem && open!=elem)hideNow();
	if(a) {open.left = menuLeft(id,a); open.top = menuTop(id,a);}
	open.visibility = visible;
	elem = open;
	hideSelects();
}

function mouseOut()
{
	timer = setTimeout('hideNow()',200);
}


function hideNow()
{
	if(elem) elem.visibility = hidden;
	elem = 0;
	showSelects();
}

function menuLeft(id,a) 
{
	if(nn4) return document.layers['x'+id].pageX-12;
	else {
		var pos = a.offsetLeft;
		while (a.offsetParent != null) {
			a = a.offsetParent;
			pos += a.offsetLeft;
			if (a.tagName == 'BODY') break;
		} return pos-12;
	}
}

function menuTop(id,a) 
{
	if(nn4) return document.layers['x'+id].pageY+17;
	else {
		var pos = a.offsetTop;
		while (a.offsetParent != null) {
			a = a.offsetParent;
			pos += a.offsetTop;
			if (a.tagName == 'BODY') break;
		} return pos+18;
	}
}

function changeMap(elemId, img)
{
	var elem;
	if(dom) elem = document.getElementById(elemId);
	else if(ie4)elem = document.all[elemId];
	else return;
	if(!elem) return;
	var img = document.images['img-'+elemId];
	
	if (elem.className == "filter" && elem.style.display == "" )
	{
		elem.style.display = "none";
	}
	
	with(elem.style)
		if(display == "block" || display == ""){
			display = "none";
			if(img) img.src = "/images/icon-folder.gif";
		}else{
			display = "block";
			if(img) img.src = "/images/icon-folder-active.gif";
		}
}

function cm(elemId)
{
	changeMap(elemId)
}

function Xopen(elemId)
{
var elem;
if(dom || ie4){
        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
        if(elem)
                with(elem.style)
                {
                        display = "block";
                }
}
return false;
}

function Xclose(elemId)
{
var elem;
if(dom || ie4){
        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
        if(elem)
                with(elem.style)
                {
                        display = "none";
                }
}
return false;
}

function updateOptions(fname, sname, rname, options) {
	var f = document.forms[fname]; if (!f) return;
	var s = f.elements[sname]; if (!s||!s.options) return;
	var r = f.elements[rname]; if (!r) return;
	var rv = 0;
	if (r.length) {
		for (var i = 0; i < r.length; i++) {
			if (r[i].checked) {
				rv = r[i].value; break;
			}
		}
	} else {
		rv = r.value;
	}
	var oldIndex = s.selectedIndex;
	var j = -1, slen = s.options.length;
	for (var i = 0; i < options.length; i++) {
		var contains = false;
		for (var k = 0; k < options[i][0].length; k++) {
			if (options[i][0][k] == rv) {
				contains = true; break;
			}
		}
		if (contains) {
			if (slen > ++j) {
				s.options[j].text = options[i][2];
				s.options[j].value = options[i][1];
			} else {
				s.options[j] = new Option(options[i][2], options[i][1]);
			}
		}
	}
	s.options.length = j + 1;
	if (oldIndex >= 0 && oldIndex < s.options.length) {
		s.selectedIndex = oldIndex;
	} else {
		s.selectedIndex = 0;
	}
}

function updateOptionsForCount(fname, sname, cbname, options) {
	var f = document.forms[fname]; if (!f) return;
	var s = f.elements[sname]; if (!s||!s.options) return;
	var c = f.elements[cbname]; if (!c) return;
	var ccnt = 0;
	if (c.length) {
		for (var i = 0; i < c.length; i++) {
			if (c[i].checked) ccnt++;
		}
	} else {
		ccnt = 1;
	}
	var oldIndex = s.selectedIndex;
	var j = -1, slen = s.options.length;
	for (var i = 0; i < options.length; i++) {
		if (options[i][0]==-1 || ccnt>=options[i][0]) {
			if (slen > ++j) {
				s.options[j].text = options[i][2];
				s.options[j].value = options[i][1];
			} else {
				s.options[j] = new Option(options[i][2], options[i][1]);
			}
		}
	}
	s.options.length = j + 1;
	if (oldIndex >= 0 && oldIndex < s.options.length) {
		s.selectedIndex = oldIndex;
	} else {
		s.selectedIndex = 0;
	}
}

function adjustBasketButtons()
{
  var f = document.forms["basket"]; if (!f) return;
	var c = f.elements["move"]; if (!c) return;
	var ccnt = 0;
	if (c.length) {
		for (var i = 0; i < c.length; i++) {
			if (c[i].checked) ccnt++;
		}
	} else {
	  if (c.checked) {
	    ccnt = 1;
	  }
	}
	
  var delete_elem, move_elem;
  if (dom || ie4) {
    delete_elem = (dom)?(document.getElementById("delete_goods")):(document.all["delete_goods"]);
    move_elem = (dom)?(document.getElementById("move_goods")):(document.all["move_goods"]);
    if (ccnt) {
      if (delete_elem) {
        delete_elem.style.display = "";
      }
      if (move_elem) {
        move_elem.style.display = "";
      }
    } else {
      if (delete_elem) {
        delete_elem.style.display = "none";
      }
      if (move_elem) {
        move_elem.style.display = "none";
      }
    }
  }
}

// Скрытие и отображение SELECT-ов
// ------------------------------------------------------------------
function hideSelects() {
	if (!document.all) return;
	var ss = document.all.tags("select");
	for (var i = 0; i < ss.length; i++) {
		if (ss[i].style.visibility != 'hidden') {
			if (ss[i].__shide_adjacent)
				ss[i].__shide_adjacent.outerHTML = '';
			var s_value = '&nbsp;';
			if (ss[i].options && ss[i].selectedIndex >= 0) {
				s_value = ss[i].options[ss[i].selectedIndex].text;
			}
			var a_left = 0, a_top = 0;
			for (var p = ss[i]; p != null; p = p.offsetParent) {
				a_left += p.offsetLeft;
				a_top += p.offsetTop;
			}
			var a_width = ss[i].offsetWidth, a_height = ss[i].offsetHeight;
			ss[i].insertAdjacentHTML('AfterEnd',
				'<span id="__shide_adjacent_' + i + '"' +
				' class="shide-adjacent"' +
				' style="position:absolute; left:' + a_left + '; top:' + a_top + ';' +
				' width:' + a_width + '; height:' + a_height + ';' +
				' padding-left: 4; padding-top: 2">' + s_value + '<\/span>');
			ss[i].__shide_adjacent = document.all['__shide_adjacent_' + i];
			ss[i].__shide_visibility = ss[i].style.visibility;
			ss[i].__shide_hidden = true;
			ss[i].style.visibility = 'hidden';
		}
	}
}
function showSelects() {
	if (!document.all) return;
	var ss = document.all.tags("select");
	for (var i = 0; i < ss.length; i++) {
		if (ss[i].__shide_hidden) {
			ss[i].style.visibility = ss[i].__shide_visibility;
			if (ss[i].__shide_adjacent) {
				ss[i].__shide_adjacent.outerHTML = '';
				ss[i].__shide_adjacent = null;
			}
		}
	}
}

// Функции, которые используются в визуальном редакторе для
// формирования всплывающих ссылок.
// ------------------------------------------------------------------
function popup(type, param, l, t, w, h) {
	if (!l && w) {
		l = parseInt((screen.availWidth - w) / 2);
	}
	if (!t && h) {
		t = parseInt((screen.availHeight - h) / 2);
	}
	window.open('/themes/default/popup.asp?type=' + type + '&param=' + param, 'popup', 'left=' + l + ',top=' + t + ',width=' + w + ',height=' + h).focus();
}
function popupEx(type, param, l, t, w, h, scroll, resizable, toolbar, menu, status) {
    if (!l && w) {
        l = parseInt((screen.availWidth - w) / 2);
    }
	if (!t && h) {
		t = parseInt((screen.availHeight - h) / 2);
	}
	window.open('/themes/default/popup.asp?type=' + type + '&param=' + param, 'popup', 'left=' + l + ',top=' + t + ',width=' + w + ',height=' + h + ',scrollbars=' + scroll + ',resizable=' + resizable + ',toolbar='+toolbar + ',menubar=' + menu + ',status=' + status).focus();
}

//*********************************************
//* элементарные функции для работы со слоями *
//*********************************************

function showElem(elemId) {
    if (dom) {
        document.getElementById(elemId).style.visibility = "visible";
    }
	else {
	    if (ie4) {
	        document.all[elemId].style.visibility = "visible";
	    }
		else {
		    if (nn4) {
		        document.layers[elemId].visibility = "show";
		    }
		}
    }
}

function hideElem(elemId) {
    if (dom) {
        document.getElementById(elemId).style.visibility = "hidden";
    }
	else {
	    if (ie4) {
	        document.all[elemId].style.visibility = "hidden";
	    }
		else {
		    if (nn4) {
		        document.layers[elemId].visibility = "hide";
		    }
		}
    }
}

function putElem(elemId) {
    if (dom) {
        document.getElementById(elemId).style.display = "block";
    }
	else {
	    if (ie4) {
	        document.all[elemId].style.display = "block";
	    }
	}
}

function removeElem(elemId) {
    if (dom) {
        document.getElementById(elemId).style.display = "none";
    }
	else {
	    if (ie4) {
	        document.all[elemId].style.display = "none";
	    }
	}
}

function moveElem(idname,x,y) {
    if (dom) with(eval(idname)) {
		    style.left = x;
		    style.top = y;
	}
    else {
        if(nn4) {
		    document.layers[idname].left=x;
		    document.layers[idname].top=y;
		}
	}
}

function changeElem(elemId) {
    if(dom) {
        if(document.getElementById(elemId).style.display == "block") {
		    document.getElementById(elemId).style.display = "none";
		}
	    else {
    		document.getElementById(elemId).style.display = "block";
        }
    }
    else {
        if (ie4) {
	        if(document.all[elemId].style.display == "block") {
		        document.all[elemId].style.display = "none";
		    }
		}
	    else {
		    document.all[elemId].style.display = "block";
		}
    }
}

function exchangeElem(elemId) {
    if(dom) {
	    if(document.getElementById(elemId).style.visibility == "hidden") {
		    document.getElementById(elemId).style.visibility= "visible";
		}
	    else {
		    document.getElementById(elemId).style.visibility= "hidden";
        }
    }
    else {
        if (ie4) {
	        if (document.all[elemId].style.visibility== "hidden") {
        		document.all[elemId].style.visibility= "visible";
        	}
	        else {
		        document.all[elemId].style.visibility= "hidden";
		    }
		}
        else {
            if (nn4) {
	            if(document.layers[elemId].visibility=="hide") {
		            document.layers[elemId].visibility="show";
		        }
	            else {
		            document.layers[elemId].visibility="hide";
		        }
		    }
		}
    }
}

function relPosX(which) {
    if (nn4) {
        return document.layers[which].pageX;
    } 
    else {
        var elem = (dom)? document.getElementById(which) : document.all[which];
        var pos = elem.offsetLeft;
        while (elem.offsetParent != null) {
            elem = elem.offsetParent;
            pos += elem.offsetLeft;
            if (elem.tagName == 'BODY') {
                break;
            }
        } 
        return pos;
    }
}

function relPosY(which) {
    if (nn4) {
        return document.layers[which].pageY;
    } 
    else {
        var elem = (dom)? document.getElementById(which) : document.all[which];
        var pos = elem.offsetTop;
        while (elem.offsetParent != null) {
            elem = elem.offsetParent;
            pos += elem.offsetTop;
            if (elem.tagName == 'BODY') {
                break;
            }
        } 
        return pos;
    }
}

/*########### added by sergo */
			function checkDate(d, m, y) {
				var dayInM2;
				
				if (d < 1 || m < 1 || y < 1 || m < 1 || m > 12 ) {
					throw "date format incorrect";
				}
				if ( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 ) {
					if ( d > 31 ) {
						throw "date format incorrect";
					}
				} else if ( m != 2 ) {
					if ( d > 30 ) {
						throw "date format incorrect";
					}
				} else {
					if ( !(y % 4) && ((y % 100) || !(y % 400)) ) {
						dayInM2 = 29;
					} else {
						dayInM2 = 28;
					}
					if ( d > dayInM2 ) {
						throw "date format incorrect";
					}
				}
			}
			
			function filterCheckParam() {
				var ds = document.getElementById("ds").value;
				var df = document.getElementById("df").value;
				var re1 = /^\s*[0-3]?[0-9][\.\,\\\/\-][0-1]?[0-9][\.\,\\\/\-][0-9]{4}\s*$/;
				var re2 = /(\d{1,4})/g;
				var m;
				var sd, sm, sy, fd, fm, fy;
				
				if ( ds != "" ) {
					try {
						if ( !re1.test(ds) ) {
							throw "date format incorrect";
						}
						m = ds.match(re2);
						sd = new Number(m[0]);
						sm = new Number(m[1]);
						sy = new Number(m[2]);
						checkDate(sd, sm, sy);
					} catch(e) {
						showErrorMessage("Некорректно заполнены некоторые поля:<br><br><b style=\"color: #001E66\">Некорректный формат начальной даты</b>");
						return false;
					}
				}
				
				if ( df != "" ) {
					try {
						if ( !re1.test(df) ) {
							throw "date format incorrect";
						}
						m = df.match(re2);
						fd = new Number(m[0]);
						fm = new Number(m[1]);
						fy = new Number(m[2]);
						checkDate(fd, fm, fy);
					} catch(e) {
						showErrorMessage("Некорректно заполнены некоторые поля:<br><br><b style=\"color: #001E66\">Некорректный формат конечной даты</b>");
						return false;
					}
				}
				
				
				if ( (ds != "") && (df != "") ) {
					try {
						if ( fy.valueOf() < sy.valueOf() ) {
							throw "date diapason incorrect";
						} else {
							if ( fy.valueOf() == sy.valueOf() ) {
								if ( fm.valueOf() < sm.valueOf() ) {
									throw "date diapason incorrect";
								} else {
									if ( fm.valueOf() == sm.valueOf() ) {
										if ( fd.valueOf() < sd.valueOf() ) {
											throw "date diapason incorrect";
										}
									}
								}
							}
						}
					} catch(e) {
						showErrorMessage("Некорректно заполнены некоторые поля:<br><br><b style=\"color: #001E66\">Конечная дата должна быть больше начальной даты</b>");
						document.getElementById("df").focus();
						document.getElementById("df").select();
						return false;
					}
				}
			 	return true;
			}
			
			function showErrorMessage(text) {
				var objectContener = document.getElementById("errorMessageContener");
				var textContener = document.getElementById("errorMessageText");
				
				//objectContener.style.display = "block";
				textContener.innerHTML = text;
				blinkErrorMessage();
			}
			
			function blinkErrorMessage() {
				var objectContener = document.getElementById("errorMessageContener");
				if ( objectContener.style.display != "none" ) {
					objectContener.style.display = "none";
					window.setTimeout("blinkErrorMessage()", 300);
				} else {
					objectContener.style.display = "block";
				}
			}

							/*dom = (document.getElementById)?(true):(false);
							ie = document.all;
							ie4 = ie && !dom;
							nn4 = document.layers;*/
							
							function cm(elemId)
							{
								var elem;
								if(dom || ie4){
								        elem = (dom)?(document.getElementById(elemId)):(document.all[elemId]);
								        if(elem)
								                with(elem.style)
								                if(display == "block" || display == ""){
								                        display = "none";
								                }
								                else{
								                        display = "block";
								                }
								}
								return false;
							}				
							
							
					    function update(value,par,asd)
					    {
							var i;
							
							var elements = document.forms["form2"].elements;
							for (i=0; i<elements.length; i++)
							{
								if (elements[i].id.indexOf(par)!=-1 && !elements[i].disabled && elements[i].id != asd && elements[i].type == 'checkbox' )
									elements[i].checked = value;
							}
					    }         
					    
					    
					    function update_disable(value,par,asd)
					    {
							var i;
							var elements = document.forms["form2"].elements;
							
							for (i=0; i<elements.length; i++)
							{
								if (elements[i].id.indexOf(par)!=-1 && elements[i].id != asd  && elements[i].type == 'checkbox' )
									elements[i].disabled = value;
							}
					    } 

