/* Hilfsfunktionen */
/* einfaches String-Replace ohne RegulÃ¤re AusdrÃ¼cke  */
var MwSt = 1.19;

function StringReplace(Str, Suche, Ersetze) {
  Ausgabe = Str;
  
  while (Ausgabe.indexOf(Suche) > -1) {
    pos = Ausgabe.indexOf(Suche);
    Ausgabe = (Ausgabe.substring(0, pos) + Ersetze +
      Ausgabe.substring((pos + Suche.length), Ausgabe.length));
  }
  
  return Ausgabe;
}


window.onscroll = ScrollProdukt;

function ScrollProdukt() {
  // Positionierung
  if(self.pageYOffset) {
    Oberkante = self.pageYOffset;
 } else if(document.body) {
    Oberkante = document.body.parentNode.scrollTop;
 }
  
  document.getElementById('svProdukt').style.marginTop = (Oberkante - 30) + "px";
}

var Grundpreis = 0;   // Grundpreis des geladenen Produkts
var Preis = 0; // Preis des geladenen Produkt mit Einbeiziehung der Attribute
var Attribute = new Array();

// Diese Funktion wird ausgefÃ¼hrt, wenn das Produkt geladen wird     
function ProduktGeladen() {
  // Alle Ergebnisfelder setzen
   
  for(var i = 0; i < Attribute.length; i++) {
    if(Attribute[i]['Typ'] == 8) {
      Wert = BerechneFormel(Attribute[i]['Formel']);
      document.getElementsByName('A' + Attribute[i]['UID'])[0].value = Wert;
      Attribute[i]['Wert'] = Wert;
    } else
    if(Attribute[i]['Typ'] == 9) {
      Attribute[i]['Wert'] = BerechneFormel(Attribute[i]['Formel']);
    }
    if(Attribute[i]['Typ'] == 6) {
      document.getElementsByName('ATitel' + Attribute[i]['UID'])[0].value = Attribute[i]['Ausgewaehlt']['Titel'];
      document.getElementsByName('A' + Attribute[i]['UID'])[0].value = Attribute[i]['Wert'];
      document.getElementById('Img' + Attribute[i]['UID']).src =
        'images/' + Attribute[i]['Bildverzeichnis'] + Attribute[i]['Ausgewaehlt']['Bild'];
    }
  }

  SetzePreis();
}
     
// Für Bildauswahl
var AktAuswahl;     
  
function OeffneBildauswahl(Auswahl) {
  AktAuswahl = Auswahl;
       
  Auswahlfenster = window.open('inc/bildauswahl.php?aw=' + Auswahl, 
     "Bildauswahl", "width=300, height=300, top=300, left=300");
}

function BerechneFormel(Formel) {
    AttrInFormel = Formel.match(/A[0-9]{1,}/g);   
    
    if(AttrInFormel) {
      for(var i = 0; i < AttrInFormel.length; i++) {
        AktAttrWert = GetAttribut(AttrInFormel[i].substring(1, AttrInFormel[i].length))['Wert'];
        if(!AktAttrWert)
          AktAttrWert = 0;        
        Formel = StringReplace(Formel, AttrInFormel[i], AktAttrWert);    
      }
    }
    
    // Nun noch andere Elemente aus Formel mit Zahl ersetzen
    // Preis
    Formel = StringReplace(Formel, 'Preis', Grundpreis);

    // If-Block aus Formel entfernen
    IfStm = Formel.match(/IF\(([0-9]{1,})(==|!=|<=|>=)([0-9]{1,}),([\/\*\+\-\)\(0-9]*),([\/\*\+\-\)\(0-9]*)\)/g); 
    
    if(IfStm) {
      for(var i=0; i < IfStm.length; i++) {       
         // Das Innere des If-Block holen
         InIfStm = IfStm[i].substring(3, IfStm[i].length-1);
         Params = InIfStm.split(',');
         
         WahreBed = eval(Params[0]);
                  
         if(WahreBed)
           Formel = StringReplace(Formel, IfStm[i], Params[1]);
         else
           Formel = StringReplace(Formel, IfStm[i], Params[2]);
      }      
    }
    
    return eval(Formel);
}

function SetzeBa(ElementID) {
  BaAttribut = GetAttribut(AktAuswahl);

  for(var i = 0; i < BaAttribut['Elemente'].length; i++) {
    Element = BaAttribut['Elemente'][i];
    if(Element['UID'] == ElementID) {
      BaAttribut['Wert'] = Element['UID'];
      BaAttribut['Ausgewaehlt'] = Element;

      document.getElementsByName('ATitel' + BaAttribut['UID'])[0].value = BaAttribut['Ausgewaehlt']['Titel'];
      document.getElementsByName('A' + BaAttribut['UID'])[0].value = BaAttribut['Wert'];
      document.getElementById('Img' + BaAttribut['UID']).src =
        'images/' + BaAttribut['Bildverzeichnis'] + BaAttribut['Ausgewaehlt']['Bild'];
      SetzePreis();
      break;
      exit;
    }
  }
}

