document.onmouseover = autoClear;
document.onclick = hideAllMenus;
window.onload = initializeHacks;
window.onerror = null;

var timeOn = null;
var activeMenu = null;
var offsetArrayX = new Array;
var offsetArrayY = new Array;
var CrossBrowserMenus_InitalizationFunctions = new Array;

var numMenus = DDMMenuCount;
if(numMenus == null)
	numMenus = 0;

function autoClear()
{
	if(!document.getElementById) 
		return;
		
	menuActive = 0;
	
	if(timeOn == null)
		timeOn = setTimeout("hideAllMenus()", 400);
}

function menuOver() {
	if(!document.getElementById) 
		return;
		
	clearTimeout(timeOn)
	timeOn = null;
	menuActive = 1;
}

function menuOut() {
 	if(!document.getElementById) 
		return;
	
	if(timeOn == null)
		timeOn = setTimeout("hideAllMenus()", 400);
}

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
		// W3C DOM
		return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
		// MSIE 4 DOM
		return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[objectId];
    } else {
		return false;
    }
}

// get a reference to the cross-browser style object and make sure the object exists
function changeObjectVisibility(objectId, newVisibility) {
     
    var styleObject = getStyleObject(objectId);
   
    if(styleObject) 
    {
		styleObject.visibility = newVisibility;
		return true;
    } 
    else 
    {
		return false;
    }
}

function getOffsetX(element, menuNumber)
{
	return(element.offsetLeft + getParentOffsetX(element.offsetParent) - element.offsetParent.offsetLeft);
}

function getParentOffsetX(element)
{
	if(element.offsetParent != null)
		return(element.offsetLeft + getParentOffsetX(element.offsetParent));
	else
		return(0);
}

function getOffsetY(element, menuNumber)
{
	return(element.offsetHeight + element.offsetTop + getParentOffsetY(element.offsetParent));
}

function getParentOffsetY(element)
{
	if(element.offsetParent != null)
		return(element.offsetTop + getParentOffsetY(element.offsetParent));
	else
		return(0);
}

function showMenu(menuNumber, eventObj, labelID) {
	
	if(document.getElementById == null)
		return;
		
	activeMenu = document.getElementById('Menu_' + menuNumber);

	if(activeMenu == null || document.getElementById('Menu_' + menuNumber).style.visibility != "hidden")
		return;
		
	clearTimeout(timeOn);
	timeOn = null;
    hideAllMenus(menuNumber);

	document.getElementById('Menu_' + menuNumber).style.top = 0;
	document.getElementById('Menu_' + menuNumber).style.left = 0;
	
	document.getElementById('Menu_' + menuNumber).style.left = getOffsetX(document.getElementById('MID_' + menuNumber), menuNumber);
	document.getElementById('Menu_' + menuNumber).style.top = getOffsetY(document.getElementById('MID_' + menuNumber), menuNumber);
	
	eventObj.cancelBubble = true;
	
	hideSelect();
	
    var menuId = 'Menu_' + menuNumber;
    
    if(changeObjectVisibility(menuId, 'visible')) {
		return true;
    } else {
		return false;
    }
}

function hideAllMenus(menuNumber) {
    for(counter = 1; counter <= numMenus; counter++) 
    {
		if(counter != menuNumber)
			changeObjectVisibility('Menu_' + counter, 'hidden');
    }
		showSelect();
}

// Sets up all the browser compatibility hacks.
function initializeHacks() 
{
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv'))
	{
		window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
    
    // Mark the DDM code as ready to run.
    MLoaded = true;
    
    // Run any other module's initialization functions.
    CrossBrowserMenus_ExecuteInitializationFunctions();
}

// create a fake event object for older browsers to avoid errors in function call
// when we need to pass the event object to functions
function createFakeEventObj() 
{
    if (!window.event)
		window.event = false;
}

 // resize blank placeholder div so IE 5 on mac will get all clicks in window
function resizeBlankDiv() {
   
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) 
	{
		getStyleObject('blankDiv').width = document.body.clientWidth - 20;
		getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

// Whenever the browser is resized on mac 5.0, then cause the current
// page to reload so that mouse events are trapped properly.
function explorerMacResizeFix () {
    location.reload(false);
}


//show dropdown when menu is hidden
// This so that divs will appear above select controls 
function showSelect()
{
	var obj;
	
	if(document.all)
	{
		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			obj = document.all.tags("select")[i];
			//alert(obj.id);
			if(!obj || !obj.offsetParent)
				continue;
			obj.style.visibility = 'visible';
		}
	}
}

//hide dropdown so menu can cover it when menu is visible
function hideSelect()
{
	var obj;
	var currentEle;
	var top = 0;
	var left = 0;
	var menuHeight;
	var timeout;
	
	if(document.all)
	{
		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			//alert(document.all.tags("select")[i]);
			obj = document.all.tags("select")[i];
			currentEle = obj;
		
			while(currentEle.tagName.toLowerCase() != 'body')
			{
				top += currentEle.offsetTop;
				left += currentEle.offsetLeft;
				currentEle = currentEle.offsetParent;
			}
			if(activeMenu != null)
			{
				menuHeight = (activeMenu.offsetTop + activeMenu.offsetHeight);
				
				if(top < menuHeight)
				{			
					if((left < (activeMenu.offsetLeft + activeMenu.offsetWidth)) && (left + obj.offsetWidth > activeMenu.offsetLeft)) 
						obj.style.visibility = 'hidden';
				}
			}
			top = 0;
			left = 0;
		}
	}
}

// Add an initialization function to the list of functions that will be 
// run when the window containing this script is loaded (onLoad).
function CrossBrowserMenus_AddInitalizationFunction(functionName)
{
	CrossBrowserMenus_InitalizationFunctions[CrossBrowserMenus_InitalizationFunctions.length] = functionName;
}

// Run each function in the initialization function list.
function CrossBrowserMenus_ExecuteInitializationFunctions()
{
	for(i = 0; i < CrossBrowserMenus_InitalizationFunctions.length; i++)
	{
		eval(CrossBrowserMenus_InitalizationFunctions[i]);
	} 
}


	var crip = null;
	function VerDetalles(url)
	{
	if((crip == null) || (crip.closed)) 
		{
				crip = window.open(url, 'detalles', 'toolbar=no,menubar=no,scrollbars=yes,width=640,height=550,resizable=no');
		crip.focus();
		}
			else
		{
			crip.navigate(url);
			crip.focus();
		}
	}
	
	
	function prefs() {
		popup=window.open('http://www.pcenlinea.com/p.mv?Prefs=1','PoPuP','hotkeys=no,screenX=0,screenY=0,left=0,top=0,width=200,height=150');
		popup.focus();
	}

