// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Global variable for tracking the currently active button.

var activeButton = null;

// Capture mouse clicks on the page so any active button can be
// deactivated.

if (browser.isIE)
  document.onmousedown = pageMousedown;
if (browser.isNS)
  document.addEventListener("mousedown", pageMousedown, true);

function pageMousedown(event) {

  var el;

  // If there is no active menu, exit.

  if (!activeButton)
    return;

  // Find the element that was clicked on.

  if (browser.isIE)
    el = window.event.srcElement;
  if (browser.isNS)
    el = (event.target.className ? event.target : event.target.parentNode);

  // If the active button was clicked on, exit.

  if (el == activeButton)
    return;

  // If the element clicked on was not a menu button or item, close the
  // active menu.

  if (el.className != "menuButton"  && el.className != "menuItem" &&
      el.className != "menuItemSep" && el.className != "menu")
    resetButton(activeButton);
}

function buttonClick(button, menuName) {

  // Blur focus from the link to remove that annoying outline.

  //button.blur();

  // Associate the named menu to this button if not already done.

  if (!button.menu)
    button.menu = document.getElementById(menuName);

  // Reset the currently active button, if any.

  if (activeButton && activeButton != button)
    resetButton(activeButton);

  // Toggle the button's state.

  if (button.isDepressed)
    resetButton(button);
  else
    depressButton(button);

  return false;
}

function buttonOut(button) {

  // If any other button menu is active, deactivate it and activate this one.
  // Note: if this button has no menu, leave the active menu alone.

    //if (activeButton && activeButton != button)
   // if (activeButton)
 //   resetButton(activeButton);

}

function buttonMouseover(button, menuName) {

  // If any other button menu is active, deactivate it and activate this one.
  // Note: if this button has no menu, leave the active menu alone.

  if (activeButton && activeButton != button) {
    resetButton(activeButton);
    if (menuName)
      buttonClick(button, menuName);
  }
}

function depressButton(button) {

  var w, dw, x, y;

  // Change the button's style class to make it look like it's depressed.

  button.className = "menuButtonActive";

  // For IE, set an explicit width on the first menu item. This will
  // cause link hovers to work on all the menu's items even when the
  // cursor is not over the link's text.

  if (browser.isIE && !button.menu.firstChild.style.width) {
    w = button.menu.firstChild.offsetWidth;
    button.menu.firstChild.style.width = w + "px";
    dw = button.menu.firstChild.offsetWidth - w;
    w -= dw;
    button.menu.firstChild.style.width = w + "px";
  }

  // Position the associated drop down menu under the button and
  // show it. Note that the position must be adjusted according to
  // browser, styling and positioning.

  x = getPageOffsetLeft(button);
  y = getPageOffsetTop(button) + button.offsetHeight;
  if (browser.isIE) {
    x += 2;
    y += 2;
  }
  if (browser.isNS && browser.version < 6.1)
    y--;

  // Position and show the menu.

  button.menu.style.left = x + "px";
  button.menu.style.top  = y + "px";
  button.menu.style.visibility = "visible";

  // Set button state and let the world know which button is
  // active.

  button.isDepressed = true;
  activeButton = button;
}

function resetButton(button) {

  // Restore the button's style class.

  button.className = "menuButton";

  // Hide the button's menu.

  if (button.menu)
    button.menu.style.visibility = "hidden";

  // Set button state and clear active menu global.

  button.isDepressed = false;
  activeButton = null;
}

function getPageOffsetLeft(el) {

  // Return the true x coordinate of an element relative to the page.

  return el.offsetLeft + (el.offsetParent ? getPageOffsetLeft(el.offsetParent) : 0);
}

function getPageOffsetTop(el) {

  // Return the true y coordinate of an element relative to the page.

  return el.offsetTop + (el.offsetParent ? getPageOffsetTop(el.offsetParent) : 0);
}


function numbersonly(e) {
	var unicode=e.charCode? e.charCode : e.keyCode;
	if (unicode!=8){ //if the key isn't the backspace key (which we should allow)
		if (unicode<48||unicode>57) //if not a number return false //disable key press
			return false;
	}
}


var hardcoded_values = new Array();
hardcoded_values['armor'] = new Array("None","Platte","Kette","Leder","Stoff");
hardcoded_values['stigma'] = new Array("None", "Kleriker","Kantor","Assassine","Jaeger","Templer","Gladiator","Zauberer","Beschwoerer");
hardcoded_values['accessoire'] = new Array("None");
hardcoded_values['weapon'] = new Array("None");
hardcoded_values['other'] = new Array("None");


function type_selection_changed_edit(combo1, selected)
{
    // 1. get the selected value from combo1:
    var combo1_value = combo1.value;

    // 2. make sure combo2 is empty:
    document.forms["edit_equip_box"].elements["subtype"].options.length=0;

    // 3. loop throught the hard-coded values:
    for (var i=0;i<hardcoded_values[combo1_value].length;i++)
    {

        // dynamically create a new <option> element:
        var opt = document.createElement("option");
        if (selected==i)
        	opt.selected=true;
        // set the value-attribute of it:
        opt.setAttribute('value',i); // (normally, i is zero-based, but we do +1 so that "part 1" equals a value of 1..
        // set the displayed value:
        opt.innerHTML = hardcoded_values[combo1_value][i];
        // append this option to combo2:
        document.forms["edit_equip_box"].elements["subtype"].appendChild(opt);
    }
}

function type_selection_changed_filter(combo1, selected)
{
    // 1. get the selected value from combo1:
    var combo1_value = combo1.value;

    // 2. make sure combo2 is empty:
    document.forms["filter"].elements["subtype"].options.length=0;

    // dynamically create a new <option> element:
        var opt = document.createElement("option");
        // set the value-attribute of it:
        opt.setAttribute('value',0); // (normally, i is zero-based, but we do +1 so that "part 1" equals a value of 1..
        if (selected==0)
        	opt.selected=true;
        // set the displayed value:
        opt.innerHTML = 'Alle';
        // append this option to combo2:
        document.forms["filter"].elements["subtype"].appendChild(opt);
    // 3. loop throught the hard-coded values:
    for (var i=1;i<hardcoded_values[combo1_value].length;i++)
    {
        if (selected==i)
        	opt.selected=true;
        // dynamically create a new <option> element:
        var opt = document.createElement("option");
        // set the value-attribute of it:
        opt.setAttribute('value',i); // (normally, i is zero-based, but we do +1 so that "part 1" equals a value of 1..
        // set the displayed value:
        opt.innerHTML = hardcoded_values[combo1_value][i];
        // append this option to combo2:
        document.forms["filter"].elements["subtype"].appendChild(opt);
    }
}
