var missingfield = 'Falta campo';
var send = 'Enviar';
var difference;
var captchaerror = 'Te has equivocado';
var captchatext = 'Para enviar tu diferencia tienes que acertar, clicando sobre la imagen generas otra';

function popup(url, name, feature)
{
	window.open(url, name, feature);
}

function update()
{
	var form = document.data;

	var differenceInput = form.difference;
	difference = cleanchars(differenceInput.value);
	
	if(difference == '' || difference == missingfield || difference.length < 6)
	{
		differenceInput.style.background = '#F4C4C3';
		//differenceInput.value = missingfield;
	}
	else
	{
		displayCaptcha(false);
	}
}

function displayCaptcha(error)
{
	var html = '';
	html += '<span class="advice">'+captchatext+'</span>';
	html += '<p>';
	html += addwbrs(difference);
	html += '</p>';
	html += '<ul>';
	html += '<li>';
	
	var errormsg = '';
	if(error) errormsg = captchaerror;
	
	html += '<input type="text" name="captcha" onFocus="recover(this);" value="'+errormsg+'" class="input2" />';
	html += '</li>';
	html += '<li id="imgcaptcha">';
	var now = new Date();
	html += '<a href="javascript:changeImgCaptcha();"><img src="imgcaptcha.php?cache='+now.getTime()+'" width="100" /></a>';
	html += '</li>';
	html += '<li>';
	html += '<a href="javascript:checkCaptcha();">'+send+'</a>';
	
	html += '<input type="hidden" name="difference" value="'+difference+'" />';
	html += '</li>';
	html += '</ul>';
	
	fillElement('form', html);
}

function addwbrs(str)
{
	var a = strsplit(str, 30);		
	str = a.join('<wbr/>');
	return str;
}

function strsplit(str, l) 
{
	var ret = [];
	while(str != '')
	{
		ret.push(str.substr(0, l)); 
		str = str.substr(l); 
	}
	return ret;
}

function changeImgCaptcha()
{
	var now = new Date();
	fillElement('imgcaptcha', '<a href="javascript:changeImgCaptcha();"><img src="imgcaptcha.php?cache='+now.getTime()+'"  width="100" /></a>');
}

function fillElement(parent, content)
{
	var parentElement = document.getElementById(parent);
	parentElement.innerHTML = content;
}

function cleanchars(str)
{
	str = checkchars(str);
	return str
}

function ismaxlength(input)
{
	var maxlength = 255;
	var value = input.value;
	if(value.length > maxlength) input.value = value.substring(0, maxlength);
	/*
	var mlength = obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";
	if (obj.getAttribute && obj.value.length>mlength);
	obj.value = obj.value.substring(0, mlength);
	*/
}

function checkchars(str) 
{
	var cleanstr = '';
	var validchars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890-_.üÜáéíóúÁÉÍÓÚñÑàèìòùçÇÀÈÌÒÙ,:!¡?¿´^ \'·()[]+%=';	
	var valid = true;
	for(var i=0; i<str.length; i++)
	{
		var valid = false;
		var chr = str.charAt(i);
		var index = validchars.indexOf(chr);
		if(index != -1)
		{
			cleanstr += chr;
		}
	}
	return(cleanstr);
}

function checkCaptcha()
{
	var form = document.data;
	
	var captchaInput = form.captcha;
	var captcha = captchaInput.value;
	
	if(captcha == '' || captcha == missingfield)
	{
		captchaInput.style.background = '#F4C4C3';
		//captchaInput.value = missingfield;
	}
	else
	{
		makeRequest('checkcaptcha.php?captcha='+captcha, onCheckCaptcha, null, false);
	}
}

function onCheckCaptcha(success, arg)
{
	var form = document.data;
	
	if(success == 1) form.submit();
	else
	{
		displayCaptcha(true);
		form.captcha.style.background = '#F4C4C3';
	}
}


function recover(inputField) 
{
	var value = inputField.value;
	
	inputField.style.background = '#FFFFFF';
	//inputField.focus();
	if(value == missingfield || value == captchaerror) 
	{
		inputField.value = '';
		//alert("ecco");
	}
}

function makeRequest(url, onEnd, arg, return_xml)
{
   	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
	        http_request.overrideMimeType('text/xml');
	    }
	} else if (window.ActiveXObject) { // IE
	    try {
	        http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e) {
	        try {
	            http_request = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
	    }
	}

	if (!http_request) {
	    alert('Unfortunatelly you browser doesn\'t support this feature.');
	    return false;
	}
   
  	http_request.onreadystatechange = function() 
	{
	    if (http_request.readyState == 4) 
	 {
	        if (http_request.status == 200) 
	  {
	          //alert(http_request.responseText);
	  if (return_xml) 
	   {
		   onEnd(http_request.responseXML, arg);
	            } else {
	               onEnd(http_request.responseText, arg);
	            }
	        } else {
	            alert('There was a problem with the request.(Code: ' + http_request.status + ')');
	        }
	    }
	}

	http_request.open('GET', url, true);
	http_request.send(null);
}