if(!$chk(MVP)) {
	var MVP = {}; 
}

if(!$chk(MVPFilterVars)) {
	var MVPFilterVars = {}; 
}

MVPFilterVars = {
		jsonactions: {
			filter: 'MVPgetFilterResults',
			pages: 'MVPgetPages',
			overall: 'MVPgetOverall'
		},
		jsonurl: '/sbeos/ajax/JsonCall.php',
		
		resultcounter: 'resultCounter',
		resultOverallCounter: 'resultOverallCounter',
		
		pagesID: 'pages',
		pageLeft: 'pageLeft',
		pageRight: 'pageRight',
		
		resetButton: 'resetFilter',
		studielijn: null,
		currentPage: null,
		beroepsgroep: null,
		niveau: null,
		leslocatie: null,
		onderwijsvorm: null,
		currentSort: 'ASC',
		limit: 5,
		offset: 0,

		dropDownClass: 'dropDown',
		prevNextButtonsHasEvent: false
};

MVP.loadDropDowns = function(){
	var dropDowns = $$('.'+MVPFilterVars.dropDownClass);
	
	for(i=0;i<dropDowns.length;i++){
		var selectedItems = dropDowns[i].getElements('.selected');
		var selected = selectedItems[0];
		selected.addEvent('click',MVP.showDropDownOptions.bindWithEvent(window,[dropDowns[i]]));
		selected.addEvent('mouseover',MVP.changeMouseOver.bindWithEvent(window,[dropDowns[i],'border-color','#ffffff']));
		selected.addEvent('mouseout',MVP.changeMouseOver.bindWithEvent(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.bindWithEvent(window,[option,'color','#003366']));
		option.addEvent('mouseover', function(){downDownElement.setStyle('border-color','#ffffff')});
		option.addEvent('mouseout', MVP.changeMouseOver.bindWithEvent(window,[option,'color','#ffffff']));
		option.addEvent('click',MVP.setSelectedItem.bindWithEvent(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.bindWithEvent(window,[item,'background-color','#ffffff']));
		item.addEvent('mouseout',MVP.changeMouseOver.bindWithEvent(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() {
	MVPFilterVars.studielijn = '';
	MVPFilterVars.currentPage = null;
	MVPFilterVars.beroepsgroep = null;
	MVPFilterVars.niveau = null;
	MVPFilterVars.leslocatie = null;
	MVPFilterVars.onderwijsvorm = null;
	
	var dropDowns = $$('.'+MVPFilterVars.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'+MVPFilterVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','underline');
	});
	$$('.sortASC').each(function(item) {
		item.addEvent('click',MVP.changeSort.bindWithEvent(window,['ASC']));
	});
	$$('.sortDESC').each(function(item) {
		item.addEvent('click',MVP.changeSort.bindWithEvent(window,['DESC']));
	});
};

MVP.changeSort = function(e,type){
	$$('.sort'+MVPFilterVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','none');
	});
	MVPFilterVars.currentSort = type;
	$$('.sort'+MVPFilterVars.currentSort).each(function(item) {
		item.setStyle('text-decoration','underline');
	});
	MVP.loadResults();
}

MVP.getPages = function(){
	MVP.getFilterProperties();
	var postObject = 	{
				action: MVPFilterVars.jsonactions.pages,
				limit: MVPFilterVars.limit,
				offset: MVPFilterVars.offset,
				studielijn: MVPFilterVars.studielijn,
				beroepsgroep: MVPFilterVars.beroepsgroep,
				niveau: MVPFilterVars.niveau,
				leslocatie: MVPFilterVars.leslocatie,
				onderwijsvorm: MVPFilterVars.onderwijsvorm,
				sortType: MVPFilterVars.currentSort
			};
	
	var request = new Request.JSON({
		url: MVPFilterVars.jsonurl,
		data: { json: JSON.encode(postObject)},
		onComplete:MVP.handlePages.bindWithEvent(window)
	}).send();
}

MVP.handlePages = function(jsonObject){
	$$('.'+MVPFilterVars.resultcounter).each(function(item) {
		item.set('html',jsonObject.resultCount);
	});
	var pages = jsonObject.pages;
	var pagesElement = $$('.'+MVPFilterVars.pagesID);
	pagesElement.each(function(item) {
		item.empty();
	});
	MVPFilterVars.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){
				MVPFilterVars.currentPage.include(aElement);
				aElement.addClass('selected');
			}
			aElement.innerHTML = i;
			aElement.id  = 'page-'+index+'-'+i;
			aElement.addEvent('click',MVP.switchPage.bindWithEvent(window,[aElement]));
			aElement.injectInside(item);
		});
	}
	
	if (MVPFilterVars.prevNextButtonsHasEvent === false) {
		$$('.'+MVPFilterVars.pageLeft).each(function(item) {
			item.addEvent('click', MVP.slidePage.bindWithEvent(window, ['prev']));
		});
		$$('.'+MVPFilterVars.pageRight).each(function(item) {
			item.addEvent('click', MVP.slidePage.bindWithEvent(window, ['next']));
		});
		MVPFilterVars.prevNextButtonsHasEvent = true;
	}
}

