/**
 * General triggered behaviour on document load
 */
var general_rules = {
    '.no_javascript' : function() {
      this.hide();
    },
    '.show_no_javascript' : function() {
      this.show();
    }
}
Event.addBehavior(general_rules);

/**
 * Rules for hyperlink behaviour
 */
var hyperlink_rules = {
    'a.void:click' : function(e) {
      return false;
    },

    'a.popup:click' : function(e) {

        /**
         * Event:  click
         * Action: open a popup window
         */
        window.open(this.href,
            'PopUp',
            'width=520,height=395,top=200,left=50%,scrollbars=0,status=no,resizable=0,toolbar=0,titlebar=0,menubar=0,location=0');
        return false;
    },

    'a.popup2:click' : function(e) {

        /**
         * Event:  click
         * Action: open a popup window
         */
        window.open(this.href,
            'PopUp',
            'width=600,height=762,top=50,left=50%,scrollbars=0,status=no,resizable=0,toolbar=0,titlebar=0,menubar=0,location=0');
        return false;
    },

    'a.status:mouseover' : function(e) {

        /**
         * Event:  mouseover
         * Action: display the hyperlinks title in the status bar
         */
        window.status=this.title;
        return true;
    },
    'a.status:mouseover' : function(e) {

        /**
         * Event:  mouseout
         * Action: clear the status bar
         */
        window.status='';
        return true;
    },

    'a.switch:click': function(e) {
        /**
         * Event:  click
         * Action: show / hide the tab with the same ID minus "_switch"
         */
        var c = $(this.id.replace('_switch',''));
        var content = $(c.id + '_content');
        if (c) {
          c.toggle();
        }
        return false;
    },

    'a.tabswitch:click' : function(e) {
        /**
        * Event: click
        * Action: hide related div, show related div's related element
        */
        var container = $(this.getAttribute('rel'));
        if(container) {
          var other = $(container.getAttribute('rel'));
          if (other) {
            container.addClassName('hide');
            other.removeClassName('hide');
          }
        }
        return false;
    },
    'a.submit:click' : function(el) {
    	/**
    	* Event: click
    	* Action: submit the form given as a param.
    	*/
    	var params = Element.getClassParameters(this);
        var form = $(params.form);
        if (form){
          	form.submit();
        }
		return false;
    }
}
Event.addBehavior(hyperlink_rules);

/**
 * Behaviour rules for form elements
 */

