vcMainOn=new Image();
vcMainOff=new Image();
// vcMainOn.src="/images/flecha_menu1.gif";
vcMainOff.src="../../../images/t.gif";

// var vcRollImg='<img src="/images/flecha_menu_amarilla.gif" width="4" height="14">';
// var vcRollImg2='<img src="/images/flecha_menu_verde.gif" width="4" height="14">';
var vcRollWidth="4";

var vcTimeOpen=200;
var vcSlideIntervalTime=10;
var vcSlideStep=10;

var vcMenuWidth=null;
var vcTimeOutIdUser=null;
var vcTimeUser=1000;

var vcTimeOutId=null;
var vcIntervalId=null;

var vcAdapt=true;
var vcMapState=false;
var vcMapOpen=null;

var vcMlevel=0;
var vcMindex=0;
var vcMindexM0=-1;
var vcMinHeight;
var vcRowHeight=0;

var vcMenuArr=new Array();
var vcRoll=new Array();
var vcMainList;

function vcMenu(mHeight,width,rHeight,maLevel,pList)
{
	vcMinHeight = mHeight;
	vcMenuWidth = width;
	vcRowHeight = rHeight;
	maxLevel = maLevel;
	vcMainList = pList;
	vcBuildMenu(maxLevel);
}

function vcMenuStart(x,y,adapt)
{
	if(adapt==false)
		vcAdapt=adapt;
	vcMenuArr[0].moveTo(x,y);
	vcMenuArr[0].setClip('rect(0px, '+vcMenuWidth+'px, '+vcMinHeight+'px, 0px)');
	vcMainList.buildList();
	vcMenuArr[0].setInnerHTML(vcMainList.str);
	vcMenuArr[0].setVisibility('visible');
	for (var i=1;i<vcMenuArr.length;i++)
	{
		vcMenuArr[i].moveTo(x+i*vcMenuWidth,y);
	}
	if (vcMapOpen)
		vcMenuStartOpen();
}

function vcMenuStartOpen()
{
	if(vcMapOpen.length>1)
	{
		vcMapState=true;
		for(var i=0;i<vcMapOpen.length-1;i++)
		{
			index=i+1;
			vcItemOver(vcMapOpen[i].i,i,vcMapOpen[index].list);
		}
		var level=vcMapOpen.length-1;
		var pos=vcMapOpen[level].i
		var objR=eval(vcRoll[level]);
		var XY=getImgXY(findObject("vcMain"+level+pos));
		if (navigator.family == 'nn4')
			objR.moveTo(XY[0]+eval(vcMenuArr[level].getLeft()),XY[1]+eval(vcMenuArr[level].getTop()));
		else
			objR.moveTo(XY[0],XY[1]);
		objR.setVisibility('visible');
		vcMapState=false;
	}
	else
	{
		if (navigator.family == 'nn4')
			findObject("vcMain0"+vcMapOpen[0].i).src = vcMainList.arrowImage; //vcMainOn.src;
		else
			document.images["vcMain0"+vcMapOpen[0].i].src = vcMainList.arrowImage; //vcMainOn.src;
		vcMindexM0=vcMapOpen[0].i
	}
}

