/**
*
* params: {
*   nodes: <topItemID1>:<subItemID1>, <topItemID2>:<subItemID2>, <topItemID3>:<subItemID3>, ... ,
*   startActive: <startActiveTopItemID>,
*   defaultActive: <defaultActiveTopItemID>,
*   activeClassName: <activeNodeCSSClassName>,
*   className: <nodeCSSClassName>
* }
*/
function initDynamicMenu(params) {
  var index = 0;
  for (key in params.nodes) {
    var topItem = document.getElementById(key);
    if (!topItem) {
//       alert("Can't find element with ID:" + key);
       return;
    }

    var targetItem = document.getElementById(params.nodes[key]);
    if (!targetItem) {
//       alert("Can't find element with ID:" + params.nodes[key]);
       return;
    }

    if ((params.startActive && params.startActive == key) || (index == 0 && !params.startActive)) {
      if (params.activeClassName) {
        topItem.className = params.activeClassName;
      }
      targetItem.style.display = "";
    } else {
      if (params.className) {
        topItem.className = params.className;
      }
      targetItem.style.display = "none";
    }

    topItem.onmouseover = function() {
      ps_refreshStateOfNodes(params, this.id);
    };

    topItem.onmouseout = function() {
      if (params.defaultActive) {
        ps_refreshStateOfNodes(params, params.defaultActive);
      }
    };

    index++;
  }
}

/**
*
* params: {
*   nodes: <topItemID1>:<subItemID1>, <topItemID2>:<subItemID2>, <topItemID3>:<subItemID3>, ... ,
*   startActive: <startActiveTopItemID>,
*   activeClassName: <activeNodeCSSClassName>,
*   className: <nodeCSSClassName>
* }
*/
function initContentMenu(params) {
  var index = 0;
  for (key in params.nodes) {
    var topItem = document.getElementById(key);
    if (!topItem) {
//       alert("Can't find element with ID:" + key);
       return;
    }

    var targetItem = document.getElementById(params.nodes[key]);
    if (!targetItem) {
//       alert("Can't find element with ID:" + params.nodes[key]);
       return;
    }

    if ((params.startActive && params.startActive == key) || (index == 0 && !params.startActive)) {
      if (params.activeClassName) {
        topItem.className = params.activeClassName;
      }
      targetItem.style.display = "";
    } else {
      if (params.className) {
        topItem.className = params.className;
      }
      targetItem.style.display = "none";
    }

    topItem.onclick = function() {
      ps_refreshStateOfNodes(params, this.id);
    };

    index++;
  }
}

function ps_refreshStateOfNodes(params, visibleNodeId) {
  // show corresponding element and hide others
  for (topItemId in params.nodes) {
    var topItemNode = document.getElementById(topItemId);
    if (!topItemNode){
//       alert("Can't find element with ID:" + params.nodes[key]);
       return;
    }
    var targetItemNode = document.getElementById(params.nodes[topItemId]);
    if (topItemId != visibleNodeId) {
      if (params.className) {
        topItemNode.className = params.className;
      }
      targetItemNode.style.display = "none";
    } else {
      if (params.activeClassName) {
        topItemNode.className = params.activeClassName;
      }
      targetItemNode.style.display = "";
	    if (document.getElementById('tabActiveHidden')){
	    	document.getElementById('tabActiveHidden').value=topItemId;
	    }
    }
  }
}


//Translatable component functions
function addTranslatable(name, language){
  var languages = new Array();
  //Fill languages array with avalible languages.
  var selectBox = document.getElementById("select_" + name + "_" + language);
  for(var i=0;i<selectBox.options.length;i++){
    if(language != selectBox.options[i].value){
      languages[languages.length]=selectBox.options[i].value;
    }
  }

  //Check if it is possible to add translation for new language.
  if (languages.length < 1){
    alert("You can't add more translations!");
    return false;
  }
  
  //Select new language.
  var newLanguage = languages.shift();
  //Remove this language from other select boxes.
  var selectBoxes = document.getElementsByName("select_" + name);
  for (var i=0;i<selectBoxes.length;i++){            
    for (var j=0;j<selectBoxes[i].options.length;j++){
      if (newLanguage == selectBoxes[i].options[j].value){
        selectBoxes[i].remove(j);
        break;
      }
    }
  }
  
  //Create input element.
  var tDiv = document.createElement("div");
  tDiv.id = "div_" + name + "_" + newLanguage;
  var tHtml = document.getElementById("div_"+name+"_" + language).innerHTML;
  tHtml = tHtml.replace("input_" + name + "_" + language, "input_" + name + "_" + newLanguage);
  tHtml = tHtml.replace(name + "[" + language + "]", name + "[" + newLanguage + "]");
  tHtml = tHtml.replace("select_" + name + "_" + language, "select_" + name + "_" + newLanguage);
  tHtml = tHtml.replace("button_" + name + "_" + language, "button_" + name + "_" + newLanguage);
  tHtml = tHtml.replace("addTranslatable", "removeTranslatable");
  tHtml = tHtml.replace("plus.gif", "minus.gif");
  tDiv.innerHTML = tHtml;
  document.getElementById("translatable_" + name).appendChild(tDiv);
  var tSelectBox = document.getElementById("select_" + name + "_" + newLanguage);
  for(var i=0;i<tSelectBox.options.length;i++){
    if(language == tSelectBox.options[i].value){
      tSelectBox.options[i].value = newLanguage;
      tSelectBox.options[i].label = newLanguage;
      tSelectBox.options[i].text = newLanguage;
    }
  }
  
}

function changeTranslatableLanguage(name, selectLanguages){
  var oldLanguage = selectLanguages.id.substr(selectLanguages.id.lastIndexOf("_") + 1);
  var selLanguage = selectLanguages.value;
  document.getElementById("div_" + name + "_" + oldLanguage).id = "div_" + name + "_" + selLanguage;
  document.getElementById("input_" + name + "_" + oldLanguage).name = name + "[" + selLanguage + "]";
  document.getElementById("input_" + name + "_" + oldLanguage).id = "input_" + name + "_" + selLanguage;
  document.getElementById("select_" + name + "_" + oldLanguage).id = "select_" + name + "_" + selLanguage;
  document.getElementById("button_" + name + "_" + oldLanguage).id = "button_" + name + "_" + selLanguage;
}

function removeTranslatable(name, language){
  //Add removed language to other select boxes.
  var selectBoxes = document.getElementsByName("select_" + name);
  for (var i=0;i<selectBoxes.length;i++){            
    selectBoxes[i].options.add(new Option(language,language));
  }
  document.getElementById("translatable_" + name).removeChild(document.getElementById("div_" + name + "_" + language));
}
