// Basis functie om dom elementen mee op te halen

function tag(t){
	return document.getElementsByTagName(t);
}

var maandLengtes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function getPos(element_id){
	var positions = new Array();
	var element = document.getElementById(element_id);
	if (element != null){
		positions["x"] = element.style.left;
		positions["y"] = element.style.top;
	}
	return positions;
}

function buildDays(dag_id, maand_id, jaar_id){
	var dag_element = document.getElementById(dag_id);
	var maand_element = document.getElementById(maand_id);
	var jaar_element = document.getElementById(jaar_id);
	if (dag_element != null && maand_element != null && jaar_element != null){
		dag = 1;
		if (dag_element.options.length > 0){
			var dag = parseFloat(dag_element.options[dag_element.selectedIndex].value);
		}
		var maand = parseFloat(maand_element.options[maand_element.selectedIndex].value);
		var jaar = parseFloat(jaar_element.options[jaar_element.selectedIndex].value);
		var dagen = maandLengtes[(maand-1)];
		if(maand == 2 && isLeap(jaar)){
			dagen = 29;
		}
		dag_element.options.length = 0;
		var found = false;
		for(i = 1; i <= dagen; i++){
			var option = document.createElement("OPTION");
			var optionText = i;
			if (optionText < 10){
				optionText = "0"+optionText;
			}
			option.text = optionText;
			option.value = i;
			if (i == dag){
				option.selected = true;
				found = true;
			} else if(i == dagen && !found){
				option.selected = true;
			}
			dag_element.options.add(option);
		}
	}
}

function isLeap(jaar){
	if (jaar % 400 == 0){
		return true;
	} else if (jaar % 100 == 0){
		return false;
	} else if (jaar % 4 == 0){
		return true;
	} else {
		return false;
	}
}

function moveTo(elementId, x, y){
	var element = document.getElementById(elementId);
	if(element != null){
		element.style.position = "absolute";
		element.style.left = x;
		element.style.top = y;
	}
}

function isText(string){
	string = string.toLowerCase();
	var l = string.length;
	var allowed = "abcdefghijklmnopqrstuvwxyz";
	var valid = true;
	for(i = 0; i < string.length; i++){
		var letter = string.charAt(i);
		if(!allowed.indexOf(letter)){
			valid = false;
		}
	}
	return valid;
}

function isNumeric(number){
	var string = number+"";
	string = string.toLowerCase();
	var allowed = "0123456789";
	var valid = true;
	for(i = 0; i < string.length; i++){
		var nr = string.charAt(i);
		if(!allowed.indexOf(nr)){
			valid = false;
		}
	}
	return valid;
}

function isPhone(number){
	var string = number+"";
	string = string.toLowerCase();
	string.replace("-", "");
	string.replace(" ", "");
	if(isNumeric(string)){
		
	} else {
		return false;
	}
}

function isLength(string, length){
	if(string.length == length){
		return true;
	} else {
		return false;
	}
}

function isEmpty(string){
	if(string.length == 0){
		return true;
	} else {
		return false;
	}
}

function resizeWindow(w,h){
	window.resizeTo(w,h);
}

function clearText(e){
	e.value = '';
}

function fillEmpty(e){
	if(e.value == ''){
		e.value = 'Trefwoord';
	}
}

function setSize(args){
	var el = document.getElementById(args.id);
	if(el){
		$('#'+el.id).animate(args.style, 500, 'swing', function(){
			if(typeof args.finish == 'function'){
				args.finish();
			}
		});
	}
}

function renderErrors(errors){
	if(errors.length > 0){
		var mask = $('<div id="mask"></div>');
		var div = $('<div id="maskErrors" class="errors"></div>');
		mask.click(function(){
			$(this).remove();
			$('#maskErrors').remove();
		});
		div.click(function(){
			$(this).remove();
			$('#mask').remove();
		});

		var span = $('<span class="errorHeader"></span>');
		span.html(function(index, old){
			var c = '';
			/*
			if(errors.length == 1){
				c+='Er is een fout gevonden:';
			} else {
				c+='Er zijn fouten gevonden:';
			}
			*/
			c+='We hebben helaas niet alle noodzakelijke gegevens ontvangen.<br />Zou u daarom zo vriendelijk willen zijn om de rode velden te voorzien van de juiste informatie?<br />U kunt ook contact met ons opnemen via 06-25 22 65 26';
			c+='<br /><ul>';
			for(var i = 0; i < errors.length; i++){
				c+='<li>'+errors[i]+'</li>';
			}
			c+='</ul></div>';
			return c;
		});
		div.append(span);
//		mask.append(div);
		$(document.body).append(mask);
		$(document.body).append(div);
//		mask.delay(4000).animate({opacity:0},1000,'swing',function(){
//			$(this).remove();	
//		});
	}
}