function vcBuildMenu(maxLevel)
{
	for(var i=0;i<maxLevel;i++)
	{
		if (navigator.DOMHTML)
		{
			eval('vMenu'+i+' = document.createElement("div")');
			eval('vMenu'+i+'.id = "vMenu'+i+'"');
			eval('vMenu'+i+'.style.position	= "absolute"');
			eval('vMenu'+i+'.style.left="0px"');
			eval('vMenu'+i+'.style.top="0px"');
			eval('vMenu'+i+'.style.zIndex=1');
			eval('vMenu'+i+'.style.visibility="hidden"');
			document.body.appendChild(eval('vMenu'+i));
			if(i>0)
			{
				eval('rollOver'+i+' = document.createElement("div")');
				eval('rollOver'+i+'.id = "rollOver'+i+'"');
				eval('rollOver'+i+'.style.position = "absolute"');
				eval('rollOver'+i+'.style.left="0px"');
				eval('rollOver'+i+'.style.top="0px"');
				eval('rollOver'+i+'.style.zIndex=2');
				eval('rollOver'+i+'.style.visibility="hidden"');
				document.body.appendChild(eval('rollOver'+i));
			}
		}
		else if (navigator.family == 'ie4')
		{
			document.body.insertAdjacentHTML('beforeEnd','<div id="vMenu'+i+'" style="position:absolute;left:0px;top:0px;width:'+vcMenuWidth+';z-index:1;visibility:hidden;"></div>');
			if(i>0)
				document.body.insertAdjacentHTML('beforeEnd','<div id="rollOver'+i+'" style="position:absolute;left:0px;top:0px;width:'+vcRollWidth+'px;z-index:2;visibility:hidden;"></div>');
		}
		else if (navigator.family == 'nn4')
		{
			eval('vMenu'+i+'=new Layer('+vcMenuWidth+')');
			eval('vMenu'+i+'.left=0');
			eval('vMenu'+i+'.top=0');
			eval('vMenu'+i+'.zIndex=1');
			eval('vMenu'+i+'.visibility="hide"');
			if(i>0)
			{

				eval('rollOver'+i+'=new Layer(0)');
				eval('rollOver'+i+'.left=0');
				eval('rollOver'+i+'.top=0');
				eval('rollOver'+i+'.zIndex=2');
				eval('rollOver'+i+'.visibility="hide"');
			}
		}
		if(navigator.DOMHTML || navigator.family == 'ie4')
			eval('elMen'+i+' = document.getElementById("vMenu'+i+'")');
		else if(navigator.family == 'nn4')
			eval('elMen'+i+' = vMenu'+i);
		vcMenuArr[i] = new xbStyle(eval('elMen'+i));
		if(navigator.DOMHTML && navigator.org=='microsoft')
		{
			eval('elMen'+i+'.attachEvent("onmouseover", menIn)');
			eval('elMen'+i+'.attachEvent("onmouseout", menOut)');
		}
		else if(navigator.org=='netscape' || navigator.org=='mozilla')
		{
			eval('elMen'+i+'.onmouseover=menIn');
			eval('elMen'+i+'.onmouseout=menOut');
		}
		if(i>0)
		{
			if(navigator.DOMHTML || navigator.family == 'ie4')
				eval('elRollOver'+i+' = document.getElementById("rollOver'+i+'")');
			else if(navigator.family == 'nn4')
				eval('elRollOver'+i+' = rollOver'+i);
			vcRoll[i] = new xbStyle(eval('elRollOver'+i));

			var firstNotNull = 0;
			while( firstNotNull < vcMainList.items.length && !vcMainList.items[firstNotNull].obj )
			{
			  firstNotNull++;
			}

      var firstLevelObj = eval(vcMainList.items[firstNotNull].obj);
      var imgSrc = (i==1) ? firstLevelObj.arrowImage : eval(firstLevelObj.items[0].obj).arrowImage;
			vcRoll[i].setInnerHTML( "<img src='" + imgSrc + "' width='4' height='14'>" );
			/*
			if (i==1)
				vcRoll[i].setInnerHTML(vcRollImg);
			else
				vcRoll[i].setInnerHTML(vcRollImg2);
		  */
		}
	}
}


function List(level,bgColor,arrowImage,lateralImage,cssClass)
{
	this.level = level; //level in the menu which the list will be (0,1,2,...)
	this.items = new Array(); // array which contains all the items of the list
	this.str = null; // will contain the HTML string of the list
	this.bgColor = bgColor;
	this.calc=false; // is list adapted to min height?
	this.arrowImage=arrowImage;
	this.lateralImage = lateralImage;
	this.cssClass=cssClass;
}

//adds items to the list
function vcAddItem(txt,link,targetHTML,obj)
{
	obj = (!obj)? null : obj; //if there is no value for obj it sets it's value to null (ie: set undefined)
	targetHTML=(!targetHTML)? null : targetHTML;
	this.items[this.items.length] = {txt:txt,link:link,obj:obj,target:targetHTML};
}


