/* Menu script for execspeak.com
   Explain me
*/
var homedir = ""
var homepage = homedir + "\/index.html"
var opencolor = "#b46f41"
var closedcolor	= "#FFFFFF"
var exp_days	= 1
var prev_cookie_menu	= "es_pmenu"
var prev_cookie_type	= "es_ptype"
var clicked_cookie_menu = "es_cmenu"
var clicked_cookie_type = "es_ctype"

// LOG
// Logs messages to a text area with the name debug_area
//function log(text){
//	document.debug_form.debug_area.value += text + "\n"
//}

// SETUP_PAGE
// Load state and open things up.
function setup_page(){
	// Load state
	var re_pid = new RegExp(prev_cookie_menu + "=[^;]+", "i")
	var re_ptype = new RegExp(prev_cookie_type + "=[^;]+", "i")
	var re_cid = new RegExp(clicked_cookie_menu + "=[^;]+", "i")
	var re_ctype = new RegExp(clicked_cookie_type + "=[^;]+", "i")
	var p_id
	var p_type
	var c_id
	var c_type
	
	var exp_date = new Date()
	var menu_exp = exp_date.setDate(exp_date.getDate() + parseInt(exp_days))
	
	// This fixes a bug which occured when browsers hit our page with no cookies. It only fixes the bug when entered at index.html
	if((location.pathname== homedir) || (location.pathname== homedir+"\/") || (location.pathname== homepage )){
		document.cookie = clicked_cookie_menu + "=home; expires=" + exp_date.toGMTString() + "; path=/"
		document.cookie = clicked_cookie_type + "=flat; expires=" + exp_date.toGMTString() + "; path=/"
	}
	
	// Get the previous menuid state.
	if (document.cookie.match(re_pid)){
		p_id = document.cookie.match(re_pid)[0].split("=")[1]
	}
	else{
		p_id = ""
	}
	// Get the previous type state.
	if (document.cookie.match(re_ptype)){
		p_type = document.cookie.match(re_ptype)[0].split("=")[1]
	}
	else{
		p_type = ""
	}
	// Get the clicked menuid state.
	if (document.cookie.match(re_cid)){
		c_id = document.cookie.match(re_cid)[0].split("=")[1]
	}
	else{
		c_id = ""
	}
	// Get the clicked type state.
	if (document.cookie.match(re_ctype)){
		c_type = document.cookie.match(re_ctype)[0].split("=")[1]
	}
	else{
		c_type = ""
	}
	// If clicked on a flat just change color
	if (c_type == "flat"){
		document.getElementById(c_id).firstChild.style.color = opencolor
	}
	// If clicked on a deep change color and open menu
	if (c_type == "deep"){
		document.getElementById(c_id).style.color = opencolor
		document.getElementById(c_id).childNodes.item(1).style.display = "block"
	}
	// If clicked on a bottom
	if (c_type == "bottom"){
		document.getElementById(c_id).parentNode.parentNode.style.color = opencolor
		document.getElementById(c_id).parentNode.style.display = "block"
		document.getElementById(c_id).firstChild.style.color = opencolor
	}
}	

// SET_CURRENT_STATE
// Save state and close things up
function set_curr_state(c_id, c_type, e){
	// Prevent bubbling, must do this to prevent parent onclicks from executing
	if(!e) var e = window.event
	e.cancelBubble = true
	if(e.stopPropagation) e.stopPropagation()

	// Get old id and type
	var re_cid = new RegExp(clicked_cookie_menu + "=[^;]+", "i")
	var re_ctype = new RegExp(clicked_cookie_type + "=[^;]+", "i")
	var p_id
	var p_type
	// Get the previous menuid state.
	if (document.cookie.match(re_cid)){
		found_a_cookie = true
		 p_id = document.cookie.match(re_cid)[0].split("=")[1]
	}
	else p_id = ""
	// Get the previous type state.
	if (document.cookie.match(re_ctype)){
		found_a_cookie = true
		p_type = document.cookie.match(re_ctype)[0].split("=")[1]
	}
	else p_type = ""

	// Save new state
	var exp_date = new Date()
	var menu_exp = exp_date.setDate(exp_date.getDate() + parseInt(exp_days))
	// Save the previous menu id
	document.cookie = prev_cookie_menu + "=" + p_id + "; expires=" + exp_date.toGMTString() + "; path=/"
	// Save the previous menu type
	document.cookie = prev_cookie_type + "=" + p_type   + "; expires=" + exp_date.toGMTString() + "; path=/"
	// Save the clicked menu id
	document.cookie = clicked_cookie_menu + "=" + c_id   + "; expires=" + exp_date.toGMTString() + "; path=/"
	// Save the clicked menu type
	document.cookie = clicked_cookie_type + "=" + c_type   + "; expires=" + exp_date.toGMTString() + "; path=/"

	// Going from flat to anything but bottom (which isn't possible)
	if (p_type == "flat" && c_type != "bottom"){
		document.getElementById(p_id).firstChild.style.color = closedcolor
		if (c_type == "deep"){
			document.getElementById(c_id).style.color = opencolor
			document.getElementById(c_id).childNodes.item(1).style.display = "block"
		}
	}
	// Going from a deep to a different deep, we take care of everything here (no onload)
	else if (p_type == "deep" && c_type == "deep" && (p_id != c_id)){
		document.getElementById(p_id).style.color = closedcolor
		document.getElementById(p_id).childNodes.item(1).style.display = "none"
		document.getElementById(c_id).style.color = opencolor
		document.getElementById(c_id).childNodes.item(1).style.display = "block"
	}
	// Going from deep to a flat
	else if (p_type == "deep" && c_type == "flat"){
		document.getElementById(p_id).style.color = closedcolor
		document.getElementById(p_id).childNodes.item(1).style.display = "none"
	}
	// bottom to bottom
	else if (p_type == "bottom" && c_type == "bottom"){
		document.getElementById(p_id).style.color = closedcolor
	}
	// bottom to flat
	else if (p_type == "bottom" && c_type == "flat"){
		document.getElementById(p_id).style.color = closedcolor
		document.getElementById(p_id).parentNode.style.display = "none"
		document.getElementById(p_id).parentNode.parentNode.style.color = closedcolor
	}
	// bottom to deep
	else if (p_type == "bottom" && c_type == "deep"){
		document.getElementById(p_id).style.color = closedcolor
		if (p_id != c_id){
			document.getElementById(p_id).parentNode.style.display = "none"
			document.getElementById(p_id).parentNode.parentNode.style.color = closedcolor
			document.getElementById(c_id).childNodes.item(1).style.display = "block"
			document.getElementById(c_id).style.color = opencolor
		}
	}
	//return false
}
