/* debug functions */
function d_pr(el,recurse) {
	var s = "";
	for (var i in el)
		if(recurse && (typeof(el[i]) == 'object'))
			s = s + 'object = {\n' + d_pr(el[i]) + '}\n';
		else	
			s = s + i + "=" + el[i] + "\n";
	return (s);
}
function d_debug(info) {
	var d_panel = document.getElementById('debug'); /* getting the debug info layer */
	if(d_panel) {
		d_panel.innerHTML = d_panel.innerHTML + "<pre>"+info+"</pre>";
	}
}
/* EDA DropDown Menu v. 0.1 */

var EDAMM_Initialized = false;
var EDAMM_isOpened = -1;
var EDAMM_isSubOpened = -1;
var EDAMM_me = new Array(); /* menu layers */
var EDAMM_mesh = new Array(); /* menus shadows */
var EDAMM_mt = new Array(); /* menu buttons */
var EDAMM_sb = new Array(); /* submenu button */
var EDAMM_sm = new Array(); /* submenu layers */
var EDAMM_smesh = new Array(); /* submenus shadows */
var EDAMM_HideTimeout = 0;
var EDAMM_HideDelay = 1000;


function EDAMM_Init() {
	// align paramenters
	var al = Object();
	al.bml = -25;  // menu.button.left - menu.left
	al.smr = 4;    // menu.right - submenu.left
	al.sml = 6;    // menu.left - submenu.right
	al.smt = -6;   // menu.item.top - submenu.top
		
	/* -- menus init -----------------------------------------------*/	
	var pp,j;
	var p = document.getElementsByName('me'); /* getting the menu layers */
	for(var i=0;i<p.length; i++){
		EDAMM_me[i] = p[i];
	}

	var Left, Top, Width, Height, d;
	
	p = document.getElementsByName('mt'); /* getting the menu buttons */
	for(var i=0;i<p.length; i++){
		EDAMM_mt[i] = p[i];

		Left = p[i].offsetLeft;
		Top  = p[i].offsetTop;
		d = p[i];
		while (d.offsetParent){
			d = d.offsetParent;
			Left += d.offsetLeft;
			Top  += d.offsetTop;
		}
		Top += p[i].offsetHeight;
		
		// position menu layer to menu buttons
		EDAMM_me[i].style.left = Left + al.bml;
		if((parseInt(EDAMM_me[i].style.left) + parseInt(EDAMM_me[i].offsetWidth) + 5) > document.body.clientWidth)
			EDAMM_me[i].style.left = document.body.clientWidth - (parseInt(EDAMM_me[i].offsetWidth) + 5);
		EDAMM_me[i].style.top  = Top+3;
//		alert(document.body.clientWidth + " , " + EDAMM_me[i].style.left);
	}

	// position shadows 
	p = document.getElementsByName('sh'); /* findimg shadows */
	var j = 0;
	var k = 0;
	for(i=0; i<p.length; i++) {
		if (k == 0) {
			EDAMM_mesh[j] = new Array(3);
			Left = parseInt(EDAMM_me[j].style.left);
			Top  = parseInt(EDAMM_me[j].style.top);
			Width = parseInt(EDAMM_me[j].offsetWidth);
			Height = parseInt(EDAMM_me[j].offsetHeight);
		}
		if (p[i].className == 'vsv') {
			p[i].style.left   = Left + Width;
			p[i].style.top    = Top + 5;
			p[i].style.width  = 5;
			p[i].style.height = Height - 5;
			EDAMM_mesh[j][0] = p[i];
			k++;
		}
		if (p[i].className == 'vsh') {
			p[i].style.left   = Left + 5;
			p[i].style.top    = Top + Height;
			p[i].style.width  = Width - 5;
			p[i].style.height = 5;
			EDAMM_mesh[j][1] = p[i];
			k++;
		}
		if (p[i].className == 'vsb') {
			p[i].style.left   = Left + Width;
			p[i].style.top    = Top  + Height;
			p[i].style.width  = 5;
			p[i].style.height = 5;
			EDAMM_mesh[j][2] = p[i];
			k++;
		}
		if (k == 3) {k = 0; j++}
	}
	
	/* -- submenus init -----------------------------------------------*/
		
	var p = document.getElementsByName('sm'); /* getting the submenu layers */
	for(var i=0;i<p.length; i++){
		EDAMM_sm[i] = p[i];
	}

	var Left, Top, Width, Height, d;

	p = document.getElementsByName('sb'); /* getting the submenu buttons */
	for(var i=0;i<p.length; i++){
		EDAMM_sb[i] = p[i];

		Left = p[i].offsetLeft;
		Top  = p[i].offsetTop;
		d = p[i];
		while (d.offsetParent){
			d = d.offsetParent;
			Left += d.offsetLeft;
			Top  += d.offsetTop;
		}
		Left += p[i].offsetWidth;
		
		EDAMM_sm[i].style.left = Left + al.smr; 
		if((parseInt(EDAMM_sm[i].style.left) + parseInt(EDAMM_sm[i].offsetWidth) + 5) > document.body.clientWidth){
			EDAMM_sm[i].style.left = parseInt(EDAMM_sm[i].style.left) - parseInt(p[i].offsetWidth) - parseInt(EDAMM_sm[i].offsetWidth + al.sml);
			if(parseInt(EDAMM_sm[i].style.left) < 0) EDAMM_sm[i].style.left = 0;
			EDAMM_sm[i].style.zIndex = 2;
		} else {
			EDAMM_sm[i].style.zIndex = 0;
		}
		EDAMM_sm[i].style.top  = Top + al.smt; 

	}

	// position shadows 
	var subm = document.getElementsByName('smh'); /* findimg submenu shadows */

	var SubLeft, SubTop, SubWidth, SubHeight = 0;
	j = k = 0;

	for(i=0; i<subm.length; i++) {
		if (k == 0) {
			EDAMM_smesh[j] = new Array(3);
			SubLeft = parseInt(EDAMM_sm[j].style.left);
			SubTop  = parseInt(EDAMM_sm[j].style.top);
			SubWidth = parseInt(EDAMM_sm[j].offsetWidth);
			SubHeight = parseInt(EDAMM_sm[j].offsetHeight);
		}
		if (subm[i].className == 'vsv') {
			subm[i].style.left   = SubLeft + SubWidth;
			subm[i].style.top    = SubTop + 5;
			subm[i].style.width  = 5;
			subm[i].style.height = SubHeight - 5;
			EDAMM_smesh[j][0] = subm[i];
			k++;
		}
		if (subm[i].className == 'vsh') {
			subm[i].style.left   = SubLeft + 5;
			subm[i].style.top    = SubTop + SubHeight;
			subm[i].style.width  = SubWidth - 5;
			subm[i].style.height = 5;
			EDAMM_smesh[j][1] = subm[i];
			k++;
		}
		if (subm[i].className == 'vsb') {
			subm[i].style.left   = SubLeft + SubWidth;
			subm[i].style.top    = SubTop  + SubHeight;
			subm[i].style.width  = 5;
			subm[i].style.height = 5;
			EDAMM_smesh[j][2] = subm[i];
			k++;
		}

		subm[i].style.zIndex = EDAMM_sm[j].style.zIndex;;
		if (k == 3) {k = 0; j++}
	}

// ---
	EDAMM_Initialized = true;
}

