// sucht in einer Selectbox nach einem value und setzt diesen Eintrag als selected
function SetSelectOption(formFieldObj, optionValue) {
  for (i=0,n=formFieldObj.options.length;i<n;i++) {
    if (formFieldObj.options[i].value == optionValue) {
      formFieldObj.selectedIndex = i;
      break;
    }
  }
}

// ersetzen einer Selectbox Option
function replaceSelectOptions(selectObject,arrayName,firstOptionText,firstOptionValue) {
  deleteAllOptions(selectObject);

  if(firstOptionText != '') {
    addOption(selectObject,firstOptionText,firstOptionValue);
  }

  addArrayKeysToSelect(selectObject,arrayName);
}

// Alle Options einer Selectbox entfernen
function deleteAllOptions(selectObject) {
  selectObject.options.length = 0;
}

// ein Array mit Werten einer SelectBox hinzufuegen
function addArrayToSelect(selectObject,arrayName) {
  var count = arrayName.length;
  for (var i=0;i<count;i++) {
    addOption(selectObject,arrayName[i],i);
  }
}

// Die Keys eines Arrays einer Selectbox als Options hinzufuegen
function addArrayKeysToSelect(selectObject,arrayName) {
  for (var key in arrayName) {
    addOption(selectObject,key,key);
  }
}

// Option einer SelectBox hinzufuegen
function addOption(selectObject,optionText,optionValue) {
    var defaultSelected = true;
    var selected = false;
    var optionName = new Option(optionText, optionValue, defaultSelected, selected)
    var length = selectObject.length;
    selectObject.options[length] = optionName;
}

// Preise Formatieren
function NumberFormat(number, decimals, dec_point, thousands_sep) {
   var tmpNumber = number;
   var output = '';
   if (tmpNumber == 0) {
     output = '0';
      if (decimals >0) output = output + dec_point;
     for(var i =0; i < decimals; i++) output = output + '0';
   } else {
     var sign = false;
     if (tmpNumber < 0) {
       sign = true;
       tmpNumber = tmpNumber * -1;
     }
     var tnum = (Math.round(tmpNumber * Math.pow(10,decimals))).toString();
      // tnum should at least as long as decimals. if not... add the remaining 0's
 //     for(var i = tnum.length; i <= decimals;i++) tnum += '0';
     var pos = 0;
     var gotDec = false;
     if (decimals == 0) {
       gotDec = true;
       pos = -1;
     }
     for(var i = tnum.length; i >0; i--) {
       pos++;
       if (gotDec && (pos>0) && ((pos % 3)==0)) output = thousands_sep + output;
       output = tnum.charAt(i-1) + output;
       if (!gotDec &&(pos == decimals)) {
         if (decimals != 0) output = dec_point + output;
         gotDec = true;
         pos = -1;
       }
     }
     // do we need some leading zeros?
     if (decimals >0 && !gotDec) {
       for(var i = output.length; i < decimals;i++) output = '0' + output;
       output = '0' + dec_point + output;
     }
     if (output.charAt(0) == dec_point) output = '0' + output;
     if (sign) output = '-' + output;
   }
   return output;
 }

// Preis Kaufmaennisch Runden
function kaufmaennische_rundung(x) {
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  return k.substring(0, k.indexOf('.') + 3);
}


// Bestell Button verstecken
function HideSaveButton() {
  obj = document.getElementById("savebuttondiv");
  obj.style.display = "none";
}

// Bestell Button anzeigen
function ShowSaveButton() {
  obj = document.getElementById("savebuttondiv");
  obj.style.display = "inline";
}

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
  if(!radioObj)
    return "";
  var radioLength = radioObj.length;
  if(radioLength == undefined)
    if(radioObj.checked)
      return radioObj.value;
    else
      return "";
  for(var i = 0; i < radioLength; i++) {
    if(radioObj[i].checked) {
      return radioObj[i].value;
    }
  }
  return "";
}

// wird vom delivery iframe aufgerufen
function FinalLoadPrice() {

  LoadDeliveryDates();
  var deliveryType = document.variantForm.versand[document.variantForm.versand.selectedIndex].value;
  if(deliveryType == 'normal') {
    document.preisform.versandpreis.value = NumberFormat(document.terminform.versandpreis_normal.value, 2, '.', '');
  } else if(deliveryType == 'express') {
    document.preisform.versandpreis.value = NumberFormat(document.terminform.versandpreis_express.value, 2, '.', '');
  } else {
    document.preisform.versandpreis.value = '0.00';
  }

  Summe();
  ShowSaveButton();
}

// Preis zurücksetzen auf 0,00
function ResetPrice() {
  document.preisform.nettopreis.value = '0.00';
  document.preisform.versandpreis.value = '0.00';
  document.preisform.nettogesamtpreis.value = '0.00';
  document.preisform.summe.value = '0.00';
  document.preisform.mwst.value = '0.00';

  document.terminform.Normal_bestellen_bis.value = '-';
  // document.terminform.Spartarif_bestellen_bis.value = '-';

  document.terminform.Normal_fertig_am.value = '-';
  // document.terminform.Spartarif_fertig_am.value = '-';

  document.terminform.Normal_deutschland.value = '-';
  // document.terminform.Spartarif_deutschland.value = '-';

  document.terminform.Normal_schweiz.value = '-';
  // document.terminform.Spartarif_schweiz.value = '-';

  document.terminform.Normal_eu.value = '-';
  // document.terminform.Spartarif_eu.value = '-';
}

function SummeNetto() {
  var netto = parseFloat(document.preisform.nettopreis.value) - parseFloat(document.preisform.imprintrabatt.value) + parseFloat(document.preisform.datenkontrollepreis.value);
  document.preisform.nettogesamtpreis.value = NumberFormat(netto, 2, '.', '');
  return netto;
}