function vcBuildList()
{
	var cell0=vcMenuWidth-20;
	var cellRest=vcMenuWidth-12;
	this.str="<table border='0' cellspacing='0' cellpadding='0' bgcolor='"+this.bgColor+"' width='"+vcMenuWidth+"'>";
	for(var i=0;i<this.items.length;i++)
	{
		var link;
		if( this.items[i].link ) {
		  link = this.items[i].link;
      if( this.items[i].target )
          link += "' target='" + this.items[i].target;
		}
		else
		    link = "javascript:void(0);";

		var onMouseOver = "vcItemOver(" + i + "," + this.level + ",\"" + this.items[i].obj + "\");";
		var onMouseOut = "";
		if( !navigator.DOMHTML && navigator.org=='microsoft' ) { // IE4??
		    onMouseOver = "menIn();" + onMouseOver;
		    onMouseOut  = "menOut()";
		}
		onMouseOver = " onMouseOver='" + onMouseOver + "'";
		onMouseOut = " onMouseOut='" + onMouseOut + "'";

		this.str+="<tr>";
		if(this.level!=0) // is not the last level (no mouseover to open the layer)
		{
      this.str+="<td width='1'><img src='" + this.lateralImage + "' width='1' height='14' name='vcMain"+this.level+i+"'></td>";
      this.str+="<td width='11'><span class='" + this.cssClass + "'>&nbsp;</span></td>";
		}
		else
		{
			this.str+="<td width='4'><img src='../../../images/t.gif' width='4' height='14' name='vcMain"+this.level+i+"'></td>";
			this.str+="<td width='7'><span class='" + this.cssClass + "'>&nbsp;</span></td>";
		}

                var cssClass = (this.level == 0) ? this.cssClass + "b" : this.cssClass;
		this.str+="<td width='" + cellRest + "'>" +
		           "<a href='" + link + "'" + onMouseOver + onMouseOut + " class='" + cssClass + "'>"+
		           this.items[i].txt + "</a>" +
		           "</td>";
		this.str+="</tr>";
	}
	this.str+="</table>";
}


function vcItemOver(pos,level,objStr)
{
	var obj=eval(objStr);
	if(level==0)
	{
		if(vcMindexM0>=0)
		{
			if (navigator.family == 'nn4')
				findObject("vcMain"+level+vcMindexM0).src=vcMainOff.src;
			else
				document.images["vcMain"+level+vcMindexM0].src=vcMainOff.src;
		}
		if (navigator.family == 'nn4')
			findObject("vcMain"+level+pos).src=vcMainList.arrowImage; // vcMainOn.src;
		else
			document.images["vcMain"+level+pos].src=vcMainList.arrowImage; // vcMainOn.src;
		vcMindexM0=pos;
	}
	else
	{
		var objR=eval(vcRoll[level]);
		if(level==vcMlevel)
		{
			objR.setVisibility('hidden');
		}
		var XY=getImgXY(findObject("vcMain"+level+pos));
		if (navigator.family == 'nn4')
			objR.moveTo(XY[0]+eval(vcMenuArr[level].getLeft()),XY[1]+eval(vcMenuArr[level].getTop()));
		else
			objR.moveTo(XY[0],XY[1]);
		objR.setVisibility('visible');
	}
	vcMlevel=level;
	vcMindex=pos;
	if(!vcMapState)
	{
		checkMenu(level);
		if(vcTimeOutId)
		{
			clearTimeout(vcTimeOutId);
			vcTimeOutId=null;
		}
		if(obj)
		{
			vcTimeOutId=setTimeout("openMenu('"+objStr+"')",vcTimeOpen)
		}
	}
	else
		openMenu(objStr);
}


function checkMenu(level)
{
 	if (level==vcMenuArr.length-1)
 		return false;
 	level=parseInt(level)+1;
 	for(var i=vcMenuArr.length-1; i>=level;i--)
 	{
 		var objNextM=eval(vcMenuArr[i]);
		if(objNextM.getClipWidth()>0)
		{
			var objR=eval(vcRoll[i]);
			objR.setVisibility('hidden');
			objNextM.setVisibility('hidden');
			if(vcIntervalId)
			{
				clearInterval(vcIntervalId);
				vcIntervalId=null;
			}
			objNextM.setClipWidth(0);
		}
 	}
}

function vcCheckClose()
{
 	for(var i=vcMenuArr.length-1; i>=1;i--)
 	{
 		var objNextM=eval(vcMenuArr[i]);
		if(objNextM.getClipWidth()>0)
		{
			var objR=eval(vcRoll[i]);
			objR.setVisibility('hidden');
			objNextM.setVisibility('hidden');
			if(vcIntervalId)
			{
				clearInterval(vcIntervalId);
				vcIntervalId=null;
			}
			objNextM.setClipWidth(0);
		}
	}
	if(vcMindexM0>=0)
	{
		if (navigator.family == 'nn4')
			findObject("vcMain0"+vcMindexM0).src=vcMainOff.src;
		else
			document.images["vcMain0"+vcMindexM0].src=vcMainOff.src;
	}
	if (vcMapOpen)
		vcMenuStartOpen();
}