var form_rules = {
    'form.auto_submit' : function(e) {
      this.submit();
    },
    'select.auto_submit:change' : function(e) {
      this.form.submit();
    },
    /**
     * Event:  blur
     * Action: convert field value to upper case
     */
    'input.auto_upper:blur' : function(e) {
      this.value = this.value.toUpperCase();
    },

    /**
     * Event:  change
     * Action: convert field value to upper case
     */
    'input.auto_upper:change' : function(e) {
      this.value = this.value.toUpperCase();
    },

    'input.auto_blur:focus' : function(e) {

      /**
       * Event:  focus
       * Action:
       *   - replace field's classname from "_off" to "_on"
       *   - if labeled, replace label's classname from "_off" to "_on"
       *   - if label is image, replace image with "_hover" version
       */
        this.className = this.className.replace('_off','_on');
        var fieldLabel = $(this.id + '_label');
        if (fieldLabel) {
            fieldLabel.className = fieldLabel.className.replace('_off','_on');
            var image = fieldLabel.getElementsByTagName('img')[0];
            if (image) {
                image.src = image.src.replace('_normal','_hover');
            }
        }
    },
    'input.auto_blur:blur' : function(e) {

        /**
         * Event:  blur
         * Action:
         *   - replace field's classname from "_on" to "_off"
         *   - if labeled, replace label's classname from "_on" to "_off"
         *   - if label is image, replace image with "_normal" version
         */
        this.className = this.className.replace('_on','_off');
        var fieldLabel = $(this.id + '_label');
        if (fieldLabel) {
              fieldLabel.className = fieldLabel.className.replace('_on','_off');
            var image = fieldLabel.getElementsByTagName('img')[0];
            if (image) {
                image.src = image.src.replace('_hover','_normal');
            }
        }
    },
    'input.auto_clear:focus' : function(e) {

        /**
         * Event:  focus
         * Action:
         *   - clear value
         *   - remove auto_clear class
         */
        if (Element.hasClassName(this,'auto_clear')) {
            this.value='';
        }
        Element.removeClassName(this,'auto_clear');
    },
    'input.auto_blur_multiple:focus' : function(el) {

      /**
       * This is the multiple variant of auto_blur. It will highlight the
       * label of replace the image. The id of the label must be the same
       * as the id of the field, minus the last underscore and digits.
       * Now you can do those fancy multiple fields with one label :)
       */
        this.className = this.className.replace('_off','_on');
        var fieldLabel = $(this.id.sub(/_\d+$/, '') + '_label');
        if (fieldLabel) {
            fieldLabel.className = fieldLabel.className.replace('_off','_on');
            var image = fieldLabel.getElementsByTagName('img')[0];
            if (image) {
                image.src = image.src.replace('_normal','_hover');
            }
        }
    },
    'input.auto_blur_multiple:blur' : function(el) {
        this.className = this.className.replace('_on','_off');
        var fieldLabel = $(this.id.sub(/_\d+$/, '') + '_label');
        if (fieldLabel) {
            fieldLabel.className = fieldLabel.className.replace('_on','_off');
            var image = fieldLabel.getElementsByTagName('img')[0];
            if (image) {
                image.src = image.src.replace('_hover','_normal');
            }
        }
    },
    'input.rollover:mouseover' : function(el) {

        /**
         * Event:  mouseover
         * Action:
         *   - if not "active", replace classname by "_hover" classname
         *   - if type is "image", replace image by "_hover" version
         */
        if (!Element.hasClassName(this,'active')) {
            this.className = this.className.replace('_normal','_hover');
            if (this.type == 'image') {
                this.src = this.src.replace('_normal','_hover');
            }
        }
    },
    'input.rollover:mouseout' : function(e) {
        /**
         * Event:  mouseout
         * Action:
         *   - replace classname by "_hover" classname
         *   - if type is "image", replace image by "_hover" version
         */
        if (!Element.hasClassName(this,'active')) {
            this.className = this.className.replace('_hover','_normal');
            if (this.type == 'image') {
                this.src = this.src.replace('_hover','_normal');
            }
        }
    },
    'input.anonymous:click' : function(e) {
        /**
         * Event:  click 
         * Action:
         *   - fill or empty fields: name and email
         */
        if (this.checked){
            var params = Element.getClassParameters(this);
            $('name').value = params.filler;
            $('email').value = params.filler;
        }else{
            $('email').value = '';
            $('name').value = '';
            $('name').focus();
        }
    }
}
Event.addBehavior(form_rules);

var rollover_rules = {
    'img.rollover:mouseover' : function(el) {
      /**
       * Event:  mouseover
       * Action: show hover version
       */
    this.src = this.src.replace('_normal','_hover');
    return false;

  },
    'img.rollover:mouseout' : function(el) {
      /**
       * Event:  mouseout
       * Action: show normal version
       */
    this.src = this.src.replace('_hover','_normal');
    return false;
  }
}
Event.addBehavior(rollover_rules);

var flash_rules = {
       '#toren' : function(el) {
        var params = Element.getClassParameters(this); 
        var FOToren = {
        movie:"/flash/3dhome.swf",  
        width:"252",  
        height:"655", 
        menu:"false", 
        wmode:"transparent",
        flashvars: "pageID="+params.pageID+"&language="+params.language, 
        xi:"false", 
        majorversion:"9",  
        build:"0"  
        };
        UFO.create(FOToren,"toren");
    },
		    '#trailer' : function(el) {
        var FOTrailer = {
        movie:"/flash/trailer.swf",  
        width:"640",  
        height:"480", 
        menu:"false", 
        wmode:"transparent", 
        xi:"false", 
        majorversion:"8",  
        build:"0"  
        };
        UFO.create(FOTrailer,"trailer");
    },
		'#tour' : function(el) {
        var FOTour = {
        movie:"/flash/tour.swf",  
        width:"640",  
        height:"360", 
        menu:"false", 
        wmode:"transparent", 
        xi:"false", 
        majorversion:"8",  
        build:"0"  
        };
        UFO.create(FOTour,"tour");
    }, 
		'#trailerhome' : function(el) {
        var FOTrailerhome = {
        movie:"/flash/trailerhome.swf",  
        width:"280",
        height:"180", 
        menu:"false", 
        wmode:"transparent", 
        xi:"false", 
        majorversion:"8",  
        build:"0"  
        };
        UFO.create(FOTrailerhome,"trailerhome");
    } 
}
Event.addBehavior(flash_rules);

function is_digit (data) {
  var result = true;
  for (var i=0;i<data.length;i++) {
    var digit = data.charAt(i);
    if (digit <"0" || digit > "9") {
      result = false;
    }
  }
  return result;
}