var iconOK = '<img src="'+sDomain+'images/template/icon1.gif" alt="" />';
var iconDisabled = '<img src="'+sDomain+'images/template/icon2.gif" alt="" />';
var iconError = '<img src="'+sDomain+'images/template/icon3.gif" alt="" />';

var aMessage = new Array();

var display = '';

if(sLang == 'nl'){
	
	aMessage[0] = 'Vul a.u.b. uw voorletters in.';
	aMessage[1] = 'Vul a.u.b. uw achternaam in.';
	aMessage[2] = 'Vul a.u.b. uw naam in.';
	aMessage[3] = 'Vul a.u.b. uw adres in.';
	aMessage[4] = 'Vul a.u.b. een geldig adres in.';
	aMessage[5] = 'Vul a.u.b. uw postcode in.';
	aMessage[6] = 'Vul a.u.b. een geldige postcode in.';
	aMessage[7] = 'Vul a.u.b. uw woonplaats in.';
	aMessage[8] = 'Vul a.u.b. een geldige woonplaats in.';
	aMessage[9] = 'Vul a.u.b. uw e-mailadres in.';
	aMessage[10] = 'Vul a.u.b. een geldig e-mailadres in.';
	aMessage[11] = 'Vul a.u.b. uw telefoonnummer in.';
	aMessage[12] = 'Vul a.u.b. een geldig telefoonnummer in.';
	aMessage[13] = 'Vul a.u.b. uw vraag in.';
	aMessage[14] = 'Vul a.u.b. uw bericht in.';
	aMessage[15] = 'Vul a.u.b. de naam van de bekende in.';
	aMessage[16] = 'Vul a.u.b. het e-mailadres van de bekende in.';
	aMessage[17] = 'Vul a.u.b. uw land in.';
	
} else {
	
	aMessage[0] = 'Please enter your initials.';
	aMessage[1] = 'Please enter your surname.';
	aMessage[2] = 'Please enter your name.';
	aMessage[3] = 'Please enter your address.';
	aMessage[4] = 'Please enter a valid address.';
	aMessage[5] = 'Please enter your postal code.';
	aMessage[6] = 'Please enter a valid postal code.';
	aMessage[7] = 'Please enter your city/town.';
	aMessage[8] = 'Please enter a valid city/town.';
	aMessage[9] = 'Please enter your email address.';
	aMessage[10] = 'Please enter a valid email address.';
	aMessage[11] = 'Please enter your phone number.';
	aMessage[12] = 'Please enter a valid phone number.';
	aMessage[13] = 'Please enter your question.';
	aMessage[14] = 'Please enter your message.';
	aMessage[15] = 'Please enter your friend\'s name';
	aMessage[16] = 'Please enter your friend\'s email address';
	aMessage[17] = 'Please enter your country.';
	
}

//initiaze general functions when document is ready
$(document).ready(function() { 
	initSlider();
	initPrice(nPrijsMin, nPrijsMax);
	initSelectbox();
	initCheckbox();
	changeLanguage();
	resetField();
	initSIFR();
	hoverItem();
	styleSwitch();
});

//initiaze general functions when everything is loaded
$(window).load(function(){
						
});

function changeLanguage() {
	$('#language').click(function() {
		$('#language').fadeOut(100);	
		$('#flags').fadeIn(200);
	});	
	$('#flags').click(function() {
		$('#flags').fadeOut(100);
		$('#language').fadeIn(200);	
	});	
}

function initSelectbox(){
	$('#select_place, #per_pagina, #sBetreft').selectbox();
}

function initCheckbox(){
	$('input:checkbox').each( function() {
		(this.checked) ? $('#fake' + this.id).addClass('fakechecked') : $('#fake_' + this.id).removeClass('fakechecked');
	});
	$('.fakecheck').click(function(){
		($(this).hasClass('fakechecked')) ? $(this).removeClass('fakechecked') : $(this).addClass('fakechecked');
		$(this.hash).trigger('click');
		return false;
	});
}

