/**
 * Funciones AJAX.
 */

function myXMLHttpRequest ()
{
	var xmlhttplocal;
	try {
		xmlhttplocal = new ActiveXObject ("Msxml2.XMLHTTP")}
	catch (e) {
		try {
			xmlhttplocal = new ActiveXObject ("Microsoft.XMLHTTP")
		}
		catch (E) {
			xmlhttplocal = false;
		}
  	}
	if (!xmlhttplocal && typeof XMLHttpRequest != 'undefined') {
		try {
			var xmlhttplocal = new XMLHttpRequest ();
		}
		catch (e) {
	  		var xmlhttplocal = false;
			alert ('couldn\'t create xmlhttp object');
		}
	}
	return (xmlhttplocal);
}

/**
 * Comprobamos un campo en el alta de usuario.
 */
function checkfield (type, form, field)
{
	url = base_url + 'backend/checkfield.php?type='+type+'&name=' + field.value;
	checkitxmlhttp = new myXMLHttpRequest ();
	checkitxmlhttp.open ("GET", url, true);
	checkitxmlhttp.onreadystatechange = function () {
		if (checkitxmlhttp.readyState == 4) {
			responsestring = checkitxmlhttp.responseText;
			if (responsestring == 'OK') {
				document.getElementById (type+'checkitvalue').innerHTML = '<span style="color:black">"' + field.value + 
						'": ' + responsestring + '</span>';
				form.submit.disabled = '';
			} else {
				document.getElementById (type+'checkitvalue').innerHTML = '<span style="color:red">"' + field.value + '": ' +
				responsestring + '</span>';
				form.submit.disabled = 'disabled';
			}
		}
	}
  	//  xmlhttp.setRequestHeader('Accept','message/x-formresult');
  	checkitxmlhttp.send (null);
  	return false;
}

/**
 * Añadimos 3 bloques más para la inserción de documentos.
 */
function addblocks (listblocks, num_blocks)
{
	if(listblocks && num_blocks)
	{
		nblocks = num_blocks.value;
		target = document.getElementById("more_" + nblocks);
		html = target.innerHTML;
		
		for(i = 0, nblocks++; i < 3; i++, nblocks++)
		{
			html += "\n";
			html += "<br /><label for=\"document_block_" + nblocks + "\">Bloque " + nblocks + ":</label><br />\n";
			html += "<textarea rows=\"7\" cols=\"80\" id=\"document_block_" + nblocks + "\" name=\"document_block_" + nblocks + "\"></textarea>\n";
		}
		
		html += "<div id=\"more_" + nblocks + "\"></div>";
		
		num_blocks.value = nblocks;
		target.innerHTML = html;
	}
}

/**
 * Dado el idioma de origen y destino, buscamos a los editores disponibles.
 */
function showreviewers (from, to, target)
{
	if(from && to && from.value > 0 && to.value > 0)
	{
		url = base_url + 'backend/reviewer.php?type=options&from=' + from.value + '&to=' + to.value;
		
		
		// Vaciamos el combo
		//target.innerHTML = "buscando...";
		target.options.length = 0;
		target.options[0] = new Option("buscando...", -1);
		
		checkitxmlhttp = new myXMLHttpRequest ();
		checkitxmlhttp.open ("GET", url, true);
		checkitxmlhttp.onreadystatechange = function () {
			if (checkitxmlhttp.readyState == 4) 
			{
				responsestring = checkitxmlhttp.responseText;
				//target.innerHTML = responsestring;
				/// El innerHTML no funciona para añadir OPTIONS en el puto IE, hay que reescribir esto y hacer que la funcion AJAX devuelva: (VALUE,TEXT)(VALUE,TEXT)(VALUE,TEXT)(VALUE,TEXT)... y añadir los options manualmente. Menuda cagada el IE... se quedaron agusto
				if(responsestring != "")
				{
					options = responsestring.split(")");
					target.options.length = 0;
					
					for(i = 0; i < options.length; i++)
					{
						if(options[i].length > 0)
						{
							items = options[i].split(",");
							
							if(items.length == 2)
							{
								item_val = items[0].split("(")[1];
								item_text = items[1];
								
								target.options[i] = new Option(item_text, item_val);
							}
						}
					}
				}
			}
		}
		
		//  xmlhttp.setRequestHeader('Accept','message/x-formresult');
		checkitxmlhttp.send (null);
	}
  	return false;
}

/**
 * Dado un bloque, obtenemos la traducción.
 */
function showtranslation(select, target)
{
	if(select && target)
	{
		if((target.value != "" && confirm("¿Desea perder los cambios hechos en la traducción?")) ||
			target.value == "")
		{
			url = base_url + 'backend/reviewer.php?type=translation&id=' + select.value;
			target.value = "buscando...";
			checkitxmlhttp = new myXMLHttpRequest ();
			checkitxmlhttp.open ("GET", url, true);
			checkitxmlhttp.onreadystatechange = function () {
				if (checkitxmlhttp.readyState == 4) 
				{
					responsestring = checkitxmlhttp.responseText;
					target.value = responsestring;
				}
			}
			
			checkitxmlhttp.send (null);
		}
	}
}

/**
 * Cargamos una guía de traducción.
 */
function showtranslationguide(select, target)
{
	if(select && target && select.value > 0)
	{
		if((target.value != "" && confirm("¿Desea perder los cambios hechos en la guía de traducción?")) ||
			target.value == "")
		{
			url = base_url + 'backend/reviewer.php?type=translation_guide&id=' + select.value;
			target.value = "buscando...";
			checkitxmlhttp = new myXMLHttpRequest ();
			checkitxmlhttp.open ("GET", url, true);
			checkitxmlhttp.onreadystatechange = function () {
				if (checkitxmlhttp.readyState == 4) 
				{
					responsestring = checkitxmlhttp.responseText;
					target.value = responsestring;
				}
			}
			
			checkitxmlhttp.send (null);
		}
	}
}

/**
 * Guardamos el borrador.
 */
function savedraft(textarea, sessionid, id, target)
{
	if(textarea && textarea.value != "" &&
		sessionid && sessionid.value != "" &&
		id && id.value != "" &&
		target)
	{
		url = base_url + 'backend/draft.php?type=save&id=' + id.value + '&sessionid=' + sessionid.value + '&content=' + encode(textarea.value);
		
		checkitxmlhttp = new myXMLHttpRequest ();
		checkitxmlhttp.open ("GET", url, true);
		checkitxmlhttp.onreadystatechange = function () {
			if (checkitxmlhttp.readyState == 4) 
			{
				responsestring = checkitxmlhttp.responseText;
				target.innerHTML = responsestring;
			}
		}
			
		checkitxmlhttp.send (null);
	}
}

/**
 * Guardamos periódicamente el borrador, cada 1 minuto.
 */
function auto_savedraft()
{
	savedraft(document.getElementById('translation'), document.getElementById('sessionid'), document.getElementById('block_id'), document.getElementById('document-draft'));
	
	setTimeout(auto_savedraft, 60000);
}

