/************************************************
*   mooquee v.02                                *
*   Http: WwW.developer.ps/moo/mooquee          *
*   Dirar Abu Kteish dirar@zanstudio.com        *
/***********************************************/

/* mooquee.js
 * ticker control functionality
 * utilizes the mootools js framework
 */ 
var mooquee = new Class({
    initialize: function(element, options) {
		this.setOptions({
			marHeight: 15,
			marWidth: 966, //or 100%...
			steps: 1,
			speed: 15, // higher number = slower speed
			direction: 'left',
			pauseOnOver: true
	    }, options);
	    this.timer = null;
	    this.textElement = null;
	    this.mooqueeElement = element;	    	    
	    this.constructMooquee();
	},
	constructMooquee: function() {
		var el = this.mooqueeElement;
		el.setStyles({
		    'width'  : this.options.marWidth,
		    'height' : this.options.marHeight		    
		});
		this.textElement = new Element('div',{
		    'class' : 'ticker-text',
		    'id'    : 'ticker-text'
		}).set('html',el.innerHTML);
		el.set('html','');
		this.textElement.injectInside(el);
		var newsDiv = new Element('div', {
			'id':'newsLink'}).set('html','<a href="news.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'newsbutton\',\'\',\'_images/newsbutton_roll.gif\',1)"><img src="_images/newsbutton_up.gif" border="0" alt="News" name="newsbutton" id="newsbtn" /></a>');
		this.mooqueeElement.innerHTML += newsDiv.innerHTML;
		var fillerSpan = new Element('span', {
    		'id':'fillerDiv', 'styles': { 'height':'15px', 'width':'16px', 'background-color':'#3a6f8f'} }); 
		this.textElement = $('ticker-text');
		(this.options.direction == 'left') ?  this.textElement.setStyle('left', ( -1 * this.textElement.getCoordinates().width.toInt())) : this.textElement.setStyle('left', el.getCoordinates().width.toInt());
		if(this.options.pauseOnOver){this.addMouseEvents();}
		//start marquee
		this.timer = this.startMooquee.delay(this.options.speed, this);
	},
	addMouseEvents : function(){
	    this.textElement.addEvents({
	        'mouseenter' : function(me){
	            this.clearTimer();
	        }.bind(this),
	        'mouseleave' : function(me){
	            this.timer = this.startMooquee.delay(this.options.speed, this);
	        }.bind(this)
	    });
	},
    startMooquee: function(){
        var pos = this.textElement.getStyle('left').toInt();
        this.textElement.setStyle('left', ( pos + ((this.options.direction == 'left') ? -1 * (this.options.steps) : this.options.steps)) + 'px');
        this.checkEnd(pos);
        this.timer = this.startMooquee.delay(this.options.speed, this);        
    },
    resumeMooquee: function(){
        this.stopMooquee();
        if(this.options.pauseOnOver){this.addMouseEvents();}
        this.timer = this.startMooquee.delay(this.options.speed, this);        
    },
    stopMooquee: function(){
        this.clearTimer();        
        this.textElement.removeEvents();        
    },
    clearTimer: function(){
        $clear(this.timer);
    },
    checkEnd: function(pos){
        if(this.options.direction == 'left'){
            if(pos < -1 * (this.textElement.getCoordinates().width.toInt())){
                this.textElement.setStyle('left', this.mooqueeElement.getCoordinates().width);		
            }
        }
        else{
            if(pos > this.mooqueeElement.getCoordinates().width.toInt()){
                this.textElement.setStyle('left', -1 * (this.textElement.getCoordinates().width.toInt()) );                
            }
        }        
    },
    setDirection: function(dir){
        this.options.direction = dir;
    }
});
mooquee.implement(new Options);