function formatPrice(nNumber) {
	var nResult;
	
	if(nNumber.length < 6) {
		nResult = nNumber.substr(0, 2) + '.' + nNumber.substr(nNumber.length - 3, 3);
	} else if(nNumber.length < 7) {
		nResult = nNumber.substr(0, 3) + '.' + nNumber.substr(nNumber.length - 3, 3);
	} else {
		nResult = nNumber.substr(0, 1) + '.' + nNumber.substr(1, 3) + '.' + nNumber.substr(nNumber.length - 3, 3);
	}
	
	if(nNumber == 0) {
		nResult = 0;	
	}
	return nResult;
}

function initPrice(p_nMin, p_nMax) {
	
	if(p_nMin == 'default' && p_nMax == 'default' ){
		var nFirst = 200000;
		var nSec = 1700000;
	} else {
		var nFirst = p_nMin;
		var nSec = p_nMax;	
	}
	
	var nMinimum;
	var nMin;
	var nMaximum;
	var nMax;
	
	$('.price').slider({
		range: true,
		animate: true,
		step: 100000,
		min: 0,
		max: 2500000,
		values: [nFirst,nSec],
		slide: function(event, ui) {
			
			$('#min').val(ui.values[0]);
			$('#max').val(ui.values[1]);
			
			nMin = String(ui.values[0]);
			nMinimum = formatPrice(nMin);
			
			nMax = String(ui.values[1]);
			nMaximum = formatPrice(nMax);
			
			$('#price_min').html('&euro; '+ nMinimum);
			$('#price_max').html('&euro; '+ nMaximum);
		}
	});
	
	nMin = String($('.price').slider('values', 0));
	$('#min').val(nMin);
	nMinimum = formatPrice(nMin);
	
	nMax = String($('.price').slider('values', 1));
	$('#max').val(nMax);
	nMaximum = formatPrice(nMax);
	
	$('#price_min').html('&euro; '+ nMinimum);
	$('#price_max').html('&euro; '+ nMaximum);
}

function initSlider() {
	$('.slider').cycle({
		speed: 500,
		pause: 0,
		continuous: 0,
		autostop: true,
		timeout: 0,
		before: function(curr,next,opts,forwardFlag) {
		},
		after: function(curr,next,opts) {
			if(opts.nextSlide == 0){
				$('#next').hide();	
			} else {
				$('#next').show();		
			}
			if(opts.currSlide == 0){
				$('#prev').hide();	
			} else {
				$('#prev').show();		
			}
		},
		end: function() {
			
		},
		fx: 'scrollHorz',
		next: '#next',
		prev: '#prev'
	});						  
	
}

function centerPager(){
	var nWidth = $('.pager ul').outerWidth(true);
	var nLeft = (520 - nWidth) / 2;
	$('.pager ul').css('width',nWidth).css('margin-left',nLeft - 5).show();
}

function resetField() {
	$('.field, form#zoekprofiel-stap3 .formbox input').each(function() {
		$(this).focus(function() {
			if(this.value == this.defaultValue) {
				this.value = '';
			}
		}).blur(function() {
			if(!this.value.length) {
				this.value = this.defaultValue;
			}
		});
	});
}

function hoverItem(){
	$('#houses .item:not(.hover)').hover(function(){
		$(this).addClass('hover');				   
	},function(){
		$(this).removeClass('hover');
	});
}

function disableSelectbox(){
	$('#filter .disabled').fadeTo(0, 0.2);
	$('#filter .disabled input.selectbox, #filter .disabled div.selectbox').unbind();
}

function hoverButtonsLeft(){
	$('#left #spot_wrapper .item:not(.active)').hover(function(){
		$(this).addClass('active');										
	}, function(){
		$(this).removeClass('active');	
	});
}

function showTooltip(){
	$('.nav_bar a.fave').tooltip({  
		delay: 0, 
		showURL: false, 
		fade: 0,
		fixPNG: true,
		top: -60,
		left: -140
	});	
}

function zebraTable(){
	$('#table_details div.row:even').addClass('odd');	
}

