/**
 * General triggered behaviour on document load
 */
var general_rules = {
	'.hilite_keywords' : function() {
		var hiliter = new KeywordHiliter("ajax.php", this);
		hiliter.options.elementTag = 'ABBR';
		hiliter.fetchKeywords();
	},
	'.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
		 */
		var params = Element.getClassParameters(this);
		var width = params.width || 684;
		var height = params.height || 350;
		var top = params.top || 200;
		var left = params.left || '50%';
		window
				.open(
						this.href,
						'PopUp',
						'width='
								+ width
								+ ',height='
								+ height
								+ ',top='
								+ top
								+ ',left='
								+ left
								+ ',scrollbars=0,status=no,resizable=0,toolbar=0,titlebar=0,menubar=0,location=0');
		return false;
	},

	'a.external:click' : function(e) {

		/**
		 * Event: click Action: open a new window
		 */
		if (!e.ctrlKey && !e.altKey && !e.shiftKey) {
			window.open(this.href);
			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:mouseout' : 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' : function(e) {
		/**
		 * Event: click Action: submit the form given as a param. (used by
		 * captcha)
		 */
		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');
			}
		}
	},
	'.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');
			}
		}
	}
}
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 = {
	'#flash_video' : function(el) {
		var params = Element.getClassParameters(this);
		var FO = {
			movie : "/flash/videoplayer.swf",
			width : "710",
			height : "390",
			menu : "false",
			bgcolor : "#f9f8ec",
			wmode : "opaque",
			xi : "false",
			majorversion : "9",
			build : "28",
			allowfullscreen : "true",
			flashvars : "audio=" + params.audio
		}
		UFO.create(FO, this.id);
	},
	'#flash_christmas' : function(el) {
		var params = Element.getClassParameters(this);
		var FO = {
			movie : "/flash/nolet_xmas_2009_" + params.xmas + ".swf",
            width : "620",
			height : "670",
			menu : "false",
			bgcolor : "#ffffff",
			wmode : "opaque",
			xi : "false",
			majorversion : "8",
			build : "0",
			allowfullscreen : "false"
		}
		UFO.create(FO, this.id);
	}
}
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
}