// MACROMEDIA

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}

// Methods to check browser

function isIE() {
  // ##TODO## some browsers pretend to be MSIE!
  return navigator.appName.toLowerCase().indexOf("microsoft internet explorer") != -1;
}

function disableAll(elements, disable) {
  var i;
  for (i=0; i < elements.length; i++) {
    elements[i].disabled = disable;
  }
}

function setFocus(element) {
  document.getElementById('element').focus();
}

function updateToolbarButtons(checkboxName) {
  var count = countCheckedCheckboxes(checkboxName, null);
  var btns = document.getElementsByTagName('button');
  var i;
  if (count == 0) { // disable buttons
    for (i = 0; i < btns.length; i++) {
      if (btns.item(i).id.indexOf(checkboxName) == 0) {
        btns.item(i).disabled = true;
        btns.item(i).className = 'disabled';
      }
    }
  } else { // enable buttons
    for (i = 0; i < btns.length; i++) {
      if (btns.item(i).id.indexOf(checkboxName) == 0) {
        btns.item(i).disabled = false;
        btns.item(i).className = '';
      }
    }
  }
}

// Disallow sending to cart
var disallowFromCart = 0;
function canAddToCart(cb, canAddToCart)
{
  if(!canAddToCart)
  {
    if(cb.checked) disallowFromCart++;
    else disallowFromCart--;
  }
}
function isOkToAddToCart(msg)
{
  if(disallowFromCart>0)
  {
    alert( msg );
    return false;
  }
  return true;
}

function countCheckedCheckboxes(checkboxName, skipCheckboxId) {
  var count = 0;
  var checkboxes = document.getElementsByTagName('input');

  for (var i=0; i < checkboxes.length; i++) {
    if (checkboxes[i].type == 'checkbox'
        && (checkboxName == null || checkboxes[i].name.indexOf(checkboxName) == 0)
        && (skipCheckboxId == null || skipCheckboxId != checkboxes[i].id)) {
      if (checkboxes[i].checked && !checkboxes[i].disabled) {
        count++;
      }
    }
  }

  return count;
}

function alertIfNotOneCheckboxSelected(message, skipCheckboxId) {
  if (countCheckedCheckboxes(null, skipCheckboxId) == 1) {
    return true;
  }
  
  alert(message);
  return false;
}

function alertIfNoCheckboxSelected(message, skipCheckboxId) {
  if (countCheckedCheckboxes(null, skipCheckboxId) > 0) {
    return true;
  }
  
  alert(message);
  return false;
}

function alertIfNotOneNamedCheckboxSelected(message, checkboxName) {
  if (countCheckedCheckboxes(checkboxName, null) > 0) {
    return true;
  }
  
  alert(message);
  return false;
}

function alertIfNoNamedCheckboxSelected(message, checkboxName) {
  if (countCheckedCheckboxes(checkboxName, null) > 0) {
    return true;
  }
  
  alert(message);
  return false;
}

function changeElementName(tagName, oldName, newName) {
  var elements = document.getElementsByTagName(tagName);
  for (var i=0; i < elements.length; i++) {
    if (elements[i].name == oldName) {
      elements[i].name = newName;
    }
  }
  return true;
}

// Disables/undisabled fields that have id's idStart+0, idStart+1, ...
function iterateAndDisable(idStart, disabled) {
  var i;
  var element;
  for (i=0; (element = document.getElementById(idStart + i)) != null; i++) {
    element.disabled=disabled;
  }
}

// Checks/unchecks checkboxes that have id's idStart+0, idStart+1, ...
function iterateAndCheck(idStart, checked) {
  var i;
  var element;
  var nullCount = 0;
  for (i=0; (element = document.getElementById(idStart + i)) != null || nullCount < 10; i++) {
    if (element != null && element.disabled == 0) {
      element.checked=checked;
      nullCount = 0;
    } else if (element == null) {
      nullCount++;
    }
  }
}

function clearAndDisableCartGroup(nodeId, checked) {
  var trElement = document.getElementById('tr_' + nodeId);
  for (trElement = trElement.nextSibling; trElement; trElement = trElement.nextSibling) {
    if (trElement.nodeName == 'TR') {
      if (trElement.className.indexOf('indented') != -1) {
        var items = trElement.getElementsByTagName('input');
        for (var i = 0; i < items.length; i++) {
          var item = items.item(i);
          if (item.name == 'selectedNodes') {
            item.checked = checked;
          }
        }
      } else {
        break;
      }
    }
  }
}