function photoSlider(){
	
	$('#loading').fadeOut(300, function(){
		$('#test').slideKey({ bKeyboard: true, sExtension: 'large', nFade: 600 });
		$(this).remove();
	});

}

function initSIFR(){
	sIFR.replace(din, {
	selector: '#content h1.title'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 25px; line-height: 30px; letter-spacing: -1; color: #8e0075; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din2, {
	selector: '#content #right h1.detail'
	,css: [
	  '.sIFR-root { font-weight: bold; font-size: 27px; line-height: 30px; letter-spacing: -1; color: #8e0075; }',
	  'small { font-weight: normal; font-size: 17px; color: #8e0075; letter-spacing: 0; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din2, {
	selector: '#content #right h4.detail'
	,css: [
	  '.sIFR-root { font-weight: bold; font-size: 18px; line-height: 30px; letter-spacing: 0; color: #8e0075; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din2, {
	selector: '#content #right h2.default'
	,css: [
	  '.sIFR-root { font-weight: bold; font-size: 18px; line-height: 30px; letter-spacing: 0; color: #002140; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din, {
	selector: '#header #search h3'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 28px; color: #77046c; letter-spacing: -1; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din, {
	selector: '#content h3'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 25px; color: #002140; letter-spacing: -1; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din, {
	selector: '#recent h2'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 25px; letter-spacing: -1; color: #8e0075; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din, {
	selector: '.footer h5'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 19px; letter-spacing: -1; color: #b9c2ff; }'
	],
	wmode: 'transparent'
	});	
	
	sIFR.replace(din2, {
	selector: '.formbox h5'
	,css: [
	  '.sIFR-root { font-weight: normal; font-size: 14px; color: #8d0075; }'
	],
	wmode: 'transparent'
	});
	
	sIFR.replace(din2, {
	selector: '#content #right h4.zoek'
	,css: [
	  '.sIFR-root { font-weight: bold; font-size: 20px; color: #8e0075; }'
	],
	wmode: 'transparent'
	});
}

function initPrice2(p_nMin, p_nMax) {
	
	if(p_nMin == 'default' && p_nMax == 'default' ){
		var nFirst = 200000;
		var nSec = 1700000;
	} else {
		var nFirst = p_nMin;
		var nSec = p_nMax;	
	}
	
	var nMinimum;
	var nMin;
	var nMaximum;
	var nMax;
	
	$('.price2').slider({
		range: true,
		animate: true,
		step: 100000,
		min: 0,
		max: 2500000,
		values: [nFirst,nSec],
		slide: function(event, ui) {
		
			$('#min2').val(ui.values[0]);
			$('#max2').val(ui.values[1]);
			
			nMin = String(ui.values[0]);
			nMinimum = formatPrice(nMin);
			
			nMax = String(ui.values[1]);
			nMaximum = formatPrice(nMax);
			
			$('#price_min2').html('&euro; '+ nMinimum);
			$('#price_max2').html('&euro; '+ nMaximum);
		},
		change: function(event, ui) { 
		
			loadAanbod('prijs_min=' + ui.values[0] + '&prijs_max=' + ui.values[1]);
		}
	});
	
	nMin = String($('.price2').slider('values', 0));
	$('#min2').val(nMin);
	nMinimum = formatPrice(nMin);
	
	nMax = String($('.price2').slider('values', 1));
	$('#max2').val(nMax);
	nMaximum = formatPrice(nMax);
	
	$('#price_min2').html('&euro; '+ nMinimum);
	$('#price_max2').html('&euro; '+ nMaximum);
}

function clearFilter(){
	
	$('#clear_filter').click(function(){
		
		//reset inputs
		$('#filter_form').find(':input').each(function(){
			switch(this.type) {
				case 'password':
				case 'select-multiple':
				case 'select-one':
				case 'text':
				case 'textarea':
					$(this).val('');
				break;
				case 'checkbox':
				case 'radio':
					this.checked = false;
			}
		});
		
		//reset sliders
		$('.price,.price2').slider('option', 'values', [200000,1700000]).slider('enable');
		$('#min,#min2').val(200000);
		$('#max,#max2').val(1700000);
		var nMin = String(200000);
		var nMax = String(1700000);
		$('#price_min,#price_min2').html('&euro; '+ formatPrice(nMin));
		$('#price_max,#price_max2').html('&euro; '+ formatPrice(nMax));
		
		//reset checkboxes
		$('#filter_form .fakecheck').removeClass('fakechecked');
		
		loadAanbod('clearfilter=yes');
		
	});
}

function aanbod(){
	//filter
	$('.fakecheck').click(function(){
		
		var nInput = $(this).attr('id').replace('fake_','');
		var aFilterType = nInput.split('-');
		var sFilterType = aFilterType[0];
		var sValue = $('input#'+nInput).val();
		
		if( $(this).hasClass('fakechecked') ){
			loadAanbod('filtertype=' + sFilterType + '&filterwaarde=' + sValue);
		} else {
			loadAanbod('filtertype=' + sFilterType + '&verwijderfilter=' + sValue);
		}
		
	});

	//disable enter key in input
	$('#sTrefwoord').keydown(function(e){
		if( e.keyCode === 13 ){
			
			var sValue = $(this).val();
		
			loadAanbod('zoekopdracht=' + sValue);
			
			return false;
		}
	});

	$('#submit_search').click(function(){
									 
		var sValue = $('#sTrefwoord').val();
		
		loadAanbod('zoekopdracht=' + sValue);
	});
}

function perpagina(){
	$('#filter div.select div.selectbox div.selectbox-wrapper ul li').click(function(){
		var nValue = $(this).text();		
		loadAanbod('perpagina=' + nValue);
	});	
}

function changeView(){
	$('.display .icon').click(function(){
		$('.display .icon').removeClass('list_active').removeClass('map_active');
		if( $(this).hasClass('list') ){
			$(this).toggleClass('list_active');
		} else {
			$(this).toggleClass('map_active');	
		}
	});
}

function loadAanbod(p_sData){
	if(display == 'map') {
		$.ajax({
			type: 'POST',
			url: sDomain+'inc/map.inc.php',
			data: p_sData,
			success: function(result){
				
				var response = result.split('|');
				
				aMarkersDb = response[0].split(',');
				
				for(var nCount = 0; nCount < aMarkersDb.length; nCount++) {
					if(aMarkersDb[nCount] == 1) {
						aMarkers[nCount].show();
					} else {
						aMarkers[nCount].hide();
					}
				}
				
				if(response[1] == 'no') {
					$('#clear_filter').parent().hide();
				} else {
					$('#clear_filter').parent().show();
				}
				
			}
		});
	} else {
		$.ajax({
			type: 'POST',
			url: sDomain+'inc/aanbod.inc.php',
			data: p_sData,
			success: function(result){
				
				$('#right').html(result);	
				
				initSIFR();
				initSelectbox();
				changeView();
				centerPager();
				perpagina();
				hoverItem();
				clearFilter();
			}
		});	
	}
}

function validateDetailForms(){
	
	$('span.icon').html(iconDisabled);
	
	$.validator.addMethod("postcode", function(postcode, element) {
		postcode = postcode.replace(/\s+/g, ""); 
		return this.optional(element) ||
			postcode.match(/^[1-9]{1}[0-9]{3}[ ]?[a-z]{2}/i);
	}, "Vul a.u.b. een geldige postcode in.");
	
	$.validator.addMethod("telefoon", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
		return this.optional(element) || phone_number.length > 9 &&
			phone_number.match(/^(\(?\+?[0-9]*\)?)?[0-9_\-\+ \(\)]*$/);
	}, "Vul a.u.b. een geldig telefoonnummer in.");
	
	$.validator.addMethod("geennummers", function(value, element, param) {
		   var reg = /[0-9]/;
		   if(reg.test(value)) {
				return false;
		   } else {
				return true;
		   }
	}, "Getallen zijn niet toegestaan.");
	
	$.validator.addMethod("lettersnummer", function(value, element, param) {
		   var reg = /([a-z]+)/;
		   var reg2 = /([0-9]+)/;
		   if( reg.test(value) && reg2.test(value) ) {
				return true;
		   } else {
				return false;
		   }
	}, "In dit veld moeten letters en getallen voorkomen.");
	
	$('#reageeropdezewoning, #steleenvraag, #maileenbekende, #contactformulier').validate({
		rules: {
			sVoorletters: 'required',
			sAchternaam: 'required',
			sNaam: 'required',
			sAdres: {
				required: true,
				lettersnummer: true
			},
			sPostcode: {
				required: true,
				postcode: true
			},
			sWoonplaats: {
				required: true,
				geennummers: true
			},
			sEmail: {
				required: true,
				email: true
			},
			sEmail_afzender: {
				required: true,
				email: true
			},
			sEmail_bekende: {
				required: true,
				email: true
			},
			sTelefoon: {
				required: true,
				telefoon: true
			},
			sVraag: 'required',
			sBericht: 'required',
			sNaam_afzender: 'required',
			sNaam_bekende: 'required',
			sLand: 'required'
		},
		messages: {
			sVoorletters: aMessage[0],
			sAchternaam: aMessage[1],
			sNaam: aMessage[2],
			sAdres: {
				required: aMessage[3],
				lettersnummer: aMessage[4]
			},
			sPostcode: {
				required: aMessage[5],
				postcode: aMessage[6]
			},
			sWoonplaats: {
				required: aMessage[7],
				geennummers: aMessage[8]
			},
			sEmail: {
				required: aMessage[9],
				email: aMessage[10]
			},
			sEmail_afzender: {
				required: aMessage[9],
				email: aMessage[10]
			},
			sEmail_bekende: {
				required: aMessage[16],
				email: aMessage[10]
			},
			sTelefoon: {
				required: aMessage[11],
				telefoon: aMessage[12]
			},
			sVraag: aMessage[13],
			sBericht: aMessage[14],
			sNaam_afzender: aMessage[2],
			sNaam_bekende: aMessage[15],
			sLand: aMessage[17]
		},
		errorPlacement: function(error, element) {
			error.insertAfter(element.parent().next('span'));
			element.parent().next('span.icon').html(iconError);
		},
		success: function(label) {
			label.prev('span.icon').html(iconOK);
			label.remove();
		},
		submitHandler: function(form) {
			
			var sForm = $(form).attr('id');
			
			switch(sForm){
				case 'steleenvraag':
					var sUrl = 'inc/steleenvraag.inc.php';
				break;
				case 'reageeropdezewoning':
					var sUrl = 'inc/reageer.inc.php';
				break;
				case 'maileenbekende':
					var sUrl = 'inc/maileenbekende.inc.php';
				break;
				case 'contactformulier':
					var sUrl = 'inc/contact.inc.php';
				break;
			}	
		
			var sDiv = '';
			
			var options = {
				url: sDomain + sUrl,
				type: 'POST',
				success: function(data) {
					
					var response = data.split('|');
					
					if(response[0] == 'ok'){
						
						var sURL = window.location.href;
						var aURL = sURL.split('aanbod/');
						var sURL = aURL[1];
						
						switch(sForm){
							case 'steleenvraag':
								var sNewUrl = sURL.replace('steleenvraag','bedankt-steleenvraag');
								window.location.href = sDomain + 'aanbod/' + sNewUrl;
							break;
							case 'reageeropdezewoning':
								var sNewUrl = sURL.replace('reageer','bedankt-reageer');
								window.location.href = sDomain + 'aanbod/' + sNewUrl;
							break;
							case 'maileenbekende':
								var sNewUrl = sURL.replace('maileenbekende','bedankt-maileenbekende');
								window.location.href = sDomain + 'aanbod/' + sNewUrl;
							break;
							case 'contactformulier':
								window.location.href = sDomain + 'bedankt-contact.php';
							break;
						}
						
					} else {
						alert(data);	
					}
				}
			}
			$(form).ajaxSubmit(options);
			return false;
		}
	});	
}

function validateZoekprofiel() {
	
	$.validator.addMethod("telefoon", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
		return this.optional(element) || phone_number.length > 9 &&
			phone_number.match(/^(\(?\+?[0-9]*\)?)?[0-9_\-\+ \(\)]*$/);
	}, "Vul a.u.b. een geldig telefoonnummer in.");

	
	$('#zoekprofiel-stap1').validate({
		rules: {
			sVoorletters: 'required',
			sNaam: 'required',
			sEmail: {
				required: true,
				email: true
			},
			sTelefoon: {
				required: true,
				telefoon: true
			}
		},
		messages: {
			sVoorletters: aMessage[0],
			sNaam: aMessage[1],
			sEmail: {
				required: aMessage[9],
				email: aMessage[10]
			},
			sTelefoon: {
				required: aMessage[11],
				telefoon: aMessage[12]
			}
		},
		errorPlacement: function(error, element) {
			error.insertAfter(element.parent().next('span'));
			element.parent().next('span.icon').html(iconError);
		},
		success: function(label) {
			label.prev('span.icon').html(iconOK);
			label.remove();
		},
		submitHandler: function(form) {
			form.submit();
		}
	});	
}

