var edButtons = new Array();
var edLinks = new Array();
var edOpenTags = new Array();

function edButton(id, display, tagStart, tagEnd, access, open) {
	this.id = id;				// used to name the toolbar button
	this.display = display;		// label on button
	this.tagStart = tagStart; 	// open tag
	this.tagEnd = tagEnd;		// close tag
}

edButtons.push(
	new edButton('N','B','[n]','[/n]')
);
edButtons.push(
	new edButton('Cursiva','I','[c]','[/c]')
);
edButtons.push(
	new edButton('Subrayado','U','[s]','[/s]')
);
edButtons.push(
	new edButton('Titulo','T','[tit]','[/tit]')
);
edButtons.push(
	new edButton('Script','S','[cod]','[/cod]')
);
edButtons.push(
	new edButton('Cita','C','[cit]','[/cit]')
);

var extendedStart = edButtons.length;

function edToolbar(myform,which,limit,divUrl,profDiv) { 
	var concatText = '<div id="ed_toolbar_' + which + '"><span>';		
	for (i=0; i<extendedStart; i++) {
	    concatText += '<input type="button" id="'+edButtons[i].id+'_'+which+'" class="AreaTextJS"';
		concatText += ' onclick="edInsertTag(\''+which+'\', '+i+');contarArea(\''+myform+'\',\''+which+'\','+limit+', \''+divUrl+'\')" value="'+edButtons[i].id+'"> ';
	}
	concatText += '</span></div>';	
	$("#"+profDiv).html(concatText);
	edOpenTags[which] = new Array();
}
//ADMIN
function edToolbarGeneric(which,limit) { // descripcion
	document.write('<div id="ed_toolbar_' + which + '"><span>');	
	for (i=0; i<extendedStart; i++) {
		edShowButton(which, edButtons[i], i, limit);
	}
	document.write('</span></div>');
    edOpenTags[which] = new Array();
}
//ADMIN
function edShowButton(which, button, i, limit) { // INGRESA TODOS LOS BOTONES INICIO
    document.write('<input type="button" id="'+button.id+'_'+which+'" class="AreaTextJS"');
    document.write(' onclick="edInsertTag(\''+which+'\', '+i+');contarArea(\'formname\',\''+which+'\','+limit+')" value="'+button.id+'"> ');
}

function edAddTag(which, button) { // ESTADO DEL BOTON CUANDO SE APRETA
	if (edButtons[button].tagEnd != '') {

		edOpenTags[which][edOpenTags[which].length] = button;
		document.getElementById(edButtons[button].id + '_' + which).value = 
		'/' + document.getElementById(edButtons[button].id + '_' + which).value;
		
		$("#"+edButtons[button].id + '_' + which).css({color: "#9EB1B6"});
		$("#"+edButtons[button].id + '_' + which).css({background: "#2F3C3E"});
    }
}

function edRemoveTag(which, button) { // VUELVE AL ESTADO ORIGINAL DE INICIO
	for (i = 0; i < edOpenTags[which].length; i++) {
		if (edOpenTags[which][i] == button) {
			edOpenTags[which].splice(i, 1);
			document.getElementById(edButtons[button].id + '_' + which).value = 
			document.getElementById(edButtons[button].id + '_' + which).value.replace('/', '');
			$("#"+edButtons[button].id + '_' + which).css({color: "#FFFFFF"});
			$("#"+edButtons[button].id + '_' + which).css({background: "#000000"});
		}
	}
}

function edCheckOpenTags(which, button) {
	var tag = 0;
	for (i = 0; i < edOpenTags[which].length; i++) {
		if (edOpenTags[which][i] == button) {
			tag++;
		}
	}
	if (tag > 0) {
		return true; // tag encontrada
	}
	else {
		return false; // tag no encontrada
	}
}

function edInsertTag(which, i) {
    myField = document.getElementById(which);
	//IE support
	if (document.selection) {
		myField.focus();
	    sel = document.selection.createRange();
		if (sel.text.length > 0) {
			sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
		}
		else {
			if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
			
			sel.text = edButtons[i].tagStart;
				edAddTag(which, i);	
			
			}
			else {
				sel.text = edButtons[i].tagEnd;
				edRemoveTag(which, i);
			}
		}
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = myField.scrollTop;
		if (startPos != endPos) {
			myField.value = myField.value.substring(0, startPos)
			              + edButtons[i].tagStart
			              + myField.value.substring(startPos, endPos) 
			              + edButtons[i].tagEnd
			              + myField.value.substring(endPos, myField.value.length);
			cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
		}
		else {
			if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
				myField.value = myField.value.substring(0, startPos) 
				              + edButtons[i].tagStart
				              + myField.value.substring(endPos, myField.value.length);
				edAddTag(which, i);
				cursorPos = startPos + edButtons[i].tagStart.length;
			}
			else {
				myField.value = myField.value.substring(0, startPos) 
				              + edButtons[i].tagEnd
				              + myField.value.substring(endPos, myField.value.length);
				edRemoveTag(which, i);
				cursorPos = startPos + edButtons[i].tagEnd.length;
			}
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		myField.scrollTop = scrollTop;
	}
	else {
		if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
			myField.value += edButtons[i].tagStart;
			edAddTag(which, i);
		}
		else {
			myField.value += edButtons[i].tagEnd;
			edRemoveTag(which, i);
		}
		myField.focus();
	}
}
