function $(id) { return document.getElementById(id); }

function MenuItemMove(fromId, toId) {
    try {
        var objFrom = $('nc' + fromId);
        var objTo = $('nc' + toId);
        var parentFrom = objFrom.parentNode;
        var parentTo = objTo.parentNode;

        var objFromPrevious = objFrom.nextSibling;
        var objToPrevious = objTo.nextSibling;

        if (objToPrevious == objFrom) {return;} // Same Position

        if (parentTo.id.replace('ndiv') == objFrom.id.replace('nc')){ return; }// Moving to child of itself
        parentFrom.removeChild(objFrom);
        if (objToPrevious) {
            parentTo.insertBefore(objFrom, objToPrevious);
            if (objFrom.previousSibling.className != 'undefined'){
                objFrom.className = objFrom.previousSibling.className; // Get correct style
            }
        }
        else{
            parentTo.appendChild(objFrom);
        }
        return true;
    }
    catch (ex) {
        alert(ex.message);
    }
}

var NewItemDoc;

function MenuItemAjaxResponse(xmlHttp) {
    if(xmlHttp.readyState == 4 && xmlHttp.status==200){
        alert(xmlHttp.responseText);

        var text = xmlHttp.responseText;
        //var scripts = xmlHttp.responseXML;//.getElementsByTagName('script');
        text = text.toString().substring(text.search('<html>'));

        var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML('<div>' + text + '</div>');

        var scripts = xmlDoc.getElementsByTagName('script');
        for(var i = 0; i < scripts.length; ++i) {
            var script = scripts[i].text;
            eval(script);
        }
    }
}

function MenuItemNew(iParentItem, con) {
	//create new menu item
	NewItemDoc = con;
	iCurMenuItem=iParentItem;

	var Node=GetElement(con,'n'+iParentItem); //'div'
	idx = iParentItem;
	var url = '/Catalog/Menu/menuItem.aspx?Action=New&id=' + aMenuItem[idx].Id;
	if (aMenuItem[idx].Id === null) {
	    alert(url);
	    return;
	}
	if (Node.style.display=="none"){
		if (aMenuItem[idx]) {
			Node.style.display="";
			neotekscript(url, null, MenuItemAjaxResponse);
		}else{
			neotekscript(url + '&parentNode=' + iParentItem, null, MenuItemAjaxResponse);
		}
	}else{
		neotekscript(url, null, MenuItemAjaxResponse);
	}
}


function MenuItemNameSet(iItem, value, con) {
	var node = GetElement(con,'n' + iItem);
	node.style.display='';
	node.title = value;
	var url = '/Catalog/Menu/menuItem.aspx?Action=rename&id=' + aMenuItem[iItem].Id + '&Title=' + value;
	neotekscript(url, null, MenuItemAjaxResponse);
	iLevel = MenuItemLevel(iItem);
	if (value.length > iTitleChars-(iLevel*3)) {value = value.substring(0,iTitleChars-(iLevel*3)) + '...';}
	node.innerHTML = value;
	aMenuItem[iItem].Text = value;
	node=GetElement(con,'edit' + iItem);
	node.style.display='none';
	return false;
}

function MenuItemParentSet(iItem, ParentItem, con) {
	var idx=iItem; //MenuItemIndex(iItem);
	var oldParentItem = aMenuItem[idx].Parent; // aMenuItem[idx + cParent];
	if (ParentItem!=oldParentItem && ParentItem !== 0){ //No need to move item
	    aMenuItem[iItem].Parent = ParentItem;
		neotekscript('/Catalog/Menu/menuItem.aspx?Action=ParentSet&id=' + aMenuItem[iItem].Id + '&ParentId=' + aMenuItem[ParentItem].Id, null, MenuItemAjaxResponse);
	}

	iCurMenuItem = 0;
	var innerHTML;

	//Remove old item
	var ndivobj=GetElement(con,'n' + iItem); //ndiv
	if (ndivobj) {
		ndivobj.style.display='none';
		ndivobj.innerHTML='';
		ndivobj.id='orphan';
		var divobj=ndivobj.parentNode.parentNode; //hideLI //GetElement(con,'div' + iItem);
		innerHTML=divobj.innerHTML;
		divobj.style.display='none';
		divobj.innerHTML='';
		divobj.id='orphan';
	}

	if (ParentItem!=oldParentItem){ //remove item from current parent
		var Previous=aMenuItem[idx].Previous;
		var Next=aMenuItem[idx].Next;
		if (Previous !== 0) {
		    if (Next !== 0) {// Occur in delete firstchild of node
		        aMenuItem[Previous].Next=Next;}
		}else{
			aMenuItem[oldParentItem].FirstChild=Next;
		}
		if (Next !== 0) {
			aMenuItem[Next].Previous=Previous;
		}else{
			aMenuItem[oldParentItem].LastChild=Previous;
		}
		//Last item set node false and hide child div
		if (Next === 0&&Previous === 0){
			aMenuItem[oldParentItem].IsNode=false;
			toggleNode(oldParentItem,con);
		}
	}

    if (ParentItem !== 0) {
        var parent = aMenuItem[ParentItem];
        var item = aMenuItem[idx];
        if (parent.IsActive) {

            aMenuItem[idx].LinkId = 0; // temp

            // Add HTML to Menu
            insertChildNodes(ParentItem, null);
        }
    }
}

