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, smartelem = 0, smarttimer = 0;
var leftshift = -12, topshift = 18;

function setLeftTopShift(lval, tval)
{
	if(lval == null || isNaN(lval)) leftshift = -12;
	else                            leftshift = lval;
	if(tval == null || isNaN(tval)) topshift = 18;
	else                            topshift = tval;	
}

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 mouseOverSmart(id,a,b)
{
	hideNowSmart();
	var open;
	var defLeft = (getObj(b) != null)?( menuLeft(null, getObj(b)) ) : 0;
	var defTop  = (getObj(b) != null)?( menuTop(null, getObj(b)) ) : 0;
	// Переменные defLeft и defTop помогают выровнят равномерно все элементы id относительно своих родительских элементов
	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) - defLeft + leftshift; open.top = menuTop(id,a) - defTop + topshift;}

	open.visibility = visible;
	elem = open;
	hideSelects();

	smartelem = elem; elem = 0;	
}

function mouseOutSmart()
{
	smarttimer = setTimeout('hideNowSmart()',200);
}

function mouseOut()
{
	timer = setTimeout('hideNow()',200);
}

function stopHide()
{
	if(timer != 0){ clearTimeout(timer); }
	if(smarttimer != 0) { clearTimeout(smarttimer); }
	event.cancelBubble = true;
}

function hideNow()
{
	if(elem) elem.visibility = hidden;
	elem = 0;
	showSelects();
}

function hideNowSmart()
{
	if(smartelem) smartelem.visibility = hidden;
	if(smarttimer != 0) clearTimeout(smarttimer);
	smartelem = 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];
	
	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 (!($.browser.msie && $.browser.version <= 6)) return;
	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 (!($.browser.msie && $.browser.version <= 6)) return;
	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 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;
    }
}

