﻿var PulseFade = new Class({
      
  //implements
  Implements: [Options,Events],

  //options
  options: {
    min: 0,
    max: 1,
    duration: 200,
    times: 5000
  },
  
  //initialization
  initialize: function(el,options) {
    //set options
    this.setOptions(options);
    this.element = $(el);
    this.times = 0;
  },
  
  //starts the pulse fade
  start: function(times) {
    if(!times) times = this.options.times * 2;
    this.running = 1;
    this.fireEvent('start').run(times -1);
  },
  
  //stops the pulse fade
  stop: function() {
    this.running = 0;
    this.fireEvent('stop');
  },
  
  //runs the shizzle
  run: function(times) {
    //make it happen
    var self = this;
    var to = self.element.get('opacity') == self.options.min ? self.options.max : self.options.min;
    self.fx = new Fx.Tween(self.element,{
      duration: self.options.duration / 2,
      onComplete: function() {
        self.fireEvent('tick');
        if(self.running && times)
        {
          self.run(times-1);
        }
        else
        {
          self.fireEvent('complete');
        }
      }
    }).start('opacity',to);
  }
});


window.addEvent('domready', function() {
	
		  var pf = new PulseFade('pulse-fade',{
		    min: 0,
		    max: 1,
		    duration: 1500,
		    onComplete: function() {
		     // alert('complete!');
		    },
		    onStart: function() {
		      //alert('started!');
		    },
		    onStop: function() {
		      //alert('stopped!');
		    },
		    onTick: function() {
		      //alert('tick!');
		    }
		  });
		  
		  //e.stop(); 
		  pf.start();

   
});
	



	