function checkselectbox(){
	$('div.formbox div.select').click(function(){
		$(this).next('div.selectbox').toggle();										   
	});
	$('div.formbox div.selectbox a.ok').click(function(){
		$(this).parent().hide();
		
		//geselecteerde waardes tonen in p.gekozen
		var oItems = $(this).parent('.selectbox').next('p.gekozen').children('span.items');
		oItems.empty();
		
		var sItems = '';
		var nCount = 0;
		var aItems = $(this).parent('.selectbox').children('.column').children('a.fakechecked');

		aItems.each(function(){
							 
			nCount++;
			
			sItems += $(this).text();
			
			if(nCount < aItems.length){
				sItems += ', ';
			}

		});
		
		oItems.html(sItems);
		
		if( $(this).parent('.selectbox').next('p.gekozen').is(':hidden') ){
			$(this).parent('.selectbox').next('p.gekozen').show();	
		}
	});
}

function changeAmount(){
	
	$('div.p-opties p input.amount').keydown(function(e){
		return false;												  
	});
	
	$('div.p-opties p a').click(function(){
										 
		var obj = $(this).parent().children('input.amount');
		var currentValue = parseInt(obj.val());
		
		if( $(this).hasClass('up') ){
			
			obj.val(currentValue+1);	
			
		} else if( $(this).hasClass('down') ) {
			
			if(currentValue > 1) {
				obj.val(currentValue-1);
			} else {
				obj.val(1);	
			}
			
		}
	});
}

