
/* - menu_builder.js - */
var formVars = "";
var changing = false;


function fieldEnter(campo,evt,idfld) {


}

function fieldBlur(campo)
{
	if (campo.value!="")
	{
		campo.parentNode.innerHTML = campo.value;
		changing = false;
		return false;
	}
}

//edit field created
function editBox(actual)
{
	//alert(actual.nodeName+' '+changing);
	if(!changing)
	{
		width = widthEl(actual) + 50;
		height = heightEl(actual) + 2;

		if(height < 40)
		{
	//		if(width < 100)	width = 150;
			actual.innerHTML = "<input style=\"width: "+width+"px; height: "+height+"px;\" maxlength=\"254\" type=\"text\" value=\"" + actual.innerHTML + "\" onfocus=\"highLight(this);\" onblur=\"noLight(this); return fieldBlur(this);\" />";
		}
		else
		{
		//	if(width < 70) width = 90;
	//		if(height < 50) height = 50;
			actual.innerHTML = "<textarea name=\"textarea\" style=\"width: "+width+"px; height: "+height+"px;\" onfocus=\"highLight(this);\" onblur=\"noLight(this); return fieldBlur(this);\">" + actual.innerHTML + "</textarea>";
		}
		changing = true;
	}
	actual.firstChild.focus();
}



//find all span tags with class editText and id as fieldname parsed to update script. add onclick function
function editbox_init()
{
	if (!document.getElementsByTagName){ return; }
	var spans = document.getElementsByTagName("span");

	// loop through all span tags
	for (var i=0; i<spans.length; i++)
	{
		var spn = spans[i];

		if (((' '+spn.className+' ').indexOf("editText") != -1)/* && (spn.id)*/)
		{
			spn.onclick = function () { editBox(this); }
			//spn.style.cursor = "pointer";
			spn.title = "Click to edit!";
		}
	}
}

//crossbrowser load function
function addEvent(elm, evType, fn, useCapture)
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Please upgrade your browser to use full functionality on this page");
  }
}

//get width of text element
function widthEl(span)
{
	return span.offsetWidth;
	/*
	if (document.layers)
	{
	  w=document.span.clip.width;
	}
	else if
	(document.all && !document.getElementById)
	{
	  w=document.span.offsetWidth;
	}
	else if(document.getElementById)
	{
	  w=span.offsetWidth;
	}
return w;
*/
}

//get height of text element
function heightEl(span){

	return span.offsetHeight;
/*
	if (document.layers){
	  h=document.span.clip.height;
	} else if (document.all && !document.getElementById){
	  h=document.span.offsetHeight;
	} else if(document.getElementById){
	  h=document.span.offsetHeight;
	}
return h;
*/
}

function highLight(span){
            //span.parentNode.style.border = "2px solid #D1FDCD";
            //span.parentNode.style.padding = "0";
            span.style.border = "1px solid #54CE43";          
}

function noLight(span){
        //span.parentNode.style.border = "0px";
        //span.parentNode.style.padding = "2px";
        span.style.border = "0px";   


}

//sets post/get vars for update
function setVarsForm(vars){
	formVars  = vars;
}



/*********************************************************************************************************/



var Dom = {
get: function(el) {
  if (typeof el === 'string') {
	return document.getElementById(el);
  } else {
	return el;
  }
},
add: function(el, dest) {
  var el = this.get(el);
  var dest = this.get(dest);
  dest.appendChild(el);
},
remove: function(el) {
  var el = this.get(el);
  el.parentNode.removeChild(el);
}
};
var Event = {
add: function() {
  if (window.addEventListener) {
	return function(el, type, fn) {
	  Dom.get(el).addEventListener(type, fn, false);
	};
  } else if (window.attachEvent) {
	return function(el, type, fn) {
	  var f = function() {
		fn.call(Dom.get(el), window.event);
	  };
	  Dom.get(el).attachEvent('on' + type, f);
	};
  }
}()
};

