// Create scrollWidth method
$.fn[ 'scrollWidth' ] = function(val) {
	if (!this[0]) return;

	return val != undefined ?
	
	// Set the scrollWidth
	this.each(function() {
	this == window || this == document ?
	window.scrollWidth( val ) :
	this[ 'scrollWidth' ] = val;
	}) :
	
	// Return the scrollWidth
	this[0] == window || this[0] == document ?
	self[ 'scrollWidth' ] ||
	$.boxModel && document.documentElement[ 'scrollWidth' ] ||
	document.body[ 'scrollWidth' ] :
	this[0][ 'scrollWidth' ];
};


//------------------ submenu settings (height) and minimum height
$(document).ready( function(){
	
	// set submenu height
	var minheight = 350;
	var x =  $('.maincontent').height();

	
	if (x<minheight && $('.maincontent').height() == null) { // ie7 fix
		$('.maincontent').height(minheight);
		x = minheight;
	}
	
	var x =  $('.maincontent').height();
	$('.submenu').height(x-20).corner({
		tl: { radius: 5 }, tr: { radius: 5 }, bl: { radius: 5 }, br: { radius: 5 }, antiAlias: true
	});
	
});

// --------------------- page turner settings 
$(document).ready( function(){
	
	// activate search form checks
	$('input.b-zoek').parent().submit(function(){
		if ( trim($(this.query).val())=='') {
			return false;
		}
		return true;
	});
	
	// activate pager 
	function validatepager(inputpage) {
		var chkP = parseInt(inputpage.value,10);
		var maxP = parseInt($('#maxpages').html(),10);
		if( maxP==1 || isNaN(chkP)||chkP==''||chkP>maxP || chkP<1 ){
			inputpage.value='';
			return false;
		}
		return true;
	}
	
	$('#pager').submit( function(){
		return validatepager(this.page);
	});
	
	$('input.fld-page-number').blur(function(){
		return validatepager(this);
	});

});

// ----------------------- bijeenkomst editable program
$(document).ready( function(){
	
	ul_init_verwijder_van_mijn_programma();
	if(document.getElementById('myprogram')) {
		ul_load_mijn_programma();
	}
	
	$('.toggler').click( function() {
		$(this).toggleClass('extended');
		$(this).parent().parent().find('.moreprog').slideToggle();
		return false;
		
	});
	
	$('.tl-header[id*="_session_"]')
	.css('cursor','pointer')
	.click( function(){
		var id = $(this).attr('id').replace('header_session_','');
		$(this).find('.sessiontoggler span').toggleClass('collapsed');
		$('#body_session_'+id).slideToggle();
		$(this).toggleClass('sessionheader_collapsed');
		
	});
	
	$('#formMailprogram').submit(function(){
		ul_send_myprogram_mail($(this));
		return false;
	});
	
	$('#formContact').submit(function(){
		ul_send_contactform($(this));
		return false;
	});
});

// ----------------------- prepare table for fixed view and scrollable content
$(document).ready(function(){

	
	var tbh = $('#fixer table.program').height();
	$('#fixer').height( Math.min(520,tbh+20) );
	// make element positioning absolute for scrolling
	$('#fixer td').each(function(){
		tdwidth = 12 * 90;//12 uur * 90px
		var h = $(this).height();
		var pos = $(this).position();
		var postop = pos.top;

		// fix issue with msie
		if ( $.browser.msie && $(this).find('.timewindow').length ) {
			postop -= 1;
			h +=1;
		}

		// now set element position
		$(this).css({marginLeft: 0, marginTop: 0, left:0, top:postop, width:tdwidth, height:h});
	});
	$('#fixer table.program td').css({'position':'absolute'});
	
	
	// fix first row
	$('#fixer tr:first .cel-hours').css('z-index',501);
	
	// listen to scroll event 
	$('#fixer').scroll( function(){
		var newoffsetTop = $(this).scrollTop();
		$(this).find('tr:first td').css({'top':newoffsetTop});
	});

});


