$(document).ready(function(){
	
	$.datepickerify($('input.DatePicker'));
	
	$("a.Print").click(function(e){
		e.preventDefault();
		window.print();
		return false;
	});
	
	$("body#Links div#Container ul a, body#GoedeDoel div#Container a").click(function(e){
		e.preventDefault();
		window.open($(this).attr("href"), '_blank');
		return false;
	});
	
	$("ul#AttachmentList li a.attachment-action").click(function(e){
		e.preventDefault();
		var element = this;
		var att_id = $(this).parent().attr('id');
		var action = ($(this).hasClass('action-main'))
			? 'setmain'
			: 'delete';
		if(action == 'setmain') {
			var msg = 'Weet u zeker dat u deze afbeelding als primair wilt aanwijzen?'
		} else {
			var msg = 'Weet u zeker dat u deze afbeelding wilt verwijderen?';
		}
		
		if(window.confirm(msg)) {
			$.post(
				this.href,
				{id: att_id},
				function(response, xhr) {
					if(response.success == true) {
						if(action == 'setmain') {
							alert('Afbeelding succes als primair aangewezen');
						} else {
							$(element).parent().remove();
						}
					}
				},
				'json'
			);
		}
		
		return false;
	});
	
	$.addDuplicateBtn();
	
	$("input[id*='bezoekdata']:not(:last)").each(function(i) {
		if((i+1)%4 == 0) {
			$.addRemoveBtn(this);
		}
	});
	
	$("ul#PropertyDetails li:odd").addClass("odd");
	$("ul#PropertyDetails li:even").addClass("even");

	$("div.FormRow label").each(function() {
		var pattern	= /(\*$)/;
		var html	= new String($(this).html());
		var html	= html.replace(pattern, "<span>$1</span>");
		$(this).html(html);
	});
});

$.extend({
	datepickerify: function(input) {
		if(!input instanceof $) {
			return false;
		}
		
		if($(input).attr('type') != 'text') {
			return false;
		}
		
		$(input).datepicker({
			dayNames: ['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'],
			dayNamesMin: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
			dayNamesShort: ['Zon', 'Maa', 'Din', 'Woe', 'Don', 'Vri', 'Zat'],
			monthNames: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],
			monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
			nextText: 'Volgende',
			prevText: 'Vorige',
			dateFormat: 'dd-mm-yy',
			constrainInput: true,
			inline: true
		});
		
		return true;
	},
	getContentLanguage: function() {
		var language = $("meta[http-equiv='Content-Language']").attr('content');
		return language;
	},
	addDuplicateBtn: function() {
		if($("input[id*='bezoekdata']").length == 0) {
			return false;
		}

		var language		= $.getContentLanguage();
		var duplicateTxt	= $.getDuplicateButtonTxt(language);
		var duplicateBtn	= {buttonTxt: duplicateTxt};

		$("input[id*='bezoekdata']:last").parent().tplAppend(duplicateBtn, $.duplicateBtnTpl);		
		$("button.add").click($.duplicateEvt);
		
		return true;
	},
	addRemoveBtn: function(input) {
		if($("input[id*='bezoekdata']").length == 0) {
			return false;
		}
		
		if(!input instanceof $) {
			return false;
		}
		
		var language	= $.getContentLanguage();
		var removeTxt	= $.getRemoveButtonTxt(language);
		var removeBtn	= {buttonTxt: removeTxt};
		
		$(input).parent().tplAppend(removeBtn, $.removeBtnTpl);
		$("button.remove").click($.removeEvt);
		
		return true;
	},
	getDuplicateButtonTxt: function(language) {
		var lang	= new String(language).toLowerCase();
		var map		= {nl: 'TOEVOEGEN', fr: 'AJOUTER'};
		if(!map.hasOwnProperty(lang)) {
			lang = 'nl';
		}
		
		return map[lang];
	},
	getRemoveButtonTxt: function(language) {
		var lang	= new String(language).toLowerCase();
		var map		= {nl: 'VERWIJDEREN', fr: 'SUPPRIMER'};
		if(!map.hasOwnProperty(lang)) {
			lang = 'nl';
		}
		
		return map[lang];
	},
	duplicateEvt: function(evt) {
		evt.preventDefault();

		var currentId	= new String($("input[id*='bezoekdata']:last").attr('id'));
		var index		= currentId.lastIndexOf('_');
		var newId		= new Number(currentId.substr(index +1)) +1;
		
		var dateLabel	= $("label[for*='bezoekdata-bezoekdatum']:first").html();
		var newDate		= {
			id: 'step_4-bezoekdata-bezoekdatum_' + newId,
			name: 'step_4[bezoekdata][bezoekdatum_' + newId + ']',
			label: dateLabel
		};
		
		var timeInLabel	= $("label[for*='bezoekdata-starttijd']:first").html();
		var newTimeIn	= {
			id: 'step_4-bezoekdata-starttijd_' + newId,
			name: 'step_4[bezoekdata][starttijd_' + newId + ']',
			label: timeInLabel
		};
		
		var timeOutLabel	= $("label[for*='bezoekdata-eindtijd']:first").html();
		var newTimeOut	= {
			id: 'step_4-bezoekdata-eindtijd_' + newId,
			name: 'step_4[bezoekdata][eindtijd_' + newId + ']',
			label: timeOutLabel
		};
		
		var block		= $(this).parent().parent(".RightMainBlock");
		$(block).tplAppend(newDate, $.duplicateTpl);
		$(block).tplAppend(newTimeIn, $.duplicateTpl);
		$(block).tplAppend(newTimeOut, $.duplicateTpl);
		
		var lastInput		= $(this).prev();
		var lastDateInput	= $('input#step_4-bezoekdata-bezoekdatum_' + newId);
		$.addRemoveBtn(lastInput);
		$.datepickerify(lastDateInput);
		$.addDuplicateBtn();
		$(this).remove();
	},
	removeEvt: function(evt) {
		evt.preventDefault();
		
		var rowEindtijd		= $(this).parent();
		var rowStarttijd	= $(rowEindtijd).prev();
		var rowDatum		= $(rowStarttijd).prev();
		
		$(rowEindtijd).remove();
		$(rowStarttijd).remove();
		$(rowDatum).remove();
	},
	duplicateTpl: function() {
		return [
			'div', {className: 'FormRow'}, [
				'label', {className: 'optional', htmlFor: this.id}, this.label,
				'input', {className: 'Small', type: 'text', id: this.id, name: this.name}
			]
		]
	},
	duplicateBtnTpl: function() {
		return [
			'button', {className: 'add'}, this.buttonTxt
		]
	},
	removeBtnTpl: function() {
		return [
			'button', {className: 'remove'}, this.buttonTxt
		]
	}
});
