// Fix IE6 CSS image flickering
try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {};

$(document).ready(function(){
	initializeCommentForm();

	$('.slider').each( function (i) {
		var boxwidth 		= 170;
		var boxheight 		= 250;
		var boxmargin 		= 10;
		var position 		= 0;
		var visibleboxes 	= 5;
		var totalboxes  	= $('#program-highlights .slide .image').length;
		var width    		= $('#program-highlights .content').width() + boxmargin;
		var slidewidth		= totalboxes * ( boxwidth + boxmargin);
		var maxpos			= -( slidewidth - width );
        
		$('#program-highlights .slider-frame').width(slidewidth);
		$('#program-highlights .content').css('overflow', 'hidden')
        $('#program-highlights').prepend('<ul class="navigation"><li class="previous">&nbsp;</li><li class="next">&nbsp;</li></ul>');
        $('#program-highlights .previous').addClass('previous-disabled');
        
		if ( totalboxes > visibleboxes ) {
            $('#program-highlights .next').removeClass('next-disabled');
			
            $("#program-highlights .previous").click( function() {
				position += width;

				$('#program-highlights .next').removeClass('next-disabled');
				
				if ( position >= 0 ) { position = 0	};
		
				$("#program-highlights .slider-frame").animate({
					left: position
				}, 500, function() {
					// jFix Query bug when trying to set position to 0
					if ( position == 0 ) {
						$('#program-highlights .slider-frame').css('left', '0px');
						$('#program-highlights .previous').addClass('previous-disabled');
					};
				});
				
				return false;
			});
	
			$("#program-highlights .next").click( function() {
				position -= width;
				
				$('#program-highlights .previous').removeClass('previous-disabled');
				
				if ( position < maxpos ) {	position = maxpos };
				
				$("#program-highlights .slider-frame").animate({
					left: position
				}, 500, function() {
					if ( position == maxpos ) {
						$('#program-highlights .next').addClass('next-disabled');
					};
				});
	
				return false;
			});
		} else {
			$("#program-highlights .previous").addClass('disabled');
			$("#program-highlights .next").addClass('disabled');
		}
	});
});

function initializeCommentForm() {
	if (!document.getElementById || !document.createElement || !document.getElementById('new_comment'))
		return;

	var form = document.getElementById('new_comment');

	form.onsubmit = function(e) {
		if (!validateForm())
			return false;

		var text = document.getElementById('comment_text').value;
		var subject = text.split(/(\.)|(\!)|(\?)/)[0];

		if (subject.length > 35)
			subject = subject.substring(0, 35) + ' [...]';

		document.getElementById('subject').value = subject;
	};
}

function validateForm() {
	var name = document.getElementById('name');
	var email = document.getElementById('email');
	var comment_text = document.getElementById('comment_text');
	var error = false;

	if (name.value == '') {
		setError(name, 'Vennligst oppgi navn');
		error = true;
	} else {
		removeError(name);
	}

	if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.value)) {
		setError(email, 'Vennligst oppgi navn');
		error = true;
	} else {
		removeError(email);
	}

	if (comment_text.value == '') {
		setError(comment_text, 'Vennligst skriv inn en kommentar');
		error = true;
	} else {
		removeError(comment_text);
	}

	return !error;
}

function setError(field, msg) {
	if (field.parentNode.className.indexOf('error') >= 0)
		return;

	addClass(field.parentNode, 'error');
	var txt = document.createElement('p');
	txt.appendChild(document.createTextNode(msg));

	field.parentNode.insertBefore(txt, field.parentNode.firstChild);
}

function removeError(el) {
	if (el.parentNode.className.indexOf('error') < 0) return;

	removeClass(el.parentNode, 'error');
	el.parentNode.removeChild(el.parentNode.firstChild);
}

function addClass(element, classAdd) {
	if (element.className.indexOf(classAdd) >= 0)
		return;

	element.className += element.className ? ' ' + classAdd : classAdd;
}

function removeClass(element, className) {
	if (element.className.indexOf(className) < 0)
		return;

	var replace = element.className.match(' ' + className) ? ' ' + className : className;
	element.className = element.className.replace(replace, '');
}