window.addEvent('domready', function(){
	Locale.use('nl-NL');
	core_init();

	if($('pc-application-frame'))
		front_pc_application_frame();
	/*else if($(''))
		*/
});

function onfocus_replace(sCSS3){
	$$(sCSS3).addEvent('focus', function(){
		if(undefined === this._value)
			this._value = this.value;

		if(this._value === this.value)
			this.value = '';
	});
	$$(sCSS3).addEvent('blur', function(){
		if(this.value === '')
			this.value = this._value;
	});
}

function sw_lang_init(){
	var aLang = $$('.nrblock-lang .nrblock-lang-inner');

	aLang.addEvent('mouseover', function(){
		if(undefined !== this.rTimer && this.rTimer)
			clearTimeout(this.rTimer);
		this.addClass('hover');
		this._height = this.getHeight();
		this.setStyle('height', 'auto');});
	aLang.addEvent('mouseout', function(){
		this.rTimer = setTimeout('close_sw_lang()', 300);
	});
}

function close_sw_lang(){
	$$('.nrblock-lang .nrblock-lang-inner').setStyle('height', this._height);
	$$('.nrblock-lang .nrblock-lang-inner').removeClass('hover');
}

function sw_type_init(){
	var aType = $$('.nrblock-type .nrblock-type-inner');

	aType.addEvent('mouseover', function(){
		if(undefined !== this.rTimer && this.rTimer)
			clearTimeout(this.rTimer);
		this.addClass('hover');
		this._height = this.getHeight();
		this.setStyle('height', 'auto');
		this.setStyle('z-index', 3);
	});
	aType.addEvent('mouseout', function(){
		this.rTimer = setTimeout('close_sw_type()', 300);
	});
}

function close_sw_type(){
	$$('.nrblock-type .nrblock-type-inner').setStyle('height', this._height);
	$$('.nrblock-type .nrblock-type-inner').setStyle('z-index', 2);
	$$('.nrblock-type .nrblock-type-inner').removeClass('hover');
}

function core_init(){
	nrview_init();
	sw_lang_init();
	sw_type_init();
	nrblock_init();
	nrslider_init();
	nrdate_init();
}

function nrslider_init(){
	$$('.nrslider').each(function(o){

		// vars
		var aInput = o.getElements('input');
		if(aInput.length === 4){
			o.oInput     = aInput[3];
			o.oValue     = o.getElement('.value');
			o.aVals      = aInput[2].value.toString().split('|');

			var aRange   = aInput[0].value.toString().split('|');
			var aSteps   = aInput[1].value.toString().split('|');
			var iCurrent = parseInt(o.oInput.value.toString());

			o.oSlider = new Slider(o.getElement('.inner'), o.getElement('.knob'), {
				 steps: parseInt(aSteps[1])
				,range: [parseInt(aRange[1]),parseInt(aRange[2])]
				,initialStep: iCurrent
				,snap: false, wheel: true, offset: 0
				,onChange: function(){
					o.oInput.value = this.step;

					if(o.aVals.length>1 && undefined !== o.aVals[this.step])
						o.oValue.innerHTML = o.aVals[this.step];
				}
			});
		}
	});
}

				function nrdate_init(){

					$$('.nrdatefield').each(function(o){

						// vars
						var aInput = o.getElements('input');
						if(aInput.length === 3){
							var sMin = aInput[0].value; // min
							var sMax = aInput[1].value; // max
							var sCur = aInput[2]; // cur

							if(!sMin) sMin = null;
							if(!sMax) sMax = null;

							new DatePicker(sCur, {
								 minDate: sMin
								,maxData: sMax
								,format: '%A %e %B %Y'
								,pickerClass: 'datepicker_vista'
							});

						}
					});
					$$('.front-year-datefield').each(function(o){
						new DatePicker(o, {
							 format: '%A %e %B %Y'
							,pickerClass: 'datepicker_vista'
							,startView: 'decades'
						});
					});
				}

