/************************************************
*   mooquee v.01                                 *
*   Http: WwW.developer.ps/moo/mooquee          *
*   Dirar Abu Kteish dirar@zanstudio.com        *
/***********************************************/

/*EDIT*/

/*
Chages description:

The script recognizes the current lagauge.
Replaced all relevant instances of 'direction' with mydir which is read from the get variable 'lang'
This script also now ignores the setting in joomla's CP
*/

var getTheGets = $get();
var readDir = 'right';
if( getTheGets.lang == "en" ) readDir = 'left';

function $get(key,url){  
   if(arguments.length < 2) url =location.href;  
   if(arguments.length > 0 && key != ""){  
       if(key == "#"){  
           var regex = new RegExp("[#]([^$]*)");  
       } else if(key == "?"){  
           var regex = new RegExp("[?]([^#$]*)");  
       } else {  
           var regex = new RegExp("[?&]"+key+"=([^&#]*)");  
       }  
       var results = regex.exec(url);  
       return (results == null )? "" : results[1];  
   } else {  
       url = url.split("?");  
       var results = {};  
           if(url.length > 1){  
               url = url[1].split("#");  
               if(url.length > 1) results["hash"] = url[1];  
               url[0].split("&").each(function(item,index){  
                   item = item.split("=");  
                   results[item[0]] = item[1];  
               });  
           }  
       return results;  
   }  
}  
/*/EDIT*/
var mooquee = new Class({
    initialize: function(element, options) {
		this.setOptions({
			marHeight: 20,
			marWidth: 550, //or 100%...
			steps: 1,
			speed: 1,
			direction: 'left',
			/*EDIT*/
      mydir: readDir,
      /*/EDIT*/
      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' : 'mooquee-text'
		    ,'id' : 'mooquee-text'
		}).setHTML(el.innerHTML);
		el.setHTML('');
		this.textElement.injectInside(el);
		this.textElement = $('mooquee-text');
		(this.options.mydir == '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.mydir == '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.mydir == '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 = readDir;
    }
});
mooquee.implement(new Options);
