function ego_captcha()
{ 
	var vars = get_script_vars('captcha');
	var script = vars.path+'bin/captcha/ajax.reload.php';

	/* Ajax Objekt */
	var ajax = {
		_factories : [
			function(){ return new XMLHttpRequest(); },
			function(){ return new ActiveXObject('Msxml2.XMLHTTP'); },
			function(){ return new ActiveXObject('Msxml3.XMLHTTP'); },
			function(){ return new ActiveXObject('Microsoft.XMLHTTP'); }	
		],
		
		newObject : function()
		{
			var req = false;
	
			for(var i=0;i<this._factories.length;i++)
			{
				try {
					req = this._factories[i]();
				} catch(e) { continue; }
				break;
			}
			
			return req;			
		}
	};
	
	var req = ajax.newObject();
	
	function get_script_vars(name)
	{
		var scripts = document.getElementsByTagName('script');
		var expr = new RegExp(name+'\.js\?(.*)$', 'i');
		var vars = {};

		for(var i=0;i<scripts.length;i++)
		{
			if(m = scripts[i].src.match(expr))
			{
				var _split = m[1].match(/([^=]+)=([^&]+)/g);
				
				for(var n=0;n<_split.length;n++)
				{				
					var s = _split[n].split('=');
					vars[s[0].replace(/^[?&]/, '')] = s[1];
				}
				break;
			}
		}
		
		return vars;
	}	
	
	this.reload = function(id, hidden)
	{
		var img = document.getElementById('captcha_img_'+id);
		var match = img.src.match(/[\/|\\]([^\\\/]+)$/);
		var filename = match[1].replace(/\?.*$/, '');
		var imgSrc = img.src;

		// Parameterliste generieren
		var _params = '';
		for(prop in vars)
		{
			_params += '&'+prop+'='+vars[prop];
		}

		req.open('POST', script, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send('src='+filename+_params);

		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				var code = req.responseText.split(',');
				var _imgSrc = imgSrc+'?'+code[1];

				var newImg = new Image();
				newImg.onload = function()
				{
					img.src = _imgSrc;
					document.getElementById(hidden+'_'+id).value = code[0];
				}

				newImg.src = _imgSrc;
			}
		};
	}
}

var captcha = new ego_captcha();