var is_max = false;
var tmp = false;
var active_navi_img = false;

var myrules = {
	
	'select.switch' : function(el) {
		el.onchange = function() {
			
			var someNodeList = $(el).getElementsByTagName('option');
			var nodes = $A(someNodeList);

			nodes.each(function(node) {
			
				if (node.readAttribute('value') == $(el).value ) {
					var rels = node.readAttribute('rel').gsub(' ','').split(',');
			
					rels.each(function(s) {
					
						var commands = ['enable','disable','show','hide'];
						var args = s.split(':');
						
						if(args.size() < 2)
							return;
						
						if( commands.indexOf(args[0]) == -1)
							return;
						
						var func = '';
						
						if ( args[0] == 'show' || args[0] == 'hide') {
							if( el.checked && args[0] == 'hide'
								|| (! el.checked) && args[0] == 'show')
								func = 'show';
							else
								func = 'hide';
						}
						else if ( args[0] == 'enable' || args[0] == 'disable') {
							if( el.checked && args[0] == 'disable'
								|| (! el.checked) && args[0] == 'enable')
								func = 'disable';
							else
								func = 'enable';
						}
						$$(args[1]).invoke(func);
						$$(args[1]).invoke(func);
			
					});
				}
			});
		}
	},

	'input.overwrite' : function(el) {
		el.onchange = function() {
			prefix = 'overwrite_';
			el_name = el.name.substring( prefix.length );
			if( ! el.checked )
			{				
				// overwrite_<element.name>
				disable( el.form.elements[ el_name ] );
			}
			else 
			{
				enable( el.form.elements[ el_name ] );
			}
			return true;
		}
	},
	
	'select.chooseOrNew' : function(el) {
		el.onchange = function() {
			if( el.selectedIndex != 0 )
			{				
				disable( el.form.elements[ el.name + "_new"] );
			}
			else 
			{
				enable( el.form.elements[ el.name + "_new"] );
			}
			return true;
		}
	},
	
	'button.selectMod' : function(el) {
		el.onclick = function() {
		
			var elSel = el.form.elements[ el.getAttribute("rel")];
			
			if( el.value == 'add' )
			{
				var val = prompt(unescape('Eintrag hinzuf%FCgen'));
				if( val == null || val.length == 0 )
					return;
				
				var elOptNew = document.createElement('option');
				elOptNew.text = val;
				elOptNew.value = val;
				try {
			    	elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
			  	}
			  	catch(ex) {
			    	elSel.add(elOptNew); // IE only
			    }
			}
			else if( el.value == 'remove')
			{			
				if( elSel.selectedIndex == -1 )
					alert(unescape('Kein Eintag ausgew%E4hlt'));
				var i;
				for (i = elSel.length - 1; i>=0; i--) {
					if (elSel.options[i].selected) {
						elSel.remove(i);
					}
				}
			}
		}
	},
	
	'.submitter' : function(el) {
		el.onclick = function() {
			if( el.parentNode == "[object HTMLFormElement]" ) {
				el.parentNode.submit();
			}	
		}
	},
	
	'.onChangeSubmit' : function(el) {
		el.onchange = function() {
			el.form.submit();
		}
	},
	
	'input.confirm_deletion' : function(el) {
		el.onclick = function() {
			return confirm(unescape('Wollen sie den Eintrag wirklich l%F6schen?'));
		}
	},
	
	'input.validate_submit' : function(el) {
		el.onclick = function() {
			form = el.form;
			var err_msg = new Array('Folgende Fehler sind aufgetreten:\n');
			var error = false;
			
			inputs = form.getElementsByTagName("input");
			error_inputs = new Array();
			for (var i = 0; i < inputs.length; i++) {
				jscss('remove', inputs[ i], 'validationError');
				if( jscss('check', inputs[ i], 'notEmpty') ) {
					if (!inputs[ i].value && !inputs[ i].disabled) {      
						error = true;
				    	err_msg.push(inputs[ i].title+' muss einen Wert besitzen');
				    	error_inputs.push(inputs[ i]);
				    }
				}
			}
			
			// add error class to input fields
			for (var i = 0; i < error_inputs.length; i++) {
				jscss('add', error_inputs[ i], 'validationError');
			}
			
			selects = form.getElementsByTagName("select");
			for (var i = 0; i < selects.length; i++) {
				if( jscss('check', selects[ i], 'selectAll') ) {
					for (j = selects[ i].length - 1; j>=0; j--) {
						selects[ i].options[ j].selected = true;
					}
				}
			}
			
			
			// print error message
			if (error) {
			    err_msg = err_msg.join('\n\xB7 ');
				alert(err_msg);
				return false;
			  }
			  else {
			    return true;
			  }
		}
	},
	
	'select.productToMenu' : function(el) {
		el.onchange = function() {
			id = el.getAttribute('rel');
			this.form.elements['productId['+id+']'].value = el.value;
			if(el.value!=0) {
				this.form.elements['name['+id+']'].value = el.options[el.selectedIndex].text;
				disable(this.form.elements['name['+id+']']);
				this.form.elements['description['+id+']'].value = this.form.elements['productDescription['+el.value+']'].value;
				disable(this.form.elements['description['+id+']']);
			}
			else {
				this.form.elements['name['+id+']'].value = '';
				enable(this.form.elements['name['+id+']']);
				this.form.elements['description['+id+']'].value = '';
				enable(this.form.elements['description['+id+']']);
			}
		}
	},
	
	// handels the mouseover effects of the navigation menu
	'#navigator li a' : function(el) {
		el.onmouseover = function() {
			mouseover_img = $(el.firstChild);
			
			$('navigator').getElementsBySelector('img').each(function(img){
				img.writeAttribute('src_bak', img.readAttribute('src'));
				
				src_prefix = '/img/nav_' + img.readAttribute('name');
				src_mouseover_postfix = '_mouseover';
				src_postfix = ".jpg";
				
				if (img == mouseover_img) {
					img.src = src_prefix + src_mouseover_postfix + src_postfix;
				} else {
					img.src = src_prefix + src_postfix;
				}
			});
		},
		
		el.onmouseout = function() {
			
			$('navigator').getElementsBySelector('img').each(function(img){
				img.src = img.readAttribute('src_bak');
			});
		}
	}	};Behaviour.register(myrules);
