var CONFIG = {};
var objOverlayer = null;
var milkbox = null;

window.addEvent('domready', function()
{	
	var baseHref = $(document.head).getElement('base');
	CONFIG.BASE_URL = baseHref.href;
	
	$$('form.enhance input[type=text]').each(function(elInput)
	{
		elInput.addEvent('focus', function()
		{
			doClear(elInput);
		});
		elInput.addEvent('blur', function()
		{
			resetField(elInput);
		});
	});
	
	new AfspraakForm();
	
	if(0 < $$('.toggler').length)
	{
		if(!$('filters'))
		{
			new multipleOpenAccordion($$('.toggler'),$$('.element'));
		}
	}
	
	if($('search'))
	{
		new SearchForm();
	}
	
	slider();
	milbox = new Milkbox();
	
	if($('photoslide1'))
	{
		objPhotoSlide = new photoSlide($('photoslide1'));
	}
	
	if($('photoslide2'))
	{
		objPhotoSlide = new photoSlide($('photoslide2'));
	}
	
	if($('photoslide3'))
	{
		objPhotoSlide = new photoSlide($('photoslide3'));
	}
	if($('spotlight_tabs'))
	{
		objSpotlightTabs = new SpotlightTabs();
	}
	
	if($('sorttype'))
	{
		$('sorttype').addEvent('change', function()
		{
			if(CONFIG.IS_BROKER)
			{
				var strRedirect = CONFIG.BROKER_URL + $('current_url_without_sort').innerHTML + '/sortering/' + $('sorttype').value;
			}
			else
			{
				var strRedirect = CONFIG.BASE_URL + $('current_url_without_sort').innerHTML + '/sortering/' + $('sorttype').value;
			}
			
			window.location = strRedirect;
		});
	}
	if($('form_contact'))
	{
		$('form_contact').addEvent('submit', function(event)
		{
			event.stop();
			var strSubdomain = $('department_subdomain').value;
			$('external_form').empty();
			$('external_form').set('html', '<iframe frameborder="0" scrolling="no" width="620" height="1000" src="http://www2.garantiemakelaar.nl/' + strSubdomain + '/contact.cfm"></iframe>');
		});
	}
	if($('form_housemail'))
	{
		$('form_housemail').addEvent('submit', function(event)
		{
			event.stop();
			var strValue = $('department_subdomain').value;
			var arrValues = strValue.split('|');
			var strSubdomain = arrValues[0];
			var strDepartmentId = arrValues[1];
			
			// hack to fix links that are different from the standarized system
			if(strSubdomain == 'hansjanssen' && strDepartmentId == '30186')
			{
				strSubdomain = 'hansjanssendruten';
			}
			
			if(strSubdomain == 'drieman' && strDepartmentId == '12127')
			{
				strSubdomain = 'driemanwoerden';
			}			
			
			$('external_form').empty();
			$('external_form').set('html', '<iframe frameborder="0" scrolling="no" width="620" height="2000" src="http://' + strSubdomain + '.inschrijvingen.garantiemakelaars.nl/inschrijvingen/index.html?target=INDEX&departmentid=' + strDepartmentId + '"></iframe>');
		});
	}
	if($('form_value'))
	{
		$('form_value').addEvent('submit', function(event)
		{
			event.stop();
			var strSubdomain = $('department_subdomain').value;
			$('external_form').empty();
			$('external_form').set('html', '<iframe frameborder="0" scrolling="no" width="620" height="1000" src="http://www2.garantiemakelaar.nl/' + strSubdomain + '/waardebepaling.cfm"></iframe>');
		});
	}
	
});

var SearchForm = new Class(
{
	initialize: function()
	{
		if($$('#search'))
		{
			//$$('.search-advanced').setStyle('display','none');
			
			// get buttons
			var elSnel = $$('#snel');
			var elUitgebreid = $$('#uitgebreid');
			
			elSnel.addEvent('click', function(event)
			{
				event.stop();
				$$('.search-advanced').setStyle('display','none');
				$$('#snel').getParent().addClass('active');
				$$('#uitgebreid').getParent().removeClass('active');
			});
			
			elUitgebreid.addEvent('click', function(event)
			{
				event.stop();
				$$('.search-advanced').setStyle('display','block');
				$$('#snel').getParent().removeClass('active');
				$$('#uitgebreid').getParent().addClass('active');
			});
			
			if($('advanced') && $('advanced').innerHTML == 1)
			{
				$$('.search-advanced').setStyle('display','block');
				$$('#snel').getParent().removeClass('active');
				$$('#uitgebreid').getParent().addClass('active');
			}
		}
	}
});

