// (MS) 02.07.2009

/*
(DS) 13.11.2009
alle globalen Variablen, die in der Seite stehen, beginnen mit "page_"
*/
var ajax_debug = false;
var preiseErsetzt = false;
jQuery(document).ready(
   function()  {
      jQuery("#debug").hide();
      jQuery("select").change(
         function(){
            this.blur();
            dropDownHandling( this);
         });
   }
)

var selected_kombi_options = [];

function dropDownHandling( dropDown)  {
   
   //js_debug({dropDownHandling:dropDown.id});
   
   if(!dropDown || typeof(dropDown)=='undefined')return;
   
   var aTest = /ausw/;
   if(! aTest.test("'"+dropDown.id+"'")) {
      return;  
   }
   
   
   page_aktAusfuehrung = 0;
   var aktAusfuehrungSich = 0;
   // Bestimmen der akt. Ausfuehrung
  
   var aktTest = /([0-9]+)/;
   var test = aktTest.exec( dropDown.id);
   page_aktAusfuehrung = test[0];
   aktAusfuehrungSich = test[0];
   tmpAusfuehrung = page_aktAusfuehrung-1;
   if( document.getElementById("hiddenausw"+tmpAusfuehrung))
      document.getElementById("hiddenausw"+tmpAusfuehrung).value = dropDown.value;
   // Bestimmen des Suchstring von 0 bis akt. Ausfuehrung
   page_lastKombiIndex = "";
   for( i = 1; i <= page_aktAusfuehrung; i++) {
      var index = jQuery("#ausw"+i).val();
      selected_kombi_options[i] = index;
      if( index)	{
      	index = index.replace( /^[0-9]+:/, "");
      	page_lastKombiIndex += index+".";
  	   }
   }
   // alle DropDowns leeren und deaktivieren, von akt. Position bis max. Ausfuehrungen
   for(; i <= page_maxAusfuehrungen; i++)  {
      if( jQuery("#ausw"+i)) {
         
         jQuery("#ausw"+i).removeOption(/^[0-9]*:/i)
         .removeOption(/^$/i)
         .attr({readOnly:true, disabled:true})
         .css('background-color','lightgrey')
         ;

      }
   }

   // so nun die akt.Auswahl +1 mit leben füllen und aktivieren aber nur, wenn nicht akt. und max. gleich ist
   var variant_id = dropDown.options[dropDown.selectedIndex].value;
   var variant_ok = (!variant_id.indexOf('xxnoinputxx') ==0);
   
   staffelrechner(0);    
   selected_kombi_options[page_aktAusfuehrung] = variant_id;
   if( page_aktAusfuehrung < page_maxAusfuehrungen && variant_ok) {
      
      // Wenn schon mal die Preise aktualisiert wurden, dann erst mal wieder zurücksetzen
      resetPageCacheVars();//artikelDetail.js
      staffelrechner(0,'loading'); 
      callAjaxArtikelDetail(
               {action:'getKombis',lastKombiIndex:page_lastKombiIndex},
                {callback: getKombisReturn, debug:ajax_debug}
                );
      
      
   }
   if( aktAusfuehrungSich == page_maxAusfuehrungen && variant_ok)   {
      staffelrechner(0,'loading');
      getKombiKomplett( page_lastKombiIndex, "NORMAL");
   }
   
}

function getKombisReturn(json){
     page_aktAusfuehrung++;
     staffelrechner(0);
     var default_val = (selected_kombi_options[page_aktAusfuehrung])? selected_kombi_options[page_aktAusfuehrung] : 'xxnoinputxx';
     //js_debug(selected_kombi_options);
     dropDownAktualisieren( page_aktAusfuehrung, json, default_val, true);
     
     jQuery("#lieferzeitStr").html('');
     jQuery("#bestand_anzeige_detail").html('');
     showAmpel(''); 
     page_max_menge = -1;
}

function dropDownAktualisieren( aktAusf, jsonDaten, selectVal, cascade) {
   
   var sel = jQuery("#ausw"+aktAusf);
   if(!sel)return;

    sel.removeAttr('readOnly').removeAttr('disabled').css('background-color','white');
            
   var i;
   for(i=0;i<jsonDaten.length;i++){
      sel.addOption( jsonDaten[i]);
   }
   sel.selectOptions( selectVal,true);        

   //das select einmal vom DOM  entfernen und neu einfügen
   //sonst zeichnet Opera die Hintergrundfarbe nicht neu        
   var par = sel.parent();
   sel.detach();
   par.append(sel);
   
   if(cascade)dropDownHandling(sel[0]);
}


