function show_login_form() {
 if (!document || !document.getElementById) return true;
 document.getElementById('login_form').style.visibility = "visible";
 document.getElementById('user_name').focus();
 return false;
}

function hide_login_form() {
 if (!document || !document.getElementById) return true;
 document.getElementById('login_form').style.visibility = "hidden";
 return false;
}

function check_login_form() {
 if (!document || !document.getElementById) return true;
 if (!document.getElementById('user_name').value.length) {
  alert('Имя пользователя не может быть пустым!');
  return false;
 }
 if (!document.getElementById('password').value.length) {
  alert('Пароль не может быть пустым!');
  return false;
 }
 return true;
}

function treenav_switch(id) {
 if (!document || !document.getElementById) return true;
 var o = document.getElementById('treenav' + id);
 if (!o) return;
 if (o.style.display == 'none') {
  o.style.display = 'block';
  o = document.getElementById('treenavarm' + id);
  o.src = '/s/i/armo.gif';
 } else {
  o.style.display = 'none';
  o = document.getElementById('treenavarm' + id);
  o.src = '/s/i/armc.gif';
 }
}

function cfr_call(uri) {
 if (!document || !document.getElementById) return true;
 frames['cfr'].location.replace(uri);
 return false;
}

function recalculate_basket() {
    var d = document.getElementsByTagName('DIV');
    var pidre = /^item(\d+)_(\d+)$/;
    var iidre = /^amount(\d+)_(\d+)$/;

    var total = [];
    var stock_amount = {}; // amount of product, requested by visitor, reserve_type -> pid -> amount
    var stock_reported = false;
    var atom_reported = false;

    for (var i=0; i<vc.length; i++) total[vc[i]] = 0;
    var correct = true;

    var bts = document.getElementById('basket_type');
    var basket_type = bts ? bts.options[bts.selectedIndex].value : 1;
   
    for (var i=0; i<d.length; i++) {
	if (!pidre.test(d[i].id)) continue;
	
	var ary = pidre.exec(d[i].id);
	var pid = ary[1];
	var bid = ary[2];

	// deal with basket type
	var addorder = document.getElementById('addorder' + pid + '_' + bid);
	if (addorder) {
	    addorder.style.display = basket_type == 1 ? 'block' : 'none';
	    
	    if (basket_type == 1)
		document.getElementById('type' + pid + '_' + bid).selectedIndex = 0;

	    document.getElementById('type' + pid + '_' + bid).disabled = basket_type == 1 ? true : false;
	}

	var amount = 0;

	// get reserve type
	var rt = document.getElementById('type' + pid + '_' + bid);
	if (rt)
	    rt = rt.options[rt.selectedIndex].value;
	
	ary = d[i].getElementsByTagName('INPUT');
	for (var j=0; j<ary.length; j++) {
	    if (!iidre.test(ary[j].id)) continue;

	    ary[j].value = ary[j].value.replace(/\s+/, '');

	    if (ary[j].value.match(/^\d+$/)) {
		if (stock && rt && parseInt(ary[j].value) > 0) {
		    // check the amount on stock
		    var ary1 = iidre.exec(ary[j].id);
		    if (!stock_amount[rt]) stock_amount[rt] = {};
		    if (!stock_amount[3]) stock_amount[3] = {};
		    if (!stock_amount[rt][ary1[1]]) stock_amount[rt][ary1[1]] = 0;
		    if (!stock_amount[3][ary1[1]]) stock_amount[3][ary1[1]] = 0;

		    stock_amount[rt][ary1[1]] += parseInt(ary[j].value);
		    if (rt == 1) stock_amount[3][ary1[1]] += parseInt(ary[j].value);

		    if ((!stock[ary1[1]]) || stock_amount[rt][ary1[1]] > stock[ary1[1]][rt-1] || (rt == 1 && stock_amount[3][ary1[1]] > stock[ary1[1]][2])) {
			ary[j].style.background = 'red';
			correct = false;
			if (!stock_reported)
			    alert('Одной или нескольких позиций недостаточно для резервирования. Пожалуйста, измените количество или тип резервирования (поля выделены красным).');
			stock_reported = true;
			continue;
		    }

		    if (parseInt(ary[j].value) % atom[ary1[1]] > 0) {
			ary[j].style.background = 'red';
			correct = false;
			if (!atom_reported)
			    alert('Количество одной или нескольких позиций некратно упаковке. Пожалуйста, измените количество (поля выделены красным).');
			atom_reported = true;
			continue;
		    }
		}

		ary[j].style.background = '';
		amount += parseInt(ary[j].value, 10);
	    } else {
		ary[j].style.background = 'red';
		correct = false;
		continue;
	    }
	}

	var price;
	for (var j=0; j<product.length; j++) {
	    if (product[j][0] == pid) {
		price = product[j];
		break;
	    }
	}
	if (!price) continue;
	
	for (var j=1; j<price.length; j++) {
	    var pp = amount*price[j][1];
	    total[price[j][0]] += pp;
	    var tp;
            if (!isNaN(pp)) {
                tp = '000'+pp;
	        tp = tp.replace(/^0*(\d+)(\d\d)$/, "$1,$2");
            } else 
                tp = '';

	    var tn = document.getElementById('total' + pid + '_' + bid + '_' + price[j][0]);
            if (!tn.firstChild)
                tn.appendChild(document.createTextNode(' '));
            tn.firstChild.data = tp;
	}
    }
    
    for (var i=0; i<vc.length; i++) {
        var tp; 
        if (!isNaN(total[vc[i]])) {
	    tp = '000'+total[vc[i]];
            tp = tp.replace(/^0*(\d+)(\d\d)$/, "$1,$2");
        } else
            tp = '';

	var tn = document.getElementById('total'+vc[i]);
        if (!tn.firstChild)
            tn.appendChild(document.createTextNode(' '));

        tn.firstChild.data = tp;
    }

    return correct;
}

