var promoManager = {
  firstRun:true,
  promoArray:[],
  activePromo:null,
  container:null,
  image:null,
  text:null,
  links:null,
  rand:0,
  initialTrackingCode:"NoOffer",
  initialize:function(){
    promoManager.container = yuiDom.get("promoContainer");
    promoManager.image = yuiDom.get("promoImage");
    promoManager.text = yuiDom.get("promoText");
    promoManager.links = yuiDom.get("promoLinks");
    yuiEvent.onDOMReady(function(){
      document.body.appendChild(promoManager.text);
    });
    var promoCount = 0;
    promoManager.promoArray.forEach(function(promo){
      if(promoCount<4){
        var listItem = drawButton(promo);
        YAHOO.util.Event.addListener(listItem,'mouseover',promoManager.mouseOver);
        YAHOO.util.Event.addListener(listItem,'mouseout',promoManager.mouseOut);
        YAHOO.util.Event.addListener(listItem,'click',promoManager.select);
        promoCount++;
      }
    });
    for(var i=promoCount;i<4;i++){
      drawButton();
    }
    if(promoCount){
      promoManager.rand = Math.floor( Math.random() * Math.min(promoManager.promoArray.length,4));
      promoManager.image.src = promoManager.promoArray[promoManager.rand].url;
      promoManager.initialTrackingCode = promoManager.promoArray[promoManager.rand].trackingCode;
    }
    yuiEvent.onDOMReady(promoManager.onReady);

    function drawButton(promo){
      var listItem = document.createElement('li');
      if(promo){
        promo.listItem = listItem;
        listItem.promo = promo;
        listItem.innerHTML = promo.name;
      }else{
        yuiDom.addClass(listItem,"empty");
      }
      promoManager.links.appendChild(listItem);
      return listItem;
    }
  },
  onReady:function(){
    if(promoManager.promoArray.length>0){
      yuiEvent.addListener(promoManager.image,'load',promoManager.imageLoad);
      promoManager.select.apply(promoManager.promoArray[promoManager.rand].listItem);      
    }
  },
  addPromo:function(promo){
    promoManager.promoArray.push(promo);    
  },
  imageLoad:function(){
    if(!promoManager.activePromo){ return; }
    if(!promoManager.firstRun){
      YAHOO.util.Dom.addClass(promoManager.image,"show");
      var fadeInImage = new YAHOO.util.Anim(promoManager.image,{opacity:{to:1}},0.4);
      fadeInImage.animate();
    }
    promoManager.firstRun = false;
    promoManager.text.innerHTML = promoManager.activePromo.text;
    yuiDom.getElementsBy(function(anchor){
      yuiDom.setStyle(anchor,"color",promoManager.activePromo.textColor);
    },"a",promoManager.text);
    yuiDom.setStyle(promoManager.text,"color",promoManager.activePromo.textColor);
    yuiDom.setStyle(promoManager.text,"width",promoManager.activePromo.textWidth +"px");    
    yuiDom.setStyle(promoManager.text,"left",promoManager.activePromo.textX +"px");
    yuiDom.setStyle(promoManager.text,"top",promoManager.activePromo.textY +"px");
    yuiDom.setStyle(promoManager.text,"display","block");
  },
  mouseOver:function(e){
    YAHOO.util.Dom.addClass(this,'hover');
  },
  mouseOut:function(e){
    YAHOO.util.Dom.removeClass(this,'hover');
  },
  select:function(){
    if(this.promo != null && promoManager.activePromo != this.promo){
      if(!promoManager.firstRun){
        YAHOO.util.Dom.setStyle(promoManager.image,"opacity",0);
        // omniture tacking
        var split = s.prop10.split(":");
        setOmniVars(s.charSet, s.server, s.channel, s.prop2, s.prop3, "noID", s.prop2, split[0], split[1], this.promo.trackingCode);
        s.t();        
      }
      if(promoManager.activePromo){
        YAHOO.util.Dom.removeClass(promoManager.activePromo.listItem,'active');
        YAHOO.util.Dom.removeClass(promoManager.image,'show');
      }
      YAHOO.util.Dom.addClass(this,'active');
      promoManager.activePromo = this.promo;
      promoManager.image.src = this.promo.url;
    }
  }
};