/*
--------------------------------------------------------------------
*/
var kombiOk = false;
function getKombiKomplett( lastKombiIndex, aufruf)   {   // aufruf kann NORMAL oder BILD sein
   if( aufruf == "NORMAL") {
      changePic_dropdown( lastKombiIndex, "KOMBI");
   }
   // Hier jetzt Anhand der Auswahl die Preise und weitere Infos bestimmen und ersetzen
   
   callAjaxArtikelDetail(
               {action:'getKombisPreis',lastKombiIndex:lastKombiIndex},
                {callback: setKombiInfos, debug:ajax_debug}
                );
   
}
function setKombiInfos( jsonDaten)  {
   kombiOk = jsonDaten["kombiOk"];
    staffelrechner(0);
   if( !kombiOk)
      alert( "Kombi gibts wohl nicht!"+page_lastKombiIndex);
   if( kombiOk)   {
      
      var has_staffel = (typeof(page_has_staffel) != 'undefined' && page_has_staffel);
      
      var ampel = "#ampel_"+jsonDaten["ampelStr"];
      showAmpel(ampel);

      initPageCacheVars();
      jQuery("#lieferzeitStr").html(jsonDaten["lieferzeitStr"]);
      jQuery("#bestand_anzeige_detail").html(jsonDaten["bestand"]);
      if( jsonDaten["darfBestellen"] > 0){
         showBestellEingabe();
      }else{
         hideBestellEingabe();
      }  
      if(typeof(jsonDaten['inhalt']) != 'undefined')page_variante_inhalt = jsonDaten['inhalt'];
      if(typeof(jsonDaten['divisor']) != 'undefined')page_variante_divisor = jsonDaten['divisor'];
      if(typeof(jsonDaten['staffelTabelle']) != 'undefined')jQuery("#staffelTabelle").html(jsonDaten['staffelTabelle']);
      
      if(typeof(jsonDaten['max_menge']) != 'undefined')page_max_menge = jsonDaten['max_menge'];
      
      
      var menge = (el('wkmenge'))?el('wkmenge').value:1;
      staffelrechner(menge);
      
   }
}

/***********************************************************/
function getAlleDropDowns( gesamtIndex) {
   // Als erstes den AJAX-Aufruf, um dann auch festzustellen obs die Kombi gibt
   staffelrechner(0,'loading');
   var kombiGibts;
   callAjaxArtikelDetail(
               {action:'getAlleAusfuehrungsDropDowns',lastKombiIndex:gesamtIndex},
                {callback: function(json){
                        kombiGibts = getAlleDropDownsReturn(json);
                     }, 
                     debug:ajax_debug, wait:true}
                );
   return kombiGibts;
}

function getAlleDropDownsReturn(json){

    var i,tmpAusfuehrung;
    var kombiGibts = false;
    kombiGibts = json["kombiGipts"];
    if(!kombiGibts){
      staffelrechner(0);
      return false;
    }
    selected_kombi_options = [];
    //die DropDowns mit leben füllen
    var alleDropDowns = json["alleDropDowns"];
    for( i = 1; i <= page_maxAusfuehrungen; i++)  {
         // DropDown leeren
         if( jQuery("#ausw"+i)) {
            jQuery("#ausw"+i).removeOption(/^[0-9]*:/i);
            jQuery("#ausw"+i).removeOption(/^jQuery/i);
         }
         // DropDown neu füllen und die akt. selected Auswahlen treffen, dann noch die Hiddens korrekt füllen
         var val = alleDropDowns["ausw"+i+"select"];
         selected_kombi_options[i] = val;
         dropDownAktualisieren( i, alleDropDowns["ausw"+i],val , false)
         tmpAusfuehrung = i-1;
         if( document.getElementById("hiddenausw"+tmpAusfuehrung))
            document.getElementById("hiddenausw"+tmpAusfuehrung).value = alleDropDowns["ausw"+i+"select"];
    }
    //die eigentlichen Preis-Daten, etc. aktualisieren
    preisInfos = json["preisInfos"];
    setKombiInfos( preisInfos);
      
    return true;
}


