	var scripts = 
		[
		 "javascript/prototype.js",
		"javascript/calendar.class.js"
		]
	;
	
	
	var dyn_loader = {
		load : function(scripts){
			for(s=0; s<scripts.length; s++) this.get_script(scripts[s]);
		},
		
		get_script : function(script_name){
			document.write("\<script type=\"text/javascript\" src=\"" + script_name + "\" \>\</script\>");
		}
	}

	dyn_loader.load(scripts);

	window.onload = loader;

	try{
		if(tinyMCE){
			tinyMCE.init({
				theme : "advanced",
				valid_elements : "a[href|target=_blank],input,strong/b,h1,h2,p,ul,ol,li,br,em/i",
				entity_encoding : "numeric",
				mode : "specific_textareas",
				editor_selector : "wysiwyg",
				plugins : "fullscreen,zoom,paste",

				theme_advanced_buttons1 : "formatselect,bold,italic,separator,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,pastetext,pasteword,removeformat",
				theme_advanced_buttons2 : "",
				theme_advanced_buttons3 : "",

				theme_advanced_blockformats : "p,h1,h2,h3",
				theme_advanced_toolbar_location : "top",
				theme_advanced_statusbar_location : "bottom",

				theme_advanced_resizing : true,
				theme_advanced_resize_horizontal : false,

				language : "nl",

				paste_create_paragraphs : false,
				paste_create_linebreaks : false,
				paste_use_dialog : true,
				paste_auto_cleanup_on_paste : true,
				paste_convert_middot_lists : false,
				paste_unindented_list_class : "unindentedList",
				paste_convert_headers_to_strong : true,
				paste_insert_word_content_callback : "convertWord"

			});
		}
	}
	catch(e){
	}

	function convertWord(type, content) {
		switch (type) {
			// Gets executed before the built in logic performes it's cleanups
			case "before":
				content = content.toLowerCase(); // Some dummy logic
				break;

			// Gets executed after the built in logic performes it's cleanups
			case "after":
				content = content.toLowerCase(); // Some dummy logic
				break;
		}

		return content;
	}

	function loader(){
		init_listview();
		init_editform();
	}

	function init_listview(){
		var listview = document.getElementById("listview")
		if( listview){
			if(listview.getAttribute("action").length){
				var listview_tbody = listview.getElementsByTagName("tbody")[0];
				var rows = listview_tbody.getElementsByTagName("tr");
				for(r=0;r<rows.length;r++){
					var row = rows[r];
					row.table = listview;
					row.onmouseover = hover;
					row.onmouseout = unhover;
					row.onclick = listview_row_click;
				}
			}
		}
	}

	function init_editform(){
		var editform = $("editform");
		if( editform && editform.tagName && editform.tagName.toLowerCase() == "form" ){

			editform.onsubmit = function(){return submit(this)};;

			if(pageframes = editform.getElementsByClassName("pageframe")){
				for(p=0;p<pageframes.length;p++)init_pageframe(pageframes[p]);
			}

			var elements=editform.elements;
			for(var e=0; e<elements.length;e++){
				var element=elements[e];
				element.onchange = function(){return validate_field(this)};;
			}

			if( datepickers = editform.getElementsByClassName("datepicker")) {
				init_datepickers(datepickers);
			}

			var options=editform.getElementsByTagName("a");

			for(var o=0; o<options.length;o++){
				var option=options[o];
				if(! option.onclick && option.parentNode.getElementsByTagName("input")){
					option.onclick = function(){
						input = this.parentNode.getElementsByTagName("input")[0];
						input.checked = ! input.checked;
						if(input.onclick) input.onclick();
					};
				}
				option.onmouseover = hover;
				option.onmouseout = unhover;
			}
		}
	}
		
	init_datepickers = function(coll){
		if(! obj_calendar.panel) obj_calendar.init();
		
		for (t=0; t<coll.length; t++){
			button = coll[t];
			input = button.previous();
			display = input.previous();
			
			input.date_format = input.getAttribute('date_format');
			display.date_format = display.getAttribute('date_format');
			
			if(parseInt(input.value.replace(/-/g,''))){
				obj_calendar.read_date(input.value);
				display.value = obj_calendar.format_date(display.date_format);
			}
			
			button.target = input;
			display.target = input;
			input.display = display;
			
			button.onclick = obj_calendar.show;
			display.onchange = obj_calendar.read_display;
		}
	}
	
	function init_pageframe(pageframe){
		pageframe.head = pageframe.getElementsByClassName("pageframe_head")[0];

		if(pageframe.head)
			pageframe.head.buttons = pageframe.head.getElementsByTagName("button");
		else{
			pageframe.wizard = pageframe.getElementsByClassName("pageframe_wizard")[0];
			if(pageframe.wizard){
				pageframe.wizard.buttons = pageframe.wizard.getElementsByTagName("button");
				pageframe.wizard.head = pageframe.parentNode.getElementsByTagName("h1")[0];

				pageframe.wizard.head.caption = pageframe.wizard.head.innerHTML;
			}
		}

		pageframe.body = pageframe.getElementsByClassName("pageframe_body")[0];
		pageframe.body.pages = pageframe.body.getElementsByClassName("pageframe_page");

		for(b=0;b<pageframe.body.pages.length;b++){
			addClass(pageframe.body.pages[b],"hidden");
			if(pageframe.head){
				button = pageframe.head.buttons[b];
				button.pageframe = pageframe;
				button.index = b;
				button.onclick = pageframe_pageselect;
			}
		}
		if(pageframe.head)pageframe.head.buttons[0].onclick();

		for(b=0;b<pageframe.wizard.buttons.length;b++){
			button = pageframe.wizard.buttons[b];
			button.pageframe = pageframe;
			button.index = b;
			button.onclick = pageframe_wizardstep;
		}
		if(pageframe.wizard)pageframe.wizard.buttons[0].onclick();
	}


	function pageframe_pageselect(){
		if(isdef(this.pageframe.active_page_index)){
			active_page_index = this.pageframe.active_page_index
			remClass(this.pageframe.head.buttons[active_page_index],"selected",true);
			addClass(this.pageframe.body.pages[active_page_index],"hidden");
		}

		addClass(this, "selected", false);
		remClass(this.pageframe.body.pages[this.index],"hidden",true);
		this.pageframe.active_page_index = this.index;
	}

	function pageframe_wizardstep(){
		var step = this.index ? 1 : -1;

		if(isdef(this.pageframe.active_page_index)){
			var active_page_index = this.pageframe.active_page_index
			var active_page = this.pageframe.body.pages[active_page_index];
			if(step ==1){
				if(! validate_page(active_page)) return;
			}

			addClass(active_page,"hidden");
			active_page_index += step;
		}
		else{
			active_page_index = 0;
		}

		if(active_page_index==1){
			this.pageframe.wizard.steps = pageframe_wizard_count_steps(this.pageframe);
			this.pageframe.wizard.realstep = active_page_index + 1;
		}
		else{
			this.pageframe.wizard.realstep += step;
		}
		var target = this.pageframe.body.pages[active_page_index];
		while(target.style.display == "none" ){
			 active_page_index += step;
			 target = this.pageframe.body.pages[active_page_index];
		}
		remClass(target,"hidden",true);

		this.pageframe.active_page_index = active_page_index;
		this.blur();

		this.pageframe.wizard.head.innerHTML = this.pageframe.wizard.head.caption +
			(active_page_index>=1
			? " stap " + this.pageframe.wizard.realstep + " van " + (this.pageframe.wizard.steps)
			:"")



		this.pageframe.wizard.buttons[0].disabled = active_page_index == 0;
		var last_page = active_page_index >= this.pageframe.body.pages.length-1;
		this.pageframe.wizard.buttons[1].disabled = last_page;

		if(last_page) complete_shopping_cart(document.forms[0]);

	}

	function pageframe_wizard_count_steps(pageframe){
		var steps = 0;
		for(p=0 ; p<pageframe.body.pages.length ; p++){
			page = pageframe.body.pages[p];
			if(page.style.display == "" ) steps++;
		}

		return steps;
	}

	function test_check_count(id){
		var list = document.getElementById(id);
		if(undef(list.testvalue)) return;

		var check_count = 0;
		var inputs = list.getElementsByTagName("input");

		for(var i=0; i < inputs.length;i++){
			input=inputs[i];
			if(input.checked){
				check_count++;
				if(check_count > list.testvalue){
					input.checked = false;
				}
			}
		}
	}

	function handle_product_matrix(obj,test_array){
		var product_matrix = obj.parentNode.parentNode
		if(product_matrix.getElementsByTagName("input")){
			input = product_matrix.getElementsByTagName("input")[0];
			input.value = obj.getAttribute("value");
		}

		for(t=0;t<test_array.length;t+=3){
			var id = test_array[t];
			var value = parseInt(obj.getAttribute(test_array[t+1]))
			var display  = eval(value + test_array[t+2]);
			var target = document.getElementById(id);
			target.style.display =  display  ? "" : "none";
			target.testvalue = value;
		}

		if(product_matrix.activeOption) remClass(product_matrix.activeOption, "active",true);
		addClass(obj, "active")
		product_matrix.activeOption = obj;
		test_check_count("werkvelden");
	}

	function  complete_shopping_cart(form){

		var memberships = form.elements["/businessclub2company/IDbusinessclub\[\]"];
		for(m=0;m<memberships.length;m++){
			if(memberships[m].checked) var is_member = true;
		}

		var product_matrix = document.getElementById("product_matrix");
		var activeOption = product_matrix.activeOption;
		var id = activeOption.getAttribute("value");
		var label = activeOption.getAttribute("label");
		var basis = parseFloat(activeOption.getAttribute("prijs"));
		var korting = is_member ? parseFloat(activeOption.getAttribute("korting")) : 0;

		//banners
		var banner_text = "";
		var banner_kosten = 0;
		var banners = document.getElementById("banners").getElementsByTagName("input");
		for(b=0; b<banners.length;b++){
			banner = banners[b];
			if(banner.checked){
				banner_prijs = banner.getAttribute("prijs");
				banner_text += "<tr><td>" + banner.getAttribute("label") + "</td><td>&euro;</td><td style=\"text-align:right\">" + currency(banner_prijs) + "</td></tr>";
				banner_kosten += parseFloat(banner_prijs);
			}
		}


		var totaal = basis - korting + banner_kosten ;

		var bestelling =
			"<dl><dt>basisabonnement</dt>" +
			"<dd>" + label + "</dd>" +
			"<dd><table>" +
				"<tr><td>basisprijs</td><td>&euro;</td><td style=\"text-align:right\">" + currency(basis) + "</td></tr>" +
			(korting ? "<tr><td>korting bedrijfsvereniging</td><td>&euro;</td><td style=\"text-align:right\">" + currency(korting) + "</td></tr>" : "") + "</table></dd>" + 
			(banner_text.length?"<dt>Banners</dt><dd><table>" + banner_text + "</table></dd>": "") +
			"<dt>totaal</dt>" +
			"<dd><table>" +
				"<tr><td>excl. BTW</td><td>&euro;</td><td style=\"text-align:right\">" + currency(totaal) + "</td></tr>" +
				"<tr><td>BTW 19%</td><td>&euro;</td><td style=\"text-align:right\">" + currency(totaal * 0.19) + "</td></tr>" +
				"<tr><td>incl. BTW</td><td>&euro;</td><td style=\"text-align:right\">" + currency(totaal * 1.19) + "</td></tr>" +
			"</table></dd>" +
			"<dt></dt></dl>";

		document.getElementById("summary").innerHTML = bestelling;
	}


	function reset_form(id){
		document.getElementById(id).reset();
	}

	function submit(form){
		
		
		var pages = document.getElementsByClassName("pageframe_page", $(form));
		if(pages.length){
			for(var p=0; p < pages.length && validate_page(pages[p]);p++);

			// Als alle pages positief valideren wordt het form gesubmit, anders dus niet.
			return p >= pages.length;
		}
		else{
			for(var e=0; e < form.elements.length && validate_field(form.elements[e]);e++);
	
			// Als alle elementen zijn getest wordt het form gesubmit, anders dus niet.
			return e >= form.elements.length;	
		}
	}

	function validate_page(page){

		if(page.style.display == "none") return true;
		
		elements = page.getElementsByTagName("*")

		for(var e=0; e < elements.length && validate_field(elements[e]);e++);

		// Als alle elementen zijn getest wordt het form gesubmit, anders dus niet.
		return e >= elements.length;
	}


	function validate_field(element){
		var result = true;

		if(element.getAttribute("error")){
			var error_msg = element.getAttribute("error");
		}
		else{
			var label = element.parentNode.getElementsByTagName("label")[0];
			if(label) label = label.lastChild.nodeValue ;
		}

		var required = element.getAttribute("required")=="true";
		if(required && (! element.value.length)) {
			var msg = "'" + label+ "' is een verplicht veld.";
			result = false;
		}

		var minlength = element.getAttribute("minlength");
		if(minlength && (element.value.length < minlength)) {
			var msg = "'" + label + "' moet minimaal " + minlength + " karakters bevatten.";
			result = false;
		}

		if(element.getAttribute("required")=="checkbox"){
			var id = element.id ;
			var num_checked = 0;
			var values = element.form.elements[id+ "[]"];
			
			if(values.length){
				for(v=0;v<values.length;v++){
					if(values[v].checked){
						num_checked ++;
					}
				}
			}
			else{
				num_checked = values.checked			
			}
			
			if(! num_checked) {
				result = false;
				var msg = "U dient minimaal 1 optie in de lijst met '" + element.value + "' te selecteren.";
			}
		}
		if(element.className=="email" && required){
			var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
			var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
			result = (!r1.test(element.value) && r2.test(element.value));
			msg = "'" + label +"' is geen geldig emailadres.";
		}

		ref_id = element.getAttribute("validate");
		if(ref_id){
			ref_element = document.getElementById(ref_id);
			if(ref_element){
				var ref_label = ref_element.parentNode.getElementsByTagName("label")[0];
				if(ref_label) ref_label = ref_label.lastChild.nodeValue;
				result = ref_element.value == element.value;
				msg = "'" + ref_label + "' en '" + label + "' komen niet overeen." ;
			}
		}

		if(! result ) {
			element.scrollIntoView();
			element.select();
			alert(error_msg ? error_msg : msg);
		}

		return result;

	}


	function hover(){
		try{
			this.className+=" hover ";
		}
		catch(e){
		}
	}

	function unhover(){
		try{
			this.className=this.className.replace(/hover/g, "")
		}
		catch(e){
		}
	}

	function listview_row_click(){
		var action = this.table.getAttribute("action");
		var target = this.table.getAttribute("target");

		if(target.length){
			target = frames[target];

			if(! target){
				target = window.open("","targetframe","width=600,height=400,resizable=yes");
			}
		}
		else{
			target = document;
		}

		if(action.length){
			var SID = document.documentElement.getAttribute("SID");
			var recordid = this.getAttribute("recordid");
			url = this.table.getAttribute("action") + "&id=" + recordid + (SID ? "&" + SID : "") ;
			target.location = url;
		}
	}