function addMenu(name,url,element) 
{
	var div = document.createElement('div');
	div.className="menu";
	Dom.add(div, document.getElementById(element));

	var menuItem = document.createElement('span');
	menuItem.className="editText";
	menuItem.innerHTML = (name == '[object MouseEvent]')? "Menu":name;
	Dom.add(menuItem, div);

	var menuItemURL = document.createElement('span');
	menuItemURL.className="editText";
	menuItemURL.innerHTML = url || "url here";
	Dom.add(menuItemURL, div);

	var a = document.createElement('a');
	a.innerHTML = '[Remove]';
	Dom.add(a, div);

	var span = document.createElement('a');
	span.innerHTML = ' | ';
	Dom.add(span, div);

	var a2 = document.createElement('a');
	a2.innerHTML = '[Add sub-menu]';
	Dom.add(a2, div);

	Event.add(a, 'click', 
		function(e)
		{
			Dom.remove(this.parentNode);
		});

	var div2 = document.createElement('div');
	Dom.add(div2, div);

	Event.add(a2, 'click', addSubMenu);		

	editbox_init();
	
	return a2;
}

function addSubMenu(me,name,url)
{
	me = (me == '[object MouseEvent]')? this:me;
	var div = document.createElement('div');
	div.className="sub-menu";
	Dom.add(div, me.parentNode.lastChild);

	var submenuItem = document.createElement('span');
	submenuItem.className="editText";
	submenuItem.innerHTML = name || "Sub-Menu";
	Dom.add(submenuItem, div);

	var subMenuItemURL = document.createElement('span');
	subMenuItemURL.className="editText";
	subMenuItemURL.innerHTML = url || "url here";
	Dom.add(subMenuItemURL, div);

	var a = document.createElement('a');
	a.innerHTML = '[Remove]';
	Dom.add(a, div);

/*
	var span = document.createElement('a');
	span.innerHTML = ' | ';
	Dom.add(span, div);

	var a2 = document.createElement('a');
	a2.innerHTML = '[Add sub-menu]';
	Dom.add(a2, div);

	Event.add(a2, 'click', addSubMenu);
*/

	Event.add(a, 'click', 
	function(e)
	{
		Dom.remove(this.parentNode);
	});

	var div2 = document.createElement('div');
	Dom.add(div2, div);


	editbox_init();
}	  

	
	
function createMenuStructure(element)
{
	var menuStructure="";
	var nMenuItems = document.getElementById(element).childNodes.length;
	for (var i=0; i<nMenuItems; i++)
	{
		var menuDiv = document.getElementById(element).childNodes[i];
		menuStructure += "<li><a href='" + menuDiv.childNodes[1].innerHTML + "'>" + menuDiv.firstChild.innerHTML + "</a>";
		var nSubMenuItems = menuDiv.childNodes[5].childNodes.length;
		
		if (nSubMenuItems > 0)
		{
			menuStructure+="\n\t<ul>\n"
			for (var j=0; j<nSubMenuItems; j++)
			{
				var subMenuDiv = menuDiv.childNodes[5].childNodes[j];
				
				menuStructure += "\t\t<li><a href='" + subMenuDiv.childNodes[1].innerHTML + "'>" +  subMenuDiv.firstChild.innerHTML + "</a></li>\n";
			}
			menuStructure += "\t</ul>\n";
		}
		menuStructure += "</li>\n";
	}
	return menuStructure;
}

function loadMenu(html, element)
{
	html = html.replace(/.\[./g,'<').replace(/.]./g,'>');
	if (window.DOMParser)
	{
	  parser=new DOMParser();
	  xmlDoc=parser.parseFromString(html,"text/xml");
	}
	else // Internet Explorer
	{
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async="false";
	  xmlDoc.loadXML(html); 
	}   
	  
	x=xmlDoc.documentElement.childNodes;

	var menu = new Array();
	for (i=0;i<x.length;i++)
	{	
		var tabs = new Array();
		a=x[i].getElementsByTagName('a');
		for (j=0;j<a.length;j++)
		{
			var t = new Array(2);
			t[0] = a[j].childNodes[0].nodeValue;
			t[1] = a[j].getAttribute('href');
			tabs.push(t);
		}
		menu.push(tabs);
	}
		
	var a2;
	
	for (j=0; j<menu.length; j++)
	{
		for (i=0; i<menu[j].length; i++)
		{
			if (i==0)
				a2 = addMenu(menu[j][i][0],menu[j][i][1],element);
			else
				addSubMenu(a2,menu[j][i][0],menu[j][i][1]);
		}
	}
}

function saveMenu()
{
	var menu = document.getElementById('menu');
	menu.value = createMenuStructure('menu_builder');

	var menu_es = document.getElementById('menu_es');
	menu_es.value = createMenuStructure('menu_builder_es');

	menu.form.submit();

}

