﻿// IJR Veriodesign 2009.07.20
// Ensure Root Namespaces are existing..
Type.registerNamespace('aspdnsf.Products');

aspdnsf.Products.AssemblyControl = function() {
    this.kitProduct = null;
    this.blingAssemblyTarget = null;
    this.nonblingAssemblyTarget = null;
    this.blingNoVal = null;
    this.nonblingNoVal = null;
    this.blingYesVals = new Array();
    this.nonblingYesVal = null;
    this.blingYesTriggers = new Array();
    this.radYes = $getElement('BlingAssemblyRadio_Yes');
    this.radNo = $getElement('BlingAssemblyRadio_No');
    this.priceHeader = $getElement('lblBlingAssemblyItem_Header');
    this.priceYes = $getElement('lblBlingAssemblyItem_Yes');
    this.blingYesVal = null;
    if (this.radYes != null) {this.radYes.onclick = Function.createDelegate(this, this.selectAssemblyYes); }
    if (this.radNo != null) {this.radNo.onclick = Function.createDelegate(this, this.selectAssemblyNo); }
    this.priceWarning = '';
    this.currentPrice = 0;
    this.ignoreWarning = false;
    
}
aspdnsf.Products.AssemblyControl.registerClass('aspdnsf.Products.AssemblyControl');
aspdnsf.Products.AssemblyControl.prototype = {
      
    setKitProduct : function(kitProduct) {
        if(kitProduct) {
            this.kitProduct = kitProduct;
            var handler = Function.createDelegate(this, this.kitCompositionChangedEventHandler);
            this.kitProduct.addCompositionChangedEventHandler(handler); 
            this.buildDisplay();
        }
        else {
            aspdnsf.Products.ProductController.addObserver(this);
        }
    },
    
    setBlingAssemblyTarget : function(target) {
      if (target) {
         this.blingAssemblyTarget = target;         
      }
    },
    
    setNonBlingAssemblyTarget : function(target) {
      if (target) {
         this.nonblingAssemblyTarget = target;
      }
    },
    
    setBlingNoVal : function(val) {
      if (val) {
         this.blingNoVal = val;
      }
    },
    
    setNonBlingNoVal : function(val) {
      if (val) {
         this.nonblingNoVal = val;
      }
    },
    
    registerBlingYesVal : function(cnt, val) {
      if (val) {
         if (cnt) {
            this.blingYesVals.push([cnt, val]);
         }
      }
    },
    
    setNonBlingYesVal : function(val) {
      if (val) {
         this.nonblingYesVal = val;
      }
    },
    
    registerBlingYesTrigger : function(id, cnt) {
      if (id) {
         if (cnt) {
            this.blingYesTriggers.push([id, cnt]);
         }
      }
    },
    
    setBlingYesVal : function(val) {
      if (val) {
         this.blingYesVal = val;
      }
    },
    
    setPriceWarning : function(str) {
      if (str) {
         this.priceWarning = str;
      }
    },
    
    kitCompositionChangedEventHandler : function() {
        this.buildDisplay();
    },
    
    buildDisplay : function() {
        //alert("beep");
       /*var kitPrice = this.kitProduct.getKitPrice_Bling();
       for (var i in this.priceLabels) {
            var lblPriceValue = $(this.priceLabels[i]);
            lblPriceValue.innerHTML = this.priceQualifier + kitPrice.localeFormat('c'); 
        }*/
    },
    
    setPrice : function(price) {
         if (this.priceHeader == null) {
            return;
         }
         if (price == 0) {
            this.priceHeader.innerHTML = '';
            this.priceYes.innerHTML = 'charge';
            this.radYes.disabled = true;
            this.radNo.click();
         } else {
            this.priceHeader.innerHTML = ' (add ' + price.toLowerCase() + ')';
            this.priceYes.innerHTML = price.toLowerCase();
            this.radYes.disabled = false;
            if (this.radYes.checked) {
               if (price.toString().match(/[\d\.]+/)[0] > this.currentPrice) {
                  if (this.ignoreWarning == false) {
                     alert(this.priceWarning);
                  }                  
               }
               this.selectAssemblyYes();
            }
         }     
         this.currentPrice = price.toString().match(/[\d\.]+/)[0];        
    },
    
    selectAssemblyYes : function() {
      this.ignoreWarning = true;
      var btns = document.getElementsByName(this.blingAssemblyTarget);
      for (var bctr=0; bctr < btns.length; bctr++) {
         if (btns[bctr].value == this.blingYesVal) {
            btns[bctr].click();
         }
      }
      if (this.nonblingAssemblyTarget != null) {
         btns = document.getElementsByName(this.nonblingAssemblyTarget);
         for (var bctr=0; bctr < btns.length; bctr++) {
            if (btns[bctr].value == this.nonblingYesVal) {
               btns[bctr].click();
            }
         }
      } 
      this.ignoreWarning = false;     
    },
    
    selectAssemblyNo : function() {
     var btns = document.getElementsByName(this.blingAssemblyTarget);
      for (var bctr=0; bctr < btns.length; bctr++) {
         if (btns[bctr].value == this.blingNoVal) {
            btns[bctr].click();
         }
      }
      if (this.nonblingAssemblyTarget != null) {
         btns = document.getElementsByName(this.nonblingAssemblyTarget);
         for (var bctr=0; bctr < btns.length; bctr++) {
            if (btns[bctr].value == this.nonblingNoVal) {
               btns[bctr].click();
            }
         }
      }  
    },
    
    beep : function(sender) {
        var lblelement = 'lblKitGroup_' + sender.id;
        if ($getElement(lblelement).innerHTML.indexOf('BLING') == 0) {
         alert($getElement('KitGroupDropDown_' + sender.id).value);
        }
    }
    
}