function core_ajax_init(){
	nrview_init();
	nrform_init();
	nrslider_init();
	nrdate_init();

	if($$('.ceraBox').length>0)
		box.addItems('.ceraBox');

	if(window['tinyMCE_ajax_init'])
		tinyMCE_ajax_init();

	if($('pca_resultaten_tbody'))
		init_pca_filter_aanmeldingen();

	if($('pca_resultaten_tbody-voorselectie'))
		init_pca_filter_voorselectie();

	if($('pca_resultaten_tbody-nominatie'))
		init_pca_filter_nominatie();

	if($('pca_resultaten_tbody-stemmen'))
		init_pca_filter_stemmen();
}

function nrform_init(){
	$$('form.nrform-ajax').each(function(o){
		o.oRes = o.getElement('.nrform-info');
		o.oRes.morph.duration = 1500;
		o.getElements('[type=text], textarea').each(function(el){
			new OverText(el);
		});


		o.oF  = new Form.Request(o, o.oRes.getElement('div'), {
		   'requestOptions': {'useSpinner': false},
			'resetForm': false
		});
		o.oFV = new Form.Validator.Inline(o);
		o.oFV.addEvent('formValidate', function(b, f){
			$$('textarea.tmce, textarea.tmce_small').each(function(o){
				window.tinyMCE.execInstanceCommand(o,'mceCleanup', o);
				window.tinyMCE.triggerSave(false, true);
				window.tinyMCE.execCommand('mceRemoveControl',true,o.id.toString());
				window.tinyMCE.execCommand('mceAddControl',true,o.id.toString());
			});

			if(b)
				f.oF.send();
		});
		o.oF.addEvent('send', function(){
			o.oRes.setStyle('height', 'auto');
			o.oRes.addClass('loading');
			o.oRes.getElement('div').set('html', 'Bezig met verwerken...');
		});
		o.oF.addEvent('failure', function(){
			o.oRes.removeClass('loading');
			o.oRes.getElement('div').set('html', 'Kon gegevens niet verwerken!');
		});
		o.oF.addEvent('success', function(){
			o.oRes.removeClass('loading');

			if(!o.oRes.getElement('div').get('html'))
				o.oRes.getElement('div').set('html', 'Succesvol verwerkt');

			setTimeout(function(){
				o.oRes.morph({'height':[o.oRes.getHeight(),'0px']});
			}, 2500);
		});
	});
}

function nrblock_init(){
	$$('ul.nrblock-title li.block.active.ajax a').each(function(o){ o.onclick();});
}

function nralert(sMsg){
	// later lightface
	alert(sMsg);
}
function nrconfirm(sMsg, sURL){
	// later lightface
	if(confirm(sMsg))
		if(undefined !== sURL && sURL)
			do_redirect(sURL);
		else return true;
	return false;
}

function to_alphanumeric_str(mVal){
	return mVal.toString().replace(/[^\w -]+/gi, '');
}
function to_int(mVal, mDef){
	var i = parseInt(mVal);
	if(isNaN(i) || i <1)
		return mDef;
	return i;
}
function to_str(mVal, mDef){
	var s =  mVal.toString();
	if(!s)
		return mDef;
	return s;
}

function rewrite_str(mVal){
	return to_alphanumeric_str(mVal).replace(/[ _-]+/gi,'-');
}

function filter(sType, sCSS3Src, mDef, sCSS3Tar){
	var sFN = '';

	if(undefined === sCSS3Tar)
		var sCSS3Tar = sCSS3Src;

	switch(sType){
		case 'str':
		case 'string':
			sFN = 'to_str';break;

		case 'int':
		case 'integer':
			sFN = 'to_int';break;

		case 'rewrite':
			sFN = 'rewrite_str';break;
	}

	sFN = window[sFN];

	var aCSS3Src = $$(sCSS3Src);
	var aCSS3Tar = (sCSS3Src === sCSS3Tar) ?aCSS3Src :$$(sCSS3Tar);

	aCSS3Src.each(function(o,i){
		if(undefined !== aCSS3Tar[i])
			if(undefined !== aCSS3Src[i].value){
				if(sFN(aCSS3Src[i].value, mDef))
					aCSS3Tar[i].value = sFN(aCSS3Src[i].value, mDef);
			} else
				aCSS3Tar[i].innerHTML = sFN(aCSS3Src[i].innerHTML, mDef);
	});
}