// Функции, используемые для формирования динамических вложенных форм
// ------------------------------------------------------------------
function make_subform(formName, commonName, templateName, idParam) {
	var template = getElement(templateName);
	if (template == null) return false;
	var cell = template.parentNode;
	if (!cell) return false;
	var newId = 1;
	while (true) {
		if (!getElement(commonName + newId))
			break;
		newId++;
	}
	if (template.outerHTML) {
		var newElementHtml = template.outerHTML
			.replace(new RegExp(idParam, 'ig'), newId)
			.replace(/subform_template_/i, 'subform_')
			.replace(/style\s*=\s*["']?display:\s*none;?["']?\s*/i, '');
		template.insertAdjacentHTML('BeforeBegin', newElementHtml);
	} else {
		var newElement = template.cloneNode(false);
		if (!newElement) return false;
		newElement.style.display = '';
		newElement.id = commonName + newId;
		newElement.innerHTML = template.innerHTML
			.replace(new RegExp(idParam, 'ig'), newId);
		cell.appendChild(newElement);
	}

	return false;
}

// Вспомогательные функции
// ------------------------------------------------------------------
function getElement(id) {
	if (document.all) {
		return document.all[id];
	} else if (document.getElementById) {
		return document.getElementById(id);
	} else return null;
}
function cb_s_other(s,dn) {
	if (!s.options) return;
	var v = '', d = getElement(dn);
	if (!d) return;
	for (i = 0; i < s.options.length; i++) {
		if (s.options[i].selected) v = s.options[i].value;
	}
	d.style.display = v==''?'':'none';
}
function topnav_navigate(url) {
	window.location = url;
}

// Функции, которые используются в визуальном редакторе для
// формирования всплывающих ссылок.
// ------------------------------------------------------------------
function popup(type, param, l, t, tw, th) {
	var w = parseInt(tw), h = parseInt(th);
	if (isNaN(w)) {
		w = 400;
	} else {
		w = w + 40;
	}
	if (isNaN(h)) {
		h = 300;
	} else {
		h = h + 40;
	}
	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, tw, th, scroll, resizable, toolbar, menu, status, title) {
	var w = parseInt(tw), h = parseInt(th);
	if (isNaN(w)) {
		w = 400;
	} else {
		w = w + 40;
	}
	if (isNaN(h)) {
		h = 300;
	} else {
		h = h + 40;
	}
    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 + (title ? '&title=' + title : ''), 'popup', 'left=' + l + ',top=' + t + ',width=' + w + ',height=' + h + ',scrollbars=' + scroll + ',resizable=' + resizable + ',toolbar='+toolbar + ',menubar=' + menu + ',status=' + status).focus();
}

// Функции для работы с формами
// ------------------------------------------------------------------

var forms_dynamics_field_rels = [];
var forms_dynamics_field_ref_rels = [];

function forms_dynamics_field_rel(ref_field, field, op, value) {
	this.ref_field = ref_field;
	this.field = field;
	this.op    = op;
	this.value = value;
	
	this.checkVisible = function(values) {
		if (this.checkOp(values, this.value)) {
			return true;
		}
		return false;
	}
	
	this.checkOp = function(values, value) {
		switch (this.op) {
			case 'i' :
			case 'or_i' :
			case 'and_i' :
				return this._includes(values, value);
			case 'x' :
			case 'or_x' :
			case 'and_x' :
				return this._excludes(values, value);
			default  :
				return false;
		}
	}
	
	this._includes = function(values, value) {
		if (values.length) {
			for (var i = 0; i < values.length; i++) {
				if (values[i] == value)
					return true;
			}
			return false;
		} else {
			return values == value;
		}
	}
	
	this._excludes = function(values, value) {
		if (values.length) {
			for (var i = 0; i < values.length; i++) {
				if (values[i] == value)
					return false;
			}
			return true;
		} else {
			return values != value;
		}
	}
}

function forms_dynamics_field_update(field) {
	var rel_i, rel, v = false;
	for (rel_i in forms_dynamics_field_rels[field.id]) {
		rel = forms_dynamics_field_rels[field.id][rel_i];
		var r_v = rel.checkVisible(forms_dynamics_get_values(rel.ref_field));
		if (rel.op.match(/^and_/)) {
			if (!r_v) {
				v = false; break;
			} else {
				v = true;
			}
		} else {
			if (r_v) {
				v = true; break;
			}
		}
	}
	field.style.display = v ? '' : 'none';
}

function forms_dynamics_field_ref_update_el(el) {
	var rel_i, rel;
	for (rel_i in forms_dynamics_field_ref_rels[el.name]) {
		rel = forms_dynamics_field_ref_rels[el.name][rel_i];
		forms_dynamics_field_update(rel.field);
	}
}

function forms_dynamics_field_ref_update() {
	return forms_dynamics_field_ref_update_el(this);
}

function forms_dynamics_attach_field(form_name,field_name,ref_field_name,op,value) {
	var form = document.forms[form_name];
	if (!form) return;
	var field = getElement(field_name);
	if (!field) return;
	var ref_field = form.elements[ref_field_name];
	if (!ref_field) return;
	var newRel = new forms_dynamics_field_rel(ref_field, field, op, value);
	if (!forms_dynamics_field_rels[field.id]) {
		forms_dynamics_field_rels[field.id] = [newRel];
	} else {
		forms_dynamics_field_rels[field.id].push(newRel);
	}
	if (!forms_dynamics_field_ref_rels[ref_field_name]) {
		forms_dynamics_field_ref_rels[ref_field_name] = [newRel];
	} else {
		forms_dynamics_field_ref_rels[ref_field_name].push(newRel);
	}
	forms_dynamics_attach_event(ref_field);
}

function forms_dynamics_attach_event(field) {
	if (!field.tagName && field.length) {
		for (var i = 0; i < field.length; i++) {
			forms_dynamics_attach_event(field[i]);
		}
	} else if (field.tagName == 'INPUT' && (field.type == 'checkbox' || field.type == 'radio')) {
		field.onclick = forms_dynamics_field_ref_update;
	} else {
		field.onchange = forms_dynamics_field_ref_update;
		if (field.type == 'text' || field.tagName == 'TEXTAREA') {
			field.onkeyup = forms_dynamics_field_ref_update;
		}
	}
}

function forms_dynamics_get_values(field) {
    if (field.length && !field.tagName) {
        return forms_dynamics_get_values(field[0]);
    } else if (field.tagName.toUpperCase() == 'INPUT' &&
		field.type && (field.type.toUpperCase() == 'CHECKBOX' || field.type.toUpperCase() == 'RADIO') &&
		field.form) {
		var fs = field.form.elements[field.name], v_i = 0, v = [];
		if (fs.length) {
			for (var i = 0; i < fs.length; i++) {
				if (fs[i].checked)
					v[v_i++] = fs[i].value;
			}
		} else {
			v[0] = fs.checked ? fs.value : null;
		}
		return v;
	} else {
		return [field.value];
	}
}


// Функции для работы с размерами шрифтов
// ------------------------------------------------------------------

function fontsize_findHead() {
	var d_cn = document.childNodes;
	for (var i = 0; i < d_cn.length; i++) {
		var d_n = d_cn[i];
		if (d_n.tagName == 'HTML') {
			var h_cn = d_n.childNodes;
			for (var j = 0; j < h_cn.length; j++) {
				var h_n = h_cn[j];
				if (h_n.tagName == 'HEAD')
					return h_n;
			}
		}
	} return null;
}

function fontsize_escape(s) {
	return escape(s).replace(/_/g,'%5F');
}

function fontsize_newImage(size,num,altTemplate) {
	var img = new Image(17,17);
	img.src = '/images/fontsize-'+size+num+'.gif';
	img.alt = altTemplate.replace('_%_',size);
	img.border = 0;
	return img;
}

function fontsize_switch(newSize,urlTemplate,altTemplate,cookieName)
{
	if (!document.styleSheets) return true;
	
	var elems = [], styles = [], switches = [], head = fontsize_findHead();
	
	if (!head) return true;
	
	switches[1] = function() { return fontsize_switch(1,urlTemplate,altTemplate,cookieName); };
	switches[2] = function() { return fontsize_switch(2,urlTemplate,altTemplate,cookieName); };
	switches[3] = function() { return fontsize_switch(3,urlTemplate,altTemplate,cookieName); };
	switches[4] = function() { return fontsize_switch(4,urlTemplate,altTemplate,cookieName); };

	for (var i = 1; i <= 4; i++) {
		if (document.all) {
			elems[i] = document.all['fontsize_e_'+i];
			styles[i] = document.all['fontsize_s_'+i];
		} else if (document.getElementById) {
			elems[i] = document.getElementById('fontsize_e_'+i);
			styles[i] = document.getElementById('fontsize_s_'+i);
		} else return true;
		if (!elems[i]) return true;
	}
	
	document.cookie = fontsize_escape(cookieName)+'='+newSize+'; path=/; expires='+new Date(2036,12,31).toGMTString();
	
	for (var i in elems) {
		var newElem = null, parent = elems[i].parentNode;
		if (parent) {
			if (i == newSize) {
				newElem = fontsize_newImage(i,1,altTemplate);
			} else {
				newElem = document.createElement('A');
				newElem.href = urlTemplate.replace(fontsize_escape('_%_'),i);
				newElem.appendChild(fontsize_newImage(i,2,altTemplate));
				newElem.onclick = switches[i];
			}
			if (newElem) {
				newElem.id = 'fontsize_e_'+i;
				parent.replaceChild(newElem,elems[i]);
			}
			if (i == newSize) {
				if (!styles[i])
				{
					var s = document.createElement('link');

					s.id = 'fontsize_s_' + i;
					s.rel = 'stylesheet';
					s.type = 'text/css';
					s.href = '/themes/default/css/fontsize-'+i+'.css';
					
					try {
						head.appendChild(s);
					} catch (e) {
						return true;
					}
				} else {
					styles[i].disabled = false;
				}
			} else {
				if (styles[i]) styles[i].disabled = true;
			}
		}
	}
	
	return false;
}

// Функции для работы с tabgroup-ами
// ------------------------------------------------------------------

function tabgroup_find(id) {
	if (document.all) {
		return document.all[id];
	} else if (document.getElementById) {
		return document.getElementById(id);
	} else return null;
}
function tabgroup_switch(group_id,tab_id,url_template,param_template) {
	var group_e = tabgroup_find(group_id);
	
	if (!group_e || !group_e.cells || !group_e.cells.length) return true;
	
	for (var i = 0; i < group_e.cells.length; i++) {
		var group_c = group_e.cells[i];
		if (group_c.id)
			if (!tabgroup_switch_element(group_id,group_c.id,tab_id,url_template,param_template))
				return true;
	}
	
	return false;
}
function tabgroup_switch_element(group_id,elem_id_base,tab_id,url_template,param_template) {
	var elem_id_simple = elem_id_base.replace(/^tab_e_(?:\d+)_(.*)$/,'$1');
	var content_id = elem_id_base.replace(/^tab_e_(.*)$/,'tab_c_$1');
	
	var elem_l = tabgroup_find(elem_id_base + '_l');
	var elem_m = tabgroup_find(elem_id_base + '_m');
	var elem_r = tabgroup_find(elem_id_base + '_r');
	var content= tabgroup_find(content_id);
	
	if (!elem_l || !elem_m || !elem_r || !content) return false;
	if (elem_m.childNodes.length != 1) return false;
	
	var m_e = elem_m.childNodes[0];
	var m_text, m_link;
	if (m_e.tagName && m_e.tagName == 'A' && m_e.childNodes && m_e.childNodes.length == 1) {
		m_text = m_e.childNodes[0];
		m_link = m_e;
	} else {
		m_text = m_e;
		m_link = null;
	}
	
	if (!m_text) return false;
	
	var isActive = tab_id == elem_id_base;

	try {
		if (isActive) {
			if (m_link) {
				elem_m.removeChild(m_link);
				elem_m.appendChild(m_text);
			}
		} else {
			if (!m_link) {
				elem_m.removeChild(m_text);
				m_link = document.createElement('A');
				m_link.href = url_template.replace(param_template,elem_id_simple);
				m_link.onclick = function() {
					return tabgroup_switch(group_id,elem_id_base,url_template,param_template);
				}
				m_link.appendChild(m_text);
				elem_m.appendChild(m_link);
			}
		}
	} catch (e) {
		return false;
	}
	
	elem_l.className = 'tab-l' + (isActive ? 'a' : 'i');
	elem_m.className = 'tab-m' + (isActive ? 'a' : 'i');
	elem_r.className = 'tab-r' + (isActive ? 'a' : 'i');
	content.style.display = isActive ? 'block' : 'none';
	
	return true;
}

// Функции для работы с полями
// ------------------------------------------------------------------

function _field_default_init(form_name, field_name, _default) {
	var f = document.forms[form_name]; if (!f) return;
	var e = f.elements[field_name]; if (!e) return;
	
	if (!e.value) {
		e.value = _default;
		e.__is_default = true;
	}
	
	e.onfocus = function() {
		if (e.__is_default) {
			e.value = '';
			e.select();
			e.__is_default = false;
		}
	}
	
	e.onblur = function() {
		if (!e.value) {
			e.value = _default;
			e.__is_default = true;
		}
	}
}

// Расширения jQuery
// ------------------------------------------------------------------

jQuery.fn.extend({
    stabs: function(options) {
        var $options = { tabSelectionEvent: "click", selectedTabIndex: 0 };
        for (var i in options)
            $options[i] = options[i];

        var $els = {};

        var $get_id = function(s) {
            if (s) {
                var ss = s.toString();
                var idx = ss.indexOf('#');
                if (idx > 0) {
                    return ss.substr(idx);
                }
            }
            return null;
        };

        var $toggle = function(id) {
            for (var i in $els) {
                var el = $els[i];
                $setTabVisible(el, i == id);
            }
        };
        var $toggleByIndex = function(index) {
            var j = 0;
            for (var i in $els) {
                var el = $els[i];
                $setTabVisible(el, j == index);
                j++;
            }
        };
        var $setTabVisible = function(element, value) {
            if (value) {
                element.li.addClass('ui-tabs-selected');
                element.el.removeClass('ui-tabs-hide');
            } else {
                element.li.removeClass('ui-tabs-selected');
                element.el.addClass('ui-tabs-hide');
            }
        };

        var $hdlr = function(id) {
            return function() {
                $toggle(id);
                return false;
            };
        };

        var $container = $(this);
        var $tabs = $('ul li', $container);

        if ($tabs && $tabs.length) {
            for (var i = 0; i < $tabs.length; i++) {
                var $li = $($tabs[i]);
                var links = $('a', $li);
                if (links && links.length) {
                    var link = links[0];
                    var $link = $(link);
                    $id = $link.attr("id");
                    if ($id) {
                        var $el = $("#TabContent_" + $id);
                        if ($el) {
                            $els[$id] = { el: $el, li: $li, link: $link };
                            $link.bind($options.tabSelectionEvent, $hdlr($id));
                        }
                    }
                }
            }
        }

        $toggleByIndex($options.selectedTabIndex < $tabs.length ? $options.selectedTabIndex : 0);
    }
});
