
	$(function() {
		/**
		 * Radio replacer
		 */
		if($("input[type=radio]").length) {
			var bindRadio = function(target) {
				if(target.is(".radio_checked") == false) {
					var name = target
						.find("input.name")
						.val();
					var value = target
						.find("input.value")
						.val();
					$("span.radio input.name[value='" + name +"']")
						.parent()
						.removeClass("radio_checked");
					$(target)
						.addClass("radio_checked");
					$("input[type=hidden][name=" + name +"]")
						.val(value);
				}
			};
			
			$("input[type=radio]")
				.each(function() {
					var name = $(this).attr("name");
					var checked = "";
					var value = $(this).val();
					if($("input[type=hidden][name=" + name + "]").length == 0) {
						$(this)
							.before("<input type='hidden' name='" + name + "' />");
					}
					if($(this).is(":checked")) {
						$("input[type=hidden][name=" + name + "]")
							.val(value);
						checked = " radio_checked";
					}
					$(this)
						.before("<span class='radio" + checked + "'><input class='name' type='hidden' value='" + name + "' /><input class='value' type='hidden' value='" + value + "' /></span>")
						.remove();
				});
			$("span.radio")
				.click(function() {
					bindRadio($(this));
				})
				.parent("label")
				.click(function() {
					bindRadio($(this).find("span.radio"));
				});
		}
		/**
		 * Checkbox replacer
		 */
		var bindCheckbox = function(target) {
			var name = target.find("input.name").val();
			if(target.is(".checkbox_checked"))
				target
					.removeClass("checkbox_checked")
					.find("input.value")
					.removeAttr("name");
			else
				target
					.addClass("checkbox_checked")
					.find("input.value")
					.attr("name", name);
		};
		
		if($("input[type=checkbox]").length) {
			$("input[type=checkbox]")
				.each(function() {
					var name = $(this).attr("name");
					var checked = "";
					var checked_input = "";
					var value = $(this).val();
					if($(this).is(":checked")) {
						checked = " checkbox_checked";
						checked_input = " name='" + name + "'";
					}
					$(this)
						.before("<span class='checkbox" + checked + "'><input type='hidden' class='name' value='" + name + "'/><input class='value' type='hidden' type='checkbox' value='" + value + "'" + checked_input + " /></span>")
						.remove();
				});
		}
		$("span.checkbox")
			.click(function() {
				bindCheckbox($(this));
			})
			.parent("label")
			.click(function() {
				bindCheckbox($(this).find("span.checkbox"));
			});
		/**
		 * Selectbox replacer
		 */
		
		var latest;
		
		$("body")
		    .click(function(e) {
		        if(!$(e.target).is(".dropdown_list") && !$(e.target).is(".dropdown_title")) {
                    $("body")
                        .find(".dropdown_list")
                        .hide();
	            }
	        });
		
		$("select")
		    .each(function() {
		        var replacer = $("<span class='dropdown'><span class='dropdown_title'></span><span class='dropdown_list'></span><input type='hidden' /></span>").insertBefore($(this));
		        var select = $(this).remove();
		        var options = $(this).find("option");
		        replacer
		            .find(".dropdown_list")
		            .hide();
		        replacer
		            .find("input")
		            .attr("name", (select.attr("name") != null ? select.attr("name") : null))
		            .attr("id", (select.attr("id") != null ? select.attr("id") : null));
		        options
		            .each(function() {
		                var option = $(this);
		                $("<span class='dropdown_item'>" + option.html() + "</span>")
		                    .appendTo(replacer.find(".dropdown_list"))
		                    .click(function(e) {
		                        e.stopPropagation();
		                        replacer
		                            .find(".dropdown_title")
		                            .html(option.html());
		                        replacer
		                            .find("input")
		                            .val(option.attr("value"));
		                        replacer
		                            .find(".dropdown_list")
		                            .hide();
	                        });
	                });
	            replacer
	                .find(".dropdown_title")
	                .click(function(e) {
		                e.stopPropagation();
	                    replacer
	                        .find(".dropdown_list")
	                        .show();
                    });
	        });
	    
	    /**
	     * Star ratings
	     */
	    if($(".score").length) {
	        $(".score div")
	            .hover(function() {
	                $(this)
	                    .closest(".score")
	                    .addClass("score_active");
	                if($(this).is(".score_2")) {
	                    $(this)
	                        .siblings(".score_1")
	                        .addClass("active");
                    }
                    if($(this).is(".score_3")) {
	                    $(this)
	                        .siblings(".score_1, .score_2")
	                        .addClass("active");
                    }
                    if($(this).is(".score_4")) {
	                    $(this)
	                        .siblings(".score_1, .score_2, .score_3")
	                        .addClass("active");
                    }
                    if($(this).is(".score_5")) {
	                    $(this)
	                        .siblings(".score_1, .score_2, .score_3, .score_4")
	                        .addClass("active");
                    }
                    $(this)
                        .addClass("active");
                }, function() {
                    $(this)
                        .closest(".score")
                        .removeClass("score_active")
                        .find("div")
                        .removeClass("active");
                })
            .click(function() {
                // Hier moet een ajax request met score
                var score = 1;
                var target = "score_1";
                if($(this).is(".score_2")) {
                    score = 2;
                    target = "score_2";
                }
                if($(this).is(".score_3")) {
                    score = 3;
                    target = "score_3";
                }
                if($(this).is(".score_4")) {
                    score = 4;
                    target = "score_4";
                }
                if($(this).is(".score_5")) {
                    score = 5;
                    target = "score_5";
                }
                var download_id = $(this).closest(".score").find("input.download_id").attr("value");
                console.info("AJAX with download_id(" + download_id + ") and score (" + score + ").");
                $(this).closest(".score").removeClass("score_1").removeClass("score_2").removeClass("score_3").removeClass("score_4").removeClass("score_5").addClass(target);
            });
        }
	});
