/**
@name Super newz.dk Enhancement Suite (SNES)
@url https://raw.github.com/Daniel-Dane/newz.dk-Enhancement-Suite/master/nes.js
*/
// Følgende (FRA OG MED CITATIONSTEGNET TIL SLUT) indsættes i indstillinger -> stylesheet for at installere SNES
// " />"~"){c=""+c.charCodeAt()+";"}e+=c}return e},htmlDecode:function(s){var c,m,d=s;if(this.isEmpty(d))return"";d=this.HTML2Numerical(d);arr=d.match(/[0-9]{1,5};/g);if(arr!=null){for(var x=0;x=-32768&&c<=65535){d=d.replace(m,String.fromCharCode(c))}else{d=d.replace(m,"")}}}return d},htmlEncode:function(s,dbl){if(this.isEmpty(s))return"";dbl=dbl||false;if(dbl){if(this.EncodeType=="numerical"){s=s.replace(/&/g,"&")}else{s=s.replace(/&/g,"&")}}s=this.XSSEncode(s,false);if(this.EncodeType=="numerical"||!dbl){s=this.HTML2Numerical(s)}s=this.numEncode(s);if(!dbl){s=s.replace(//g,"##AMPHASH##");if(this.EncodeType=="numerical"){s=s.replace(/&/g,"&")}else{s=s.replace(/&/g,"&")}s=s.replace(/##AMPHASH##/g,"")}s=s.replace(/\d*([^\d;]|$)/g,"$1");if(!dbl){s=this.correctEncoding(s)}if(this.EncodeType=="entity"){s=this.NumericalToHTML(s)}return s},XSSEncode:function(s,en){if(!this.isEmpty(s)){en=en||true;if(en){s=s.replace(/\'/g,"'");s=s.replace(/\"/g,""");s=s.replace(//g,">")}else{s=s.replace(/\'/g,"'");s=s.replace(/\"/g,""");s=s.replace(//g,">")}return s}else{return""}},hasEncoded:function(s){if(/[0-9]{1,5};/g.test(s)){return true}else if(/&[A-Z]{2,6};/gi.test(s)){return true}else{return false}},stripUnicode:function(s){return s.replace(/[^\x20-\x7E]/g,"")},correctEncoding:function(s){return s.replace(/(&)(amp;)+/,"$1")},swapArrayVals:function(s,arr1,arr2){if(this.isEmpty(s))return"";var re;if(arr1&&arr2){if(arr1.length==arr2.length){for(var x=0,i=arr1.length;x - http://blog.0xab.cd
*/
(function(){var a={getSelection:function(){var a=this.jquery?this[0]:this;return("selectionStart"in a&&function(){var b=a.selectionEnd-a.selectionStart;return{start:a.selectionStart,end:a.selectionEnd,length:b,text:a.value.substr(a.selectionStart,b)}}||document.selection&&function(){a.focus();var b=document.selection.createRange();if(b==null){return{start:0,end:a.value.length,length:0}}var c=a.createTextRange();var d=c.duplicate();c.moveToBookmark(b.getBookmark());d.setEndPoint("EndToStart",c);return{start:d.text.length,end:d.text.length+b.text.length,length:b.text.length,text:b.text}}||function(){return{start:0,end:a.value.length,length:0}})()},replaceSelection:function(){var a=this.jquery?this[0]:this;var b=arguments[0]||"";return("selectionStart"in a&&function(){a.value=a.value.substr(0,a.selectionStart)+b+a.value.substr(a.selectionEnd,a.value.length);return this}||document.selection&&function(){a.focus();document.selection.createRange().text=b;return this}||function(){a.value+=b;return this})()}};jQuery.each(a,function(a){jQuery.fn[a]=this})})();
// ----------------------------------------------------------------------------
// markItUp! Universal MarkUp Engine, JQuery plugin
// v 1.1.x
// Dual licensed under the MIT and GPL licenses.
// ----------------------------------------------------------------------------
// Copyright (C) 2007-2011 Jay Salvat
// http://markitup.jaysalvat.com/
// ----------------------------------------------------------------------------
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
// ----------------------------------------------------------------------------
(function($){$.fn.markItUp=function(settings,extraSettings){var options,ctrlKey,shiftKey,altKey;ctrlKey=shiftKey=altKey=false;options={id:"",nameSpace:"",root:"",previewInWindow:"",previewAutoRefresh:true,previewPosition:"after",previewTemplatePath:"~/templates/preview.html",previewParser:false,previewParserPath:"",previewParserVar:"data",resizeHandle:true,beforeInsert:"",afterInsert:"",onEnter:{},onShiftEnter:{},onCtrlEnter:{},onTab:{},markupSet:[{}]};$.extend(options,settings,extraSettings);if(!options.root){$("script").each(function(a,b){miuScript=$(b).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/);if(miuScript!==null){options.root=miuScript[1]}})}return this.each(function(){function keyPressed(a){shiftKey=a.shiftKey;altKey=a.altKey;ctrlKey=!(a.altKey&&a.ctrlKey)?a.ctrlKey||a.metaKey:false;if(a.type==="keydown"){if(ctrlKey===true){li=$('a[accesskey="'+String.fromCharCode(a.keyCode)+'"]',header).parent("li");if(li.length!==0){ctrlKey=false;setTimeout(function(){li.triggerHandler("mouseup")},1);return false}}if(a.keyCode===13||a.keyCode===10){if(ctrlKey===true){ctrlKey=false;markup(options.onCtrlEnter);return options.onCtrlEnter.keepDefault}else if(shiftKey===true){shiftKey=false;markup(options.onShiftEnter);return options.onShiftEnter.keepDefault}else{markup(options.onEnter);return options.onEnter.keepDefault}}if(a.keyCode===9){if(shiftKey==true||ctrlKey==true||altKey==true){return false}if(caretOffset!==-1){get();caretOffset=$$.val().length-caretOffset;set(caretOffset,0);caretOffset=-1;return false}else{markup(options.onTab);return options.onTab.keepDefault}}}}function writeInPreview(a){if(previewWindow.document){try{sp=previewWindow.document.documentElement.scrollTop}catch(b){sp=0}previewWindow.document.open();previewWindow.document.write(a);previewWindow.document.close();previewWindow.document.documentElement.scrollTop=sp}}function renderPreview(){var a;if(options.previewParser&&typeof options.previewParser==="function"){var b=options.previewParser($$.val());writeInPreview(localize(b,1))}else if(options.previewParserPath!==""){$.ajax({type:"POST",dataType:"text",global:false,url:options.previewParserPath,data:options.previewParserVar+"="+encodeURIComponent($$.val()),success:function(a){writeInPreview(localize(a,1))}})}else{if(!template){$.ajax({url:options.previewTemplatePath,dataType:"text",global:false,success:function(a){writeInPreview(localize(a,1).replace(//g,$$.val()))}})}}return false}function refreshPreview(){renderPreview()}function preview(){if(!previewWindow||previewWindow.closed){if(options.previewInWindow){previewWindow=window.open("","preview",options.previewInWindow);$(window).unload(function(){previewWindow.close()})}else{iFrame=$('');if(options.previewPosition=="after"){iFrame.insertAfter(footer)}else{iFrame.insertBefore(header)}previewWindow=iFrame[iFrame.length-1].contentWindow||frame[iFrame.length-1]}}else if(altKey===true){if(iFrame){iFrame.remove()}else{previewWindow.close()}previewWindow=iFrame=false}if(!options.previewAutoRefresh){refreshPreview()}if(options.previewInWindow){previewWindow.focus()}}function get(){textarea.focus();scrollPosition=textarea.scrollTop;if(document.selection){selection=document.selection.createRange().text;if($.browser.msie){var a=document.selection.createRange(),b=a.duplicate();b.moveToElementText(textarea);caretPosition=-1;while(b.inRange(a)){b.moveStart("character");caretPosition++}}else{caretPosition=textarea.selectionStart}}else{caretPosition=textarea.selectionStart;selection=textarea.value.substring(caretPosition,textarea.selectionEnd)}return selection}function set(a,b){if(textarea.createTextRange){if($.browser.opera&&$.browser.version>=9.5&&b==0){return false}range=textarea.createTextRange();range.collapse(true);range.moveStart("character",a);range.moveEnd("character",b);range.select()}else if(textarea.setSelectionRange){textarea.setSelectionRange(a,a+b)}textarea.scrollTop=scrollPosition;textarea.focus()}function insert(a){if(document.selection){var b=document.selection.createRange();b.text=a}else{textarea.value=textarea.value.substring(0,caretPosition)+a+textarea.value.substring(caretPosition+selection.length,textarea.value.length)}}function fixIeBug(a){if($.browser.msie){return a.length-a.replace(/\r*/g,"").length}return 0}function fixOperaBug(a){if($.browser.opera){return a.length-a.replace(/\n*/g,"").length}return 0}function markup(a){var b,c,d,e;hash=clicked=a;get();$.extend(hash,{line:"",root:options.root,textarea:textarea,selection:selection||"",caretPosition:caretPosition,ctrlKey:ctrlKey,shiftKey:shiftKey,altKey:altKey});prepare(options.beforeInsert);prepare(clicked.beforeInsert);if(ctrlKey===true&&shiftKey===true||a.multiline===true){prepare(clicked.beforeMultiInsert)}$.extend(hash,{line:1});if(ctrlKey===true&&shiftKey===true){lines=selection.split(/\r?\n/);for(c=0,d=lines.length,e=0;e"),i=0;$("li:hover > ul",ul).css("display","block");$.each(markupSet,function(){var button=this,t="",title,li,j;title=button.key?(button.name||"")+" [Ctrl+"+button.key+"]":button.name||"";key=button.key?'accesskey="'+button.key+'"':"";if(button.separator){li=$('
\
\
Ændringerne sættes i kraft ved næste indlæsning. Lær alt om SNES på kynz! Version ' + SNES_version + '. \
\
\
').hide();
// "SNES-indstillinger"-knappen
$('#nmSiteSelect').next().find('a:last').before('SNES-indstillinger | ');
$('#SNES-toggle').click(function (e) {
e.preventDefault();
$('#SNES-menu').toggle();
return false;
});
// Henter indstillinger
addLinkToPostReference = (localStorage["addLinkToPostReference"] == "true");
showPostOnMouseOverReferenceMini = (localStorage["showPostOnMouseOverReferenceMini"] == "true");
showPostOnMouseOverReference = (localStorage["showPostOnMouseOverReference"] == "true");
improvedQuoteSetting = (localStorage["improvedQuoteSetting"] == "true");
applyTargetBlank = (localStorage["applyTargetBlank"] == "true");
applyTargetBlankOnlyOutgoing = (localStorage["applyTargetBlankOnlyOutgoing"] == "true");
fixFailTagsSetting = (localStorage["fixFailTagsSetting"] == "true");
showUrlImages = (localStorage["showUrlImages"] == "true");
showUrlImagesNotInQuote = (localStorage["showUrlImagesNotInQuote"] == "true");
showUrlImagesNewOnly = (localStorage["showUrlImagesNewOnly"] == "true");
$('#showUrlImagesCount').val(showUrlImagesCount = +localStorage["showUrlImagesCount"] || 0);
showUrlVideos = (localStorage["showUrlVideos"] == "true");
embedYouTubeUrls = (localStorage["embedYouTubeUrls"] == "true");
embedYouTubeUrlsNotInQuote = (localStorage["embedYouTubeUrlsNotInQuote"] == "true");
embedYouTubeUrlsNewOnly = (localStorage["embedYouTubeUrlsNewOnly"] == "true");
$('#embedYouTubeUrlsCount').val(embedYouTubeUrlsCount = +localStorage["embedYouTubeUrlsCount"] || 0);
if (narrowSite = (localStorage["narrowSite"] == "true")) {
$('body,#center,#nmContainer').css('width','1000px');
}
updateFaviconOnNewPosts = (localStorage["updateFaviconOnNewPosts"] == "true");
updateFaviconOnNewPostsBlink = (localStorage["updateFaviconOnNewPostsBlink"] == "true");
// Event handlers til knapperne
var handlerList = ['addLinkToPostReference', 'showPostOnMouseOverReference', 'showPostOnMouseOverReferenceLeft', 'showPostOnMouseOverReferenceMini', 'improvedQuoteSetting',
'applyTargetBlank', 'applyTargetBlankOnlyOutgoing', 'fixFailTagsSetting', 'showUrlImages', 'showUrlImagesNotInQuote', 'showUrlImagesNewOnly', 'showUrlVideos', 'embedYouTubeUrls', 'embedYouTubeUrlsNotInQuote',
'embedYouTubeUrlsNewOnly', 'narrowSite', 'updateFaviconOnNewPosts', 'updateFaviconOnNewPostsBlink'];
for (var i = 0; i < handlerList.length; i++) {
$("#" + handlerList[i]).bind("click", function() {
localStorage[this.id] = this.checked ? 'true' : 'false';
SNES_updateSettingsSub();
}).attr('checked', (localStorage[handlerList[i]] == 'true'));
}
$("#sortRating").bind("click", function() {
SNES_postSortByRating = true;
$('.comments_new').remove();
$(this).attr('disabled', true).text('* POOF *');
$(".comment").each(function() {
if ($(this).find(".comment_rating_details").css("display") == "none")
$(this).find(".information").click();
});
});
$("#pewbeMode").bind("change", function() {
var a = this.selectedIndex;
$(".comment_rate").each(function() {
this.selectedIndex = a;
$(this).change();
});
});
$('#showUrlImagesCount').change(function() {
$(this).val(localStorage["showUrlImagesCount"] = Math.floor(Math.max(+$(this).val() || 0, 0)));
});
$('#embedYouTubeUrlsCount').change(function() {
$(this).val(localStorage["embedYouTubeUrlsCount"] = Math.floor(Math.max(+$(this).val() || 0, 0)));
});
// Styles til fix af newz.dk samt til nogle af SNES' features.
$("").appendTo("head");
$(document).ajaxSuccess(function(event, xhr, options) {
// Behandling af AJAX-sideskift
if (options.url.match('class=Z4_Forum_Item&action=page') !== null) {
var href = SNES_getUrl();
if (window._pageId > window._lastPage) {
// Hvis man får et link med en henvisning til et indlæg, som ikke findes endnu
SNES_startHash = '';
$('#postcontainer').prepend('Hopper lige til den rigtige side...');
history.replaceState({page: _lastPage}, '', href + '/page' + _lastPage);
SNES_fetchPage(_lastPage, 0);
} else {
if (SNES_startHash != '') {
$(window).scrollTop($('.comment h2:has(a[name=' + SNES_startHash.substr(1) + '])').offset().top);
history.replaceState({page: _pageId}, '', href + '/page' + _pageId + SNES_startHash);
SNES_startHash = '';
}
// Retter newz.dk's buggede AJAX.
$(".pagination a").each(function() {
$(this).attr('href', href + '/page' + /#page(\d+)/.exec($(this).attr('href'))[1]);
});
//
SNES_fixTitle();
SNES_insertLoadingGif();
SNES_fixPosts();
if (location.hash.length > 1) {
location.hash = location.hash;
history.replaceState({page: _pageId}, '', location.href);
}
$("#sortRating").attr('disabled', false).text('Sorter indlæg efter rating');
}
}
if (options.data) {
// fixPosts() af det indsendte indlæg. (Der SKAL bruges options.data, da det er POST!)
// samt
// fixPosts() efter den løbende AJAX-indhentning af nye indlæg.
if ((options.data.match('class=Z4_Forum_Item&action=usersave') !== null) || (options.url.match('class=Z4_Forum_Item&action=new') !== null)) {
var a = $('#comments > div:last');
if ($.trim(a.text()) != '')
SNES_fixPosts(a);
}
// fixPosts() af Preview. (Slået fra, når man opretter en tråd.)
if ((options.data.match('class=Z4_Forum_Item&action=preview') !== null) && (location.href.indexOf('/opret') == -1)) {
SNES_fixPosts($('#post_preview .content'), false, true);
$("#SNES_button_edit").focus(); // Hører til fiks af resize af kommentarfeltet efter Preview
}
// fixPosts() af indlæg efter endt redigering (rettelse)
if (options.data.match('class=Z4_Forum_Item&action=edit') !== null)
SNES_fixPosts($('#post' + /&id=(\d+)&/.exec(options.data)[1]), true);
// Efter tryk på "Ret indlæg" og indlægget er hentet og forberedt.
if (options.data.match('class=Z4_Forum_Item&action=getRaw') !== null && options.data.match('&jstimestamp') !== null) {
SNES_fixToolbar();
}
// TAG: "SNES_flashFavicon() #2"
// Starter SNES_flashFavicon(), som blinker favicon, når der er ulæste tråde i /forum efter den 30-sekunders opdatering
if (updateFaviconOnNewPosts && options.data.match('class=Z4_Forum_Thread&action=mine') !== null) {
if ($('.unread', $('
').html($("Response", xhr.responseXML).text())).length > 0) {
if (updateFaviconOnNewPostsBlink) {
clearInterval(SNES_flashFaviconCounter);
SNES_flashFaviconCounter = setInterval('SNES_flashFavicon()', 1000);
} else {
$('link[type="image/x-icon"]').remove();
$('head').append($(''));
}
} else {
clearInterval(SNES_flashFaviconCounter);
$('link[type="image/x-icon"]').remove();
$('head').append($(''));
}
}
}
});
$(document).ajaxStop(function() {
if (SNES_postSortByRating) {
SNES_postSortByRating = false;
var point = new Array();
point[1] = 2;
point[2] = 1;
point[4] = 1;
point[3] = 0;
point[5] = 0;
point[6] = -1;
point[7] = -2;
var el = $('#comments');
var list = $('.comment');
var rating = new Array();
$('.comment').each(function() {
var p = 0;
$(this).find('.comment_rating_details tbody tr').each(function() {
p += point[+this.id.substr(7)]
});
$(this).find('.rating_name').append(' (' + p + ')');
rating[this.id] = p;
});
list.sort(function(a, b) {
return (rating[a.id] == rating[b.id]) ? 0 : ((rating[a.id] < rating[b.id]) ? 1 : -1);
});
el.append(list);
$('.comment').each(function() {
if ($(this).find('.comment_rating_details').css('display') != 'none')
$(this).find('.information').click();
});
}
});
$(window).bind('hashchange', function() {
var a = +location.hash.substr(1);
// Indlægget befinder sig på en anden side
if (!isNaN(a) && (a > 0) && (a <= 50 * (_lastPage - 1) + 50) && ((a <= 50 * (_pageId - 1)) || (a > 50 * (_pageId - 1) + 50))) {
// Hopper til top, så brugeren ved, at der skiftes side
$(window).scrollTop(0);
var href = SNES_getUrl();
SNES_startHash = '';
var p = Math.ceil(a / _pageSize);
history.replaceState({page: p}, '', href + '/page' + p + '#' + a);
SNES_fetchPage(p, 2, a);
}
});
window.onpopstate = function(e) {
var a = e.state;
if (a == null)
history.replaceState({page: window._pageId}, '', location.href);
else {
if (a.page == _pageId)
return;
SNES_fetchPage(a.page, 3);
}
};
// Fix af "Sorter indlæg efter rating", så den finder det nyeste indlæg det rigtige sted.
if (typeof GetLastPostId != "undefined") {
OldGetLastPostId = GetLastPostId;
GetLastPostId = function() {
if ($("#sortRating").text() == "* POOF *") {
var maxid = 0;
$(".comment").each(function() {
var id = this.id.substr(4);
if (id > maxid)
maxid = id;
});
return maxid;
} else
return OldGetLastPostId();
}
}
// Gemmer de sidste fem indlæg
// Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den.
// Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit).
$("#id_commentpost").unbind().attr('id', 'id_commentpost2').bind("click", function(e) {
e.preventDefault();
var a = $("#id_comment").val();
if ($.trim(a).length > 1) {
for (var i = 5; i > 1; i--) {
localStorage['commentHistory' + i] = function(v) {
var r = localStorage['commentHistory' + v];
return (r == null) ? '' : r;
}(i - 1);
}
localStorage['commentHistory1'] = a;
}
SNES_updateCommentList();
SubmitPost(true);
return false;
});
// Indholdet af kommentarfeltet gemmes løbende, så det kan gendannes. Feltet til skrivning af trådbrødtekst er også inkluderet.
$("#id_comment,#id_forumcontent").keyup(function() {
var a = $("#id_comment,#id_forumcontent").val();
if ($.trim(a).length > 1) {
localStorage['commentHistory0'] = a;
a = Encoder.htmlEncode(a);
var l = a.length;
if (l > 119)
a = a.substr(0, 60) + ' [...] ' + a.substr(l - 60, l - 60);
$('#commentStorage select option[value=0]').html(a);
}
});
// Indstillinger til den nye toolbar. Se SNES_fixToolbar().
toolbarSettings = {
markupSet: [
{name:'[b]fed tekst[/b]', key:'B', openWith:'[b]', closeWith:'[/b]'},
{name:'[i]kursiv tekst[/i]', key:'I', openWith:'[i]', closeWith:'[/i]'},
{name:'[u]understreget tekst[/u]', key:'U', openWith:'[u]', closeWith:'[/u]'},
{name:'[s]gennemstreget tekst[/s]', key:'S', openWith:'[s]', closeWith:'[/s]'},
{separator:'---------------' },
{name:'Punktopstilling', openWith:'[list]\n', closeWith:'\n[/list]'},
{name:'Numerisk liste', openWith:'[list=1]\n', closeWith:'\n[/list]'},
{name:'Listeelement', openWith:'[li]', closeWith:'[/li]'},
{separator:'---------------' },
{
name:"[url=http://newz.dk/]newz.dk[/url]",
openWith: '[url=',
replaceWith: function(e) {
SNES_selstart = 0, SNES_selend = 0;
if (e.selection.substr(0, 7) == 'http://' || e.selection.substr(0, 8) == 'https://') {
SNES_selstart = e.textarea.selectionStart + e.selection.length + 6;
SNES_selend = e.textarea.selectionEnd + e.selection.length + 6;
return e.selection + ']' + e.selection;
} else {
SNES_selstart = e.textarea.selectionStart + 5;
SNES_selend = e.textarea.selectionEnd + 12;
return 'http://' + e.selection + ']' + e.selection;
}
},
closeWith: '[/url]',
afterInsert: function(e) {
e.textarea.setSelectionRange(SNES_selstart, SNES_selend);
e.textarea.focus();
return false;
}
},
{separator:'---------------' },
{name:'[code]kode[/code]', openWith:'[code]', closeWith:'[/code]'},
{
name:'[quote]citat[/quote]',
openWith: '[quote',
replaceWith: function(e) {
var quotewho = prompt("Skriv venligst et navn eller en URL til der hvor quotet er fra") || '';
SNES_selstart2 = 0, SNES_selend2 = 0;
SNES_selstart2 = e.textarea.selectionStart + 7 + (quotewho.length > 0 ? 1 + quotewho.length : 0);
SNES_selend2 = e.textarea.selectionEnd + 7 + (quotewho.length > 0 ? 1 + quotewho.length : 0);
return (quotewho.length > 0 ? "=" + quotewho : "") + "]" + e.selection;
},
closeWith: '[/quote]',
afterInsert: function(e) {
e.textarea.setSelectionRange(SNES_selstart2, SNES_selend2);
e.textarea.focus();
return false;
}
}
]
}
// Resizer kommentarfeltet, når der trykkes på Rediger (inde i Preview)
// Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den.
// Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit).
$("#button_edit").unbind().attr('id', 'SNES_button_edit').bind("click", function(e) {
// Original newz.dk-kode
$("#post_preview").hide();
$("#post_form").show();
StartAutoUpdate();
// SNES' tilføjelse
$('#id_comment').keyup();
// Original newz.dk-kode
e.preventDefault();
return false;
});
/*
// Virker ikke, da den bindes FØR de andre funktioner, så kommentarfeltet resizes, INDEN indhold tilføjes.
// Kommentarfeltet resizes, når
$('.comment_left .toolbar').delegate('a', 'click', function() {
$(domain).keyup();
});
*/
//
SNES_ajaxPageChange();
SNES_updateSettingsSub();
SNES_fixToolbar();
// Til gemning af kommentarfeltet
$('.markItUpHeader').append('
');
SNES_updateCommentList();
// Fjerner også tråden fra listen over overvågede tråde, når man trykker på "Ignorer denne tråd"
$('a[title="Ignorer denne tråd"]').unbind().click(function(e) {
e.preventDefault();
var id = this.href.match(/\d+$/)[0];
$(this).replaceWith('
');
var me = $('#SNES_ignorethread');
$.ajax({
url: '/forum/track/delete/' + id,
success: function() {
me.html(' [✓] Fjernet fra listen over overvågede tråde');
},
error: function() {
me.html(' [X] Fjernelse fra listen over overvågede tråden fejlede');
},
complete: function() {
$.ajax({
url: '/forum/ignore/add/' + id,
success: function() {
me.html(me.html() + ' [✓] Tråd ignoreret');
},
error: function() {
me.html(me.html() + ' [X] Fjernelse fra listen over overvågede tråden fejlede');
},
});
}
});
return false;
});
// I store tråde ender man nogle gange (hvis den sidste side er på 50 indlæg) en side for langt
if (window._pageId > window._lastPage) {
var href = SNES_getUrl();
SNES_startHash = '';
$('#postcontainer').prepend('Hopper lige til den rigtige side...');
history.replaceState({page: _lastPage}, '', href + '/page' + _lastPage);
SNES_fetchPage(_lastPage, 0);
} else if (window._pageId) {
SNES_fixTitle();
SNES_fixPosts();
if (location.hash.length > 1)
history.replaceState({page: _pageId}, '', location.href);
else {
if (location.href.substr(-1) == '#')
var href = location.href + 'new';
else
var href = location.href + '#new';
history.replaceState({page: _pageId}, '', href);
}
location.hash = location.hash;
history.replaceState({page: _pageId}, '', location.href);
}
// Smider genveje til underdomænernes fora ind.
$('.links:first').before('
');
}
// Sørger for, at underindstillingerne bliver grå, når featuren er slået fra.
function SNES_updateSettingsSub() {
$('#addLinkToPostReferenceSub > input').attr('disabled', !$('#addLinkToPostReference').attr('checked'));
$('#showPostOnMouseOverReferenceSub input').attr('disabled', (!$('#showPostOnMouseOverReference').attr('checked') || !$('#addLinkToPostReference').attr('checked')));
$('#showUrlImagesSub input').attr('disabled', !$('#showUrlImages').attr('checked'));
$('#embedYouTubeUrlsSub input').attr('disabled', !$('#embedYouTubeUrls').attr('checked'));
$('#applyTargetBlankSub input').attr('disabled', !$('#applyTargetBlank').attr('checked'));
$('#updateFaviconOnNewPostsSub input').attr('disabled', !$('#updateFaviconOnNewPosts').attr('checked'));
}
// Den nye BB-toolbar
function SNES_fixToolbar() {
$('.toolbar + textarea,.toolbar + div textarea').markItUp(toolbarSettings);
$('.toolbar').remove();
}
// Køres ved indlæsning, AJAX-sideskift, indsendelse af indlæg, ved den løbende AJAX-indhentning af nye indlæg, ved Preview og ved rettelse af indlæg
function SNES_fixPosts(object, afterEdit, isPreview) {
// Køres kun én per indlæg
if (afterEdit !== true) {
SNES_improvedQuote(object);
SNES_addPermLink(object);
SNES_fixPostTimes(object);
//SNES_reportSpam(object);
}
// Forkorter links efter endt redigering (rettelse) for brugeren (altså, ændrer ikke i teksten), da det normalt gøres ved indsendelse af indlæg og når siden opdateres
if (afterEdit === true) {
$(object).linkShorten();
}
// Køres kun én per indlæg (men også når indlægget er blevet rettet)
SNES_addLinkToPostReferenceFunc(object, (isPreview === true));
SNES_urlToImg(object);
SNES_urlToVid(object);
SNES_fixFailTags(object);
SNES_fixSpoilers(object);
SNES_embedYouTubeUrlsFunc(object);
SNES_applyTargetBlankFunc(object);
}
// Blinker favicon, når der er ulæste tråde i /forum efter den 30-sekunders opdatering
// Startes fra "SNES_flashFavicon() #2" (TAG)
function SNES_flashFavicon() {
$('link[type="image/x-icon"]').remove();
(SNES_flashFaviconBoolean = !SNES_flashFaviconBoolean)
? $('head').append($(''))
: $('head').append($(''));
}
// Advarsel: Tåler ikke at blive kørt flere gange for samme indlæg, men det burde ikke være noget problem endnu
function SNES_reportSpam(object) {
function _feedback(str) {
spamobj.html(str);
}
function _report() {
if (previousFound) {
_feedback('[✓] Allerede rapporteret.');
} else {
_feedback('Klargør rapport...');
$.ajax({
dataType: 'xml',
url: "/z4/action.php",
data: {"class":"Z4_Forum_Item", "action":"getRaw", "id":postId},
success: function (xml) {
_feedback('Rapporterer indlæg...');
var text = encodeURIComponent("Automatisk spamrapport.\n[url=" + userLink + "]Brugernavn: " + userName + "[/url]\nURL: " + postLink + "\n\nEksempel på spam:\n[quote]" + $.trim($("Response", xml).text().replace("\n\n\n\n", "\n\n").replace(/www\./gmi, '').replace(/https?:\/\//gmi, '').replace(/\[url=.+?\]/gm, '').replace(/\[\/url\]/gm, '')) + "[/quote]");
$.ajax({
dataType: 'xml',
url: "/z4/action.php",
data: {"action":"usersave", "class":"Z4_Forum_Item", "thread_id":119686, "lastId":99999999999999999, "comment":text}, // Jeg har byttet om på action og class (rækkefølgen), så fixPosts() ikke køres. Skide smart, Daniel.
success: function (xml) {
_feedback('[✓] Rapporteret. Tak.');
},
error: function() {
_feedback('[X] Kunne ikke rapportere indlæg.');
}
});
},
error: function() {
_feedback('[X] Kunne ikke hente indlæg.');
}
});
}
}
$('.comment_rating li:first-child', object).before('
');
$('.reportSpam', object).bind('click', function(e) {
e.preventDefault();
if (confirm("Er du sikker på, at dette er spam, som skal rapporteres? Du ender med selv at spamme, hvis dette ikke er spam.")) {
spamobj = $(this);
postParent = spamobj.parents('.comment').find('h2');
userLink = $('a:last', postParent)[0].href.replace('%7E', '~');
userName = $('a:last', postParent).text();
postId = $('a:nth-child(2)', postParent).attr('name').substr(2);
postLink = $('a:nth-child(3)', postParent).attr('href');
previousFound = false;
// Tjekker tråden for at se, om indlægget allerede er rapporteret.
spamobj.html('Tjekker om allerede rapporteret...').removeAttr("href").unbind();
$.ajax({
url: '/forum/newz-dk/spamrapporteringstraaden-119686',
success: function(response) {
thread = $('' + response);
if ($('.comment a[href="'+postLink+'"]', thread).length > 0)
previousFound = true;
if (previousFound === false && $('.comment', thread).length < 15) {
_feedback('Tjekker om allerede rapporteret... (2)')
var p = +/var _pageId = (\d+)/.exec(response)[1];
$.ajax({
url: '/forum/newz-dk/spamrapporteringstraaden-119686/page' + (p-1),
success: function(response2) {
var thread2 = $('' + response2);
if ($('.comment a[href="'+postLink+'"]', thread2).length > 0)
previousFound = true;
_report();
},
error: function() {
_feedback('[X] Kunne ikke nå spamlisten. (2)');
}
});
} else
_report();
},
error: function() {
_feedback('[X] Kunne ikke nå spamlisten.');
}
});
}
return false;
});
}
function SNES_embedYouTubeUrlsFunc(object) {
if (embedYouTubeUrls) {
function ttotime(s) {
s = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s?)?$/.exec(s);
return (typeof s[1] === "undefined" ? 0 : +s[1])*3600 + (typeof s[2] === "undefined" ? 0 : +s[2])*60 + (typeof s[3] === "undefined" ? 0 : +s[3]);
}
var count = 0,
countmax = embedYouTubeUrlsCount;
if (embedYouTubeUrlsNewOnly && object == undefined) {
var a = $('.comments_new');
if (a.length > 0) {
object = a.nextAll();
countmax = 0;
}
}
$('.text_content a[href*="youtu"]', object).reverse().each(function() {
var w = parseInt($(this).parent().css('width'));
var res = /(?:youtu\.be\/|youtube\.com\/watch\?.*v=)(.{11})/gmi.exec(this.href);
if (typeof this.href !== 'undefined' && res != null && (!embedYouTubeUrlsNotInQuote || (embedYouTubeUrlsNotInQuote && w === 381))) {
var q = '';
var t = 0;
if (this.hash.length > 1 && (q = splitquery(this.hash))) {
if (typeof q.t !== "undefined")
t = ttotime(q.t);
else if (typeof q.at !== "undefined")
t = ttotime(q.at);
}
if (t === 0 && this.search.length > 1 && (q = splitquery(this.search)) && (typeof q.t !== "undefined"))
t = ttotime(q.t);
$(this).replaceWith(''.replace(/&/gm, '&'));
if (countmax > 0 && ++count >= countmax)
return false;
}
});
}
}
function SNES_fixSpoilers(object) {
$('.spoiler', object).remove();
// Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den.
// Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit).
$('.open_spoiler', object).unbind().attr('class', 'SNES_open_spoiler').click(function(e) {
e.preventDefault();
if (/^(?:http:\/\/|www\.)[^\^!\(\)\[\]{} ]+$/i.test(this.id)) {
var parent = $(this).parents('.comment');
$(this).replaceWith(''+$('
').linkShorten().find('a').text()+'');
SNES_urlToImg(parent);
} else
$(this).replaceWith(Encoder.htmlEncode(this.id));
return false;
})
}
function SNES_fixPostTimes(object) {
try {
var weekday = new Array(7);
weekday[0] = "Søn. ";
weekday[1] = "Man. ";
weekday[2] = "Tir. ";
weekday[3] = "Ons. ";
weekday[4] = "Tor. ";
weekday[5] = "Fre. ";
weekday[6] = "Lør. ";
var a = $('.comment_date:contains("min siden")', object);
var b = $('.comment_date:contains("sek siden")', object);
var c = $('.comment_date:contains("nu")', object);
var d = $('.comment_date:contains("i dag"):not(:contains("."))', object);
var q = $('.comment_date:not(:contains("i dag")):not(:contains("nu")):not(:contains("sek siden")):not(:contains("min siden"))', object);
d.each(function() {
var e = $(this);
var dat = new Date();
e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (i dag)');
});
q.each(function() {
var e = $(this);
var m = {'jan':0,'feb':1,'mar':2,'apr':3,'maj':4,'jun':5,'jul':6,'aug':7,'sep':8,'okt':9,'nov':10,'dec':11};
var s = /(\d+)\. ([a-z]+)\.? (\d+) (\d+):(\d+)/.exec(e.attr('title'));
var dat = new Date(s[3], m[s[2]], s[1], s[4], s[5], 0, 0);
e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title'));
});
if (b.length > 0 || c.length > 0)
var l = 980;
else if (a.length > 0)
var l = 1000 * (61 - (new Date()).getSeconds()); // Så starter den altid, når klokken slår et nyt minut.
else
return;
c.each(function() {
var e = $(this);
var dat = new Date();
e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (1 sek siden)');
});
b.each(function() {
var e = $(this);
var s = +e.html().match(/(\d+) sek siden/)[1] + 1;
var dat = new Date();
if (s >= 60)
$(this).html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (1 min siden)');
else
$(this).html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (' + s + ' sek siden)');
});
a.each(function() {
var e = $(this);
var m = {'jan':0,'feb':1,'mar':2,'apr':3,'maj':4,'jun':5,'jul':6,'aug':7,'sep':8,'okt':9,'nov':10,'dec':11};
var s = /(\d+)\. ([a-z]+)\.? (\d+) (\d+):(\d+)/.exec(e.attr('title'));
var dat = new Date(s[3], m[s[2]], s[1], s[4], s[5], 0, 0);
var v = Math.round(((new Date()) - dat)/(60000));
if (v >= 60)
e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (i dag)');
else
e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (' + v + ' min siden)');
});
}
catch(wejrhewhigrissldghdkguhsfdkguifhdugifhdgfdhigfd) {
}
clearTimeout(SNES_fixPostTimesCounter);
SNES_fixPostTimesCounter = setTimeout("SNES_fixPostTimes()", l);
}
function SNES_applyTargetBlankFunc(object) {
if (applyTargetBlank) {
if (applyTargetBlankOnlyOutgoing) {
var href = location.protocol + "//" + location.hostname + "/";
$('a:not([href^="#"])', object).filter(function() {
return (this.href.substring(0, href.length) != href);
}).attr('target', '_blank');
} else {
$('a:not([href^="#"])', object).attr('target', '_blank');
}
}
}
function SNES_fixFailTags(object) {
if (fixFailTagsSetting) {
var a = ['b', 'u', 'i', 's' ];
var b = {'b': 'strong>', 'u': 'u>', 'i': 'em>', 's': 's>'};
$('.text_content', object).each(function() {
var e = $(this);
for (i in a) {
var x = e.html().indexOf('[' + a[i] + ']');
if (x !== -1) {
e.html(e.html().substr(0, x) + e.html().substr(x).replace(new RegExp('<(\/)?' + b[a[i]], 'g'), '').replace(new RegExp('\\[' + a[i] + '\\]', 'g'), '' + b[a[i]]));
}
// Til store BB-tags ([B], etc.), hvis nogen nogensinde lyster det.
/*var x = e.html().indexOf('[/' + a[i].toUpperCase() + ']');
if (x !== -1) {
e.html(e.html().substr(0, x) + e.html().substr(x).replace(new RegExp('<(\/)?' + b[a[i]], 'g'), '').replace(new RegExp('\\[/' + a[i].toUpperCase() + '\\]', 'g'), '' + b[a[i]]));
}*/
}
});
}
}
function SNES_urlToImg(object) {
if (showUrlImages) {
var count = 0,
countmax = showUrlImagesCount;
if (showUrlImagesNewOnly && object == undefined) {
var a = $('.comments_new');
if (a.length > 0) {
object = a.nextAll();
countmax = 0;
}
}
$('.text_content a:not([href^="#"])', object).reverse().each(function() {
var w = parseInt($(this).parent().css('width'));
if (/\.(png|gif|jp(e)?g)(\?.*)?$/i.test(this.href) && $(this).attr('data') === undefined && (!showUrlImagesNotInQuote || (showUrlImagesNotInQuote && w === 381))) {
var e = $(this);
var b = this.href;
var c = e.text().replace(/"/gm, '"');
if (b == c)
var c = $('
').linkShorten().find('a').text();
e.replaceWith('');
if (countmax > 0 && ++count >= countmax)
return false;
}
});
}
}
function SNES_urlToVid(object) {
if (showUrlVideos) {
$('.text_content a:not([href^="#"])', object).each(function() {
var reg;
if (reg = /\.(og(?:g|v|a|x)|spx|mp4)$/i.exec(this.href))
$(this).replaceWith('');
});
}
}
function SNES_addLinkToPostReferenceFunc(object, isPreview) {
if (addLinkToPostReference) {
$('.text_content p:contains("#")', object).each(function() {
if (isPreview) {
var postNum = $('h2 a:first', '.comment:not([id=]):last').attr('name');
var p = 'post_preview';
} else {
var postNum = $(this).parents('.comment').find('h2 a:first').attr('name');
var p = $(this).parents('.comment').attr('id');
}
$(this.childNodes).each(function() {
if (this.nodeType == 3) {
// #tal efterfulgt af enten mellemrum, linjeknæk, kolon, komma, punktum, apostrof, skråstreg, plus, spørgsmålstegn, udråbstegn eller parentes-slut samt ved afsluttet afsnit eller linje
$(this).replaceWith(this.nodeValue.replace(/#(\d+)( | |:|,|\.|'|\/|\+|\?|!|\)|<\/p>|$)/gm, function(str, a, b) {
if (a < 100 && _pageId > 20) { // Fra indlæg #1001 vil #99 betyde #999 osv.
c = Math.floor((50 * (_pageId - 1)) / 100) * 100 + +a;
if (c > postNum)
c -= 100;
} else
c = +a;
if (a == 0 || (c == postNum && p != 'post_preview'))
return '#' + a + b;
var him = $('.comment:has(a[name=' + c + '])').attr('id');
return ' 50 * (_pageId - 1)) && (c <= 50 * (_pageId - 1) + 50))) ? ' onclick="SNES_goToPost(\'' + him + '\')" onmouseout="SNES_hidePost();" onmouseover="SNES_showPost(\'' + p + '\', \'' + him + '\')"' : '') + ' href="#' + c + '">#' + a + '' + b;
}).replace(/&/gm, '&'));
}
});
});
}
}
function SNES_showPost(me, him) {
var q = $("#" + him).clone().attr('id', '').addClass("SNES_cite").prependTo('#comments');
if (showPostOnMouseOverReferenceMini)
q.find('.comment_right').remove();
}
function SNES_hidePost() {
$('.SNES_cite').remove();
}
function SNES_goToPost(him) {
SNES_hidePost();
}
function SNES_addPermLink(object) {
href = SNES_getUrl();
$('h2', object).each(function() {
var a = $(this).html();
a = a.replace(/#(\d+):/, '#$1:')
$(this).html(a);
});
}
// Advarsel: Tåler ikke at blive kørt flere gange for samme indlæg, men det burde ikke være noget problem endnu
// Sætter event handler på "Citer indlæg" - Sakset direkte fra newz.dk med vigtige ændringer. Jeg har ladet mine kommentarer fra newz.dk's script lade blive.
function SNES_improvedQuote(object) {
// Laver citeringslinjen om, så den indeholder "citer indlæg, nummer, svar".
$('.quoteitem', object).parent().html('Citer indlæg | nummer');
$('.text_content', object).filter(function() { var a = $(this).children(); return($('>blockquote', this).length === 1 && a[1].tagName === 'BLOCKQUOTE' && a[0].tagName === 'P' && $(a[0]).text() === ''); }).each(function() {
var a = $('.SNES_quoteitem', $(this).parents('.comment')).parent();
a.html(a.html() + ' | svar');
});
// "svar"-citering
$('.responsequote', object).click(function(e) {
e.preventDefault();
// Hvis dette ligner noget kode fra newz.dk, så er det, fordi det er. Der er lige en enkelt tilføjelse.
// Finder indlæggets id (ikke nummer)
var $post = $(this).parents(".comment");
var postId = $post.attr("id").substring(4);
// Finder indlæggets nummer (ikke id)
var itemId = $post.find("h2 a").attr("name");
// Finder indlæggets ejermand
var username = $post.find("h2 a:last").html();
// Hvis den ikke kunne findes, prøv et andet sted (dunno hvor)
if (!username) {
username = $post.find('.right_box a:last').html();
}
$.get("/z4/action.php", {"class":"Z4_Forum_Item", "action":"getRaw", "id":postId}, function(xml) {
var text = $.trim($("Response", xml).text()).replace(/\[quote(?:.|\n)*\[\/quote\]/, '');
// Fjerner flere end ét efter hinanden følgende linjeknæk
text = $.trim(text.replace("\n\n\n\n", "\n\n"));
// Finder kommentarfeltet og indsætter et linjeknæk før det citerede indlæg, hvis feltet ikke er tomt
var comment = $("#id_comment").val();
if (comment.length > 0) {
comment += "\n\n";
}
// Sætter indlægget ind i en quote, som vi kender den
comment += "[quote=" + username + " (" + itemId + ")]" + text + "[/quote]" + "\n\n";
$("#id_comment").val(comment);
$('#id_comment').keyup();
}, "xml");
$('#id_comment').keyup();
return false;
});
// "nummer"-citering
$('.miniquote', object).click(function(e) {
e.preventDefault();
// Hvis dette ligner noget kode fra newz.dk, så er det, fordi det er.
var comment = $("#id_comment").val();
if (comment.length > 0) {
comment += "\n\n";
}
comment += "#" + $(this).parents(".comment").find("h2 a").attr("name") + "\n";
$("#id_comment").val(comment);
$('#id_comment').keyup();
return false;
});
// Almindelig citering med SNES' forbedring, hvis slået til
$(".SNES_quoteitem", object).click(function(e) {
e.preventDefault();
// Finder indlæggets id (ikke nummer)
var $post = $(this).parents(".comment");
var postId = $post.attr("id").substring(4);
// Finder indlæggets nummer (ikke id)
var itemId = $post.find("h2 a").attr("name");
// Finder indlæggets ejermand
var username = $post.find("h2 a:last").html();
// Hvis den ikke kunne findes, prøv et andet sted (dunno hvor)
if (!username) {
username = $post.find('.right_box a:last').html();
}
// Bliver false, hvis improvedQuoteSetting eller den originale synes, at den sagtens kan klare markeringen
var hentFraServer = true;
// Jeg bruger ikke document.selection, som andre browsere (IE, gammel IE, Opera?) bruger, så det må du ordne, m910q.
// Checker, om markeringen er inden for indlæggets tekst. Virker i Firefox og Chrome.
if (improvedQuoteSetting) {
if ((getSelection().rangeCount > 0) && ($(getSelection().getRangeAt(0).commonAncestorContainer).parents('#' + $post.attr("id")).length > 0)) {
// Dette kan sikkert reduceres til noget pænere...
var container = document.createElement("div");
container.appendChild(getSelection().getRangeAt(0).cloneContents());
var text = container.innerHTML;
if (text != '') {
hentFraServer = false;
function parse(givenQuotePos) {
function parseTag(tag) {
// tag = '' (u.s.w. med attr'erne)
// eller ''
var tagmatch = /^<([a-z]+)>/.exec(tag);
// Har attr, else har ikke
if (tagmatch == null) {
var tag2 = tag.substr(tag.indexOf(' ') + 1).substr(0, tag.length - 1),
regmatch, tagattrs = {},
tagreg = /([^= ]+)="([^"]+)"/g;
while (regmatch = tagreg.exec(tag2)) {
tagattrs[regmatch[1]] = regmatch[2];
}
return {
tag: /^<([a-z]+) /.exec(tag)[1],
attr: tagattrs
}
} else {
return {
tag: tagmatch[1],
attr: null
}
}
}
if (typeof givenQuotePos === 'undefined')
givenQuotePos = -1;
while (true) {
// Hvis nået slutningen
if (i >= len)
return;
s = text.substr(i);
l = s.indexOf('<');
// Hvis løbet tør for HTML
if (l === -1) {
t += s;
return;
}
t += text.substr(i, l);
i += s.indexOf('>') + 1;
// Hvis nået et end-tag, else hvis nået et start-tag
if (s.substr(l + 1, 1) === '/') {
if (givenQuotePos === -1)
return;
else
return false;
} else {
var obj = parseTag(s.substr(l, s.indexOf('>') + 1));
switch (obj.tag) {
case 'strong':
t += '[b]';
parse();
t += '[/b]'
break;
case 'u':
t += '[u]';
parse();
t += '[/u]'
break;
case 'em':
t += '[i]';
parse();
t += '[/i]'
break;
case 's':
t += '[s]';
parse();
t += '[/s]'
break;
case 'code':
t += '[code]';
parse();
t += '[/code]'
break;
case 'ul':
t += '[list]';
parse();
t += '[/list]'
break;
case 'li':
t += '[li]';
parse();
t += '[/li]'
break;
case 'a':
switch (obj.attr.data) {
case 'SNES_img':
s = $('
').linkShorten().find('a').text();
if (s === obj.attr.title || s.substr(7) === obj.attr.title)
t += obj.attr.href;
else
t += '[url=' + obj.attr.href + ']' + obj.attr.title + '[/url]';
i += 4;
break;
case 'SNES_ref':
t += obj.attr.href;
i += text.substr(i).indexOf('>') + 1;
break;
default:
l = s.indexOf('');
var tmp1 = $('