// tarife formular ueberpruefen
function checkTarife() {
  unmarkError();

  errorFrame = document.getElementById('errors');
  errorFrame.innerHTML = '';

  form = document.forms['tarifForm'];
  err = new Array( '', '', '', '', '' );
  
  // tarif alias
  tarif = form.tarif.options[form.tarif.selectedIndex].text;
  document.getElementById('tarifAlias').value = tarif;

  // wurde eine gueltige taktung ausgewaehlt
  if(form.takt && !radioValue(form.takt)) {
    err[0] = 'Bitte wählen Sie eine Taktung aus';
    markError('taktErr');
  }

  if(document.getElementById('id24GPRSPDA')) {
    if(document.getElementById('id24GPRSPDA').checked) {
      if(document.getElementById('id24UMTS_M1')) {
        if(document.getElementById('id24UMTS_M1').checked) {
          err[666] = 'Die Buchung von Pocket Volume mit Mobile Connect ist nicht möglich';
        }
      }
      if(document.getElementById('id24UMTS_M2')) {
        if(document.getElementById('id24UMTS_M2').checked) {
          err[666] = 'Die Buchung von Pocket Volume mit Mobile Connect ist nicht möglich';
        }
      }
      if(document.getElementById('id24UMTS_M5')) {
        if(document.getElementById('id24UMTS_M5').checked) {
          err[666] = 'Die Buchung von Pocket Volume mit Mobile Connect ist nicht möglich';
        }
      }
    }
  }

  // Navigator
  if(e = document.getElementById('idVF_NAVI')) {
    if(e.checked) {
      if(form.type.value.indexOf('BB')!=-1 || form.type.value.indexOf('BU')!=-1) {
        if(!document.getElementById('id24GPRSECS').checked &&
           !document.getElementById('id24GPRSECM').checked &&
           !document.getElementById('id24GPRSECL').checked &&
           !document.getElementById('id24GPRSECN').checked &&
           !document.getElementById('id24GPRSPDA').checked &&
           !document.getElementById('id$X-HappyLiveUMTS').checked) {
          err[10] = 'Navigator kann nur in Verbindung mit einem der folgenden Zusatzdienste gebucht werden: eMailConnect S/M/L/FairFlat, Pocket Volume oder Happy Live UMTS';
        }
      }
      if(form.type.value.indexOf('UMTS')!=-1) {
        if(!document.getElementById('id24GPRSECS').checked &&
           !document.getElementById('id24GPRSECM').checked &&
           !document.getElementById('id24GPRSECL').checked &&
           !document.getElementById('id24GPRSECN').checked &&
           !document.getElementById('id24GPRSPDA').checked &&
           !document.getElementById('id24UMTS_V6').checked &&
           !document.getElementById('id24UMTS_V5').checked &&
           !document.getElementById('id24UMTS_H1').checked &&
           !document.getElementById('id$X-HappyLiveUMTS').checked) {
          err[11] = 'Navigator kann nur in Verbindung mit einem der folgenden Zusatzdienste gebucht werden: eMailConnect S/M/L/FairFlat, Pocket Volume, Happy Live UMTS, WebCOnnect Volume PDA/L oder WebConnect FairFlat National';
        }
      }
    }
  }

  // pflichtdienste NEU (2/2008)
  for(c=1;c<5;c++) {
    var e = 'pflichtdienste'+c;
    if(document.getElementById(e)) {
      if(!radioValue(eval('form.'+e))) {
        err[12+i] = 'Sie müssen aus jeder der Pflichtgruppen einen Dienst auswählen';
        markError(e+'Err');
      }
    }
  }

  // pflichtdienste 1
  if( document.getElementById('pflichtdienstBUErr') && document.getElementById('pflichtdienstBU').style.display!='none' ) {
    if(!radioValue(form.pflichtdienstBU)) {
      err[1] = 'Sie müssen aus jeder der Pflichtgruppen einen Dienst auswählen';
      markError('pflichtdienstBUErr');
    }
  }

  // pflichtdienste 2
  if( document.getElementById('pflichtdienstBUD21Err') ) {
    if(!radioValue(form.pflichtdienstBUD21)) {
      err[1] = 'Sie müssen aus jeder der Pflichtgruppen einen Dienst auswählen';
      markError('pflichtdienstBUD21Err');
    }
  }

  // pflichtdienste 3
  if( document.getElementById('pflichtdienstBUD22Err') ) {
    if(!radioValue(form.pflichtdienstBUD22)) {
      err[1] = 'Sie müssen aus jeder der Pflichtgruppen einen Dienst auswählen';
      markError('pflichtdienstBUD22Err');
    }
  }

  // pflichtdienste 3
  if( document.getElementById('pflichtdienstBUD23Err') ) {
    if(!radioValue(form.pflichtdienstBUD23)) {
      err[1] = 'Sie müssen aus jeder der Pflichtgruppen einen Dienst auswählen';
      markError('pflichtdienstBUD23Err');
    }
  }

  // navigator ausgewaehlt?
  if( (form.chkpflichtdienstBUD23 && form.chkpflichtdienstBUD23.checked) || (form.chkzusatzdienstBUD23 && form.chkzusatzdienstBUD23.checked) ) {
    if( !(radioValue(form.pflichtdienstBU) || radioValue(form.zusatzdienstBU)) && !(radioValue(form.pflichtdienstBUD21) || radioValue(form.zusatzdienstBUD21)) && !(radioValue(form.zusatzdienstBUD23)=='24GPRSPDA' || radioValue(form.pflichtdienstBUD23)=='24GPRSPDA') ) {
      err[2] = 'Der Dienst "Navigator" erfordert zusätzlich einen Tarif aus der Dienstegruppe 1 oder 2 oder Pocket Volume';
    }
  }

  // zuhause flatrate ausgewaehlt?
  if( (form.chkpflichtdienstBUD22 && form.chkpflichtdienstBUD22.checked) || (form.chkzusatzdienstBUD22 && form.chkzusatzdienstBUD22.checked) ) {
    if( radioValue(form.pflichtdienstBUD22)=='' && radioValue(form.zusatzdienstBUD22)=='' ) {
      err[2] = 'Der Dienst "Zuhause Flatrate" erfordet zusätzlich einen der anderen Zuhause-Dienste';
    }
  }

  /* umts
  if(form.type.value.indexOf('UMTS')!=-1 && form.type.value.indexOf('BB')==-1) {
    if( radioValue(form.pflichtdienstBUD23)!='24GPRSPDA' && radioValue(form.zusatzdienstBUD23)!='24GPRSPDA' && radioValue(form.pflichtdienstBUD23)!='$X-HappyLiveUMTS' && radioValue(form.zusatzdienstBUD23)!='$X-HappyLiveUMTS' ) {
      err[3] = 'Für ein UMTS Handy müssen Sie einen der beiden Zusatzdienste "HappyLive UMTS" oder "Pocket Volume" buchen';
    }
  }
  */ 

  // gab es fehler? 
  e = 0;
  for(i=0;i<err.length;i++) {
    if(err[i] && err[i]!='') {
      errorFrame.innerHTML += '<h3>' + err[i] + '</h3>';
      e++;
    }
  }
  if( e == 0) 
    return true;
  else
    return false;
}

