
/* ------------------------------------------------------------------------
    Nov 21, 2008 - Eddie Fung - Change Request CHG000000022659
    The GOA supplied textresizer.js only change fonts of the "BODY" tag,
    it seems to have problem changing elements in the tables.
    A function ts( trgt, inc ) is created for AIT VIS systems at the end
    of the file.
   ------------------------------------------------------------------------ */


//---------------------------------------------------
// CONFIGURATION
//---------------------------------------------------

var largeFontSize = '100%';
var cookieName = 'fontsize';
var parentDiv = "breadcrumb";
var smElement = null;
var lgElement = null;
var smImgOnFilename = 'images/interface/resizerSmOn.gif';
var smImgOffFilename = 'images/interface/resizerSm.gif';
var lgImgOnFilename = 'images/interface/resizerLgOn.gif';
var lgImgOffFilename = 'images/interface/resizerLg.gif';

//---------------------------------------------------
// No need to change anything below here
//---------------------------------------------------

var lgImgOn = null;
var lgImgOff = null;
var smImgOn = null;
var smImgOff = null;
var gUseLarge = false;

// Set up Event Listener - creates addEvent
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
	elm.addEventListener(evType, fn, useCapture);
	return true;
	} else if (elm.attachEvent) {
	var r = elm.attachEvent('on' + evType, fn);
	return r;
	} else {
	elm['on' + evType] = fn;
	}
}

function detectCookie()
{
	if (readCookie(cookieName) == 'large')
	{
		textResizerGoBig();
	}
	else
	{
		textResizerGoSmall();
	}
}

function textResizerInit() 
{
	// Initialize Scripts - is this a browser that understands DOM?
	if (textResizerScriptingOk())
	{
		// Does the parent div exist?
		if ( document.getElementById(parentDiv) == null )
		{
			return;
		}
		
		// create ul
		var ul = document.createElement("ul");
		ul.id = "textResizer";
		
		var li = document.createElement("li");
		
		smElement = document.createElement("img");
		if (!gUseLarge)
		{
			smElement.src = smImgOnFilename;
		}
		else
		{
			smElement.src = smImgOffFilename;
		}
		smElement.alt = "Make Text Smaller";
		smElement.id = "resizerSmImg";
		
		li.appendChild (smElement);
		
		ul.appendChild (li);
		
		lgElement = document.createElement("img");
		if (!gUseLarge)
		{
			lgElement.src = lgImgOffFilename;
		}
		else
		{
			lgElement.src = lgImgOnFilename;
		}
		lgElement.alt = "Make Text Bigger";
		lgElement.id = "resizerLgImg";
		
		var li = document.createElement("li");
		
		li.appendChild (lgElement);
		
		ul.appendChild (li);	
				
		// add handlers to anchors
		addEvent( smElement, 'click', textResizerGoSmall, false);
		addEvent( lgElement, 'click', textResizerGoBig, false);
		
		// insert the text resizer after the search form
		var parent = document.getElementById(parentDiv);
		
		parent.insertBefore (ul, parent.firstChild);
	}
}

function textResizerPrecacheImages()
{
	smImgOn = new Image();
	smImgOn.src = smImgOnFilename;

	smImgOff = new Image();
	smImgOff.src = smImgOffFilename;

	lgImgOn = new Image();
	lgImgOn.src = lgImgOnFilename;

	lgImgOff = new Image();
	lgImgOff.src = lgImgOffFilename;
}

function textResizerGoSmall()
{
	if (textResizerScriptingOk())
	{
		//default back to CSS fontsize
		document.body.style.fontSize = "";

		//get rid of cookie
		eraseCookie(cookieName);	

		//toggle images
		textResizerSetImage(false);

            //-----------------------------------------------
		// call function to make fonts smaller...
            //-----------------------------------------------
            ts('body', -1)
	}
}

function textResizerGoBig()
{
	if (textResizerScriptingOk())
	{
		document.body.style.fontSize = largeFontSize;
	
		if (readCookie(cookieName) != 'large')
		{
			createCookie(cookieName, 'large', 1);
		}	

		//toggle images
		textResizerSetImage(true);

            //-----------------------------------------------
		// call function to make fonts bigger...
            //-----------------------------------------------
            ts('body', 1)
	}	
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function textResizerSetImage(useLarge)
{
	gUseLarge = useLarge

	if (textResizerScriptingOk())
	{
		// check the images exist
		if ( smElement == null || lgElement == null	 )
		{
			return;
		}

		if (useLarge)
		{
			lgElement.src = lgImgOn.src;
			smElement.src = smImgOff.src;
		}
		else
		{
			lgElement.src = lgImgOff.src;
			smElement.src = smImgOn.src;
		}
	}
}

function textResizerScriptingOk()
{
	return (document.getElementById);
}

function checkActive() {
	var a = document.getElementsByTagName("a");
	if (window.location.href.substr(location.href.length - 1, 1) == '/') {
		var loc = window.location.href + ''; 
	}
	else {
		var loc = window.location.href;
	}
	for(var i=0; i < a.length; i++) {
		if (a[i].href == loc) {
			a[i].setAttribute("class", "active");
			a[i].setAttribute("className", "active");
		}
	}
}

// add event to window load
addEvent(window, 'load', textResizerInit, false);
addEvent(window, 'load', checkActive, false);

// precache images
textResizerPrecacheImages();


/*------------------------------------------------------------
 Nov 21, 2008 - Eddie Fung - Change Request CHG000000022659
  The GOA supplied textresizer.js only change fonts of the "BODY" tag,
  but not anything inside the "BODY" but is prefixed by a different tag.
  To correct the problem, we have to add a new function ts() to ensure
  all content will be resized accordingly.  This function is from the
  public domain contributed by Taewook Kang.

    Document Text Sizer- Copyright 2003 - Taewook Kang.  All rights reserved.
    Coded by: Taewook Kang (txkang.REMOVETHIS@hotmail.com)
    Web Site: http://txkang.com
    Script featured on Dynamic Drive (http://www.dynamicdrive.com)
    
    Please retain this copyright notice in the script.
    License is granted to user to reuse this code on 
    their own website if, and only if, 
    this entire copyright notice is included.
--------------------------------------------------------------*/
//Specify affected tags. Add or remove from list:
var tgs = new Array( 'div','td','tr', 'b', 'table');

//Specify spectrum of different font sizes:
var szs = new Array( 'xx-small','x-small','small','medium','large','x-large','xx-large' );

function ts( trgt, inc ) {

    if (!document.getElementById) return
    var d = document,cEl = null,i,j,cTags;
    var sz = 1;
    
    //-------------------------------------------------------------
    // use the GOA function to check the current size state...
    //-------------------------------------------------------------
    if (readCookie(cookieName) == 'large')
      {
	sz = 2;;
      }

    if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ];

    cEl.style.fontSize = szs[ sz ];

    for ( i = 0 ; i < tgs.length ; i++ ) {
        cTags = cEl.getElementsByTagName( tgs[ i ] );
        for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = szs[ sz ];
    }
}

