﻿var OpenMenus = new Array();
var InstalledFormats = new Array();
var DiscussionName = '';
var DefaultFormat = 'text';
var MenuTitle = 'Loading...';
var BaseUrl = '';

// You can easily add your own formatter link format styles here.
function CommentLinks_Formatters(CommentID, FormatType, Number, Escape) {
	var Url = BaseUrl+'?CommentID='+CommentID;
	var Title = DiscussionName+(Number ? ' # '+Number : '');

	Format = Url+' ('+Title+')';  // Default format, also used for format type text

	switch (FormatType.toLowerCase()) {
	case 'bbcode':		Format = '[url='+Url+']'+Title+'[/url]';
	break;
	case 'xhtml':
	case 'html':
	case '(x)html':		Format = '<a href="'+Url+'">'+Title+'</a>';
	break;
	case 'markdown':	Format = '['+Title+']('+Url+')';
	break;
	case 'texy!':
	case 'texy':
	case 'textile':		Format = '"'+Title+'":'+Url+'"';
	break;
	case 'wikicode':	Format = '['+Url+' '+Title+']';
	break;
	}

//	alert('Format type: '+FormatType+', Format code: '+Format);

	return (Escape ? Format.htmlEntities() : Format);
}
// Borrowed from Lussumo Filebrowser, trimmed a bit to prevent IE7 nag
function copy(text2copy){
	var flashcopier = 'flashcopier';
	if(!document.getElementById(flashcopier)) {
		var divholder = document.createElement('div');
		divholder.id = flashcopier;
		document.body.appendChild(divholder);
	}
	document.getElementById(flashcopier).innerHTML = '';
	var divinfo = '<embed src="'+BaseUrl+'/extensions/CommentLinks/_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
	document.getElementById(flashcopier).innerHTML = divinfo;
}
function CopyDefault(CommentID, Number){
	copy(CommentLinks_Formatters(CommentID, DefaultFormat, Number, 0));
	HideMenus();
}
function ShowMenu(CommentID, Number){
	var Menu = document.getElementById('CommentMenu_'+CommentID);
	if(!Menu){
		Menu = document.createElement('div');
		Menu.id = 'CommentMenu_'+CommentID;
		document.getElementById('Comment_'+CommentID).insertBefore(Menu, document.getElementById('CommentBody_'+CommentID));
	}
	Menu.innerHTML = BuildMenu(CommentID, Number);
	Menu.className = 'CopyMenu';
	OpenMenus.push(Menu);
	addEvent(document, 'mouseup', HideMenus);
}
function HideMenus(){
	var Menu;
	removeEvent(document, 'mouseup', HideMenus);
	while (Menu = OpenMenus.pop()) {
		Menu.className = 'HiddenMenu';
	}
}
function BuildMenu(CommentID, Number){
	var Menu = '<dl id="CopyMenu_'+CommentID+'"><dt>'+MenuTitle+'</dt>';
	var Name;
	for (var x in InstalledFormats){
		Name = InstalledFormats[x];
		Format = CommentLinks_Formatters(CommentID, Name, Number, 1);
		Menu += '<dd' + (Name == DefaultFormat ? ' class="Default"' : '') + '><a href="javascript:copy(\''+Format+'\');" title="'+Format+'">'+Name+'</a></dd>';
	}
	return Menu+'</dl>';
}
String.prototype.htmlEntities = function(){
	var div = document.createElement('div');
	var text = document.createTextNode(this);
	div.appendChild(text);
	text = div.innerHTML;
	text = text.replace(/\"/g, '&quot;');
	text = text.replace(/\'/g, '&shy;');
	return text;
}