function clearAndDisableCartContent(name, disabled) {
  var i;
  var element;
  var elements = document.getElementsByName(name);
  for (i=0; i < elements.length; i++) {
    element = elements[i];
  	//element.disabled=disabled;
  	if (disabled) {
	  element.checked=1;
	} else {
	  element.checked=0;
	}
  }  
}

function deselectSelectAllCartContent(selected) {
  if (!selected) {
    var selectDeselectAllElement = document.getElementById('selectAllCartContent');
    selectDeselectAllElement.checked = false;
  }
  updateToolbarButtons('selected');
}

function submitToPage1(formId) {
  form = document.getElementById(formId);
  form.page.value = 1;
  form.submit();
}

function changePage(form, page) {
  form.reset();
  form.page.value = page;
  form.submit();
}

function changeOrder(form, order) {
  form.reset();
  form.order.value = order;
  form.page.value = 1;
  form.submit();
}

function submitForm(form, parameter) {
  form.command.value = parameter;
  form.submit();
}

function setCommand(parameter) {
  form.command.value = parameter;
}

function submitFormWithAction(form, action) {
  form.action = action;
  form.method = 'post';
  form.submit();
}

function submitFormWithActionAndCommand(form, action, command) {
  form.action = action;
  form.command.value = command;
  form.submit();
}

function redirectForm(form, action, parameter) {
  form.action = action;
  submitForm(form, parameter);
}

function toggleBooleanValue(field) {
  if (field.value == 'true') {
    field.value = 'false';
  } else if (field.value == 'false') {
    field.value = 'true';
  } else {
    field.value = !field.value;
  }
}

// Functions to show and hide elements

function iterateShowHide(idPrefix, showClassName) {
    var i = 0;
    var element = document.getElementById(idPrefix + '_' + i++);
    while (element != null) {
      if (element.className == "hidden") {
        element.className = showClassName;
      } else {
        element.className = "hidden";
      }
      element = document.getElementById(idPrefix + '_' + i++);
    }
}


function showhide() {
	if(document.getElementById('navi').className == "hidden") {
		MM_changeProp('navi','','className','visible','DIV');
		MM_changeProp('content','','className','margin','DIV');
		MM_changeProp('bodybox','','className','bg','DIV');
		MM_changeProp('body','','className','bg','BODY');
		SetCookie('navion','on',1);		
	}
	else {
		MM_changeProp('navi','','className','hidden','DIV');
		MM_changeProp('content','','className','nomargin','DIV');		
		MM_changeProp('bodybox','','className','nobg','DIV');		
		MM_changeProp('body','','className','nobg','BODY');		
		SetCookie('navion','off',1);
	}
}

function hideIfHidden() {
	if(ReadCookie('navion') == 'off') {
		MM_changeProp('navi','','className','hidden','DIV');
		MM_changeProp('content','','className','nomargin','DIV');
		MM_changeProp('bodybox','','className','nobg','DIV');
		MM_changeProp('body','','className','nobg','BODY');		
	}	
}

function showhidebasket(nodeId) {
  var imgElement = document.getElementById('img_' + nodeId);
  var dispValue;
  if (imgElement.className == "closed") {
    imgElement.className = 'open';
    dispValue='';
  } else {
    imgElement.className = 'closed';
    dispValue='none';
  }

  var trElement = document.getElementById('tr_' + nodeId);
  for (trElement = trElement.nextSibling; trElement; trElement = trElement.nextSibling) {
    if (trElement.nodeName == 'TR') {
      if (trElement.className.indexOf('indented') != -1) {
        trElement.style.display = dispValue;
      } else {
        break;
      }
    }
  }

  setOpenBasketsToFieldValue('openBaskets');
}

function setOpenBasketsToFieldValue(fieldId) {
  var fieldElement = document.getElementById(fieldId);  
  var imgElements = document.getElementsByTagName('img');

  fieldElement.value = "";

  for (var i = 0; i < imgElements.length; i++) {
    var key = imgElements[i].id;

    if (imgElements[i].className == 'open' && key.indexOf('img_') == 0) {
      key = ":" + key.substring(4) + ":"
      if (fieldElement.value == "") {
        fieldElement.value = key;
      } else {
        fieldElement.value += ", " + key;
      }
    }
  }
}

// Cookie-functions