function slider()
{
	var intStart = 50;
	var intEnd = 1001;
	var intMin = 50;
	var intMax = 1001;
	if($('slider-white'))
	{
		//intStart = 0;
		//intEnd = 1001;
		//intMin = 0;
		//intMax = 1001;
	}
	
	var firstrun = true;
	if($('slider_minmax_gutter_m') && $('slider_minmax_minKnobA'))
	{
		var mySlideA = new Slider($('slider_minmax_gutter_m'), $('slider_minmax_minKnobA'),$('slider_bkg_img'), $('slider_minmax_maxKnobA'),
		{
			start: intStart,
			end: intEnd,
			offset:0,
			snap:true,
			numsteps: 40,
			onChange: function(obj)
			{
				if($('slider-white'))
				{
					// fix so positions will be in '25'
					var intShowMin = Math.round(obj.minpos / 25) * 25;
					var intShowMax = Math.round(obj.maxpos / 25) * 25;
					
					if(1001 == obj.maxpos)
					{
						$('slider_minmax_max').innerHTML = 'onbeperkt';
					}
					else
					{
						$('slider_minmax_max').innerHTML = '&euro;' + intShowMax + '.000';
					}
					
					$('slider_minmax_min').innerHTML = '&euro;' + intShowMin + '.000';	
					
					obj.minpos = intShowMin;
					obj.maxpos = intShowMax;
					$('slider_minmax_min').value = intShowMin;
					$('slider_minmax_max').value = intShowMax;
				}
				else
				{
					$('slider_minmax_min').value = obj.minpos;
					$('slider_minmax_max').value = obj.maxpos;
				}	
			},
			onComplete: function(pos)
			{
				// Parse minValue to select option
				var elSelectMin = $('minValue');
				var elSelectMax = $('maxValue');
	
				var elOptionsMin = elSelectMin.getChildren();
				var intPrevMin = 0;
				var intCurrentMin = 0;
				elOptionsMin.each(function(elOptionMin,i)
				{
					intCurrentMin = elOptionMin.getProperty('value').toInt();
					if( intCurrentMin > pos.minpos 
						&& intPrevMin < pos.minpos )
					{
						elOptionMin.setProperty('selected','selected');
					}
					
					intPrevMin = intCurrentMin;
					
				}, this );
				
				elSelectMin.addEvent('change', function()
				{
					this.knob.setStyle('left', this.toPosition(elSelectMin.value) );
					
					
					this.checkStep();
				}.bind(this));
	
				elSelectMax.addEvent('change', function()
				{
					if(0 == elSelectMax.value)
					{
						this.maxknob.setStyle('left', this.toPosition(1001) );
					}
					else
					{
						this.maxknob.setStyle('left', this.toPosition(elSelectMax.value) );
					}

					this.checkStep();
				}.bind(this));
				
				// Parse maxValue to select option
				var elOptionsMax = elSelectMax.getChildren();
				var intPrevMax = 0;
				var intCurrentMax = 0;
				
				if(1001 == pos.maxpos)
				{
					if(true == firstrun)
					{
						// we let it on the first option on startup
						firstrun = false;
					}
					else
					{
						// set to last option (maximum)
						elOptionsMax[(elOptionsMax.length - 1)].setProperty('selected','selected');
					}
				}
				else
				{
					elOptionsMax.each(function(elOptionMax,i)
					{
						intCurrentMax = elOptionMax.getProperty('value').toInt();
						if( intCurrentMax > pos.maxpos 
							&& intPrevMax < pos.maxpos )
						{
							elOptionMax.setProperty('selected','selected');
						}
						intPrevMax = intCurrentMax;
					});	
				}
			}
	
		}).setMin(intMin).setMax(intMax);
		
		if($('price_autofire'))
		{
			if($('price_autofire_min'))
			{
				mySlideA.setMin(parseInt($('price_autofire_min').innerHTML));
			}
			if($('price_autofire_max'))
			{
				mySlideA.setMax(parseInt($('price_autofire_max').innerHTML));
			}
		}
	}
}


