/*
 * Copyright : (c) 2006 Webfish IT Services
 * Website   : http://www.webfish.nl
 * Email     : info@webfish.nl
 * -------------------------------------------------------------------------
 *   $Id: menu.js 20 2007-03-20 12:40:54Z caspar $
 * -------------------------------------------------------------------------
 */

sfHover = function() {
	var sfEls = document.getElementById("menu").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

function appendOnLoadAlert(str_msg)
{
	var appendOnLoadAlert_oldOnload = (window.onload) ? window.onload : function () { };
	window.onload = function () { appendOnLoadAlert_oldOnload(); alert(str_msg); }
}

function doPrint()
{
	var sUrl = window.location.href;
	sUrl = sUrl.replace(strBaseUrl +'/', strBaseUrl +'/print.php?r=');
	var winFeatures = "width=600,height=700,left=50,top=50,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,location=no";
	spawn = window.open(sUrl, "doPrint", winFeatures);

	return false;
}

function doDoorsturen(strTitle)
{
	if (strTitle == undefined)
	{
		strTitle = 'Pagina doorsturen';
	}
	$('#dsForm').find('h3:first').html(strTitle);
	$('#dsContainer').modal({
		close:false, // geen close button
		onOpen:ds.onOpen,
		onShow:ds.onShow,
		onClose:ds.onClose,
		position:['10%',] // alleen top
	});
	return false;
}

jQuery.fn.delay = function(time,func){
	return this.each(function(){
		setTimeout(func,time);
	});
};

var ds = {
	message: null,
	onOpen: function (dialog)
	{
		dialog.overlay.fadeIn(200, function ()
		{
			dialog.container.fadeIn(200, function ()
			{
				dialog.data.fadeIn(400, function ()
				{
					$('#dsContainer form').fadeIn(200, function ()
					{
						$('#dsContainer #dsNaam').focus();
					});
				});
			});
		});
	},
	onClose: function (dialog)
	{
		dialog.data.fadeOut(200, function ()
		{
			dialog.container.fadeOut(200, function ()
			{
				dialog.overlay.fadeOut(200, function ()
				{
					$.modal.close();
				});
			});
		});
	},
	onShow: function (dialog)
	{
		$('#dsContainer #ds_link').val(window.location.href);
		$('#dsContainer #ds_submit').click(ds.onSubmit);
	},
	onSubmit: function (e)
	{
		e.preventDefault();
		if (ds.validate())
		{
			$('#dsContainer #ds_error').fadeOut(function ()
			{
				$('#dsContainer #ds_error').removeClass('error').empty(); // laatste message weghalen
				ds.message = 'Bezig met versturen...';
				ds.showMessage(0);
				$.ajax({
					url: 'doorsturen_ajax.php',
					data: $('#dsContainer form').serialize() + '&action=send',
					type: 'post',
					cache: false,
					dataType: 'html',
					complete: function (xhr) {
						ds.message = xhr.responseText;
						var isError = (ds.message.substring(0,1) != '0');
						ds.message = ds.message.substring(1);

						ds.showMessage(isError);

						if (!isError)
						{
							$(this).delay(1000, function () { $.modal.close() });
							alert(ds.message);
						}
					},
					error: ds.onError
				});
			});
		}
		else
		{
			ds.showMessage(true);
		}

		return false;
	},
	onError: function (xhr) {
		alert(xhr.statusText);
	},
	validate: function () {
		ds.message = '';

		if (!$('#dsContainer #ds_naam').val())
		{
			ds.message += 'Uw naam is verplicht.<br/>';
		}
		var email = $('#dsContainer #ds_email').val();
		if (!email)
		{
			ds.message += 'Uw email is verplicht.<br/>';
		}
		else
		{
			if (!ds.validateEmail(email))
			{
				//ds.message += 'Uw email is niet geldig.<br/>';
			}
		}
		if (!$('#dsContainer #ds_naam2').val())
		{
			ds.message += 'De naam van uw vriend is verplicht.<br/>';
		}
		var emailFriend = $('#dsContainer #ds_email2').val();
		if (!emailFriend)
		{
			ds.message += 'De email van uw vriend is verplicht.<br/>';
		}
		else
		{
			if (!ds.validateEmail(emailFriend))
			{
				ds.message += 'De email van uw vriend is niet geldig.<br/>';
			}
		}

		return (ds.message.length == 0);
	},
	showMessage: function (isError) {
		var objDiv = $('<div>');
		if (isError)
			objDiv.addClass('error');
		$('#dsContainer #ds_error')
			.html(objDiv.append(ds.message))
			.fadeIn(200);
	},
	validateEmail: function (email) {
		var at = email.lastIndexOf("@");

		// Make sure the at (@) sybmol exists and
		// it is not the first or last character
		if (at < 1 || (at + 1) === email.length)
			return false;

		// Make sure there aren't multiple periods together
		if (/(\.{2,})/.test(email))
			return false;

		// Break up the local and domain portions
		var local = email.substring(0, at);
		var domain = email.substring(at + 1);

		// Check lengths
		if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
			return false;

		// Make sure local and domain don't start with or end with a period
		if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
			return false;

		// Check for quoted-string addresses
		// Since almost anything is allowed in a quoted-string address,
		// we're just going to let them go through
		if (!/^"(.+)"$/.test(local)) {
			// It's a dot-string address...check for valid characters
			if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
				return false;
		}

		// Make sure domain contains only valid characters and at least one period
		if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
			return false;

		return true;
	}
};