function findFather(obj){
	return obj.offsetParent.offsetParent.name;
}

function EDAMM_Over(e) {
	if(findFather(e) == "me"){
		EDAMM_SubHide();
	}
	if(e.className=="itemS"){
		EDAMM_ShowSub(e);
	}
	if (EDAMM_HideTimeout) window.clearTimeout(EDAMM_HideTimeout);
	if((e.className!="separator") && (e.className!="titleSep")) e.className = e.className+'Hover'; 
}
function EDAMM_Out(e) {
	e.className = e.className.replace(/Hover$/i,"")
	EDAMM_HideTimeout = window.setTimeout(EDAMM_Hide,EDAMM_HideDelay)
}

function EDAMM_ShowPanel(i,v) {
	if(EDAMM_me[i]){
		EDAMM_me[i].style.visibility = v;
	}
	
	if(EDAMM_mesh[i]) {
		EDAMM_mesh[i][0].style.visibility = v;
		EDAMM_mesh[i][1].style.visibility = v;
		EDAMM_mesh[i][2].style.visibility = v;
	}
}

function EDAMM_ShowPanelSub(i,v) {
	if(EDAMM_sm[i]){
		EDAMM_sm[i].style.visibility = v;
	}
	if(EDAMM_smesh[i]) {
		EDAMM_smesh[i][0].style.visibility = v;
		EDAMM_smesh[i][1].style.visibility = v;
		EDAMM_smesh[i][2].style.visibility = v;
	}
}