function MenuItemRename(iItem, con) {
	GetElement(con,'n' + iItem).style.display='none';
	var input=GetElement(con,'edit' + iItem);

	if (!!!input) { // Added
	    input = document.createElement('input');
	    input.id = 'edit' + iItem;
	    var obj = GetElement(con,'n' + iItem);
	    obj.parentNode.appendChild(input);
	    input.onkeypress = function(e) { if (isEnter(e)) { MenuItemNameSet(iItem,input.value, null); } };
	}

	input.style.display='';
	input.value = aMenuItem[iItem].Text;
	input.focus();
}

function InsertNewItem(id){
	var con=NewItemDoc;
	var iParentItem=iCurMenuItem;
	var iNewItem = addMenuItem(iParentItem, id, 'New category', 1, 1, false, true);

	//insert new node
	MenuItemParentSet(iNewItem, iParentItem, con);
	//set current node selection values
	var itemobj=GetElement(con,'n' + iNewItem);
	var parentobj=GetElement(con,'n' + iParentItem);
	itemobj.className = 'MenuSelected';
	parentobj.className = 'MenuUnselected';

	iCurMenuItem=iNewItem;
	MenuItemRename(iNewItem, con);
}


function getNodeById(id) {
	idx = cId;
	while (idx < aMenuItem.length) {
		if(aMenuItem[idx]==id) {
			return (idx-cId) / cMenuItemDim + 1;
		}
		idx +=cMenuItemDim;
	}
	return 0;
}

function RenameNewItem(id){
	var con=NewItemDoc;
	var iParentItem=iCurMenuItem;
	var iNewItem = getNodeById(id);
	//set current node selection values
	var itemobj=GetElement(con,'n' + iNewItem);
	var parentobj=GetElement(con,'n' + iParentItem);
	itemobj.className = 'MenuSelected';
	parentobj.className = 'MenuUnselected';
	iCurMenuItem=iNewItem;
	MenuItemRename(iNewItem, con);
}

function MenuItemIndent(iItem, con) {
	var newparentitem = aMenuItem[iItem].Previous;
	if (newparentitem > 1){ MenuItemParentSet(iItem, newparentitem, con);}
}

function DropMenuItemParentSet(iItem, objParent) {
    var moveToObjId = objParent.id.replace('n', '');
    var parentId = aMenuItem[moveToObjId].Parent;
    if (parentId === null) {parentId = 0;}
    if (MenuItemMove(iItem, moveToObjId)) {
        var url = '/Catalog/Menu/menuItem.aspx?Id=' + aMenuItem[iItem].Id;
        if (parentId == aMenuItem[iItem].Parent) {// Same level = change index
            url += '&Action=move&RefMenuId=' + aMenuItem[moveToObjId].Id + '&Offset=-1';
        }else {
            url += '&Action=ParentSet&ParentId=';
            if (aMenuItem[parentId].Id > 1) {
                url += aMenuItem[parentId].Id;
            }
            else { // Root Level
                url += '0&RefMenuId=' + aMenuItem[moveToObjId].Id;
            }
        }
        neotekscript(url, null, MenuItemAjaxResponse);
    }
}

function isChild(iParentItem, iItem) {
	if (aMenuItem[iItem].IsNode === false){
		return false;
	}else if (iParentItem == iItem){
		return true;
	}else{
		return isChild(iParentItem,aMenuItem[iItem].Parent);
	}
}

//con = undefined
//used2be: aMenuItem[MenuItemIndex(iItem) + cText]
function MenuItemDelete(iItem, con) {
	if (confirm("Are you sure you want to permenantly delete " + aMenuItem[iItem].Text + "?")){
		MenuItemParentSet(iItem, 0, con);
		neotekscript('/Catalog/Menu/menuItem.aspx?Action=Delete&id=' + aMenuItem[iItem].Id, null, MenuItemAjaxResponse);
	}
}


function MenuItemOutdent(iItem, con) {
	var oldParentItem = aMenuItem[iItem].Parent;
	var newparentitem = aMenuItem[oldParentItem].Parent;
	MenuItemParentSet(iItem, newparentitem, con);
}

function MenuItemActiveToggle(iItem, con) {
	var node=GetElement(con,'n' + iItem);
	var active=0;
	var idx=iItem;
	if (aMenuItem[idx].IsActive===false){
		node.style.color = '';
		aMenuItem[idx].IsActive=true;
		active=1;
	}else{
		node.style.color = 'gray';
//		if (aMenuItem[idx]) {
//			var parent = node.parentNode.parentNode; // Hide LI
//			parent.style.display='none';
//			//GetElement(con,'div' + iItem).style.display='none';
//		}
		aMenuItem[idx].IsActive=false;
		active=0;
	}
	var url = '/Catalog/Menu/menuItem.aspx?Action=active&id=' + aMenuItem[idx].Id + '&Active=' + active;
	neotekscript(url, null, MenuItemAjaxResponse);
}