// toggle background-color in searchresult rows by setting alternating classname
$(document).ready(function(){

	// search result
	$('.searchresult:not(.blokmode)').each(function(){
		$(this).find('li:odd').each(function(index){
			$(this).addClass('light');
		}) 
	});
	
	// blok scroll
	$('.searchresult.blokmode li:even').each(function(index){
		$(this).addClass('light');
	});

	
});	


// resize images
$(document).ready(function(){
	
	$('.resizeimage').each(function(){
		//alert($(this).attr('src'));
		var width = $(this).width();
		var height = $(this).height();
		$(this).attr('src','/scripts/imageresize.php?src='+$(this).attr('src')+'&h='+height+'&w='+width+'&zc=1');
	});
	$('.resizeimage-width').each(function(){
		//alert($(this).attr('src'));
		var width = $(this).width();
		var height = $(this).height();
		$(this).attr('src','/scripts/imageresize.php?src='+$(this).attr('src')+'&w='+width+'&zc=0').css('height', 'auto');
	});
	
});

function ul_plaats_in_mijn_programma( bijeenkomstid ) {
	
	var baseurl = ul_get_active_site_baseurl();
	
	var myprg = $.cookie('MYPRG'+baseurl);
		
	if(myprg) {
		myprg = myprg.split(',');
	} else {
		myprg = new Array();
	}
	
	var already = false;
	for(var i=0;i<myprg.length;i++) {
		if(myprg[i] == bijeenkomstid) {
			already = true;
		}
	}
	if(!already) {
		//add to cookie array
		myprg.push(bijeenkomstid);
		var myprgstring = myprg.join(',');
		$.cookie('MYPRG'+baseurl,myprgstring,{ path: '/'});
		
		//refresh
		ul_load_mijn_programma();
	}
	
	$('#bmptoevoegen_'+bijeenkomstid).addClass('mijnprogrammatoevoegenhidden');
	$('#bmpverwijderen_'+bijeenkomstid).removeClass('mijnprogrammaverwijderenhidden');

	ul_update_myprog(myprg.length);
	
}

function ul_plaats_in_mijn_programma_modal( bijeenkomstid ) {
	
	var baseurl = ul_get_active_site_baseurl();
	
	var myprg = $.cookie('MYPRG'+baseurl);
		
	if(myprg) {
		myprg = myprg.split(',');
	} else {
		myprg = new Array();
	}
	
	var already = false;
	for(var i=0;i<myprg.length;i++) {
		if(myprg[i] == bijeenkomstid) {
			already = true;
		}
	}
	if(!already) {
		//add to cookie array
		myprg.push(bijeenkomstid);
		var myprgstring = myprg.join(',');
		$.cookie('MYPRG'+baseurl,myprgstring,{ path: '/'});
		
		//refresh
		ul_load_mijn_programma();
	}
	$.modal.close();
	
	$('#bmptoevoegen_'+bijeenkomstid).addClass('mijnprogrammatoevoegenhidden');
	$('#bmpverwijderen_'+bijeenkomstid).removeClass('mijnprogrammaverwijderenhidden');

	ul_update_myprog(myprg.length);
	
}

function ul_load_mijn_programma() {

}

function ul_init_mijn_programma() {
	setTimeout('redrawCorners();', 0);
}

function ul_init_verwijder_van_mijn_programma() {
	$('.delbtn').click( function(){
		$(this).hide(); // hide close button
		var row = $(this).parent().parent().parent().parent();
		var id = row.attr('id').replace('pi_','');
		row.animate( {'height':'1px'}, 500, function(){ $(row).hide() } ); // scroll up
		ul_verwijder_van_mijn_programma(id);

		var baseurl = ul_get_active_site_baseurl();
		var myprg = $.cookie('MYPRG'+baseurl);
	
		if(!myprg) {
			location.reload('..');
		}
	});
}