// SIM ueberpruefen
function checkSIM() {
  f = document.forms['simForm'];
  f.sim.style.border='3px solid #ccc';
  errorFrame = document.getElementById('errors');
  errorFrame.innerHTML = ''; 
  if(!f.sim.value.match(/^[0-9]+$/) || f.sim.value.length!=14) {
    errorFrame.innerHTML = '<h3>Die eingegebene SIM Nummer ist ungültig.</h3>';
    return false
  } else {
    return true;
  }
}

// kundendaten ueberpruefen
function checkKundendaten() {
  err = new Array();

  document.getElementById('vdfAGB').style.border='3px solid #fff';

  errorFrame = document.getElementById('errors');
  errorFrame.innerHTML = '';
  
  fields = new Array('strasse', 'hausnummer', 'plz', 'stadt', 'kennwort', 'kennwort2' );

  f = document.forms['kundenForm'];

  // pflichtfelder pruefen
  for(i=0;i<fields.length;i++) {
    field = eval('f.'+fields[i]);
    if(field.value=='') {
      err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
      field.style.border='2px solid #f00';
    } else {
      field.style.border='2px solid #ccc';
    }
  }

  // RV Nummern Auswahl
   if(f.rvKunde) {
      if(f.rvKunde.value =='none' ) {
         err[15] = 'Sie haben keine Zuordnung zu einem Rahmenvertragspartner gewählt';        
         f.rvKunde.style.border='2px solid #f00';
      } else {
         f.rvKunde.style.border='2px solid #ccc';
      }
    }

  
  // zuhause adresse
  if(f.zhstrasse) {
    zfields = new Array( 'zhstrasse', 'zhhausnummer', 'zhplz', 'zhstadt', 'zhvorwahl' );
    for(i=0;i<zfields.length;i++) {
      zfield = eval('f.'+zfields[i]);
      if(zfield.value=='') {
        err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
        zfield.style.border='2px solid #f00';
      } else {
        zfield.style.border='2px solid #ccc';
      }
    }
    if(!f.zhplz.value.match(/^[0-9]{5}$/)) {
      err[14] = 'Ihre Zuhause Postleitzahl ist ungültig';
      f.zhplz.style.border='2px solid #f00';
    } else {
      f.zhplz.style.border='2px solid #ccc';
    }    
    if(!f.zhvorwahl.value.match(/^0[0-9]{2,}$/)) {
      err[14] = 'Ihre Zuhause Vorwahl ist ungültig';
      f.zhvorwahl.style.border='2px solid #f00';
    } else {
      f.zhvorwahl.style.border='2px solid #ccc';
    }    
  }

  // fax oder e-mail 
  if(f.email.value=='' && f.faxnummer.value=='') {
    err[10] = 'Sie müssen entweder eine gültige E-Mail Adresse, oder eine Fax-Nummer angeben';
    f.email.style.border='2px solid #f00';
    f.faxnummer.style.border='2px solid #f00';
  } else { 
    f.email.style.border='2px solid #ccc';
    f.faxnummer.style.border='2px solid #ccc';
  }

  // e-mail
  if(f.email.value!='' && !f.email.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
    err[9] = 'Die eingegebene E-Mail Adresse ist ungültig';
    f.email.style.border='2px solid #f00';
  }

  // bankverbindung
  //fields = new Array( 'bank', 'blz', 'konto', 'ktovorname', 'ktonachname' );
  fields = new Array( 'bank', 'blz', 'konto' );
  for(i=0;i<fields.length;i++) {
    field = eval('f.'+fields[i]);
    if(field.value=='') {
      err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
      field.style.border='2px solid #f00';
    } else {
      field.style.border='2px solid #ccc';
    }
  }

  // plz
  if(!f.plz.value.match(/^[0-9]{5}$/)) {
    err[5] = 'Ihre Postleitzahl ist ungültig';
    f.plz.style.border='2px solid #f00';
  } else {
    f.plz.style.border='2px solid #ccc';
  }

  // blz
  f.blz.value = f.blz.value.replace(/[^0-9]+/g, "");
  if(!f.blz.value.match(/^[0-9]{8}$/)) {
    err[8] = 'Ihre Bankleitzahl ist ungültig';
    f.blz.style.border='2px solid #f00';
  } else {
    f.blz.style.border='2px solid #ccc';
  }

  // konto
  f.konto.value = f.konto.value.replace(/[^0-9]+/g, "");
  if(!f.konto.value.match(/^[0-9]{1,10}$/)) {
    err[8] = 'Ihre Kontonummer ist ungültig';
    f.konto.style.border='2px solid #f00';
  } else {
    f.konto.style.border='2px solid #ccc';
  }

  // beginndatum
  if( radioValue(f.vertragsbeginn)!='sofort' && (( parseInt(f.beginnjahr.value) <= parseInt(f.y.value) && parseInt(f.beginnmonat.value) < parseInt(f.m.value) ) || ( parseInt(f.beginnjahr.value) == parseInt(f.y.value) && parseInt(f.beginntag.value) < parseInt(f.d.value) && parseInt(f.beginnmonat.value) <= parseInt(f.m.value) )) ) {
    err[4] = 'Der Vertragsbeginn darf nicht in der Vergangenheit liegen';
  }

  // zusatzauftrag
  if( f.zusatzauftrag.checked && f.kundennummer.value=='' ) {
    err[4] = 'Für einen Zusatzauftrag müssen Sie Ihre Kundennummer angeben';
    f.kundennummer.style.border='2px solid #f00';
  } else {
    f.kundennummer.style.border='2px solid #ccc';
  }

  // kennwort korrekt
  if( f.kennwort.value != f.kennwort2.value ) {
    err[1] = 'Die Kennwörter stimmen nicht überein';
    f.kennwort.style.border='2px solid #f00';
    f.kennwort2.style.border='2px solid #f00';
  } else if( f.kennwort.value!='' && f.kennwort2.value!='' ) {
    f.kennwort.style.border='2px solid #ccc';
    f.kennwort2.style.border='2px solid #ccc';
  }
  


  //Privat oder Firma?
  if( radioValue(f.kundenart)=='firma' ) {
    firmafields = new Array( 'firma' );
    for(i=0;i<firmafields .length;i++) {
      firmafields = eval('f.'+firmafields [i]);
      if(firmafields .value=='') {
        err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
        firmafields .style.border='2px solid #f00';
      } else {
        firmafields .style.border='2px solid #ccc';
      }
    }
  }else{
    // Namen
    fields = new Array( 'vorname', 'nachname' );
    // pflichtfelder pruefen
    for(i=0;i<fields.length;i++) {
      field = eval('f.'+fields[i]);
      if(field.value=='') {
        err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
        field.style.border='2px solid #f00';
      } else {
        field.style.border='2px solid #ccc';
      }
    }

    // EC-Karte darf nur Zahlen enthalten
    f.ecnummer.value = f.ecnummer.value.replace(/[^0-9]+/g, "");

    // ausweis
    if( f.ausweisnummer.value == '' && f.auslaendischerausweis.value == ''  && f.reisepass.value == ''  && f.fuehrerschein.value == '' ) {
      err[2] = 'Sie müssen eine Ausweis- oder Führerscheinnummer angeben';
      f.ausweisnummer.style.border='2px solid #f00';
      f.auslaendischerausweis.style.border='2px solid #f00';
    } else {
      // ausweisnummer
      if(f.ausweisnummer.value!='' && !f.ausweisnummer.value.match(/^[0-9]{10}$/)) {
        err[8] = 'Ihre Personalausweisnummer ist ungültig';
        f.ausweisnummer.style.border='2px solid #f00';
      } else {
        f.ausweisnummer.style.border='2px solid #ccc';
      }
      if(f.ausweisnummer.value=='' && f.ecnummer.value=='') {
        err[11] = 'Sie müssen eine EC-Kartennummer angeben, wenn Sie keinen deutschen Personalausweis besitzen';
        f.ecnummer.style.border='2px solid #f00';
      } else {
        f.ecnummer.style.border='2px solid #ccc';
      }
    }
    if( f.ausweisnummer.value != '' && f.auslaendischerausweis.value != '' ) {
      err[2] = 'Es darf nur eine Ausweisart angegeben werden';
      f.ausweisnummer.style.border='2px solid #f00';
      f.auslaendischerausweis.style.border='2px solid #f00';
    }


    // rechnungsadresse 
    if( radioValue(f.rechnungsadresse)=='yes' ) {
      rfields = new Array( 'rvorname', 'rnachname', 'rstrasse', 'rhausnummer', 'rstadt', 'rplz' );
      for(i=0;i<rfields.length;i++) {
        field = eval('f.'+rfields[i]);
        if(field.value=='') {
          err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
          field.style.border='2px solid #f00';
        } else {
          field.style.border='2px solid #ccc';
        }
      }
      if(!f.rplz.value.match(/^[0-9]{5}$/)) {
        err[6] = 'Die Postleitzahl Ihrer Rechnungsadresse ist ungültig';
        f.rplz.style.border='2px solid #f00';
      }
    }
  }

  // lieferadresse 
  if( radioValue(f.lieferadresse)=='yes' ) {
    lfields = new Array( 'lfvorname', 'lfnachname', 'lfstrasse', 'lfhausnummer', 'lfstadt', 'lfplz' );
    for(i=0;i<lfields.length;i++) {
      field = eval('f.'+lfields[i]);
      if(field.value=='') {
        err[0] = 'Sie haben nicht alle Pflichtfelder ausgefüllt';
        field.style.border='2px solid #f00';
      } else {
        field.style.border='2px solid #ccc';
      }
    }
    if(!f.lfplz.value.match(/^[0-9]{5}$/)) {
      err[7] = 'Die Postleitzahl Ihrer Lieferadresse ist ungültig';
      f.lfplz.style.border='2px solid #f00';
    }
  }
  if( radioValue(f.lieferadresse)=='rechnung' ) {
    if(radioValue(f.rechnungsadresse)!='yes') {
      err[13] = 'Sie müssen eine Rechnungsadresse eingeben, wenn Sie diese als Lieferadresse wählen';
    }
  }

  // agb
  if( !f.agb.checked ) {
    document.getElementById('vdfAGB').style.border='3px solid #f00';
    err[3] = 'Sie müssen den AGB zustimmen';
  }

  // gab es fehler? 
  e = 0;
  for(i=0;i<err.length;i++) {
    if(err[i] && err[i]!='') {
      errorFrame.innerHTML += '<h3>' + err[i] + '</h3>';
      e++;
    }
  }
  if( e == 0) {
    return true;
  } else {
    document.location.hash = 'top';
    return false;
  }
}

