//
// Cookie-Handling
//
function encodeFormValues(form_name) {
  var arg_names = encodeFormValues.arguments;
  var arg_count = encodeFormValues.arguments.length;
  var enc_string = "";
  for (var i = 1; i < arg_count; i++) {
   var element_name = arg_names[i];
   if (document.forms[form_name].elements[element_name].type == 'select-one') {
     enc_string += escape(document.forms[form_name].elements[element_name].name);
     enc_string += ':';
     enc_string += escape(document.forms[form_name].elements[element_name].selectedIndex);
     enc_string += '&';
   } else {
     enc_string += escape(document.forms[form_name].elements[element_name].name);
     enc_string += ':';
     enc_string += escape(document.forms[form_name].elements[element_name].value);
     enc_string += '&';
   }
  }
  return enc_string;
}

function storeCookie(form_name) {
  var cookie_expir = new Date(new Date().getTime() + 180*60*60*1000);
  var form_typ = document.forms[form_name].Typ.value;
  if (form_typ == 'Privat') {
   cookie_string = encodeFormValues(form_name,'Kundennr','Firma','Anrede','Vorname','Nachname','Strasse','Plz','Ort','Land','Telefon','Telefax','Mail');
  }
  if (form_typ == 'Apotheke') {
   cookie_string = encodeFormValues(form_name,'Kundennr','UstID','Firma','Anrede','Vorname','Nachname','Strasse','Plz','Ort','Land','Telefon','Telefax','Mail');
  }
  if (form_typ == 'Institut') {
   cookie_string = encodeFormValues(form_name,'Kundennr', 'Mail');
  }

  document.cookie = 'nobiteform=' + cookie_string + '; expires=' + cookie_expir;
}

function readCookie(form_name) {
  var all_cookies = document.cookie;
  if (all_cookies == "") {
    return false;
  }

  var cookie_name = 'nobiteform=';
  var cookie_name_l = cookie_name.length;
  var start = all_cookies.indexOf(cookie_name);
  if (start == -1) {
    return false;
  }
  start += cookie_name_l;
  var end = all_cookies.indexOf(';', start);
  if (end == -1) {
    end = all_cookies.length;
  }

  var cookie_value = all_cookies.substring(start, end);

  var a = cookie_value.split('&');
  var element_count = a.length;
  for (var i = 0; i < element_count; i++) {
   a[i] = a[i].split(':');
  }
  element_count--;
  for (var j = 0; j < element_count; j++) {
   var element_name = unescape(a[j][0]);
   if (!(document.forms[form_name].elements[element_name].type == 'select-one')) {
     document.forms[form_name].elements[element_name].value = unescape(a[j][1]);
   } else {
     document.forms[form_name].elements[element_name].options[unescape(a[j][1])].selected = true;
   }
  }
}


//
// Order-Calculation
//
function xyArray (x,y) {
  for (var i = 0; i < x; i++) {
   this[i] = new Array(y-1);
  }
  this.width = x-1;
  this.length = y-1;
}

var OrderEmpty = true;
var OrderLow = true;

function calcPrice(form_name) {
  var maxX = price_array.width;
  var maxY = price_array.length;
  var rabCount = 20;
  var minPrice = price_array[1][1] * 2;
  var price_str = "";
  OrderEmpty = true;
  OrderLow = true;

  price_array[3][maxY] = 0;
  price_array[4][maxY] = 0;
  price_array[5][maxY] = 0;

  for (var i = 0; i < maxY; i++) {
    var field_name = document.forms[form_name].elements[(price_array[0][i])];
    if (field_name.value.length > 0) {
      price_array[3][i] = parseInt(field_name.value);
    } else {
      price_array[3][i] = 0;
    }
  }
  for (var j = 0; j < maxY; j++) {
    if (!(isNaN(price_array[3][j]))) {
      price_array[4][j] = price_array[1][j] * price_array[3][j];
      price_array[5][j] = price_array[2][j] * price_array[3][j];
    } else {
      document.forms[form_name].elements[(price_array[0][j])].value = "0";
      price_array[3][j] = 0;
      price_array[4][j] = 0;
      price_array[5][j] = 0;
    }
    price_array[4][maxY] += price_array[4][j];
    price_array[5][maxY] += price_array[5][j];
  }
  for (var k = 0; k < 3; k++) {
    price_array[3][maxY] += price_array[3][k];
  }
  if (price_array[4][maxY] > 0) {
    OrderEmpty = false;
    if (price_array[4][maxY] >= minPrice) {
      OrderLow = false;
    }
    if (price_array[3][maxY] >= rabCount) {
      price_str = String(price_array[5][maxY]);
    } else {
      price_str = String(price_array[4][maxY]);
    }
    price_str = ' ' + price_str.substring(0,(price_str.length - 2)) + ',' + price_str.substring((price_str.length - 2), price_str.length) + ' EUR';
  } else {
    var price_str = "---";
  }
  document.forms[form_name].Summe.value = price_str;
  for (var m = 0; m < maxY; m++) {
    if (price_array[3][m] > 0) {
      if (price_array[3][maxY] >= rabCount) {
      	price_str = String(price_array[5][m]);
      } else {
      	price_str = String(price_array[4][m]);
      }
      price_str = ' ' + price_str.substring(0,(price_str.length - 2)) + ',' + price_str.substring((price_str.length - 2), price_str.length);
    } else {
      var price_str = "---";
    }
    document.forms[form_name].elements[('ZwiSu'+m)].value = price_str;
  }
}