var AjaxForm = new Class(
{
	initialize: function()
	{
		if($('select-time'))
		{
			$('belForm').addEvent('submit', function(event)
			{
				event.stop();
				if($('input-phone').getProperty('value') == 'Telefoonnummer')
				{
					$('input-phone').setStyle('border','1px solid red');
				}
				else
				{
					this.send();
					$$('#bellen div.elements').setStyle('display','none');
					$$('#bellen p.hidden').setStyle('display','block');
				}
			});	
			
			$('afspraakForm').addEvent('submit', function(event)
			{
				event.stop();
				if($('input-phoneafspraak').getProperty('value') == 'Telefoonnummer')
				{
					$('input-phoneafspraak').setStyle('border','1px solid red');
				}
				else
				{
					this.send();
					$$('#afspraak div.elements').setStyle('display','none');
					$$('#afspraak p.hidden').setStyle('display','block');
				}
			});	
			
			$('nieuwsbriefForm').addEvent('submit', function(event)
			{
				event.stop();
				if($('input-namenews').getProperty('value') == 'Naam')
				{
					$('input-namenews').setStyle('border','1px solid red');
				}
				if($('input-email').getProperty('value') == 'E-mailadres')
				{
					$('input-email').setStyle('border','1px solid red');
				}
				else
				{
					this.send();
					$$('#nieuwsbrief div.elements').setStyle('display','none');
					$$('#nieuwsbrief p.hidden').setStyle('display','block');
				}
			});
		}
		
		//console.log($('select-time').getProperty('value'));
		//stop();
			
	}
});


function doClear(field) 
{
	if (field.value == field.defaultValue) 
	{
	 	field.value = "";
	}
}
function resetField(field) 
{
	if (field.value == '') 
	{
		field.value = field.defaultValue;
	}
}

var AfspraakForm = new Class(
{
	initialize: function()
	{
		if($$('.afspraakmaken'))
		{
			$$('#afspraak').setStyle('display','none');
			$$('#nieuwsbrief').setStyle('display','none');
			
			// get buttons
			var elBellen = $$('#btn-bellen');
			var elAfspraak = $$('#btn-afspraak');
			var elNieuwsbrief = $$('#btn-nieuwsbrief');
			
			elBellen.addEvent('click', function(event)
			{
				event.stop();
				$$('#bellen').setStyle('display','block');
				$$('#afspraak').setStyle('display','none');
				$$('.afspraakmaken .nieuwsbriefc').setStyle('display','none');
				$$('.afspraakmaken').setStyle('background-position','0 -598px');
			});
			
			elAfspraak.addEvent('click', function(event)
			{
				event.stop();
				$$('#bellen').setStyle('display','none');
				$$('#afspraak').setStyle('display','block');
				$$('.afspraakmaken .nieuwsbriefc').setStyle('display','none');
				$$('.afspraakmaken').setStyle('background-position','0 -411px');
			});
			
			elNieuwsbrief.addEvent('click', function(event)
			{
				event.stop();
				$$('#bellen').setStyle('display','none');
				$$('#afspraak').setStyle('display','none');
				$$('.afspraakmaken .nieuwsbriefc').setStyle('display','block');
				$$('.afspraakmaken').setStyle('background-position','0 -224px');
				
			});
		}
	}
});

