if(!$chk(MVP)) {
	var MVP = {}; 
}

if(!$chk(MVPVars)) {
	var MVPVars = {}; 
}

MVPVars.jsonAction = 'MVPgetFilterResults';
MVPVars.jsonAction2 = 'MVPgetPages';
MVPVars.jsonAction3 = 'MVPgetOverall';
MVPVars.jsonurl = '/sbeos/ajax/JsonCall.php';

MVPVars.resultcounter = 'resultCounter';
MVPVars.resultOverallCounter = 'resultOverallCounter';
MVPVars.pagesID = 'pages';
MVPVars.pageLeft = 'pageLeft';
MVPVars.pageRight = 'pageRight';
MVPVars.resetButton = 'resetFilter';
MVPVars.studielijn = null;
MVPVars.currentPage = null;
MVPVars.beroepsgroep = null;
MVPVars.niveau = null;
MVPVars.leslocatie = null;
MVPVars.onderwijsvorm = null;
MVPVars.currentSort = 'ASC';
MVPVars.limit = 5;
MVPVars.offset = 0;

MVPVars.dropDownClass = 'dropDown';
MVPVars.prevNextButtonsHasEvent = false;


MVP.loadDropDowns = function(){
	var dropDowns = $$('.'+MVPVars.dropDownClass);
	
	for(i=0;i<dropDowns.length;i++){
		var selectedItems = dropDowns[i].getElements('.selected');
		var selected = selectedItems[0];
		selected.addEvent('click',MVP.showDropDownOptions.bindAsEventListener(window,[dropDowns[i]]));
		selected.addEvent('mouseover',MVP.changeMouseOver.bindAsEventListener(window,[dropDowns[i],'border-color','#ffffff']));
		selected.addEvent('mouseout',MVP.changeMouseOver.bindAsEventListener(window,[dropDowns[i],'border-color','#8CB1D5']));
	}
}

MVP.changeMouseOver = function(e,element,property,color){
	element.setStyle(property,color);
}

MVP.showDropDownOptions = function(e, downDownElement){

	var optionsPanel = null;
	var selectedItems = null;
	var options = null;

	var optionsPanel = downDownElement.getElements('.options');
	var selectedItems = downDownElement.getElements('.selected');
	var hiddenItems = downDownElement.getElements('.hidden');
	var selected = selectedItems[0];
	var hidden = hiddenItems[0];
	
	
	var options = optionsPanel.getElements('.option');
	for(i=0;i<options[0].length;i++){
		var option = options[0][i];
		option.removeEvents();
		option.addEvent('mouseover', MVP.changeMouseOver.bindAsEventListener(window,[option,'color','#003366']));
		option.addEvent('mouseover', function(){downDownElement.setStyle('border-color','#ffffff')});
		option.addEvent('mouseout', MVP.changeMouseOver.bindAsEventListener(window,[option,'color','#ffffff']));
		option.addEvent('click',MVP.setSelectedItem.bindAsEventListener(window,[option,selected,hidden,optionsPanel]));
	}
	$$('.backgroundTypical').each(function(item,index){
		item.addEvent('click',function(){selected.innerHTML = 'Maak hier uw keuze'});
		item.addEvent('mouseover',MVP.changeMouseOver.bindAsEventListener(window,[item,'background-color','#ffffff']));
		item.addEvent('mouseout',MVP.changeMouseOver.bindAsEventListener(window,[item,'background-color','#8cb1d5']));
	});
	optionsPanel[0].setStyle('display','inline');
	optionsPanel[0].setStyle('border-color','#ffffff');
	downDownElement.setStyle('border-color','#ffffff');
	downDownElement.addEvent('mouseleave',function(){
		optionsPanel[0].setStyle('display','none');
		optionsPanel[0].setStyle('border-color','#8CB1D5');
		downDownElement.setStyle('border-color','#8CB1D5');
	});
}

MVP.resetFilter = function() {
	MVPVars.studielijn = '';
	MVPVars.currentPage = null;
	MVPVars.beroepsgroep = null;
	MVPVars.niveau = null;
	MVPVars.leslocatie = null;
	MVPVars.onderwijsvorm = null;
	
	var dropDowns = $$('.'+MVPVars.dropDownClass);
	
	for(i=0;i<dropDowns.length;i++){
		
		var optionsPanel = dropDowns[i].getElements('.options');
		var hidden = dropDowns.getElements('.hidden')[i][0];
		var option = dropDowns[0][i];
		var selected = dropDowns.getElements('.selected')[i][0];
		var empty = dropDowns[i].getElements('div.backgroundTypical')[0];
		MVP.setSelectedItem(window,empty, selected, hidden, optionsPanel, true);
	}
	MVP.getPages();
	MVP.loadResults();
}

MVP.setSelectedItem = function(e, option, selected, hidden, optionsPanel, noReGet){
	if (option.innerHTML.match("transp.gif") == null) {
		selected.innerHTML = option.innerHTML;
	} else {
		selected.innerHTML = 'Maak hier uw keuze';
	}
	hidden.innerHTML = option.id;
	optionsPanel[0].setStyle('display','none');
	if($('filter')){
		if (noReGet !== true) {
			MVP.getPages();
			MVP.loadResults();
		}
	}
	
}

MVP.addSortAction = function(){
	$$('sort'+MVPVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','underline');
	});
	$$('.sortASC').each(function(item) {
		item.addEvent('click',MVP.changeSort.bindAsEventListener(window,['ASC']));
	});
	$$('.sortDESC').each(function(item) {
		item.addEvent('click',MVP.changeSort.bindAsEventListener(window,['DESC']));
	});
};