function do_delete(sURL){
	if(nrconfirm('Weet u zeker dat u dit item wilt verwijderen?'))
		do_redirect(sURL);
}


function do_async_delete(sURL,oThis,sVar){
	if(undefined == sVar) sVar = 'tr';

	if(nrconfirm('Weet u zeker dat u dit item wilt verwijderen?')){
		new Request({
			 'url': sURL
			,onComplete: function(){
				var oP = $(oThis).getParent(sVar);
				var oT = oP.getParent('tbody');

				oP.dispose();

				if(!oT.getElement('tr')){

					iColspan = 1;

					if((oTbl = oT.getParent('table')))
						if((oTr = oTbl.getElement('tr')))
							iColspan = oTr.getChildren().length;

					oT.innerHTML = '<tr><td colspan="'+iColspan+'"><i>Geen gegevens gevonden</i></td></tr>';
				}
			}
			,onFailure: function(){  alert('Kon item niet verwijderen!');}
		}).send();
	}
}

function do_redirect(sURL){
	document.location = sURL;
}

function submit(sFrm){
	var oFrm = $(sFrm);

	if(null !== oFrm)
		oFrm.submit();
}

function fire_submit(sFrm){
	var oFrm = $(sFrm);

	if(null !== oFrm)
		oFrm.fireEvent('submit');
}

function nrshowhide(oThis, sUrl, iID, sField, bCat){
	oImg  = $(oThis).getElement('img');
	bHide = (oImg.src.toString().indexOf('16_hide.png') == -1);

	if(bHide){
		oImg.src = oImg.src.replace('16_show.png', '16_hide.png');
		async_background_call(sUrl+'/async_toggle/'+iID+'/?bActive=1&bCat='+bCat+'&sField='+sField);
	} else {
		oImg.src = oImg.src.replace('16_hide.png', '16_show.png');
		async_background_call(sUrl+'/async_toggle/'+iID+'/?bActive=0&bCat='+bCat+'&sField='+sField);
	}
}

function async_background_call(sUrl){
	new Request({
		 'url':     sUrl
		,'method': 'get'
		,'link':   'chain'
	}).send();
}

function nrmove(oThis, sUrl, bUp, bCat){

	var oCurTable  = $(oThis).getParent('table');
	var oNextTable =  bUp ?oCurTable.getPrevious('table.nrview-data') :oCurTable.getNext('table.nrview-data');

	if(null !== oNextTable){

		var aCurClass      = oCurTable.className.toString().split(' ');
		var sCurChildClass = null;

		for(var i=0; i<aCurClass.length; i++)
			if(aCurClass[i].indexOf('nrviewid-')>-1)
				sCurChildClass = '.nrview-'+aCurClass[i].replace('nrviewid-', '');

		if(bUp)
			oCurTable.inject(oNextTable, 'before');
		else {
			var oNextNextTable =  bUp ?oNextTable.getPrevious('table.nrview-data') :oNextTable.getNext('table.nrview-data');

			if(null !== oNextNextTable)
				oCurTable.inject(oNextNextTable, 'before');
			else
				oCurTable.inject(oCurTable.getParent('div'), 'bottom');
		}

		if(null !== sCurChildClass){
			var aCurChild = $$(sCurChildClass);

			if(null !== aCurChild){
				aCurChild.reverse();
				aCurChild.inject(oCurTable, 'after');
			}
		}

		new Request({
			 'url':    sUrl
			,'method': 'get'
			,'link':   'chain'
			,'data':   {
				 'bUp': bUp
				,'bCat': bCat
			}
		}).send();
	} else nralert('Kan niet verder naar '+(bUp ?'boven' :'beneden')+' plaatsen');
}