function SetCookie(cookieName,cookieValue,nHours) {
	var today = new Date();
	var expire = new Date();
	if (nHours==null || nHours==0) nHours=1;
	expire.setTime(today.getTime() + 3600000*nHours);
	document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function ReadCookie(cookieName) {
	var theCookie=""+document.cookie;
	var ind=theCookie.indexOf(cookieName);
	if (ind==-1 || cookieName=="") return ""; 
	var ind1=theCookie.indexOf(';',ind);
	if (ind1==-1) ind1=theCookie.length; 
	return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

// Choose basket 

function chooseBasket(page) {
	window.open(page,'baskets','width=800,height=600');
}

function closeBasketPopup(page) {
	window.opener.document.location=page;
	window.close();
}

function openWindow(URL, name) {
	window.open(URL, name,'width=800,height=600');
}

// select users to group
function selectUsersToGroup(page) {
	window.open(page,'selectUsersToGroup','width=800,height=600');
}

function deselectSelectAllUsers() {
  var element = document.getElementById('selectedUsersAll');
  element.checked = false;
}
      
function selectAllUsers(isChecked) {
  var elements = document.getElementsByName('selectedUsers');

  for (var i=0; i < elements.length; i++) {
    elements[i].checked = isChecked;
  }
}

// opens object rights selection window
function setObjectRights(page) {
	window.open(page,'setObjectRights','width=700,height=600');
}

// showAction

function showAction(action) {
  var actBox = document.getElementById('actionbox');
  
  if (actBox != null) {
    actBox.value = action;
  }  
}
function clearAction() {
  var actBox = document.getElementById('actionbox');
  
  if (actBox != null) {
    actBox.value = '';
  }  
}

// Date-functions

function paiva() {
  var date = new Date();
  var d = date.getDate();
  var m = date.getMonth() + 1;
  var y = date.getYear();
  y = (y < 1000) ? y + 1900 : y;
  return(d + "." + m + "." + y);
}

function aika() {
  var date = new Date();
  var h = date.getHours();
  var mi = date.getMinutes();
  mi = (mi < 10) ? "0" + mi : mi; 
  return(h + ":" + mi);
}

function paivaAika() {
  return(paiva() + " " + aika());
}

/*
 * variable The variable that determines if the showHideElement should be shown
 * hideValue If variable == hideValue, we hide
 * showHideElement The element to be hidden/shown
 * showType For example 'inline' or 'block'
 */
function valueShowHide(variable, hideValue, showHideElement, showType) {
  if (variable == hideValue) {
    showHideElement.style.display = 'none';
  } else {
    showHideElement.style.display = showType;
  }
}

/* Hides all elements from nodes whose id ends with ')L'
 * and shows all elements whose id ends with
 * '(' + lang + ')L'.
 */
function changeLang(lang, showStyle, nodes) {
  for (var i=0; i < nodes.length; i++) {
    if (nodes[i].id != null) {
      if (nodes[i].id.lastIndexOf(lang + ')L') != -1) {
        nodes[i].style.display = showStyle;
      } else if (nodes[i].id.lastIndexOf(')L') != -1) {
        nodes[i].style.display = 'none';
      }
    }
  }
}

/* Hides all input, textarea,select,div elements whose id ends with ')L'
 * and shows all elements whose id ends with
 * '(' + lang + ')L'.
 */
var timer;
function changeLanguage(lang) {
  changeLang(lang, 'inline', document.getElementsByTagName('input'));
  changeLang(lang, 'inline', document.getElementsByTagName('textarea'));
  changeLang(lang, 'inline', document.getElementsByTagName('select'));
  changeLang(lang, 'inline', document.getElementsByTagName('div'));

  // IE hack, body onLoad trigger's apparently before tinyMCE instance
  // has loaded fully, so we load the content with a short delay, hoping
  // that tinyMCE instance has had enougth time to be parsed by browser
  timer = setTimeout("loadContent('"+lang+"')", 200);
}

/* Loads data from hidden field to HTML editor.
 */
function loadContent(lang) {
  clearTimeout(timer);

  var nodes = document.getElementsByTagName('textarea');
  for (var i = 0; i < nodes.length; i++) {
    var textE = nodes.item(i);
    if (textE.className == 'mceEditor') {
      var editorName = textE.getAttribute('name');
      var hiddenE = document.getElementById(editorName + '(' + lang + ')');
      textE.value = hiddenE.value;
      textE.setAttribute('languageCode', lang);
      
      if (document.documentElement.getAttribute('isHtml') != 'false') {
      	var temp = document.getElementById(editorName);
        if( tinyMCE && tinyMCE.activeEditor)
	  tinyMCE.activeEditor.load();
      }
    }
  }
}

/* Saves data from HTML editor to hidden fields.
 */
function saveContent() {
  if (document.documentElement.getAttribute('isHtml') != 'false') {
    tinyMCE.triggerSave();
  }
  var nodes = document.getElementsByTagName('textarea');
  for (var i = 0; i < nodes.length; i++) {
    var textE = nodes.item(i);
    if (textE.className == 'mceEditor') {
      var lang = textE.getAttribute('languageCode');
      var editorName = textE.getAttribute('name');
      
      if (lang) {
        var hiddenE = document.getElementById(editorName + '(' + lang + ')');
        hiddenE.value = textE.value;
      }
    }
  }
}

function useLink(buttonid) {
  var linkid = buttonid.replace("_button", "_link");
  var href = document.getElementById(linkid).href;
  window.location = href;
  return false;
}

function confirmPressLink(message, buttonid) {
  if (confirm(message)) {
    useLink(buttonid);
  }
}
 
/* Enables/Disables all textarea/tinyMCE editors.
 */
function toggleTinyMCE(enabled) {
  if (!enabled) {
    tinyMCE.triggerSave();
    document.documentElement.setAttribute('isHtml', 'false');
  } else {
    document.documentElement.setAttribute('isHtml', 'true');
  }

  var nodes = document.getElementsByTagName('textarea');
  for (var i = 0; i < nodes.length; i++) {
    var n = nodes.item(i);
    if (n.className == 'mceEditor') {
      var editor = n.nextSibling;
      if (!editor || editor.nodeName.toLowerCase() != 'span') {
	// firefox and explorer behave differently...
        editor = n.previousSibling;
      }
      if (enabled) {
        tinyMCE.activeEditor.load();
        //tinyMCE.updateContent(n.getAttribute('name'));
        n.style.display = 'none';
        editor.style.display = 'inline';
      } else {
        n.style.display = 'block';
        editor.style.display = 'none';
      }
    }
  }
}

/* Opens up a popup for selecting user emails.
 * page = URL to selectAddress -page. URL may contain parameters
 *  selected = list of pre-selected emails.
 *  separator = a separator character for the returned list (default = newline).
 * When selection is done, the list of selected emails is put into input.value.
 */
function openAddressSelector(page, input) {
  var sep = '&';
  if (page.indexOf('?') == -1) {
    sep = '?';
  }

  window._selectAddressCB = function(emails) { input.value = emails; };
  window.open(page + sep + 'selected=' + escape(input.value), 'addressSelector', 'width=900,height=600');
}

/* Returns all input elements that have the correct name and are checked
 * in a string '&name=value&name=value&...'.
 */
function getCheckedBoxes(name) {
  var str = '';
  var items = document.getElementsByTagName('input');
  for (var i = 0; i < items.length; i++) {
    var item = items.item(i);
    if (item.name == name && item.checked) {
      str = str + '&' + name + '=' + escape(item.value);
    }
  }
  return str;
}

/* Returns all input elements that have the correct name and are checked
 * in a string '&name=value&name=value&...'.
 */
function getCheckedBoxesTwin(name, name2) {
  var str = '';
  var items = document.getElementsByTagName('input');
  for (var i = 0; i < items.length; i++) {
    var item = items.item(i);
    if (item.name == name && item.checked) {
      str = str + '&' + name + '=' + escape(item.value);
    }
    if (item.name == name2 && item.checked) {
      str = str + '&' + name2 + '=' + escape(item.value);
    }
  }
  return str;
}

/* Opens a details popup. This method is being called when <n:tbarbutton> is being used */
function open_details(url, width, height, name)
{
  name = ( !name ) ? "Details" : name;
  var width = ( width && width > 0 ) ? width : 800;
  var height = ( height && height > 0 ) ? height : 600;
  
  document["popup_"+name] = window.open(url, name, "width="+width+",height="+height+",menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no");
  document["popup_"+name].focus();
}

function open_details_and_submit(url, width, height, name, formId) {
    var form = document.getElementById(formId);
    var oldTarget = form.target;
    var oldAction = form.action;
    var oldMethod = form.method;
    
    /*open_details('', width, height, name);*/
    name = ( !name ) ? "Details" : name;
    width = ( width && width > 0 ) ? width : 800;
    height = ( height && height > 0 ) ? height : 600;
    document["popup_"+name] = window.open('', name, "width="+width+",height="+height+",menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no")
    document["popup_"+name].focus();
	
	form.target = name;
	form.action = url;
	form.method = 'post';
	
    form.submit();	
    
    form.target = oldTarget;
    form.action = oldAction;
    form.method = oldMethod;
}

function toggleAllCheckboxes(name, checked) {
  var checkboxes = document.getElementsByTagName('input');
  for (var i=0; i < checkboxes.length; i++) {
    if (checkboxes[i].type == 'checkbox' &&
        name == checkboxes[i].name) {
      checkboxes[i].checked = checked
    }
  }
}