MVP.changeSort = function(e,type){
	$$('.sort'+MVPVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','none');
	});
	MVPVars.currentSort = type;
	$$('.sort'+MVPVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','underline');
	});
	MVP.loadResults();
}

MVP.getPages = function(){
	MVP.getFilterProperties();
	var postObject = 	{
				action: MVPVars.jsonAction2,
				limit: MVPVars.limit,
				offset: MVPVars.offset,
				studielijn: MVPVars.studielijn,
				beroepsgroep: MVPVars.beroepsgroep,
				niveau: MVPVars.niveau,
				leslocatie: MVPVars.leslocatie,
				onderwijsvorm: MVPVars.onderwijsvorm,
				sortType: MVPVars.currentSort
			};
			
			var request = new Json.Remote(
				MVPVars.jsonurl,
				{
					onComplete:MVP.handlePages.bindAsEventListener(window)
				}
			).send(postObject);
}

MVP.handlePages = function(jsonObject){
	$$('.'+MVPVars.resultcounter).each(function(item) {
		item.setHTML(jsonObject.resultCount);
	});
	var pages = jsonObject.pages;
	var pagesElement = $$('.'+MVPVars.pagesID);
	pagesElement.each(function(item) {
		item.empty();
	});
	MVPVars.currentPage = new Array();
	for(i=1;i<=pages;i++){
		pagesElement.each(function(item, index) {
			var aElement = new Element('a');
			aElement.className = 'pageItem';
			if(i == 1){
				MVPVars.currentPage.include(aElement);
				aElement.addClass('selected');
			}
			aElement.innerHTML = i;
			aElement.id  = 'page-'+index+'-'+i;
			aElement.addEvent('click',MVP.switchPage.bindAsEventListener(window,[aElement]));
			aElement.injectInside(item);
		});
	}
	
	if (MVPVars.prevNextButtonsHasEvent === false) {
		$$('.'+MVPVars.pageLeft).each(function(item) {
			item.addEvent('click', MVP.slidePage.bindAsEventListener(window, ['prev']));
		});
		$$('.'+MVPVars.pageRight).each(function(item) {
			item.addEvent('click', MVP.slidePage.bindAsEventListener(window, ['next']));
		});
		MVPVars.prevNextButtonsHasEvent = true;
	}
}

MVP.slidePage = function(e,type){
	if(type == 'prev'){
		if(MVPVars.currentPage.getLast().getPrevious() != null){
			MVP.switchPage(window,MVPVars.currentPage.getLast().getPrevious());
		}
	}
	if(type == 'next'){
		if(MVPVars.currentPage.getLast().getNext() != null){
			MVP.switchPage(window,MVPVars.currentPage.getLast().getNext());
		}
	}
}

MVP.switchPage = function(e,page){
	MVPVars.currentPage.each(function(item) {
		item.removeClass('selected');
	});
	MVPVars.currentPage = $$('#page-0-'+page.innerHTML+', #page-1-'+page.innerHTML);
	MVPVars.currentPage.each(function(item) {
		item.addClass('selected');
	});
	MVPVars.offset = (page.innerHTML * MVPVars.limit) - MVPVars.limit; 
	MVP.loadResults();
}

MVP.getFilterProperties = function(){
	MVPVars.studielijn = $('studielijnid').innerHTML;
	MVPVars.beroepsgroep = $('beroepsgroepid').innerHTML;
	MVPVars.niveau = $('niveauid').innerHTML;
	MVPVars.leslocatie = $('leslocatieid').innerHTML;
	MVPVars.onderwijsvorm = $('onderwijsvormid').innerHTML;
}

MVP.loadResults = function(){
	MVP.getFilterProperties();
	var postObject = 	{
		action: MVPVars.jsonAction,
		limit: MVPVars.limit,
		offset: MVPVars.offset,
		studielijn: MVPVars.studielijn,
		beroepsgroep: MVPVars.beroepsgroep,
		niveau: MVPVars.niveau,
		leslocatie: MVPVars.leslocatie,
		onderwijsvorm: MVPVars.onderwijsvorm,
		sortType: MVPVars.currentSort
	};
			
	var request = new Json.Remote(
		MVPVars.jsonurl, {
			onComplete:MVP.handleFilterResults.bindAsEventListener(window)
		}
	).send(postObject);
}

MVP.handleFilterResults = function(jsonObject){
	var results = jsonObject.results;
	$('results').innerHTML = '';
	if($chk(results)){
		for(i=0;i<results.length;i++){
	
			$('results').innerHTML += results[i].template;
		}
	} else {
		var noResults = new Element('a', {
			'href': '#'
		});
		
		noResults.setHTML('Deze zoekactie heeft geen resultaten opgeleverd');
		noResults.injectInside($('results'));
	}
}

MVP.getOveralCount = function(){
	var postObject = {
		action: MVPVars.jsonAction3
	};
	
	var request = new Json.Remote(
		MVPVars.jsonurl, {
			onComplete:MVP.setOveralCount.bindAsEventListener(window)
		}
	).send(postObject);	
}

MVP.setOveralCount = function(jsonObject){
	var resultCount = jsonObject.resultCount;
	$$('.'+MVPVars.resultOverallCounter).each(function(item) {
		item.innerHTML = resultCount;
	});
};

MVP.loadFilter = function() {
	MVP.loadDropDowns();
	MVP.getOveralCount();
	MVP.addSortAction(); 
	MVP.getPages();
	MVP.loadResults();
}

window.addEvent('domready',function(){
	if($('filter')){
		MVP.loadFilter();
		$(MVPVars.resetButton).addEvent('click', function() {
			MVP.resetFilter();
		});
	}
});