$a = new Array;

//$('email_naam.validateAs="text"');
function $(s_command){
	a_command = s_command.split(".");
	el_id = a_command[0];
	el = document.getElementById(el_id);
	if(s_method_var = a_command[1]){
		//Methode of var aanwezig.
		var element_array = $a[el_id];
		var inArray = $keyInArray(element_array,s_method_var);
		var a_method = s_method_var.split("(");
		var s_func_name = a_method[0];
		if( s_method_var.indexOf("=") > 0){
			//Var aanwezig.
			s_vars = s_method_var.split("=")
			variable = s_vars[0];
			value = s_vars[1];
			if(!$a[el_id]){
				$a[el_id] = new Array();
			}
			value = value.replace(/'/g,"");
			value = value.replace(/"/g,"");
			$a[el_id][variable] = value;
			return value;
		} else if ( $isFunction(s_func_name) ){
			
			//Methode aanwezig.
			//Voer methode uit. Return result uit methode.
			
			s_method_name = "$" + a_method[0];
			if(s_method_args = a_method[1]){
				//Methode heeft argumenten.
				s_method_args = s_method_args.replace(/\)/,"");
				s_method_args = "(el," + s_method_args + ")";
			} else {
				//Methode heeft geen argumenten meegekregen. Alleen element meegeven als argument.
				s_method_args = "(el)";
			}
			return eval(s_method_name + s_method_args);
		} else if ( inArray ){
			return $a[el_id][s_method_var];
		//} else if (a_method = s_method_var.split("(")){
		} else {
			return false;
		}
	} else {
		//Return element.
		return el;
	}
}

function $toggleClass(el,class1,class2){
	//el = gebi(el_id);
	cur_class = el.className;
	
	if(cur_class == class1){
		el.className = class2;
	} else {
		el.className = class1;
	}
}

function $validate(el,s_type){
	var r_filter="/^.*$/";

	switch(el.tagName){
		case "FORM":
			var b_all_oke = true;
			var a_elements = el.elements;
			for( var i = 0; i < a_elements.length; i++ ){
				if(n_cur_id = a_elements[i].id){
					if( $(n_cur_id + '.required') ){
						s_val_as = $(n_cur_id + '.validateAs');
						if( $(n_cur_id + '.validate("' + s_val_as + '")') == false){
							b_all_oke = false;
							cur_el = $(n_cur_id);
							if(cur_el.className){
								cur_el.className = cur_el.className + " validate_false";
							} else {
								cur_el.className = "validate_false";
							}
						}
					}
				}
			}
			return b_all_oke;
		break;
		
		default:
			s_value = el.value;
		break;
	}

	switch(s_type){
		case "email":
			r_filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		break;
		
		case "telnum":
			s_value = s_value.replace(/\D/g,"");
			r_filter = /^([0-9-]){10}$/;
		break;
		
		case "text":
			r_filter = /^([a-zA-Z])+$/;
		break;
		
		case "numbers":
			r_filter = /^([0-9])+$/;
		break;
		
		default:
			//r_filter = s_type;
		break;
	}
	return r_filter.test(s_value);
}

function $keyInArray(arr,key_name){
	for(i in arr){
		if(i == key_name){
			return true;
		}
	}
	return false;
}

function $isFunction(s_func_name){
	 s_func_name = "$" + s_func_name;
	if (eval("typeof " + s_func_name + " == 'function'")) {
		return true;
	} else {
		return false;
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
