/********************
static variables
********************/
  PARENTABO = 'parentabo_';
  ABOPRICE = 'aboprice_';
  BASICPRICE = 'basicprice_';
  CHANGE = 'change_';
  ABO = 'abo_';

/*FaxVariableArray-- alle ids von den FaxAboPricen*/
var aboFax = new Array();

/*******************************
Blendet die Rechnungsadresse ein oder aus
*******************************/
function showInvoiceAddress(){
  var showStatus;
  
  if(document.getElementById('noExtraInvoiceAddress').checked == true)
    showStatus = "hidden";
  else
    showStatus = "visible";
  
  document.getElementById('userdetails_rechadr_title').style.visibility = showStatus;
  document.getElementById('userdetails_rechadr_form').style.visibility = showStatus;
}

/*******************************
Selektiere übergenen Wert in der Auswahlliste
*******************************/
function selectCurrListEntry(formElement, id)
{
  for(i=0; i<formElement.length; i++)
    if(formElement.options[i].value == id)
      formElement.options[i].selected=true;
}


/*******************************
Damit bei der Personen angaben der Fax zwingedn ist, falls ein ABoFaxPreis gewählt wurde
********************************/
function addAboFax(idFax){
  aboFax[aboFax.length] = idFax;
}

function checkFaxPrice()
{
  var needFax='false';
  for (var iFax=0;iFax<aboFax.length;iFax++)
  {
    if (document.getElementById(aboFax[iFax]).checked==true)
    needFax='true';
  }
  document.getElementById('needFax').value=needFax;
}

/*******************************
Berechnet das Subtotal der AboPreise
*******************************/
function calculateAboPriceSubTotal(htmlAboId){

  var aboPriceSubTotal = 0.0;
  
  //Gibt die Tabellenzeile als Element zurück
  aboRow = document.getElementById(htmlAboId);  
  //Gibt die Liste aller html input-Elemente die sich innerhalb dieser HTML-Zeile befinden zurück
  input = aboRow.getElementsByTagName("input"); 
  
  for(i = 0; i < input.length-1; i++){
      if(input[i].checked == true)  //falls die aktuelle checkbox angekreuzt ist, wird dieser betrag dazugezählt
      aboPriceSubTotal = aboPriceSubTotal + parseFloat(input[i].value.replace('\'', ''));
  }
  //Schreibt das ZwischenTotal in das Textfeld am Ende der Zeile
  input[input.length-1].value = aboPriceSubTotal;
}
/*******************************
Berechnet das Total der AboPreise
*******************************/
function calculateAboPriceTotal(){
  var totalInputFieldId = "totalPrice";
  var aboPriceTotal = 0;
  
  //Gibt die Liste aller html input-Elemente in diesem Dokument zurück
  input = document.getElementsByTagName("input");
  
  //Loop über alle html input-Elemente in diesem Dokument
  for(i = 0; i < input.length-1; i++){

    if(input[i].type == "text" && input[i].name != totalInputFieldId){  
      //Falls das input-Element text ist und nicht das Element mit dem Total-Betrag, wird der Betrag zum Total-Betrag addiert
      aboPriceTotal = aboPriceTotal + parseFloat(input[i].value);
    }
  }
  //Schreibt das Total in das Total-Textfeld am Ende der Seite
  document.getElementById(totalInputFieldId).value = aboPriceTotal;
}
/*******************************
Wählt die Grundpreis checkbox an falls diese noch nicht ist, wenn auf eine der anderen ComboBoxen geklickt wird.
*******************************/
function markFirstBox(htmlAboId, clickedElement){
  var demarkAll = false;
  var demarkBasicPrice = true;
  
  //Gibt die Tabellenzeile als Element zurück
  aboRow = document.getElementById(htmlAboId);
  //Gibt die Liste aller html input-Elemente die sich innerhalb dieser HTML-Zeile befinden zurück
  input = aboRow.getElementsByTagName("input");
  
  //Falls das angeklickte Element der Grundpreis ist und gerade deselektiert wurde, müssen alle checkboxen deselektiert werden.
  if(input[0] != null && input[0] == clickedElement && input[0].checked == false){
    demarkAll = true;
  }
  for(i = 1; i < input.length-1; i++){
    
    if(demarkAll){
      //deselektiere alle checkboxen dieser Zeile (dieses Abos)
      input[i].checked = false;
      
    } else if(input[i].type == "checkbox" && input[i].checked == true){
      //falls eine der Preis-checkboxen selectiert wird, muss sicher gestellt werden, dass die Grundpreis-checkbox auch selektiert ist.
      input[0].checked = true;
      demarkBasicPrice = false; //falls mindestens eine der Preis-checkboxen selectiert ist, muss die Grundpreis-checkbox nicht deselektiert werden.
      break;
    } else {
    }
  }
  if(demarkBasicPrice)
    input[0].checked = false; //falls mindestens keine der Preis-checkboxen selectiert ist, muss die Grundpreis-checkbox deselektiert werden.
}
/*******************************
Berechnet das SubTotal und anschliessend das Total der AboPreise neu
*******************************/
function reCalculateAboPrices(htmlAboId, clickedElement){
  parentAboId = getParameter(clickedElement.id, PARENTABO);
  aboPriceId = getParameter(clickedElement.id, ABOPRICE);
  basicPriceId = getParameter(clickedElement.id, CHANGE);
  change = getParameter(clickedElement.id, BASICPRICE);
   
  if (parentAboId==getParameter(htmlAboId, ABO))//es ist das hauptabo geklickt worden
  {
    if (getParameter(clickedElement.id, BASICPRICE)!=getParameter(clickedElement.id, ABOPRICE)||clickedElement.checked==false)//wenn hauptabogrundpreis nur ausführen wenn hauptabogrundpreis entcklickt wurde
    {
      markMainAbo(parentAboId, clickedElement.checked);
    }
    markFirstBox(htmlAboId, clickedElement);
  } else if (document.getElementById(ABOPRICE+getParameter(clickedElement.id, BASICPRICE)
      +'_'+PARENTABO+parentAboId+'_'+BASICPRICE+getParameter(clickedElement.id, BASICPRICE)
      +'_'+CHANGE+'true').disabled==false)//grundpreis nur aktiviern wenn nicht disabled
  {
    markFirstBox(htmlAboId, clickedElement);
  }
  
  calculateAboPriceSubTotal(htmlAboId);
  calculateAboPriceTotal();
}


