// Addtext
function addtext(veld,text)
{
    document.form.elements[veld].value += " "+text+" ";
    document.form.elements[veld].focus();
}

function removeImage2(vars)
{
	$.get("/scripts/resetImage.php",

			function(data)
			{
  				$("#img").hide("slow");

			}
	);
}

function removeImage(vars)
{
	$.get("/scripts/resetImage.php",

			function(data)
			{
  				$("#img").hide("slow");
			}
	);
}

function ChangePage(pageVars)
{
	new Ajax.Updater($('MyPane'), pageVars);

	return false;
}

function deleteReply(replyID, parentID)
{
	$.get("/scripts/deleteReply.php", { replyID: + replyID, parent: + parentID },

			function()
			{
				$("li.reply_" + replyID).hide("slow");
			}
	);

}

function update()
{
	$("#notice").hide();
	$.ajax({
		type: 'GET',
		url: '/nowPlaying.php',
		timeout: 2000,
    	success: function(data)
    	{
      		$("#notice").hide();
   			$("#nowPlaying").html(data);
    		window.setTimeout(update, 10000);
    	},
   		error: function (XMLHttpRequest, textStatus, errorThrown)
   		{
   			$("#notice").show();
   			$("#notice").html('Server timeout..');
   			window.setTimeout(update, 60000);
   		}
    });
}

function makeScrollable(wrapper, scrollable){
	// Get jQuery elements
	var wrapper = $(wrapper), scrollable = $(scrollable);

	// Hide images until they are not loaded
	scrollable.hide();
	var loading = $('<div class="loading">Loading...</div>').appendTo(wrapper);

	// Set function that will check if all images are loaded
	var interval = setInterval(function(){
		var images = scrollable.find('img');
		var completed = 0;

		// Counts number of images that are succesfully loaded
		images.each(function(){
			if (this.complete) completed++;
		});

		if (completed == images.length){
			clearInterval(interval);
			// Timeout added to fix problem with Chrome
			setTimeout(function(){

				loading.hide();
				// Remove scrollbars
				wrapper.css({overflow: 'hidden'});

				scrollable.slideDown('slow', function(){
					enable();
				});
			}, 1000);
		}
	}, 100);

	function enable(){
		// height of area at the top at bottom, that don't respond to mousemove
		var inactiveMargin = 69;
		// Cache for performance
		var wrapperWidth = wrapper.width();
		var wrapperHeight = wrapper.height();
		// Using outer height to include padding too
		var scrollableHeight = scrollable.outerHeight() + 2*inactiveMargin;
		// Do not cache wrapperOffset, because it can change when user resizes window
		// We could use onresize event, but it's just not worth doing that
		// var wrapperOffset = wrapper.offset();

		// Create a invisible tooltip
		var tooltip = $('<div class="sc_menu_tooltip"></div>')
			.css('opacity', 0)
			.appendTo(wrapper);

		// Save menu titles
		scrollable.find('a').each(function(){
			$(this).data('tooltipText', this.title);
		});

		// Remove default tooltip
		scrollable.find('a').removeAttr('title');
		// Remove default tooltip in IE
		scrollable.find('img').removeAttr('alt');

		var lastTarget;
		//When user move mouse over menu
		wrapper.mousemove(function(e){
			// Save target
			lastTarget = e.target;

			var wrapperOffset = wrapper.offset();

			var tooltipLeft = e.pageX - wrapperOffset.left;
			// Do not let tooltip to move out of menu.
			// Because overflow is set to hidden, we will not be able too see it
			tooltipLeft = Math.min(tooltipLeft, wrapperWidth - 75); //tooltip.outerWidth());

			var tooltipTop = e.pageY - wrapperOffset.top + wrapper.scrollTop() - 40;
			// Move tooltip under the mouse when we are in the higher part of the menu
			if (e.pageY - wrapperOffset.top < wrapperHeight/2){
				tooltipTop += 80;
			}
			tooltip.css({top: tooltipTop, left: tooltipLeft});

			// Scroll menu
			var top = (e.pageY -  wrapperOffset.top) * (scrollableHeight - wrapperHeight) / wrapperHeight - inactiveMargin;
			if (top < 0){
				top = 0;
			}
			wrapper.scrollTop(top);
		});

		// Setting interval helps solving perfomance problems in IE
		var interval = setInterval(function(){
			if (!lastTarget) return;

			var currentText = tooltip.text();

			if (lastTarget.nodeName == 'IMG'){
				// We've attached data to a link, not image
				var newText = $(lastTarget).parent().data('tooltipText');

				// Show tooltip with the new text
				if (currentText != newText) {
					tooltip
						.stop(true)
						.css('opacity', 0)
						.text(newText)
						.animate({opacity: 1}, 1000);
				}
			}
		}, 200);

		// Hide tooltip when leaving menu
		wrapper.mouseleave(function(){
			lastTarget = false;
			tooltip.stop(true).css('opacity', 0).text('');
		});

	}
}

$(function(){
	makeScrollable("div#xchartWrapper", "div#xchart");
});

$(function(){
	makeScrollable("div#newTrackWrapper", "div#newTrackHolder");
});

function fadeImages()
{
	$('#artistGallery').innerfade({
		speed: 'slow',
 		timeout: 8000,
  		type: 'sequence',
   		containerheight: '85px'
  	});
}

function validate()
{
	$(document).ready(function(){

  	var default_values = {};

 	//global vars
	var form = $("#newsAlert");
	var email = $("#email");
	var emailInfo = $("#emailInfo");

  	email.each(function(i)
  	{
    	var index = $(this).attr('name');
    	var value = $(this).val();
    	default_values[index] = value;
  	});

 	email.focus(function()
 	{
    	if($(this).val() === default_values[$(this).attr('name')])
    	{
      		$(this).val('');
    	};
  	})

	//On blur
	email.blur(validateEmail);

	//On Submitting
	form.submit(function(){
		if(validateEmail())
		{
			form.slideUp("normal");

			$("#mailResult").append('<div class="loading">Loading...</div>');

			return false
		}
		else
		{
			return false;
		}
	});

	//validation functions
	function validateEmail(){
		//testing regular expression
		var a = $("#email").val();
		var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
		//if it's valid email

		if(filter.test(a)){
			email.removeClass("error");
			emailInfo.text("");
			emailInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			email.addClass("error");
			emailInfo.text("Geef een geldig email adres op");
			emailInfo.addClass("error");
			return false;
		}
	}
	});
}

$(function() { 
	 
    // if the function argument is given to overlay, 
    // it is assumed to be the onBeforeLoad event listener 
    $("a[rel]").overlay({ 
 
        expose: 'black', 
 
        onBeforeLoad: function() { 
 
            // grab wrapper element inside content 
            var wrap = this.getContent().find(".contentWrap"); 
 
            // load the page specified in the trigger 
            wrap.load(this.getTrigger().attr("href")); 
        } 
 
    }); 
});

function drawRater(trackID, average)
{

	$(function ()
	{
		function starRater(res)
		{
			$('#rater').empty().rater(
			'/scripts/trackVote.php', trackID, {
			maxvalue : 6,
			style    : 'basic',
			curvalue : res||0,
			callback : starRater
			});
  		}

   		starRater(average);

 	});

}