// bestandskunden
function customer(b) {
  f = document.forms['kundenForm'];
  if(b) {
    document.getElementById('kundennummer').disabled='';
    document.getElementById('rechnungsadresseno').checked='checked';
    document.getElementById('rechnungsadresseno').disabled='disabled';
    document.getElementById('rechnungsadresseyes').disabled='disabled';
    document.getElementById('vdfRechnungsanschrift').style.display='none';
    document.getElementById('vdfkennwort_neukunde').style.display='none';
    document.getElementById('vdfkennwort_bestandskunde').style.display='block';
  } else { 
    document.getElementById('kundennummer').disabled='disabled';
    document.getElementById('kundennummer').value='';
    document.getElementById('rechnungsadresseno').disabled='';
    document.getElementById('rechnungsadresseyes').disabled='';
    document.getElementById('vdfkennwort_neukunde').style.display='block';
    document.getElementById('vdfkennwort_bestandskunde').style.display='none';
  }
}


// alle markierten felder zurücksetzen
function unmarkError() {
  if(document.getElementById('pflichtdienstBUErr'))
    document.getElementById('pflichtdienstBUErr').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienstBUD21Err'))
    document.getElementById('pflichtdienstBUD21Err').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienstBUD22Err'))
    document.getElementById('pflichtdienstBUD22Err').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienstBUD23Err'))
    document.getElementById('pflichtdienstBUD23Err').style.border='3px solid #fff';

  if(document.getElementById('pflichtdienste1Err'))
    document.getElementById('pflichtdienste1Err').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienste2Err'))
    document.getElementById('pflichtdienste2Err').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienste3Err'))
    document.getElementById('pflichtdienste3Err').style.border='3px solid #fff';
  if(document.getElementById('pflichtdienste4Err'))
    document.getElementById('pflichtdienste4Err').style.border='3px solid #fff';

  if(document.getElementById('zusatzdienste1Err'))
    document.getElementById('zusatzdienste1Err').style.border='3px solid #fff';
  if(document.getElementById('zusatzdienste2Err'))
    document.getElementById('zusatzdienste2Err').style.border='3px solid #fff';
  if(document.getElementById('zusatzdienste3Err'))
    document.getElementById('zusatzdienste3Err').style.border='3px solid #fff';
  if(document.getElementById('zusatzdienste4Err'))
    document.getElementById('zusatzdienste4Err').style.border='3px solid #fff';

  if(document.getElementById('taktErr')) {
    document.getElementById('taktErr').style.border='3px solid #fff';
  }
}

