
  var running = false;
  var keepRunning = false;
  var effect;
  var element;
  var currentMenu = false;

  function demo(s,e)
  {
    effect = s;
	element = e;
    keepRunning = true;
  }

  function appearQuickly()
  {
    Effect.Appear(element, {delay: 1, duration: .1, afterFinish:demoDone});
  }
  
  function demoDone() {
	   running = false;
		window.status = '';
		$('status').innerHTML = "";
		  if (keepRunning)
		  {
			demoStart();
		  }
		}

  function demoStart()
  {
	
    if (!running)
    {
      running = true;
      window.status = 'Running ' + effect + '.';
      $('status').innerHTML = effect;
      switch (effect)
              {
        case 'Fade':
          Effect.Fade(element, {delay: .1, duration: .2, afterFinish: demoDone });
          break;

        case 'Appear':
			
			for(y = 0; y < a2menuArray.length; y++){
				if (element != a2menuArray[y]){
					$(a2menuArray[y]).hide();
				}
			}

			Effect.Appear(element, {delay: .1, duration: .2, afterFinish:demoDone});
         
          break;


        case 'Grow':
          Effect.Shrink(element, {delay: .1, duration: .1, afterFinish: function()
          {
            Effect.Grow(element, {delay: 1, duration: 2, afterFinish:demoDone});
          }});
          break;

        case 'Puff':
          Effect.Puff(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'BlindUp':
          Effect.BlindUp(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'DropOut':
          Effect.DropOut(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'SlideDown':
          Effect.SlideDown(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'SlideUp':
          Effect.SlideUp(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'SwitchOff':
          Effect.SwitchOff(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'Squish':
          Effect.Squish(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'Fold':
          Effect.Fold(element, {delay: .1, duration: 2, afterFinish: appearQuickly});
          break;

        case 'Shrink':
          Effect.Shrink(element, {delay: .2, duration: 2, afterFinish: function()
          {
            Effect.Grow(element, {delay: 1, duration: .2, afterFinish:demoDone});
          }});
          break;

        case 'BlindDown':
          Effect.BlindDown(element, {delay: .1, duration: 3, afterFinish: appearQuickly});
          break;

        case 'Shake':
          Effect.Shake(element, {delay: .1, duration: 3, afterFinish: function()
          {
            alert("Shake DONE doesn't get called");
            running = false;
            if (keepRunning)
            {
              demoStart();
            }
          }});
          break;

        case 'Pulsate':
          Effect.Pulsate(element, {delay: .1, duration: 2, afterFinish: demoDone});
          break;

        case 'Highlight-#fff-#f00':
          new Effect.Highlight(element, {delay: .1, duration: 3, startColor:'#fff', endColor:'#f00', afterFinish: demoDone});
          break;

        case 'Highlight-#00f-#0f0':
          new Effect.Highlight(element, {delay: .1, duration: 3, startColor:'#00f', endColor:'#0f0', afterFinish: demoDone});
          break;

        default:
          alert('Unknown case: ' + effect);
      }
    }
  }
  function demoStop()
  {
    keepRunning = false;
  }
  function demoElement(e) {
	Effect.BlindUp(element, {duration: .5, afterFinish: function() {
		$(element).innerHTML="<div>"+$(e).innerHTML+"</div>";
		Effect.BlindDown(element, {duration: .3});
	}});
  }

