﻿// JScript File

var SelectorsWithTextBorder = ['.button1', '.button3', '.button1disabled', '.button1high', '.processtab_middle_middle', '.processtab_middle_middle_hover', '.processtab_middle_middle_active', '.header_mainmenu .link_page', '.header_menu .link_page',  '.header_rolesmenu .link_page', '.text8_white', '.link_black10', '.fm_button_middle_part a', '.fm_button_middle_part span', 'a.tab_button', 'a.tab_button_selected', '.RegistrationBannerText'];
	
function setupTextBorders(parent) {
    // Check if stylesheet is telling us not to:
	for (var sheetIdx=document.styleSheets.length-1;sheetIdx>=0;sheetIdx--) {
		var sheet = document.styleSheets[sheetIdx];
		try {
			var selectorText;
		    if (sheet.cssRules) {
		        selectorText = sheet.cssRules[0].selectorText;
		    } else {
		        selectorText = sheet.rules[0].selectorText;   
		    }
		    if (selectorText && selectorText == '.NoTextBorders') return;	
		}
		catch (ex) {
		}
	}    
    if (parent == null) parent = document;
    var selector = SelectorsWithTextBorder.join(', ');
    var els = cssQuery(selector,parent);
    for (elIdx=0;elIdx < els.length;elIdx++)
        setupTextBorder(els[elIdx]);
}

function setupTextBorder(el) {
    // get the inner text
    // setup three spans, and add as children of el
    // make el have position 'relative', and give the three spans position 'absolute'
    var text;    
    var childSpans = el.getElementsByTagName('SPAN');
    if (childSpans.length > 0 && childSpans[0].className == 'spanParent') return;
    if (el.innerText) {
        text = el.innerText;
        el.innerText = '';
    } else {    
        text = el.textContent;
        el.textContent = '';
		
    }
    if (text == '') return;
    var spanParent = document.createElement('SPAN');    
    spanParent.className = 'spanParent';
    spanParent.style.display='block';
    spanParent.style.position='relative';
    el.appendChild(spanParent);
    spanParent.appendChild(newTextBorderSpan(el,text,'relative',5));
    spanParent.appendChild(newTextBorderSpan(el,text,'absolute',1,'-1px','-1px'));
    spanParent.appendChild(newTextBorderSpan(el,text,'absolute',2,'1px','-1px'));    
    spanParent.appendChild(newTextBorderSpan(el,text,'absolute',3,'1px','1px'));    
    spanParent.appendChild(newTextBorderSpan(el,text,'absolute',4,'-1px','1px'));    
}

function newTextBorderSpan(el,text,position,zIndex,leftOffset,topOffset) {
    var span = document.createElement('SPAN');
    span.innerText = text;
    span.textContent = text;    
    span.style.display = 'block';  
    span.style.position = position;
    span.style.zIndex = zIndex;
    span.style.width = '100%';
    if (leftOffset || topOffset) {
        span.style.color = actualBackgroundColor(el);
        if (leftOffset) span.style.left = leftOffset;
        if (topOffset) span.style.top = topOffset;
   }
   return span;
}

function actualBackgroundColor(el) {    
    var st;
    while (el && el.parentNode) {
        if( window.getComputedStyle ) {
            st = window.getComputedStyle(el,null);           
        } else if( el.currentStyle ) {
            st = el.currentStyle;
        }        
        if (st.backgroundColor != '' && st.backgroundColor != 'transparent') return st.backgroundColor;
        if (st.borderLeftWidth == '0px' && st.borderLeftStyle != 'none' && st.borderLeftColor != '' && st.borderLeftColor != 'transparent') return st.borderLeftColor;        
        el = el.parentNode;
    }
    return null;
}

Sys.Application.add_init(function() {
    setupTextBorders();
});