function showOtherField(){
	$('a.fakecheck').click(function(){
									
		var id = $(this).attr('id').replace('fake_','');
		if(id == 'anders1'){
			$('#locatie_anders').toggle();	
		} else if(id == 'anders2'){
			$('#soort_anders').toggle();		
		} else if(id == 'anders3'){
			$('#overige_wensen').parent().toggle();		
		}
	});
}

function styleSwitch(){
	$.stylesheetInit();
	
	var c = readCookie('style');
	
	if(c){
		$('#styleswitch a[rel='+c+']').addClass('active');
	} else {
		$('#styleswitch a.small').addClass('active');	
	}
	$('#styleswitch a').bind('click',function(e){
		
		$('#styleswitch a').removeClass('active');
		$(this).addClass('active');
		
		$.stylesheetSwitch(this.getAttribute('rel'));
		
		return false;
		
	});	
}
function delGekozen(){
	$('a.del_gekozen').click(function(){
		$(this).parent().fadeOut(300);
		$(this).parent('.gekozen').prev('.selectbox').find('a.fakechecked').removeClass('fakechecked');
		$(this).parent('.gekozen').prev('.selectbox').children('.checkboxes').find('input').attr('checked', false);
		$(this).parent('.gekozen').prev('.selectbox').find('input.textanders').hide();
	});
}