var photoSlide = new Class(
{
	elPhotoSlide: null,
	elPrevious: null,
	elNext: null,
	elTotal:null,
	elCurrent: 0,
	elSlideContainer: null,
	intWidth: 144,
	intShowNr: 4,
	objContainerFx: null,
	objPhotos: null,
	elLargePhotoDiv: null,
	elObjects: null,
	initialize:function(argElPhotoSlide)
	{
		var self = this;

		this.elPhotoSlide = argElPhotoSlide;
		this.elTotal = this.elPhotoSlide.getElements('ul li').length;
		this.elSlideContainer = this.elPhotoSlide.getElements('ul')[0];
		this.objContainerFx = new Fx.Tween(this.elSlideContainer);
		this.objPhotos = argElPhotoSlide.getElements('a.photo');
		//nog geen objects
		//this.elObjects = document.body.getElements('object');
		this.elLargePhotoDiv = $('photo-large');

		this.elPrevious = this.elPhotoSlide.getElements('.nav-lastphotos-left')[0];
		this.elPrevious.addEvent('click', function(event)
		{
			event.stop();
			self.showPrevious();
		});
		
		this.elNext = this.elPhotoSlide.getElements('.nav-lastphotos-right')[0];
		this.elNext.addEvent('click', function(event)
		{
			event.stop();
			self.showNext();
		});
		
		//this.makeViewable();
		this.checkButtons();
		
		this.viewPhoto(this.objPhotos[0]);
	}, 
	makeViewable: function()
	{
		var self = this;
			
		this.objPhotos.each(function(elPhoto)
		{
			elPhoto.addEvent('click', function(event)
			{
				event.stop();
				self.viewPhoto(elPhoto);
			});
		});
	},
	viewPhoto: function(argElPhoto)
	{
		var self = this;
		var objImage = new Image();
		
		/*
		this.elObjects.each(function(elObject)
		{
			elObject.setStyle('visibility', 'hidden');
		});
		*/
		
		objImage.onload = function()
		{
			/*
			var intScrollTop = getScrollTop();
			var intHeight = getHeight();
			var intImageHeight = objImage.height;
			var intTop = intScrollTop + ((intHeight / 2) - (intImageHeight / 2));

			self.elOverlayerDiv2.setStyle('top', intTop + 'px');
			*/
			if(self.elLargePhotoDiv != null)
			{
				self.elLargePhotoDiv.fade(0.8);
				self.elLargePhotoDiv.fade('in');
				self.elLargePhotoDiv.set('html', '<img src="' + argElPhoto.get('href') + '" alt="" />');
			}
		};
		
		objImage.src = argElPhoto.get('href');
	},
	showPrevious: function()
	{
		if(this.elCurrent > 0)
		{
			this.elCurrent--;
			this.setPosition();
		}
	},
	showNext: function()
	{
		if((this.elCurrent + this.intShowNr) < this.elTotal)
		{
			this.elCurrent++;
			this.setPosition();
		}
	},
	setPosition: function()
	{
		var intLeft = -1 * (this.intWidth * this.elCurrent);
		this.objContainerFx.start('left', intLeft);
		this.checkButtons();
	},
	checkButtons: function()
	{
		// check if we got 3 or more images
		if(this.elTotal >= 3)
		{
			// hide next?
			if((this.elCurrent + this.intShowNr) == this.elTotal)
			{
				this.elNext.fade('out');
			}
			else
			{
				this.elNext.fade('in');
			}
		}
		else
		{
			// 3 or less
			this.elNext.fade('out');
		}
		
		// hide previous if position = 0
		if(this.elCurrent == 0)
		{
			this.elPrevious.fade('out');
		}
		else
		{
			this.elPrevious.fade('in');
		}	
	}
});

var SpotlightTabs = new Class(
{
	elTabs: null,
	elTabContents: null,
	initialize: function()
	{
		var self = this;
		this.elTabs = $$('#spotlight_tabs dd');
		this.elTabContents = $$('.spotlightcontent');
		this.elTabs.each(function(elTabItem)
		{
			var elTabLink = elTabItem.getElement('a');
			elTabLink.addEvent('click', function(event)
			{
				event.stop();
				self.showContent(elTabItem.getProperty('rel'));
			});
		});
		
		this.showContent('koop');
	},
	showContent: function(argStrElementId)
	{
		this.elTabs.each(function(elTabItem)
		{
			elTabItem.removeClass('active');
		});
		
		this.elTabContents.each(function(elTabContent)
		{
			elTabContent.setStyle('display', 'none');
		});
		
		$('spotlightcontent_' + argStrElementId).setStyle('display', 'block');
		$('spotlightlink_' + argStrElementId).addClass('active');
	}
});