/*******************************
Liest aus einem String Werte heraus: PREFIX_VALUE_PREFIX2_VALUE2
dazu muss der Gnaze String und der Prefix übergegebn werden
********************************/
function getParameter(string, prefix)
{
  startPos = string.indexOf(prefix)+prefix.length;
  substring = string.substring(startPos);
    
  endPos = substring.indexOf('_');
  endPos = (endPos==-1) ? substring.length : endPos;
   
  return (substring.substring(0, endPos));
}


/**************************************
setzt alle Checkboxen auf disabled oder aktiviert die Checkboxen je nachdem wie der boolean ist
parentAboId
****************************************/
function markMainAbo (parentAboId, setDisabled)
{
  allBoxes = document.getElementsByTagName('input');
  for (count=0;count<allBoxes.length;count++)
  {
    if (getParameter(allBoxes[count].id, PARENTABO)==parentAboId && getParameter(allBoxes[count].id, CHANGE)=='true')
    {
      allBoxes[count].checked = false;
      allBoxes[count].disabled = setDisabled;
      calculateAboPriceSubTotal(allBoxes[count].parentNode.parentNode.id);//es muss neu gerechtnet werden
    }
  }
  
  if (setDisabled==false)//nun müssen alle grundpreise aktiviert werden, wo ein postpreis(o.Ä.) aktiv ist
  {
    for (count=0;count<allBoxes.length;count++)
    {
      if (getParameter(allBoxes[count].id, PARENTABO)==parentAboId && getParameter(allBoxes[count].id, CHANGE)=='false' && allBoxes[count].checked == true)
      {
        checkBasicPrice = document.getElementById(ABOPRICE+getParameter(allBoxes[count].id, BASICPRICE)
                                +'_'+PARENTABO+parentAboId+'_'+BASICPRICE+getParameter(allBoxes[count].id, BASICPRICE)
                                +'_'+CHANGE+'true');
        if (checkBasicPrice!=null)
        {
          //alert(checkBasicPrice.id);
          checkBasicPrice.checked=true;//grundpreis eines abos wird checked
          calculateAboPriceSubTotal(checkBasicPrice.parentNode.parentNode.id);//es muss neu gerechtnet werden
        }
      }
    }
  }
}


/************************************
script um die felder disabled zu settzen welche diabled werden sollen, 
also grund und webpreis, nachdem die abos gespeichert wurden
**************************************/

function markAllMainAbo(htmlGroupId)
{
  groupDiv = document.getElementById(htmlGroupId);
  
  if (groupDiv!=null)
  {
    aboTr = groupDiv.getElementsByTagName('tr');
    
    for (count=0;count<aboTr.length;count++)
    {
      aboId = getParameter(aboTr[count].id, ABO);
      allBoxes = aboTr[count].getElementsByTagName('input');
      
      for (c=0;c<allBoxes.length;c++)
      {
        if (getParameter(allBoxes[c].id, PARENTABO)==aboId && getParameter(allBoxes[c].id, CHANGE)=='false'
        && getParameter(allBoxes[c].id, ABOPRICE)==getParameter(allBoxes[c].id, BASICPRICE))
        {
          markMainAbo(aboId, allBoxes[c].checked);
        }
      }
    }
  }
}
