/**
 * Manage the nav_left drop down menus.
 */

//load the icons
var nav_icons = new Array(2);
nav_icons['closed'] = new Image(9, 9);
nav_icons['closed'].src = '/images/widgets/nav_left_closed.png';
nav_icons['open'] = new Image(9, 9);
nav_icons['open'].src = '/images/widgets/nav_left_open.png';

var nav_left_current = null;
var nav_left_img_current = null;
var nav_left_prnt_current = null;

function initNavLeft(menu_num) {
  nav_left_current = 'nav_left_items_' + menu_num;
  nav_left_img_current = 'nav_left_img_' + menu_num;
  nav_left_prnt_current = 'nav_left_prnt_' + menu_num;
}

function switchNavLeft(menu_num) {

  var nav_left_new = 'nav_left_items_' + menu_num;
  var nav_left_img_new = 'nav_left_img_' + menu_num;
  var nav_left_prnt_new = 'nav_left_prnt_' + menu_num;

  var isOtherMenu = (nav_left_new != nav_left_current);
  var obj_new = getDOMObject(nav_left_new);
  var img_new = getDOMObject(nav_left_img_new);
  var prnt_new = getDOMObject(nav_left_prnt_new);

  //close current menu
  if (nav_left_current != null && isOtherMenu) {
    var obj_current = getDOMObject(nav_left_current);
    var img_current = getDOMObject(nav_left_img_current);
    var prnt_current = getDOMObject(nav_left_prnt_current);
    if (obj_current) {
      obj_current.style.display = "none";
      img_current.src = nav_icons['closed'].src;
      prnt_current.className = "closed";
	}
  }

  //open new menu
  if (obj_new) {
    if (obj_new.style.display != "block") {
      obj_new.style.display = "block";
      img_new.src = nav_icons['open'].src;
      prnt_new.className = "open";
      nav_left_current = nav_left_new;
      nav_left_img_current = nav_left_img_new;
      nav_left_prnt_current = nav_left_prnt_new;
    } else {
      obj_new.style.display = "none";
      img_new.src = nav_icons['closed'].src;
      prnt_new.className = "closed";
      nav_left_current = null;
      nav_left_img_current = null;
      nav_left_prnt_current = null;
	}
  }
}

/**
 * Manage a generic set of switchable exclusive boxes.
 */
var sb_current = null;

function initLayerExclusive(sb) {
 sb_current = sb;
}

function switchLayerExclusive(sb) {

  var isOtherMenu = (sb != sb_current);
  var obj_new = getDOMObject(sb);

  //close current menu
  if (sb_current != null && isOtherMenu) {
    var obj_current = getDOMObject(sb_current);
    if (obj_current) {
      obj_current.style.display = "none";
	}
  }

  //open new menu
  if (obj_new) {
    if (obj_new.style.display != "block") {
      obj_new.style.display = "block";
      sb_current = sb;
    } else {
      obj_new.style.display = "none";
      sb_current = null;
	}
  }
}

/**
 * Alternate between two exlusive layers.
 */
function alternateLayers(a, b, ensure) {
	var aobj = getDOMObject(a);
	var bobj = getDOMObject(b);
	if (aobj && bobj) {
		if (aobj.style.display == 'block' || ensure == b) {
			aobj.style.display = 'none';
			bobj.style.display = 'block';
		} else {
			aobj.style.display = 'block';
			bobj.style.display = 'none';
		}
	}
}

/**
 * Switch an element's display state between 'block' and 'none'.
 */
function SwitchLayer(layerName) {
  var obj = getDOMObject(layerName);
  if (obj) {
    if (obj.style.display != "block") {
      obj.style.display = "block";
    } else {
      obj.style.display = "none";
	}
  }
}

/**
 * Switch an element's display state between 'block' and 'none'.
 */
function SwitchLayerFlag(layerName, block) {
  	var obj = getDOMObject(layerName);
  	if (block) {
		obj.style.display = "block";
  	} else {
   		obj.style.display = "none";
	}
}

/**
 * Manage the shaded links on map rollovers.
 */

function SwitchNavWxPanOn(wxpan_new) {
  var obj_new = getDOMObject(wxpan_new);
  if (obj_new) {
    obj_new.className = "wxpan_roll";
  }
}

function SwitchNavWxPanOff(wxpan_old) {
  var obj_old = getDOMObject(wxpan_old);
  if (obj_old) {
    obj_old.className = "wxpan_norm";
  }
}

/**
 * Switch an element's style visibility state between 'visible' and 'hidden'.
 */
function switchLayerVisibility(layerName) {
  var obj = getDOMObject(layerName);
  if (obj) {
    if (obj.style.visibility != "visible") {
      obj.style.visibility = "visible";
    } else {
      obj.style.visibility = "hidden";
	}
  }
}

