diff forum/Themes/Vamp/scripts/captcha.js @ 76:e3e11437ecea website

Add forum code
author Chris Cannam
date Sun, 07 Jul 2013 11:25:48 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/forum/Themes/Vamp/scripts/captcha.js	Sun Jul 07 11:25:48 2013 +0200
@@ -0,0 +1,79 @@
+// This file contains javascript associated with the captcha visual verification stuffs.
+
+function smfCaptcha(imageURL, uniqueID, useLibrary, letterCount)
+{
+	// By default the letter count is five.
+	if (!letterCount)
+		letterCount = 5;
+
+	uniqueID = uniqueID ? '_' + uniqueID : '';
+	autoCreate();
+
+	// Automatically get the captcha event handlers in place and the like.
+	function autoCreate()
+	{
+		// Is there anything to cycle images with - if so attach the refresh image function?
+		var cycleHandle = document.getElementById('visual_verification' + uniqueID + '_refresh');
+		if (cycleHandle)
+		{
+			createEventListener(cycleHandle);
+			cycleHandle.addEventListener('click', refreshImages, false);
+		}
+
+		// Maybe a voice is here to spread light?
+		var soundHandle = document.getElementById('visual_verification' + uniqueID + '_sound');
+		if (soundHandle)
+		{
+			createEventListener(soundHandle);
+			soundHandle.addEventListener('click', playSound, false);
+		}
+	}
+
+	// Change the images.
+	function refreshImages()
+	{
+		// Make sure we are using a new rand code.
+		var new_url = new String(imageURL);
+		new_url = new_url.substr(0, new_url.indexOf("rand=") + 5);
+
+		// Quick and dirty way of converting decimal to hex
+		var hexstr = "0123456789abcdef";
+		for(var i=0; i < 32; i++)
+			new_url = new_url + hexstr.substr(Math.floor(Math.random() * 16), 1);
+
+		if (useLibrary && document.getElementById("verification_image" + uniqueID))
+		{
+			document.getElementById("verification_image" + uniqueID).src = new_url;
+		}
+		else if (document.getElementById("verification_image" + uniqueID))
+		{
+			for (i = 1; i <= letterCount; i++)
+				if (document.getElementById("verification_image" + uniqueID + "_" + i))
+					document.getElementById("verification_image" + uniqueID + "_" + i).src = new_url + ";letter=" + i;
+		}
+
+		return false;
+	}
+
+	// Request a sound... play it Mr Soundman...
+	function playSound(ev)
+	{
+		if (!ev)
+			ev = window.event;
+
+		popupFailed = reqWin(imageURL + ";sound", 400, 120);
+		// Don't follow the link if the popup worked, which it would have done!
+		if (!popupFailed)
+		{
+			if (is_ie && ev.cancelBubble)
+				ev.cancelBubble = true;
+			else if (ev.stopPropagation)
+			{
+				ev.stopPropagation();
+				ev.preventDefault();
+			}
+		}
+
+		return popupFailed;
+	}
+}
\ No newline at end of file