// JavaScript Document
// ==UserScript==
// @name          Comentarios Microsiervos
// @description	  Permite formatear en HTML los comentarios enviados a Microsiervos
// @include       http://www.microsiervos.com/archivo/*
// @include       http://www.microsiervos.com/msmt/*
// ==/UserScript==

// Nota del script anterior, por Elemuy
// (http://barrapunto.com/journal.pl?op=display&uid=11529&id=14175)
// ====================================
// Para las funciones _imprimeTag y _formateaEnlace me he inspirado en el funcionamiento
// del script quicktags.js de la plataforma de publicacion WordPress (http://wordpress.org)
// por lo tanto lo licencio como GPL dado que esta es la licencia de WordPress ;)

// Nota de la adaptacion
// =====================
// He hecho una adaptacion, mas o menos decente, del script anterior creado por Elemuy para
// los comentarios de Barrapunto, a los comentarios de Microsiervos. Por lo mismo que
// antes, esta licenciado como GPL

(function()

{
	
window.scriptname = "mt-comments.cgi";

	
window._imprimeTag=function(myField, etiquetaInicio, etiquetaFin)
{
	if (myField.selectionStart || myField.selectionStart == '0') 
	{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		if (startPos != endPos) 
		{
			myField.value = myField.value.substring(0, startPos)
			              +etiquetaInicio
			              + myField.value.substring(startPos, endPos) 
			              +etiquetaFin
			              + myField.value.substring(endPos, myField.value.length);
			cursorPos +=etiquetaInicio.length +etiquetaFin.length;
		}
	
		else 
			{
			myField.value = myField.value.substring(0, startPos) 
			              +etiquetaInicio + etiquetaFin
			              + myField.value.substring(endPos, myField.value.length);
	
			cursorPos = startPos +etiquetaInicio.length;
			}
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		
		return false;
}

window._formateaEnlace = function() 
{
	var URL = prompt('Introduce la URL:' ,'http://');
	
	if (URL) 
	 {
			_imprimeTag( textarea, '<a href="' + URL + '">', '</a>');
			
		}
		
		return false;
}


//////////////////////////////////////////////
//  16/06/2005 9:52 Funcion principal       //
//////////////////////////////////////////////

var buttonStyle = "margin: 2px 2px 2px 2px; border: 1px solid #999; "

window.textarea = null;
window.textarea = document.getElementsByName("text")[0]; 

if (textarea != null)
{

		// 16/06/2005 8:42 creamos la barra de herramientas y los botones
				
		var toolbarDiv = window.document.createElement('div'); // barra
		
		var anchorButton =  window.document.createElement('button'); // <a>
		var boldButton =  window.document.createElement('button'); // <strong>
		var italicButton =  window.document.createElement('button'); // <em>
		var bqButton =  window.document.createElement('button'); // <blockquote>
		var brButton =  window.document.createElement('button'); // <br> 
		var pButton =  window.document.createElement('button'); // <p>
		var liButton =  window.document.createElement('button'); // <li>
		var ulButton =  window.document.createElement('button'); // <ul>
		var olButton =  window.document.createElement('button'); // <ol>
		
		
		// 16/06/2005 8:43 Asignamos sus atributos
		// 17/06/2005 12:01:18 Añado ahora los atributos title 
		
		anchorButton.setAttribute('style',buttonStyle);
		anchorButton.setAttribute('onclick','return _formateaEnlace()');
		anchorButton.innerHTML ="<u>enlace</u>";
		
		boldButton.setAttribute('style',buttonStyle);
		boldButton.setAttribute('onclick','return _imprimeTag(textarea, "<strong>", "</strong>")');
		boldButton.innerHTML ="<b>negrita</b>";
		
		italicButton.setAttribute('style',buttonStyle);
		italicButton.setAttribute('onclick','return _imprimeTag(textarea, "<em>", "</em>")');
		italicButton.innerHTML ="<i>cursiva</i>";
		
		bqButton.setAttribute('style',buttonStyle);
		bqButton.setAttribute('onclick','return _imprimeTag(textarea, "<blockquote>", "</blockquote>")');
		bqButton.innerHTML ="\"cita\"";
		
		brButton.setAttribute('style',buttonStyle);
		brButton.setAttribute('onclick','return _imprimeTag(textarea, "<br>", "")');
		brButton.innerHTML ="salto de línea";
		
		pButton.setAttribute('style',buttonStyle);
		pButton.setAttribute('onclick','return _imprimeTag(textarea, "<p>", "</p>")');
		pButton.innerHTML ="párrafo";

		liButton.setAttribute('style',buttonStyle);
		liButton.setAttribute('onclick','return _imprimeTag(textarea, "<li>", "</li>")');
		liButton.innerHTML ="elemento de lista";
		
		ulButton.setAttribute('style',buttonStyle);
		ulButton.setAttribute('onclick','return _imprimeTag(textarea, "<ul>", "</ul>")');
		ulButton.innerHTML ="lista sin ordenar";
		
		olButton.setAttribute('style',buttonStyle);
		olButton.setAttribute('onclick','return _imprimeTag(textarea, "<ol>", "</ol>")');
		olButton.innerHTML ="lista ordenada";
		
		// 16/06/2005 9:09 vamos añadiendo los botones a la toolbar
		
		toolbarDiv.appendChild(anchorButton);
		toolbarDiv.appendChild(boldButton);
		toolbarDiv.appendChild(italicButton);
		toolbarDiv.appendChild(bqButton);
		toolbarDiv.appendChild(brButton);
		toolbarDiv.appendChild(pButton);
		toolbarDiv.appendChild(liButton);
		toolbarDiv.appendChild(ulButton);
		toolbarDiv.appendChild(olButton);
		
		// 16/06/2005 9:15 Y ahora la barra al documento
		
		if (window.scriptname == "mt-comments.cgi")
		{ 
					document.forms[1].insertBefore(toolbarDiv, document.forms[1].firstChild);
		}
		else		
			{
					document.forms[1].appendChild(toolbarDiv);
			}
		
		

}
})();

