(function(){
  YAHOO.namespace('CH');
  var config = null;
  YAHOO.CH.stepByStep = function(){
    var panel;
    var show = null;
    var start = 0;
    var current = null;
    function startShow(){
      show = config.steps;
      createPanel();
    }
    function nextStep(){
      panel.hide();
      YAHOO.util.Dom.removeClass(current,'current-step');
      start++;
      if(show[start]){
        window.setTimeout('YAHOO.CH.stepByStep.c()',config.fadeSpeed);
      };
    }
    function createPanel(){
      var attr = show[start];
      current = YAHOO.util.Dom.get(attr.id);
      if(current){
        var xy = YAHOO.util.Dom.getXY(current);
        window.scrollTo(xy[0],xy[1]-10);
        var corners = attr.orientation.split('-');
        var orientation = [current,corners[0],corners[1]];
        panel = new YAHOO.widget.Panel('panel', 
          { 
            close:false,
            visible:true,
            width:attr.width,
            context:orientation,  
            draggable:false
          } 
        );
        if(config.panelFade){ 
          panel.cfg.setProperty('effect',{
            effect:YAHOO.widget.ContainerEffect.FADE,
            duration:(config.fadeSpeed/1000)
          });
        }
        if(attr.header){
          panel.setHeader(attr.header);
        }
        if(attr.body){
          panel.setBody(attr.body);
        }
        if(config.autoplay === false){
          var nav = document.createElement('ul');
          if(start === 0){
            var li = document.createElement('li');
            var prev = document.createElement('a');
            prev.setAttribute('href','#'+show[0].id);
            prev.appendChild(document.createTextNode(config.cancelLabel));
            YAHOO.util.Event.on(prev,'click',function(e){
              YAHOO.util.Dom.removeClass(current,'current-step');
              panel.hide();
              YAHOO.util.Event.preventDefault(e);
            });
            li.appendChild(prev);
            nav.appendChild(li);
          }
          if(start > 0){
            var li = document.createElement('li');
            var prev = document.createElement('a');
            prev.setAttribute('href','#'+show[start-1].id);
            prev.appendChild(document.createTextNode(config.prevLabel));
            YAHOO.util.Event.on(prev,'click',function(){start-=2;nextStep()});
            li.appendChild(prev);
            nav.appendChild(li);
          }
          if(show[(start+1)]){
            var li = document.createElement('li');
            var next = document.createElement('a');
            next.setAttribute('href','#'+show[start+1].id);
            YAHOO.util.Event.on(next,'click',nextStep);
            next.appendChild(document.createTextNode(config.nextLabel));
            li.appendChild(next);
            nav.appendChild(li);
          } else {
            var li = document.createElement('li');
            var next = document.createElement('a');
            next.setAttribute('href','#'+show[0].id);
            YAHOO.util.Event.on(next,'click',function(e){
              YAHOO.util.Dom.removeClass(current,'current-step');
              panel.hide();
              YAHOO.util.Event.preventDefault(e);
            });
            next.appendChild(document.createTextNode(config.endLabel));
            li.appendChild(next);
            nav.appendChild(li);
          }
          panel.setFooter(nav);
        }  
        panel.render(document.body);
        YAHOO.util.Dom.addClass(current,'current-step');
        panel.show();
        if(config.autoplay){
          window.setTimeout('YAHOO.CH.stepByStep.n()',attr.time);
        }
      }
    } 
    return{
      start:startShow,
      n:nextStep,
      c:createPanel
    };
  }();
  loader = new YAHOO.util.YUILoader({
    require: ['container'],
    loadOptional: true, 
    onSuccess:function(o){
      config = YAHOO.CH.stepByStepConfig;
      if(config.autostart){
        window.setTimeout('YAHOO.CH.stepByStep.start()',config.delay);
      }
    }
  });
  loader.insert();
})();