function nrview_init(){
	add_hover_state('table.nrview-data tbody tr');
	add_selected_state('table.nrview-data tbody tr');

	$$('.nrtoggle').addEvent('click', function(evt){
		evt.stop();
		var oT      = this.getParent('table');
		var aTClass = oT.className.toString().split(' ');

		var bHide   = this.hasClass('active');
		this.toggleClass('active');

		if(bHide)
			this.getElement('img').src = this.getElement('img').src.toString().replace('collapse','expand');
		else this.getElement('img').src = this.getElement('img').src.toString().replace('expand','collapse');

		for(var i=0; i<aTClass.length; i++)
			if(aTClass[i].indexOf('nrviewid-')>-1){

				if(bHide)
					$$('div.nrview-'+aTClass[i].replace('nrviewid-','')).addClass('hidden');
				else $$('div.nrview-'+aTClass[i].replace('nrviewid-','')).removeClass('hidden');
			}
	});
}

function remove_hover_state(sCSS3){
	$$(sCSS3).removeEvents('mouseover');
	$$(sCSS3).removeEvents('mouseout');
}
function add_hover_state(sCSS3){
	$$(sCSS3).addEvent('mouseover', function(){this.addClass('hover');});
	$$(sCSS3).addEvent('mouseout',  function(){this.removeClass('hover');});
}
function add_selected_state(sCSS3){
	$$(sCSS3).addEvent('click', function(){this.toggleClass('selected');});
}

function nrblock_sw_tab(oSelf, sURL){
	var bAJAX = (undefined !== sURL);

	if(bAJAX && !oSelf.hasClass('initialized')){
		new Request({
			 url: sURL
			,method: 'get'
			,onRequest: function(){
				this.oC = nrblock_open_tab(oSelf);
			}
			,onSuccess: function(mRes){
				oSelf.addClass('initialized');
				this.oC.set('html', mRes);
				core_ajax_init();
			}
		}).send();
	} else nrblock_open_tab(oSelf);
}
function is_master_user(){
	if (Cookie.read('nru'))
		return (0 === Cookie.read('nru').toString().indexOf('M'));
	return false;
}
function nrblock_open_tab(oSelf){
	var o  = $(oSelf);
	var oP = o.getParent('ul');
	var oC = null;

	oP.getChildren('li a').each(function(_o,_i){
		if(o === _o){
			oP.getElements('li').removeClass('active');
			_o.getParent('li').addClass('active');

			var _oP           = _o.getParent('div').getParent('div');
			var _oInnerChilds = _oP.getElement('div.'+ _oP.className +'-inner').getChildren();

			_oInnerChilds.addClass('hidden');
			_oInnerChilds[_i].removeClass('hidden');
			oC = _oInnerChilds[_i];
		}
	});

	return oC;
}

function nrblock_toggle_help(mMixed){
	if(undefined === mMixed)
		var aBlock   = $$('.nrblock');
	else var aBlock = [$(mMixed).getParent('div.nrblock')];

	var bHelp = false;
	aBlock.each(function(oBlock){
		var aHelp = oBlock.getElements('.nrblock-help');

		if(!bHelp && aHelp.length>0)
			bHelp = true;

		aHelp.toggleClass('hidden');
	});

	if(!bHelp)
		nralert('Er is geen extra informatie beschikbaar voor deze pagina.\n\nU kunt altijd contact met ons opnemen wanneer u graag meer informatie wenst te hebben.');
}

function nrview_toggle_filters(mMixed){
	if(undefined === mMixed)
		return;
	else var aBlock = [$(mMixed).getParent('div.nrblock')];

	aBlock.each(function(oBlock){
		var aFilter = oBlock.getElements('.nrview-filters');
		aFilter.toggleClass('hidden');
	});
}

