var Profile_Handler = Class.create();

Profile_Handler.prototype =
{

	/**
	 * @desc: Constructor
	 *
	 * @param: $template_dir
	 * @param: $form_id
	 */
	initialize : function ($template_dir , $form_id, $user_id)
	{
		this.$arr_max = new Array();

		this.$arr_min = new Array();

		this.$arr_required = new Array();

		this.$form = $($form_id);
		
		this.$user_id = $user_id;

		//this.$template_dir = $template_dir;
		this.$template_dir = '/template/default/';
		
		this.$landen = new Array(); 
		this.$types = 0;
		this.$scholen = 0;
		this.$organisaties = 0;
		
		

	} ,

	check_functions : function(e){
		var valid = false;
		
		$$('.user_functions input').each(function(input){
			if(input.checked){
				valid = true;
			}
		});
		
		$oProfileHandler.check_parent_function(null);
		
		if(valid){
			$oProfileHandler.approve('chk_s');
		}else{
			$oProfileHandler.trigger_error('chk_s');
		}
		return valid;
	},
	
	/*
	 * parent checkbox checken of op indeterminate
	 */
	check_parent_function : function(e){
		$$('#user_functions tr').each(function(tr){
			var row_id = tr.id;
			if(row_id != ''){
				for(var i=0; i<groups.length; i++){
					var group = groups[i];
					//console.log('#'+row_id+' .'+group);
					var total = 0;
					var checked = 0;
					//loop alle checkboxen tr met id = row_id en waarvan de group = group 
					$$('#'+row_id+' .'+group+' input[type=checkbox]').each(function(item){
						total++;
						if(item.checked)
							checked++;
					});
					//console.log('#'+row_id+' .'+group+' : total:'+total+' , checked:'+checked);
					$$('#'+row_id+' .parent_'+group+' input[type=checkbox]').each(function(item){
						if(checked == total){
							item.checked = true;
							item.indeterminate = false;
						}else{
							item.checked = false;
							item.indeterminate = true;
						}
						if(checked == 0){
							item.checked = false;
							item.indeterminate = false;
						}
					});
				}
			}
		});
	},

	/**
	 * @desc: Check an element by the id
	 *
	 * @param: string $element_id
	 */
	check_element : function ($element_id)
	{
		if(!$($element_id)){
			return true;
		}
		//console.log($($element_id).tagName+" || "+$F($element_id));
		
		if($element_id == 'idLocationList_'){
			if($F('idLocationList_') == ''){
				this.trigger_error('idHidLocation_');
				return false;
			}else{
				this.approve('idHidLocation_');
				return true;
			}
		}
		
		if($element_id == 'idHidLocation_'){
			if($F('idHidLocation_') == '' || $F('idHidLocation_') == 0){
				this.trigger_error('idHidLocation_');
				return false;
			}else{
				this.approve('idHidLocation_');
				return true;
			}
		}
		
		if ($element_id == 'idAfzender')
		{
			if ($F($element_id) == '' || emailcheck($F($element_id)))
			{
				// do nothing, requiredness will be checked as usual
			}
			else
			{
				this.trigger_error($element_id);
				return false;
			}
		}
		
		if (in_array($element_id , this.$arr_required) == true)
		{
			try{
				var $value = $F($element_id);
				//console.log($value);
			}catch(ex){
				return true;
			}
			if(!($F($element_id) instanceof Array) && $value != null){
				$value = $value.strip();
			}
			
			switch($element_id)
			{
				case 'idFirstName':
					$is_valid_first_name = this.is_invalid($F('idFirstName'));
					if($F('idFirstName').strip() == '' || $is_valid_first_name == true){
						this.trigger_error('idFirstName');
						return false; 
					}else{
						this.approve('idFirstName');
						return true;
					}
					break;
				case 'idSurname':
					$is_valid_first_name = this.is_invalid($F('idSurname'));
					if($F('idSurname').strip() == '' || $is_valid_first_name == true){
						this.trigger_error('idSurname');
						return false; 
					}else{
						this.approve('idSurname');
						return true;
					}
					break;
				case 'idPostalCodeNL':
				case 'idPostalCode': 
					if($F('idCountry') != '1' && $F('idCountry') != '2' && $F('idCountry') != '' && ($F('idPostalCode') != '' || $F('idPostalCodeNL') != '' )){
						this.approve('idPostalCode');
						return true;
					}
					break;
				case 'idLocation_':
					if($value == '' && ($F('idLocationList_') == '' || $F('idLocationList_') == null)){
						this.trigger_error('idHidLocation_');
						return false; 
					}else{
						this.approve('idHidLocation_');
						return true;
					}
					break;
				case 'idCourses':
					if($value[0] == 2 && $value.length > 1){
						this.trigger_error($element_id);
						return false;
					}
					if($value.length > 7){
						this.trigger_error($element_id);
						return false;
					}
					break;
				case 'idDay':
					if($value == '' || $F('idMonth') == '' || $F('idYear') == ''){
						this.trigger_error($element_id);
						return false;
					}
					break;
				case 'idCountryOther':
					if($($element_id).value == ''){
						this.trigger_error('idCountryOther');
					}else{
						this.approve('idCountryOther');
					}
					break;
				case 'idMSN':
					if($($element_id).value != ''){
						if(!emailcheck($($element_id).value)){
							$('idMSN').setStyle({backgroundColor:'#E6AB8C'});
							$('idMSN').setStyle({borderColor:'#A92010'});
							return false;
						} else {
							$('idMSN').setStyle({backgroundColor:'#F7F7F7'});
							$('idMSN').setStyle({borderColor:'#CCCCCC'});
							this.approve('idMSN');
							return true;
						}
					} else {
						this.approve('idMSN');
						return true;
					}
				break;
				default : 
					if ($($element_id).type == 'checkbox'){
						if ($($element_id).checked){
							this.approve($element_id);
							return true;
						}else{
							this.trigger_error($element_id);
							return false;
						}
					}else{
						if ($value == '' || $value == "-1"){
							this.trigger_error($element_id);
							return false;
						}else{
							this.approve($element_id);
							return true;
						}
					}
			}
		}
		
		if($value != ""){
			this.approve($element_id);
			return true;
		}else{
			this.trigger_error($element_id);
			return false;
		}
		
		return true;
	} ,


	/**
	 * @desc: Check a form
	 *
	 * @author: KVDH
	 */
	check_form : function ()
	{
		var $total	= this.$arr_required.length;
		var $submit	= true;

		for (var $i = 0; $i < $total; $i++)
		{
			if (this.check_element(this.$arr_required[$i]) == false)
			{
				$submit = false;
			}
		}
		return $submit;
	} ,


	/**
	 * @desc: Get the status image
	 *
	 * @author: KVDH
	 *
	 * @param: string $element_id
	 *
	 * @return: object / bool
	 */
	get_image : function ($element_id)
	{
		var $row = $('row_' + $element_id);

		if ($row)
		{
			var $arr_image	= $row.getElementsByTagName('img');
			var $total		= $arr_image.length;

			for (var $i = 0; $i < $total; $i++)
			{
				if ($arr_image[$i].className == 'status')
				{
					return $arr_image[$i];
				}
			}
		}

		return false;
	} ,


	/**
	 * @desc: Get the required elements
	 *
	 * @author: KVDH
	 */
	get_required_elements : function ()
	{
		var $arr_element	= this.$form.elements;
		var $total			= $arr_element.length;
	
		for (var $i = 0; $i < $total; $i++)
		{
			if ($arr_element[$i].type == 'hidden' && $arr_element[$i].name == 'required')
			{
				this.$arr_required.push($arr_element[$i].value);
			}
		}
	} ,

	is_invalid : function (sText)
	{
		
		var invalid_chars = "&?!=+;,/:<>%[]$*_)}{(#@&|��0123456789";
		var IsInvalid=false;
		var Char;
	
		if(sText.length <= 1)
		{
			IsInvalid = true;
		}
		else
		{
			for (i = 0; i < sText.length && IsInvalid == false; i++) 
			{ 
		  	Char = sText.charAt(i); 
		  	
		  	if (invalid_chars.indexOf(Char) != -1) 
		     {
		    	 IsInvalid = true;
		     }
			}
		}
		
		
		return IsInvalid;   
	},
	
	/**
	 * @desc: Approve an element
	 *
	 * @param: string $element_id
	 */
	approve : function ($element_id)
	{
		var $image = this.get_image($element_id);
		
		if ($image)
		{
			$image.alt	= 'success.gif';
			$image.src	= this.$template_dir + '/img/icons/success.gif';
			
			$('row_' + $element_id).removeClassName('error');
		}
	} ,
	
	/**
	 * @desc: Clear approval status
	 * 
	 * @param: string $element_id
	 */
	clear : function ($element_id)
	{
		var $image = this.get_image($element_id);
		
		if ($image)
		{
			$image.alt	= '';
			$image.src	= this.$template_dir + '/img/icons/empty.gif';
			
			$('row_' + $element_id).removeClassName('error');
		}
	} ,
	
	/**
	 * @desc: Trigger an error
	 *
	 * @param: string $element_id
	 */
	trigger_error : function ($element_id)
	{
		var $image = this.get_image($element_id);
		
		if ($image)
		{
			$image.alt	= 'error.gif';
			$image.src	= this.$template_dir + '/img/icons/error.gif';
			
			$('row_' + $element_id).addClassName('error');
		}
	},
	
	add_school : function(e,type_id,postal_code,school_id){
		//console.log($oProfileHandler.$scholen);
		var table = Builder.node('table', {className : 'form'});
		var tbody = Builder.node('tbody');
		var tr_postcode = Builder.node('tr', {id : 'row_postal_code_'+type_id});
		var td_status_postcode = Builder.node('td', {className : 'status'});
		var img_status_postcode = Builder.node('img', {className : 'status', src : "/template/default/img/icons/required.gif"});
		var td_label_postcode = Builder.node('td', {className : 'label'});
		var td_postcode = Builder.node('td');
		
		var div_postcode_desc = Builder.node('div', {className : 'form_description'});
		var lbl_postcode_desc = Builder.node('label');
		lbl_postcode_desc.setAttribute('for', 'postal_code_'+type_id);
		lbl_postcode_desc.innerHTML = lang_text('postcode_info');
		
		var tr_school = Builder.node('tr',{id : 'row_scholen_'+type_id}).setStyle({display:'none'});
		var td_status_school = Builder.node('td', {className : 'status'});
		var img_status_school = Builder.node('img', {className : 'status', src : "/template/default/img/icons/required.gif"});
		var td_label_school = Builder.node('td', {className : 'label'});
		var td_school = Builder.node('td');
		
		var lbl_postcode = Builder.node('label');
		lbl_postcode.innerHTML = lang_text('postcode');
		var txt_postcode = Builder.node('input', {id : 'postal_code_'+type_id, type : 'text', className : 'text', value : postal_code});
		
		var img_load = Builder.node('img', {id : 'img_load_school'+type_id, src: '/template/default/img/uploading.gif'}).setStyle({position:'relative',left:'5px',top:'5px'});
		var lbl_select = Builder.node('label', {id : 'lbl_scholen_'+type_id, name : 'type['+type_id+'][street]'});
		lbl_select.innerHTML = "Kies een school: ";
		var select = Builder.node('select',{name : 'type['+type_id+'][school]', id : 'scholen_'+type_id, className : 'scholen' }).setStyle({height:'20px'});
		
		td_status_postcode.appendChild(img_status_postcode);
		td_status_school.appendChild(img_status_school);
		
		td_label_postcode.appendChild(lbl_postcode);
		div_postcode_desc.appendChild(lbl_postcode_desc);
		div_postcode_desc.appendChild(Builder.node('br'));
		div_postcode_desc.appendChild(txt_postcode);
		td_postcode.appendChild(div_postcode_desc);
		
		td_label_school.appendChild(lbl_select);
		td_school.appendChild(select);
		td_school.appendChild(img_load);
		
		tr_postcode.appendChild(td_status_postcode);
		tr_postcode.appendChild(td_label_postcode);
		tr_postcode.appendChild(td_postcode);
		tbody.appendChild(tr_postcode);
		tr_school.appendChild(td_status_school);
		tr_school.appendChild(td_label_school);
		tr_school.appendChild(td_school);
		
		tbody.appendChild(tr_school);
		table.appendChild(tbody);
		
		if($('type_'+type_id))
			$('type_'+type_id).appendChild(table);
		
		if(postal_code.length == 4){
			$oProfileHandler.approve(txt_postcode.id);
		}else{
			$oProfileHandler.trigger_error(txt_postcode.id);
		}
		
		Event.observe(txt_postcode,'blur',$oProfileHandler.get_schools.bindAsEventListener(this,school_id,type_id));	
		Event.observe(txt_postcode,'keydown',$oProfileHandler.get_schools.bindAsEventListener(this,school_id,type_id));
		if(postal_code != "" && school_id != "" && school_id != -1){
			$oProfileHandler.get_schools(null,school_id,type_id,postal_code);
		}
		
	},
	
	rem_schools : function (e,type_id,type){
		var type = type != undefined ? type : "";
		var naam = $('txt_school_naam_'+type_id) ? ' ('+$('txt_school_naam_'+type_id).value+') ' : "";
		if(confirm(type+naam+' verwijderen?')){
			if($('type_'+type_id)){
				$('type_'+type_id).remove();
			}
			if($('rem_school_'+type_id)){
				$('rem_school_'+type_id).remove();
			}
			
			//console.log(type);
			if(type == "Firma of organisatie"){
				$oProfileHandler.$organisaties--;
			}else{
				$oProfileHandler.$scholen--;
			}
			
			//remove tinyMCE editor
			if(tinyMCE.get("txt_school_about_"+type_id) != undefined){ 
				tinyMCE.execCommand('mceRemoveControl', false, "txt_school_about_"+type_id); 
			}
			$oProfileHandler.$types--;
		}
	},

	get_schools : function (e,school_id,type_id,postal_code){
		//console.log(school_id);
		//console.log(e);
		$('scholen_'+type_id).setStyle({display:'inline'});
		if(e != null){
			if(e.type == "blur"){
				$element = Event.findElement(e);
				$postal_code = $element.value;
				if($postal_code == ''){
					return false;
				}
			}else if(e.type == "keydown" && e.keyCode == 13){
				$('postal_code_'+type_id).blur();
				return false;
			}else{
				return false;
			}
		}else{
			$postal_code = postal_code;
		}
		
		if($('row_scholen_'+type_id)){
			$('row_scholen_'+type_id).setStyle({display:'table-row'});
		}
		if($('scholen_'+type_id)){
			$('scholen_'+type_id).innerHTML = "";
		}
		if($('postal_code_info_'+type_id)){
			$('postal_code_info_'+type_id).remove();
		}
		if($('img_load_school'+type_id)){
			$('img_load_school'+type_id).setStyle({display:'inline'});
		}
		if($('postal_code_info_'+type_id)){
			$('postal_code_info_'+type_id).remove();
		}
		$url = "/ajax/find_school.php?type=postal_code&choice=1&user_id="+this.$user_id;
		$request = new Ajax.Request($url,{
			method:'get',
			parameters : {q : $postal_code},
			onFailure: function(){
				console.log('fail');
				console.log($request);
			},
			onSuccess: function(transport){
				$response = transport.responseText.evalJSON();
				$error = $response.errors;
				$response = $response.results;
				
				if($('img_load_school'+type_id)){
					$('img_load_school'+type_id).setStyle({display:'none'});
				}
				
				if($response != undefined && $response.length > 0){
					
					$('lbl_scholen_'+type_id).setStyle({display:'inline'});
					for(i = 0; i < $response.length; i++){
						
						$id = $response[i].id != null ? $response[i].id : -1;
						$extra = $response[i].extra != null ? $response[i].extra : "";
						$value = $response[i].info != null ? $response[i].info : "";
						$info = $response[i].value != null ? $response[i].value : "";
						$about = $response[i].about != null ? $response[i].about : "";
						
						$option = document.createElement('option');
						$option.setAttribute('id',$id);
						$option.setAttribute('value',$id);
						$option.setAttribute('objValue',$value.strip());
						$option.setAttribute('objExtra',$extra.strip());
						$option.setAttribute('objInfo',$info.strip());
						$option.setAttribute('objabout',$about.strip());
						
						switch($id){
							case '-1' : 
								$option.selected = true;
								$option.setAttribute('selected', 'selected');
								$option.innerHTML =$info;
								break;
							case '-2' :
								$option.innerHTML = $info;
								break;
							default : 
								if(school_id == $id){
									$option.selected = true;
									$option.setAttribute('selected', 'selected');
									$data = $response[i];
								}
								$option.innerHTML = $value +'<span id="school_'+ $id +'_info" style="font-weight:100;">, '+ $info +'</span>';
								
						}
						$('scholen_'+type_id).appendChild($option);
					}
					
					if($('scholen_'+type_id).value != '' && $('scholen_'+type_id).value != '-1'){
						$oProfileHandler.approve($('scholen_'+type_id).id);
					}else{
						$oProfileHandler.trigger_error($('scholen_'+type_id).id);
					}
					
					Event.observe($('scholen_'+type_id),'change',$oProfileHandler.school_selected.bindAsEventListener(this,school_id,type_id,null));
					if(school_id != null && school_id != -1){
						$info = $data.info;
						$value = $data.value;
						$data.value = $info;
						$data.info = $value;
						$oProfileHandler.school_selected(null,school_id,type_id,$data);
					}
				}else{
					var info_div = document.createElement('div');
					info_div.setAttribute('id','postal_code_info_'+type_id);
					var txt_no_schools = lang_text('postcode_no_schools');
					txt_no_schools = txt_no_schools.replace('%1', $postal_code);
					info_div.appendChild(document.createTextNode(txt_no_schools));
					$('scholen_'+type_id).setStyle({display:'none'});
					$('scholen_'+type_id).parentNode.appendChild(info_div);
				}
				
			}
		});
	},
	
	add_type : function(e){
		
		var div = Builder.node('div', {id : 'type_'+$oProfileHandler.$types}).setStyle({width:'100%'});
		
		var table = Builder.node('table');
		var tbody = Builder.node('tbody');
		var tr = Builder.node('tr');
		var td_status = Builder.node('td', {className : 'status'});
		var td_choice = Builder.node('td', {className : 'label'});
		td_choice.appendChild(Builder._text(lang_text('make_your_choice')));
		var td_choices = Builder.node('td');
		
		var rdb_school_vl = Builder.node('input',{ className : "checkbox", id : "idProChoiceSchoolVl_"+$oProfileHandler.$types, name : "rdbTypeChoice_"+$oProfileHandler.$types, type : "radio", value : "school_vl"});
		var lbl_school_vl = Builder.node('label');
			lbl_school_vl.setAttribute('for',"idProChoiceSchoolVl_"+$oProfileHandler.$types);
			lbl_school_vl.appendChild(document.createTextNode(lang_text('flemish_school')));
		var rdb_school_nvl = Builder.node('input',{className : "checkbox", id : "idProChoiceSchoolNVl_"+$oProfileHandler.$types, name : "rdbTypeChoice_"+$oProfileHandler.$types, type : "radio", value : "school_vl"});
		var lbl_school_nvl = Builder.node('label');
			lbl_school_nvl.setAttribute('for',"idProChoiceSchoolNVl_"+$oProfileHandler.$types);
			lbl_school_nvl.appendChild(document.createTextNode(lang_text('non_flemish_school')));
		var rdb_school_organisation = Builder.node('input',{ className : "checkbox", id : "idProChoiceOrganisation_"+$oProfileHandler.$types, name : "rdbTypeChoice_"+$oProfileHandler.$types, type : "radio", value : "school_vl"});
		var lbl_school_organisation = Builder.node('label');
			lbl_school_organisation.setAttribute('for',"idProChoiceOrganisation_"+$oProfileHandler.$types);
			lbl_school_organisation.appendChild(document.createTextNode(lang_text('no_school')));
		Event.observe(rdb_school_vl,'click',$oProfileHandler.type_changed.bindAsEventListener(this,0,$oProfileHandler.$types,lang_text('flemish_school'),"",-1));
		Event.observe(rdb_school_nvl,'click',$oProfileHandler.type_changed.bindAsEventListener(this,1,$oProfileHandler.$types,lang_text('non_flemish_school'),"",-1));
		Event.observe(rdb_school_organisation,'click',$oProfileHandler.type_changed.bindAsEventListener(this,2,$oProfileHandler.$types,lang_text('no_school'),"",-1));
		
		td_choices.appendChild(rdb_school_vl);
		td_choices.appendChild(lbl_school_vl);
		td_choices.appendChild(Builder.node('br'));
		td_choices.appendChild(rdb_school_nvl);
		td_choices.appendChild(lbl_school_nvl);
		td_choices.appendChild(Builder.node('br'));
		td_choices.appendChild(rdb_school_organisation);
		td_choices.appendChild(lbl_school_organisation);
		td_choices.appendChild(Builder.node('br'));
		
		tr.appendChild(td_status);
		tr.appendChild(td_choice);
		tr.appendChild(td_choices);
		
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div.appendChild(table);
		$('pro_type').appendChild(div);
		
		var rem_a = Builder.node('a', {href : "#add_school"}, [
			Builder.node('img', {src : this.$template_dir+"img/icons/delete.png", alt : ""}),
			" "+lang_text('remove')
		]).addClassName("button").addClassName("img_button");
		Event.observe(rem_a,"click",$oProfileHandler.rem_schools.bindAsEventListener(null,$oProfileHandler.$types));
		
		var rem_div = Builder.node('div', {id : 'rem_school_'+$oProfileHandler.$types}, rem_a).setStyle({textAlign : "center"});
		
		$('pro_type').appendChild(rem_div);
		
		$oProfileHandler.$types++;
	},
	
	type_changed : function(e,$type,$type_id,type,$postal_code,$school_id){
		//console.log($type_id);

		var div_school_i = Builder.node('div', {id : "school_"+$type_id});
		var h3 = document.createElement('h4');
		
		var hidden_type = Builder.node('input',{type : 'hidden', id : 'hidden_type_'+$type_id, name : 'type['+$type_id+'][type]'});
		//console.log(hidden_type);
		
		if($type==0){
			$oProfileHandler.$scholen++;
			hidden_type.setAttribute('value','vl');
			h3.appendChild(document.createTextNode(type));
			div_school_i.appendChild(h3);
			$('type_'+$type_id).innerHTML = "";
			$('type_'+$type_id).appendChild(div_school_i);
			
			$oProfileHandler.add_school(null,$type_id,$postal_code,$school_id);
			
			$oProfileHandler.$arr_required.push('postal_code_'+$type_id);
			Event.observe($('postal_code_'+$type_id),'keyup',function(e){
				if(Event.findElement(e).value != ""){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
			
			//console.log(this.$arr_required);
			this.$arr_required.push('scholen_'+$type_id);
			//console.log(this.$arr_required);
			
			Event.observe($('scholen_'+$type_id),'change',function(e){
				if(Event.findElement(e).value != '-1'){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
					
			
			
		}else if($type==1){
			$oProfileHandler.$scholen++;
			hidden_type.setAttribute('value','nvl');
			h3.appendChild(document.createTextNode(type));
			div_school_i.appendChild(h3);
			$('type_'+$type_id).innerHTML = "";
			$('type_'+$type_id).appendChild(div_school_i);
			
			var input_id = Builder.node('input', {type:'hidden', value : $school_id, name : 'type['+$type_id+'][school]'});
			$('type_'+$type_id).appendChild(input_id);
			
			$oProfileHandler.school_selected(null,"",$type_id,null);
			
			this.$arr_required.push('txt_school_naam_'+$type_id);
			
			Event.observe($('txt_school_naam_'+$type_id),'keyup',function(e){
				if(Event.findElement(e).value != '-1'){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
			
			Event.observe($('select_school_land_'+$type_id),'change',function(e){
				if(Event.findElement(e).value != '' && Event.findElement(e).value != '-1'){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
			
		}else if($type==2){
			$oProfileHandler.$organisaties++;
			hidden_type.setAttribute('value','organisation');
			h3.appendChild(document.createTextNode(type));
			div_school_i.appendChild(h3);
			$('type_'+$type_id).innerHTML = "";
			$('type_'+$type_id).appendChild(div_school_i);
			
			var input_id = Builder.node('input', {type:'hidden', value : $school_id, name : 'type['+$type_id+'][organisation]'});
			$('type_'+$type_id).appendChild(input_id);
			
			$oProfileHandler.school_selected(null,$type,$type_id,null);
			
			this.$arr_required.push('txt_school_naam_'+$type_id);
		}
		
		$('type_'+$type_id).appendChild(hidden_type);
		
		if(!$('rem_school_'+$type_id))
		{
			var txt_type = lang_text('remove_type');
			txt_type = txt_type.replace('%1',type);
			
			var rem_a = Builder.node('a', {href : "#add_school"}, [
				Builder.node('img', {src : this.$template_dir+"img/icons/delete.png", alt : ""}),
				" "+txt_type
			]).addClassName("button").addClassName("img_button");
			Event.observe(rem_a,"click",$oProfileHandler.rem_schools.bindAsEventListener(null,$type_id,type));
			
			var rem_div = Builder.node('div', {id : 'rem_school_'+$type_id}, rem_a).setStyle({textAlign : "center"});
			
			$('pro_type').appendChild(rem_div);
		}
	},
	
	school_selected : function(e,type,type_id,data){
		//console.log(id);
		//console.log(data);
		if(e != null){
			$el = Event.findElement(e);
			$school_id = $el.value;
			if($school_id != ""){
				$data = $($el.value).innerHTML.stripTags();
				$data = $data.split(', ');
				data = new Object();
				data.id = $($el.value).getAttribute('value');
				if(data.id != -1){
					data.value = $($el.value).getAttribute('objvalue');
					data.info = $($el.value).getAttribute('objinfo');
					data.extra = $($el.value).getAttribute('objextra');
					data.about = $($el.value).getAttribute('objabout');
				}
			}else{
				data = null;
			}
		}else{
			$school_id = type_id;
		}
		//console.log(id);
		
		$name 	 = data != null ? data.value != null ? data.value : "" : "";
		$address = data != null ? data.info  != null ? data.info.split(', ')  : "" : "";
		$street  = $address[0] != null ? $address[0] : "";
		$postal  = $address[1] != null ? $address[1] : "";
		$land    = $address[2] != null ? $address[2] : "";
		$url 	 = data != null ? (data.extra != null && data.extra.strip() != "") ? data.extra : "http://" : "http://";
		$about   = data != null ? data.about!= null ? data.about : "" : "";
		
		$exists = !$('school_info_'+type_id);
		var lUpload;
		
		if($exists){
			
			var div = Builder.node('div', {id : 'school_info_'+type_id});
			var tbl = Builder.node('table', {className : 'form'});
			var tbody = Builder.node('tbody');
			
			var tr_school_naam = Builder.node('tr' ,{ id : 'row_txt_school_naam_'+type_id});
			var td_status_school_naam = Builder.node('td', {className : 'status'});
			var img_status_school_naam = Builder.node('img', {className : 'status', src : "/template/default/img/icons/required.gif"});
			var td_lbl_school_naam = Builder.node('td', {className : 'label'});
			var lbl_school_naam = Builder.node('label');
				lbl_school_naam.innerHTML = lang_text('name');
			var td_txt_school_naam = Builder.node('td');
			var txt_school_naam = Builder.node('input',{id : 'txt_school_naam_'+type_id, className : 'text', type : 'text', name : 'type['+type_id+'][name]', value : $name, size:'35'});
			if($('scholen_'+type_id)){
				txt_school_naam.setStyle({width:$('scholen_'+type_id).getStyle('width')});
			}
			td_lbl_school_naam.appendChild(lbl_school_naam);

			var txt_profile_points_plus = lang_text('profile_points_plus');
			var txt_profile_points_plus_four = txt_profile_points_plus.replace('%1','4');
			var txt_profile_points_plus_two = txt_profile_points_plus.replace('%1','2');

			if(type==0){
				var div_school_naam_punten = Builder.node('div', {className: 'profile_quality'});
				div_school_naam_punten.innerHTML =txt_profile_points_plus_four;
				td_lbl_school_naam.appendChild(div_school_naam_punten);
			}
			td_status_school_naam.appendChild(img_status_school_naam);
			td_txt_school_naam.appendChild(txt_school_naam);
			tr_school_naam.appendChild(td_status_school_naam);
			tr_school_naam.appendChild(td_lbl_school_naam);
			tr_school_naam.appendChild(td_txt_school_naam);
				
			var tr_school_land = Builder.node('tr', {id : 'row_select_school_land_'+type_id});
			var td_status_school_land = Builder.node('td', {className : 'status'});
			var img_status_land = Builder.node('img', {className : 'status', src : "/template/default/img/icons/empty.gif"});
			var td_lbl_school_land = Builder.node('td', {className : 'label'});
			var lbl_school_land = Builder.node('label');
				lbl_school_land.innerHTML = lang_text('country');
			var td_school_land = Builder.node('td');
			td_school_land.innerHTML = $land != "" ? $land : "&#160;";
			td_lbl_school_land.appendChild(lbl_school_land);
			if(type==0){
				var div_school_land_punten = Builder.node('div', {className: 'profile_quality'});
					div_school_land_punten.innerHTML = txt_profile_points_plus_two;
					td_lbl_school_land.appendChild(div_school_land_punten);
			}
			td_status_school_land.appendChild(img_status_land);
			tr_school_land.appendChild(td_status_school_land);
			tr_school_land.appendChild(td_lbl_school_land);
			tr_school_land.appendChild(td_school_land);
			
			var tr_school_straat = Builder.node('tr', {id : 'row_txt_school_straat_'+type_id});
			var td_status_school_straat = Builder.node('td', {className : 'status'});
			var img_status_straat = Builder.node('img', {className : 'status', src : "/template/default/img/icons/required.gif"});
			var td_lbl_school_straat = Builder.node('td', {className : 'label'});
			var lbl_school_straat = Builder.node('label');
				lbl_school_straat.innerHTML = lang_text('street_and_number');
			var td_school_straat = Builder.node('td');
			var txt_school_straat = Builder.node('input', {id : 'txt_school_straat_'+type_id, className : 'text', type : 'text', name : 'type['+type_id+'][street]', value : $street, size:'35'});
			td_lbl_school_straat.appendChild(lbl_school_straat);
			td_school_straat.appendChild(txt_school_straat);
			if(type==0){
				var div_school_straat_punten = Builder.node('div', {className: 'profile_quality'});
					div_school_straat_punten.innerHTML =txt_profile_points_plus_two;
					td_lbl_school_straat.appendChild(div_school_straat_punten);
			}
			td_status_school_straat.appendChild(img_status_straat);
			tr_school_straat.appendChild(td_status_school_straat);
			tr_school_straat.appendChild(td_lbl_school_straat);
			tr_school_straat.appendChild(td_school_straat);
			
			var tr_school_gemeente = Builder.node('tr', {id : 'row_txt_school_gemeente_'+type_id});
			var td_status_school_gemeente = Builder.node('td', {className : 'status'});
			var img_status_gemeente = Builder.node('img', {className : 'status', src : "/template/default/img/icons/empty.gif"});
			var td_lbl_school_gemeente = Builder.node('td', {className : 'label'});
			var lbl_school_gemeente = Builder.node('label');
				lbl_school_gemeente.innerHTML = lang_text('postcode_and_city');
			var td_school_gemeente = Builder.node('td');
				td_school_gemeente.innerHTML = $postal != "" ? $postal : "&#160;";
			td_lbl_school_gemeente.appendChild(lbl_school_gemeente);
			if(type==0){
				var div_school_gemeente_punten = Builder.node('div', {className: 'profile_quality'});
					div_school_gemeente_punten.innerHTML =txt_profile_points_plus_four;
					td_lbl_school_gemeente.appendChild(div_school_gemeente_punten);
			}
			td_status_school_gemeente.appendChild(img_status_gemeente);
			tr_school_gemeente.appendChild(td_status_school_gemeente);
			tr_school_gemeente.appendChild(td_lbl_school_gemeente);
			tr_school_gemeente.appendChild(td_school_gemeente);
			
			
			var tr_school_url = Builder.node('tr');
			var td_status_school_url = Builder.node('td', {className : 'status'});
			var td_lbl_school_url = Builder.node('td', {className : 'label'});
			var lbl_school_url = Builder.node('label');
				lbl_school_url.innerHTML = lang_text('website');
			var td_school_url = Builder.node('td');
			var txt_school_url = Builder.node('input',{id : 'txt_school_url_'+type_id,className : 'text', type : 'text', name : 'type['+type_id+'][url]', value : $url, size:'35'});
			td_lbl_school_url.appendChild(lbl_school_url);
			if(type==0){
				var div_school_url_punten = Builder.node('div', {className: 'profile_quality'});
					div_school_url_punten.innerHTML =txt_profile_points_plus_four;
					td_lbl_school_url.appendChild(div_school_url_punten);
			}
			td_school_url.appendChild(txt_school_url);
			tr_school_url.appendChild(td_status_school_url);
			tr_school_url.appendChild(td_lbl_school_url);
			tr_school_url.appendChild(td_school_url);
			
			if(type==2){ // logo voor organisaties
				var tr_school_logo = Builder.node('tr');
				var td_status_school_logo = Builder.node('td', {className : 'status'});
				var td_lbl_school_logo = Builder.node('td', {className : 'label'});
				var lbl_school_logo = Builder.node('label');
					lbl_school_logo.innerHTML = lang_text('logo');
				var span_info = Builder.node('span', {className : 'info_icon'});
				var img_info = Builder.node('img', {alt : "info", src : "/template/default/img/icons/information.png", onmouseout : "hide_tooltip()", onmouseover : "show_tooltip('/ajax/get_language_key.php?key=inf_logo&lang=9',event)"});
				var td_school_logo = Builder.node('td');
				var input_school_logo = Builder.node('input', {type : 'file', size : 60, name : 'type_'+type_id+'_logo_list_holder[]', id : 'type_'+type_id+'_logo'});
				var div_logo_list = Builder.node('div', {id : 'type_'+type_id+'_logo_list'});
				var div_info = Builder.node('div');
					div_info.innerHTML = lang_text('logo_info');
				td_lbl_school_logo.appendChild(lbl_school_logo);
				//span_info.appendChild(img_info);
				//td_lbl_school_logo.appendChild(Builder.node('br'));
				//td_lbl_school_logo.appendChild(Builder.node('br'));
				//td_lbl_school_logo.appendChild(span_info);
				tr_school_logo.appendChild(td_status_school_logo);
				tr_school_logo.appendChild(td_lbl_school_logo);
				tr_school_logo.appendChild(td_school_logo);
				td_school_logo.appendChild(div_info);
				td_school_logo.appendChild(input_school_logo);
				td_school_logo.appendChild(div_logo_list);
			}
			
			var tr_school_about = Builder.node('tr');
			var td_status_school_about = Builder.node('td', {className : 'status'});
			var td_lbl_school_about = Builder.node('td', {className : 'label'});
			var lbl_school_about = Builder.node('label');
				lbl_school_about.innerHTML = lang_text('about_work');
			var td_school_about = Builder.node('td');
			var txt_school_about = Builder.node('textarea',{id : 'txt_school_about_'+type_id,className : 'tiny_mce', name : 'type['+type_id+'][about]'});
				txt_school_about.innerHTML = $about.escapeHTML();
			td_lbl_school_about.appendChild(lbl_school_about);
			if(type==0){
				var div_school_about_punten = Builder.node('div', {className: 'profile_quality'});
					div_school_about_punten.innerHTML =txt_profile_points_plus_four;
					td_lbl_school_about.appendChild(div_school_about_punten);
			}
			td_school_about.appendChild(txt_school_about);
			tr_school_about.appendChild(td_status_school_about);
			tr_school_about.appendChild(td_lbl_school_about);
			tr_school_about.appendChild(td_school_about);
						
			tbody.appendChild(tr_school_naam);
			tbody.appendChild(tr_school_land);
			tbody.appendChild(tr_school_straat);
			tbody.appendChild(tr_school_gemeente);
			tbody.appendChild(tr_school_url);
			if(type==2){ // logo voor organisaties
				tbody.appendChild(tr_school_logo);
			}
			tbody.appendChild(tr_school_about);
			
			tbl.appendChild(tbody);
			
			div.appendChild(tbl);
			
			
			
			$oProfileHandler.$arr_required.push('txt_school_naam_'+type_id);
			$oProfileHandler.$arr_required.push('txt_school_land_'+type_id);
			$oProfileHandler.$arr_required.push('txt_school_straat_'+type_id);
			$oProfileHandler.$arr_required.push('txt_school_gemeente_'+type_id);
						
			Event.observe(txt_school_naam,'keyup',function(e){
				if(Event.findElement(e).value != ''){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
					
			Event.observe(txt_school_straat,'keyup',function(e){
				if(Event.findElement(e).value != ''){
					$oProfileHandler.approve(Event.findElement(e).id);
				}else{
					$oProfileHandler.trigger_error(Event.findElement(e).id);
				}
			});
			
			//$('scholen_vl').appendChild(div);
			if(!$('type_'+type_id)){
				var div_school = Builder.node('div',{id : 'school_'+type_id});
				var h3 = document.createElement('h4');
				h3.appendChild(document.createTextNode('School '+type_id));
				//console.log('type_'+type_id);
				if($('type_'+type_id))	
					$('type_'+type_id).appendChild(div_school);
			}else{
				//console.log('type_'+type_id);
				$('type_'+type_id).appendChild(div);
			}
			
			
			
		
		}
		if(type == 2){ // logo voor organisaties
			lUpload = new upload($('type_'+type_id+'_logo_list') , 1 , imageExtensions , 0 , 'l_');
			lUpload.addElement($('type_'+type_id+'_logo'));
		}

		$oProfileHandler.school_edit(type_id,type_id,data,lUpload);
		if($exists){
			//console.log('txt_school_about_'+type_id);
			$oProfileHandler.setTinyMCE_about('txt_school_about_'+type_id);
		}
		
	},
	
	school_edit : function(id,$type_id,data,lUpload){
		if(data != null){
				$name 	 = data != null ? data.value != null ? data.value : "" : "";
				$address = data != null ? data.info  != null ? data.info.split(', ')  : "" : "";
				$street  = $address[0] != null ? $address[0] : "";
				$postal  = $address[1] != null ? $address[1] : "";
				$land    = $address[2] != null ? $address[2] : "";
				$url 	 = data != null ? (data.extra != null && data.extra.strip() != "") ? data.extra : "http://" : "http://";
				$about   = data != null ? data.about != null ? data.about : "" : "";
				$logo	 = data != null ? data.logo != null ? data.logo : "" : "";
				
				$('txt_school_naam_'+$type_id).value = $name;
				$('txt_school_straat_'+$type_id).value = $street;				
				$('row_txt_school_gemeente_'+$type_id).lastChild.innerHTML = $postal;
				if(data.postal_code_id != null){
					var postal_code_id = Builder.node('input',{value : data.postal_code_id, type : 'hidden', name : 'type['+$type_id+'][postal_code_id]'});
					$('row_txt_school_gemeente_'+$type_id).lastChild.appendChild(postal_code_id);
				}
				$('row_select_school_land_'+$type_id).setStyle({display : 'table-row'});
				$('row_select_school_land_'+$type_id).lastChild.innerHTML = $land;
				$('txt_school_url_'+$type_id).value = $url;
				$('txt_school_about_'+$type_id).value = $about;
				
				this.check_element('txt_school_naam_'+$type_id);
				//this.check_element('txt_school_land_'+$type_id);
				this.check_element('txt_school_straat_'+$type_id);
				//this.check_element('txt_school_gemeente_'+$type_id);
				
				$$('#row_select_school_land_'+$type_id+' .status img').each(function(img){
					img.setAttribute('src',"/template/default/img/icons/empty.gif");
				});
				$$('#row_txt_school_gemeente_'+$type_id+' .status img').each(function(img){
					img.setAttribute('src',"/template/default/img/icons/empty.gif");
				});
				
				if($logo != ""){
					lUpload.addFile($logo,this.get_organisation_path(data.id,'l'));
					var img = Builder.node('img', {src : this.get_organisation_path(data.id,'l/')+$logo});
					$('type_'+$type_id+'_logo').parentNode.appendChild(img);
				}
				
		}else{
			$('txt_school_naam_'+$type_id).value = "";
			$('txt_school_straat_'+$type_id).value = "";
			$('row_txt_school_gemeente_'+$type_id).lastChild.innerHTML = "";
			$('row_select_school_land_'+$type_id).lastChild.innerHTML = "";
			
			var txt_school_land = Builder.node('select',{id : 'select_school_land_'+$type_id,className : 'text', name : 'type['+$type_id+'][land]'}).setStyle({width:'300px'});
			txt_school_land.setAttribute('type_id',$type_id);
			
			$oProfileHandler.$landen.each(function(s){
				var option = document.createElement('option');
				option.setAttribute('value',s.id);
				$selected = $land == s.name ? "selected" : false;
				if($selected){
					option.setAttribute('selected',$selected);
				}
				option.innerHTML = s.name;
				txt_school_land.appendChild(option);
			});

			
			$('row_select_school_land_'+$type_id).lastChild.appendChild(txt_school_land);
			
			var input_postal_code 		= Builder.node('input',{ id : 'step1_postalCode_'+$type_id, className : 'text', type : 'text', name : 'type['+$type_id+'][postal_code]'}).setStyle({width: '75px'});
			input_postal_code.setAttribute('type_id',$type_id);
			var input_postal 			= Builder.node('select',{ id : 'idLocationList_'+$type_id, className : 'text', type : 'text', name : 'type['+$type_id+'][gemeente]', disabled : 'disabled'}).setStyle({width: '200px', marginLeft : '20px', display: 'none'});
			input_postal.setAttribute('type_id',$type_id);
			var txt_input_postal 		= Builder.node('input', {id : 'txt_school_gemeente_'+$type_id, className : 'text', type : 'text', name : 'type['+$type_id+'][gemeente]'}).setStyle({width: '200px', marginLeft : '20px'});
			txt_input_postal.setAttribute('type_id',$type_id);
			var input_postal_code_id 	= Builder.node('input',{id : 'idHidLocation_'+$type_id, className : 'text', type : 'hidden', name : 'type['+$type_id+'][postal_code_id]'}).setStyle({width: '200px', marginLeft : '20px'});
			$('row_txt_school_gemeente_'+$type_id).lastChild.appendChild(input_postal_code);
			$('row_txt_school_gemeente_'+$type_id).lastChild.appendChild(input_postal);
			$('row_txt_school_gemeente_'+$type_id).lastChild.appendChild(input_postal_code_id);
			$('row_txt_school_gemeente_'+$type_id).lastChild.appendChild(txt_input_postal);
			$('txt_school_url_'+$type_id).value = "http://";
			$('txt_school_about_'+$type_id).value  = "";
						
			$$('#row_txt_school_naam_'+$type_id+' .status img').each(function(img){
				img.setAttribute('src',"/template/default/img/icons/required.gif");
			});
			$$('#row_select_school_land_'+$type_id+' .status img').each(function(img){
				img.setAttribute('src',"/template/default/img/icons/required.gif");
			});
			$$('#row_txt_school_straat_'+$type_id+' .status img').each(function(img){
				img.setAttribute('src',"/template/default/img/icons/required.gif");
			});
			$$('#row_txt_school_gemeente_'+$type_id+' .status img').each(function(img){
				img.setAttribute('src',"/template/default/img/icons/required.gif");
			});
			
			
			
			if($('hidden_type_'+$type_id) && $F('hidden_type_'+$type_id) == 'vl'){
				$('row_select_school_land_'+$type_id).setStyle({display : 'none'});
				$('step1_postalCode_'+$type_id).value = $('postal_code_'+$type_id).value;
				$('step1_postalCode_'+$type_id).setAttribute('disabled','disabled');
				get_locations($('step1_postalCode_'+$type_id).value,1,$type_id,'');
				$('txt_school_gemeente_'+$type_id).setStyle({display : 'none'});
				$('txt_school_gemeente_'+$type_id).setAttribute('disabled','disabled');
				$('select_school_land_'+$type_id).selectedIndex = 1;
			}
			
			$oProfileHandler.$arr_required.push('select_school_land_'+$type_id);
			$oProfileHandler.$arr_required.push('txt_school_gemeente_'+$type_id);
			
			Event.observe(txt_school_land,'change',function(e){				
				$oProfileHandler.profile_land_changed(e);
			});
			
			Event.observe(input_postal,'change',function(e){				
				$oProfileHandler.profile_gemeente_changed(e);
			});
			
			Event.observe(input_postal_code,'keyup',function(e){
				var $type_id = Event.findElement(e).getAttribute('type_id');
				
				if($('step1_postalCode_'+$type_id).value != "" && ($('txt_school_straat_'+$type_id).value != "" && $('txt_school_straat_'+$type_id).value != "-1")){
					$oProfileHandler.approve('school_gemeente_'+$type_id);
				}else{
					$oProfileHandler.trigger_error('school_gemeente_'+$type_id);
				}
			});
			
			Event.observe(input_postal,'change',function(e){
				var $type_id = Event.findElement(e).getAttribute('type_id');
				
				if($('select_school_land_'+$type_id).value != "" && ($('select_school_land_'+$type_id).value != "" && $('select_school_land_'+$type_id).value != "-1")){
					$oProfileHandler.approve('txt_school_gemeente_'+$type_id);
				}else{
					$oProfileHandler.trigger_error('txt_school_gemeente_'+$type_id);
				}
			});
			
			Event.observe(txt_input_postal,'keyup',function(e){
				var $type_id = Event.findElement(e).getAttribute('type_id');
				
				if($('select_school_land_'+$type_id).value != "" && ($('select_school_land_'+$type_id).value != "" && $('select_school_land_'+$type_id).value != "-1")){
					$oProfileHandler.approve('txt_school_gemeente_'+$type_id);
				}else{
					$oProfileHandler.trigger_error('txt_school_gemeente_'+$type_id);
				}
			});
			
			Event.observe(input_postal_code,'change',function(){
				get_locations($('step1_postalCode_'+$type_id).value,$F('select_school_land_'+$type_id),$type_id,'');
			});
		}
		
		
		
	},
	
	setTinyMCE_about : function (textarea_id){
		if(tinyMCE.get(textarea_id) == undefined){
			tinyMCE.execCommand('mceRemoveControl', false, textarea_id);
		}
		if($(textarea_id)){
			tinyMCE.execCommand('mceAddControl',false,textarea_id);
		}
		if(tinyMCE != undefined && tinyMCE.get(textarea_id) != undefined){
			tinyMCE.get(textarea_id).setContent($(textarea_id).value);
		}
		
	},
	
	profile_gemeente_changed : function (e){
		var element = Event.findElement(e);
		var type_id = element.getAttribute('type_id');
		$('txt_school_gemeente_'+type_id).value = $F(element);
	},
	
	profile_land_changed : function (e){
		var $type_id = Event.findElement(e).getAttribute('type_id');
		if($F(Event.findElement(e)) != '-1' && $F(Event.findElement(e)) != ''){
			$oProfileHandler.approve('select_school_land_'+$type_id);
			switch($F(Event.findElement(e))){
				case "1" : //belgie
					$('txt_school_gemeente_'+$type_id).setAttribute('disabled','disabled');
					$('txt_school_gemeente_'+$type_id).setStyle({display:'none'});
					$('idLocationList_'+$type_id).removeAttribute('disabled');
					$('idLocationList_'+$type_id).setStyle({display:'inline'});
					break;
				default : 
					$('txt_school_gemeente_'+$type_id).removeAttribute('disabled');
					$('txt_school_gemeente_'+$type_id).setStyle({display:'inline'});
					$('idLocationList_'+$type_id).setAttribute('disabled','disabled');
					$('idLocationList_'+$type_id).setStyle({display:'none'});
					break;
			}
		}else{
			$oProfileHandler.trigger_error('select_school_land_'+$type_id);
		}
	},
	
	get_organisation_path : function($id,$type){
		$length		= $id.length;
		$path		= '/organisations';
		for ($i = 0; $i < $length; $i++){
			$path += '/' + $id[$i];
		}
		$path += '/' + $type;
		return $path;
	}

};