function EDAMM_ShowSub(d){
	if(!EDAMM_Initialized) EDAMM_Init();
	if (EDAMM_HideTimeout) window.clearTimeout(EDAMM_HideTimeout);
	EDAMM_SubHide();
	for (var i=0; i<EDAMM_sb.length; i++) {
		if (d == EDAMM_sb[i]) {
			if(EDAMM_sm[i].style.visibility=="hidden" || EDAMM_sm[i].style.visibility=="") {
				EDAMM_ShowPanelSub(i,"visible")
				EDAMM_isSubOpened = i;
				EDAMM_HideTimeout = window.setTimeout(EDAMM_Hide,EDAMM_HideDelay)
			} else {
				EDAMM_ShowPanelSub(i,"hidden")
				EDAMM_isSubOpened = -1;
			}
		} else {
			EDAMM_ShowPanelSub(i,"hidden")
		}
	}
}

function EDAMM_Show(d){
	if(!EDAMM_Initialized) EDAMM_Init();
	if (EDAMM_HideTimeout) window.clearTimeout(EDAMM_HideTimeout);
	EDAMM_isOpened = -1;
	
	for (var i=0; i<EDAMM_mt.length; i++) {
		if (d == EDAMM_mt[i]) {
			if(EDAMM_me[i].style.visibility=="hidden" || EDAMM_me[i].style.visibility=="") {
				EDAMM_ShowPanel(i,"visible")
				EDAMM_isOpened = i;
				EDAMM_HideTimeout = window.setTimeout(EDAMM_Hide,EDAMM_HideDelay)
			} else {
				EDAMM_ShowPanel(i,"hidden")
				EDAMM_isOpened = -1;
			}
		} else {
			EDAMM_ShowPanel(i,"hidden")
		}
		
		if(EDAMM_me[i].style.visibility=="visible") EDAMM_mt[i].className = "itemOp";
		else EDAMM_mt[i].className = "item";
	}
	selObj();
}

function EDAMM_Check(d){
	if(EDAMM_isOpened == -1) {
		d.className = "itemOver";
	}
	if((EDAMM_isOpened != -1) && (d != EDAMM_mt[EDAMM_isOpened])) {
		EDAMM_Hide();
		EDAMM_Show(d);
	}
}

function EDAMM_mOut(d){
	if(EDAMM_isOpened == -1) {
		d.className = "item";
	}
}

function EDAMM_Hide(){
	if(EDAMM_isOpened != -1) {
		EDAMM_Show(EDAMM_me[EDAMM_isOpened]);
	}
	if(EDAMM_isSubOpened != -1) {
		EDAMM_ShowPanelSub(EDAMM_isSubOpened,"hidden")
		EDAMM_isSubOpened = -1;
	}
}

function EDAMM_SubHide(){
	if(EDAMM_isSubOpened != -1) {
		EDAMM_ShowPanelSub(EDAMM_isSubOpened,"hidden")
		EDAMM_isSubOpened = -1;
	}
}

function selObj(){
	if(EDAMM_isOpened==-1) e = "visible";
	else e = "hidden";
	var obj = document.getElementsByTagName('SELECT');
	for(var i=0;i<obj.length;i++){
		obj[i].style.visibility = e;
	}
}

function show(obj){
	var result = "";
	for(var i in obj) {
		if(i.substr(0,2) != 'on')
			result += "object." + i + " = " + obj[i] + ";\n";
	}
	alert(result);
}
function EDAMM_Resize(){
	EDAMM_Initialized = false;
}