MVP.slidePage = function(e,type){
	if(type == 'prev'){
		if(MVPFilterVars.currentPage.getLast().getPrevious() != null){
			MVP.switchPage(window,MVPFilterVars.currentPage.getLast().getPrevious());
		}
	}
	if(type == 'next'){
		if(MVPFilterVars.currentPage.getLast().getNext() != null){
			MVP.switchPage(window,MVPFilterVars.currentPage.getLast().getNext());
		}
	}
}

MVP.switchPage = function(e,page){
	MVPFilterVars.currentPage.each(function(item) {
		item.removeClass('selected');
	});
	MVPFilterVars.currentPage = $$('#page-0-'+page.innerHTML+', #page-1-'+page.innerHTML);
	MVPFilterVars.currentPage.each(function(item) {
		item.addClass('selected');
	});
	MVPFilterVars.offset = (page.innerHTML * MVPFilterVars.limit) - MVPFilterVars.limit; 
	MVP.loadResults();
}

MVP.getFilterProperties = function(){
	MVPFilterVars.studielijn = $('studielijnid').innerHTML;
	MVPFilterVars.beroepsgroep = $('beroepsgroepid').innerHTML;
	MVPFilterVars.niveau = $('niveauid').innerHTML;
	MVPFilterVars.leslocatie = $('leslocatieid').innerHTML;
	MVPFilterVars.onderwijsvorm = $('onderwijsvormid').innerHTML;
}

MVP.loadResults = function(){
	MVP.getFilterProperties();
	var postObject = 	{
		action: MVPFilterVars.jsonactions.filter,
		limit: MVPFilterVars.limit,
		offset: MVPFilterVars.offset,
		studielijn: MVPFilterVars.studielijn,
		beroepsgroep: MVPFilterVars.beroepsgroep,
		niveau: MVPFilterVars.niveau,
		leslocatie: MVPFilterVars.leslocatie,
		onderwijsvorm: MVPFilterVars.onderwijsvorm,
		sortType: MVPFilterVars.currentSort
	};

	var request = new Request.JSON({
		url: MVPFilterVars.jsonurl,
		data: { json: JSON.encode(postObject)},
		onComplete:MVP.handleFilterResults.bindWithEvent(window)
	}).send();
}

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.set('html','Deze zoekactie heeft geen resultaten opgeleverd');
		noResults.injectInside($('results'));
	}
}

MVP.getOveralCount = function(){
	var postObject = {
		action: MVPFilterVars.jsonactions.overall
	};

	var request = new Request.JSON({
		url: MVPFilterVars.jsonurl,
		data: { json: JSON.encode(postObject)},
		onComplete:MVP.setOveralCount.bindWithEvent(window)
	}).send();
}

MVP.setOveralCount = function(jsonObject){
	var resultCount = jsonObject.resultCount;
	$$('.'+MVPFilterVars.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();
		$(MVPFilterVars.resetButton).addEvent('click', function() {
			MVP.resetFilter();
		});
	}
});
