var sg_isAdmin = false;

// main menu
var loadedNodes = new Object();
var hideUniqNodes = new Array();
var nodesInfo = new Object();

function setChildrenUniqNames(uniqName)
{
	for (var i in loadedNodes)
	{
		if (i == uniqName)
		{
			$A(loadedNodes[i]).each(function(n)
			{
				hideUniqNodes.push(n);
				setChildrenUniqNames(n);
			});
		}
	}
}

function switchNodes(event)
{
	Event.stop(event);
	var elm = Event.element(event);

	while (elm.id.empty() && !elm.id.match(/menuLeft_/))
	{
		elm = elm.up();
	}

	var uniqName = elm.id.substr(9);

	if (nodesInfo[uniqName]['open'])
	{
		hideNodes(uniqName);
	}
	else
	{
		showNodes(uniqName);
	}
}

function hideNodes(uniqName)
{
	setChildrenUniqNames(uniqName);
	nodesInfo[uniqName]['closed'] = true;
	nodesInfo[uniqName]['open'] = false;
	hideUniqNodes.each(function(n)
	{
		if ($('menuLeft_' + n))
		{
			$('menuLeft_' + n).hide();

			if (!nodesInfo[n])
				nodesInfo[n] = new Object();
		}
	});

	hideUniqNodes.clear();
}

function showNodes(uniqName)
{
	var ids = loadedNodes[uniqName];
	nodesInfo[uniqName]['closed'] = false;
	nodesInfo[uniqName]['open'] = true;
	ids.each(function(n)
	{
		if ($('menuLeft_' + n))
		{
			$('menuLeft_' + n).show();

			nodesInfo[n]['closed'] = false;
			nodesInfo[n]['open'] = true;
		}
	})
}

function getChildren(event)
{
	Event.stop(event);
	var elm = Event.element(event);
	elm.stopObserving('click', getChildren);

	elm.observe('click', switchNodes);

	while (elm.id.empty() && !elm.id.match(/menuLeft_/))
	{
		elm = elm.up();
	}

	var uniqName = elm.id.substr(9);
	var req = new JsHttpRequest();
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			if (req.responseJS)
			{
				new Insertion.After("menuLeft_" + uniqName, req.responseJS.children);
				var mas = $A(req.responseJS.childrenArray);
				loadedNodes[uniqName] = new Array();
				nodesInfo[uniqName] = new Object();
				nodesInfo[uniqName]['open'] = true;
				nodesInfo[uniqName]['closed'] = false;
				mas.each(function(n)
				{
					loadedNodes[uniqName].push(n.uniqName);
				});
			}
		}
	}

	req.open(null, 'form.POST ajax/menu.php', true);
	req.send(
	{
		action: "getChildren",
		uniqName: uniqName
	});
}
// main menu

function registrationOrderHandler(elm)
{
    $('regForm').toggle()
    $('regPromoText').toggle()
    elm.form.standartMail.value = elm.checked
    
    $('isVirtual').value = (!elm.checked) + 0

    // не совсем ясно насколько это осмысленно..
    // @@@ elm.form.dontReloadAfterSuccess.value = !elm.checked
}

// специфическая обработка для галочки "сделать административный заказ" (применялась на sibkoleso). @@@@ подлежит разымшлению
function isAdminOrderHandler(elm)
{
    /*
    if (elm.checked) 
    { 
        $('adminOrderFields').show();
        $('email_tr').hide();
        $('email').value = 'fake@fake.com';
    } 
    else 
    { 
        $('adminOrderFields').hide(); 
        $('email_tr').show();
        $('email').value = '';
    } */
}

function sendToBasketByButtonDefHandler(rjs,rtext)
{
    if (!rjs.errorMessages) 
    { 
        $('basket_qtyTotal').innerHTML = rjs.qtyTotal; 
    };
}

function sendToBasketByButton(elm, isList, preFunc, postFunc)
{
    // @@@@ if (elm.value == $('currentVal').value) return true;
    
    func = function(rjs,rtext)
    {
        if (typeof preFunc !== 'undefined' && Object.isFunction(preFunc))
        {
            preFunc(rjs,rtext)
        }
        
        sendToBasketByButtonDefHandler(rjs,rtext)
        
        if (typeof postFunc !== 'undefined' && Object.isFunction(postFunc))
        {
            postFunc(rjs,rtext)
        }
    }
    
    var exp = /^(.*?)\[(.*?)\]$/;

    var resultArray = exp.exec(elm.id);
    id = resultArray[2];

    id_elm = 'qty['+id+']';
    qty_elm = $(id_elm);
    responseJS = updateOne(qty_elm, 1, func);
}

function sendToBasketByButtonFromBasket(elm, isList, preCode, postCode)
{
    func = function(rjs,rtext)
    {
        if (typeof preFunc !== 'undefined' && Object.isFunction(preFunc))
        {
            preFunc(rjs,rtext)
        }
        
        $('sumTotal').innerHTML = num_format(rjs.sumTotal)
        var exp = /^(.*?)\[(.*?)\]$/;
        var resultArray = exp.exec(elm.id)
        id = resultArray[2]
        if (!rjs.value_output)
        {
            $('tr['+id+']').remove() 
        }
        else
        {
            $('sum['+id+']').innerHTML = num_format(rjs.sum)
        }
        
        if (typeof postFunc !== 'undefined' && Object.isFunction(postFunc))
        {
            postFunc(rjs,rtext)
        }
    }

    sendToBasketByButton(elm, isList, null, func)
}