function get_substring(mainstring, substring_name ) {

	var start = mainstring.indexOf( substring_name + "=" );
	var len = start + substring_name.length + 1;

	if ( ( !start ) && ( substring_name != mainstring( 0, substring_name.length ) ) ){
		return null;
	}

	if ( start == -1 ) return null;
	var end = mainstring.indexOf( "&", len );

	if ( end == -1 ) end = mainstring.length;
	return unescape( mainstring.substring( len, end ) );
}


function toggle_enabled(obj,tagName){
	id = obj.parentNode.getElementsByTagName(tagName)[0].innerHTML.toLowerCase().replace(/\s/g,"_");
	var div = document.getElementById(id);
	if(div)
		div.style.display = obj.checked ? "" : "none";

}

function preview(){
	form = document.getElementsByTagName("form")[0];
	tmp_action = form.action;
	
	preview_window = window.open("","preview_window","width=600,height=400,status=no,resizable=yes,menu=no");
	action = this.location.pathname + "?request=preview&class=nomenu";
	
	try{
		form.action = action;
		form.target = "preview_window";	
		form.submit.click();
	}
	
	catch(e){}
	
	preview_window.focus();
	
	form.target = "";
	form.action = tmp_action;
}





function currency(number){
	number = Math.round(number * 100)/100 + "";
	var parts = number.split(".");
	if(parts[1]){
		if(parts[1].length == 1) parts[1]+="0";
	}
	else{
		parts[1]="00"
	}
	result = parts[0] + "," + parts[1];
	return result;
}
