/************************************************
*   mooquee v.0                                 *
*   Dirar Abu Kteish dirar@zanstudio.com        *
/***********************************************/

var mooquee = new Class({
    initialize: function(element, options) {
      this.setOptions({
         marHeight: 43,
         marWidth: 629,
         marSpacing: 10,
         speed: 10,
         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' : 'mooquee-text'
          ,'id' : 'mooquee-text'
      }).setHTML(el.innerHTML);
      el.setHTML('');
      this.textElement.injectInside(el);
      this.textElement = $('mooquee-text');
      (this.options.direction == 'left') ?  this.textElement.setStyle('left', ( -1 * this.textElement.getCoordinates().width.toInt())) : this.textElement.setStyle('left', this.options.marWidth);
      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 : 1)) + '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.options.marWidth);
            }
        }
        else{
            if(pos > this.options.marWidth.toInt()){
                this.textElement.setStyle('left', -1 * (this.textElement.getCoordinates().width.toInt()) );                
            }
        }        
    },
    setDirection: function(dir){
        this.options.direction = dir;
    }
});
mooquee.implement(new Options);



/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Philip Myers :: http://virtualipod.tripod.com/bookmark.html */

function bookmark(url,title){
  if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
  window.external.AddFavorite(url,title);
  } else if (navigator.appName == "Netscape") {
    window.sidebar.addPanel(title,url,"");
  } else {
    alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
  }
}



/* ---------------------------------------------------------------------------------------------

Placing the labels inside the input fields.
Article on A List Apart - http://www.alistapart.com/articles/makingcompactformsmoreaccessible
Example - http://www.alistapart.com/d/makingcompactformsmoreaccessible/example_complete.html

--------------------------------------------------------------------------------------------- */

function initOverLabels () {
  if (!document.getElementById) return;  	

  var labels, id, field;

  // Set focus and blur handlers to hide and show 
  // LABELs with 'overlabel' class names.
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
	
    if (labels[i].className == 'overlabel') {

      // Skip labels that do not have a named association
      // with another field.
      id = labels[i].htmlFor || labels[i].getAttribute('for');
      if (!id || !(field = document.getElementById(id))) {
        continue;
      }

      // Change the applied class to hover the label 
      // over the form field.
      labels[i].className = 'overlabel-apply';

      // Hide any fields having an initial value.
      if (field.value !== '') {
        hideLabel(field.getAttribute('id'), true);
      }

      // Set handlers to show and hide labels.
      field.onfocus = function () {
        hideLabel(this.getAttribute('id'), true);
      };
      field.onblur = function () {
        if (this.value === '') {
          hideLabel(this.getAttribute('id'), false);
        }
      };

      // Handle clicks to LABEL elements (for Safari).
      labels[i].onclick = function () {
        var id, field;
        id = this.getAttribute('for');
        if (id && (field = document.getElementById(id))) {
          field.focus();
        }
      };

    }
  }
};

function hideLabel (field_id, hide) {
  var field_for;
  var labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    field_for = labels[i].htmlFor || labels[i].getAttribute('for');
    if (field_for == field_id) {
      labels[i].style.textIndent = (hide) ? '-9999px' : '0px';
      return true;
    }
  }
}

window.onload = function () {
  setTimeout(initOverLabels, 50);
};