/*****************************************************

jQuery.injectAccessibilityLinks.js
Author: Oliver Gassman

*****************************************************/

var hrefData = new Array;
var host = location.host;
var queryString = location.search;
var processLink = false;

function injectAccessibilityLinks(){
    $('#accessibility-links').append(
        '<a href="#normal-size" id="one-size" class="current">Font Size 100%</a>'+
        '<a href="#one-and-a-half-size" id="one-and-a-half-size">Font Size 150%</a>'+
        '<a href="#two-size" id="two-size">Font Size 200%</a>'
    );
    
    $('a').each(function(i,val){
        hrefData[i] = $(val).attr('href');
    });

    var url = location.search;
    var urlSection = new Array;
    urlSection = url.split('?');
    if(urlSection.length > 1){
        urlSection = urlSection[1].split('&');
    };
    
    $('#accessibility-links a').click(function(){
        textSize($(this).attr('id'));
        return false;
    });
    
    // When loading a page used a remembered text size
    $.each(urlSection,function(i,val){
        var valSection = new Array;
        valSection = val.split('=');
        if(val.indexOf('font-size') != -1){
            textSize(val);
        /* Comment this out section to Disable all querystring values to append to all internal links */
        }else{
            linkChecker(val);
        };
    });
};

// Change the size of the text
function textSize(sizeId){
    
    if(sizeId.indexOf('half') != -1){
        $('body').attr('class','');
        $('body').addClass('one-and-a-half-size');
        $('#accessibility-links a').attr('class','');
        $('a#one-and-a-half-size').addClass('current');
        
        linkChecker('font-size=one-and-a-half-size');
    }else if(sizeId.indexOf('two') != -1){
        $('body').attr('class','');
        $('body').addClass('two-size');
        $('#accessibility-links a').attr('class','');
        $('a#two-size').addClass('current');
        
        linkChecker('font-size=two-size');
    }else{
        $('body').attr('class','');
        $('#accessibility-links a').attr('class','');
        $('a#one-size').addClass('current');
        
        linkChecker('');
    };
    
};

function linkChecker(q){
    
    // Remove querystring from links
    $('a').each(function(i,val){
        val = $(val);
        var valParent = val.parent('div#accessibility-links').attr('id');
        
        var href = hrefData[i];
        var hrefArray = new Array;
        hrefArray = href.split('?');
        var hrefUrl = hrefArray[0];
        if(hrefArray.length > 1){
            var hrefQueryString = hrefArray[1];
            hrefArray = hrefQueryString.split('&');
        };
        
        if( valParent != "accessibility-links" || href.indexOf('#') == 0 ){
            processLink = true;
        };
        if(href.indexOf('http://') == 0){
            if(href.indexOf(host) == -1){
                processLink = false;
            };
        };
        if(processLink){
            if(href.indexOf('?') == -1){
                if(q != ''){
                    val.attr('href',href + '?' + q);
                    hrefUrl = hrefUrl + '?' + q;
                };
            }else{
                
                var textSizeValue = "";
            
                $.each(hrefArray,function(i,value){
                    if(value.indexOf('font-size') == -1){
                        if(hrefUrl.indexOf('?') == -1){
                            hrefUrl = hrefUrl + "?" + value;
                        }else{
                            hrefUrl = hrefUrl + "&" + value;
                        };
                    };
                    if (value.indexOf('font-size') != -1){
                        textSizeValue = value;
                    };
                    if( i == hrefArray.length - 1 ){
                        if( textSizeValue != '' ){
                            if( q != '' ){
                                if( q.indexOf('font-size') == -1 ){
                                    q = q + '&' + textSizeValue;
                                };
                            };
                        };
                    };
                });
                
                if(q != ''){
                    if(hrefUrl.indexOf('?') == -1){
                        val.attr('href',hrefUrl + '?' + q);
                        hrefUrl = hrefUrl + '?' + q;
                    }else{
                        val.attr('href',hrefUrl + '&' + q);
                        hrefUrl = hrefUrl + '&' + q;
                    };
                } else {
                    val.attr('href',hrefUrl);
                };
                
            };
            
            hrefData[i] = hrefUrl;
        };
    });
};