function getStr(cHeight,mHeight,lateralImage)
{
	var h=(!mHeight)? vcMinHeight : mHeight;
	var n=(h-cHeight)/vcRowHeight;
	var str="";
	for (i=0;i<n;i++)
	{
    		str+="<tr><td colspan='3'><img src='" + lateralImage + "' width='1' height='14'></td></tr>";
	}
	str+="</table>";
	return str;
}


function openMenu(objStr)
{
	if(vcIntervalId)
		return false;
	var obj=eval(objStr);
	if(!obj.str)
		obj.buildList();
	var objM=eval(vcMenuArr[obj.level]);
	if( !objM ) return;
	if (obj.level>1)
		var objBefore=eval(vcMenuArr[obj.level-1]);
	else
		var objBefore=null;
	var menuStr = "vcMenuArr["+obj.level+"]";
	objM.setInnerHTML(obj.str);
	if (obj.level!=0 && (objM.getHeight()>vcMinHeight))
	{
		if(objBefore && vcAdapt)
		{
			if(objBefore.getHeight()>objM.getHeight())
			{
				if (!obj.calc)
				{
					obj.str = obj.str.replace(/<\/table>/,getStr(objM.getHeight(),objBefore.getHeight(), obj.lateralImage));
					objM.setInnerHTML(obj.str);
					obj.calc=true;
				}
				objM.setClipHeight(objBefore.getHeight());
			}
			else
				objM.setClipHeight(objM.getHeight());
		}
		else
			objM.setClipHeight(objM.getHeight());
	}
	else if (obj.level!=0 && (objM.getHeight()<vcMinHeight))
	{
		if(objBefore && vcAdapt)
		{
			if(objBefore.getHeight()>vcMinHeight)
			{
				if (!obj.calc)
				{
					obj.str = obj.str.replace(/<\/table>/,getStr(objM.getHeight(),objBefore.getHeight(),obj.lateralImage));
					objM.setInnerHTML(obj.str);
					obj.calc=true;
				}
				objM.setClipHeight(objBefore.getHeight());
			}
			else
			{
				if (!obj.calc)
				{
					obj.str = obj.str.replace(/<\/table>/,getStr(objM.getHeight(),null,obj.lateralImage));
					objM.setInnerHTML(obj.str);
					obj.calc=true;
				}
				objM.setClipHeight(vcMinHeight);
			}
		}
		else
		{
			if (!obj.calc)
			{
				obj.str = obj.str.replace(/<\/table>/,getStr(objM.getHeight(),null,obj.lateralImage));
				objM.setInnerHTML(obj.str);
				obj.calc=true;
			}
			objM.setClipHeight(vcMinHeight);
		}
	}
	else if (obj.level!=0 && (objM.getHeight()==vcMinHeight))
		objM.setClipHeight(objM.getHeight());
	objM.setVisibility('visible');
	if(!vcMapState)
		vcIntervalId=setInterval("slideBy('"+menuStr+"',"+vcSlideStep+")",vcSlideIntervalTime);
	else
		objM.setClipWidth(vcMenuWidth);
}

function slideBy(menuStr,n)
{
	var objM=eval(menuStr);
	if(n>0)
	{
		if(objM.getClipWidth()>=vcMenuWidth-n)
		{
			clearInterval(vcIntervalId);
			vcIntervalId=null;
			objM.setClipWidth(vcMenuWidth);
			return false;
		}
	}
	else
	{
		if(objM.getClipWidth()<=n)
		{
			clearInterval(vcIntervalId);
			vcIntervalId=null;
			objM.setClipWidth(0);
			return false;
		}
	}
	objM.setClipWidth(eval(objM.getClipWidth()+n));
}

List.prototype.addItem = vcAddItem;
List.prototype.buildList = vcBuildList;
List.prototype.items = null;

function menIn()
{
	if(vcTimeOutIdUser)
	{
		clearTimeout(vcTimeOutIdUser);
		vcTimeOutIdUser=null;
	}
}

function menOut()
{
	if(vcTimeOutId)
	{
			clearTimeout(vcTimeOutId);
			vcTimeOutId=null;
	}
	vcTimeOutIdUser=setTimeout("vcCheckClose()",vcTimeUser);
}
