function bookmark_to_opml () {
var escapeHTML = function (str) {
var div = document.createElement('div');
var text = document.createTextNode(str);
div.appendChild(text);
return div.innerHTML.replace(/&([\w\d#]+;|)/gi,function () { return (RegExp.$1 != "") ? '&' + RegExp.$1 : '&'; });
};
var opml = '\n';
opml += '\n';
opml += '\n';
opml += 'Safari Bookmarks\n';
opml += '' + (new Date()).toString().replace(/\((\w+)\)/,function () {return RegExp.$1 }) + '\n'
opml += '\n';
opml += '\n';
function findRSS (node) {
var str = "";
for (var i = 0; i < node.childNodes.length; i++) {
var my = node.childNodes[i];
if (my.tagName) {
var tag = my.tagName.toLowerCase();
if (tag == 'dt' || tag == 'body') {
str += arguments.callee(my);
} else if (tag == 'h3') {
var title = escapeHTML(my.innerText);
str += '\n';
} else if (tag == 'dl') {
str += arguments.callee(my);
str += '\n';
} else if (tag == 'a') {
var href = my.getAttribute('href');
if (href && (href.search(/^feed:\/\//i) != -1 || href.search(/\.(xml|rdf|rss)$/i) != -1)) {
var title = escapeHTML(my.innerText);
str += '\n';
}
}
}
}
return str;
}
opml += findRSS(document.getElementsByTagName('html')[0]);
opml = opml.replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'').replace(/]*?">\n<\/outline>\n/g,'');
opml += '\n';
opml += '\n';
document.body.innerHTML = escapeHTML(opml).replace(/\n/g,'
');
}