/* AdManager.js
   @author Brian Crescimanno
   Requires:
        /inc/js/prototype/prototype.js
        /dwr/engine.js
        /dwr/util.js
        /dwr/interface/MarketManager.js

    Allows for updating ad tags based on make, model, and zip code */

var AdManager = Class.create({

    initialize: function(){
        this.adIds = $$('iframe.atc_advertisement');
    },

    updateAdsByZip: function(zip){
        /* DWR Call to MarketManager Java class */
        var updateAdsByZipHelper = this.updateAdsByZipHelper.bind(this);
        MarketManager.getMarketByZipCode(zip, updateAdsByZipHelper);
    },

    updateAdsByZipHelper: function(data){
        this.adIds.each(function(ad){
            var adUrl = ad.getAttribute('adtagrequest');
            var adFile = ad.src;
            var finalUrl = "";
            var adParams = adUrl.split("&");
            adParams.each(function(param){
                if(param.startsWith("zip=")){
                    param = "zip="+data.zipCode;
                } else if(param.startsWith("state=")){
                    param = "state="+data.state;
                } else if(param.startsWith("dma=")){
                    param = "dma="+data.dma;
                } else if(param.startsWith("region=")){
                    param = "region="+data.submarket;
                } else if(param.startsWith("alphazone=")){
                    if(data.zoneCode!=null){
                        param = "alphazone="+data.zoneCode;
                    } else {
                        param = "alphazone=";
                    }                    
                }
                finalUrl += param+"&";
            });
            ad.setAttribute('adtagrequest', finalUrl);
            ad.src = adFile;
        });
    },

    updateAdsByMake: function(make) {
        this.adIds.each(function(ad){
            var adUrl = ad.getAttribute('adtagrequest');
            var adFile = ad.src;
            var finalUrl = "";
            var adParams = adUrl.split("&");
            adParams.each(function(param){
                if(param.startsWith('make=')){
                    param = "make="+make;
                }
                finalUrl += param+"&";
            });
            ad.setAttribute('adtagrequest', finalUrl);
            ad.src = adFile;
        });
    },

    updateAdsByModel: function(model) {
        this.adIds.each(function(ad){
            var adUrl = ad.getAttribute('adtagrequest');
            var adFile = ad.src;
            var finalUrl = "";
            var adParams = adUrl.split("&");
            adParams.each(function(param){
                if(param.startsWith('model=')){
                    param = "model="+model;
                }
                finalUrl += param+"&";
            });
            ad.setAttribute('adtagrequest', finalUrl);
            ad.src = adFile;
        });
    }

});