//
// Form-Check
//
function checkForm(form_name) {
  var form_typ = document.forms[form_name].Typ.value;
  var msg_blank = "";
  var msg_invalid = "";

  if ((form_typ == 'Apotheke') && (!checkBlankField(form_name, 'Firma'))) {msg_blank += '\n        Firma'};
  if ((form_typ == 'Institut') && (!checkBlankField(form_name, 'Kundennr'))) {msg_blank += '\n        Kundennr.'};

  if (!checkBlankField(form_name, 'Strasse')) {msg_blank += '\n        Strasse'};
  if (!checkBlankField(form_name, 'Plz')) {msg_blank += '\n        Plz'};
  if (!checkBlankField(form_name, 'Ort')) {msg_blank += '\n        Ort'};

  if ((form_typ != 'Institut') && (!checkBlankField(form_name, 'Mail'))) {msg_blank +=  '\n        e-mail Adresse'};

  if (!checkValidChars(form_name, 'Plz', '0123456789')) {msg_invalid += '- Die Postleitzahl darf nur Ziffern enthalten.\n\n'};

  calcPrice(form_name);
  if (OrderEmpty) {
    msg_invalid += '- Alle Bestellmengen sind leer.\n\n';
  } else {
    if (OrderLow) {
      msg_invalid += '- Der Mindestbestellwert wurde nicht erreicht.\n\n';
    }
  }

  if ((form_typ != 'Institut') && (!checkReqChars(form_name, 'Mail', '@.'))) {msg_invalid += '- Die angegebene e-mail Adresse ist nicht korrekt.\n\n'};

  if (form_typ != 'Apotheke') {
    if (!checkValidChars(form_name, 'Rplz', '0123456789')) {msg_invalid += '- Die Postleitzahl der Rechnungsanschrift darf nur Ziffern enthalten.\n\n'};

    if (document.forms[form_name].Rident.checked == false) {
      if ( (!checkBlankField(form_name, 'Rfirma') && (!checkBlankField(form_name, 'Rvorname') || 
            !checkBlankField(form_name, 'Rnachname'))) || 
           (!checkBlankField(form_name, 'Rstrasse')) || 
           (!checkBlankField(form_name, 'Rplz')) || 
           (!checkBlankField(form_name, 'Rort')) ) {
       msg_invalid += '- Die Rechnungsanschrift ist nicht korrekt.\n\n';
      }
    }

  } else {
    if (!checkValidChars(form_name, 'UstID', 'DE- 0123456789')) {msg_invalid += '- Die angegebene Umsatzsteuer-ID ist nicht korrekt.\n\n'};
  }
  if (msg_blank.length + msg_invalid.length > 0) {
    msg = 'Die Bestellung konnte nicht gesendet werden, weil Fehler festgestellt wurden.\n';
    msg += 'Bitte korrigieren Sie diese und senden Sie das Formular erneut.\n\n';
    if (msg_blank.length > 0) {
      msg += '- Folgende Felder enthalten keine Angaben, sind jedoch notwendig:';
      msg += msg_blank + '\n\n';
    }
    if (msg_invalid.length > 0) {
      msg += msg_invalid;
    }
    alert(msg);
    return false;
  } else {
    return true;
  }
}

function checkBlankField(form_name, element_name) {
  var isOK = true;
  var field_content = document.forms[form_name].elements[element_name].value;
  if ((field_content == null) || (field_content == "")) {
    var isOK = false;
  } else {
    for (var j = 0; j < field_content.length; j++) {
     var k = field_content.charAt(j);
     if ( (k == ' ') || (k == '\n') || (k == '\t') ) {
       var isOK = false;
     } else {
       var isOK = true;
     }
    }
  }
  return isOK;
}

function checkValidChars(form_name, element_name, isValid) {
  var isOK = true;
  isInput = document.forms[form_name].elements[element_name].value;
  for (var i = 0; i < isInput.length; i++) {
   var curr_char = isInput.charAt(i);
   if (isValid.indexOf(curr_char) == -1) {
     isOK = false;
   }
  }
  return isOK;
}

function checkReqChars(form_name, element_name, isRequired) {
  var isOK = true;
  var isInput = document.forms[form_name].elements[element_name].value;
  for (var i = 0; i < isRequired.length; i++) {
   var curr_char = isRequired.charAt(i);
   if (isInput.indexOf(curr_char) == -1) {
     isOK = false;
   }
  }
  return isOK;
}