// felder mit fehlern markieren 
function markError(id) {
  if(!document.getElementById(id))
    return false;
  document.getElementById(id).style.border='3px solid #f00';
  document.getElementById('errors').innerHTML = '';
}

// radio felder auswerten
function radioValue(radio) {
  if(!radio) return false;

  for(i=0; i<radio.length; i++) {
    if(radio[i].checked)
      return radio[i].value;
  }
  if(radio.checked) 
  {
    return(radio.value);
  }  
  return false;
}

// wenn der gewaehlte tarif geaendert wird
function selectTarif() {
  unmarkError();
  form = document.forms['tarifForm'];

  // tarif begins with 'd2'?
  tarifType = form.tarif.value.substr( 0, 2 );

  if( document.getElementById('id1s') )
  {
    e = document.getElementById('id1s');
    if( tarifType == 'd2' ) {   
      e.disabled=true; 
      e.checked=false;
    } else {
      e.disabled=false; 
    } 
  }

  // zusatzoptionen und taktungen nicht fuer businessFlat
  businessFlat = new Array( '24FRHAPWE', '24FRHAPAB', '$X-HappyLiveUMTS', '1s', '10s' );
  if( form.tarif.value == 'businessFlat' ) {
    for(i = 0; i<businessFlat.length; i++) {
      if( document.getElementById( 'id' + businessFlat[i] ) ) {
        document.getElementById( 'id' + businessFlat[i] ).disabled=true;
      }
    }
  } else {
    for(i = 0; i<businessFlat.length; i++) {
      if( document.getElementById( 'id' + businessFlat[i] ) ) {
        document.getElementById( 'id' + businessFlat[i] ).disabled=false;
      }
    }
  }


  if( document.getElementById('zusatzdienstBU') ) 
  {
    e = document.getElementById('zusatzdienstBU');
    if( tarifType == 'd2' ) {   
      e.style.display='none'; 
    } else {
      e.style.display='block'; 
    } 
  }

  if( document.getElementById('pflichtdienstBU') ) 
  {
    e = document.getElementById('pflichtdienstBU');
    if( tarifType == 'd2' ) {   
      e.style.display='none'; 
    } else {
      e.style.display='block'; 
    } 
  }

  if( document.getElementById('zusatzdienstD2') ) 
  {
    e = document.getElementById('zusatzdienstD2');
    if( tarifType == 'd2' ) {   
      e.style.display='block'; 
    } else {
      e.style.display='none'; 
    } 
  }
}

// Autofill für Kontoinhaber
function fillKontoinhaber() {
  if( document.getElementById('ktovorname') ) {
	kto_v=document.getElementById('ktovorname');
	kto_n=document.getElementById('ktonachname');
	v=document.getElementById('vorname');	
	n=document.getElementById('nachname');
	if( kto_v.value == '' ) {
	  kto_v.value = v.value;
	}
	if( kto_n.value == '' ) {
	  kto_n.value=n.value;
	}
  }
}

function $(element) {
  if(document.getElementById(element)) {
    return document.getElementById(element);
  } else {
    return false;
  }
}