Post by Priya on Mar 12, 2013 14:10:26 GMT -6
Goes in the global footers above all other coding. Does not need to be edited at all.
<script type="text/javascript"><!--
/*
Name: ENHANCED UBBC TABLE TAGS
Location: Global Footer
Created by EtonBones at yahoo d o t com
Do not redistribute without permission
Feel free to edit provided a notation is
added to this header stating that fact.
THIS HEADER MUST REMAIN INTACT.
*/
/*********** *****START EDITABLE USER OPTIONS***********************
If not concerned about the security risk posed by allowing users the ability
to set events such as onclick and onmouseover in their posts
set the following variable to false*/
var DisallowEvents=true;
/*If UBBC Undo installed and you would like enhanced tags added to history
set the following variable to true*/
var UUInstalled=false;
/******END EDITABLE USER OPTIONS (NO FURTHER EDITING NECESSARY)*******/
var NoGood="Enhanced tags need to be between the [td] and [/td]";
function enhanceTable(){
var td=document.getElementsByTagName("td");
for(i=0;i<td.length;i++){
if(td[i].width=="20%" && td[i].className.match(/windowbg/) && /(Posts:\s*[\d,]+|Guest)/.test(td[i].innerText||td[i].textContent)){
var msg=td[i].nextSibling.getElementsByTagName('tr')[1];
if(msg.getElementsByTagName('table').length){
for(l=0;l<msg.getElementsByTagName('table').length;l++){
parseTags(msg.getElementsByTagName('table')[l]);
//separate func needed since rowspans need to be set first in order to count columns
parseTH(msg.getElementsByTagName('table')[l]);
}
}
}else if(document.postForm && td[i].width=="30%" && td[i].className.match(/windowbg2/) && !document.getElementById('enhancedTable')){
var TR=td[i].parentNode;
var newTR=TR.parentNode.insertRow(TR.rowIndex+1);
TR.id="enhancedTable";
var newTD=document.createElement('td');
newTD.width='30%';
newTD.className='windowbg2';
newTD.innerHTML='<font size="2">Enhanced Table Tags:</font>';
newTR.appendChild(newTD);
newTD=document.createElement('td');
newTD.width='70%';
newTD.className='windowbg2';
newTD.innerHTML='<font size="2">Select Tag:</font><select name="etags" onChange=" addEtag(this.options[this.selectedIndex].value);this.selectedIndex=0;" ><option value="" selected="1">Enhanced Table Tags</option><option value="[th]" >Header</option><option value="[cs=2]">Span Columns</option><option value="[rs=2]">Span Rows</option><option value="[bg=white]">Background Color</option><option value="[atrb=border,0,true]">Any Attribute</option></select> ';
newTR.appendChild(newTD);
}else if(document.postForm && td[i].width=="100%" && td[i].className.match(/titlebg/) && td[i].innerHTML.match(/Topic Summary/)){
var table=td[i].parentNode.parentNode;
var re= /(?:[^\"])(\[(th|cs|rs|bg|atrb).*?\])/gim;
if(table.className.match(/tbody/i))table=table.parentNode;
for(l=2;l<table.rows.length;l=l+2){
if(table.rows[l].cells[0].innerHTML.match(/(?:[^\"\=])(\[(th|cs|rs|bg|atrb).*?\])/gim)){
while(table.rows[l].cells[0].innerHTML.match(/(?:[^\"\=])(\[(th|cs|rs|bg|atrb).*?\])/im ) ){
table.rows[l].cells[0].innerHTML= table.rows[l].cells[0].innerHTML.replace(/(?:[^\"\=])(\[(th|cs|rs|bg|atrb).*?\])/im, stripAnchor(RegExp.$1,RegExp.$2) ) ;
}
}
}
}
}
}
function stripAnchor(str){
var t=/(<A href\=.*\>(.*?)\<\/A\>)/i
if(!str)return "";
var s=str.substr(0,1);
if(s=='\"')return str;
if(s=="\[") s="";
if(str.match(t))str=str.replace(RegExp.$1,RegExp.$2);
return s+"<a title=\""+str+"\">*</a>";
}
function parseTags(TBL){
if(TBL.className !=""){
TBLS=TBL.getElementsByTagName('table')
for(k=0;k<TBLS.length;k++)parseTags(TBLS[k]);
return true;
}
var cell=TBL.getElementsByTagName('td');
var nada="";
for (j=0;j<cell.length;j++){
if(cell[j].innerHTML.match(/(\[cs\=(\d+)\])/i)){
cell[j].setAttribute("colSpan",RegExp.$2);
cell[j].innerHTML=cell[j].innerHTML.replace(RegExp.$1,'');
}
if(cell[j].innerHTML.match(/(\[rs\=(\d+)\])/i)){
cell[j].setAttribute("rowSpan",RegExp.$2);
cell[j].innerHTML=cell[j].innerHTML.replace(RegExp.$1,'');
}
if(cell[j].innerHTML.match(/(\[bg\=(.*?)\])/i)){
cell[j].setAttribute("bgColor",RegExp.$2);
cell[j].innerHTML=cell[j].innerHTML.replace(RegExp.$1,'');
}
while(cell[j].innerHTML.match(/(\[atrb\=(.*?)\])/i)){
var r1=RegExp.$1;
var r2=RegExp.$2;
var atrb=""; var atrbVal="";
var applyTable=false;
var oObj;
if(r2.split(',').length>0){ atrb=r2.split(',')[0]; atrb=atrb.replace(/^\s*|\s*$/g,"");}
if(r2.split(',').length>1) {atrbVal=r2.split(',')[1]; atrbVal=atrbVal.replace(/^\s*|\s*$/g,"");}
if(atrbVal.match(/(<A href\=.*\>(.*)\<\/A\>)/i))atrbVal=atrbVal.replace(RegExp.$1,RegExp.$2);
if(r2.split(',').length>2)applyTable=r2.split(',')[2]?true:false;
oObj=applyTable?TBL:cell[j];
if(atrb != ""){
if(atrb.toLowerCase()=="style"){
oObj.style.cssText+=atrbVal;
}else if(atrb.toLowerCase().substr(0,2)=="on" && DisallowEvents){
nada="<a title=\"Disallowed: "+r1.replace("[","").replace("]","") +"\">*</a>";
}else{
document.expando=false; //IE workaround for casing
try{
oObj.setAttribute(atrb,atrbVal);
}catch(e){
nada="<a title=\"Casing Error: "+r1.replace("[","").replace("]","") +"\">*</a>";
}finally{
document.expando=true;
}
}
}
cell[j].innerHTML=cell[j].innerHTML.replace(r1,nada);
}
}
}
function parseTH(TBL){
if(TBL.className !=""){
TBLS=TBL.getElementsByTagName('table')
for(k=0;k<TBLS.length;k++)parseTags(TBLS[k]);
return true;
}
var cell=TBL.getElementsByTagName('td');
for (j=0;j<cell.length;j++){
if(cell[j].innerHTML.match(/(\[th\])/i)){
cell[j].setAttribute("colSpan",columns(TBL));
cell[j].innerHTML=cell[j].innerHTML.replace(RegExp.$1,'');
}
}
}
function columns(TBL){
//w3c states that a colSpan=0 should make a cell span all columns but IE doesn't honor this, so...
var columns=0;
var tmp;
for(o=0;o<TBL.rows.length;o++){
tmp=0;
for(p=0;p<TBL.rows[o].cells.length;p++){
tmp++
if(TBL.rows[o].cells[p].rowSpan>1)tmp=tmp+TBL.rows[o].cells[p].rowSpan-1;
}
if(tmp>columns)columns=tmp;
}
return columns;
}
function addEtag(tag){
if(tag!=""){
if(UUInstalled){
if(isInsideCell()){
addX(tag);
}else{
alert(NoGood);
document.postForm.message.focus();
}
}else{
if(isInsideCell()){
add(tag);
}else{
alert(NoGood);
document.postForm.message.focus();
}
}
}
}
function isInsideCell(){
//Function purpose: determine if insertion point falls within the bounds of a cell
var msg=document.postForm.message;
if(document.postForm.message.createTextRange){
getCursorPositionIE();
var tmp= document.postForm.message.value.substr(0,document.postForm.message.selectionStart).split("\n").length-1;
setCursorPositionIE(msg.selectionStart-tmp);
}
msg.selectionStart=msg.selectionEnd;
var curr=msg.selectionStart;
if(msg.value.substr(0,curr).lastIndexOf("[td]")==-1 || msg.value.substr(0,curr).lastIndexOf("[td]")<msg.value.substr(0,curr).lastIndexOf("[/td]"))
return false;
if(msg.value.substr(curr).indexOf("[/td]")==-1 || (msg.value.substr(curr).indexOf("[/td]")>msg.value.substr(curr).indexOf("[td]") && msg.value.substr(curr).indexOf("[td]")!=-1))
return false;
if(msg.value.substr(0,curr).lastIndexOf("[")>msg.value.substr(0,curr).lastIndexOf("]"))
return false;
if(msg.value.substr(curr).indexOf("]")<msg.value.substr(curr).indexOf("[") )
return false;
return true;
}
if(location.href.match(/action\=(display|pmview|recent|userrecent|goto|search|calendarview)/) || ( document.postForm ))
enhanceTable();
function setCursorPositionIE(start,end) {
if(document.selection){
var element=document.postForm.message;
end=(end)?end:start;
var range = element.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
}
function getCursorPositionIE(){
if(document.selection){
var element = document.postForm.message;
element.focus();
var range = document.selection.createRange();
var stored_range = range.duplicate();
stored_range.moveToElementText( element );
stored_range.setEndPoint( 'EndToEnd', range );
element.selectionStart = stored_range.text.length - range.text.length;
element.selectionEnd = element.selectionStart + range.text.length;
element.selectionFaux=true;
}
}
//-->
</script>
<script type="text/javascript">
/* Style UBBC Tags by SubDevo */
/* Global Footer - Please leave this header intact. Do not repost. */
/* http://interoceandesigns.com or http://lsdp.proboards.com */
var styleImg="http://i52.tinypic.com/25psr5s.png"; // Style UBBC Icon Image URL
var iPos=1; // Add icon to top row? 1=Yes, 0=No
function keepCode(a,b){
if(a.innerHTML.indexOf("Code:")==-1){return;}
var n=a.getElementsByTagName("font"),m,d=-1,x=-1;
while(n[++x]){m=n[x];
if(m.className=="code"){ d++;
if(b){nC[d]=(m.innerHTML);}
else{m.innerHTML=nC[d];}
}}} var n=document.getElementsByTagName("font"),a,b,e,m,nC=[],x=-1;
if(/(calendar|pm|pre)view|search2|display/i.test(pb_action)){
b=/\[div style="(.+?)\"]/gi; e=/\[\/style\]/gi;
while(n[++x]){ a=n[x].innerHTML;
if(b.test(a)&&a.indexOf("google_ad_section")!=-1){ keepCode(n[x],1);
n[x].innerHTML=a.replace(b, function(m,p){return '<div class="stylediv" title="'+escape(p)+'" >';}).replace(e,"<\/div>");
keepCode(n[x]); a=n[x].getElementsByTagName("div"),i=-1;
while(a[++i]){if(a[i].className=="stylediv"){a[i].style.cssText=unescape(a[i].title); a[i].removeAttribute("title");}}
}}} e=document.postForm;
if(e&&/^http:/i.test(styleImg)){
a=document.createElement("a"); b=document.createElement("img");
a.href='javascript:add("[style=]","[/div]")';
b.src=styleImg; b.alt=b.title="Style Tag"; b.border=0; a.appendChild(b);
e=e.color; b=(iPos)?"insertBefore(a,e.previousSibling)":"appendChild(a)";
eval("e.parentNode."+b);
}
</script>
<script type="text/javascript"><!--
/* Style UBBC Tags
Created by iPokemon
Do not redistribute or call as your own
Updated Dec. 23rd, 2010
Copyright 2010 */
if(document.postForm) {
document.postForm.color.parentNode.innerHTML+='<a href="javascript:add(\'[style=]\',\'[/style]\')"><img src="http://i691.photobucket.com/albums/vv280/Chozen912/CSS.png" alt="Style" border="0" /></a>';
}
//Replacement Portion
if(pb_action.match(/(calendar|pm|pre)view|search2|display/i)){
var td = document.getElementsByTagName('td'); var matCH=/\[style=(.+?)\](.+?)\[\/style\]/gi;
for(l=0;l<td.length;l++){
if(td[l].width=="80%"&&td[l].innerHTML.match(matCH)){
td[l].innerHTML = td[l].innerHTML.replace(matCH, '<div style="$1;">$2</div>');
}
}
}
//--></script>
<script type="text/javascript">
<!--
// scrollerDiv UBBC in posts
// Bones enhanced version
// v2.1
// By Wormopolis - [url]www.wormocodes.com[/url]
// use [scrolly:flags][/scrolly] in post around text
// flags are:
// h(n) height, n=height in pix
// w(n) width, n=width in pix
// sx scroll x direction
// sy scroll y direction
// c(hex) color, hex=color in hex: c(FF3324)
// bg(URL) background-image, URL = image src
// as(style additions)
// ac(classname append)
// flags seperated by commas: [scrolly:h(100),w(50),sy] blah blah blah [/scrolly]
for (tds=document.getElementsByTagName('td'), i=0; i<tds.length; i++) {
if (tds[i].width=="80%" && tds[i].className.match(/windowbg/) && tds[i].vAlign=="top" && tds[i].innerHTML.match(/\[scrolly(?:\:(.*?))?\]([\s\S]*?)\[\/scrolly\]/i) && !tds[i].innerHTML.match(/\[norunubbc\]/)) {
flgs=RegExp.$1; lovetext=RegExp.$2;
tmp='<div class="postDiv'+(flgs.match(/ac\(([\w\s]+?)\)/) ? ' '+RegExp.$1:'')+'" style="'+(flgs.match(/h\((\d+)\)/) ? 'height:'+RegExp.$1+';' : '')+(flgs.match(/w\((\d+)\)/) ? 'width:'+RegExp.$1+';' : '')+(flgs.match(/sx/) ? 'overflow-x:auto; white-space: nowrap;' : '')+(flgs.match(/sy/) ? 'overflow-y:auto;' : '')+(flgs.match(/c\((\w+)\)/) ? 'background-color:'+RegExp.$1+';' : '') +(flgs.match(/bg\((\w+)\)/) ? 'background-image:url('+RegExp.$1+');' : '') +(flgs.match(/as\((.+?)\)/) ? RegExp.$1+';':'')+'" '+(flgs.match(/sx/) ? 'noWrap="nowrap" ' : '') + '>'+ lovetext + '</div>';
postCell=tds[i].getElementsByTagName('table')[0].rows[1].cells[0];
postCell.innerHTML=postCell.innerHTML.replace(/\[scrolly(?:\:(.*?))?\]([\s\S]*?)\[\/scrolly\]/i,tmp);
i--;
}
}
-->
</script>