function ul_verwijder_van_mijn_programma(bijeenkomstid) {
	
	var baseurl = ul_get_active_site_baseurl();
	
	var myprg = $.cookie('MYPRG'+baseurl);
	
	if(myprg) {
		myprg = myprg.split(',');
	} else {
		myprg = new Array();
	}
	
	var newMyprg = new Array();
	for(var i=0;i<myprg.length;i++) {
		if(myprg[i] != bijeenkomstid) {
			newMyprg.push(myprg[i]);
		}
	}
	
	var myprgstring = newMyprg.join(',');
	$.cookie('MYPRG'+baseurl,myprgstring,{ path: '/'});
	
	$('#bmpverwijderen_'+bijeenkomstid).addClass('mijnprogrammaverwijderenhidden');
	$('#bmptoevoegen_'+bijeenkomstid).removeClass('mijnprogrammatoevoegenhidden');
	
	ul_update_myprog(newMyprg.length);
}

//laat mijnprogramma knop zien indien er iets in zit
function ul_update_myprog( counter ) {
	$('#myprgcount').html(counter);
	if( counter > 0 ) {
		$('#mijnprogrammalink').removeClass('mijnprogrammahidden');
	} else {
		$('#mijnprogrammalink').addClass('mijnprogrammahidden');
	}
}

// show modal with info about bijeenkomst
function ul_modal_bijeenkomst( agendaid, bijeenkomstid ) {

	xajax_xloadProgramitemIntoModal(agendaid,bijeenkomstid,'modalbody');

}

//deze functie wordt vanuit de xajax call hierboven aangeroepen.
// ajax = asychroon, en bij xajax heb je geen completed handler
function ul_show_modal_bijeenkomst() {
	var modalhtml = $('#basic-modal-content').html();

	//render modal
	$.modal( modalhtml );
	

	$('#modalbody ul').css('background-color','transparent');
	
	$('#modalbody .tl-header').corner({
		tl: { radius: 5 }, tr: { radius: 5 },bl: { radius: 0 }, br: { radius: 0 },  antiAlias: true
	});
	$('#modalbody .tl-body').css('background-color','#fff').corner({
		tl: { radius: 0 }, tr: { radius: 0 },bl: { radius: 5 }, br: { radius: 5 },  antiAlias: true
	});
}


function ul_get_active_site_baseurl() {
	if(ul_use_httphost()) {
		return '';
	} else {
		var path = location.pathname.split('/');
		return path[1];
	}
}

function ul_use_httphost() {
	return (location.host.indexOf('surfsites')==-1);
}


function ul_validate_email(email) {
     email = email.toLowerCase();
     var pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
     var regex = new RegExp(pattern);
     return regex.test(email);
 }
 

function ul_send_myprogram_mail(jqformObj) {
	var naam = jqformObj.find('#naam');
	var email = jqformObj.find('#email');
	var errors = 0;
	if(naam.val()=='') {
		errors++;
		naam.parents('.form_row').addClass('error');
	} else {
		naam.parents('.form_row').removeClass('error');
	}
	
	if(email.val()=='' || !ul_validate_email(email.val())) {
		errors++;
		email.parents('.form_row').addClass('error');
	} else {
		email.parents('.form_row').removeClass('error');
	}
	if(!errors) {
		jqformObj.find('p.form_error').hide();
		xajax_xSendMyProgramMail(jqformObj.serialize());
		return true;
	} else {
		jqformObj.find('p.form_error').show();
		return false;
	}
	
}

function ul_myprogram_sent() {
	var naam = $('#formMailprogram').find('input#naam');
	var email = $('#formMailprogram').find('input#email');

	naam.val('');
	email.val('');
	$('.form_success').show();
}

