	var gUniformText = '<p>Voor opleidingen en overige informatie zie de websites: </p><ul><li><a href="http://www.kombijdepolitie.nl/" target="_blank">www.kombijdepolitie.nl</a></li><li><a href="http://www.werkenbijdelandmacht.nl/"  target="_blank">www.werkenbijdelandmacht.nl</a></li><li><a href="http://www.werkenbijdeluchtmacht.nl/" target="_blank">www.werkenbijdeluchtmacht.nl</a></li><li><a href="http://www.werkenbijdemarine.nl/" target="_blank">www.werkenbijdemarine.nl</a></li></ul>';

	var kb_base = Class.create({
		initialize : function(RPCURI, container){
			this.instID = 'kb_base_' + parseInt(Math.random()*1000000);
			this.container = container;
			this.sectors = [];
			this.RPCURI = RPCURI;
		},
		
	  	getSectors : function(callBack){
	  		if (this.sectors.length == 0){
				var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
				this.waiter(this.container);
				if (window.console) rpc.debug = true;
	  			rpc.createCall('is', 'getSectors');
	  			rpc.execute(
	  				(function(req,rpc){
	  					this.sectors = rpc.toObject().responses.response.row;
	  					this.unwaiter();
	  					callBack(this.sectors);
	  				}).bind(this)
	  			);
	  		}else{
	  			callBack(this.sectors);
	  		}
	  	},
	  	
	  	writeSectors : function(container,onclickHandler){
	  		var ul = new Element('ul');
	  		container.insert(ul);
	  		this.sectors.each(
	  			(function(sector){
  					var showSector = true;
  					
	  				if (this.mainCat == 2){
	  					showDescription = true;
	  					if (sector.no_show_at_vmbo == 1) showSector = false;	
	  				}
	  				if (showSector){
	  					var link = new Element('a').update(sector.name);
	  					var li = new Element('li').update(link);
	  					ul.insert(li);
	  					link.observe('click', onclickHandler);
	  					link.sector = sector;
	  				}
	  			}).bind(this)
	  		)
	  	},
	  	
	  	writeSectorDescription : function(selectedSector, inlineContainer){
	  		var field = '';
	  		switch (this.mainCat) {
			case "1":
				field = 'description'
				break;
			case "2":
				field = 'VMBO_description'
				break;
			case "3":
				field = 'VWO_description'
				break;
			case "4":
				field = 'VWO_description'
				break;
			case "5":
				field = 'VWO_description'
				break;
			default:
				field = 'description'
				break;
			}
	  		inlineContainer.show();
	  		this.getCloser(inlineContainer);
	  		inlineContainer.insert(selectedSector[field]);
	  	},
	  	
	  	getStudiesAtSector : function(e){
	  		var container = e.element();
	  		var sector = container.sector;
	  		var level = container.level;
	  		this.activeLevel = level;
	  		if (window.console) console.log(container, sector, level);
	  		
	  		var studyContainer = new Element('div', {className:'studiesContainer'})
	  		container.inlineContainer.update(studyContainer);
	  		this.getCloser(studyContainer);

	  		var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
	  		this.waiter(studyContainer);
			if (window.console) rpc.debug = true;
	  		var func = (function(req,rpc){
	  			this.unwaiter();
	  			this.drawStudies(req,rpc, studyContainer, level, sector)
	  		}).bind(this)
	  		rpc.createCall('is', 'getStudies', {sectorID:sector.id, mainCatID:this.mainCat, levelID:level});
  			rpc.execute(func);
	  	},
	  	
	  	getLevelLink : function(levelID, text, sector){
  			var link = new Element('a', {className:'levelLink'}).update(text);
  			link.sector = sector;
  			link.level = levelID;
	  		return link;
	  	},
	  	
	  	getSchools: function(studyID, callBack, fullInfo, container){
	  		if (container){
	  			container.show();
	  			this.waiter(container);
	  		}
	  		if (!fullInfo) fullInfo = false;
	  		var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
			if (window.console) rpc.debug = true;
	  		rpc.createCall('is', 'getSchools', {studyID:studyID, mainCatID:this.mainCat, extended:fullInfo});
  			rpc.execute(callBack);
	  	},
	  	
	  	getSchoolsAtSector : function(e, sectorID, container, callBack){
	  		if (!callBack){
	  			callBack = (function(req,rpc){
					this.writeSchoolListing(req, rpc,container, '', '', sectorID);
				}).bind(this)
	  		}
	  		if (!sectorID && !container){
	  			var elem = e.element();
	  			var container = elem.inlineContainer;
	  			var sector = elem.sector;
	  			var sectorID = sector.id;
	  		}
	  		container.show();
	  		this.waiter(container);
	  		var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
			if (window.console) rpc.debug = true;
	  		rpc.createCall('is', 'getSchools', {'sectorID':sectorID, mainCatID:this.mainCat});
  			rpc.execute(callBack);
	  	},	  	
	  	
	  	getMBOSchools: function(callBack){
	  		var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
			if (window.console) rpc.debug = true;
	  		rpc.createCall('is', 'getSchools', {mainCatID:2});
  			rpc.execute(callBack);
	  	},
	  	
	  	getStudyRights : function(study, callBack, container){
	  		if (container){
	  			container.show();
	  			this.waiter(container);
	  		}
	  		var studyID = study.id;
	  		var rpc = new rpcClient(this.RPCURI, '439b3a44-76ce-11de-86f2-001f297dba24');
			if (window.console) rpc.debug = true;
			if (window.console) console.log({studyID:studyID, mainCatID:this.mainCat, level:this.activeLevel});
	  		rpc.createCall('is', 'getRights', {studyID:studyID, mainCatID:this.mainCat, level:this.activeLevel});
  			rpc.execute(callBack);
	  	},

	  	getRightsSign : function(value){
	  		switch (value) {
				case "0":
					return '';
					break;
				case "1":
					return 'V';
					break;
				case "2":
					return 'O';
					break;
				case "3":
					return 'X';
					break;
				default:
					return '';
					break;
			}
	  	},
	  		
  		getCloser : function(container){
	  		var link = new Element('a', {className:'closer'}).update('[X]');
	  		container.insert(link);
	  		
	  		link.observe('click', function(){
	  			container.hide();
	  		})
	  		
	  	},
	  	
	  	getPostCodeSearch : function(container, callBack){
	  		var inputContainer = new Element('div', {className:'pcSearchBox'});
	  		container.insert(inputContainer);
	  		
	  		var fieldTitle = new Element('span', {style:'float:left;'}).update("Je postcode");
	  		inputContainer.insert(fieldTitle);
	  		var input = new Element('input', {style:'float:left', size:7});
	  		inputContainer.insert(input);
	  		input.observe('change', function(){
	  			var pc = input.getValue();
	  			pc = pc.toString().replace(' ', '');
	  			input.value = pc;
	  		});

	  		var button = new Element('button', {style:'float:left'}).update('zoeken');
	  		inputContainer.insert(button);
	  		button.observe('click', (function(){
	  			callBack(input);
	  		}).bind(this));

	  	},
	  	
	  	writeRightsRow : function(container, right, hideLegend){
	  		if (!hideLegend) hideLegend = false;
	  		if (!right){
	  			container.insert("Geen vooropleidingseisen gevonden");
	  			return;
	  		}
	  		if (!hideLegend){
	  			var header = new Element('div', {className:'rightsHeader'}).insert('<div class="rightsCell">CM</div><div class="rightsCell">EM</div><div class="rightsCell">NG</div><div class="rightsCell">NT</div><div class="rightsCellClean">V = Altijd toelating, X = geen toelating, O = toelating met een of meer aanvullende vakken</div>');
	  			container.insert(header);
	  		}
	  		
	  		var data = new Element('div', {className:'rightsData'});
	  		container.insert(data);
	  		
	  		var cell = new Element('div', {className:'rightsCell'}).update(this.getRightsSign(right.CM)); // CM
	  		data.insert(cell);
	  		var cell = new Element('div', {className:'rightsCell'}).update(this.getRightsSign(right.EM)); // EM
	  		data.insert(cell);
	  		var cell = new Element('div', {className:'rightsCell'}).update(this.getRightsSign(right.NG)); // NG
	  		data.insert(cell);
	  		var cell = new Element('div', {className:'rightsCell'}).update(this.getRightsSign(right.NT)); // NT
	  		data.insert(cell);
	  		var cell = new Element('div', {className:'rightsCell'}).update(right.extra); 
	  		data.insert(cell);	  		
	  	},
	  	
	  	waiter : function(container){
	  		var img = new Element('img', {src:'/images/waiter.gif', className:'waiter'});
	  		container.insert(img);
	  		this.currWaiter = img;
	  	},
	  	
	  	unwaiter : function(){
	  		if (this.currWaiter) {
	  			try{
	  				this.currWaiter.remove();
	  			}catch(e){
	  				if (window.console) console.log(e);
	  			}
	  		} 
	  	},
	  	
	  	getMainCatName : function(){
	  		var mainCatStr='';
			if (this.mainCat == 1){
				mainCatStr = " HAVO";
			}
			if (this.mainCat == 2){
				mainCatStr = " VMBO";
			}
			if (this.mainCat == 3 || this.mainCat == 4 || this.mainCat == 5){
				mainCatStr = " VWO";
			}
			return mainCatStr;
	  	}
	  	
		
	});
	