$(function() {

	

	$('.back').css({
		cursor:'pointer'
	});
	$('.back').click(function(){
		history.back();
	});
	$('.slideshow').each(function(){
		var data = eval('('+$(this).attr('ssData')+')');
		$('.ssImage').css({visibility:'visible'});
		$(this).cycle(data);
		$(this).height(data.height);
		$(this).width(data.width);
	});

	$('.googleMap').each(function(){
		var opts = eval('('+$(this).attr('mapOptions')+')');
		var center = eval('('+opts.center+')');
		opts.center = new google.maps.LatLng(center.b,center.c);
		opts.zoom = parseFloat(opts.zoom);
		var el = document.getElementById($(this).attr('id'));
		// Markers ophalen
		var markers = [];
		$(this).find('.marker').each(function(){
			markers[markers.length] = {
				data:eval('('+$(this).attr('markerOptions')+')'),
				description:$(this).html()
			}
		});
		var map = null;
		if(el){
			map = new google.maps.Map(el,opts);
		}
		if(map != null && markers.length > 0){
			for(var i = 0; i < markers.length; i++){
				var opts = markers[i].data;
				if(opts.cmsDraggable != undefined){
					opts.draggable = opts.cmsDraggable;
				}
				if(opts.cmsClickable != undefined){
					opts.clickable = opts.cmsClickable;
				}
				var position = eval('('+opts.position+')');
				opts.position = new google.maps.LatLng(position.b,position.c);
				opts.map = map;
				var m = new google.maps.Marker(opts);
				if(markers[i].description != ''){
					var w = new google.maps.InfoWindow({
						content:markers[i].description,
						position:opts.position
					});
					w.open(map);
					google.maps.event.addListener(m, 'click', function(e){
						w.open(map);
					});
				}
			}
		}
	});

	$('.searchInput').focus(function() {
		if(this.value == 'Trefwoord') {
			this.value = '';
		}
	});
	$('.searchInput').blur(function() {
		if(this.value == '') {
			this.value = 'Trefwoord';
		}
	});

	$('#showLanguages').click(function() {
		$('#containerLanguages').show('fast');
	});
	
	$('.languagesClose').click(function() {
		$('#containerLanguages').hide('fast');
	});
	
	$('#logout').click(function(){
		ajax.request({
			url:'logout.php',
			method:'GET',
			success:function(response){
				// Geen antwoord, gewoon redirect;
				document.location.reload(true);
			}
		});
	});

	$('.finishOrder').click(function(){
		var data = {
			task:'checkPaymentMethod'
		};
		ajax.request({
			url:'customer/plugins/webshop/render/basket.php',
			method:'GET',
			params:{
				data:ajax.encode(data)
			},
			success:function(response){
				var result = response.responseText;
				if(result != ''){
					result = eval('('+result+')');
					switch(result['success']){
						case true:
							document.location = ajax.data.base+'betaling.html';
						break;
						case false:
							if(!result.errors){
								result.errors = [result.msg];
							}
							renderErrors(result.errors);
						break;
					}
				} else {
					alert('Geen antwoord van check.php bij checkPaymentMethod');
				}
			}
		});
	});
	$('#openPassword').click(function(){
		if($('#passwordTable').height() == 0){
			$('#passwordTable').animate({height:70},500);
			$('#register').animate({height:$('#register').height()+70},500);
		}
	});
	$('#closePassword').click(function(){
		if($('#passwordTable').height() > 0){
			$('#passwordTable').animate({height:0},500);
			$('#register').animate({height:$('#register').height()-70},500);
		}
	});
	$('#openDelivery').click(function(){
		if(parseInt($('#delivery').css('right')) == 250){
			$('#delivery').css({
				display:'block'
			});
			// Hidden input, controle of het afleveradres formulier voor het eerst wordt geopend.
			var fo = $('#firstOpen');
			if(fo.val() === '1'){
				fo.val(0);
				// Gender
				$('#d_country').val($('#c_country').val());
				var l = [
					'lastName',
					'email',
					'phone'
				];
				for(var i = 0; i < l.length; i++){
					$('#d_'+l[i]).val($('#c_'+l[i]).val());
				}
			}
			setSize({id:'delivery', style:{right:0, opacity:100, filter:'alpha(opacity = 100)'}});
			setSize({id:'registerForm', style:{left:0}});
		}
	});

	$('#closeDelivery').click(function(){
		if(parseInt($('#delivery').css('right')) == 0){
			setSize({
				id:'delivery',
				style:{
					right:'250px',
					opacity:0,
					filter:'alpha(opacity = 0)'
				},
				finish:function(){
					$('#delivery').css({
						 display:'none'
					});
				}
			});
			setSize({id:'registerForm', style:{left:'250px'}});
		}
	});

	$('.textInputError').mouseenter(function(e){
		var errorInfo = $(this).attr('errorInfo');
		if(errorInfo != null && errorInfo != ''){
			var div = $('<div class="errorInfoDiv"></div>');
			div.html(errorInfo);
			div.css({left:200,marginTop:-10});
			$(this).parent().append(div);
		}
	});

	$('.textInputError').keydown(function(e){
		var el = $(this);
		setTimeout(function(){
			$('.errorInfoDiv').remove();
			el.removeClass('textInputError');
			el.removeAttr('errorInfo');
			el.addClass('textInput');
		},50);
	});

	$('.textInputError').mouseout(function(e){
		$('.errorInfoDiv').remove();
	});

	$('input.button').mouseover(function() {
		$(this).toggleClass('buttonHover');
	});
	$('input.button').mouseout(function() {
		$(this).toggleClass('buttonHover');
	});

	$('#searchField').focus(function() {
		if(this.value == 'trefwoord...') {
			this.value = '';
		}
	});
	$('#searchField').blur(function() {
		if(this.value == '') {
			this.value = 'trefwoord...';
		}
	});

	var hover = false;
	$('.cat').mouseover(function(e){
		if($('#catImgDiv').length == 0){
			var $catImgDiv = $('<div id="catImgDiv"></div>');
			$catImgDiv.css({
				position:'absolute',
				width:200,
				background:'#fff',
				border:'1px #000 solid',
				display:'none',
				zIndex:100
			});
			$('#categoryNav').append($catImgDiv);
		}
		var $catImgDiv = $('#catImgDiv');
		if(hover == false){
			hover = true;
			if($(this).attr('hover') != ''){
				var $img = $('<img src="'+ajax.data.base+'/customer/plugins/webshop/uploadedfiles/'+$(this).attr('hover')+'" />');
				$img.css({
					'max-width':200
				});
				$('#catImgDiv > img').remove();
				$catImgDiv.append($img);
				$catImgDiv.css({
					display:'block',
					left:($('#categoryNav').width()+4),
					top:36
				});
			} else {
				$catImgDiv.css({display:'none'});
			}
		}
	});
	$('.cat').mouseout(function(e){
		$('#catImgDiv').css({
			display:'none'
		});
		hover = false;
	});

	if($('.errors').length > 0){
		var $div = $('<div class="mask"></div>');
		$(document.body).append($div);
	}


	$('.info > img').mouseover(function(){
		if($('#infoHover').length == 0){
			var $info = $('<div id="infoHover"></div>');
			$(this).parent().append($info);
		}
		var $info = $('#infoHover');
		$('#infoHover > span').remove();
		$span = $('<span>'+$(this).attr('info')+'</span>');
		$info.append($span);
		$info.css({
			zIndex:900,
			display:'block'
		});
	});
	$('.info > img').mouseout(function(){
		$('#infoHover').remove();
	});

	var basket = {};
	basket.timer = null;
	basket.replace = function(options){
		var opts = {
			elements:{}
		};
		if(typeof options == 'object'){
			for(var i in options){
				opts[i] = options[i];
			}
		}
		if(typeof opts.elements == 'object'){
			for(var i in opts.elements){
				if(typeof opts.elements[i] != 'function'){
					if(i !== 'popup'){
						$('#'+i).replaceWith(opts.elements[i]);
					} else {
						var mask = $('<div></div>');
						mask.attr('id', 'mask');
						$(document.body).append(mask);
						$(document.body).append(opts.elements[i]);
					}
				}
			}
		}
		init();
	}

	$('.addToBasket').click(function(){
		var input = $(this).parent().parent().find('.addToBasketInput');
		if(input.length > 0){
			var data = {
				task:'updateBasket',
				amount:input.val(),
				add:true,
				id:input.attr('productId'),
				replace:['cartSmall', 'popup']
			}
			ajax.request({
				url:'customer/plugins/webshop/render/basket.php',
				method:'GET',
				params:{
					data:ajax.encode(data)
				},
				success:function(response){
					var result = response.responseText;
					if(result != ''){
						result = ajax.decode(result);
						switch(result.success){
							case true:
								basket.replace({elements:result.replace});
							break;
							case false:
								alert(result.msg);
							break;
						}
					} else {
						alert('Geen antwoord van basket.php bij updateBasket');
					}
				},
				failure:function(response){
					alert(response.responseText);
				}
			});
		}
	});


	$('.unitDescriptionLabel').mouseover(function(e){
		var div = document.createElement('div');
		div.id = 'unitDescription';
		div.innerHTML = $(this).attr('desc');
		div.style.position = 'absolute';
		div.style.left = 0+'px';
		div.style.top = 25+'px';
		$(this).append(div);
	});

	$('.unitDescriptionLabel').mouseout(function(e){
		$('#unitDescription').remove();
	});

	$('.cartInfoText').mouseover(function(e){
		$('#webshopCountrySendCostTable').css({display:'block'});
	});

	$('.cartInfoText').mouseout(function(e){
		$('#webshopCountrySendCostTable').css({display:'none'});
	});

	$('.floatbox').click(function(){
		fb.start(this);
	});
	$('.continueShopping').click(function(){
		history.back();
		return false;
	});


	$('.datepickerInput,.datepickerInputError').each(function(){
		$(this).attr('readonly', true);
		dData = {
			dateFormat:'DD dd MM yy',
			maxDate:0,
			showAnim:'slide',
			showOtherMonths:true,
			selectOtherMonths:true,
			changeYear:true,
			defaultDate:0,
			yearRange:'1900:'+new Date().getFullYear()
		};
		var data = $(this).attr('data');
		if(data){
			if(data.length > 0){
				data = ajax.decode(data);
				for(var i in data){
					dData[i] = data[i];
				}
			}
		}
		$(this).datepicker(dData);
	});

	$('.datetimepickerInput,.datetimepickerInputError').each(function(){
		$(this).attr('readonly', true);
		dData = {
			dateFormat:'DD dd MM yy',
			maxDate:0,
			showAnim:'slide',
			showOtherMonths:true,
			selectOtherMonths:true,
			changeYear:true,
			defaultDate:0,
			yearRange:'1900:'+new Date().getFullYear()
		};
		var data = $(this).attr('data');
		if(data){
			if(data.length > 0){
				data = ajax.decode(data);
				for(var i in data){
					dData[i] = data[i];
				}
			}
		}
		$(this).datetimepicker(dData);
		$(this).bind('click', function(){
			$('.ui-datepicker').css({
				zIndex:1000
			});
		});
	});

	$('.numericInput,.numericInputError').numeric({
		increment:1,
		largeIncrement:5,
		emptyValue:0,
		minValue:1
	});

	$('.textInputError,.textareaInputError').focus(function(){
		if($(this).hasClass('textInputError')){
			$(this).addClass('textInput');
			$(this).removeClass('textInputError');
		}
		if($(this).hasClass('textareaInputError')){
			$(this).addClass('textareaInput');
			$(this).removeClass('textareaInputError');
		}
	});


	function init(){
		var list = [
			'.mask',
			'.errors',
			'#productPopup',
			'#mask',
			'.pMessage',
			'#closepopup'
		];
		var closeOnly = [
			'#popup'
		];
		$(list.join(',')).click(function(){
			for(var i = 0; i < list.length; i++){
				$(list[i]).remove();
			}
			for(var i = 0; i < closeOnly.length; i++){
				$(closeOnly[i]).remove();
			}
		});

		$('.removeProductImage').css({
			cursor:'pointer'
		});

		$('.removeProductImage').click(function(){
			var removeData = ajax.decode($(this).attr('removeData'));
			var data = {
				task:'updateBasket',
				amount:0,
				add:false,
				id:removeData.id,
				replace:['cartSmall', 'winkelmandje']
			};
			ajax.request({
				url:'customer/plugins/webshop/render/basket.php',
				method:'GET',
				mask:false,
				params:{
					data:ajax.encode(data)
				},
				success:function(response){
					var result = response.responseText;
					if(result != ''){
						result = ajax.decode(result);
						switch(result.success){
							case true:
								if(result.redirect){
									document.location = result.redirect;
								} else {
									basket.replace({elements:result.replace});
									init();
								}
							break;
							case false:
								alert(result.msg);
							break;
						}
					} else {
						alert('Geen antwoord van basket.php bij updateBasket');
					}
				},
				failure:function(response){
					alert(response.responseText);
				}
			});
		});

		$('.addToBasketInput').keyup(function(){
			if(basket.timer != null){
				clearTimeout(basket.timer);
			}
			var el = $(this);
			basket.timer = setTimeout(function(){
				var data = ajax.decode(el.attr('inputData'));
				var val = el.val();
				if(val != ''){
					var amount = parseFloat(val.replace(',','.'));
					var valid = true;
					if(isNaN(amount)){
						valid = false;
					} else if(data.decimals !== true && amount%1!=0){
						valid = false;
					}
					var o = data.old;
					if(!valid){
						el.val(data.old);
					} else {
						data.old = ''+amount;
						data.old = data.old.replace('.',',');
						el.attr('inputData', ajax.encode(data));
					}
				}
			},500);
		});

		$('.productInput').keyup(function(){
			if(basket.timer != null){
				clearTimeout(basket.timer);
			}
			var el = $(this);
			basket.timer = setTimeout(function(){
				var inputData = ajax.decode(el.attr('inputData'));
				var val = parseFloat(el.val().replace(',','.'));
				var valid = true;
				if(val%1 !== 0 && inputData.decimals === false){
					valid = false;
				}
				if(valid){
					el.attr('inputData', ajax.encode(inputData));
					var data = {
						task:'updateBasket',
						amount:val,
						add:false,
						id:inputData.id,
						replace:['cartSmall', 'winkelmandje']
					}
					$('#loader_'+inputData.id).css({
						visibility:'visible'
					});
					ajax.request({
						url:'customer/plugins/webshop/render/basket.php',
						method:'GET',
						mask:false,
						params:{
							data:ajax.encode(data)
						},
						success:function(response){
							var result = response.responseText;
							if(result != ''){
								result = ajax.decode(result);
								switch(result.success){
									case true:
										if(result.redirect){
											document.location = result.redirect;
										} else {
											inputData.old = val;
											basket.replace({elements:result.replace});
											init();
										}
									break;
									case false:
										alert(result.msg);
										el.val(inputData.old);
									break;
								}
							} else {
								alert('Geen antwoord van basket.php bij updateBasket');
								el.val(inputData.old);
							}
						},
						failure:function(response){
							alert(response.responseText);
							el.val(inputData.old);
						}
					});
				} else {
					el.val(inputData.old);
				}
			},500);
		});
	}
	init();

	$('#gallery').galleryView({
		panel_width: 542,
		panel_height:361,
		frame_width: 90,
		frame_height: 67,
		pause_on_hover: true,
		show_overlays: false
		/*
		after:function(){
			$('.gv-panel img').each(function(){
				var a = $('<a></a>');
				a.attr('href', $(this).attr('src'));
				a.click(function(){
					fb.start($(this)[0]);
					return false;
				});
				var img = $(this).clone();
				img.css({
					border:'none'
				});
				img.appendTo(a);
				$(this).replaceWith(a);
			});
		}*/
	});
	/*
	$('#gallery2').galleryView({
		panel_width: 361,
		panel_height:542,
		frame_width: 90,
		frame_height: 67,
		pause_on_hover: true,
		show_overlays: true
		after:function(){
			$('.gv-panel img').each(function(){
				var a = $('<a></a>');
				a.attr('href', $(this).attr('src'));
				a.click(function(){
					fb.start($(this)[0]);
					return false;
				});
				var img = $(this).clone();
				img.css({
					border:'none'
				});
				img.appendTo(a);
				$(this).replaceWith(a);
			});
		}
	});
	*/

	$('#content_left').each(function(){
		var h = document.documentElement.clientHeight;
		h -= 137;
		h -= 40;
		h -= 20;
		$(this).height(h);
	});

	$('#container_newsletterForm').find('#nlEmail').focus(function(){
		if($(this).val() == 'E-mail'){
			$(this).val('');
		}
	});
	$('#container_newsletterForm').find('#nlEmail').blur(function(){
		if($(this).val() == ''){
			$(this).val('E-mail');
		}
	});

	$('.popupMessage').each(function(){
		var html = $(this).html();
		var p = $('<div></div>');
		p.addClass('mask');
		var m = $('<div></div>');
		m.addClass('pMessage');
		m.html(html);
		p.appendTo(document.body);
		m.appendTo(document.body);
		init();
	});

	if(typeof $.fancybox != 'undefined'){
		$("a[rel=epanorama]").fancybox({
			'width'				: 840,
			'height'			: 480,
			'autoScale'			: false,
			'transitionIn'		: 'none',
			'transitionOut'		: 'none',
			'titlePosition' 	: 'over',
			'titleFormat'		: function(title, currentArray, currentIndex, currentOpts) {
				return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
			},
			'type'				: 'iframe'
		});
	}
	
});
