﻿// use for changing font now
//	may add other features later
// modified for compag

// declare constant on top of everything
// 	debug mode
var DEBUG = false;
//	default values
var COOKIE_PATH = '/';
var COOKIE_EXPIRE_DAY = 365;
//	fontSizeName=Medium / Large / Extra
var COOKIE_NAME_FONT_SIZE = 'fontSizeName';
var FONT_SIZE_NAME_ARRAY = new Array("Medium","Large","Extra");

// 1. onload, change css
switchCss();

// print the change font div/table block
function printChangeFontBlock() {
	if(DEBUG) { alert('Call printChangeFontBlock'); }
	
	var lang = getLang();
	var path=''; 
	if(lang == 'en') {
		path='../';	
	} else {
		path='../../';
	}
	//for( var i=0; i<document.location.pathname.split('/').length-3; i++) 
		//path+='../';    
	
	document.write('<div id="path" style="text-align:right; padding: 5px 15px; font-size: 12px; height: 20px;">');
	document.write('<table border="0" align="right" cellpadding="2" cellspacing="2" style="padding:2px 2px;">');
	document.write('<tr>');
	
	if(lang=='en' || lang=='txt_en') {
		document.write('<td><span class="fontsize">font size:</span></td>');
	} else if(lang == 'sc' || lang=='txt_sc') {
		document.write('<td><span class="fontsize">字型大小:</span></td>');
	} else if(lang == 'tc' || lang=='txt_tc') {
		document.write('<td><span class="fontsize">字型大小:</span></td>');	
	}
	
	if(lang=='en' || lang=='sc' || lang=='tc') {
		if(lang=='en') {
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'"><img src="'+path+'images/font_01.gif" alt="Smaller" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'"><img src="'+path+'images/font_02.gif" alt="Default Size" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'"><img src="'+path+'images/font_03.gif" alt="Larger" width="18" height="18" border="0" /></div></a></td>'); 	
		} else if(lang == 'sc' ) {
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'"><img src="'+path+'images/font_01.gif" alt="较小" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'"><img src="'+path+'images/font_02.gif" alt="原设定" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'"><img src="'+path+'images/font_03.gif" alt="较大" width="18" height="18" border="0" /></div></a></td>'); 	
		} else if(lang == 'tc' ) {
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'"><img src="'+path+'images/font_01.gif" alt="較小" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'"><img src="'+path+'images/font_02.gif" alt="原設定" width="18" height="18" border="0" /></div></a></td>');
		document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'"><img src="'+path+'images/font_03.gif" alt="較大" width="18" height="18" border="0" /></div></a></td>'); 	
		}
	} else {
		if(lang=='txt_en') {
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'">Smaller</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'">Default Size</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'">Larger</div></a></td>');
		} else if(lang=='txt_sc') {
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'">较小</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'">原设定</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'">较大</div></a></td>');
		} else if(lang=='txt_tc') {
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[0]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[0]+'">較小</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[1]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[1]+'">原設定</div></a></td>');
			document.write('<td><a href="javascript:changeFont(\''+FONT_SIZE_NAME_ARRAY[2]+'\');"><div id="txtsize_area_Font_'+FONT_SIZE_NAME_ARRAY[2]+'">較大</div></a></td>');
		}
	}
	
	document.write('</tr>');
	document.write('</table>');
	document.write('</div>');
	
	if( lang=='en' || lang=='sc' || lang=='tc' ) {
		swapFontImage();
	}	
}