function ul_send_contactform(jqformObj) {
	var aanhef 		= jqformObj.find('input[name="aanhef"]');
	var voornaam 	= jqformObj.find('#voornaam');
	var achternaam 	= jqformObj.find('#achternaam');
	var email 		= jqformObj.find('#email');
	var bericht 	= jqformObj.find('#bericht');
	var captcha 	= jqformObj.find('#captcha');
	
	var errors = 0;
	if(aanhef.filter(':checked').length<1) {
		errors++;
		aanhef.parents('.form_row').addClass('error');
	} else {
		aanhef.parents('.form_row').removeClass('error');
	}
	if(voornaam.val()=='') {
		errors++;
		voornaam.parents('.form_row').addClass('error');
	} else {
		voornaam.parents('.form_row').removeClass('error');
	}
	if(achternaam.val()=='') {
		errors++;
		achternaam.parents('.form_row').addClass('error');
	} else {
		achternaam.parents('.form_row').removeClass('error');
	}
	if(email.val()=='' || !ul_validate_email(email.val())) {
		errors++;
		email.parents('.form_row').addClass('error');
	} else {
		email.parents('.form_row').removeClass('error');
	}
	if(bericht.val()=='') {
		errors++;
		bericht.parents('.form_row').addClass('error');
	} else {
		bericht.parents('.form_row').removeClass('error');
	}
	if(captcha.val()=='') {
		errors++;
		captcha.parents('.form_row').addClass('error');
	} else {
		captcha.parents('.form_row').removeClass('error');
	}
	
	if(!errors) {
		jqformObj.find('p.form_error').hide();
		jqformObj.submit();
	} else {
		jqformObj.find('p.form_error').show();
		return false;
	}
	
	
}


//form
function trim(value) {
  value = value.replace(/^\s+/,'');
  value = value.replace(/\s+$/,'');
  return value;
}

function validateEmail(email) {
	var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	if( !emailReg.test( email ) ) {
		return false;
	} else {
		return true;
	}
}

function validatePhone(phone) {
	return true;
}

function ul_check_fileuploads(form) {
	
	var ok = true;
	
	$(form).find('input.checkfile').each(function(){
	
		if($(this).val()) {
		
			var valid = $(this).attr("valid");
			var valid_extensions = new RegExp(valid);
			
			if(!valid_extensions.test($(this).val())) {
				ok = false;
				$(this).closest('.form_row').addClass('error');
			} else {
				$(this).closest('.form_row').removeClass('error');
			}
		}
		
	});
	
	return ok;
}

$(document).ready(function(){

	
	$('form.autoeval').submit(function(){
		var ok = true;
		$(this).find('.form_required').parent().each(function() {
			var input = $(this).find('input:not(.depending),textarea:not(.depending)');
			if (input.val()=='') {
				ok = false;
				$(this).addClass('error');
			} else if( $(input).hasClass('validate-email') ) {
				if (!validateEmail(input.val())) {				
					ok = false;
					$(this).addClass('error');
				} else {
					$(this).removeClass('error');
				}
			}  else if( $(input).hasClass('validate-phone') ) {
				if (!validatePhone(input.val())) {				
					ok = false;
					$(this).addClass('error');
				} else {
					$(this).removeClass('error');
				}
			} else if ( $(input).hasClass('radio') ) {
				var checked = $(this).find('input.radio:checked');
				if(checked.length==0) {
					ok = false;
					$(this).addClass('error');
				} else {
					$(this).removeClass('error');
				}
			
			} else {
				$(this).removeClass('error');
			}
			
			if(ok) {
				var depending = $(this).find('input.depending,textarea.depending');
				if(depending.length==1) {
					var dependingOn = $(this).find('#'+depending.attr("rel"));
					if(dependingOn.hasClass('radio') && $(dependingOn).is(':checked')) {
						if (depending.val()=='') {
							ok = false;
							$(this).addClass('error');
						} else if( $(depending).hasClass('validate-email') ) {
							if (!validateEmail(depending.val())) {				
								ok = false;
								$(this).addClass('error');
							} else {
								$(this).removeClass('error');
							}
						}  else if( $(depending).hasClass('validate-phone') ) {
							if (!validatePhone(depending.val())) {				
								ok = false;
								$(this).addClass('error');
							} else {
								$(this).removeClass('error');
							}
						} else {
							$(this).removeClass('error');
						}
	
					}
					
				}
			}
		});
		
		if(ok) {
			ok = ul_check_fileuploads($(this));
		}
		
		if (!ok) {
			$(this).find('p.form_error').show();
		} else {
			$(this).find('p.form_error').hide();
		}
		return ok;
	});
	
	
	
});
