Högskoleprovet – Higher Education Testbook

JavaScript
/**
 * Helpers
 */
function inputPrefix() { // Input fields prefix
  $('input.prefix[placeholder]').each(function(){
    var $this       = $(this),
        placeholder = $this.attr('placeholder'),
        height      = $this.outerHeight(),
        left        = 0,
        $prefix     = $('<span />', { text:placeholder }).addClass('prefix');

    $this
      .attr('placeholder', '')
      .before($prefix);

    left = - $prefix.width() - 3;

    $prefix
      .css({ marginLeft:left, height:height, lineHeight:height + 'px' })
      .hide()
      .fadeIn();
  });
}


/**
 * Ready
 */
inputPrefix();

// inputs disable/enable
$('input[type=checkbox].state').live('click.state', function(){
  var $this   = $(this),
      $parent = $this.closest('tr.state, div.state'),
      $inputs = $parent.find(':input').not(':hidden').not(this);

  if ($parent.length) {
    if (this.checked) {
      $parent.removeClass('disabled');
      $inputs.removeAttr('disabled');
    } else {
      $parent.addClass('disabled');
      $inputs.attr('disabled', true);
    }
  }
});

// Close open dropdowns
$('.dropdown-opener').click(function() {
	var p = $(this).parent();
	if (p.hasClass('opened')) {
		p.removeClass('opened');
	} else {
		p.addClass('opened');
	}
	return false;
});

// Close all opened dropdowns
$('body').click(function(e) {
	var dropdowns = $('.dropdown');

	if ($(e.target).closest('.dropdown').length == 0 && dropdowns.is(':visible')) {
		$('.dropdown').parent().removeClass('opened');
	}
});

// Carousel Slider
function loadCarousel() {
	return $('#overlay .gallery .carousel').bxSlider({
		pager: true,
		buildPager: function(slideIndex, self) {
			var partsArray = self.find('img').attr('src').split('.');
			return '<a href="" class="thumb"><img src="'+partsArray[0]+'-thumb.'+partsArray[1]+'" /></a>';
		}
	});
}

if ($('#overlay').hasClass('opened') && $('#overlay .gallery .bx-wrapper').length == 0) {
	loadCarousel();
}

// Open Modal Window
$('a[rel="modal"]').click(function(e) {
	e.preventDefault();
	$('#overlay').addClass('opened');
	$('#overlay').find('.' + $(this).attr('href')).addClass('opened');

	if ($(this).attr('href') == 'gallery' && $('#overlay .gallery .bx-wrapper').length == 0) {
		loadCarousel();
	}

	return false;
});

// Close modal
$('#overlay .modal .close').click(function(e) {
	e.preventDefault();

	$('#overlay').removeClass('opened');
	$(this).closest('.modal').removeClass('opened');
});

// Collapce/Expand .switch
$('dl dt a.switch').click(function(e) {
	e.preventDefault();

	var p = $(this).closest('dl');

	if (p.hasClass('opened')) {
		p.removeClass('opened');
	} else {
		p.parent().children('dl').removeClass('opened');
		p.addClass('opened');
	}
});

// Submit button
$('button.submit').click(function() {
	$(this).submit();
});


// Open/Close code field
function toggleCode(el) {
	if (el.is(':checked')) {
		el.closest('fieldset').children('.code-field').addClass('opened');
	} else {
		el.closest('fieldset').children('.code-field').removeClass('opened');
	}
}

$('input.code').click(function () {
	toggleCode($(this));
});

// Open code field on load if checked
$('input.code').each(function () {
	toggleCode($(this));
});


// Range count
$('div.range input').each(function () {
	var rangeVal = parseInt($(this).val());
	if (isNaN(rangeVal) || rangeVal < 1) {
		rangeVal = 1;
		$(this).val(rangeVal);
	}

	var priceEl = $(this).closest('tr').find('.price').find('input');
	var priceVal = parseInt(priceEl.val());

	if (isNaN(priceVal) || priceVal <= 0) {
		priceVal = 0;
		priceEl.val(priceVal);
	}

	var sumEl = $(this).closest('tr').find('.sum').find('input');
	var sumVal = priceVal * rangeVal;
	sumEl.val(sumVal);

	// Total price
	var totalPriceEl = $(this).closest('.product').find('.total');
	var totalPrice = 0;
	$(this).closest('.product').children('tbody').find('td.sum').each(function() {
		totalPrice += parseInt($(this).find('input').val());
	});
	totalPriceEl.find('input').val(totalPrice);

	return false;
});
$('div.range .plus').click(function (e) {
	e.preventDefault();
	var rangeVal = parseInt($(this).parent().find('input').val());
	if (isNaN(rangeVal) || rangeVal < 1) {
		rangeVal = 1;
		$(this).val(rangeVal);
	}

	rangeVal = rangeVal + 1;
	$(this).parent().find('input').val(rangeVal);


	var priceEl = $(this).closest('tr').find('.price').find('input');
	var priceVal = parseInt(priceEl.val());

	if (isNaN(priceVal) || priceVal <= 0) {
		priceVal = 0;
		priceEl.val(priceVal);
	}

	var sumEl = $(this).closest('tr').find('.sum').find('input');
	var sumVal = priceVal * rangeVal;
	sumEl.val(sumVal);

	// Total price
	var totalPriceEl = $(this).closest('.product').find('.total');
	var totalPrice = 0;
	$(this).closest('.product').children('tbody').find('td.sum').each(function() {
		totalPrice += parseInt($(this).find('input').val());
	});
	totalPriceEl.find('input').val(totalPrice);

	return false;
});

$('div.range .minus').click(function (e) {
	e.preventDefault();
	var rangeVal = parseInt($(this).parent().find('input').val());
	if(rangeVal >1) {
		if (isNaN(rangeVal) || rangeVal < 1) {
			rangeVal = 1;
			$(this).val(rangeVal);
		}

		rangeVal = rangeVal - 1;
		$(this).parent().find('input').val(rangeVal);


		var priceEl = $(this).closest('tr').find('.price').find('input');
		var priceVal = parseInt(priceEl.val());

		if (isNaN(priceVal) || priceVal <= 0) {
			priceVal = 0;
			priceEl.val(priceVal);
		}

		var sumEl = $(this).closest('tr').find('.sum').find('input');
		var sumVal = priceVal * rangeVal;
		sumEl.val(sumVal);

		// Total price
		var totalPriceEl = $(this).closest('.product').find('.total');
		var totalPrice = 0;
		$(this).closest('.product').children('tbody').find('td.sum').each(function() {
			totalPrice += parseInt($(this).find('input').val());
		});
		totalPriceEl.find('input').val(totalPrice);
	}
	return false;
});

// Focusing inputs
$('.form .field input, .form .field select').focus(function () {
	var el = $(this).closest('.field');
	$('.form .field').removeClass('focused');

	if (el.hasClass('focused')) {
		$(this).closest('.field').removeClass('focused');
	} else {
		$(this).closest('.field').addClass('focused');
	}
});