function check_product_stock() {
    // get all amounts, sum it by reserve type
    
} 
 
function add_row(p) {
    var c = document.getElementById('product' + p);
    var d = c.getElementsByTagName('DIV');
    var idre = /^item(\d+)_\d+$/;
    var from;
    for (var i=0; i<d.length; i++) {
	if (idre.test(d[i].id)) {
	    from = d[i];
            break;
	}
    }
    if (!from) return true;

    var n = from.cloneNode(true);
    var id = 0;
    while (document.getElementById('item'+p+'_0'+id)) id++;
    d = n.getElementsByTagName('INPUT');
    idre = /^((tamount|amount|place|logo|colour|print|delbtn|type|addorder)\d+_)\d+$/;
    for (var i=0; i<d.length; i++) {
	if (!idre.test(d[i].id)) continue;
	d[i].id = d[i].id.replace(idre, '$1'+'0'+id);
	d[i].name = d[i].name.replace(idre, '$1'+'0'+id);
	d[i].value = d[i].id.match(/^amount/) ? 0 : '';
    }
    d = n.getElementsByTagName('A');
    for (var i=0; i<d.length; i++) {
	if (!idre.test(d[i].id)) continue;
	d[i].id = d[i].id.replace(idre, '$1'+p+'_0'+id);
	var tmp = '0'+id;
	d[i].onclick = function() {return delete_row(p, tmp)};
    }
    d = n.getElementsByTagName('SELECT');
    for (var i=0; i<d.length; i++) {
	if (!idre.test(d[i].id)) continue;
	d[i].id = d[i].id.replace(idre, '$1'+'0'+id);
	d[i].name = d[i].name.replace(idre, '$1'+'0'+id);
	d[i].selectedIndex = 0;
    }
    d = n.getElementsByTagName('TABLE');
    for (var i=0; i<d.length; i++) {
	if (!idre.test(d[i].id)) continue;
	d[i].id = d[i].id.replace(idre, '$1'+'0'+id);
	d[i].style.display = 'none';
    }
    idre = /^total(\d+)_(\d+)_(\d+)$/;
    d = n.getElementsByTagName('TD');
    for (var i=0; i<d.length; i++) {
	if (!idre.test(d[i].id)) continue;
	d[i].id = d[i].id.replace(idre, 'total'+p+'_0'+id+'_$3');
    }
    n.id = 'item'+p+'_0'+id;
    from.parentNode.insertBefore(n, document.getElementById('append'+p));
    recalculate_basket();
    return false;
}
 
function delete_row(p, id) {
    var n = document.getElementById('item'+p+'_'+id);
    n.parentNode.removeChild(n);
    n = document.getElementById('product'+p);
    var d = n.getElementsByTagName('DIV');
    var re = /^item(\d+)_\d+$/;
    var item=0;
    for (var i=0; i<d.length; i++) {
	if (re.test(d[i].id)) item++;
    }
    if (!item) {
	n.parentNode.removeChild(n);
    }
    
    item = 0;
    d = document.getElementsByTagName('DIV');
    for (var i=0; i<d.length; i++) {
	if (re.test(d[i].id)) item++;
    }
    if (!item) {
	document.location.replace('/basket?empty=1');
	return false;
    }
   
    recalculate_basket();
    return false;
}

function check_field(id) {
    var f = document.getElementById(id);
    if (!f) return false;
    f.value = f.value.replace(/^\s+/, '');
    f.value = f.value.replace(/\s+$/, '');
    return f;
}

function pref_image_enable() {
    document.cookie = "hideimg=0; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;";
    document.location.replace(document.location);
    return false;
}