// return 
//		en/sc/tc OR 
//		txt_en/txt_sc/txt_tc OR
//		UNKNOWN
function getLang() {
	if(DEBUG) { alert('Call getLang'); }
	
	if(document.location.pathname.match(/\/simp\//) != null) {
		return 'sc';
	} else if(document.location.pathname.match(/\/chi\//) != null) {
		return 'tc';
	} else if(document.location.pathname.match(/\/ctext\.htm/) != null) {
		return 'txt_tc';
	} else if(document.location.pathname.match(/\/text\.htm/) != null) {
		return 'txt_en';
	} else {
		return 'en';
	}
	/*
	if(document.location.pathname.match(/\/en\//) != null) {
		return 'en';
	} else if(document.location.pathname.match(/\/sc\//) != null) {
		return 'sc';
	} else if(document.location.pathname.match(/\/tc\//) != null) {
		return 'tc';
	} else if(document.location.pathname.match(/\/txt_en\//) != null) {
		return 'txt_en';
	} else if(document.location.pathname.match(/\/txt_sc\//) != null) {
		return 'txt_sc';
	} else if(document.location.pathname.match(/\/txt_tc\//) != null) {
		return 'txt_tc';
	} else {
		return 'UNKNOWN';
	}
	*/
}


/* ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== 
 *	change Font Size functions
 * ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== */ 
function changeFont(targetFontSize) {
	// name = value
	Set_Cookie(COOKIE_NAME_FONT_SIZE, targetFontSize);	
	switchCss();
	
	var lang = getLang();
	if(lang=='en' || lang=='sc' || lang=='tc') {
		swapFontImage(targetFontSize);
	}
}

function switchCss() {
	var lang = getLang();
	if(lang=='en' || lang=='sc' || lang=='tc') {
		switchCssGraph();
	} else {
		switchCssText();
	}
}

function switchCssText() {
	var displayFontTitle = getFontSizeFromCookie();		
	if(displayFontTitle == FONT_SIZE_NAME_ARRAY[2]) {
		$(document).ready(function(){ $('body').css('font-size', '120%'); });
		$('body').css('font-size', '120%');		
	} else if(displayFontTitle == FONT_SIZE_NAME_ARRAY[0]) {
		$(document).ready(function(){ $('body').css('font-size', '80%'); });
		$('body').css('font-size', '80%');
	} else {
		$(document).ready(function(){ $('body').css('font-size', '100%'); });
		$('body').css('font-size', '100%');
	}	
}

function switchCssGraph() {
	if(DEBUG) { alert('Call switchCss'); }
	
	// CAUTION reminder 20070913:
	// 1) IE7 need a.disabled=true first, no matter how (is this true?)
	// 2) firefox2.04 canNOT use: a.getAttribute("title").indexOf("linear"), else break for-loop
	// 3) firefox can use: var1=a.getAttribute("title"), then compare on var1

	var ie_version = getIeVersion();		
	var displayFontTitle = getFontSizeFromCookie();		
	
	var linkElements = document.getElementsByTagName("link");	
	for(i=0; i<linkElements.length; i++) {
		a=linkElements[i];
		// for all "stylesheet" in Link
		if (a.getAttribute("rel").indexOf("stylesheet") != -1) {
			var isDisable = false;
			// if it is linear mode, assume all css disable first
			//if (myscreenmode==modeLinear) { isDisable=true; }

			// get the id of css object first
			var id1 = a.getAttribute("id");
			if (id1 != null) {
				if (id1.indexOf("infosecCss")!=-1  ) {
					// For "style.css"
					// handled by default
				} else if (id1.indexOf("mode")!=-1)  {
					// For "modeMedium", "modeLarge", "modeExtra"
					// for normal mode, disable first;
					isDisable = (id1.indexOf(displayFontTitle) < 0);
				}
			} // end id1!=null

			// 20070917: finally set the enable or disable, set true first for IE7 bug
			a.disabled = true;
			a.disabled = isDisable;

			// for IE5.5, disable can be set by a.disabled = true;
			// BUT for ENABLE, IE5.5 need to set the alt-stylesheet as "stylesheet"
			// CAUTION: do NOT set "alternate stylesheet" in this way, will hang IE5.5 browser
			if (ie_version>0 && ie_version<6 && isDisable==false) {
				a.setAttribute("rel","stylesheet");
			}

		} // end if rel stylesheet
	} // end for linkElements
}
 
function getFontSizeFromCookie() {
	if(DEBUG) { alert('Call getFontSizeFromCookie'); }
	
	var cookie = Get_Cookie(COOKIE_NAME_FONT_SIZE);
	if(cookie == null) {
		// need to set cookie ?
		return FONT_SIZE_NAME_ARRAY[1];
	} else {
		return cookie;
	}
}
 
function getIeVersion() {
	if(DEBUG) { alert('Call getIeVersion'); }
	
	var ua = navigator.userAgent;
	if (ua.indexOf('MSIE') != -1) {
		return parseFloat(ua.substring(ua.indexOf('MSIE')+4,ua.length));
	}
	return -1;
}
 
// display - swap on or off images 
function swapFontImage(targetFontSizeName) {
	if(DEBUG) { alert('Call swapFontImage'); }	
	if(!targetFontSizeName) { targetFontSizeName = getFontSizeFromCookie(); }	
	var regexActive=/font_\d\d_o\.gif/;		
	for(i=0; i<FONT_SIZE_NAME_ARRAY.length; i++) {	
		tmpDiv = document.getElementById("txtsize_area_Font_"+FONT_SIZE_NAME_ARRAY[i]);
		tmpImg = tmpDiv.children.item(0);
		currentImage = tmpImg.getAttribute('src');

		if(FONT_SIZE_NAME_ARRAY[i] == targetFontSizeName) {
			if(currentImage.match(regexActive) == null) {
				// inactive -> active
				newImage = currentImage.replace(/(font_\d\d)\.gif$/, "$1_o.gif");
				tmpImg.setAttribute('src', newImage);		
			}
		} else {
			if(currentImage.match(regexActive) != null) {								
				// active -> inactive
				newImage = currentImage.replace(/(font_\d\d)_o\.gif$/, "$1.gif");
				tmpImg.setAttribute('src', newImage);
			}
		}
	}		
}
 
 
/* ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== 
 *	Cookie functions
 * ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== 
 
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version 1.1.3
Last Update: 2011-04-06

Changes:
1.1.3 Phoenix - add default cookie path & expire
1.1.2 explicitly declares i in Get_Cookie with var
1.1.1 fixes a problem with Get_Cookie that did not correctly handle case
where cookie is initialized but it has no "=" and thus no value, the 
Get_Cookie function generates a NULL exception. This was pointed out by olivier, thanks
1.1.0 fixes a problem with Get_Cookie that did not correctly handle
cases where multiple cookies might test as the same, like: site1, site
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
// this fixes an issue with the old method, ambiguous values 
// with this test document.cookie.indexOf( name + "=" );
*/

// To use, simple do: Get_Cookie('cookie_name'); 
// replace cookie_name with the real cookie name, '' are required
function Get_Cookie( check_name ) {
	if(DEBUG) { alert('Call Get_Cookie'); }
	
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	var i = '';
	
	for ( i = 0; i < a_all_cookies.length; i++ ) {
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name ) {
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) {
		return null;
	}
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	if(DEBUG) { alert('Call Set_Cookie: name=['+name+'], value=['+value+']'); }
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if (expires) {
		expires = expires * 1000 * 60 * 60 * 24;
	} else {
		expires = COOKIE_EXPIRE_DAY * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : ";path=" + COOKIE_PATH ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if(DEBUG) { alert('Call Delete_Cookie'); }
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : ";path="+COOKIE_PATH ) +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