/**
 * List menus.
 */
function ConstructRollMenu(object, id, localAPLOC, obSITE, dsSITE, fcTWCID, radType, radCode, WZSTATE, fcMARIN, WZDIST) {
  if (object) {
    var html =
//      '<li><a href="javascript:void(0)"><img src="/images/widgets/nav_icon_more.gif" border="0" alt="more" width="10" height="10" /></a>' +
      '<ul id="rm_' + id + '">';
    if (localAPLOC != null) html += '<li><a href="/local/local.jsp?lt=aploc&lc=' + localAPLOC + '">Local Weather</a></li>';
    if (obSITE != null) html += '<li><a href="/station.jsp?lt=site&lc=' + obSITE + '&list=ob">Past 24 Hours</a></li>';
    if (dsSITE != null) {
      html += '<li><a href="/station.jsp?lt=site&lc=' + dsSITE + '&list=ds">Past Month</a></li>';
      html += '<li><a href="/climate/station.jsp?lt=site&lc=' + dsSITE + '">Climate</a></li>';
    }
    if (radType != null && radCode != null) html += '<li><a href="/radar.jsp?lt=' + radType + '&lc=' + radCode + '">Radar</a></li>';
    if (WZSTATE != null) html += '<li><a href="/satellite.jsp?lt=wzstate&lc=' + WZSTATE + '">Satellite</a></li>';
    if (fcTWCID != null) html += '<li><a href="/models/meteogram.jsp?lt=twcid&lc=' + fcTWCID + '">Meteograms</a></li>';
    if (fcMARIN != null) html += '<li><a href="/marine/marine.jsp?lt=marin&lc=' + fcMARIN + '">Marine</a></li>';
    if (WZDIST != null) {
      html += '<li><a href="/longrange/raindates.jsp?lt=wzdist&lc=' + WZDIST + '">28-day Rainfall</a></li>';
      html += '<li><a href="/longrange/raindeciles.jsp?lt=wzdist&lc=' + WZDIST + '">12-month Rainfall</a></li>';
    }
    html +=
      '</ul></li>';
    object.innerHTML += html;
  }
}

/***************
 * Rolling menus
 **************/
var mbW=250;
var mbO=[],mbP=[],mbA,mbT,mbTf;
var gRollMenus = new Array();

function mbSet(m,c) {
  if (document.getElementById&&document.createElement) {
    var m=document.getElementById(m);
    m.className=c;
    var e,f,i,j;

    var e=m.firstChild;
    while (e) {
      if (e.tagName=='LI') {
        var div=document.createElement('div');
        while (e.firstChild) {
          div.appendChild(e.firstChild);
        }
        e.appendChild(div);
      }
      e=e.nextSibling;
    }

    e=m.getElementsByTagName('a');
    if (!mbTf) mbTf=new Function('mbHAT();');
    for (i=0;i<e.length;i++) {
      e[i].onmouseout=e[i].onblur=mbTf;
    }

    m=m.getElementsByTagName('ul');
    for (i=0;i<m.length;i++) {
      if (j=m[i].id) {
        mbO[j]=m[i];
        e=m[i].parentNode;
        f=e.parentNode.getAttribute('id');
        if (mbO[f]) {
          mbP[j]=f;
        }
        f=new Function('mbS(\''+j+'\');');
        e=e.getElementsByTagName('a');
        for (c=0;c<e.length;c++) {
          e[c].onmouseover=e[c].onfocus=f;
        }
        mbH(j);
      }
    }
  }
}

function mbHA() {
	if (mbA) {
		while (mbA) mbH(mbA);
		mbHE('visible');
	}
}

function mbHAT() {
	if (!mbT) mbT=setTimeout('mbHA();', mbW);
}

function mbTC() {
	if (mbT) {
		clearTimeout(mbT);
		mbT=null;
	}
}

function mbS(m) {
	mbTC();
	if (mbA) while (mbA&&m!=mbA&&mbP[m]!=mbA) mbH(mbA);
	else mbHE('hidden');

	mbSH(m,'visible');
	mbA=m;
}

function mbH(m) {
	if (m==mbA) mbA=mbP[m];
	mbSH(m,'hidden');
	mbT=null;
}

function mbSH(m,v) {
	mbO[m].parentNode.firstChild.className=v;
	mbO[m].style.visibility=v;
}

function mbHE(v) {
	//mbHEV(v,document.getElementsByTagName('select'));
}

function mbHEV(v,e) {
	for (var i=0;i<e.length;i++) e[i].style.visibility=v;
}

function initRollMenus(navIds) {
  for (var i=0; i<navIds.length; i++) {
    if (document.getElementById(navIds[i])) {
      mbSet(navIds[i], 'mb');
    }
  }
}