function SetzeWert(ObjInput) {
  // Wert dieses Attributes in Attribut-Array speichern
  AttrID = ObjInput.name.substring(1, ObjInput.name.length);
  Attribut = GetAttribut(AttrID);
  
  if(Attribut['Typ'] == 5) { 
    Attribut['Ausgewaehlt'] = Attribut['Elemente'][ObjInput.selectedIndex];
    Attribut['Wert'] = Attribut['Ausgewaehlt']['Titel'];
  } else
    if(Attribut['Typ'] == 3) {
      Attribut['Wert'] = ObjInput.value;
  }
  
  for(var i = 0; i < Attribute.length; i++) {
    if(Attribute[i]['Typ'] == 8) {
      Ergebnis = BerechneFormel(Attribute[i]['Formel']);
      document.getElementsByName('A' + Attribute[i]['UID'])[0].value = Ergebnis;
      Attribute[i]['Wert'] = Ergebnis;
    } else
    if(Attribute[i]['Typ'] == 9) {
      Attribute[i]['Wert'] = BerechneFormel(Attribute[i]['Formel']);
    }
  }
  
  SetzePreis();
}

function GetAttribut(UID) {
  for(var i = 0; i < Attribute.length; i++) {
    if(Attribute[i]['UID'] == UID) {
      return Attribute[i];
      break;
    }
  }
}

function AenderPreis(Obj) {
  // Obj = Object, von dem die Preisaenderung ausgeht
  UID = Obj.name;
  UID = UID.substring(1, UID.length);
  
  Attribut = GetAttribut(UID);
  
  if(Attribut['Typ'] == 5) 
    Attribut['Ausgewaehlt'] = Attribut['Elemente'][Obj.selectedIndex];

  SetzePreis();
}

// Preis anhand von Attributen berechnen und anzeigen
function SetzePreis() {

  Preis = Grundpreis;
  for(var i = 0; i < Attribute.length; i++) {
    AktAttr = Attribute[i];
    PaString = '';

    if(AktAttr['Preisaenderung'] != '') {
      // Als erstes prüfen, ob eine Staffelung vorliegt
      StartChar = AktAttr['Preisaenderung'].substr(0,1);
      if(StartChar == '#') {
        StrStaffelungen = AktAttr['Preisaenderung'].substring(1, AktAttr['Preisaenderung'].length);
        Staffelungen = StrStaffelungen.split('|');
        
        j = 0; VorWert = 0; VorPaString = '1';
        while(j < Staffelungen.length) {
          TrennPos = Staffelungen[j].lastIndexOf(':');
          AktPaString = Staffelungen[j].substring(TrennPos+1, Staffelungen[j].length);
          AktWert = Staffelungen[j].substring(0, TrennPos);
          
          if(AktWert > AktAttr['Wert']) {
            PaString = VorPaString;
            break;
          } else 
          if( (AktWert <= AktAttr['Wert']) && (j == Staffelungen.length-1) ) {
            PaString = AktPaString;
            break;          
          }
          

          VorPaString = AktPaString;
          VorWert = AktWert;           
            
          j++; 
        }
      } else {   
       
        if(AktAttr['Typ'] == 5 || AktAttr['Typ'] == 6) {
          if(AktAttr['Ausgewaehlt']['Preisaenderung'] == '')
            PaString = AktAttr['Preisaenderung'];
          else
            PaString = AktAttr['Ausgewaehlt']['Preisaenderung'];
        } else
          PaString = AktAttr['Preisaenderung'];
      }

      BerFormel = BerechneFormel(PaString);
      if(BerFormel != 1) {      
        Preis = Preis + (BerFormel-Grundpreis);
      }      
      
    }
  }
  
  // Preis anzeigen
  Preis = Preis * 1.25;
  document.getElementById('Preis').innerHTML = Preis.toFixed(2);
  document.getElementById('PreisMwSt').innerHTML = (Preis * MwSt).toFixed(2);
}


// Produkt in Warenkorb legen
function ProduktInWk() {
  // xajax.$('SbmProdukt').disabled = true;
  xajax_ProduktInWk(xajax.getFormValues('FrmProdukt'));
}




//----- Produkt zeigen und schließen ----------------------------------------------------------------------

function ZeigeProdukt(UID) {
  xajax_ZeigeProdukt(UID); // Daten von Server laden
    
  document.getElementById('svProdukt').style.display = 'block';
}


function SchliesseProdukt() {
  document.getElementById('svProdukt').style.display = 'none';
}

//---------------------------------------------------------------------------------------------------------



//----- Vergrößerung des Produktbildes --------------------------------------------------------------------
var DivVorschau = null;     
     
function BildVergroessern(Obj, Bild, Ev) {
/* 
  if(Ev.shiftKey)
  {
    if(DivVorschau == null) {
      DivVorschau = document.createElement("div");        
      ImgVorschau = document.createElement("img");      
    }  
      
    ImgVorschau.src = Bild;
        
    DivVorschau.className = "Vorschau";         
    DivVorschau.appendChild(ImgVorschau);
    Obj.appendChild(DivVorschau);
  }  
       
  */
}
     
function SchliesseGrossesBild() {
/*
  if(DivVorschau != null) {       
    DivVorschau.style.display = 'none';
  }
*/
}

//---------------------------------------------------------------------------------------------------------
